我搜索了手册页并找到了这个。但是这是什么意思?没有它,我的 Bison 文件无法编译,我想知道为什么它不能编译(诚然,我有一些移位/减少和减少/减少错误。但这不应该阻止它吗?)。
有人知道它实际上做了什么或者为什么它不能编译我的代码吗?
-y, --yacc
emulate POSIX Yacc
最佳答案
默认情况下,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; ;}
...
关于bison - -y/-yacc 标志在 bison 中起什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4970720/