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)
這工作,但它不會創建正確的樹節點類型。如何根據匹配的內容選擇要創建的節點類型?