gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 17:21:55 25 4
gpt4 key购买 nike

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

className.MethodName(parameterName = 2, ... )

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

最佳答案

您至少需要解析代码的某些部分才能知道要显示什么。

您要么需要一个允许解析的解析器,直到它发现错误并稍后继续(或者甚至只是忽略它并尝试自行修复它以便能够继续解析 - 但这里变得非常困难,因此您可以访问最后一个node 并使用您的语法和现有的语法树来自动完成它,或者您缓存最新的语法树并使用诸如 regex 之类的东西来查看何时自动完成并使用缓存来查看要自动完成的内容。

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

Sidenode:看你在做解析,你可能对Parsing Expression Grammars感兴趣,不过,它们并不能完全帮助您解决这个问题。

关于parsing - 具有自动完成功能的代码编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/314199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com