Bison错误:m4子进程失败

问题描述 投票:1回答:2

我正在尝试解析语法,但出现此错误:

bison -t  -vd brest.y
brest.y: warning: 52 shift/reduce conflicts [-Wconflicts-sr]
brest.y: warning: 76 reduce/reduce conflicts [-Wconflicts-rr]
brest.y:167.105-121: warning: rule useless in parser due to conflicts [-     Wother]
        /*nil*/                                 {   $$=NULL;}
                                                                                                          ^^^^^^^^^^^^^^^^^
**bison: m4 subprocess failed**

警告中涉及的语法是:

activity:   
        /*nil*/                                     {   $$=NULL;}
    |   resource activity                               {       $$=concatQuadruple(getQuadrupleResource($1),$2);}
    |   var_declaration activity                        {   $$=concatQuadruple(getQuadrupleVarDeclaration($1),$2);}
    |   invoke activity                                 {   $$=concatQuadruple($1,$2);}
    |   ASSIGN assignment ASSIGN_ activity              {   $$=concatQuadruple($2,$4);}
    |   respond                                         {   $$=getQuadrupleRespond($1);}
;

我已经安装了以下版本的bison和m4:

bison-3.0.2-3.fc21.x86_64

m4-1.4.17-6.fc21.x86_64

有什么想法吗?

bison
2个回答
1
投票

我找到了解决方案:/ bin / m4与yum一起安装,由于任何原因,我都不知道它的大小为0字节。这可能是存储库中的错误,我修复了从GNU网站http://ftp.gnu.org/gnu/m4/下载并编译它的问题。


0
投票

这个问题已有5年历史了,但是我现在已经遇到了这个问题,因此我认为我的解决方案将非常有用,因为它是google中唯一带有此类问题的线程。我从Windows(使用cygwin从源代码编译)运行野牛,并遇到了相同的问题:

野牛错误:'/usr/local/share/bison/m4sugar/m4sugar.m4':没有这样的文件或目录

野牛错误:m4子进程失败

对我来说,解决方案是在运行bison命令之前设置两个变量:

设置BISON_PKGDATADIR = [主目录] / usr / local / share / bison

set M4 = m4

在我的情况下,[主目录]是D:/ files / Cygwin。还要确保在Windows中添加Path环境变量以运行bison&m4:Path = [Home Dir] / bin

© www.soinside.com 2019 - 2024. All rights reserved.