Bisonエラーメッセージの形式を変更する方法はありますか?たとえば、「」とsyntax error, unexpected T_ID, expected ';' or T_IMPORT
言う代わりに、「。」のunexpected id, expected a semicolon or import
ようなものでもそう$end
です。
最悪の場合、文字列を修正するために文字列操作を実行できることはわかっていますが、それは少しばかげているようです。
Bisonエラーメッセージの形式を変更する方法はありますか?たとえば、「」とsyntax error, unexpected T_ID, expected ';' or T_IMPORT
言う代わりに、「。」のunexpected id, expected a semicolon or import
ようなものでもそう$end
です。
最悪の場合、文字列を修正するために文字列操作を実行できることはわかっていますが、それは少しばかげているようです。
より良いものを手に入れるために
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