2011-06-20 29 views
14

我在antlr中構建了一個解析器,它編譯爲一個可用的java目標。當我爲c#2重定向時,它會生成一個解析器,其中所有解析方法都是私有的,但標記爲[GrammarRule(「rulename」)]屬性。爲什麼antlr3 c#解析器方法是私有的?

實際調用解析器的方法是什麼?

我使用ANTLR 3.3 2010年11月30日12時45分三十秒

感謝, 安迪

回答

20

使至少一個解析器規則 「公開」 是這樣的:

grammar T; 

options { 
    language=CSharp2; 
} 

public parse 
    : privateRule+ EOF 
    ; 

privateRule 
    : Token+ 
    ; 

// ... 

你然後可以在生成的解析器上調用parse()

protectedprivate(默認值,如果沒有指定)也支持。

+2

謝謝,我找不到任何文檔來達到這個效果。 –

+0

@安迪,不客氣。是的,它的工作方式與您可以使用這些關鍵字但未實現的Java目標稍有不同。 ANTLR的Java目標默認生成'public'修飾符。所以如果你在某個解析器規則之前放置一個'public',它應該仍然適用於Java目標。 –

相關問題