2009-10-11 126 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之間,他們改變了文件語法。