ImageVerifierCode 换一换
格式:DOCX , 页数:117 ,大小:2.58MB ,
资源ID:17832740      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17832740.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计科班编译原理教案Word文档下载推荐.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计科班编译原理教案Word文档下载推荐.docx

1、也是一种翻译程序,它与编译程序的区别:立即执行源程序,通常是逐句翻译执行。如BASIC、SQL、JAVA的BYTECODE解释程序等。二、高级语言程序的处理过程 高级程序设计语言程序的典型处理过程如下图所示:1.2编译过程和编译程序结构一、编译过程的阶段划分 一般编译程序的工作过程按阶段进行,每个阶段将源程序从一种表示形式转换成另一种表示形式。典型的阶段划分方法是将整个编译过程分为如下六个阶段: 1、词法分析: 任务:对构成源程序的字符串进行扫描和分解,识别出单词(如标识符等)符号。 输入:源程序 输出:单词符号序列 例子:有待分析源程序:main() int x=10,y; 词法分析后的输出

2、: 1)保留字: main 2)界符:左圆括号 ( 3)界符:右圆括号) 4)界符:左大括号 5) 保留字:int 6) 标识符:x 7) 运算符:= 8) 常数:10 9) 标识符:y 10) 界符:; 11)界符:右大括号 2、语法分析根据语言的语法规则对单词符号串(符号序列)进行语法分析,识别出各类语法短语(可表示成语法树的语法单位),判断输入串在语法上是否正确。输入:单词序列输出:语法分析后的单词序列 3、语义分析任务:按语义规则对语法分析器归约出的语法单位进行语义分析,审查有无语义错误,为代码生成阶段收集类型信息,并进行类型审查和违背语言规范的报错处理。 输入:语义分析后带语义信息的

3、单词序列 4、中间代码生成(并非所有的编译程序都包含此阶段)将语义分析得到的源程序变成一种结构简单、含义明确、易生成、易翻译成目标代码的内在代码形式。常用的中间代码是四元式(算符,运算对象1,运算对象2,结果)。语义分析后的单词序列中间代码 5、代码优化(可放到目标代码生成阶段后)对中间代码或目标代码进行变换改造等优化处理,使生成的代码更高效。中间代码或目标代码优化后的中间代码或目标代码 6、目标代码生成将中间代码生成特定机器上的绝对或可重定位的指令代码或汇编指令代码。语义分析后的单词序列或优化后的中间代码目标代码二、编译程序结构上述六个阶段的任务分别由六个模块来完成。一个完整的编译程序还应包

4、括表格管理和出错处理程序。典型编译程序结构框图如下:三、编译阶段的组合 1、前后端组合法编译前端:与源语言有关与目标机无关的部分(第1-4阶段)。编译后端:与目标机有关的部分(第6阶段)注:第5阶段置前或后端都可以。组合方式:1)同一源语言的编译前端+不同后端=不同机器上同一源语言的编译程序;2)不同源语言的编译前端生成同一种中间语言+使用共同后端=同一机器上不同语言的编译程序。 2、遍组合法遍/趟:对源程序或源程序的中间结果从头到尾扫描一次称为一遍。每一遍扫视完成一个或几个阶段的工作。一个编译程序可由一遍或多遍完成.实际编译程序分遍的主要参考因素是源语言与目标机器的特征。1.3 编译技术和软

5、件工具一、编译技术的发展 1950S早期:算术工式译成机器代码。 1950S中期:FORTRAN编译系统。 1950S末期:自动生成工具出现,如:LEX、YACC。 1960S:自展技术。 1971年:用自展技术生成PASCAL编译程序。 现代:并行编译技术。二、编译技术与软件工具 1、先进的软件开发技术和软件工具能提高编程效率、缩短调试时间。 2、编译程序本身是一种软件工具。 3、大部分软件工具的开发常用到编译技术和方法。 4、进行源程序处理的软件工具实质上都在不同程度上用到了编译程序各个部分的技术和方法。如: (1)语言结构化编辑器(语法); (2)语言程序调试工具(语法、语义); (3)

6、语言程序测试工具(静、动态测试,发现错误); (4)高级语言之间的转换工具; (5)程序格式化工具、程序理解工具等。例如:Java的传统环境Java编译器把Java代码翻译成独立于机器的Java“字节代码”。运行时,目标装置中的校验器便分析这些字节代码以确保代码的安全执行。在目标装置中,内置一个JVM(Java虚拟机)。该虚拟机用一个解释器或一个JIT(适时)编译器把字节代码翻译成目标处理器能够识别的机器语言。1.4 程序设计语言规范 从支持的计算模式来看,程序设计语言(是指书写计算机程序的高级语言)规范有如下几种: 1、强制命令式语言,即过程式语言 该型 语言中,一个过程可看作是一系列动作,

7、其动作由命令驱动,以语句形式表示,一个语句接一个语句的执行。属于这种规范的语言如PASCAL、C、FORTRAN等,C+、Ada、COBOL等也支持这种模式。本课程介绍的编译技术针对这型语句。 2、函数式语言,即应用式语言 该型 语言注重程序所表示的功能,程序的开发过程是从前面已有函数出发构造出更加复杂的函数,对初始数据集进行操作,直到最后形成的函数可以得到最终结果。属于这种规范的语言如ML、LISP等。 3、基于规则(逻辑)的语言 该型 语言程序的执行过程是检查一定的使能条件,满足时,则执行适当的动作。如逻辑程序设计语言PROLOG,其基本的使能条件是某种谓词逻辑表达式;再如YACC,其使能

8、条件是程序的形式语法(BNF)。 4、面向对象语言 该型语言的主要特点是提供抽象数据类型,支持封装性、继承性和多态性。 C+、Ada、Java等也支持这种模式。1.5 编译程序的构造一、编译程序的构造途径 1、用某种程序语言编写; 2、用编译程序自动构造工具构造。 3、通过现有的编译基础设施进行改造和组装。二、T型图 T型图是用来表示一个编译程序所涉及到的三个方面的语言的一种工具,将源语言S通过用语言H书写的编译器翻译成目标语言T的编译程序可用如下T型图THST表示。 T型图的两种组合方式:三、编译程序的自展 1、方法:用“滚雪球”的方式生成编译程序。 2、思想:先用目标机的汇编语言或机器语言

9、书写源语言的一个子集的编译程序,再用这个子集作为书写语言(属于高级语言),实现源语言的编译程序。例:设 , 目标机A的语言为A ,则两层自展构造实现语言C对应A机器的编译程序过程可描述为如下: 其自展过程:用语言A编写语言C1的编译程序TAC1A;再用C1书写语言C的编译程序TC1CA ;最后再将TC1CA经过TAC1A编译得到 TACA 。四、编译程序的移植、自编译、交叉编译 1、移植:将某一机器(宿主机)上已有的软件移植到另一机器(目标机)上的过程。 2、自编译:用某种语言本身书写自己的编译程序的过程。 例如:在机器A上已有语言C的编译程序(将语言C翻译成A的机器码A),现希望利用此编译程

10、序生成机器B上的语言C的编译程序(将语言C翻译成B的机器码B)。 3、交叉编译:把某源语言在宿主机上经过编译而产生目标机的汇编语言或机器语言的过程。五、编译程序的构造工具 1、LEX 1)基于正规式的词法分析程序的生成器; 2)工作原理:把LEX源程序中的正规式转换为相应的DFA,并将其插入到词法分析函数yylex( ) 中的适当位置。 2、YACC 1)基于LALR(1)文法的语法分析程序的生成器;2)它是目前处理能力最强的语法构造工具,可处理满足LALR(1)文法要求(包括某些二义性文法)的规则。六、可重定向编译程序 1、由于交叉编译是在一个平台上生成另一个平台上的可执行代码的过程。交叉编

11、译受限较多。 2、编译基础设施:为开发各种编译程序成分提供相应生成工具。 3、可重定向编译程序:能够根据不同的目标机生成相应目标代码的编译程序。它将与目标机相关的部分单独编写成不同模块,根据不同的目标机调用不同的模块。自由软件GCC(GNU工程的编译程序集合)是目前使用广泛的可重定向编译程序。 、支持可重定向编译的关键技术1)中间表示技术:区别于四元式等传统的中间表示,支持可重定向编译的中间表示应在适当的抽象层次上,向上能够支持多语言映射、向下能够适应多平台转换后宜于进行各种优化。2) 机器描述技术:区别于传统的假定式体系结构抽象模型的描述技术,支持可重定向编译的机器描述机制应能描述系统和硬件

12、的共性,又能描述它们各自的特性,且能适应于不同编译程序的处理。研究表明,基于体系结构描述语言详细地指定了体系结构是产生高质量机器级工具的关键技术。3)代码生成程序的构造技术:为简化开始过程、提高代码可靠性,支持代码生成程序的自动构造工具是关键技术和主要难点。4)目标机描述与目标代码生成的接口技术:在重定向编译程序的开始过程中,抽取一系列函数和数据结构作为目标机描述与目标代码生成的接口可以简化编译程序的开发,提高编译程序的效率。作业:教材P11-12的1、2、4题2使学生了解文法的直观描述、符号和符号串,掌握文法和语言的形式定义、文法的分类。文法和语言的形式定义、文法的分类文法和语言的形式定义3

13、学时第三章 文法和语言3.1语言概述和文法的直观概念一、基本概念 1、语言:是由句子组成的集合,是由一组符号所构成的集合。 2、汉语:所有符合汉语语法的句子的全体。 3、英语:所有符合英语语法的句子的全体。4、程序设计语言:所有该语言的程序的全体。二、语言研究的内容 1、语法(Syntax):每个句子构成的规律/每个程序构成的规律。表示构成语言句子的各个记号之间的组合规律。在形式语言理论中,阐明语法的工具是文法。 2、语义(Semantics):每个句子的含义/每个程序的含义。表示各个记号的特定含义。(各个记号和记号所表示的对象之间的关系)。 3、语用(Pragmatics):每个句子和使用者

14、的关系/每个程序和使用者的关系。表示在各个记号所出现的行为中,它们的来源、使用和影响。三、文法的直观描述 通常,用句子表述一种语言,但是句子是无穷的。 1、例子 以自然语言为例,人们无法列出全部句子,但是人们可以给出一些规则,用这些规则来说明(或者定义) 句子的组成结构,比如汉语句子可以是由主语后随谓语而成,构成谓语的是动词和直接宾语。下面采用EBNF来表示句子的构成规则。先给定如下一组规则:句子=主语谓语主语=代词名词代词=我你他名词=王明学生工人英语谓语=动词直接宾语动词=是学习直接宾语=代词名词 有了这一组规则后,用它们导出句子的方式如下: 1)找=左端的带有句子的规则并把它由=右端的符

15、号串代替,这个动作表示成: 句子 主语谓语 2)在得到的串主语谓语中,选取主语或谓语,再用相应规则的=右端代替之。 比如:选取了主语,并采用规则主语=代词, 那么得到: 主语谓语 代词谓语, 3)重复上述步骤。 导出句子:“你是学生”的全部动作过程是: 句子 主语谓语 代词谓语你谓语你动词直接宾语 你是直接宾语你是名词你是学生 因此,“你是学生”的构成符合上述规则,而“你学生是”不符合上述规则,因此,它不是句子。 2、文法的直观定义 上例中的规则就是我们判别句子结构合法与否的依据,可以将这些规则看成是一种元语言,用它描述汉语。由此可得文法的直观定义如下: 文法:就是这样一些规则的有穷集合,它是

16、以有穷规则集来刻划无穷句子集合的工具。3.2 符号和符号串1、字母表:元素的非空有穷集,记为 。2、符号:字母表中的元素。3、符号串:符号的有穷序列。4、空符号串:什么符号也不含的符号串,记为。 =a,b,c,d,z。a、b、c都称为符号。hello、stri、aezfg、main、fjfka都是上的符号串。二、符号串的基本操作 1、符号串的长度:符号所包含符号的个数,设x是一符号串,其长度记为|x|。 例:|hello|=5,|main|=4,| |=0。 2、符号串的连接:设x、y是两个符号串,则xy被称为x与y的连接。特别有: x=x=x=x x=my,y=classmate,则xy=m

17、yclassmate。 3、符号串的方幂:设x是符号串,x自身的连接称为符号串的方幂,有:x=ba, x0 = , x1 =ba, x2 =bababa 4、符号串的集合:若集合A中元素都是某字母表上的符号串,则A是上的符号串集合。 5、符号串集合的乘积:若A、B均为上的符号串集合,则AB=xy|xA,y B 设A=ab,cd,B=ef,jh,则AB=abef,abjh,cdef,cdjh A=A, A=A = 。 6、符号串集合的正闭包:设符号串集合A,A的正闭包记为A+ ,A的闭包记为A*。 例: 设=0,1,则 + =0,1,00,01,10,11,000,001。 * =,0,1,00

18、,01,10。3.3 文法和语言的形式定义 1、产生式 设VN ,VT分别是非空有限的非终结符号集和终结符集。V= VN VT , VN VT = 。所谓产生式是一个序偶对( , ) ,其中 V+, V*,通常表示为: 或 =,产生式也叫规则、重写规则、生成式。 0|1|2|3|9 2、文法文法G是一个四元组,G=(VN ,VT , P , S) 。其中:VN ,VT 分别是非空有限的非终结符集和终结符集,且二者交集为;P为产生式集;S VN,是文法的开始符号(或识别符) ,它是一个非终结符,至少要在一条规则中作为左部出现。文法G=(VN ,VT , P , S) ,其中VN =S,B, VT

19、 =0,1,P=S 0B,B 1,B 1B。开始符为S。可用文法的通俗表示法表示如下:GS: S 0B,B 1,B 1B 这个文法表示所有形如01,011,0111,01111的串。 3、直接推导 设是文法G=(VN ,VT , P , S) 的产生式, (VN VT) *,若有符号串v,w满足v=,w=,则称w是v的直接推导,或称v是w的直接归约。记作v=w。现有文法GE:EE+T | T TT*F | F F(E) | i 设v=E+F*i,w=E+i*i,则有v=w 或 E+F*i = E+i*i。 4、推导 如存在一直接推导序列v=0=1=2.=n=u (n0) ,则称符号串u为符号串

20、v的一个推导(或者说v是u的一个归约) ,记为v=+ u;若有v=+u,且有v=u,则记作v=*u。对于上例中文法GE:EE+T | T TT*F | F F(E) | i 设v=E,u=i+i*i,则有:v=+相应的直接推导序列为: E=E+T=E+T*F=E+F*F=T+F*F=F+F*F=F+F*i=F+i*i=i+i*i 5、句型和句子 设GS是一文法,如有 S=* x,则称x是文法GS的句型。若x是GS的句型,且x VT*,则称x是GS的句子。 6、语言 文法GS的语言是GS的所有句子构成的集合。即L(G) =x|S =*x,且xVT* 。文法GS:SMVD M小王|小张 V是|不是

21、 D大学生则文法GS表示的语言可定义为: L(G) =小王是大学生,小王不是大学生,小张是大学生,小张不是大学生 MVD,M是D,M是大学生等均是GS的句型。 7、文法的等价 若L(G1) =L(G2) ,则称G1和G2是等价的。3.4 文法的类型 Chomsky将文法按其所表示的语言的表达能力,由高往低分为四类:0型,1型,2型,3型文法。一、定义 (1)0型文法 如果文法G的产生式 ,其中 (VNVT) * , 且至少含有一个非终结符号, (VNVT) *。则称G为0型文法。0型文法又称短语结构文法。 (2)1型文法 如果0型文法G的产生式满足|=|,仅当= 时例外。则称此文法G是1型文法

22、。1型文法也称上下文有关文法。 (3)2型文法 一个1型文法G,如果满足VN,则称为2型文法。或者说2型文法的产生式都形如A 。2型文法也称上下文无关文法。 (4)3型文法 一个2型文法G,如果产生式全都是形如 A a或A aB,其中:A、B VN ,a VT *,则G为3型文法。3型文法也称正则文法或正规文法或右线性文法。它对应有穷自动机。(5)四类文法产生对应的四类语言。二、文法之间的关系四类文法的定义是通过逐步增加限制条件进行的。即有:3型文法2型文法1型文法0型文法。三、例题 判断下列文法类型:例1:S aSYZ SaYZ aYay yYyy yZyz ZYYZ zZzz例2:S xS

23、YZ SxYZ xYx yYyy yZyz ZYYZ zZzz例3:SaT TbT|cT|b|c 例4:SxB|c BAz AcS3使学生掌握语法树的构造、句型分析的方法,了解二义性文法的改造和有关文法实用性的一些说明。句型分析二义性文法的改造、句型分析3.4 上下文无关文法及语法树 上下文无关文法有足够的能力来描述现今程序设计语言的语法结构。今后如无特别说明,“文法”一词均指上下文无关文法。一、语法树语法树也称推导树,给定文法G=(VN, VT,P,S) ,对于文法G的任意一个句型都存在一个相应的语法树,它满足:(1) 树中每一个结点都有一个标记,此标记是V= VNVT中的一个符号。(2)

24、根的标记是S。(3) 若树的一结点A至少有一个子女,则AVN。(4) 如结点A的子女结点从左到右次序为B1,B2.Bn,则必有产生式AB1B2.Bn。 SaAS | aASbA |SS |ba对句型aabbaa的推导过程可表示为下图所示语法树。下面两个推导过程均可由上图表示。 (1) SaASaSbASaabASaabbaSaabbaa (2) SaASaAaaSbAaaSbbaaaabbaa这说明同一语法树可以表示对同一句型不同的推导过程。二、最左(右) 推导 1、如果每一步中,都是对中最左(右) 非终结符进行替换, 则称之为最左(右) 推导。2、最右推导称为规范推导,由规范推导所得的句型称

25、为规范句型。3、同一语法树最多对应唯一的最左(右) 推导。4、一个句型有可能对应着不同的语法树。文法GE: Ei | E+E | E*E | (E) ,则句型 i*i+i 可能对应着下面两个最右推导: (1) EE+EE+iE*E+iE*i+ii*i+i (2) EE*EE*E+EE*E+iE*i+ii*i+i三、二义性语法树1、如果一个文法存在某个句子对应着两棵不同的语法树,则称此文法是二义的。不存在一种算法能在有限步骤内判断一个2型文法是否是二义的。2、实际应用中,常找出一组无二义性的充分条件来构造无二义性文法。3、例子下列简单算术表达式的文法是二义性文法。EE+E|E-E|E*E|E/E

26、|(E) |id引入新的非终结符后可变换为非二义性文法。EE+T|E-T|T TT*F|T/F|F F(E) |id If语句的文法GS:Sif E then S Sif E then S else S SE Ea0|a0|b=1|b=-1|b=0假设执行下列语句前b=0,有If句子:if a0 then if a0 then b=1 else b=-1则当a=1时,b=1;当a=-1时,b=-1; 当a=0时,b=0。 通过引入新非终结符、加规则进行改造后得文法:(1)SU|M|E (2) Uif E then S (3) Uif E then M else U (4) Mif E then M else

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1