我想从 bison2.4.1 处理错误恢复。
我参考了 oreilly 的书(lex&yacc)和一些网站将错误标记放入我的规则中,
但我认为它不起作用。它不能帮助我处理错误恢复!
我的代码如下:
PDL:
DataDesc ComputationDesc {Build_front_proc($1,$2);}
;
DataDesc:
PartyDecl AccLvDesc {$$ = echo_dataDesc($1, $2);}
;
// Party Description
PartyDecl:
PARTY ':' ID ',' ID ENDL {if($3->is_func || $5->is_func)
yyerror("it is a reserved word!\n");
$$ = echo_partyDecl($3->name,$5->name);}
|error ENDL {printf("There is a error");}
;
我给了“派对:id_a;”的话 (它应该是“Party”后面的两个id名称。)
它直接进入 yyerror() 并显示语法错误......
我不知道为什么它不处理这个错误。