尋找樣本以構建基於ANTLR4語法的代碼編輯器和智能感知。 SharpDevelop提供了所有的代碼編輯器功能,但是如果我們需要提供智能感知和代碼完成細節,那麼我們需要編寫自己的解析器。具有intellisense代碼編輯器的ANTLR4
需要示例ANTLR4,SharpDevelop用於構建自定義語言的代碼編輯器。
謝謝。
尋找樣本以構建基於ANTLR4語法的代碼編輯器和智能感知。 SharpDevelop提供了所有的代碼編輯器功能,但是如果我們需要提供智能感知和代碼完成細節,那麼我們需要編寫自己的解析器。具有intellisense代碼編輯器的ANTLR4
需要示例ANTLR4,SharpDevelop用於構建自定義語言的代碼編輯器。
謝謝。
我可以使用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);
}
}
}
我已經用antlr4的Jide CodeEditor,它似乎工作正常,但需要一些時間才能把它放在一起。我從解析器中生成突出顯示的錯誤和關鍵字。我使用監聽器進行解析等,並使用訪問者來執行語言。不熟悉SharpDevelop
PS antlr4支持Java,就不敢說了其他語言。在我的工作中,我也從antlr監聽器生成代碼摺疊。 –
謝謝你的快速回答。我正在尋找關於如何使用ANTLR實現CodeCompletion的選項。 – Saqwes