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。

我也遇到了同样的问题,现在已修复!