我使用一种类似于 JavaScript 的语言来进行销售点设备编程。这种语言真的很糟糕,我正在尝试用 Java 构建某种框架,将 Java 代码“转换”成这种语言。
我使用了一些正则表达式并直接解析了 Java 文件。现在我发现这可能不是正确/更好的方法,我正在寻找替代方法。有什么工具可以帮助我这样做吗?
我认为我应该使用一些高级反射实用程序,例如 ASM (http://asm.ow2.org/index.html)。性能并不重要,因此可能是这样。你怎么看?
我使用一种类似于 JavaScript 的语言来进行销售点设备编程。这种语言真的很糟糕,我正在尝试用 Java 构建某种框架,将 Java 代码“转换”成这种语言。
我使用了一些正则表达式并直接解析了 Java 文件。现在我发现这可能不是正确/更好的方法,我正在寻找替代方法。有什么工具可以帮助我这样做吗?
我认为我应该使用一些高级反射实用程序,例如 ASM (http://asm.ow2.org/index.html)。性能并不重要,因此可能是这样。你怎么看?
ANTLR是一个了不起的解析器生成器。我会调查一下。它有一个已经可用的 Java 语法;我不确定它是 Java 5、6 还是 7(我猜是 5)。
一旦你有了 AST,你的问题将是遍历树并生成目标代码。祝你好运。
我自己从来没有做过任何事情,但是您可以查看altjs.org中列出的框架之一,特别是在 Java Ports 部分下,并查看其中一个框架并根据您的特定需求对其进行修改.
至少有以下三种方式:
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/。