Antlr4中的源代码翻译

时间:2015-03-12 10:18:29

标签: javascript parsing plsql antlr antlr4

我正在尝试将PLSQL代码转换为JavaScript代码。 我正在使用Antlr4这个语法:https://github.com/developeron29/PLSQLParser

我使用了监听器来翻译代码片段,如下所示:

@Override
public void enterBody(BodyContext ctx) {
    functionBody += "function " + funcName + "{\n;
}

@Override
public void exitBody(BodyContext ctx) {
    functionBody += "}\n;
}

...

它工作得很好,但代码增长很快,而且变得无法维护。

有没有更好/更清洁的方法来进行这种翻译?

1 个答案:

答案 0 :(得分:3)

如果您可以逐个翻译语言元素,那么ANTLR-Listener方法就可以了。

或者您可以考虑使用ANTLR-Visitor方法。我认为如果你期望几个编译器传递具有不同的解析树遍历策略或不同的中间结果,那么它是合适的:

  • 一个节点的代码不得在进入和退出之间分开
  • 你可以修剪解析树甚至构建一个AST(AST-Builder将是一个访问者)
  • 您可以轻松地将节点评估委派给其他解析树访问者