我需要制作一个可以进行语法高亮显示的程序和类似于visual studio的下拉式自动完成功能。 Id也希望能够在可能的情况下折叠和扩展代码段。
我在使用富文本编辑器和使用reg表达式应用着色之前尝试对此进行编码。这是非常耗费处理器的,并且会导致较大文件的延迟。然后我想也许我真的错了。
所以我的问题是
如果你必须在VB.net或C#中编写类似程序的视觉工作室。你会怎么做呢?
答案 0 :(得分:7)
几乎所有在源代码上运行的工具(例如IDE编辑器,编译器)都不会将代码视为通过正则表达式解析的文本,因为这种方法在现实世界范围内不起作用。这些工具在称为抽象语法树(AST)的源代码模型上运行,该代码将代码建模为树结构。在用C语言编写的程序中,该树的根节点是执行开始的主要方法,该根的子节点是传递给main方法的参数等。
当对代码执行操作时(例如,突出显示语法,重构),它们使用类似访问者模式的树在树上执行,并且源文件与AST保持同步。
当代码更新时,使用词法分析器将其解析为标记,然后使用解析器对其进行分析,如果遵循语言的语法规则,则更新AST。要了解有关解析器,词法分析器,语法和AST的更多信息,建议您查看ANTLR。
答案 1 :(得分:5)
如果你真的想从头开始,你可以将源代码下载到这个免费的开源IDE ,它提供了在像Visual Studio这样的IDE中找到的相同类型的功能: / p>
#develop (short for SharpDevelop)。
它应该包含您需要的代码设计。
享受,
答案 2 :(得分:1)
我为visual studio本身构建一个插件或dsl。或者,如果许可/成本是一个问题,我会使用Notepad ++。为什么重新发明轮子?
答案 3 :(得分:1)
您是否考虑使用语法突出显示组件,例如Actipro's SyntaxHighlighter?
答案 4 :(得分:1)
如果您想使用Visual Studio语言服务路线,Managed Package Framework是一个很好的起点:http://msdn.microsoft.com/en-us/library/bb166360.aspx
它附带Visual Studio SDK。我相信有一个基于正则表达式的例子,但我并不是百分之百确定。
请记住,Visual Studio shell是可以自由重新分发的,它可能会为您的目的带来很多开销。
答案 5 :(得分:0)
我扩展Visual Studio以支持我需要的语言。我有一篇博客讨论了一些技术(特别是使用ANTLR进行解析服务)(link)。
我支持的语言:
去处: