Bison 在YACC错误消息中打印多字符标记

Bison 在YACC错误消息中打印多字符标记,bison,yacc,Bison,Yacc,例如,如果Yacc检测到语法错误并定义了详细错误,则会打印错误消息 unexpected '[', expecting BECOMES 有没有办法用错误消息中的实际字符串(例如,:=)替换多字符令牌(例如,变为)的令牌名称?我询问的原因是,变成代表:=对解析器的用户来说可能并不明显,您可以通过在%token定义中的令牌名称后加引号来定义一个人类可读的令牌名称版本: %token BECOMES "':='" 这会将错误消息更改为: unexpected '[', expe

例如,如果Yacc检测到语法错误并定义了详细错误,则会打印错误消息

unexpected '[', expecting BECOMES

有没有办法用错误消息中的实际字符串(例如,
:=
)替换多字符令牌(例如,
变为
)的令牌名称?我询问的原因是,
变成
代表
:=

对解析器的用户来说可能并不明显,您可以通过在
%token
定义中的令牌名称后加引号来定义一个人类可读的令牌名称版本:

%token BECOMES "':='"
这会将错误消息更改为:

unexpected '[', expecting ':='

谢谢出于某种奇怪的原因,单引号和双引号被打印在错误消息中(
应为“':=”
)。如果删除单引号,则不会打印引号(
预期:=
)。我使用野牛3.3.2。