用于ANTLR4的智能感知的代码编辑器

时间:2015-07-20 11:06:19

标签: antlr antlr4 sharpdevelop code-editor nrefactory

寻找使用intellisense构建基于ANTLR4语法的代码编辑器的示例。 SharpDevelop提供所有代码编辑器功能,但是如果我们需要提供intellisense和Code Completion详细信息,那么我们需要编写自己的解析器。

需要样本,其中ANTLR4,SharpDevelop用于构建自定义语言的代码编辑器。

感谢。

2 个答案:

答案 0 :(得分:2)

我可以使用侦听器中的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);
            }
        }

}

答案 1 :(得分:0)

我已经将Jide CodeEditor与antlr4一起使用,它似乎工作正常但是花了一些时间才能将它组合在一起。我生成错误和关键字以从解析器突出显示。我使用侦听器进行解析等,并使用访问者来执行语言。不熟悉SharpDevelop