使用MPLex实现语法高亮显示的功能

简介:

没有研究过其它论坛之类的程序是如何实现语法高亮显示这个功能的,可能有的人是使用正则表达式。正则表达式当然很容易理解,关键字、注释和字符串等内容应该是需要不同的正则表达式,在做语法高亮显示的时候,每一个单词都进行使用关键字正则表达式进行匹配,最后全文进行注释和字符串模式匹配。

这里我介绍另外一种方式来实现语法高亮显示,在Visual Studio SDK里面,提供了一个工具叫做MPLexMPPG。是Visual Studio为集成新的编程语言,新集成进来的编程语言可以使用这两个工具实现语法高亮显示,和智能下拉框等功能。如果你有过LexYacc的使用经验的话,实际上MPLex就是LexC#版本,而MPPG就是Yacc对应的C#版本。前者是词法处理的工具,后者是语法处理的工具。

我们只用MPLex,因为语法高亮显示只涉及到词法处理,不需要考虑语法的问题当然啦,如果你要达到类似Visual Studio那样,类名都可以高亮的显示的效果,可以考虑实现语法处理和语义处理。

原理今天来不及写了,有兴趣请下载下面的代码编译执行就好了,可以直接在里面敲C#代码。由于我在处理即时输入的算法是每次只处理一行文本(大部分情况),所以在处理即时多行注释的时候有Bug

/Files/killmyday/Coder.zip



本文转自 donjuan 博客园博客,原文链接: http://www.cnblogs.com/killmyday/archive/2010/01/23/1654554.html  ,如需转载请自行联系原作者

相关文章
只要100行代码,实现文本编辑器中的草稿箱功能
大家都用过网页中的富文本编辑器,编辑器通常都会附带草稿箱、撤销等操作。下面用一段代码来实现一个这样的功能。假设,我们在GPer社区中发布一篇文章,文章编辑的过程需要花很长时间,中间也会不停地撤销、修改,甚至可能要花好几天才能写出一篇精品文章,因此可能会将已经编辑好的内容实时保存到草稿箱。
148 1
SVG VSCode 插件(语法提示补全、预览插件)
SVG VSCode 插件(语法提示补全、预览插件)
1606 0
WPF使用AvalonEdit实现代码高亮显示、搜索、替换功能
很多工程软件拥有自己定义的脚本语言,作为程序员用惯了具有高亮显示和智能提示功能的编辑器,所以针对特定的脚本自己开发一个编辑器。主要采用WPF、C#语言以及AvalonEdit控件。
486 0
WPF使用AvalonEdit实现代码高亮显示、搜索、替换功能
用控件仅一条指令实现界面换肤和多语言版本(YFSkins)
这一段时间做程序,一直在做界面方面的工作,刚开始是简单的贴图操作,后来感觉不通用,代码重用性不好,并且要做很多基本工作
634 0
pyqt5的QCompleter自动补全 使用模板
使用QCompleter类,就可以实现自动补全功能
2954 0
VSCode插件开发全攻略(五)跳转到定义、自动补全、悬停提示
更多文章请戳[VSCode插件开发全攻略系列目录导航](https://www.atatech.org/articles/121864)。 # 跳转到定义 跳转到定义其实很简单,通过`vscode.languages.registerDefinitionProvider`注册一个`provider`,这个`provider`如果返回了`new vscode.Location()`就表示
xal
5062 0