1
我想解析一个像a IN [3 .. 5[
这样的表达式,其中尖括号的方向决定间隔是包含还是独占。我想这被重写到AST等Antlr树重写规则
NODE-TYPE
|
+------------+-----------+
| | |
variable lower-bound upper-bound
其中节点型是BTW_INCLUSIVE,BTW_EXCL_LOWER,BTW_EXCL_UPPER或BTW_EXCL_BOTH之一,这取决于角括号的方向。
我有以下解析规则:
interval_expr : expr1=variable IN
(LBRACKET|RBRACKET)
expr2=expression DOTDOT expr3=expression
(LBRACKET|RBRACKET)
-> ^(BETWEEN $expr1 $expr2 $expr3)
这工作,但它不会创建正确的树节点类型。如何根据匹配的内容选择要创建的节点类型?