我回来了,现在正在编写我自己的语言和我的操作系统,但是由于我现在开始开发自己的开发语言,因此在使用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:语法错误,意外标识符:
答案 0 :(得分:7)
你需要在规则之前和之后使用'%%'(或者严格地说,如果在第二个'%%'之后没有代码,你可以省略该行)。
在第一个'%%'之前,你还需要一个'%token NUM';然后语法通过了Bison。
答案 1 :(得分:0)
存在另一种替代解决方案,即升级到bison
版本3.0.4
。我想在版本2.x
和3.x
之间,他们更改了文件语法。