说是高亮显示起始不太准确,其实就是一般IDE中关键字用特殊的字体(区别于正常字体)来显示
现在学校安排小学期的任务是写这么一个C源代码编辑器,要求进行关键字区别显示以及实时检错还有文本格式化的任务。感觉很像Vi。
刚开始的时候没有头绪,察看Java的DEMO也没有太多收获,只是知道了要用JEditorPane来显示,但是Demo中并没有相关的显示内容(也许是我没看到吧)。后来突然从QQ中得到启发,应该使用RTF格式来显示不同颜色的文本,然后找了一下RTF的规格,果然可以。于是基本思路就是将一个源代码文件读入,对其中的关键字进行标记,转换为相应的RTF格式文本,之后用JEditorPane来显示(VC,Dephli中也有相应的组件来完成这一任务)。每次文本被编辑后,重新进行转换(此处正在优化,牵扯到很麻烦的问题)。
具体如何转换呢?由RTF格式中得
1,将源代码中的'/'符号转化为RTF中的 // ,以便显示
2,按照要求标记关键字,注释,小括号,大括号
3,转换其他特殊字符,包括回车符,左右大括号
步骤中的一三步很简单,没有什么值得研究的地方,无非是遍历整个字符串,转换字符,也许分成两部来做效率比较低,但是我这样做是因为考虑到在标记关键字过程中会产生很多“多余的”/符号,比如/cf1/b之类的等等,如果在标记关键字之后对代码中的/符号进行转换,要做很多判断。具体对效率的影响我没有做严格的数学论证,只是从直觉上觉得这样可能会影响,因此要在标记关键字之前对其进行转换。此外在标记的时候要对注释进行判断,注释内部的字符都不算在代码执行部分之内,因此在算法里,注释内的部分被统统略过,那么算法内部的特殊字符就没有被搜索。因此我把对特殊字符的搜索分离出来。而且为了在搜索关键字的时候减少搜索规模,因此选择了在标记关键字之后进行特殊字符转换。
现在学校安排小学期的任务是写这么一个C源代码编辑器,要求进行关键字区别显示以及实时检错还有文本格式化的任务。感觉很像Vi。
刚开始的时候没有头绪,察看Java的DEMO也没有太多收获,只是知道了要用JEditorPane来显示,但是Demo中并没有相关的显示内容(也许是我没看到吧)。后来突然从QQ中得到启发,应该使用RTF格式来显示不同颜色的文本,然后找了一下RTF的规格,果然可以。于是基本思路就是将一个源代码文件读入,对其中的关键字进行标记,转换为相应的RTF格式文本,之后用JEditorPane来显示(VC,Dephli中也有相应的组件来完成这一任务)。每次文本被编辑后,重新进行转换(此处正在优化,牵扯到很麻烦的问题)。
具体如何转换呢?由RTF格式中得
1,将源代码中的'/'符号转化为RTF中的 // ,以便显示
2,按照要求标记关键字,注释,小括号,大括号
3,转换其他特殊字符,包括回车符,左右大括号
步骤中的一三步很简单,没有什么值得研究的地方,无非是遍历整个字符串,转换字符,也许分成两部来做效率比较低,但是我这样做是因为考虑到在标记关键字过程中会产生很多“多余的”/符号,比如/cf1/b之类的等等,如果在标记关键字之后对代码中的/符号进行转换,要做很多判断。具体对效率的影响我没有做严格的数学论证,只是从直觉上觉得这样可能会影响,因此要在标记关键字之前对其进行转换。此外在标记的时候要对注释进行判断,注释内部的字符都不算在代码执行部分之内,因此在算法里,注释内的部分被统统略过,那么算法内部的特殊字符就没有被搜索。因此我把对特殊字符的搜索分离出来。而且为了在搜索关键字的时候减少搜索规模,因此选择了在标记关键字之后进行特殊字符转换。