使用antlr3以相反的顺序制作AST

时间:2015-05-15 19:19:17

标签: antlr antlr3

我正在学习antlr3,为此我正在修改Javascript语法(我从here获得语法)以添加对AST生成的支持。 现在,我正在尝试使用多个参数为“函数调用”添加AST支持(例如:aFunction(1)(2)(3)(4))。 在我的模型中,前面的示例必须创建一个AST,如:

                                 CALLEXPRESSION
                      CALLEXPRESSION        Arguments(4)
              CALLEXPRESSION        Arguments(3)
     CALLEXPRESSION     Arguments(2)
undef           Arguments(1)

目前,我有以下规则来处理这种情况:

callExpression
: f=memberExpression! (LT* callExpressionSuffix[$f.tree]^)
;

callExpressionSuffix[param]
: arguments oCallSuf=callExpressionSuffix[param] -> ^(CallExpression $oCallSuf arguments)
| (->{param})
;

但这些正在创建一个AST:

                                   CALLEXPRESSION
                        CALLEXPRESSION      Arguments(1)
              CALLEXPRESSION        Arguments(2)
     CALLEXPRESSION     Arguments(3)
undef           Arguments(4)

(参数顺序相反)

问题是:
如何使用纯“antlr3语言”来颠倒参数的顺序?

0 个答案:

没有答案