【问题标题】:Java parser written in JavaScript用 JavaScript 编写的 Java 解析器
【发布时间】:2011-08-25 00:37:10
【问题描述】:

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

【问题讨论】:

  • 出于什么目的?解释代码并运行它?在 HTML 中着色?将其映射到 JSON 对象中?
  • 你到底想做什么?
  • @Jeff 在结果中我想要某种抽象语法树。
  • @Rocket 我对它感兴趣是出于教育目的。首先,我想估计一下现代 JavaScript 引擎在解析具有严格类型系统的语言方面的能力。
  • 我想我还没见过。我见过语法荧光笔,但从未见过解析器。

标签: java javascript parsing compilation


【解决方案1】:

试试 Rhino 引擎?

【讨论】:

  • OP 正在寻找相反的方法。
  • Rhino 解决了相反的问题:它在 Java 环境中解析 JavaScript。
【解决方案2】:

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

如果其中之一已准备好进入黄金时段,您应该能够将 Java 语法翻译成必要的形式,然后使用 PGS 生成 Javascript 中的 Java 解析器。

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

【讨论】:

  • 感谢您的回复,斯蒂芬。我正在使用其中一些解析器生成器。不幸的是,我认为它的性能不足以解析大量使用类似 C++ 的语法(如 Java)的代码。
  • @Eliah - 这似乎违反直觉,但生成的解析器往往比手写解析器更快,尤其是在 PGS 成熟的情况下。
  • 我注意到ANTLR也会在Javascript中生成解析器。
  • @Eliah:您似乎担心解析复杂的(“C++-like”)语法。你关心什么特定的语法,为什么你认为现代解析器生成器不能处理它? (C++ 本身就是一个联盟,确实给现代解析器生成器带来了真正的麻烦,stackoverflow.com/questions/243383/… 但 Java 不是 C++)。
【解决方案3】:

看看ANTLR,它可以将Javascript作为目标,Java 1.5语法在http://www.antlr.org/grammar/1152141644268/Java.g

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

【讨论】:

  • 嗯...好主意!谢谢你,克里斯。但是,我不确定这种解析器的性能是否足以解析大量源代码。
  • 好的。这不是我期望的解决方案,但目前它是唯一解决这个问题的解决方案。
  • @Eliah:“……不确定……大量源代码” ANTLR 通常会产生非常高效的解析器。 (我个人的赌注是支持它,而不是反对它。)我怀疑真正找出答案的唯一方法是生成这样一个解析器并尝试它。如果您担心,为什么不使用 Java 或 C++ 来做呢?
【解决方案4】:

这是使用 PEG 语法的 Java 1.7 解析器 http://mazko.github.io/jsjavaparser/ Roman R Redziejowski http://www.romanredz.se/Mouse/Java.1.7.peg

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 2020-10-30
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2011-06-24
    相关资源
    最近更新 更多