1

yacc/lexから生成されたパーサーがあります。1つのケースを除いて、私が設定したすべてのルールで正常に機能しています。

このパーサーが解析しているファイルが空の場合、エラーが発生します。ファイルが空のときにエラーが発生しないようにルールを追加したいと思います。どちらの.l/.yファイルにもそのチェックを追加していません。

これはYACC/LEXでどのように行うことができますか?

前もって感謝します !!

4

1 に答える 1

2

レクサーは入力の終わりを認識し、それに応じてトークンを返す必要があります(つまりEOF)。

文法の開始ルールは次のようになります。

%start program

...

program : EOF 
        | instructions EOF
        ;

アイラ・バクスターが指摘したように、単純な「空の」ルールでも十分です。GNU bisonマニュアルには、この例が記載されています。

input   : /* empty */
        | input line
        ;
于 2012-06-15T08:39:58.713 に答える