c заявления не распознаны в файле yacc - PullRequest
1 голос
/ 04 декабря 2009

На некоторых машинах Linux, когда я компилирую свою программу yacc, она работает нормально. Однако на других машинах я заметил, что ни один из операторов c, перемежающихся с правилами грамматики, никогда не выполняется, даже printf. В чем может быть проблема? Я заметил, что на этих машинах мне нужно отключить опцию -ly, потому что она выдает ошибку, если я пытаюсь скомпилировать ее.

Примером является следующее:

 declaration : var_declaration
             | fun_declaration 
             | '$' {printTable();} ;

Последняя строка, которая обычно работает нормально, не будет выполнена.

1 Ответ

2 голосов
/ 04 декабря 2009

Вы уверены, что у вас там вообще установлен Yacc? Это странно -ly не нужно, потому что это то, что связывает библиотеки Yacc с вашим кодом. Может также случиться так, что Yacc очень старый или просто сломан на этих машинах.

Вы можете попробовать что-то вроде следующего: на проблемной платформе запустите yacc в автономном режиме для своего файла .y и проверьте полученный код. Попытайтесь найти там свои утверждения C. Чтобы все было проще, начните с маленькой игрушечной грамматики, а затем перейдите к своей реальной / большой грамматике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...