2014-08-28 51 views
0

我已經lexer grammar稱爲BasicTokens其設置爲我的語言基本令牌,令牌有像nulltruefalse是否有可能使Antlr4從基本語法詞法分析器生成詞法分析器,而不是生成Lexer?

現在,當我創建解析器語法說BasicGrammar其中進口是指BasicTokens和另一個叫語法其中InheritedGrammar進口BasicGrammar

當Antlr4爲InheritedGrammar生成解析器時,它包含了所有已在BasicGrammar中定義的規則。

有沒有辦法讓Antlr只描述在InheritedGrammar中生成的規則,而不是在BasicGrammar中,而且還繼承了BasicGrammarParser而不是Parser

回答

1

由於ANTLR 4實現導入的方式,這是不可能的。

如果語法x進口語法y,操作行爲如下:

  1. 負載語法y(和它的所有規則)。
  2. 將規則從語法x添加到規則集合。如果發生任何名稱衝突,請將y中的規則替換爲x中的規則。

當您到達代碼生成器時,規則層次結構完全展平。

+0

有沒有辦法在不導入的情況下引用語法'​​y'? – 2014-08-28 21:44:41

相關問題