2

Bisonエラーメッセージの形式を変更する方法はありますか?たとえば、「」とsyntax error, unexpected T_ID, expected ';' or T_IMPORT言う代わりに、「。」のunexpected id, expected a semicolon or importようなものでもそう$endです。

最悪の場合、文字列を修正するために文字列操作を実行できることはわかっていますが、それは少しばかげているようです。

4

1 に答える 1

3

より良いものを手に入れるために

syntax error, unexpected T_ID

それ以外の

%token T_ID

行う

%token T_ID "identifier"

そしてメッセージは

syntax error, unexpected identifier

の特定のケースでは$end、次のようにします。

%token T_EOF 0 "end of file"

国際化サポートが必要な場合は、次を使用します_(...)

%token T_ID _("identifier")
%token T_EOF 0 _("end of file")

Bison 3.6以降、さらに進んでエラーメッセージを自分で生成できます。パーサーは予想されるトークンのリストを提供し、予想外のトークンについては、 に渡されたメッセージの偽造を担当しますyyerror。詳細については、ドキュメントの「構文エラー レポート機能」を参照してください。yyreport_syntax_error

于 2015-03-08T20:26:14.760 に答える