WEB开发网
开发学院软件开发Java 基于 JFace Text Framework 构建全功能代码编辑器... 阅读

基于 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编辑器的语法高亮
基于 JFace Text Framework 构建全功能代码编辑器: 第 2 部分:Syntax Highlight

图 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(); 
} 

1 2 3 4  下一页

Tags:基于 JFace Text

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接