我搜索了手册页并找到了这个。但是这是什么意思?没有它我的野牛文件没有编译,我想知道为什么它没有(不可否认我有一些转移/减少和减少/减少错误。但那不应该停止吗?)。
有没有人知道它实际上做了什么或为什么它不能编译我的代码?
-y, --yacc
emulate POSIX Yacc
答案 0 :(得分:3)
默认情况下,Bison会生成一组文件名,但POSIX需要一组不同的文件名。 -y
标志使Bison生成POSIX名称而不是自己的名称。
对于输入文件名grammar.y
,Bison通常会生成grammar.tab.c
(如果请求标头,则生成grammar.tab.h
)。使用-y
标记,Bison会生成y.tab.c
和y.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; ;}
...