0
このルールのASTツリーを生成するための書き換えルールの書き方を知りたいのですが、ANTLRでのrelop操作のASTルール
e5 : (simpleexpression) (relop simpleexpression)*
;
relop : RELOP_GT
| RELOP_LT
| RELOP_GE
| RELOP_LE
;
このルールのASTツリーを生成するための書き換えルールの書き方を知りたいのですが、ANTLRでのrelop操作のASTルール
e5 : (simpleexpression) (relop simpleexpression)*
;
relop : RELOP_GT
| RELOP_LT
| RELOP_GE
| RELOP_LE
;
これはバイナリ操作であると思われる場合(サブ)ツリーのルートは、オペレータ、relop
であり、葉はsimpleexpression
秒です。私は以下のように入力を受け入れるだろう、あなたの元のルール以来?
に*
を変更
e5 : simpleexpression (relop^ simpleexpression)?
;
relop : RELOP_GT
| RELOP_LT
| RELOP_GE
| RELOP_LE
;
注:
その場合は、単にその前にルートをインライントークンを作る木オペレータ^
、/ツリーを使用評価されてしまうからです多くのプログラミング言語で
1 <= 2 < 3
は:
true < 3
とみなされるかもしれません無効な表現(あなたの言語はそれを受け入れるかもしれませんが、その場合は*
を残してください!)インライン^
で
、式
1 <= 2
は、次のASTに解析されるであろう:
<=
/\
1 2