のような式を解析しようとしています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)
これは機能しますが、正しいツリー ノード タイプが作成されません。一致したものに基づいて作成するノード タイプを選択するにはどうすればよいですか?