下面是我的规则,当我用“=”替换 $2 时,我的代码可以工作。我知道默认情况下所有文字标记都使用其 ascii 值(因此为什么多字符标记需要定义)
下面的方法不起作用。该函数是用 0 而不是我期望的“=”来调用的。有我可以设置的选项吗? (通过手册页看来并非如此)
AssignExpr: var '=' rval { $$ = func($1, $2, $3); }
在另一段代码中,我有 MathOp: '=' | '+'| '%' ...
这就是我感兴趣的原因。
最佳答案
在此上下文中,$2 的值将是 yylex 函数在返回标记“=”之前放入全局变量 yylval 中的值。如果词法分析器没有将任何内容放入 yylval,它可能仍为 0,如您所见。
关于yacc - Bison/Yacc,让文字标记返回它自己的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1742232/