yacc - Bison/Yacc,让文字标记返回它自己的值?

标签 yacc bison token

下面是我的规则,当我用“=”替换 $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/

相关文章:

php - 将 token 放在 URL 中是否安全以防止 PHP 应用程序中的 CSRF 攻击?

c# - DataTable 表达式无法解释标记 '!'

java - 此 token 错误后将引发

从另一个 c 文件调用 Yacc 文件中的函数

c++ - Bison 风格 : is using my own stack bad? 全局变量不好吗?

bison - 警告 : assignment makes pointer from integer without a cast yylval=atoi(yytext);

windows - 如何在 Windows 上编译 LEX/YACC 文件?

使用相同的输入文件多次调用 yyparse()

vhdl - 如何编写不区分大小写的 Lex 模式规则?

c - Bison-Flex extern FILE *yyin 不工作(C 语言)