为什么Antlr3c#解析器方法是私有的?

为什么Antlr3c#解析器方法是私有的?,c#,antlr,antlr3,C#,Antlr,Antlr3,我正在antlr中构建一个解析器,它编译成一个工作的java目标。当我为c#2重定目标时,它会生成一个解析器,其中所有解析方法都是私有的,但标记有[GrammarRule(“rulename”)]属性 实际调用解析器的方法是什么 我正在使用ANTLR 3.3 2010年11月30日12:45:30 谢谢, Andy将至少一条解析器规则设置为“公共”,如下所示: grammar T; options { language=CSharp2; } public parse : priva

我正在antlr中构建一个解析器,它编译成一个工作的java目标。当我为c#2重定目标时,它会生成一个解析器,其中所有解析方法都是私有的,但标记有[GrammarRule(“rulename”)]属性

实际调用解析器的方法是什么

我正在使用ANTLR 3.3 2010年11月30日12:45:30

谢谢,
Andy

将至少一条解析器规则设置为“公共”,如下所示:

grammar T;

options {
  language=CSharp2;
}

public parse
  :  privateRule+ EOF
  ;

privateRule
  :  Token+
  ;

// ...
然后可以在生成的解析器上调用
parse()


还支持
受保护的
专用的
(如果未指定任何内容,则默认设置)。

谢谢,我找不到任何相关文档。@Andy,不客气。是的,它的工作原理与Java目标稍有不同,Java目标可以使用这些关键字,但没有实现。默认情况下,ANTLR的Java目标生成
public
修饰符。因此,如果您将
public
放在某个解析器规则之前,它仍然可以与Java目标一起工作。