




已阅读5页,还剩61页未读, 继续免费阅读
(计算机应用技术专业论文)aspphp程序转换系统的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连理工大学硕士学位论文 摘要 当前网络的蓬勃发展,形成了以a s p 、p h p 、j s p 为主流的w e b 页面开发技术。a s p 简单实用,深受w e b 页面开发者的青睐。p h p 编写的代码执行起来会更快,能实现同 样功能的p h p 代码,不用改变就可以在不同的w e b 服务器上、不同的操作系统下运行。 p h p 的这一优点使许多w e b 页面开发者试图将a s p 程序手工转换为p h p 程序。若a s p 程序很多很大,手工转换既费时又费力,因此迫切需要一种能够实现这两种程序之问自 动转换的工具。 本文设计和实现了基于编译程序原理的a s p p h p 程序转换系统,实现了a s p 程序 到p h p 程序的自动转换,提高了a s p 程序转换为p h p 程序的效率。 本文主要分析了编译程序词法分析、语法分析、语义分析等三个阶段的工作原理, 并将其应用到本文所设计的系统中:词法分析从左至右逐个字符地对源程序进行扫描, 产生一个个单词序列,用以语法分析 语法分析把源程序的记号进一步分组,产生语法 树来表示a s p 程序的结构;语义分析遍历语法树,查找规则库实现a s p 程序到p h p 程 序的映射;最后再次遍历语法树,生成p h p 程序。从编译程序中符号表的总体组织和 表项属性信息组织来看,符号表是一种算法复杂性很高的数据结构,而且也不利于用户 与图形界面的交互。本文在深入研究编译程序各阶段的实现过程的基础上,结合a s p 程序和p h p 程序的特点,给出了一种用对象来代替符号表的内存管理方法,因为对象 结构简单,又非常适合表示层次结构,使语法树也很适合对象化。本文还利用文本组件 的文档定制实现了用户与图形界面的交互,这是本文的创新之处。另外,在创建语法树 时,本文采用了合成模式;在遍历语法树时,采用了访问者模式。 最后,本文利用j b u i l d e r x 等开发工具实现了a s p p h p 程序转换系统,在可操作性、 实用性、通用性、可扩展性等方面达到了一定的要求,取得了较好的效果。 关键词:编译程序;a s p 程序;p h p 程序;转换系统 大连理工大学硕士学位论文 d e s i g na n d r e a l i z a t i o no fa s p - p h p p r o g r a mt r a n s f o r m a t i o ns y s t e m a b s t r a c t n o wv i g o r o u sd e v e l o p m e n to fn e t w o r kf o r m sw e bd e v e l o pt e c h n o l o g i e sw h i c ht a k e a s p 、p h p 、j s pa sm a i ns t r e a m a s pi ss i m p l ea n dp r a c t i c a l s oi ti saf a v o r i t eo fw e b d e v e l o p e r s p h pp r o g r a mi sf a s t e rw h e ne x e c u t i n ga n di tc a nr u na td i f f e r e n tw e bs e r v e ra n d d i f f e r e n to p e r a t i n gs y s t e mw i t h o u tf u n c t i o nc h a n g m g d u et ot h ea d v a n t a g em a n yw e b d e v e l o p e r st r yt ot r a n s f o r ma s pp r o g r a mi n t op h _ pp r o g r a mb yh a n d i fa s pp r o g r a m sa r e t o om a n yo rt o ol o n g ,t r a n s f o r m i n gt h e mb yh a n di se i t h e rt i m e - c o n s u m i n go ra r d u o u s s oi ti s u r g e n tt of i n dat o o lw h i c hc a nt r a n s f o r mt h e s et w op r o g r a m sa u t o m a t i c a l l y i nt h i sp a p e ra s p p h pp r o g r a mt r a n s f o r m a t i o ns y s t e mb a s e do nc o m p i l e rp r i n c i p l e si s d e s i g n e da n dd e v e l o p e d a n dt h es y s t e mi m p l e m e n t st r a n s f o r m a t i o nf r o ma s pp r o g r a mt o p h pp r o g r a m a n de f f i c i e n c yo ft r a n s f o r m i n ga s p p r o g r a mi n t op h pp r o g r a mi si m p r o v e d i nt h ep a p e rt h ep r i n c i p l eo fl e x i c a lp a r s i n g , s y n t a xp a r s i n ga n ds e m a n t i cp a r s i n ga r e a n a l y z e di nd e t a i l a n di ti sa p p l i e dt ot h es y s t e mt h a tw ed e s i g n e d :l e x i c a lp a r s i n gs c a n s e v e r yc h a r a c t e ro fs o u r c ep r o g r a mf r o ml e f tt or i g h ti nt u r na n dp r o d u c e sw o r ds e q u e n c e sf o r s y n t a x p a r s i n g ;s y n t a xp a r s i n gg r o u p st o k e n i z e r so fs o u r c ep r o g r a mf a r t h e ra n dp r o d u c e s s y n t a xt r e et oe x p r e s st h es t r u c t u r eo fa s pp r o g r a m ;s e m a n t i cp a r s i n gw a l k ss y n t a xt r e ea n d l o o k sf o rw a r e h o u s eo fr u l e sf o ri m p l e m e n t i n gm a p p i n go fa s pp r o g r a mt op h pp r o g r a m ;a t l a s tc o d ep r o d u c t i o nw a l k ss y n t a xt r e ea g a i na n dp r o d u c e sp h pp r o g r a m s y m b o lt a b l ei sd a t a s t r u c t u r ew h i c hh a sh i g ha r i t h m e t i cc o m p l e x i t y 丘o mw h o l es t r u c t u r ea n di t e m s a t t r i b u t e i n f o r m a t i o n ,a n di ti si n c o n v e n i e n tf o ru s e r st oi n t e r a c tw i t hg r a p h i ci n t e r f a c e i nt h i sp a p e r , o nt h eb a s eo fr e s e a r c h i n gp r o c e s so fc o m p i l e ra n dc o m b i n i n gc h a r a c t e r i s t i c so fa s pw i t h p h p p r o g r a ma l li d e ao fr e p l a c i n gs y m b o lt a b l ea so b j e c ti sb r o u g h tf o r w a r d b e c a u s eo b j e c ti s s i m p l ea n df i tt oe x p r e s sh i b e r a r c h y a n dt h ei n t e r a c t i o no fu s e r sa n dg r a p h i ci n t e r f a c ei s i m p l e m e n tu s i n gd o c u m e n tc u s t o m i z a t i o no ft e x td i s c r e t e n e s s i na d d i t i o n ,w h e nc r e a t i n g s y n t a xt r e et h ep a p e ra d o p t sc o m p o s i t em o d e a n dw h e nw a l k i n gs y n t a xt r e ev i s i t o rm o d e a tl a s tt h es y s t e mi si m p l e m e n t e du s i n gj b u i l d e r xa n do t h e rd e v e l o p i n gt o o l s i tm e e t s w i t hc e r t a i nr e q u i r e m e n t so fm a n e u v e r a b i l i t y ,p r a c t i c a b i l i t y ,v e r s a t i l i t ya n de x t e n d a b i l i t y a n d i to b r a i n sg o o de f f e c t k e yw o r d s :c o m p i l e r :a s pp r o g r a m ;p h pp r o g r a m :t r a n s f o r m a t i o ns y s t e m 独创性说明 作者郑重声明:本硕士学位论文是我个人在导师指导下进行的研究工 作及取得研究成果。尽我所知,除了文中特别加以标注和致谢的地方外, 论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得大连理 工大学或者其他单位的学位或证书所使用过的材料。与我一同工作的同志 对本研究所做的贡献均己在论文中做了明确的说明并表示了谢意。 大连理i 大学硕十学位论文 大连理工大学学位论文版权使用授权书 本学位论文作者及指导教师完全了解“大连理工大学硕士、博士学位论文版权使用 规定”,同意大连理工大学保留并向国家有关部门或机构送交学位论文的复印件和电子 版,允许论文被查阅和借阅。本人授权大连理工大学可以将本学位论文的全部或部分内 容编入有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和汇编学位论 文。 作者签名:尚风传 导师签名:! 虱鱼:逡 塑年j 三月j e 1 人迕理l 大学硕士学位论文 1 绪论 1 1 研究背景 当今互联网应用非常广泛,其中主要应用是w w w 服务,也即是网站的建设。各 种网站开发技术也是层出不穷,各有利弊。目前,有三种w e b 页面开发技术占据主流, 它们是:a s p 、p h p 和j s p 。 a s p 是一个w e b 服务器端的开发环境,利用它可以产生和运行动态的、交互的、 高性能的w e b 服务应用程序。a s p 采用脚本语言v bs c r i p t ( j a v as c r i p o 作为自己的开发 语言【”。 p h p 是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用c 、j a v a 和p e d 语言的语法,并耦合p h p 自己的特性,使w e b 开发者能够快速地写出动态生成页面。 它支持目前绝大多数数据库。还有一点,p h p 是完全免费的,而且可以不受限制地获得 源码,甚至可以从中加进你自己需要的特色1 1 j 。 j s p 是s u n 公司推出的新一代站点开发语言,它完全解决了目前a s p 、p h p 的一个 通病一脚本级执行( 据说p h p 4 也已经在z e n d 的支持下,实现编译运行) 。s u n 公司借助 自己在j a v a 上的不凡造诣,将j a v a 从j a v a 应用程序和j a v aa p p l e t 之外,又有新的硕果, 就是j s p j a v as e r v e rp a g e 。j s p 可以在s e r v e d e t 和j a v a b e u n 的支持下,完成功能强大 的站点程序。 a s p 最大的缺点是它是一个专有系统,而只能在m i c r o s o f ti n t e r n e ti n f o r m a t i o n s e r v e r ( i i s ) i - 使用,这限制了它只能在基于w i n 3 2 的服务器上使用,即只能支持w i n d o w s 操作平台。而用p h p 编写的代码执行起来会更快,能实现同样功能的p h p 代码,不用 改变就可以在不同的w e b 服务器上、不同的操作系统下运行。 1 2 研究的目的和意义 鉴于a s p 和p h p 的优缺点,很多用户想把a s p 程序转换为p h p 程序,使其适合 于不同的平台。然而,靠手工进行代码的转换,就要求看懂代码,这样既浪费时间,又 存在很大的难度。如果借助于程序转换工具,则节省了不少的时间。 为了实现a s p 程序到p h p 程序高效率的转换,必须设计出切实可行的解决方案。 将问题一般化,实际上是要实现源程序到目标程序的转换。自然,源程序就是指a s p 程序,目标程序就是p h p 程序。在自然语言处理领域中,编译程序是将用高级程序设 计语言书写的源程序,翻译成等价的用计算机汇编语言、机器语言或某种中间语言表示 的目标程序的翻译程序。编译程序必须分析源程序,然后综合成目标程序。 肖风纬:a s p p h p 程序转换系统的设计与实现 在编译程序中,源程序的分析是经过词法分析、语法分析和语义分析三个步骤实现 的。词法分析的任务是识别单词、造符号表和常数表,以及将源程序换码为编译程序易 于分析和加工的内部形式。语法分析的主要任务是根据语言的语法规则,检查源程序是 否合乎语法,并分解源程序。如果不合乎语法,则输出语法出错信息;如果合乎语法, 则分解源程序的语法结构,构造中间语言形式的内部程序。语法分析的目的是掌握单词 是怎样组成语句的,以及语句又是如何组成程序的。语义分析程序进一步检查合法程序 结构的语义正确性,其目的是保证标识符和常数的正确使用,把必要的信息收集和保存 到符号表或中间语言程序中,并进行相应的语义处理。 编译器是用符号表来记录名字的作用域以及绑定信息。符号表是一个复杂性很高的 数据结构,而且一般要在一个编译程序中建立很多张符号表,增大了开发的难度1 2 j ,如 果设计一种比较简单的数据结构,就会大大降低开发的难度。 那么借助于编译程序的原理,并对其实现的细节进行简化或改造,提供高效率的转 换过程,就成为本文的研究目的。 1 3 国内外研究现状 传统的编译器中语法和语义的密切关联使得编译器本身缺乏可复用性和可扩充性, 国内外也在研究将面向对象方法和类库技术引入到编译系统中。 另外,在传统编译器构造中,词法分析、语法分析和语义处理是相互分割的不同阶 段,有自己独立的论域空间。而面向对象的编译器构造中,消除了这种分割的空间,通 过将语法单元封装成类,每个类中既有词法分析行为又有语法分析和语义处理行为,将 这三个分割的空间组合成一个更大的统一的空间,这个空间中包含了不同的语法单元, 每个语法单元之间具有独立性,大大降低了维护的难度。 为了提高软件开发的效率和保证质量,人们除了要在软件工程中对软件开发过程遵 循规范化或标准化外,还尽量使用先进的软件开发技术和相应的软件工具,而大部分软 件工具的开发,常常要用到编译技术和方法。实际上编译程序本身也是一种软件开发工 具。为了提高编程效率,缩短调试时间,软件工作人员研制了不少对源程序处理的工具。 这些工具的开发不同程度地用到编译技术和方法【3 】。例如: ( 1 ) 语言的结构化编辑器:引导用户在语言的语法制导下编制程序,能自动地提供 关键字和与其匹配的关键字。 f 2 1 语言程序的调试工具:高效率地调试编译后的程序发现的语法错误。 ( 3 ) 语言程序静态测试工具:对源程序进行语法分析并制定相应表格,检查变量定 义与引用的关系。 大连理1 大学硕士学位论文 ( 4 ) 语言程序动态测试工具:在源程序的适当位置插入某些信息,并用测试用例记 录( 显示语句或函数1 程序运行时的实际路径。将运行结果与期望的结果进行比较分析, 帮助编程人员查找问题。这种测试工具在国内已有开发,如f o r t r a n 语言和c 语言 的测试工具。 ( 5 ) 高级语言之间的转换工具:对被转换的语言进行词法和语法分析,在国内已研 制出c ,p a s c a l ,f o r t r a n 到a d a 的翻译器和i b m4 7 0 0 汇编到c 的转换器,其效 果很好。近年来,由于j a v a 语言的发展,国内外也已研制出不少其他语言到j a v a 的 转换系统,如c 到j a v a 的转换系统,c o b o l 到j a v a 的转换系统等等。 1 4 本文的主要工作 本文的主要工作包括以下几个方面: n ) 对编译程序的工作过程进行了研究分析,详细研究了词法分析、语法分析以及 语义分析的过程。 伫) 本文在深入剖析符号表的组织基础上,结合a s p 程序和p h p 程序的特点,给 出了一种用对象来代替符号表的内存管理方法,结构简单,更方便用户与图形界面的交 互,更易于管理和维护。 ( 3 ) 给出了在语法分析阶段应用透明式的合成模式创建语法树的方法;在语义分析 和p i - p 代码生成阶段应用访问者模式遍历语法树的方法。 h ) 实现了a s p 程序到p h p 程序的转换,利用文本组件的文档定制实现了用户与 图形界面的交互。 ( 5 ) 进行了系统测试,并对转换结果进行了分析。 肖凤纬:a s p - p h p 程序转换系统的设计与实现 2 程序转换原理及工作过程分析 2 1 概述 近几年来,编译器的组成已从管道( p i p e l i n e ) 体系结构逐步发展为以树结构为核心的 仓库式体系结构【4 1 。本章比较全面的介绍了与程序转换相关的编译程序技术,包括词法 分析、语法分析和语义分析的原理及工作过程。 2 2 词法分析 2 2 1 词法分析概述 词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个 字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词( 也 称单词符号或符号) 。这里所谓的单词是指逻辑上紧密相连的一组字符,这些字符具有 集体含义。比如标识符用于表示变量名,是由字母字符开头,后跟字母、数字字符的字 符序列组成的一种单词。保留字( 关键字或基本字) 是一种单词,此外还有算符、界符等 等。 2 2 2 正规表达式与正规集 程序设计语言中的单词是基本语法符号。单词符号的语法可以用有效的工具加以描 述,并且基于这类描述工具,可以建立词法分析技术,进而可以建立词法分析程序的自 动构造方法。用以描述单词符号的工具是正规式。 正规式也称正则表达式,是说明单词的模式的一种重要的表不- - 周。: 1 ni 可:m ) ,是定义正 规集的工具h 。 正规式也是表示正规集的数学工具。下面是正规式和它所表示的正规集的递归定 义。 定义f 正规式和它所表示的正规集1 : 设字母表为,辅助字母表= 咖s ,i ,。,+ ,( ,) ) 。 ( 1 ) s 和驴都是上的正规式,它们所表示的正规集分别为 s ) 和 ) ; ( 2 ) 任何口r ,a 是r 上的一个正规式,它所表示的正规集为如 ; ( 3 ) 假定e j 和印都是上的正规式,它们所表示的正规集分别为l ( e ) 和l ( e 2 ) ,那 么,0 心( e 川0 z ) ,0 顶e 0 ,p ,) 也都是正规式,它们所表示的正规集分别为工( 旬) ,l 0 j ) u 0 z ) ,工0 - 皿0 z ) 和仁0 - ) ) 。 大连理t 大学硕士学位论文 ( 4 ) 仅由有限次数使用上述三个步骤而定义的表达式才是上的正规式,仅由这些 正规式所表示的字集才是上的正规集。 若两个正规式e j 和e 2 所表示的正规集相同,则说句和龟等价,写作e l ;句。 设r ,s ,t 为正规式,正规式服从的代数规律有: ( 1 ) r b 卜“或”服从交换律 ( 2 ) r l ( s l t ) = ( r s ) t“或”的可结合律 ( 3 ) ( r s ) t = r ( s t )“连接”的可结合律 ( 4 ) r ( s l t ) = r s ( s l t ) r = s r l t r 分配律 ( 5 ) 盯_ ,r e :- r是“连接”的恒等元素零一律 ( 6 ) r i r = r r * - - d r i r r | “或”的抽取律 令= 和,6 ) ,上的正规式和相应的正规集的例子有: 正规式正规集 a 和 a l ba ,6 ) a b 曲 拉) 0 睁)a a ,a b ,b a ,b b a 岛a ,a ,任意个a 的串 ( a l b ) ,a ,b ,a a ,a b ,所有由a 和b 组成的串) ( a l b ) ( a a b b ) ( a l b ) + 上所有含有两个相继的n 或两个相继的b 组成的串) 2 2 3 有穷自动机 有穷自动机( 也称有限自动机) 作为一种识别装置,它能准确地识别正规集,即识别 正规文法所定义的语言和正规式所表示的集合,引入有穷自动机这个理论,正是为词法 分析程序自动构造寻找特殊的方法和工具【6 】o 有穷自动机分为两类:确定性有穷自动机( d e t e r m i n i s t i cf i n i t ea u t o m a t a ) 和非确定性 有穷自动机( n o n d e t e r m i n i s t i cf i n i t ea u t o m a t a ) 。 一个确定性有穷自动机( d f a ) m 是一个五元组:胜( 砭,工s ,z ) 其中: ( 1 ) k 是一个有穷集,它的每个元素称为一个状态; ( 2 ) 是一个有穷字母表,它的每个元素称为一个输入符号,所以也称为输入符 号字母表; 肖凤纬:a s p 。p h p 程序转换系统的设计与实现 ( 3 ) ,是转换函数,是一k 上的映射,即,如f ( k l ,n ) = 弓, e k ,_ ! 叼就 意味着,当前状态为k ,输入符为a 时,将转换为下一个状态“把岛称作岛的一个后 继状态: ( 4 ) s k 是唯一的一个初态; f 5 1z c k 是一个终态集,终态也称可接受状态或结束状态。 为被两个字符的序列分隔开的注释编写一个正则表达式很难,c 语言注释的格式 + ( n os s 1 就是这样的。编写接受这个注释的d f a 比编写它的正则表达式实 际上要简单许多,图2 1 中的d f a 就是这样的c 注释。 d t h e r d t h e l 图2 1 有c 风格注释的有穷自动机 f i g 2 1f i n i t ea u t o m a t i o no fcc o m m e n t 在该图中,由状态3 到其自身的o t h e r 转换表示除“一之外的所有字符,但由状态 4 到状态3 的o t h e r 转换则表示除“一和“”之外的所有字符。为了简便起见,还给状 态编了号,但仍能为状态赋予更多有意义的名字,;b t 所示f 在括号中带有其相应的编 号) :s t a r t ( 1 ) 、e n t e r i n g _ c o m m e n t ( 2 ) 、i n _ c o m m e n t ( 3 ) 、e x i t i n g _ c o m m e n t ( 4 ) 和f i n i s h ( 5 ) 。 一个d f a 还可以用一个矩阵表示,该矩阵的行表示状态,列表示输入字符,矩阵 元素表示相应状态行和输入字符列下的新状态,即k 行n 列为触,n ) 的值。 表2 1 是c 注释的d f a 的矩阵表示。 这种方法被称作表驱动【”,这是因为它们利用表格来引导算法的过程。表驱动方法 有若干优点:代码的长度缩短了,相同的代码可以解决许多不同的问题,代码也较易改 变f 维护1 了。但也有一些缺点:表格会变得非常大,使得程序要求使用的空间也变得非 常大。实际上,本文刚描述过的数组中的许多空间都是浪费了的。因此,尽管表压缩经 常会多耗费时间,但是表驱动的方法经常仍要依赖于诸如稀疏数组表示法的压缩方法, 这是因为扫描程序的效率必须很高,因此尽管可能会在诸如l e x 的扫描程序生成器程序 上用到它们,也是仍很少用到这些方法。 大连理t 大学硕士学位论文 2 3 语法分析 23 1 语法分析概述 为了避免重复说明“这些是终极符”或者“那些是非终极符”等等,本文以后将采 用下列与文法有关的约定: ( 1 ) 非终结符用斜体表示。 ( 2 ) 终结符用黑体表示。 ( 3 1 黑体串,如i d l 等。 语法分析是编译过程的第二个阶段。语法分析的任务是在词法分析的基础上将单词 序列分解成各类语法短语,如“程序”,“语句”,“表达式”等等【8 l o 一般这种语法 短语,也称语法单位可表示成语法树,比如单词序列i d l := i d 2 + i d 3 * 1 0 经语法分析得知 其是, p a s c a l 语言的“赋值语句”,表示成如图2 2 所示的语法树或是图2 3 所示的那 种形式。 语法分析所依据的是语言的语法规则,即描述程序结构的规则。每种程序设计语言 都有描述程序语法结构的规则。这些规则可以用上下文无关文法或b n f 范式描述。 通过语法分析确定整个输入字符串是否构成一个语法上正确的程序。程序的结构通 常是由递归规则表示的,例如,可以用下面的规则来定义表达式: ( 1 ) 任何标识符是表达式。 ( 2 ) 任何常数( 整常数、实常数) 是表达式。 ( 3 ) 若表达式l 和表达式2 都是表达式,那么:表达式1 + 表达式2 以及表达式1 表达式2 都是表达式。 表2 1c 注释的d f a 的矩阵表示 t a b 2 1d f am a t r i xo fcc o m m e n t 类似地,语句也可以递归地定义,如 肖风纬:a s p - p h p 程序转换系统的设计与实现 ( 1 ) 标识符:= 表达式是语句。 ( 2 ) w h i l e ( 表达式) d o 语句和i f ( 表达式) t h e n 语句e l s e 语句都是语句。 语法分析的功能是进行层次分析,把源程序的单词序列组成语法短语f 表示成语法 树) ,依据的是语法规则。 单词序列i d l := i d 2 + i d 3 4 1 0 之所以能表示成图2 1 3 的语法树,依据的是赋值语句和 表达式的定义规则。 图2 2 语句i d l := i d 2 + i d 3 * 1 0 的语法树 f i g 2 2s y n t a xt r e eo fi d l := i d 2 + i d 3 * l o 图2 3 语句i d l := i d 2 + i d 3 * 1 0 的语法树的另一种形式 f i g 2 3o t h e rs y n t a xt r e eo fi d l := i d 2 + i d 3 * 1 0 2 3 2 上下文无关文法 整数 1 0 设g = ( v n ,埒,p ,d ,若尸中的每一个产生式口一卢满足:a 是一非终结符,p ( 珞 u 嘲+ 则此文法称为2 型的或上下文无关的【9 1 。 辛 挈 荤萼胥辛 f 大连理。i i 大学硕士学位论文 上下文无关文法有足够的能力描述现今程序设计语言的语法结构,比如描述算术表 达式,描述各种语句等等。 描述语句的产生式:c 语句 - - - - , f 循环语句, 2 3 ,3 语法树 给定文法g = ( v n ,v r ,p ,$ ,对于g 的任何句型都能构造与之关联的语法树( 推导 树) 。 这棵语法树应该满足下列4 个条件: ( 1 ) 每个节点都有一个标记,此标记是y 的一个符号。 ( 2 ) 根的标记是s 。 ( 3 ) 若一个节点露至少有一个它自己除外的子孙,并且有标记4 ,则4 肯定在吩 中。 ( 4 ) 如果节点n 的直接子孙,从左到右的次序是节点- j ,1 2 ,n t ,其标记分别 为a j ,a 2 ,a t ,那么爿刊4 2 ,血一定是p 中的一个产生式【9 1 。 2 ,4 自下而上语法分析方法 2 ,4 ,1 归约 移进一归约分析为输入串构造分析树是从叶节点开始,朝着根节点逆序前进。可以 把这个过程看成是把输入串归约成文法的开始符号。在每一步归约,一个子串和某个产 生式的右部匹配,然后用此产生式的左部符号代替这个子串。如果每步都能恰当地选择 子串,那么它实际跟踪的是最右推导过程的逆过程。 2 4 2 句柄 非形式地说,一个旬型的句柄是和一个产生式右部匹配的子串,并且,把它归约成 此产生式左部的非终结符代表了最右推导过程的逆过程的一步。在很多情况下,句型中 能和某个产生式爿一卢右部匹配的最左子串廊尤是句柄:但并非总是这样,有的时候用这 个产生式归约产生的串不能归约到开始符号。基于这一点,必须给句柄更精确的定义。 形式地说,右句型( 最右推导可得的句型) y 的句柄是一个产生式的右部卢以及y 中的一 个位置,在这个位置可找到串卢,用a 代替觑有产生式爿一国得到最右推导的前一个右句 型。注意,如果文法二义,那么句柄可能不唯一,因为一个句子可能不只一个最右推导。 只有文法无二义时,它的每个右句型才有唯一的句柄。 肖风纬:a s p - p h p 程序转换系统的设计与实现 2 4 3 用栈实现移进一归约分析 如果使用移进一归约的方式分析句子,有两个问题必须解决。第一个,确定右句型 中将要归约的子串:第二个,如果这个子串是多个产生式的右部,如何确定选择哪一个 产生式。在进入这些问题之前,首先看一下移进一归约分析器所使用数据结构的类型。 实现移进一归约分析的一种方便的办法是用栈保存文法符号,用输入缓冲区保存要 分析的串w ,用$ 标记栈底,也用它标记输入串的右端。起初,栈是空的,串w 在输入 中,如下所示: 栈输入 $w $ 分析器移动若干个( 包括是零个) 输入符号入栈,直到句柄卢在栈顶为止,再把卢归约 成恰当的产生式左部。分析器重复这个过程,直到它发现错误;或者直到栈中只含开始 符号并且输入串为空: 栈输入 s s $ 进入这个格局后,分析器停机并宣告分析完全成功。 分析器的基本动作是移进和归约,实际可能的动作还有两种,接受和报错吼 ( 1 ) 移进动作把下一个输入符号移进栈。 ( 2 1 归约动作分析器知道句柄的右端已在栈顶,然后它确定旬柄的左端在栈中的 位置,再决定用什么样的非终结符代替句柄。 ( 3 1 接受动作分析器宣告分析成功。 ( 4 1 报错动作分析器发现语法错误,调用错误恢复例程。 2 5 语义分析 语义分析的任务是进一步检查合法程序结构的语义正确性,把必要的信息收集和保 存到符号表或中间语言程序中,并进行相应的语义处理。最后,根据符号表和中间语言 程序产生出目标程序( 1 0 。 l o 人连理一大学硕士学位论文 3a s p p h p 程序转换系统的总体设计 3 1 系统概述 3 1 1 系统目标 根据以上几章的分析以及a s p - p h p 程序转换系统的特点,将建立起实用的,方便 的a s p p h p 程序转换系统。本系统在设计时遵循了以下原则: ( 1 ) 充分利用现有设备和资源。既要能满足近期要求又要适应长期需要。 ( 2 ) 实用性原则。提高系统的转换率是至关重要的,因为如果转换率过低,大部分 代码需要用户自己修改,就失去了本系统的实用性。因此在设计中要重点分析a s p 程 序的语法特点,给出全面而准确的文法规则以及语义规则,进而进行正确的词法分析、 语法分析、语义分析。 ( 3 ) 可操作性原则。提供可视化界面,使本系统具有高透明性和提示性。 ( 4 ) 先进性原则。在开发平台、数据库、用户界面、硬件设备等诸多方面都力求先 进性,既要考虑当前开发的实际水平和经济因素,又要为未来的发展和升级留下余地。 ( 5 ) 扩展性原则。随着事物的发展,系统应不断的进行改进、扩展,系统在设计时 应充分考虑到系统的扩展性要求,所以系统设计时应尽量采用符合开放式标准的平合、 工具和产品。 ( 6 ) 通用性原则。系统的通用性主要体现在其结构化和模块化设计上。使其设计思 想不仅可用于a s p p h p 程序转换系统,也可移植到其他的领域。 3 1 2 系统的运行环境 j a v a 的“编写一次,随处运行”的特点使得本系统可以移植到任何操作系统上运行, 并且能够很好的支持面向对象思想。所以本系统采用j a v a 语言进行开发。 3 1 3 开发平台及工具 开发平台:操作系统:w i n 2 k 开发工具:j b u i l d e rx 1 1 2 】 3 2 系统的需求分析 3 2 1 系统的功能分析 a s p - p h p 程序转换系统一共分为四大功能模块:文件管理子系统、程序转换子系统、 界面设定子系统和规则文件管理子系统,功能如图3 1 所示: 肖风纬:a s p - p h p 程序转换系统的设计与实现 a s p p h p 程序转换系统 i 文件管理子系统程序转换子系统界面设定子系统 规则文件管理子系统 j上0 上 j lj lj lj l j l ! 一 篁一 j lj l土j lj l 上 新保打 导 导 结果用户 至 风 系颜查添修删 建存开 入 出程 集文与图 吾格绩色找 加改 除工工二 源 目序 本文形界 设设设设规规 规规 程程程 文 标转 档定面的 定定定定则则 则则 文文 文文 换 制交互 件件件 件 件 图3 1 系统的功能图 f i g 3 1f u n c t i o n sc h a r to fs y s t e m 功能简介; f 1 ) 文件管理子系统包括六个小的功能模块:新建工程文件、保存工程文件、打开 工程文件、导入源文件、导出目标文件。 新建工程文件:用户要进行a s p 程序的转换,必须在已有的工程文件中才能导 入要转换的a s p 文件。若系统首次使用,工程文件并不存在,就需要新建工程文件。 保存工程文件:当用户关闭系统时,如果要保存现场信息,以便于下次启动时 重新加载,就要对工程文件进行保存。以后可以打开被保存的工程文件。 打开工程文件:负责打开已经保存的工程文件,然后根据工程文件的信息进行 系统的初始化。 导入源文件:负责导入用户要转换的单个a s p 文件或者某个文件目录下的所有 文件。 导出目标文件:负责将转换后的某个p h p 文件保存在工程文件设置的导出目录。 但) 程序转换子系统是该系统的核心部分,包括三个子模块:程序转换、结果集文 本文档的定制和用户与图形界面的交互。 程序转换:负责将a s p 程序转换为p h p 程序。 结果集文本文档的定制:负责将显示在p h p 视窗中的p h p 程序上色,帮助用户 理解转换的结果。 用户与图形界面的交互:负责在用户对结果集进行编辑时作出响应。 f 3 ) 界面设定子系统包括四个子模块:语言设定、风格设定、系统设定和颜色设定。 人连理一人学硕+ 学位论文 语言设定:为了支持系统的国际化,用户可以设置系统的语言。 风格设定:根据用户的喜好,设置几种显示风格供用户选择。例如:j a v a 风 格、w i n d o w s 风格和m o t i f 风格,还可以设置系统中某些组件的显示或隐藏。 系统设定:用户可以设置导入a s p 文件的最大数量和系统初始化是否加载上次 打开或保存的工程文件。 颜色设定:a s p 程序转换完毕后需要对组件的文本文档进行定制,就根据用户 的设定进行定制,用户可以设定不同的颜色显示方案。 ( 4 ) 规则文件管理子系统包括四个子模块:查找规则、添加规则、修改规则和删除 规则。 查找规则:用户可以输入要查找的关键字,系统负责查找规则库,显示出相应 的规则。 添加规则:用户可以在现有规则库的基础上,添加自己的规则,来参与程序转 换。 修改规则:用户可以将现有的规则进行修改,转换的结果就会发生变化。 删除规则:用户可以删除任意规则。 3 2 2 系统的流程分析 ( 1 1 文件管理子系统 新建工程文件的流程: 第一步,系统弹出工程文件信息输入对话框;第二步,对用户输入信息进行合法性 验证。如不合法,弹出警告对话框;第三步,系统初始化工程文件模型。 保存工程文件的流程: 第一步,将工程文件模型对象序列化;第二步,将序列后的对象保存在文件系统中。 打开工程文件的流程: 第一步,弹出目录选择框,用户选择要打开的工程文件;第二步,验证该工程文件 是否存在;第三步,访问文件系统,找到工程文件存放位置,返回字节流;第四步,将 字节流反序列化为对象;第五步,根据对象初始化系统。 导入源文件的流程: 第一步,弹出文件选择框,用户选择要导入的目录或单个文件;第二步,验证该目 录或文件是否存在;第三步,访问文件系统,加载目录或文件,根据系统配置设置界面。 导出目标文件的流程: 肖风纬:a s p p h p 程序转换系统的没计与实现 第一步,访问工程文件模型,提取目标文件导出路径;第二步,将目标文件保存到 相应的目录下。 f 2 1 程序转换子系统 程序转换的流程: 第一步,访问该文件a s p 模型的状态转换标志。若已经转换过,询问是否确认重 新转换;第二步,程序转换;第三步,将转换结果显示在p h p 视窗中。 结果集文本文档定制的流程: 第一步,访问系统配置参数模型; 用户与图形界面的交互流程: 第一步,恢复原始文档;第二步, f 3 ) 界面设定子系统 语言设定的流程: 第二步,修改文本组件的文档。 更新文档。 第一步,弹出语言设定对话框;第二步,设置系统配置模型。 风格设定的流程: 第一步,弹出风格设定对话框;第二步,设置系统配置模型。 系统设定的流程: 第一步,弹出系统设定对话框;第二步,设置系统配置模型。 颜色设定的流程: 第一步,弹出颜色设定对话框;第二步,设置系统配置模型。 规则文件管理予系统 查找规则的流程: 第一步,提取检索关键字;第二步,访问系统规则文件配置模型:第三步,显示规 则。 添加规则的流程: 第一步,弹出添加规则对话框;第二步,访问系统规则文件配置模型,检查该规则 是否已经存在;第三步,更新规则文件配置模型。 修改规则的流程: 第一步,弹出修改规则对话框;第二步,更新规则文件配置模型。 删除规则的流程: 第一步,弹出删除规则确认框;第二步,更新规则文件配置模型。 大连理j | = 大学硕+ 学位论文 4 程序转换子系统的设计 41 程序转换子系统的结构框图 程序转换子系统的结构如图4 1 所示: 中端 后端 图4 1 程序转换子系统的结构框图 f i g 4 1s t r u c t u r eo ft r a n s f o r m a t i o ns y s t e m 在本文中,将a s p p h p 程序的转换过程分为三个阶段:前端,中端和后端。在用 户点击“转换”按钮时,系统启动转换线程f ”,1 ”,监视转换的过程,同时更新进度条。 前端即预处理过程,是对a s p 程序进行预处理,即将a s p 程序中h t m l 代码和注 释部分的代码作标志,以便于后来解析a s p 代码时跳过h t m l 和注释部分的代码。 中端包括词法分析、语法分析、语义分析和代码生成四个过程:词法分析是通过扫 描程序从a s p 源程序字符流中逐个地把符号识别出来:语法分析是对符号流进行解析, 并根据上下文无关文法对源程序进行组合分块,从而完成定义程序结构的语法分析,同 时,构造语法树,标识语法树的各节点的部分属性;语义分析是对语法树进行遍历,查 找规则库,并进一步标识语法树的各节点的其他属性【1 5 】;代码生成是对语法树进行再次 遍历,将语法树的各节点的p h p 属性连接,最终构成完整的p h p 目标程序,完成转换。 后端包括文本文档的定制和用户与图形界面的交互:文本文档的定制是对语法树进 行第三次遍历,根据用户的设定对转换结果对象集进行文本文档的定制;用户与图形界 面的交互包括选择p h p 对象的文本文档定制和编辑p h p 对象的文本文档定制。 这一结构对于可移植性十分重要,因为按照这样的结构,既可以改变源代码f 它涉 及到重写前端) ,又能改变目标代码( 它还涉及到重写中端) 。虽然在实际中很难做到,而 且这种结构仍然依赖于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版食品销售合同签订与食品安全监管流程图
- 2025年铁路车辆运输合同标准模板
- 2025版三亚地下综合管廊非开挖顶管监理合同
- 诺如病毒知识培训的意义
- 2025年度房贷合同样本及注意事项
- 2025年度电子商务合作保密协议范本(含数据安全)
- 2025年艺术品贷款居间服务专项协议
- 说课稿课件制作要点
- 语音机器人知识培训课程课件
- 2025深圳市商品房预售合同范本
- 2025年机关事务管理局招聘考试大纲
- 主城区积水易涝点排水防涝管网更新改造工程可行性分析报告(参考模板)
- 早期现代舞课件
- 碳固持效应研究-洞察及研究
- 口腔医保政策解读
- 2024浙江艺术职业学院单招《数学》模拟题库附答案详解(精练)
- 油菜病虫害防治课件
- 小学一年级体育上册教案表格式
- 基于主题语境的高中英语以读促写教学设计研究
- 2025年海南省高考物理试卷(含答案解析)
- GB/T 45817-2025消费品质量分级陶瓷砖
评论
0/150
提交评论