2016-10-19 10 views
0

コンパイル時にエラー1.1:構文エラー、予期しないファイルの終了が発生する単純なバイソンプログラムです。 Bison:入力/出力エラー。私はそれがバイソン-d hw3.yを使用してコンパイル構文を取得し続けるシンプルなBisonファイル1.1エラー

次のようにコードがある:lineためのあなたは生産の;欠けている

%{ 
    #include <stdio.h> 
%} 
%token NUMBER 
%left '+' '-' 
%left '*' '/' 

%% 
input 
    : /* allow empty input */ 
    | input line 
    ; 
line 
    : expr '\n' { printf("Result is %f\n", $1); } 
expr 
    : expr '+' term { $$ = $1 + $3; } 
    | expr '-' term { $$ = $1 - $3; } 
    | term { $$ = $1; } 
    ; 
term 
    : term '*' factor { $$ = $1 * $3; } 
    | term '/' factor { $$ = $1/$3; } 
    | factor { $$ = $1; } 
    ; 
factor 
    : '(' expr ')' { $$ = $2; } 
    | NUMBER { $$ = $1; } 
    | '-' NUMBER { $$ = -$2; } 
    ; 
    %% 


    /* display error message */ 
    int yyerror(char *errmsg) { printf("%s\n", errmsg); } 
    /* main */ 
    int main() { 
    printf("type an expression:\n"); 
    yyparse(); 
    } 
+0

_When_そのエラーが発生しますか? Bisonを実行するとき、結果のCコードをコンパイルするとき、あるいはパーサを実行するとき? Bisonを実行している場合は、Bisonを使用してコードを実行しようとするとそのエラーは表示されません。どのバージョンのBisonを使用していますか?これはあなたが使用している正確なコードであると確信していますか? –

答えて

0

を。これらのファイルを整形するより良い方法に注意してください。この方法では、このエラーが即時に表示されます。あなたの中かっこやコメントが正しいかどうか、引用符で囲まれた文字列や文字が正しいかどうかを確認してください。

+1

Bisonはセミコロンを必要としません(そして、posixによるとyaccもどちらもしません)。 '%}'行が、編集されていないOPのように実際にスペースで始まる場合、コードブロックを終了すると認識されないことがあります。 – rici

関連する問題