首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bison/Yacc,让文字标记返回自己的值?

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

Stack Overflow用户
提问于 2009-11-16 21:34:55
回答 2查看 1.3K关注 0票数 2

下面是我的规则,当我用'=‘替换$2时,我的代码可以工作。我知道默认情况下所有文字标记都使用其ascii值(因此多字符标记需要定义)

下面的代码不起作用。函数是使用0调用的,而不是像我期望的那样使用'=‘。有什么我可以设置的选项吗?(它不是通过手册页显示的)

代码语言:javascript
运行
复制
AssignExpr: var '=' rval            { $$ = func($1, $2, $3); } 

在另一段代码中,我使用了MathOp: '=' | '+' | '%' ...,因此我对它感兴趣。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-23 04:33:44

在此上下文中,$2的值将是yylex函数在返回标记'=‘之前放入全局变量yylval的任何值。如果lexer没有将任何内容放入yylval,那么它可能仍然是0,如您所见。

票数 3
EN

Stack Overflow用户

发布于 2009-11-17 12:32:28

我想你是对的,Bison不是那样工作的。

当然,您可以很容易地修复它:

  • 只需为=声明一个标记,在您的词法分析器中识别它,并返回它的语义值,或者...
  • 为它声明一个结果并使用$$或...
  • 在yylex()

<代码>F29中将'=‘赋值给yylval

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1742232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档