2015-07-20 33 views
0

尋找樣本以構建基於ANTLR4語法的代碼編輯器和智能感知。 SharpDevelop提供了所有的代碼編輯器功能,但是如果我們需要提供智能感知和代碼完成細節,那麼我們需要編寫自己的解析器。具有intellisense代碼編輯器的ANTLR4

需要示例ANTLR4,SharpDevelop用於構建自定義語言的代碼編輯器。

謝謝。

回答

1

我可以使用Listener中的GetExpectedTokensWithinRule API從ANTLR4中獲得期望的令牌,並將它們轉換爲令牌。

僞代碼看起來像這樣

public class MyGrammarListener : MyGrammarBaseListener 
{ 
     public MyGrammarListener(MyGrammarParser parser) 
     { 
      this.Parser = parser; 
     } 

     public override void EnterXXXXX(XXXXX_Context context) 
     { 
      IntervalSet set = Parser.GetExpectedTokensWithinCurrentRule(); 
      base.EnterXXXXX(context); 
      foreach (int token in set.ToIntegerList()) 
      { 
       // Returns the expected tokens. 
       string data = Parser.Vocabulary.GetLiteralName(token); 
      } 
     } 

}

0

我已經用antlr4的Jide CodeEditor,它似乎工作正常,但需要一些時間才能把它放在一起。我從解析器中生成突出顯示的錯誤和關鍵字。我使用監聽器進行解析等,並使用訪問者來執行語言。不熟悉SharpDevelop

+0

PS antlr4支持Java,就不敢說了其他語言。在我的工作中,我也從antlr監聽器生成代碼摺疊。 –

+0

謝謝你的快速回答。我正在尋找關於如何使用ANTLR實現CodeCompletion的選項。 – Saqwes