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