私は、Bisonがyyerror()
に渡された特定のエラーメッセージを使用して、yyreportSyntaxError()
を使用していることに気付きました。これはglr.c
を使用して生成される関数です。Bisonレポートのエラーメカニズムを上書きすることはできますか?
この機能の動作を変更する方法はありますか?
1つの解決方法は、エラーメッセージをyyerror()
に変更することです。しかし、私がこれを避けたいと思うと、私はBisonにyyreportSyntaxError()
の代わりに私自身の関数を使うよう指示することができますか?
私はBison/Flexエキスパートです。しかし、マニュアルやo'reilly Bison/Flexの書籍が出ている限り、 'yyerror()'を使って行く方法があります。しかし、解析中に直接エラーをキャッチして、flexのようなレクサーを使用する場合は、 'yyerror() 'を使用せずに独自のエラールーチンを提供することができます。基本的には、文法のエラーを定義するトークンを定義し、エラールーチンでそれをキャッチします。 – Bort