yacc/lexから生成されたパーサーがあります。1つのケースを除いて、私が設定したすべてのルールで正常に機能しています。
このパーサーが解析しているファイルが空の場合、エラーが発生します。ファイルが空のときにエラーが発生しないようにルールを追加したいと思います。どちらの.l/.yファイルにもそのチェックを追加していません。
これはYACC/LEXでどのように行うことができますか?
前もって感謝します !!
レクサーは入力の終わりを認識し、それに応じてトークンを返す必要があります(つまりEOF
)。
文法の開始ルールは次のようになります。
%start program
...
program : EOF
| instructions EOF
;
アイラ・バクスターが指摘したように、単純な「空の」ルールでも十分です。GNU bisonマニュアルには、この例が記載されています。
input : /* empty */
| input line
;