用JavaScript编写的Java解析器
看一看ANTLR可以了Javascript为目标,与Java 1.5的语法在http://www.antlr.org/grammar/1152141644268/Java.g
编辑:链接停止工作 - 尝试https://github.com/antlr/grammars-v4/blob/master/java/Java.g4 :)
嗯......好主意!谢谢你,克里斯。但是,我不确定这种解析器的性能足以解析大量的源代码。 – 2011-05-13 15:38:28
好的。这不是我所期望的解决方案,但目前它只是解决这个问题的解决方案。 – 2011-05-13 16:47:39
@Eliah:“......不确定......大量的源代码”ANTLR总体上产生了非常高效的解析器。 (我个人的选择是为了它,而不是反对它。)我怀疑唯一能找到的方法是生成这样一个解析器并尝试它。如果你担心,为什么不使用Java或C++来做到这一点? – 2015-09-08 08:19:05
试试Rhino引擎?
OP正在寻找其他方法。 – 2011-05-13 15:01:01
Rhino解决了相反的问题:它在Java环境中解析JavaScript。 – 2011-05-13 15:11:44
我不知道一个Java解析器本身的,但这里有一些Java脚本解析器生成:
- http://jscc.jmksf.com/
- http://code.google.com/p/cruiser/wiki/Parse
- http://pegjs.majda.cz/
- http://zaach.github.com/jison/
- 和更多的列表here包括PGS的写在其他语言和目标Javascript ...
如果其中一个准备黄金时间,您应该能够将Java语法翻译成必需的形式,然后使用PGS生成Java解析器的JavaScript。
当然,这只会给你一个解析器。如果你想做类型分析(正如你的评论似乎在说),那不是解析器所做的。
谢谢您的回复,斯蒂芬。我正在使用其中一些解析器生成器。我认为它的性能不足以用C++语法(比如Java)解析大量的代码,不幸的是。 – 2011-05-13 15:25:58
@Eliah - 这看起来可能与直觉相反,但生成的解析器往往比手写解析器更快,特别是在PGS成熟的情况下。 – 2011-05-13 15:35:11
我注意到ANTLR也会在Javascript中生成解析器。 – 2011-05-13 16:10:07
下面是一个使用Java的PEG解析器1.7 http://mazko.github.io/jsjavaparser/ grammar by Roman R Redziejowski http://www.romanredz.se/Mouse/Java.1.7.peg
为了什么目的?解释代码并运行它?用HTML着色它?将其映射到JSON对象? – Jeff 2011-05-13 14:57:54
你究竟想要做什么? – 2011-05-13 14:58:00
@Jeff在结果中,我希望有某种抽象语法树。 – 2011-05-13 15:03:04