【问题标题】:ANTLR JavaScript TargetANTLR JavaScript 目标
【发布时间】:2010-03-29 18:49:32
【问题描述】:

我一直在使用 ANTLR 为带有 Java 目标的标记语言生成解析器 + 树语法,效果很好。现在我正试图让 JavaScript 中的目标在我的网络浏览器中使用它。

但是,我无法找到任何关于如何执行此操作的好的文档。我将 Eclipse 与 ANTLR IDE 一起使用,当我将语言指定为 JavaScript 时,出现以下错误。

这一行有多个标记

  • (10):内部错误:组 JavaScript 不满足接口 ANTLRCore:这些模板上的参数不匹配 [treeParser(grammar, name, scopes, tokens, tokenNames, globalAction, rules, numRules, bitsets, labelType, ASTLabelType , 超类, 成员, filterMode)]

  • (10):内部错误:java.util.NoSuchElementException:没有这样的属性:模板上下文中的 filterMode [treeParser]

如果有人能帮我解决这个问题,或者指出一些我可以阅读的关于使用 ANTLR 的 JavaScript 目标的材料,那就太好了。

谢谢

【问题讨论】:

  • 我现在实际上能够在 JavaScript 中生成解析器,它可以很好地识别事物。但是当我尝试在 JavaScript 目标中生成 tree walker 时,它无法生成。而且我认为主要原因是上面列出的错误2。
  • 我不确定您尝试使用的是哪个版本的 ANTLR 版本,但我在尝试使用的官方版本中看到了相同的错误。我刚刚从 perforce 服务器获得了 ANTLR tar 并用 maven 构建了它,而 javascript 的东西似乎对我有用——至少用我公认的微不足道的语法。
  • 我知道错误是什么。 JavaScript 目标在 ANTLR 的最新版本中被破坏,这导致了这个问题。解决方案是要么构建源代码,要么使用早期版本。

标签: javascript antlr


【解决方案1】:

大约 3 个月前发布到 GitHub 的 ANTLR4 有一个新的 JS Lang 目标:

antlr/antlr4-javascript

它还没有集成到正式版本中,但你可以将它放入最新的 ANTLR4 代码库并自己重新编译 ANTLR。

【讨论】:

  • antlr4-javascript 项目现在有基于浏览器的测试并且更加充实。在 JavaScriptTarget 的源代码中,预期的发布目标似乎是 ANTLR 4.5。
  • 这里有一个更好的最新信息链接:github.com/antlr/antlr4/blob/master/doc/javascript-target.md
  • 感谢更新链接。我已经更新了我的答案。
【解决方案2】:

您应该使用最新版本 (3.3),在以前的版本中,javascript 目标未正确集成。仍然存在一些错误,但您可以看到一个工作示例,其中包含一些指导和链接 http://blog.barvinograd.com/2011/03/online-function-grapher-formula-parser-part-2/

【讨论】:

    【解决方案3】:

    似乎 JavaScript 目标在 3.4 发行版中再次被破坏。 3.3 对我来说工作正常。

    【讨论】:

      【解决方案4】:

      我一直在尝试让它工作,并且在阅读此内容后才成功生成 .js 文件:

      http://www.antlr3.org/pipermail/antlr-interest/2011-August/042417.html

      来自帖子:

      下面是如何开始使用 ANTLR 和 JavaScript 后端:

      1. 下载ANTLRWorks 1.2.2:http://antlr.org/download/antlrworks-1.2.2.jar>。 JavaScript 目标 仅当 IDE 生成词法分析器和解析器代码时才有效(请参阅 http://antlr.1301665.n2.nabble.com/maven-plugin-and-javascript-target-td3647109.html>)。 如果您尝试从命令行运行 ANTLR v3.1,您将看到错误 消息“错误(10):内部错误:组 JavaScript 不满足 接口 ANTLRCore”。
      2. 下载 JS 运行时分布: http://antlr.org/download/antlr-javascript-runtime-3.1.zip

      从那时起,您可以使用 ANTLRWorks 1.2.2 生成词法分析器和解析器 通过从“生成”菜单中选择“生成代码”来生成代码。 ANTLRWorks 将 将生成的文件放入文件夹中的output 目录中 语法文件驻留。

      注意,如果生成过程中出现错误,那么由于某种原因 “生成代码”操作不再有效。只需关闭语法并 从“打开最近”菜单重新打开它。

      【讨论】:

        猜你喜欢
        • 2012-01-02
        • 1970-01-01
        • 2016-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多