基于Linux 的嵌入式浏览器的研究
随着信息技术与网络技术的快速发展, 以及人们日常生活对网络信息的需求的不断增加。掌上电脑、上网本、手机、导航仪器、智能电视、智能家电等对嵌入式系统提出了更多更高的要求。在嵌入式系统中利用嵌入式浏览器获取网络信息是必不可少的, 因此嵌入式浏览器技术成为现如今的技术热点之一。而且Linux 操作系统完全开源, 可以降低产品开发成本, 因此对基于Linux 操作系统的嵌入式浏览器开发技术的研究有着重要意义。
1 嵌入式浏览器的结构
根据嵌入式浏览器的特点, 分析嵌入式浏览器的各个部分功能。下面介绍嵌入式浏览器的主要功能:
(1) 词法分析, 主要是对HTML 语言进行词法分析, 并且要求HTML 词法分析可以兼容XML 等其他标签语言,达到只需更换语言的元素名称就可以进行词法分析的效果;(2) 语法分析与布局, 在非嵌入式浏览器中语法分析是独立的一个模块, 但是在嵌入式浏览器中不作为一个独立模块, 简化系统结构, 即实现语法分析与布局同步化, 节省了语法分析数据存储的内存空间; (3) 嵌入式浏览器的用户界面, 设计高效快捷的用户界面是应用软件的重要部分;(4) 嵌入式浏览器JavaScript 支持,JavaScript 在浏览器里主要是用于操纵界面元素并与浏览器内部命令进行结合;(5)I/O 端, 主要是通过HTTP 协议和文本系统来读取页面信息;(6) 控制机制, 负责命令响应和消息处理。嵌入式浏览器功能结构如图1 所示。
图1 嵌入式浏览器功能结构图
2 HTML 词法分析
2.1 组成及功能
HTML 词法分析是嵌入式浏览器开发的基础, 是整个嵌入式浏览器整体设计的最前端部分,HTML 词法分析的数据结构是语法分析与布局的重要依据。HTML词法分析的效率、准确率以及容错率的高低在一定程度上决定了整个嵌入式浏览器的工作效率。下面对HTML词法分析的组成和功能进行解析。
HTML 词法分析的功能主要是负责接收从I/O 端读取到的HTML 代码并进行词法分析, 提取网页中HTML代码中的各元素信息, 按照定义的数据结构保存元素的属性和名称等, 实现数据的结构化。
根据HTML 词法分析的功能可以解析为几个组成部分:(1) 初始化。完成对数据结构的初始化, 主要是分配内存, 变量赋初值; (2) 主体的数据流分析, 逐字符地进行判断, 确定数据的归属类型; (3) 元素的分析, 提取元素的名称、属性和值域; (4) 释放, 主要是对数据内存空间的释放。
2.2 算法
根据HTML 词法分析的功能以及组成部分, 可以很清晰地得到一个简单的算法。其算法过程具体如下:
(1)从I/O 端读取的字符串流中,顺序读取一个字符;(2) 如果遇到 , 表示将遇到元素, 处理该元素( 使用元素处理函数来处理该元素) , 元素处理结束后, 指针指向该元素的尾部;(3) 如果遇到空格或回车, 则跳过;(4) 如果遇到>, 则跳过(因为不可能存在>这种不包含任何元素的情况, 只是为了增强程序的容错性);(5) 如果遇到的不是上述几种情况, 则遇到的是文字( 使用文字处理函数来处理该文字) , 文字处理结束后,指针指向下一个元素的首部;(6) 循环(1)~(5 ) 步骤, 直到I/O 端读取的字符串流全部分析完。
根据上述词法分析算法过程可以得到相应的流程图, 如图2 所示。
图2 词法分析算法流程图
2.3 词法分析的设计
根据上述提出的词法分析的算法, 通过扫描I/O 端读取的字符串, 来检测字符是否为标签元素、提取标签元素属性等。设计词法分析的基础要定义数据结构, 为词法分析算法的实现提供基础。根据功能需要设计基本的数据结构, 定义如下:
char token[]; // 标签元素表
char * tokenPointer; //指向标签元素表的指针
char chText[]; // 字符表
char *chPointer; // 字符表指针
char text[]; // 字符串表
char *textPointer; // 字符串表指针
char textRead[]; //存放待识别的源程序字符串
char *textReadPointer; //读取字符串指针
char ch; //存放最读取的源程序字符
char STrToken[]; //存放构成单词符号的字符串
bool flag=false; //是否扫描过一次
3 浏览器JavaScript 支持
3.1 JavaScript 简介
JavaScript 是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。它的一个重要功能就是面向对象的功能, 通过基于对象的程序设计, 可以用更直观、模块化和可重复使用的方式进行程序开发。一组包含数据的属性和对属性中包含数据进行操作的方法, 称为对象。用户与网页交互时产生的操作, 称为事件。事件可以由用户引发, 也可能是页面发生改变, 甚至还有看不见的事件( 如
- 基于DSP的音频会议信号合成算法研究(05-10)
- 基于定点DSP的MP3间频编码算法研究(07-04)
- DSP的并联电力有源滤波器的仿真研究(02-15)
- PCI总线数据采集系统的硬件研究(09-12)
- PIC单片机在温度测量领域的应用及仿真研究(11-23)
- 嵌入式软PLC 的设计与研究(06-27)