为什么 ANTLR 生成的解析器没有 parse/start/begin 函数?

Why ANTLR generated parser has not parse/start/begin functions?

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

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

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

我正在使用 antlr 4.8。

生成的解析器 class 将具有与您在语法中定义的规则同名的方法。所以如果你的语法有一个名为 foobar 的规则并且你想根据该规则解析你的输入,你会调用 parser.foobar() 来这样做。

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

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