0

私は戻ってきて、独自の言語と OS を書いていますが、独自の開発言語の開発を開始しているため、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: 構文エラー、予期しない識別子:

4

2 に答える 2

7

ルールの前と後に「%%」が必要です (または厳密には代わりに、2 番目の「%%」の後にコードがない場合は、その行を省略できます)。

また、最初の「%%」の前に「%token NUM」が必要です。その後、文法は Bison を通過します。

于 2009-10-11T15:45:04.403 に答える
0

bisonversionにアップグレードする別の代替ソリューションが存在します3.0.42.xバージョンとの間3.xで、ファイルの構文が変更されたと思います。

于 2016-10-13T11:13:48.957 に答える