野牛语法错误(初学者)

Nat*_*pos 0 yacc bison

我回来了,现在正在编写我自己的语言和我的操作系统,但是由于我现在开始开发自己的开发语言,因此在使用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;        }
;
%%
Run Code Online (Sandbox Code Playgroud)

当我尝试使用这个源代码的Bison时,我收到此错误:

calc.y:1.1-5:语法错误,意外标识符:

Jon*_*ler 7

您需要在规则之前和之后使用'%%'(或者严格地说,如果在第二个'%%'之后没有代码,则可以省略该行).

在第一个'%%'之前,您还需要'%token NUM'; 语法然后通过野牛.