例如对于规则:
%token TOKEN
%%
foo: TOKEN;
%%
考虑到 TOKEN 是词法标记,那么当我解析时:
tokken
它会显示Syntax error expected TOKEN recive tokken
有一种方法可以改变它,所以它不会说 TOKEN name insted the lexem 所以:Syntax error expected token recive tokken
?
好吧,经过一些深入的研究,我发现它是这样的:
关于令牌的声明:
解析器.y:
%token TOKEN "token"
%%
foo : TOKEN
这使得当您编写tokken
错误消息时会显示在令牌声明 ( )token
的字符串中找到的内容。%token TOKEN "token"
我会做一个更好的例子:
解析器.y:
%token TOKEN "token"
%token PYC ";"
%%
foo : TOKEN PYC
如果您的程序是token.
那么错误将是unexpected "." expecting ";"
。没有“;” 就行 %token PYC ";"
那么错误将是unexpected "." expecting PYC
哪个更难以理解。