Parsing 我该如何处理YYSTYPE的重复声明?
以下是相关错误:Parsing 我该如何处理YYSTYPE的重复声明?,parsing,yacc,bison,lex,Parsing,Yacc,Bison,Lex,以下是相关错误: grammar.y:72: error: conflicting declaration ‘typedef union YYSTYPE YYSTYPE’ y.tab.h:83: error: ‘YYSTYPE’ has a previous declaration as ‘typedef union YYSTYPE YYSTYPE’ make: *** [y.tab.o] Error 1 我正在使用flex和byacc来制作一个翻译器。我的构建具有以下结构: 从grammar
grammar.y:72: error: conflicting declaration ‘typedef union YYSTYPE YYSTYPE’
y.tab.h:83: error: ‘YYSTYPE’ has a previous declaration as ‘typedef union YYSTYPE YYSTYPE’
make: *** [y.tab.o] Error 1
我正在使用flex和byacc来制作一个翻译器。我的构建具有以下结构:
从grammar.y文件生成y.tab.h。
在tokens.lex文件中包含y.tab.h,并编译该文件以生成lex.yy.c。
在语法文件中包含lex.yy.c。这样,我们可以看到yylex。
似乎发生了这样的事情:y.tab.h包含了YYSTYPE联合的联合声明。这被lex.yy.c包含,它被grammar.y包含。但与此同时,grammar.y正在生成它自己的联合版本,并且两者发生冲突
这不是标准方法吗?我是否需要更改某些内容以使其正确构建 哎呀。原来我不是和野牛一起编译的。我的另一个系统将yacc符号链接到bison,因此我不得不将makefile更改为使用bison而不是yacc。我也遇到了同样的问题,现在已修复!