没有研究过其它论坛之类的程序是如何实现语法高亮显示这个功能的,可能有的人是使用正则表达式。正则表达式当然很容易理解,关键字、注释和字符串等内容应该是需要不同的正则表达式,在做语法高亮显示的时候,每一个单词都进行使用关键字正则表达式进行匹配,最后全文进行注释和字符串模式匹配。
这里我介绍另外一种方式来实现语法高亮显示,在Visual Studio SDK里面,提供了一个工具叫做MPLex和MPPG。是Visual Studio为集成新的编程语言,新集成进来的编程语言可以使用这两个工具实现语法高亮显示,和智能下拉框等功能。如果你有过Lex和Yacc的使用经验的话,实际上MPLex就是Lex的C#版本,而MPPG就是Yacc对应的C#版本。前者是词法处理的工具,后者是语法处理的工具。
我们只用MPLex,因为语法高亮显示只涉及到词法处理,不需要考虑语法的问题—当然啦,如果你要达到类似Visual Studio那样,类名都可以高亮的显示的效果,可以考虑实现语法处理和语义处理。
原理今天来不及写了,有兴趣请下载下面的代码编译执行就好了,可以直接在里面敲C#代码。由于我在处理即时输入的算法是每次只处理一行文本(大部分情况),所以在处理即时多行注释的时候有Bug:
下一篇介绍原理。