GCC说“数字常数之前的语法错误”来自bison的生成头文件 [英] GCC says "syntax error before numeric constant" in generated header file from bison
问题描述
枚举yytokentype {
BREAK = 258,
...}
错误是关于BREAK = 258的行。我真的不知道为什么会发生这种情况 - 我真的想使用生成的yylval,我需要它从这个头文件。即使我在flex文件中声明了这样的yytokentype,我也会得到同样的错误。我可能做错了什么?
是否在其他地方定义 BREAK
在你的代码中?我从以下玩具示例中得到类似的错误:
#define BREAK 10
枚举yytokentype {
BREAK = 258
};
构建示例:
$ cc -c file.c
file.c:4:错误:数字常量之前的预期标识符
When I compile my .y file with bison parser.y -d -t and then include the parser.tab.h file in my flex file, gcc says "error: syntax error before numeric constant." It's referencing line 32, which is the first line in the enum of yytokentype.
enum yytokentype {
BREAK = 258,
... }
The error is about the line "BREAK = 258." I honestly don't know why this is happening--I would really like to use the generated yylval and I need it from this header file. Even if I declared yytokentype like this in my flex file, I would get the same error. Anything I could be doing wrong?
Is BREAK
defined somewhere else in your code? I get a similar error from the following toy example:
#define BREAK 10
enum yytokentype {
BREAK = 258
};
Build example:
$ cc -c file.c
file.c:4: error: expected identifier before numeric constant
这篇关于GCC说“数字常数之前的语法错误”来自bison的生成头文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!