我对编程语言翻译完全陌生,不知道如何开始。我想把用PL/SQL编写的存储过程转换成Java,使我们的应用程序数据库独立。
大约有50个存储过程,每个存储过程大约有10000-15000行代码。我正在寻找一种方法来自动化这个
我已经得到了ANTLR解析器的参考,并在GitHub上找到了一些解析器,但没有线索,如何去做。
首先你必须知道一些理论,而且你还必须学习一些关于ANTLR的知识。ANTLR解析器将"只"给您AST(抽象语法树),这只是很小的第一步。剩下的就看你了。有一篇文章叫《解析后的生活》,描述了自动翻译的问题。如果你没有这方面的经验,你可能不应该这样开始。
可以使用ANTRL:
- 生成PL/SQL代码调用树。要获得代码的业务逻辑的一些概述。
- 从PL/SQL代码提取SQL语句
- 从sql提取表名
这可以让您大致了解哪个"模块"访问特定的表。您还可以将AST树序列化为一些"假"java代码,其中原始PL/SQL将作为注释存储。剩下的就看你了。PL/SQL编程风格不同于Java编程风格。
PS:你还会发现一些Oracle的专有sql不能很容易地转换成ISO SQL92,一些数据库甚至不支持ISO SQL92(或更高)。所以正如我之前写的,大部分工作必须手工完成。所以从头开始重写也不是个坏主意。