14
我在antlr中構建了一個解析器,它編譯爲一個可用的java目標。當我爲c#2重定向時,它會生成一個解析器,其中所有解析方法都是私有的,但標記爲[GrammarRule(「rulename」)]屬性。爲什麼antlr3 c#解析器方法是私有的?
實際調用解析器的方法是什麼?
我使用ANTLR 3.3 2010年11月30日12時45分三十秒
感謝, 安迪
我在antlr中構建了一個解析器,它編譯爲一個可用的java目標。當我爲c#2重定向時,它會生成一個解析器,其中所有解析方法都是私有的,但標記爲[GrammarRule(「rulename」)]屬性。爲什麼antlr3 c#解析器方法是私有的?
實際調用解析器的方法是什麼?
我使用ANTLR 3.3 2010年11月30日12時45分三十秒
感謝, 安迪
使至少一個解析器規則 「公開」 是這樣的:
grammar T;
options {
language=CSharp2;
}
public parse
: privateRule+ EOF
;
privateRule
: Token+
;
// ...
你然後可以在生成的解析器上調用parse()
。
protected
和private
(默認值,如果沒有指定)也支持。
謝謝,我找不到任何文檔來達到這個效果。 –
@安迪,不客氣。是的,它的工作方式與您可以使用這些關鍵字但未實現的Java目標稍有不同。 ANTLR的Java目標默認生成'public'修飾符。所以如果你在某個解析器規則之前放置一個'public',它應該仍然適用於Java目標。 –