【发布时间】:2016-04-11 02:55:15
【问题描述】:
我正在使用 FLEX 和 Bison 编写编译器。 作为输入,我有一个简单的程序。
DECLARE
a b
IN
GET a;
b := 5 + a;
a := b + 3;
END
在我的parser.y 中,我使用的是整数子变量counter
当我将零分配给它时,我得到syntax error 我不知道为什么这个小改动会让我的程序崩溃。这与syntax! 无关,我将感谢有经验的 C 和 Bison 人,他们可以告诉我哪里出了问题。如果这个变量没有被触及或被赋予不同的值,它工作正常。提前谢谢你。
编辑: 一些解析器代码:语法的一部分。如果我不触摸计数器,它正在工作。
%{
int counter = 0;
int params[2];
char* EXP = "NONE";
%}
%%
command : identifier ASSGNOP expression';' {gen_code(EXP,params,$1); counter = 0; }
value | identifier { params[counter] = gen_variable($1,counter); counter++; }
expression | value '+' value {EXP = "ADD";}
【问题讨论】:
-
您在哪一行进行小代码更改?有什么变化?
-
您需要提供比这更多的信息,因为我们没有人能在您的肩膀上阅读。如果您希望得到有意义的建议,请添加您的
parser.y的相关部分。 -
请不要减我。这是一个非常奇怪的问题,我不明白为什么会这样。它没有帮助我。我更新了问题
标签: c parsing syntax-error bison flex-lexer