[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: So is this OK to write #include "parser.tab.hh" in parser.yy?
From: |
Akim Demaille |
Subject: |
Re: So is this OK to write #include "parser.tab.hh" in parser.yy? |
Date: |
Fri, 14 Dec 2018 05:30:17 +0100 |
Hi Askar,
> Le 13 déc. 2018 à 05:09, Askar Safin <address@hidden> a écrit :
>
> Hi, Akim and others.
> Is this OK to explicitly include bison-generated header in .yy file? In
> http://lists.gnu.org/archive/html/bug-bison/2018-12/msg00011.html you said
> this is not OK.
I am especially worried when you include the header in itself,
i.e., if you include it in %code requires or provides. The
delicate part is that the user is allowed to provide information
before the definition of the semantic value type, and after it.
I remember having spent time on such issues, and I just live a
happier life if I don't have to include it at all, since the
parser does it for me at the right place.
Including from %code top or %code is ok. Useless, but ok.
However, we have double-inclusion guards, and now I fail to see
how things could possibly go wrong. So you are probably safe
in the other %code sections, but still, I would avoid it.
> parser.hh is generated by bison (side note: why not call it parser.tab.hh
> then?).
I don't understand what you mean. We generate consistently
parser.tab.{hh,cc} or parser.{hh,cc}, but nothing mixed. We
generate parser.tab.{hh,cc} by default, because I was too stupid
when I introduced the C++ skeleton to allow myself not to follow
the idiotic and historic naming scheme.