Ошибка синтаксиса бизона (новичок) - PullRequest
0 голосов
/ 11 октября 2009

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

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;        }
;
%%

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

calc.y: 1.1-5: синтаксическая ошибка, неожиданный идентификатор:

Ответы [ 2 ]

7 голосов
/ 11 октября 2009

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

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

0 голосов
/ 13 октября 2016

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

...