Parsing 具有自动完成功能的代码编辑器

Parsing 具有自动完成功能的代码编辑器,parsing,autocomplete,Parsing,Autocomplete,我需要为自己的简单语言创建一个代码编辑器: className.MethodName(parameterName=2,…) 我已经使用ANTLR工具创建了相应的语法和自动生成解析器。现在我想要一个类、方法、变量和参数名的自动完成。这个列表应该是上下文相关的,例如“class”。它应该显示“class.Method”(“-parameters”)的方法和参数。我要分析文本并根据光标所在的节点显示列表。问题是,对于“aaa.bbb”(“解析器生成错误而不是语法树”)这样的不完整代码。 你知道怎么解决

我需要为自己的简单语言创建一个代码编辑器:

className.MethodName(parameterName=2,…)

我已经使用ANTLR工具创建了相应的语法和自动生成解析器。现在我想要一个类、方法、变量和参数名的自动完成。这个列表应该是上下文相关的,例如“class”。它应该显示“class.Method”(“-parameters”)的方法和参数。我要分析文本并根据光标所在的节点显示列表。问题是,对于“aaa.bbb”(“解析器生成错误而不是语法树”)这样的不完整代码。 你知道怎么解决这个问题吗?
也许我走错了路,我不应该解析代码来显示autocomplete?

Mac上的TextMate或者其他平台上的它的克隆版怎么样?我刚刚开始使用它,但它似乎有一个非常开放的插件工具集。

您需要解析至少部分代码来知道显示什么

您或者需要一个允许解析的解析器,直到它找到一个错误,然后再继续解析(或者干脆忽略它,并尝试自己修复它以继续解析——但这里变得非常困难,因此您可以访问最后一个节点并使用您的语法和现有语法树来自动完成它,或者缓存最新的语法树,并使用类似regex的内容来查看何时自动完成并使用缓存来查看要执行的操作。)完成

后面的建议可能更简单,但缺点是缓存可能在您需要完成时已过期(即:您可以在文件中创建一个新类,在文件没有错误之前,基于该类的所有完成都将不可用)

Sidenode:看到您进行解析,您可能会感兴趣,但它们并不能帮助您解决这个问题