-y / -yacc标志在野牛中做什么?

时间:2011-02-11 15:19:47

标签: bison

我搜索了手册页并找到了这个。但是这是什么意思?没有它我的野牛文件没有编译,我想知道为什么它没有(不可否认我有一些转移/减少和减少/减少错误。但那不应该停止吗?)。

有没有人知道它实际上做了什么或为什么它不能编译我的代码?

   -y, --yacc
          emulate POSIX Yacc

1 个答案:

答案 0 :(得分:3)

默认情况下,Bison会生成一组文件名,但POSIX需要一组不同的文件名。 -y标志使Bison生成POSIX名称而不是自己的名称。

对于输入文件名grammar.y,Bison通常会生成grammar.tab.c(如果请求标头,则生成grammar.tab.h)。使用-y标记,Bison会生成y.tab.cy.tab.h

请注意,-y标志只应影响输出文件名。它应该对可接受的语法和冲突的数量没有影响。

有趣的是,在相同的语法上,输出略有不同;动作行中有一个空语句:

$ diff y.tab.c grammar.tab.c
558c558
< #line 559 "y.tab.c"
---
> #line 559 "grammar.tab.c"
2828c2828
<     { stmt_type = STMT_NONE; }
---
>     { stmt_type = STMT_NONE; ;}
2833c2833
<     { stmt_type = STMT_LOAD; }
---
>     { stmt_type = STMT_LOAD; ;}
...