例如:
//语法规则中缺少$符号 expression : NUMBER
//应改为 expression : NUMBER $
//在头文件中声明yylloc extern YYLTYPE yylloc;
//自定义yyerror函数,添加行号信息 void yyerror(char const *s) { fprintf(stderr, "line %d: %s\n", yylloc.first_line, s); }
//错误的语法规则,未指定优先级和结合性 %left '+' '-' expression : expression '+' expression | expression '-' expression
//应修改为以下规则,指定优先级和结合性 %left '+' '-' %left '' '/' expression : expression '+' expression | expression '-' expression | expression '' expression | expression '/' expression | NUMBER ; expression : '(' expression ')' $ ;
上一篇:Bison 中运算符优先级失效