有没有办法改变 Bison 错误信息的格式?例如,不要syntax error, unexpected T_ID, expected ';' or T_IMPORT
说unexpected id, expected a semicolon or import
-double so with 之类的东西$end
。
我知道在最坏的情况下我可以进行字符串操作来修复字符串,但这似乎有点荒谬。
有没有办法改变 Bison 错误信息的格式?例如,不要syntax error, unexpected T_ID, expected ';' or T_IMPORT
说unexpected id, expected a semicolon or import
-double so with 之类的东西$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
。