次のような左再帰ルールがあります。
EXPRESSION : EXPRESSION BINARYOP EXPRESSION | UNARYOP EXPRESSION | NUMBER;
括弧を追加する必要がありますが、左括弧を対応する右括弧に依存させる方法がわかりませんが、まだオプションです。誰かが私に方法を教えてもらえますか? (または、字句解析で完全にやりすぎているのでしょうか。これらの一部またはすべてを解析に任せるべきでしょうか?)
次のような左再帰ルールがあります。
EXPRESSION : EXPRESSION BINARYOP EXPRESSION | UNARYOP EXPRESSION | NUMBER;
括弧を追加する必要がありますが、左括弧を対応する右括弧に依存させる方法がわかりませんが、まだオプションです。誰かが私に方法を教えてもらえますか? (または、字句解析で完全にやりすぎているのでしょうか。これらの一部またはすべてを解析に任せるべきでしょうか?)
はい、レクサーでやりすぎています。左再帰規則を回避する方法は次のとおりです。
http://www.antlr.org/wiki/display/ANTLR3/Expression+evaluator (パーサー ルールがどのようにルールexpr
に細分化され、atom
再帰的に呼び出されるかを確認してくださいatom
)
HTH
再帰ルールを追加できます。
EXPRESSION : EXPRESSION BINARYOP EXPRESSION
| UNARYOP EXPRESSION
| NUMBER
| OPENPARENS EXPRESSION CLOSEPARENS
;