我收到错误说'%yacc'和'%define api.value.type“union”'不能一起使用

时间:2018-04-02 13:50:21

标签: compiler-construction bison flex-lexer yacc

我正在创建一个简单的编译器,我需要生成一个Symantec值类型,我已经检查了link,我需要在我的parser.y文件中添加这一行:

%define api.value.type union

告知野牛,%token和%type指令使用的标签是真正的类型。

但我得到了一个奇怪的错误:

  

parser.y:错误:'%yacc'和'%define api.value.type“union”'   不能一起使用

我不明白“%yacc”变量是什么以及为什么会出现错误,据我所知,'%define api.value.type“union”'我可以在解析器中正常使用它,并且我找不到有关该错误的任何信息或资源。

1 个答案:

答案 0 :(得分:1)

正如this page of the documentation所述,野牛包含一个yacc前端,其运行bison -y-y选项强制执行here所述的各种yacc兼容性设置。

因此,解决方案是运行bison而不是yacc