我想写一个符合POSIX YACC的YACC语法。我尝试使用Bison选项-y
和-Wyacc
,但是,包含Bison特定指令%code
的以下测试程序编译时没有警告:
%code {}
%%
dummy:;
任何线索?
答案 0 :(得分:3)
Bison的documentation否认它符合POSIX的观点:
11.6安全吗?符合?Bison安全吗?它符合POSIX吗?
如果您正在寻找担保或认证,我们不会提供。但是,Bison旨在成为符合Yacc POSIX规范的可靠程序。如果您遇到问题,请向我们发送错误报告。
虽然它有-Wyacc
选项,但并未涵盖所有内容。正如前面提到的那样(2003中):
Bison有一个Yacc兼容模式,应该是POSIX 合规,但就是这样。超越POSIX的东西都是额外的东西。
如果您阅读了源代码,请查找符号Wyacc
。它仅在少数地方使用,这是唯一发出的消息:
答案 1 :(得分:0)
Thomas Dickey 对 Bison 文档的解读不正确。
<块引用>Bison 的文档否认其符合 POSIX 的概念
只是错误的,引用的段落完美地说明了这一点。它甚至表示应该将问题报告为错误。
然而,文档的那部分肯定可以使用一些改进。之所以这样写,是因为过去有人问是否有“符合性证书”,而后者并不存在。它来自older documentation。
之前
Is Bison Y2K compliant?
If you're looking for a guarantee or certification, I can't
provide it. With a little thought you can answer this one for
yourself, though. (Hint: does a parser generator rely on the
date or time for anything?) If you're still confused, see
http://www.gnu.org/software/year2000.html for more information.
之后
Is Bison secure? Does it conform to POSIX?
If you're looking for a guarantee or certification, we don't
provide it. However, Bison is intended to be a reliable program
that conforms to the POSIX specification for Yacc. If you run
into problems, please send us a bug report.
过去,用户对选项 -Wyacc
的准确性兴趣不大。事实上,这个关于 StackOverflow 的问题并没有出现在 Bison 错误报告列表中。
不过,此后-Wyacc
更加完整,尤其是手头的案例处理。
$ bison -Wyacc q.y
q.y:1.1-5: warning: POSIX Yacc does not support %code [-Wyacc]
1 | %code {}
| ^~~~~