Ошибка бизона: сбой подпроцесса 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/.

Другие вопросы по тегам