我正在尝试解析语法,但是我收到了这个错误:
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
有什么想法吗?
答案 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/编译它。