2015-10-15 438 views
0

我对编程语言翻译是完全陌生的,不知道如何开始。我想将用PL/SQL编写的存储过程转换为Java,以使我们的应用程序数据库独立。如何将用SQL编写的存储过程转换为Java。参考了ANTLR

大约有50个存储过程,每个存储过程大约有10000-15000行代码。我正在寻找一种方法来实现这一点。

我已经得到了ANTLR解析器的参考资料,并且在GitHub上发现了一些解析器,但没有线索,怎么去解决它。

+2

忘掉这种方法。从头开始写。您可以使用ANLR从SQL过程中提取SQL,从SQL中获取表名以获得一些总览。但就是这些。 PS:我是这些解析器的合作者之一。 – ibre5041

+2

PL/SQL和Java是完全不同的语言,所以你的问题是“我如何自动重写500,000 LOC”,这是不可能的。你需要雇用人员。 – Ben

+0

@ ibre5041你是说我应该开始写一个新的解析器或使用现有的解析器?一个解析器会将代码从sql转换为java吗? – Nidhi

回答

4

首先你必须知道一些理论,并且你还必须学习一些关于ANTLR的知识。 ANTLR解析器会给你“仅”AST(抽象语法树),这只是第一步。其余的由你决定。有一篇名为“Life after parsing”的文章描述了自动翻译的问题。如果你没有这方面的经验,你可能不应该这样开始。

可以使用ANTRL为:

  • 代PL/SQL代码调用树的。了解代码业务逻辑的一些概述。从PL/SQL代码
  • 提取SQL语句从SQLS

  • 提取表名这可以给你一些概述其中“模块”访问特定的表。 您还可以将AST树序列化为一些“假”的java代码,其中原始PL/SQL将作为注释存储。但其余的由你决定。 PL/SQL编程风格与Java不同。 PS:您还会发现Oracle的一些专有SQL无法轻易转换为ISO SQL92,有些数据库甚至不支持ISO SQL92(或更高版本)。因此,我写作之前大部分工作必须手动完成。所以也许从头开始重写它并不是那么糟糕的主意。

  • +0

    我其次。鉴于Java和PL/SQL的*完全*不同的范例,即使您在转换器中付出了很多努力,并且在经过无数个月的努力之后以某种方式使其工作,您将最终得到大量糟糕的Java代码无论如何,这对于人类来说是不可读的。只需从头开始。 –