JScript多语言语法加亮引擎显示(代码精简)
上一篇文章《JScript中正则表达式用法详解》中讲解了JScript中怎样使用正则表达式,这篇文章就给出一个实际应用的例子。昨晚我一边研究JScript中正则表达式的使用就一边在做JScript的语法加亮代码,今天完善了下,但是还不是完成品就是了,只能加亮关键字和字符串,对注释和代码折叠的支持还没有做,并且现在只支持C#语法,呵呵,大家莫见笑,这个程序虽然功能还没完全但是代码很精简,做为一个例子还是很不错的。
大家可以复制一段C#代码到底下的TextArea或者直接在里面输入代码看看效果。
代码下载于相关文章请看汇总帖:JScript多语言语法加亮引擎(不断更新中) ( 05-08 11:38)
这里对代码中几个比较难以理解的地方做个解释。
首先是字符串中的关键字问题,字符串中的关键字不应该属于关键字,因此不能高亮显示,比如"public XXXX"中的public,其实我并没有真正解决这个问题,但是为什么在上面的Demo中得出的结果又看来正常呢?
其实我耍了个小聪明,用了CSS避开了这个问题,我设置在stringCSS下的所有keyWord的CSS效果都和stringCSS一样,这样最后显示出来的效果就看不到原有的关键字颜色而是字符串的颜色了。
其次为了避免代码语法的关键字等与HTML标签冲突,所以我使用了$符号标记需要插入标签的位置,在所有关键字和语法元素都被处理完后再统一将$标记的地方替换成相应的HTML标签。而原有代码的$用两个$转义表示。因此大家会看到代码中有很多类似[^$]\$KW1的正则表达式,又因为这中形式的正则表达式前面有一个[^$]限定条件,所以需要在插入$KW1标记时前面多加一个空格。
其余好像没什么特别的了,大家自己看代码吧。
大家可以复制一段C#代码到底下的TextArea或者直接在里面输入代码看看效果。
代码下载于相关文章请看汇总帖:JScript多语言语法加亮引擎(不断更新中) ( 05-08 11:38)
这里对代码中几个比较难以理解的地方做个解释。
首先是字符串中的关键字问题,字符串中的关键字不应该属于关键字,因此不能高亮显示,比如"public XXXX"中的public,其实我并没有真正解决这个问题,但是为什么在上面的Demo中得出的结果又看来正常呢?
其实我耍了个小聪明,用了CSS避开了这个问题,我设置在stringCSS下的所有keyWord的CSS效果都和stringCSS一样,这样最后显示出来的效果就看不到原有的关键字颜色而是字符串的颜色了。
其次为了避免代码语法的关键字等与HTML标签冲突,所以我使用了$符号标记需要插入标签的位置,在所有关键字和语法元素都被处理完后再统一将$标记的地方替换成相应的HTML标签。而原有代码的$用两个$转义表示。因此大家会看到代码中有很多类似[^$]\$KW1的正则表达式,又因为这中形式的正则表达式前面有一个[^$]限定条件,所以需要在插入$KW1标记时前面多加一个空格。
其余好像没什么特别的了,大家自己看代码吧。