【问题标题】:Why ANTLR generated parser has not parse/start/begin functions?为什么 ANTLR 生成的解析器没有解析/启动/开始功能?
【发布时间】:2020-03-30 18:47:10
【问题描述】:

我正在尝试使用 ANTLR 为一阶逻辑的简约语法生成解析器,可以在 ANTLR 源代码中找到:https://github.com/antlr/grammars-v4/blob/master/fol/fol.g4

奇怪的是,生成的 Parser 没有 parsebeginstart 方法,在每个教程中都可以看到。侦听器也会生成,但我有兴趣获取解析树(供以后操作),此外,许多提到侦听器的教程,无论如何都使用提到的 3 个函数之一。出了什么问题?有解析器生成选项吗?

上面提到的方法不包含在生成的代码中,是的,它们可能在基类中,但是 Eclipse 将它们视为错误(未定义的方法)。

我使用的是 antlr 4.8。

【问题讨论】:

    标签: parsing antlr antlr4


    【解决方案1】:

    生成的解析器类将具有与您在语法中定义的规则同名的方法。因此,如果您的语法有一条名为 foobar 的规则,并且您想根据该规则解析您的输入,您可以调用 parser.foobar() 来执行此操作。

    如果您的教程中的代码调用了一个名为 parsebeginstart 的方法,那么该教程中的语法几乎肯定会定义一个具有该名称的规则。

    在您链接的语法中,主要规则称为condition,所以这是您应该调用的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 2018-09-22
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      相关资源
      最近更新 更多