私は最近ANTLRの勉強を始めました。以下は算術式の文法です。問題は、式ルールをルールに入れる(呼び出す)とterm
、(9 + 8)でも正しく解析されないことです。どういうわけか、右括弧を無視しています。
ルール用語から式ルールを呼び出す代わりにルールを置くadd
と、うまく機能しています。
のように:
term:
INTEGER
| '(' add ')'
;
どちらも同じであるために、なぜそれが起こっているのか誰かに教えてもらえますか?
間違った結果を出している文法
term
:
INTEGER
| '(' expression ')'
;
mult
:
term ('*' term)*
;
add
:
mult ('+' mult)*
;
expression
:
add
;