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");}
;
「Party:id_a;」という言葉を出しました。(「Party」の後に2つのID名を付ける必要があります。)
そしてそれは直接yyerror()に行き、構文エラーを示しました...
なぜこのエラーを処理しないのかわかりません。