2
我有以下ANTLR的语法规则:ANTLR的条件重写
expression1
: e=expression2 (BINOR^ e2=expression2)*
;
但是如果我有“3 | 1 | 2 | 6
”这导致在一个平面树,3, 1, 2, 6
所有BINOR节点的孩子。我真正想要的是能够在任何模式匹配
expression2
or
^(BINOR expression2 expression2)
我该如何改变重写,以便这些是2模式?
编辑:
如果我使用自定义的重写,我沿着
expression1
: e=expression2 (BINOR e2=expression2)*
-> {$BINOR != null}? ^(BINOR $e $e2*)
-> $e
可是电话想,如果我这样做是与“1 | 2 | 3”产生的树只有一个有两个孩子的BINOR节点是1和3,所以缺少2个节点。
非常感谢