したがって、空の文字列を含む文法があります。文法は次のようなものです。
S->ε
S->式 ;; S
パーサーを実行すると「破棄する状態はもうありません」というエラーが表示されるので、空の文字列を正しく表現していないと思います。では、具体的には lexer .mll ファイルでどのように表現すればよいのでしょうか?
ルールを作る必要があることはわかっているので、それを書き留めていると思います。これは、表現のためのものを除いて、パーサー .mly ファイルのように見えるべきだと私が思うものです。
s:
| EMPTY_STRING { [] }
| expression SEMICOLON s { $1::$3 }