




已阅读5页,还剩50页未读, 继续免费阅读
(计算机应用技术专业论文)嵌入式javascript解释器的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华中科技大学硕士学位论文 摘要 随着嵌入式系统的网络化趋势日趋明显,嵌入式浏览器已经成为嵌入式系统的支 撑软件。嵌入式系统的分散性和多样性特点为嵌入式浏览器带来发展机遇。j a v a s c 邱t 语言因其能够实现一种实时的、动态的、可交互的表达能力,现已被浏览器广泛地支 持。矿4 我们针对嵌入式系统软件设计的特点以及j a v a s c f i p t 解释器的发展状况,结合自 主设计并实现的嵌入式浏览器j l b r o w s e r ,详细介绍了嵌入式j a v a s e f i p t 解释器的关 键设计技术与实现方法。内容主要包括解释引擎、解释执行控制器、表达式归约器、 资源管理及对象解释技术。我们所实现的解释器基于一种自定义的中间数据结构。根 据这一中间结构所设计的语言编译解释模型,使得解释器结构简单明了、代码精简, 同时也实现了j a v a s c r i p t 语言的一般特性。 在设计与实现过程中,我们提出了一种改进的、基于对象的算符优先算法,将各 种类型的表达式统一归约处理;另外,为满足嵌入式系统的实时性和稳定性要求,提 出了一种资源管理策略和算法,对系统c p u 资源和内存资源进行了有效的管理:最 后,从对象的存储结构、对象的引用、方法调用和对象的事件处理四个方面实现了 j a v a s c 邱t 语言基于对象的特性。在对象解释技术中,我们将对象的方法翻译为c 语 言函数,解决了对象的方法调用问题;通过复制函数的语法树结构,解决了函数的递 归调用问题。 、u v 。, 。 关键词:嵌入式系统;解释器;算符优先算法:资源管理;对象解释 i 华中科技大学硕士学位论文 a b s t r a c t n e t w o r k e dt r e n do fe m b e d d e ds y s t e mb e i n gm o r eo b v i o u s ,e m b e d d e db r o w s e rh a s a i r e a d vb e c o m et h ef u n d a m e n t a ls o f t w a r eo ft h ee m b e d d e ds y s t e m t h ec h a r a c t e r i s t i c s - d i s p e r s i o na n dd i v e r s i t yo f t h ee m b e d d e ds y s t e mb r i n gg r e a to p p o r t u n i t yf o rd e v e l o p m e n t o fe m b e d d e db r o w s e r j a v a s c r i p tl a n g u a g e ,w h i c hc a nr e a l i z ea k i n do fr e a l - t i m e d ,d y n a m i c a n dm u m a l a b i l i t yt oe x p r e s s ,h a sa l r e a d y b e e n w i d e l ys u p p o r t e db y t h eb r o w s e rn o w w ei n t r o d u c ei n d e t a i lt h ed e s i g na n di m p l e m e n t a t i o nt e c h n i q u e so fa ne m b e d d e d j a v a s c r i p ti n t e r p r e t e r o nt h eb a s i so fj lb r o w s e r , a ne m b e d d e db r o w s e rw h i c hw a s d e s i g n e da n di m p l e m e n t e d t om e e tt h ed e m a n do fe m b e d d e ds y s t e ms o f t w a r eb yo u r s e l v e s i tm a i n l yi n c l u d e si n t e r p r e t e re n g i n e ,c a r r y i n go u tc o n t r o l l e r , e x p r e s s i o nf o r m u l as t i p u l a t o r , r e s o u r c em a n a g e m e n ta n do b j e c ti n t e r p r e t i n gt e c h n o l o g y ak i n do fm i d d l ed a t u ms t r u c t u r e l a y sf o u n d a t i o nf o rt h ei n t e r p r e t e rw o h a v ei m p l e m e n t e d t h ec o m p i l e i n t e r p r e tm o d e l d e s i g n e da c c o r d i n g t ot h es t r u c t u r ea d o p t e d s i m p l i f ya n du a r i r y s t r u c t u r eo ft h ei n t e r p r e t e r , m e a n w h i l e ,t h eg e n e r a lc h a r a c t e r i s t i c so f j a v a s c r i p tl a n g u a g eb e i n g r e a l i z e d i nt h ec o u r s eo fd e s i g na n di m p l e m e n t a t i o n ,w ep r e s e n ta ni m p r o v e do b j e c t - b a s e d o p e r a t o rp m c e d l l r ea l g o r i t h md e a l i n gw i t ha l lk i n d so fe x p r e s s i o nf o r m u l a si nu n i s o n i n a d d i t i o n ,t om e e tt h ed e m a n do ft h e “r e a l - t i m ea n ds t a b i l i t y c h a r a c t e r i s t i c so ft h ee m b e d d e d s y s t e m ,r e s o u r c em a n a g e m e n t t a c t i c sa n d a l g o r i t h ma r ep r e s e n t e d ,w h i c hh a v ec a r r i e do na n e f f e c t i v em a n a g e m e mt oc p ur e s o u r c e sa n dm e m o r yr e s o u r c eo fs y s t e m i nt h ee n d ,t h e o b j e c t - b a s e d c h a r a c t e r i s t i co fj a v a s c r i p ti sr e a l i z e di nf o u r r e s p e c t s :m e m o r ym o d e l , q u o t a t i o n ,m e t h o dt r a n s f e ra n de v e n th a n d l i n go fo b j e c t w ea l s os o l v et h ep m m e mo f c a l l i n go fm e t h o db yt r a n s l a t i n gm e t h o do fo b j e c ti n t oc l a n g u a g ef u n c t i o n ,a n dt h ep r o b l e m o fr e c u r s i o no ff u n c t i o n b ys e t t i n gu p t h es t r u c t u r et h r o u g ht h ed u p l i c a t e df u n c t i o n g r a m m a r k e yw o r d s :e m b e d d e d s y s t e m ;i n t e r p r e t e r ;o p e r a t o rp r e c e d e n c ea l g o r i t h m ;r e s o u r c e m a n a g e m e n t ;o b j e c ti n t e r p r e t i n g i i 华中科技大学硕士学位论文 1 1 课题背景 1 绪论 随着信息技术的不断发展和创新,特别是互联网的迅速普及,计算机、通讯、消 费电子一体化趋势日趋明显,数字化时代已经来临【1 】o 嵌入式接入设备是数字化时代 的一大主流产品,世界各国纷纷在此领域展开激烈竞争。武汉精伦电子股份有限公司 是一家致力于从事集计算机、通讯、电子等技术一体化产品研究和开发的高新技术企 业。公用多业务信息终端是该公司在嵌入式领域的主导产品。它是一类基于嵌入式硬 件设计和嵌入式实时操作系统的公用信息设备,不仅可提供语音通话功能,还可提供 电子邮件收发、短信发送、电子支付等多项信息服务。嵌入式浏览器j l b r o w s e r 作为 该信息终端的平台支撑软件,由本室( 华工大精伦软件研究所) 承担其研发工作。而 嵌入式j a v a s c r i p t 解释器则是j i , b r o w s e r 的重要组成部分。 本课题的目的在于结合自主设计并实现的嵌入式浏览器j l b r o w s e r ,研究嵌入式 系统中j a v a s c r i p t 解释器的设计技术和实现方法。通过本课题的研究,一方面结合解 释程序的实现原理,寻求适合嵌入式产品需求的j a v a s c r i p t 解释器实现方法,并积累 嵌入式产品的开发经验;另一方面,解释器作为j l b r o w s e r 的功能补充,使其能够集 成到武汉精伦电子股份有限公司开发的新型公用多媒体终端中,以形成该公司的一套 完整产品,从而带来巨大的经济利益。 j a v a s c r i p t 语言是一种嵌入在h t m l 文本中的脚本语言,它具有过程化、基于对 象和安全性等特点】。j a v a s c r i p t 解释器则嵌入在浏览器中对j a v a s c r i p t 程序进行解 释执行。在p c 平台上的j a v a s c r i p t 解释器随着p c 浏览器的发展已经非常成熟和完 备。但由于嵌入式系统本身的硬件和软件环境的限制,使得p c 机上的普通浏览器并 不能直接用于嵌入式系统中。另一方面,嵌入式系统的网络化趋势迅速推动嵌入式网 络软件的发展,嵌入式浏览器已经成为其中必不可少的一环。而j a y a s c r i p t 语言已经 成为w e b 技术和h t m l 浏览器发展的需要,嵌入式浏览器的发展势必会涉及到对 一。 1 华中科技大学硕士学位论文 j a v a s c r i p t 脚本的支持。 因此,针对嵌入式系统软件设计的特点和要求,结合现有的程序设计语言解释技 术,如何采用一种新的方法构建嵌入式j a v a s c r i p t 解释器以充分利用和挖掘嵌入式系 统的有限资源,这一课题研究变得具有非常重要的现实意义。 1 2 j a v a s c r i p t 解释器发展概况 在w w w 服务发展的初期,人们将各种信息通过超链接技术共享在w e b 服务器 上以实现资源共享。然而这种技术最大的缺陷就是它只能提供一种静态的信息资源, 制作的w e b 页面缺少动态性和交互性。j a v a s c r i p t 正是顺应这种动态网页制作的需要 而诞生的一种新的脚本编程语言,它由n e t s c a p e 公司开发,现已广泛用于i n t e r n e t 网 页制作上。 j a v a s c r i p t 的出现使得信息和用户之间已不再是一种单纯的显示和浏览的关系, 而是实现了一种实时的、动态的、可交互的表达能力1 4 9 1 。因而,在p c 平台上j a v a s c r i p t 迅速地被浏览器广泛支持,j a v a s c r i p t 解释器也因此而发展得比较成熟。 如微软公司的i e 和网景公司的n e t s c a p e 对j a v a s c r i p t 的支持程度都很高。特别 是m 中的j a v a s c r i p t 解释器已经相当完备和成熟。浏览器对j a v a s c r i p t 的支持完全 遵循e c m a 规范m ,1 1 1 ( 欧洲计算机制造商协会制定的脚本语言的国际标准) 的最新 标准。且其与浏览器文档模型中对象的交互性极强,嵌入在m 中的j a v a s c r i p t 脚本 程序可以以各种方式访问浏览器对象中的属性、集合和方法。其j a v a s e r i p t 解释器不 仅解释执行效率高,还可以纠正脚本程序的某些语法错误。此外,微软公司还提供了 脚本语言的调试工具,用户可以方便地对脚本程序进行跟踪调试。但由于嵌入式系统 本身的软件和硬件限制,使得p c 平台上的j a v a s c r i p t 解释器不能用于嵌入式系统之 中。相对嵌入式系统而言,这些解释器主要有如下一些弊端: ( 1 ) 对硬件设备要求高 嵌入式系统一般体积较小,与台式机相比其c p u 的数据处理速度较低,系统程 序、应用程序一般装在f l a s h 或r o m 中,无存储量大的硬盘等设备;而f 1 a s h 或r o m 2 华中科技大学硕士学位论文 等存储介质的价格相对昂贵1 1 2 , 1 3 1 。另外,速度慢的硬盘设备不能满足一些实时嵌入式 应用的要求。这些特点决定了在开发嵌入式j a v a s c r i p t 解释器时,必须将解释器所占 的存储空间限制在一定的范围内,否则,开发出的解释器在实际的嵌入式系统中无法 使用。例如,目前台式机上所使用的和n e t s c a p e 中的解释器都对系统的c p u 速 度、内存、存储空间和功耗有着很高的要求,如存储空间在几十兆,内存要求在3 2 m 以上,这些要求都是嵌入式系统所不能达到的。除非增加嵌入式系统的f l a s h 或r o m 的容量,但这将使产品的成本大幅度提高,从而失去市场竞争力。显然,在不增加硬 件成本的前提下,采用一种新的方法来构建嵌入式j a v a s c r i p t 解释器,从软件的角度 来考虑充分、有效地挖掘与利用嵌入式系统的资源,不失为一种好的办法。 ( 2 ) 对软件环境要求高 现有p c 机上的j a v a s c 咖t 解释器,不论是运行在类w i n d o w s 平台,还是运行在 类l i n u x 平台,都需要有操作系统系统底层庞大的函数库支持。而嵌入式操作系统的 函数库是经过精简的【1 2 ,1 3 】,无法为p c 机上的j a v a s c r i p t 解释器提供软件支持。因而, p c 机上的j a v a s c r i p t 解释器无法直接移植到嵌入式系统中。 ( 3 ) 功能不符合特定要求 目前,运行于p c 机上的浏览器对j a v a s c r i p t 语言的支持都很完备。这主要是因 为p c 浏览器作为电子商务和b s 模式信息管理系统平台软件对网页的交互性要求非 常高。但嵌入式设备的网络功能相对简单,而嵌入式浏览器对j a v a s c r i p t 解释器的交 互性要求也相对降低。因此,有必要对解释器的功能进行重新划分,保留其常用功能; 同时,针对嵌入式系统的特定要求对解释器进行个性化设计。 另一方面,随着信息技术的不断发展和创新,嵌入式系统作为计算机应用的一个 重要领域已深入到社会的方方面面,并越来越受到人们的关注”1 9 1 。从家用电器到各 种手持通讯设备如掌上电脑、p d a 、智能手机等,再到信息终端、仪器仪表、汽车、 航天航空、军事装备、制造工业、过程控制等 2 0 , 2 1 】,嵌入式系统已经广泛渗透到人们 的日常生活和工作中。嵌入式系统的出现至今已有3 0 多年的历史,从早期的以单芯 片为核心的可编程控制器形式的系统,逐步发展到以嵌入式c p u 为基础、以嵌入式 3 华中科技大学硕士学位论文 操作系统为标志的综合应用系统瞄- 2 4 1 。目前,大多数嵌入式系统还孤立于i n t e m e t 之 外,但随着i n t e r n e t 技术与信息家电、工业控制技术日益密切的结合,嵌入式系统正 经历一个以i n t e m e t 为标志的迅速发展阶段,嵌入式设备与i n t e r n e t 的结合将代表嵌 入式系统的未来【1 6 ,2 2 。嵌入式浏览器由于其功能性已经成为这一发展趋势中必不可少 的网络支撑软件,同时也推动了j a v a s c r i p t 解释器在嵌入式浏览器中的发展。 在嵌入式浏览器领域,j a v a s c r i p t 解释器的发展则远不如p c 平台上那样成熟和 完备。目前的大多数嵌入式浏览器都不支持j a v a s c r i p t 语言的解释,有些虽然支持但 有很多缺陷。下面列举一些运行在主流嵌入式操作系统平台上的常见嵌入式浏览器, 就它们的功能特点和对j a v a s c d p t 语言的支持程度作简要介绍。 ( 1 ) i b r o w s e r p l u s 该浏览器基于w i n d o w sc e 平台,适用于具有彩色或单色显示功能的掌上电脑: 具有复杂的缓存功能,使得下载和显示得到优化,能支持在线和离线浏览以及多媒体 数据和图像,为电子商务的安全系统提供1 2 8 b i t 加密,支持代理服务器、c o o k i e s 、 f r a m e s ( 文本模式) ,但不支持j a v a s c d p t l 2 5 1 。 ( 2 ) h o t j a v a h o t j a v a 2 5 1 为s u n 公司发布的基于嵌入式l i n u x 操作系统的浏览器。它具有安全 性好、与平台无关性等方面的优点,且支持j a v a s c r i p t ,但由于采用j a v a 语言实现, 其执行速度较慢。 f 3 ) i p a n e l i p a n e l 2 6 1 嵌入式浏览器由深圳茁壮网络公司开发,它具有代码精简、可移植性好、 适用范围广等特点,能够完整支持j a v a s c d p t l 3 ,且其运行环境要求低,被认为是世 界上最优秀的嵌入式浏览器之一。 ( 4 ) n e t f r o n t n e t f r o n t 【2 6 】是i n t e m e t 设备最流行的嵌入式浏览器之一。它自1 9 9 5 年问世以来, 已被用在多种不同的嵌入式设备中,具有可移植性好、模块化等优点,部分支持 j a v a s c r i p t 的解释。 一 4 华中科技大学硕士学位论文 从以上情况分析,p c 机上的j a v a s c r i p t 解释器发展得相当完备和成熟,但不能 满足嵌入式系统的特定要求。而嵌入式系统由于其分散性、多样性等特点,使得嵌入 式浏览器的功能特点、技术指标各有差异,对j a v a s c r i p t 语言的支持程度也不相同。 因而,嵌入式j a v a s c f i p t 解释器会有很大的发展空间,不会出现p c 领域的垄断局面。 可以预测,随着网络技术和嵌入式技术的进一步结合以及电子商务的迅速发展,未来 的嵌入式浏览器会越来越多、越来越好地支持j a v a s c r i p t 的解释,并且在实现方面会 向代码精简、可移植性强、执行效率高等方面发展。 1 3 程序设计语言解释技术研究概况 程序设计语言伴随着计算机的出现已经有几十年的发展历史,其间语言不断从低 级向高级发展,经历了从机器语言、汇编语言到各种高级程序设计语言的发展阶段。 解释性语言由于其易用性、可移植性和安全性得到越来越多的应用 2 7 - 2 9 1 ,程序设计语 言解释技术也随之发展。目前几个比较常用的语言解释器有: ( 1 ) j a v a 是一种面向对象的程序设计语言和运行环境。j a v a 的主要应用是开发可 移植性代码,这些代码支持通过网络下载运行,实现跨平台的独立性1 2 7 1 。j a v a 非常 类似于c + + ,但在c + + 的基础上又增加了更丰富的语言设施,如自动“垃圾收集”、 多线程和同步机制等f 2 9 1 。j a v a 的运行时刻库提供了丰富的图形功能接口。j a v a 程序 并不是直接解释执行,而是首先编译成为由j a v a 虚拟机1 3 0 - 3 2 1 定义的字节码,然后由 j a v a 解释器解释执行。 ( 2 ) p e r l 3 3 - 3 6 1 是一种脚本语言,它主要用于文本、数据、文件和过程的处理。p e r l 程序也不是直接解释执行的,而是在开始执行之前先编译成为一种内部代码,然后由 解释器执行【2 7 1 。p e r l 解释器在每次执行程序时要进行相应的编译动作。 ( 3 ) t c l l 3 7 】是一种嵌入式脚本命令语言,它允许以一种纯脚本的方式定制应用程序。 同时,t c l 也可作为一个独立的编程环境,提供和p e r l 类似的基础函数库作为编程接 口p 。t c l 解释器具有很好的开放式结构,很容易进行扩充,执行与应用相关的命令。 t c l 源程序由t c l 解释器直接解释执行。 s 华中科技大学硕士学位论文 上述三个解释器有着不同的目标和实现策略,具有一定的代表性。以下从解释器 的结构分析影响解释器性能的因素。 ( 1 1 虚拟机的复杂度对解释器性能的影响 所有的解释器必须实现一个称为虚拟机的基础构件1 2 7 。虚拟机是指对真实计算机 资源环境的一个抽象,它为解释性语言程序提供一套完整的虚拟机接口。虚拟机接口 定义了一个虚拟命令集合,为解释语言开发的应用程序和计算机资源之间提供一个可 移植的接口。在解释器的主循环中,每循环一次就提交一个虚拟命令给虚拟机执行。 这样,解释器和虚拟机的功能就有明确分工:解释器负责虚拟命令取指和译码,虚拟 机则负责虚拟命令执行。因此,一个解释性程序的执行时间取决于以下部分:程序所 包括的虚拟命令的数目、每个虚拟命令的取指和译码时间及执行虚拟命令的时间。实 验研究结果【2 9 】表明:一个逻辑功能简单的虚拟机可能需要更多数目的虚拟命令来完 成一件工作,此时解释器负责的虚拟命令取指和译码的时间就占用整个程序的大部分 时间开销;而一个功能复杂的虚拟机可能只需要用几条虚拟命令来完成同样的任务, 相对来说,解释器所花费的时间占的比例就要小得多。在上述三个解释器对应的虚拟 机中,j a v a 虚拟机是最简单的,每条虚拟命令的开销小而且相对固定,但需要较多数 目的虚拟命令来完成同样的工作;t e l 和p e r l 定义了功能复杂的虚拟机,但其虚拟命 令的开销是不可预测的。 ( 2 ) 存储模型对解释器性能的影响 解释器通过内存访问机制来实现虚拟机指令。由于许多虚拟命令都要访问内存, 所以解释器的存储模型会影响解释器的性能。存储模型主要涉及到存储单元的命名方 法、数据存取等。 j a v a 程序的数据既可以作为临时变量存放在堆栈区,也可以作为永久对象存储。 当作为临时堆栈变量时,程序既可以在执行j a v a 字节码时隐式地进行读写( 如i a d d ) , 也可利用专门的字节码进行读取( 如g e t f i e l d ) 。堆栈变量的存取周期为两个指令周期。 当j a v a 变量作为对象存储时,必须使用专门的字节码进行存取,存取周期平均为1 1 个指令周期。j a v a 程序数据存取大概占总开销的1 0 。 6 华中科技大学硕士学位论文 := = = = = = 蒜= = ;端= = = 燃= = = 描= = = = = = = = = = = 瑞: p e r l 的交量可绫佟为标燕、数缀鞠联合数维寒迸行存德。p e r l 蕊颈编译狳段逶过 一个符号表来遴嚣变撼名的映射,对予联会数组变量则鬻要氆助一个h a s h 表遴行映 射。这个过程需溪花费较多时间,一般濡要2 0 0 条指令。p e r l 程序中的数据存储只占 3 的时间。 t c l 的数据命名为字符串方式,变髓可以存储在标量、列袋和数组( 或者联合数 组) 中。t c l 的数据访问需鬻迸幸亍一次符号表的查波动俸,帮由符譬名到存储位置的 浃懿。嚣鼗,其开镑与耱号表孛瓣条臻数有关。一般巍寒,存储访翊孚均占9 静辩 间。 以上研斜2 9 】表明,对输入源程序预编译产生符号表商助予提高解释器的性能。 综上所述,解释器的结构对解释器的性能有着 常大的影响。改善解释器的结构 以提高其性能成为近年来研究的热点。j a v a 解释器的性能正蹩在这期间得到不断提 高。腻罩期的由编译器和虚镦杭缀成静第一代j a v a 编译系统戮蕊嘲,发展劐第二代的 及露编译嚣 4 0 , 4 “,褒奁已经发震裂第三钱编译器 4 0 , 4 2 1 赘将及辩编译器鞫勰释器缀合怒 来,大大提高了疑释器豹蛙毖。 因此,针对嵌入式系统的特点,选撵合理的辫释器结构,做到既不增加解释器实 现的复杂度,又兼顾解释器的执行效率将成为实现嵌入式j a v a s c f i p t 解释器所要解决 的关键问蹶。本文将针对这一问鼷做一些探讨。 1 4 课题主要研究工作 针对嵌入式系统软件设诗豹特点以及j a v a s c f i p t 勰器嚣熬发展状凝,本文将缀会 现有的程序设计语言解释技术,采用一种新的方法充分利用和肖效挖掘嵌入式系统的 有限资源来构建嵌入式j a v a s c r i p t 解释器。期间的童要工作有: ( 1 ) 明确解释系统在浏览器中的地位及其与j | i ! | 览器其它各模块间的关系;根据嵌 入式浏览器j l b r o w s e r 的需求分析,萌确解释器的设计精标。 国提逡j a v a s c r i p t 语言编译解释系统翦臻梅设计方案。按照编译系统产生中闻数 据结构,织释系统解释孛闻数据终梅熬设计愚路对解释器进行慧嚣设计。 7 华中科技大学硕士学位论文 ( 3 ) 分析中间数据结构,设计并完成程序的解释执行控制和各种语句的解释执行。 从功能上讲,j a v a s c r i p t 语句可分执行性语句和说明性语句两大类,执行性语句又包 含赋值语句和各类流程控制语句。如何控制这些语句的解释执行以准确地表达原语句 的语义将是本课题研究的关键问题。 ( 4 ) 完成表达式归约器的设计与实现。表达式是组成程序语句的重要组成部分, 程序所描述的运算最终通过表达式体现出来。j a v a s c r i p t 由于其基于对象的特点,对 象的属性和方法均可参与表达式运算,这样使得其表达式归约变得非常复杂。本文将 提出一种扩展的、基于对象的算符优先算法解决表达式的运算问题。 ( 5 ) 对解释系统的有限资源进行有效管理。本文将主要针对嵌入式系统的c p u 资 源和内存资源,提出一种有效的资源管理方案,以满足嵌入式系统的实时性和稳定性 要求。 ( 6 ) 实现j a v a s c r i p t 语言基于对象的特性。j a v a s c r i p t 是一种基于对象的语言,它 支持对象的属性、方法和事件处理机制,同时通过对象完成与浏览器的交互。本文将 重点介绍解释器的对象解释技术。 8 华中科技大学硕士学位论文 2 解释器的总体设计与分析 j a v a s c r i p t 语言解释器的设计依赖于浏览器的体系结构。故本章先以浏览器的体 系结构为背景介绍解释器在浏览器中的地位及其与浏览器其它各模块间的关系,然后 对解释系统进行需求分析,最后从分析j a v a s c r i p t 语言的特性和层次结构入手,阐明 了解释系统的设计思想和整体结构。 2 1 解释器在浏览器中的地位 解释器在浏览器中的地位体现在必要性和重要性两个方面。一方面,从浏览器的 发展来看,它已经不再是一个单纯的客户端软件,而是逐渐成为建立电予商务和企业 级b s 模式信息管理系统平台的支撑软件。进一步,浏览器已经在嵌入式网络化趋势 中开始扮演系统软件开发平台的角色。而这些需求是建立在w e b 客户端良好的动态 性和交互性基础上,所以j a v a s c r i p t 解释引擎已经成为浏览器发展不可缺少的组成部 分。另一方面,解释器对经过编译的j a v a s c r i p t 源程序所产生的中间代码的解释,最 终完成网页的动态和交互功能,成为浏览器在功能实现上的重要组成部分。 以下结合嵌入式浏览器j l b r o w s e r 的体系结构,说明解释器与浏览器其它各模块 问的关系。 图2 1 浏览器系统结构图 图2 1 为j l b r o w s e r 的系统结构图。其中,底层传输模块负责从w e b 服务器或本 地文件中取得h t m l 文本并负责向h t m l 解释模块发送消息;h 蹦l 解析模块负责 9 华中科技大学硕士学位论文 对h t m l 文本的解析并根据解析结果进行排版,当解析出j a v a s c r i p t 源程序后调用解 释引擎对之进行解释执行:解释引擎接受h t m l 解析子系统传k 的j a v a s c r i p t 程序, 先调用编译子系统进行词法和语法分析产生中间数据结构,然后依据这一中间数据结 构调用解释系统对源程序语句逐条解释执行,执行结果通过与浏览器交互模块影响浏 览器显示。本文所讨论的解释器将包含j a v a s c r i p t 解释引擎、解释系统和与浏览器的 交互模块。 2 2 解释器的需求分析 j a v a s c r i p t 语言从诞生起由于其广泛的应用已经被作为一种工业标准在不断地被 扩充和完善,从早期的1 1 版已经发展到现在的1 5 版。不同的浏览器对其支持的标 准不尽相同,特别是在嵌入式浏览器领域差异更大。因此,明确解释系统的设计目标 至关重要。j l b r o w s e r 拟支持j a v a s c r i p t l 1 的子集。具体内容如下: ( 1 ) 支持基本数据类型:数值( 整数和实数) 、字符串和布尔型;支持复合数据类型: 数组和对象:支持特殊数据类型:空值和未定义类型。 ( 2 ) 支持循环语句:f o r 语句、f o f i i l 语句、w h i l e 语句、d o w h i l e 语句;支持流程 控制语句i f 语句、i f e l s e 语句、s w i t c h 语句、w i t h 语句、b r e a k 语句、c o n t i n u e 语句; 支持函数定义和调用语句;支持说明性语句。 ( 3 ) 支持各种系统定义对象:n u m b e r 对象、s t r i n g 对象、m a t h 对象、d a t e 对象和 a r r a y 对象。 ( 4 ) 支持嵌入式浏览器j l b r o w s e r 文档对象模型中的各种对象,具体包括: d o c u m e n t 对象,w i n d o w 对象,f o r m 对象,各种控件对象t e x t 、p a s s w o r d 、r a d i o 、c h e c k b o x 、 b u t t o n 、s u b m i t 、r e s e t 、s e l e c t 、t e x t a r e a 、h i d d e n 、o p t i o n 、t a b l e 、t r 、t d 等。 ( 5 ) 支持用户自定义对象及其属性和方法。 ( 6 ) 支持上述浏览器文档对象模型中各对象的方法、属性和事件处理。 ( 7 ) 支持系统定义方法e v a l 、e x e c 、p a r s e 、e s c a p e 、u n e s c a p e 、p a y 、s i g n p b i 等。 ( 8 ) 支持脚本程序语法错误和执行错误的提示但不支持语法错误的纠正。 1 0 华中科技大学硕士学位论文 在性能方面要求解释效率高,对j a v a s c r i p t 的支持能够进行方便的扩充;同时要 求与浏览器问的交叉尽可能少以便将j a v a s c r i p t 解释引擎向插件的形式方向发展。 2 3 解释器的设计思想和整体结构 我们知道,一个程序语言的基本功能是描述数据和对数据的运算。一段程序从本 质上来说是描述一定数据的处理过程。j a v a s c r i p t 作为一种高级脚本语言也不例外。 我们把j a v a s c r i p t 语言的层次结构用图2 2 来描述: 图2 2j a v a s c r i p t 语言层次结构图 从图2 2 中可以看到,顶端是程序本身,它是一个完整的执行单位。一个j a v a s c r i p t 程序通常由若干子程序组成。子程序是由语句组成的。而组成语句的成分则是各种类 型的表达式。表达式是描述数据运算的基本结构,它通常含有数据引用、算符和函数 调用。程序或子程序通常含有自己的数据,前者称为全局变量,后者称为局部变量。 全局变量既可以是一般基本类型变量也可以是全局对象的属性,局部变量既可以是一 般基本类型变量或常量也可以是局部对象的属性。表达式的数据引用则来自全局变量 或局部变量,而函数调用则可以是用户自定义函数、系统定义函数或各种对象的方法。 根据上述层次结构图,我们不难得出:要能够正确的解释执行程序,必须使解释 系统可以“看到”并能“理解”程序语言的语义;能够顺序执行指定的操作;在执行 指定操作的过程中可以及时地取得数据;能够输出运算结果。为此,解释系统必须: ( 1 ) 有一个用来存放程序的地方: ( 2 ) 有一个用来存放数据的地方; ( 3 ) 有一个控制器用来控制程序自动的顺序执行; ” 甩一 遍摹面 华中科技大学硕士学位论文 ( 4 、有一个运算器用来执行指定的操作即完成表达式的运算; 此外,解释系统还要能够“输出”运算结果,即能够改变浏览器当前文档对象模 型中的对象,从而影响浏览器的输出显示。 根据这一思想,我们设计了一种基于中间数据结构的语言编译解释模型。基于 这一模型,设计解释器的整体结构如图2 3 所示: 图2 3 解释器整体结构图 从图2 3 中可以我们可以看到,整个解释器靠解释引擎来驱动,解释引擎上方为 解释器所用到的主要数据结构,下方为各主要模块。图2 3 中各方块所示内容解释如 下: ( 1 ) 解释引擎解释引擎充当浏览器与编译,解释系统间的接口,它接受浏览器中 h t m l 解释模块传送过来的j a v a s c r i p t 源程序,调用编译系统的词法分析和语法分析 模块产生中间数据结构,再调用解释执行控制器对源程序语句进行解释执行。 ( 2 ) 中间数据结构前面已提到j a v a s c r i p t 程序在编译过程中无需生成目标代码, 而只要产生某种形式的中间结果。中间数据结构正是源程序经编译系统进行词法分析 和语法分析后产生的中间结果。它包含程序流程结构和数据字典两方面的内容。程序 1 2 华中科技大学硕士学位论文 流程结构中包含了各种语句结构,数据字典是用来存放程序数据的地方,它是指存贮 的全局变量、子程序中的局部变量和复合语句中的局部变量的集合。数据字典供表达 式归约器在归约过程中查找所需要的数据。中间数据结构是整个解释系统运行的基 础,是编译系统和解释系统联系的纽带。 ( 3 ) 执行栈执行栈是表达式归约器所要用到的数据结构,它包含一个符号栈和 一个操作数栈,分别用来存放表达式归约过程中的终结符号和操作数。 ( 4 ) 对象库对象库也是用来存放程序数据的地方,它是指存贮的系统定义对象、 浏览器文档模型中的对象和用户自定义对象的集合。对象库为解释器的对象解释提供 了运行基础,同时也为解释系统与浏览器的交互提供了运行机制。它包含了对象的属 性、方法和事件处理等方面的内容。 ( 5 ) 解释执行控制器解释执行控制器负责根据预先生成好的中间数据结构,按 照语句的语义对源程序语句进行逐条解释执行。它控制程序的顺序执行过程。执行过 程中调用语句解释器解释执行单条语句,并根据解释结果控制程序的继续执行或终 止。 ( 6 ) 子旬解释器子句解释器完成单条语句的解释执行。每一种类型的语句都对 应一个语句解释器。它根据语句类型完成相应的语义动作。子句解释器在解释过程中 调用表达式归约器计算表达式的值,并根据计算结果控制语句流程。 ( 7 ) 表达式归约器表达式归约器完成在语句执行过程中组成语句的各种表达式 的运算。表达式归约器按照表达式的产生式规则找出子表达式进行归约最终得出表达 式的运算结果。归约过程中会调用相应的子表达式归约器完成子表达式的语义处理。 ( 8 ) 子表达式归约器完成表达式归约过程中子表达式的语义处理。j a v a s c r i p t 语 言文法中每一条表达式的产生式规则都对应一个子表达式归约器。子表达式的归约会 在数据字典和对象库中查找所需要的数据,并对执行栈进行操作。 ( 9 ) 对象解释对象解释实现j a v a s c 却t 语言基于对象的特性,它包含对象的引用、 方法调用和事件处理。在对象解释过程中,解释器通过对象属性值的变化、对象的方 法调用或事件处理完成与浏览器的交互。与浏览器交互模块完成脚本程序的解释执行 1 3 华中科技大学硕士学位论文 对网页产生的副作用,修改浏览器对象的属性,影响或改变浏览器的输出显示。如引 起网页中的控件位置变化、触发网页中表单的提交等。 ( 1 0 ) 系统资源管理嵌入式系统中的c p u 资源和内存资源都极为宝贵,为了保障 系统的实时性和稳定性,必须对这两种资源进行有效的管理。系统资源管理作用于整 个解释器,对解释器所用到的内存资源进行分配和回收,对c p u 资源进行合理控制。 至此,我们大致上建立了解释系统的基本框架。上述解释系统所用到的数据结构 和各模块的详细设计将在后续章节详细描述。 2 4 本章小结 本章首先从浏览器的发展需要和功能实现两方面论述了解释器在浏览器系统中 的必要性和重要性,并根据浏览器的系统结构说明了解释器与浏览器其它各模块问的 关系。然后,结合浏览器的需要,明确了解释系统的设计目标。最后,详细讨论了 j a v a s c 邱t 语言的特性和层次结构,并在此基础上阐明了解释系统的设计思想。根据 这一思想给出了解释系统的整体结构,并对解释系统所用到的数据结构和各模块功能 作了简要介绍。 1 4 华中科技大学硕士学位论文 3 解释器的设计与实现 按照前述解释器的设计思想和整体结构,本章将详细描述解释器各模块的设计与 实现。内容包括解释引擎、解释执行控制器、各种语句解释器、表达式归约器和各种 子表达式归约器以及系统资源管理。在描述过程中以介绍设计思想、所用到的数据结 构和算法为主。 中间数据结构是解释器和编译器联系的纽带,是整个解释器运行的基础。在介绍 解释器的设计与实现过程之前,有必要先介绍一下中间数据结构。 3 1 中间数据结构 一般地,解释性语言在执行过程中,都预先通过编译器翻译成某种形式的中间代 码,最常见的就是字节码,然后解释器再对中间代码进行解释执行。本文所讨论的解 释器将j a v a s c r i p t 源程序翻译成一种自定义的中间数据结构,再根据这一结构对源程 序进行解释执行。中间数据结构由编译器在词法分析和语法分析阶段产生,包含程序 流程结构和数据字典两方面的内容。在此,只描述其结构,具体生成过程在编译器中 完成,不属本文讨论范围。 3 1 1 程序流程结构 程序流程结构设计成链表的形式,以便解释器能够顺序遍历取到每一条语句。链 表中的每一个节点表示一条语句,节点结构定义如下( 采用c 语言定义,以下同) : t y p e d e f s t r u c ts t a t e m e n t _ n o d e s t m n z e s t a t e m e n t _ t y p e ; u n i o n a s s i g ns t m t i fs t m t f o rs t m t + a s s i g n _ s t m t ; * i fs t m t ; 4 f o rs t i n t ; 1 5 华中科技大学硕士学位论文 1 w -i f o r i n _ s t m t 4 f o r i n _ s t m t ; w i t h _ s t m t + w i t h _ s t m t ; w h i l es t m t+ w h i l e s t m t ; c m p ds t m t4 c m p ds t m t ; f u ns t m t4 f u n _ s t r u t ; s w i t c hs t m t4 s w i t c h _ s t m t ; r e t u r n _ s t m t 4 r e t u r n _ s t m t ; s t a t e m e n t ; s t m c ts t a t e m e n t _ n o d e4 n e x t ; s t r u c ts t a t e m e n t _ n o d e+ o u t e r ; s t a t e m e n tn o d e ; 节点中,s t a t e m e n t _ t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏无锡市妇联实验托幼中心招聘编外工作人员10人备考考试题库附答案解析
- 2026粤规科技校园招聘备考考试题库附答案解析
- 工厂安全培训活动的感想
- 资阳现代农业发展集团有限公司下属子公司一般员工市场化招聘(6人)备考考试题库附答案解析
- 工厂安全培训标语课件
- 线上线下数据联动-洞察及研究
- 2025重庆大学土木工程学院科研团队劳务派遣工勤人员招聘1人备考考试题库附答案解析
- 2025版男科疾病常见症状及护理技巧
- 运动饮食养成之道
- 发动机轻量化设计-第1篇-洞察及研究
- Kappa测试数据分析报告
- 安吉汽车物流运输优化方案全套
- 新教材-人教版高中物理选择性必修第一册 第一章 动量守恒定律 知识点考点重点难点提炼汇总
- 变更董事股东会决议
- 02jrc901b电子海图操作jan中文说明书
- 精选幼儿园体能大循环方案
- 全国中学生物理竞赛复赛实验考查
- 例谈小组合作学习在小学英语教学中的有效开展(讲座)课件
- 部编版五年级道德与法治上册第3课《主动拒绝烟酒与毒品》优秀课件【最新】
- 《认识分式》教学课件【初中数学】公开课
- 制造企业物料试用单
评论
0/150
提交评论