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;
}
...

它运行良好,但代码增长迅速,并且变得无法维护。

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

如果可以逐个翻译语言元素,则ANTLR-Listener方法很好。

或者,您可以考虑ANTLR-访客方法。如果您期望使用不同的解析树遍历策略或不同的中间结果进行多个编译器传递,我认为是合适的:

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

相关内容

  • 没有找到相关文章

最新更新