Flex で Bison を使用しています。Yacc 入力ファイルに次のルールがあります。
program : PROGRAM m2 declarations m0 block {cout << "Success\n"} ;
問題は、部分的に正しいプログラムがあるが、EOF の前に「ガベージ」がある場合、前のルールに従って減少し、「成功」を報告してからエラーを報告することです。
上記のルールの最後に EOF を含めたいのですが、そうすると Flex は を読み取ったときに EOF を返さなければならず、<<EOF>>
Bison はプログラムを終了するタイミングをどのように知るのでしょうか? 今、私はFlexでこれを持っています:
<<EOF>> {return 0;}