2

有没有办法改变 Bison 错误信息的格式?例如,不要syntax error, unexpected T_ID, expected ';' or T_IMPORTunexpected id, expected a semicolon or import-double so with 之类的东西$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 回答