dyer (02/14/83)
I am having a small problem with YACC on 4.1BSD. I am trying to use the
%union construct to redefine the type of YACC's value stack. %union produces
a C statement of the form:
typedef union { ... } YYSTYPE;
All well and good. However, the "y.tab.c" file which YACC generates
has a preprocessor line:
#ifndef YYSTYPE
#define YYSTYPE int
#endif
The problem, of course, is that the preprocessor does not "know" about
typedef's. Thus, all my objects declared as YYSTYPE turn into int's,
and PCC barfs. I can get around this by replacing the %union construct with:
%{
union unionname { ... };
#define YYSTYPE union unionname
%}
But, it bothers me. It seems like the designers decided to go with typedefs
but didn't follow through completely. Or am I doing something wrong?
YACC gurus, please comment. Thanks.
/Steve Dyer decvax!wivax!dyer sdyer@bbn-unix