最後のセミコロンをオプションのままにして、特定のルールでセミコロンをオプションにしようとしています。現在、次のようなものがあります
A: 'A';
B: 'B';
C: 'B';
SEMICOLON: ';';
exprs : expr (SEMICOLON expr)* SEMICOLON?;
expr : A | B | C
次のような入力の解析用
A;
C;
B
ただし、「A」のセミコロンをオプションにする必要があります。これは、次のようなものを解析することを意味します
A
C;
B
私が問題を抱えている部分は、最後のセミコロンをオプションにすることを許可しながら、セミコロンを A のオプションにすることです。これを行う良い方法はありますか、それとも最後のセミコロンを必須にするだけですか?
(適当なタイトルが思いつかなかったので自由に変えてください)