Antlr4 中的源代码转换

3
我正在尝试将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
PL/SQL -> JavaScript?以上看起来既不像JavaScript也不像PL/SQL。您能展示一下您目前的输入和输出吗? - hol
1
将一种语言翻译成另一种语言实际上是相当困难的,如果您能做得好的话。通常你需要比“仅仅一个解析器”更多的东西。请参阅http://stackoverflow.com/a/28970385/120163。 - Ira Baxter
1
为什么你想要将PLSQL翻译成JavaScript? - Ira Baxter
2
@hol,上面的代码不是输入/输出。它是Listener(在Java中)尝试从解析树中编写JavaScript代码的过程。 - Giuseppe Santoro
1
@IraBaxter,感谢您提供的链接。我们正在将一款传统软件迁移到基于Web的应用程序,并尝试自动化部分流程。 - Giuseppe Santoro
1个回答

4
ANTLR-Listener方法适用于可以逐个翻译语言元素的情况。或者,您可以考虑使用ANTLR-Visitor方法。我认为这种方法适用于具有不同解析树遍历策略或不同中间结果的多个编译器通道的情况:
  • 一个节点的代码不能在进入和退出之间分割
  • 您可以修剪解析树甚至构建AST(AST-Builder将是Visitor)
  • 您可以轻松地将节点的评估委托给其他解析树访问者

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接