我使用类似于JavaScript的语言,用于销售点设备编程。这种语言确实很简单,我正在尝试用Java构建某种框架,将Java代码“转换”成这种语言。
我使用一些Regex并直接解析了Java文件。现在我发现这可能不是正确/更好的方式,我正在寻找替代方案。有没有工具可以帮助我这样做?
我认为我应该使用一些高级反射实用程序,如ASM(http://asm.ow2.org/index.html)。性能并不重要,因此可能就是这样。 你觉得怎么样?
答案 0 :(得分:4)
ANTLR是一个非常好的解析器生成器。我会调查一下。它有一个Java语法已经可用;我不确定它是Java 5,6还是7(我猜它是5)。
一旦你有了AST,你的问题就是走在树上并生成目标代码。祝你好运。
答案 1 :(得分:1)
我建议使用JavaCC或类似的工具Java grammar description解析Java语法很久以前。它可以用来编写编译器,所以可能也可以用来编写转换器。正则表达式在解析编程语言方面不是很好。
答案 2 :(得分:0)
我自己从未做过任何事情,但您可以查看altjs.org中列出的框架之一,特别是在Java Ports部分下,并查看其中一个框架并修改它们满足您的特定需求。
答案 3 :(得分: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/。