Bison/Yacc 归约执行语义动作后,在下一个规则处出现了属性值的变化?

二次元码 2020-06-10 11:42:37
你好,能咨询一个问题,我使用Bison时,非终极符在执行一个语义规则后,归约到下一个语义规则时,此非终极符的属性值自己发生了变化,请问这是什么原因?
代码出现的问题是:打印时出现了死循环,即链表成了:“Term”-> "Term" ->"Term" -> ... 这样的回环。

下面是部分代码:
Factor : Term { Print($1); /*递归打印此链表*/ }
;
Term : INT {
$1.name = "INT"; $1.child = NULL /*初始化终结符 INT 节点*/

$$.name = "Term"; $$.child = &$1; /*INT 节点作为 Term子节点插入链表*/

Print($$); /*此时打印,就很正常*/
}
;
数据类型:struct P{ char *name; struct P *child; }
...全文
24 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

427

社区成员

发帖
与我相关
我的任务
社区描述
非技术问题的乐园
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧