使用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  ,如需转载请自行联系原作者

相关文章
|
设计模式 Java 数据库连接
只要100行代码,实现文本编辑器中的草稿箱功能
大家都用过网页中的富文本编辑器,编辑器通常都会附带草稿箱、撤销等操作。下面用一段代码来实现一个这样的功能。假设,我们在GPer社区中发布一篇文章,文章编辑的过程需要花很长时间,中间也会不停地撤销、修改,甚至可能要花好几天才能写出一篇精品文章,因此可能会将已经编辑好的内容实时保存到草稿箱。
108 1
|
自然语言处理 数据可视化
Qt开发技术:Qt富文本(二)Qt文本光标操作、文档布局、富文本编辑、处理和Demo
Qt开发技术:Qt富文本(二)Qt文本光标操作、文档布局、富文本编辑、处理和Demo
Qt开发技术:Qt富文本(二)Qt文本光标操作、文档布局、富文本编辑、处理和Demo
|
2月前
如何切换Hbuild - X编辑器背景色,如何切换Hbuild - X编辑器风格
如何切换Hbuild - X编辑器背景色,如何切换Hbuild - X编辑器风格
172 0
SVG VSCode 插件(语法提示补全、预览插件)
SVG VSCode 插件(语法提示补全、预览插件)
1231 0
SAP 关于编辑器代码提示器的启用
SAP GUI提供了代码完成提示功能,通过配置启用,极大提升开发人员的工作效率
233 0
webstorm 自定义注释内容
webstorm 自定义注释内容
534 0
webstorm 自定义注释内容
|
XML Java 程序员
WPF使用AvalonEdit实现代码高亮显示、搜索、替换功能
很多工程软件拥有自己定义的脚本语言,作为程序员用惯了具有高亮显示和智能提示功能的编辑器,所以针对特定的脚本自己开发一个编辑器。主要采用WPF、C#语言以及AvalonEdit控件。
WPF使用AvalonEdit实现代码高亮显示、搜索、替换功能
Revit二次开发—创建文字注释(TextNote)
Revit二次开发—创建文字注释(TextNote)
|
程序员 开发工具 git
骚注释一键添加佛祖保佑永无BUG、神兽护体等注释图形的VSCode插件
很早之前就见过各种佛祖保佑永无BUG、神兽护体等形式的注释,感觉很有趣,蛮骚的😉。 然后最近有人在我开源的VSCode插件:**koroFileHeader**里面给我提issue,希望能够支持这种类型的注释。 现在开发完成了,大家可以根据下面的使用方式试用一下。 koroFileHeader插件简介 这个插件目前维护两年多了,有1300+Star,支持所有主流语言,支持自定义语言(不支持的语言可以自行设置)。 作用: 在文件开头添加注释,记录文件信息/文件的传参/出参等,让人对文件的功能一目了然。 如果觉得还不错的话,就给我点个Star⭐️吧~ 插件示例:
478 0
骚注释一键添加佛祖保佑永无BUG、神兽护体等注释图形的VSCode插件