J'essaye d'analyser une expression comme a IN [3 .. 5[
, où la direction des chevrons détermine si l'intervalle est inclusif ou exclusif. Je veux que ce soit réécrite à un AST commeRègles de réécriture d'arborescence Antlr
NODE-TYPE
|
+------------+-----------+
| | |
variable lower-bound upper-bound
où NODE-TYPE est l'un des BTW_INCLUSIVE, BTW_EXCL_LOWER, BTW_EXCL_UPPER ou BTW_EXCL_BOTH, selon la direction des équerres.
J'ai la règle Parse suivante:
interval_expr : expr1=variable IN
(LBRACKET|RBRACKET)
expr2=expression DOTDOT expr3=expression
(LBRACKET|RBRACKET)
-> ^(BETWEEN $expr1 $expr2 $expr3)
Cela fonctionne, sauf qu'il ne crée pas le type de nœud d'arborescence correct. Comment puis-je choisir quel type de noeud créer en fonction de ce qui a été mis en correspondance?