Ошибка бизона: сбой подпроцесса m4
Я пытаюсь разобрать грамматику, но я получаю эту ошибку:
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
Есть идеи?
1 ответ
Этому вопросу 5 лет, но я столкнулся с этой проблемой прямо сейчас, поэтому я думаю, что мое решение будет полезно, потому что это единственный поток в Google с таким вопросом. Я запускал bison из окон (скомпилирован из исходного кода с помощью cygwin) и имел ту же проблему:
Ошибка bison: '/usr/local/share/bison/m4sugar/m4sugar.m4': нет такого файла или каталога
Ошибка bison: сбой подпроцесса m4
Решением для меня было установить две переменные перед запуском команды bison:
установите BISON_PKGDATADIR=[Домашний каталог]/usr/local/share/bison
установить M4=m4
В моем случае [Домашний каталог] был D: / files / Cygwin. Также не забудьте добавить переменную среды Path в окнах для запуска bison & m4: Path=[Home Dir] / bin
Я нашел решение: /bin/m4 был установлен с yum, и по какой-то причине я не знаю, что его размер был 0 байтов. Это может быть ошибка в репозитории, я исправил загрузку и компиляцию с сайта GNU http://ftp.gnu.org/gnu/m4/.