野牛错误:m4子进程失败

时间:2015-02-11 09:33:30

标签: bison

我正在尝试解析语法,但是我收到了这个错误:

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:

野牛-3.0.2-3.fc21.x86_64

m4-1.4.17-6.fc21.x86_64

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

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

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

野牛错误:m4子进程失败

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

set BISON_PKGDATADIR = [本地目录] / usr / local / share / bison

设置M4 = m4

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

答案 1 :(得分:1)

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