0

我使用一种类似于 JavaScript 的语言来进行销售点设备编程。这种语言真的很糟糕,我正在尝试用 Java 构建某种框架,将 Java 代码“转换”成这种语言。

我使用了一些正则表达式并直接解析了 Java 文件。现在我发现这可能不是正确/更好的方法,我正在寻找替代方法。有什么工具可以帮助我这样做吗?

我认为我应该使用一些高级反射实用程序,例如 ASM (http://asm.ow2.org/index.html)。性能并不重要,因此可能是这样。你怎么看?

4

4 回答 4

4

ANTLR是一个了不起的解析器生成器。我会调查一下。它有一个已经可用的 Java 语法;我不确定它是 Java 5、6 还是 7(我猜是 5)。

一旦你有了 AST,你的问题将是遍历树并生成目标代码。祝你好运。

于 2013-01-16T10:41:33.990 回答
1

我建议用JavaCC或类似工具解析Java语法,很久以前写的Java语法描述。它可以用来编写编译器,所以可能也可以用来编写转换器。正则表达式不太擅长解析编程语言。

于 2013-01-16T10:39:50.550 回答
0

我自己从来没有做过任何事情,但是您可以查看altjs.org中列出的框架之一,特别是在 Java Ports 部分下,并查看其中一个框架并根据您的特定需求对其进行修改.

于 2013-01-16T10:38:50.380 回答
0

至少有以下三种方式:

a) 解释字节码。JS 中有一些现有的解释器,例如 DoppioVM。它们可能非常慢。

b) 将字节码编译为 JS。我至少见过一次这样的尝试,结果 JS 很丑,而且速度不是很快。但是这种方法可以有很好的性能(嗯,它可能会导致使用HashMap而不是JS对象等等)。最大的问题是恕我直言,当/如果重建。

编辑:好的,可能不是那么慢,但它很丑陋并且包含像j2js.invokeStatic("j2js.client.Engine", "getEngine()j2js.client.Engine", null);. 一个编译器是https://github.com/decatur/j2js-compiler

c) 将 Java 编译为 JS。您可以尝试 Google Web Toolkit 或http://j2s.sourceforge.net/

于 2013-01-20T12:17:03.027 回答