bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: YYSTYPE needs to be defined and moved


From: Akim Demaille
Subject: Re: YYSTYPE needs to be defined and moved
Date: Fri, 29 Nov 2013 10:17:11 +0100

Le 27 nov. 2013 à 23:25, Arthur Schwarz <address@hidden> a écrit :

> Hi Akim;

Hi!

> The issue here is that in setting the language too C++ in bison, the bison 
> interface x.tab.h file buries %union in class parser but does not define 
> YYSTYPE. This poses a problem when interfacing with flex.

No, not really.  Please, have a look at the documentation that
features a complete example in C++.

> As to your comment about using 'bison -d'. This is the interface generated 
> with junk.y. junk.tab.hh has been stripped of everything not necessary to 
> describe the problem. And note that in class parser if YYSTYPE is not 
> defined, it doesn't get defined and/or a typedef is not created. But if 
> YYSTYPE is defined, then a typedef is created with semantic_type.

If you want your Flex scanner to see the definition of the type,
you need -d.  Now, Flex does not know anything about YYSTYPE,
just type parser::semantic_type parser instead.  this is C++,
there is no longer any reason to pollute the global namespace
with a name such as YYSTYPE.  If you want to use that name,
just typedef it from parser::semantic_type.

> My integration difficulties with flex and bison are many. flex %bison-bridge 
> does something, I don't quite know what but it doesn't integrate well.

Then don't use it.

> At the same time when I tried %option C++ (to generate a C++ file) it also 
> didn't integrate well,  and if I remember correctly, there were compiler 
> errors.

using Flex in C++ is really tricky, I concur.

> I have a C++ project. One element of the project (only one) leads me to try 
> to use flex and bison. I use flex because (by gosh and by golly) it's tedious 
> to develop a scanner, particularly a scanner which includes floating point 
> numbers.

As a first step, I would recommend a C-scanner, and C++-parser.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]