在严格的POSIX YACC模式下运行Bison

时间:2016-03-10 08:54:04

标签: posix bison yacc

我想写一个符合POSIX YACC的YACC语法。我尝试使用Bison选项-y-Wyacc,但是,包含Bison特定指令%code的以下测试程序编译时没有警告:

%code {}

%%

dummy:;

任何线索?

2 个答案:

答案 0 :(得分:3)

Bison的documentation否认它符合POSIX的观点:

  11.6安全吗?符合?

     

Bison安全吗?它符合POSIX吗?

     

如果您正在寻找担保或认证,我们不会提供。但是,Bison旨在成为符合Yacc POSIX规范的可靠程序。如果您遇到问题,请向我们发送错误报告。

虽然它有-Wyacc选项,但并未涵盖所有内容。正如前面提到的那样(2003中):

  

Bison有一个Yacc兼容模式,应该是POSIX   合规,但就是这样。超越POSIX的东西都是额外的东西。

如果您阅读了源代码,请查找符号Wyacc。它仅在少数地方使用,这是唯一发出的消息:

答案 1 :(得分:0)

POSIX 合规性

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.

Yac 警告

过去,用户对选项 -Wyacc 的准确性兴趣不大。事实上,这个关于 StackOverflow 的问题并没有出现在 Bison 错误报告列表中。

不过,此后-Wyacc更加完整,尤其是手头的案例处理。

$ bison -Wyacc q.y
q.y:1.1-5: warning: POSIX Yacc does not support %code [-Wyacc]
    1 | %code {}
      | ^~~~~