2011-05-13 51 views
8

我正在寻找用JavaScript语言编写的Java源代码解析器的实现。你知道任何?用JavaScript编写的Java解析器

+2

为了什么目的?解释代码并运行它?用HTML着色它?将其映射到JSON对象? – Jeff 2011-05-13 14:57:54

+2

你究竟想要做什么? – 2011-05-13 14:58:00

+0

@Jeff在结果中,我希望有某种抽象语法树。 – 2011-05-13 15:03:04

回答

9

看一看ANTLR可以了Javascript为目标,与Java 1.5的语法在http://www.antlr.org/grammar/1152141644268/Java.g

编辑:链接停止工作 - 尝试https://github.com/antlr/grammars-v4/blob/master/java/Java.g4 :)

+0

嗯......好主意!谢谢你,克里斯。但是,我不确定这种解析器的性能足以解析大量的源代码。 – 2011-05-13 15:38:28

+1

好的。这不是我所期望的解决方案,但目前它只是解决这个问题的解决方案。 – 2011-05-13 16:47:39

+0

@Eliah:“......不确定......大量的源代码”ANTLR总体上产生了非常高效的解析器。 (我个人的选择是为了它,而不是反对它。)我怀疑唯一能找到的方法是生成这样一个解析器并尝试它。如果你担心,为什么不使用Java或C++来做到这一点? – 2015-09-08 08:19:05

-3

试试Rhino引擎?

+3

OP正在寻找其他方法。 – 2011-05-13 15:01:01

+4

Rhino解决了相反的问题:它在Java环境中解析JavaScript。 – 2011-05-13 15:11:44

3

我不知道一个Java解析器本身的,但这里有一些Java脚本解析器生成:

如果其中一个准备黄金时间,您应该能够将Java语法翻译成必需的形式,然后使用PGS生成Java解析器的JavaScript。

当然,这只会给你一个解析器。如果你想做类型分析(正如你的评论似乎在说),那不是解析器所做的。

+0

谢谢您的回复,斯蒂芬。我正在使用其中一些解析器生成器。我认为它的性能不足以用C++语法(比如Java)解析大量的代码,不幸的是。 – 2011-05-13 15:25:58

+2

@Eliah - 这看起来可能与直觉相反,但生成的解析器往往比手写解析器更快,特别是在PGS成熟的情况下。 – 2011-05-13 15:35:11

+1

我注意到ANTLR也会在Javascript中生成解析器。 – 2011-05-13 16:10:07