2009-10-11 3 views
0

Я вернулся и теперь записываю свой собственный язык и свою ОС, но по мере того, как я начинаю разработку собственного языка разработки, у меня возникают некоторые ошибки при использовании Bison и I не знаю, как их решить. Это мой код * .y файла:Ошибка синтаксиса Bison (начинающий)

input: 
     | input line 
; 

line:  '\n' 
     | exp '\n' { printf ("\t%.10g\n", $1); } 
; 

exp:  NUM    { $$ = $1;   } 
     | exp exp '+'  { $$ = $1 + $2; } 
     | exp exp '-'  { $$ = $1 - $2; } 
     | exp exp '*'  { $$ = $1 * $2; } 
     | exp exp '/'  { $$ = $1/$2; } 
     /* Exponentiation */ 
     | exp exp '^'  { $$ = pow ($1, $2); } 
     /* Unary minus */ 
     | exp 'n'   { $$ = -$1;  } 
; 
%% 

И когда я пытаюсь использовать Бизон с этим исходным кодом я получаю эту ошибку:

calc.y:1.1-5: syntax error, unexpected identifier:

ответ

7

Вам нужно «%%» до правила, а также после них (или, строго говоря, вместо этого, если код отсутствует после второго «%%», вы можете опустить эту строку).

Вам также понадобится «% токена NUM» перед первым «%%»; Затем грамматика передает Бизона.

+0

Большое спасибо Джонатан! –

0

Существует еще одно альтернативное решение, которое должно быть обновлено до bison версии 3.0.4. Я предполагаю, что между версией 2.x и 3.x они изменили синтаксис файла.

Смежные вопросы