Related articles |
---|
bison, union and struct YYSTYPE, c++ morandini@aero.polimi.it (Marco Morandini) (2001-05-30) |
From: | Marco Morandini <morandini@aero.polimi.it> |
Newsgroups: | comp.compilers |
Date: | 30 May 2001 00:23:59 -0400 |
Organization: | Politecnico di Milano |
Keywords: | C++, yacc |
Posted-Date: | 30 May 2001 00:23:58 EDT |
Dear all,
I'm using bison to generate a scanner and g++ to compile it.
Unfortunately, I found that I can't insert classes with a constructor
into a union (YYSTYPE), and I found it quite annoyng. My workaround
is no to use the %union declaration, but to explicitly define YYSTYPE
as a struct, i.e.
%{
#include "MyClass.h"
....
typedef struct {
MyClass c1;
MySecondClass c2;
double number;
} YYSTYPE;
extern YYSTYPE yylval;
%}
%token <c1> CLASS1_TOK
%token <c2> CLASS2_TOK
%token <number> NUMBER_TOK
.....
%type <c1> c1exp
%%
.....
c1exp: CLASS1_TOK { $$ = $1; }
| ......
%%
It seems to work, but is this a correct solution to the problem?
Am I making some silly errors?
MyClass and MySecondClass are not big, and have defined
a copy operator.
Thanks in advance for your answers and your suggestions,
Marco Morandini
Return to the
comp.compilers page.
Search the
comp.compilers archives again.