在我编译yacc程序的某些linux机器上,它运行正常。但是,在其他机器上,我注意到没有任何插入语法规则的c语句被执行,甚至是printf。可能是什么问题呢?我注意到在这些机器上我必须取出-ly选项,因为如果我尝试用它编译就会出错。
以下是一个例子:
declaration : var_declaration
| fun_declaration
| '$' {printTable();} ;
最后一行通常无效。
答案 0 :(得分:2)
你确定你在那里安装了Yacc吗?奇怪的是-ly
是不必要的,因为它将Yacc的库与您的代码链接起来。也可能是Yacc很老或者在这些机器上坏了。
您可以尝试以下内容:在有问题的平台上,在.y文件上以独立模式运行yacc并检查生成的代码。尝试在那里找到你的C语句。为了简单起见,先从小玩具语法开始,然后转到你的真实/大文法。