【发布时间】:2009-08-12 22:01:27
【问题描述】:
我正在尝试解析像a IN [3 .. 5[ 这样的表达式,其中尖括号的方向决定了区间是包含还是不包含。我希望将其重写为类似 AST 的
NODE-TYPE
|
+------------+-----------+
| | |
variable lower-bound upper-bound
其中 NODE-TYPE 是 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)
这可行,只是它没有创建正确的树节点类型。如何根据匹配的内容选择要创建的节点类型?
【问题讨论】: