【问题标题】:Is there a version of Javacc that outputs javascript code?是否有输出 javascript 代码的 Javacc 版本?
【发布时间】:2012-10-24 11:03:31
【问题描述】:

我正在寻找一个解析器生成器,它接受 Javacc 语法文件 (.jj) 并在 Javascript(而不是 Java)中生成解析器。这样的事情存在吗?或者,将 .jj 文件转换为 ANTLR(可以输出 Javascript)可以理解的文件会有多困难?

【问题讨论】:

标签: java javascript parsing antlr javacc


【解决方案1】:

我正在寻找一个解析器生成器,它接受 Javacc 语法文件 (.jj) 并在 Javascript(而不是 Java)中生成解析器。这样的事情存在吗?

显然,没有。

或者,将 .jj 文件转换为 ANTLR(可以输出 Javascript)可以理解的文件会有多困难?

这将是非常重要的,您需要手动完成。但实际难度可能取决于您尝试转换的语法。


值得注意的是,还有其他解析器生成器在 Javascript 中输出解析器。 (而且,不,我不会列出它们或推荐一个!)

显然,输入语言将不同于 Javacc 输入。

【讨论】:

【解决方案2】:

只要只使用 JDK 的特定子集,Google 的 GWT 就会将 java 代码编译为 JavaScript。我也不确定它带来了多少特定于 GWT 的杂物。但这可能是一种可能性:使用 javacc 生成 java 代码,然后 GWT 将其转换为 JavaScript。

【讨论】:

  • 有趣的解决方案。我过去做过很多 GWT 工作,所以这是可能的。然而,生成一个“本机”Javascript 解析器会更好。将不得不看看转换为 ANRLR 有多难。
  • @DavidTinker 是的,我只会将其用作最后的努力或临时努力。但我想我至少会提到它! :)
  • 确实是个创意!但是,我想 JavaCC(或任何其他解析器生成器)会使用大量来自 java.io 包的类,我猜 GWT 无法处理这些类,对吧?
  • 可能,虽然取决于抽象它可能有点可挽救?不知道。
  • @BartKiers GWT/JavaCC 能够使用 IO 抽象。在 6.1 版之前,不支持此功能(没有 hack)。在 6.1 中,IO 层被包装,因此您可以通过带有自定义接口的流或字符串进行解析。
【解决方案3】:

我最近向 JavaCC 添加了对 GWT 兼容解析器目标的支持(不依赖于 Java IO 类)。我最近写了两篇关于如何使用 JavaCC 以便可以通过 GWT 生成 JavaScript 解析器的博客。链接如下:

Building parsers for the web with JavaCC & GWT (My blog post)

JavaCC 6.1 Development Build

【讨论】:

    【解决方案4】:

    如果您不介意重写语法, 我用 Kotlin 通用代码编写了一个解析器构建器,所以它可以在 JavaScript 平台上运行。

    语法语法相当简单,类似EBNF。

    您可以在此处查看详细信息,如果您想尝试一下,可以查看在浏览器中运行的演示链接。

    https://medium.com/@dr.david.h.akehurst/a-kotlin-multi-platform-parser-usable-from-a-jvm-or-javascript-59e870832a79

    【讨论】:

      猜你喜欢
      • 2022-10-21
      • 2017-10-09
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 2023-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多