2012-01-16 14 views
1

私は、Bisonがyyerror()に渡された特定のエラーメッセージを使用して、yyreportSyntaxError()を使用していることに気付きました。これはglr.cを使用して生成される関数です。Bisonレポートのエラーメカニズムを上書きすることはできますか?

この機能の動作を変更する方法はありますか?

1つの解決方法は、エラーメッセージをyyerror()に変更することです。しかし、私がこれを避けたいと思うと、私はBisonにyyreportSyntaxError()の代わりに私自身の関数を使うよう指示することができますか?

+0

私はBison/Flexエキスパートです。しかし、マニュアルやo'reilly Bison/Flexの書籍が出ている限り、 'yyerror()'を使って行く方法があります。しかし、解析中に直接エラーをキャッチして、flexのようなレクサーを使用する場合は、 'yyerror() 'を使用せずに独自のエラールーチンを提供することができます。基本的には、文法のエラーを定義するトークンを定義し、エラールーチンでそれをキャッチします。 – Bort

答えて

0

Comment converted to an answer

@Bortは書いた:

私はバイソン/フレックス専門家ではありません。しかし、マニュアルやo'reilly Bison/Flexの本に行く限り、yyerror()を使用する方法があります。しかし、たとえフレックスのようなレクサーを使用しても、構文解析中にエラーを直接キャッチして、yyerror()を使用せずに独自のエラールーチンを提供することができます。基本的には、文法のエラーを定義するトークンを定義し、エラールーチンでそれをキャッチします。

関連する問題