像代码应用程序一样编写Visual Studio的最佳方法

时间:2009-07-29 00:25:11

标签: visual-studio syntax-highlighting

我需要制作一个可以进行语法高亮显示的程序和类似于visual studio的下拉式自动完成功能。 Id也希望能够在可能的情况下折叠和扩展代码段。

我在使用富文本编辑器和使用reg表达式应用着色之前尝试对此进行编码。这是非常耗费处理器的,并且会导致较大文件的延迟。然后我想也许我真的错了。

所以我的问题是

如果你必须在VB.net或C#中编写类似程序的视觉工作室。你会怎么做呢?

6 个答案:

答案 0 :(得分:7)

几乎所有在源代码上运行的工具(例如IDE编辑器,编译器)都不会将代码视为通过正则表达式解析的文本,因为这种方法在现实世界范围内不起作用。这些工具在称为抽象语法树(AST)的源代码模型上运行,该代码将代码建模为树结构。在用C语言编写的程序中,该树的根节点是执行开始的主要方法,该根的子节点是传递给main方法的参数等。

当对代码执行操作时(例如,突出显示语法,重构),它们使用类似访问者模式的树在树上执行,并且源文件与AST保持同步。

当代码更新时,使用词法分析器将其解析为标记,然后使用解析器对其进行分析,如果遵循语言的语法规则,则更新AST。要了解有关解析器,词法分析器,语法和AST的更多信息,建议您查看ANTLR

答案 1 :(得分:5)

如果你真的想从头开始,你可以将源代码下载到这个免费的开源IDE ,它提供了在像Visual Studio这样的IDE中找到的相同类型的功能: / p>

#develop (short for SharpDevelop)

它应该包含您需要的代码设计。

alt text

享受,

答案 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)

我支持的语言:

  • UnrealScript(语法高亮,几乎所有Visual Studio支持的IntelliSense操作)
  • ANTLR grammars(语法高亮,基本智能感知)
  • StringTemplate功能模板语言(语法高亮,基本智能感知)
  • Chapel(语法高亮)

去处: