用于将程序从平台A迁移到B的工具

时间:2009-07-04 10:14:09

标签: migration compilation

作为宠物项目,我正在考虑编写一个程序,将用A语言编写的应用程序迁移到语言B. A和B将是面向对象的语言。我认为这是一项非常艰巨的任务:映射相似的语言结构是可行的,但映射库概念将是一项非常漫长的任务。

我想知道使用什么工具,我知道这与编译有关,但我有点害怕使用Lex和Yacc以及所有这些东西。 我在考虑使用Eclipse Modeling Framework,它可以帮助我以可读的形式编写(应用程序代码)转换模型。 但首先我必须编写用于创建模型的解析器(并且还从语言语法创建元模型)。

是否存在可以让我的工作变得更轻松的工具?

6 个答案:

答案 0 :(得分:1)

您可以为TXLStratego/XT使用特殊的转换工具/语言。

此外,您可以查看并轻松尝试使用TXL迁移我的Java to PythonJava to Tcl项目。

您对映射库概念是正确的。这是一项艰巨而漫长的任务。这里有两种方式:

  • 将类库从语言A完全迁移到B
  • 将语言A中的类/函数迁移到语言B中的相应概念

您将选择的方法取决于您的目标和可用时间/资源。此外,在许多情况下,您不会进行一般A-> B迁移,这将涵盖所有可能的情况,您只需要转换一些项目/库/等。所以你会在你的特定情况下看到什么更适合使用类/库。

答案 1 :(得分:0)

我认为这几乎是不可能的,特别是作为个人项目。但是如果你要这样做,不要试图想出一个通用的解决方案,让自己的生活变得更加困难。选择两种特定的现实编程语言,研究它们之间转换的可能性。我想你会对这将会暴露的问题和问题的数量感到震惊。

答案 2 :(得分:0)

有一些工具可以直接迁移A和B的某些组合。

针对不同的语言和平台,有各种各样的逆向工程和代码生成工具。很难看到捕获源语言的所有语义的逆向工程工具,并且UML的语义没有很好地定义(因为它被设计为映射到不同的实现语言,它本身并没有为其定义完整的执行模型)。行为表示),因此您不太可能在工具之间进行逆向工程和生成代码。您可能会发现一个工具可以为您的A和B语言执行完全逆向工程和完整代码生成,因此可能能够到达某个地方。

一般来说,你不会在不同的平台上使用相同的习语,所以你更有可能在B上模仿A代码而不是与原生B解决方案相对应的东西。

答案 3 :(得分:0)

如果您想使用Java作为源语言(您尝试转换的语言),则可能使用Checkstyle AST(用于编写规则)。它为您提供了在源代码中完成的每个操作的树结构。这比编写自己的paser或使用正则表达式要容易得多。

您可以从checkstyle-4.4.jar运行com.puppycrawl.tools.checkstyle.gui.Main来启动解析Java源代码的Swing GUI。

答案 4 :(得分:0)

根据您的评论

  

我还不确定,但我认为源语言/框架将是Java / Swing,目标是一些RIA语言,如Flex或Javascript / Ajax框架。 - Alain Michel 3小时前

Google Web Toolkit可能值得一看。

答案 5 :(得分:0)