基于 JFace Text Framework 构建全功能代码编辑器: 第 2 部分:Syntax Highlight
2010-03-18 00:00:00 来源:WEB开发网核心提示:Syntax Highlight(语法高亮)是指把文本的不同内容用不同的颜色,字体等渲染,基于 JFace Text Framework 构建全功能代码编辑器: 第 2 部分:Syntax Highlight,通过这种方式,用户可以快速发现某种内容,它可以根据字符偏移得到对应的符号,这为实现语法高亮提供了良好的基础,可
Syntax Highlight(语法高亮)是指把文本的不同内容用不同的颜色,字体等渲染,通过这种方式,用户可以快速发现某种内容,可以在短时间内对全文的结构有一个大概的了解。本文探讨如何在 JTF 中实现语法高亮。
前提
语法高亮是把一段文本中的不同内容使用不同的样式来渲染的功能,如下图所示:
图1. Java编辑器的语法高亮
图 1 中的 Java 源代码的不同部分被 Java 编辑器渲染成了不同颜色。比如关键字是偏红的,并且是粗体;变量是蓝色,注释是绿色等等。不同的颜色可以让用户迅速的找到想要的内容,可以说是一个很方便的辅助功能。
在本系列的一部分中,我提到了 ANTLR 以及使用 ANTLR 产生词法和语法分析器。语法高亮是一个很依赖词法分析器的功能,因为词法分析器会把字符流解析成符号流,符号包含了各种属性,比如类型,起始位置和结束位置等等,语法高亮恰恰需要这些信息来渲染文本。我们已经有了一些基础类可以帮助我们管理符号列表,比如 TokenList,它可以根据字符偏移得到对应的符号。这为实现语法高亮提供了良好的基础。
ITokenScanner
JTF 是通过一个 ITokenScanner 接口来了解符号信息的,我们先来看一看这个接口的定义:
清单 1. ITokenScanner 接口
public interface ITokenScanner {
void setRange(IDocument document, int offset, int length);
IToken nextToken();
int getTokenOffset();
int getTokenLength();
}
更多精彩
赞助商链接