2009-10-11 108 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;  } 
; 
%% 

当我尝试使用Bison这个源代码我得到这个错误:

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

回答

7

您之前需要一个“%%”规则以及之后(或严格来说,如果在第二个'%%'之后没有代码,则可以省略该行)。

在第一个'%%'之前,您还需要'%token NUM';语法然后通过了Bison。

+0

非常感谢乔纳森! – 2009-10-11 15:53:54

0

存在另一种替代解决方案,即升级到bison版本3.0.4。我猜想在版本2.x3.x之间,他们改变了文件语法。