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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

编译原理复习资料档.docx

1、编译原理复习资料档1编译程序的框架图与功能块:(1)画出编译程序的总体结构,并简述各部分的主要功能:七个部分 (2)编译程序的结构分为几个阶段,各阶段的任务是什么?答编译程序总框架(1)词法分析器,又称扫描器,输入源程序,进行词法分析,输出单词符号。(2)语法分析器,简称分析器,对单词符号串进行语法分析(根据语法规则进行推导或规约),识别出各类语法单位,最终判断输入串是否构成语法上正确的“程序”。(3)语义分析与中间代码产生器,按照语义规则对语法分析器归约出(或推导出)的语法单位进行语义分析并把它们翻译成一定形式的中间代码。(4)优化器,对中间代码进行优化处理。(5)目标代码生成器,把中间代码

2、翻译成目标程序。(6)表格管理 ,登记源程序的各类信息,编译各阶段的进展状况。(7)出错管理,把错误信息报告给用户。编译程序的结构分为五个阶段:(1)词法分析.任务是:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),如基本字,标识符,常熟,算符和界符。(2)。语法分析,任务是:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴)。(3)语义分析与中间代码产生。任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。(4)优化。任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更

3、为高效(省时间和空间)的目标代码。(5)目标代码生成。任务是:把中间代码(或优化出理之后)变换成特定机械上的低级语言代码。2重要概念:a. 编译程序:是指能够把源语言程序转换成逻辑上等价的目标语言程序的一个程序。b. 单词符号:是语言的基本组成成分,是人们理解和编写程序的基本要素,是语言中具有独 立 意义的最基本结构,它一般包括:基本字、标识符、常数、运算符和界符等c. 中间代码:是一种含义明确,便于处理的记号系统,它通常独立于具体的硬件。d. 遍:就是对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。e. 上下文无关文法(CFG):它所定义的语法范畴

4、(或语法单位)完全独立于这种范畴可能出现的环境之外,不宜描述自然语言 。自然语言中,句子和词等往往与上下文紧密相关f. LL(K)分析法:第一个L表示从左到右扫描输入串,第二个L表示最左推导,K表示分析时每一步需要向前查看K个符号。g. LR分析法:L表示从左到右扫描输入串,R表示构造一个最右推导的逆过程。h. 算符优先法:就是定义算符之间的某种优先关系,借助于这种关系寻找“可归约串”和进行归约。i. 属性文法:是在上下文无关文法的基础上,为每个文法符号(终结符或非终结符)配备若干相关的“值“(称为属性),对于文法的每个产生式都配备了一组属性的计算规则(称为语义规则)。3.有哪些存储分配策略,

5、并叙述何时用何种存储分配策略?答:有静态与动态存储分配策略。动态的存储分配策略包括栈式动态分配策略与堆式动态分配策略。 静态分配策略在编译时对所有数据对象分配固定的存储单元,且在运行时始终保持不变。栈式动态分配策略在运行时把存储器作为一个栈进行管理,运行时,每当调用一个过程,它所需要的存储空间就动态地分配于栈顶,一旦退出,她所占空间就予以释放。堆式动态分配策略在运行时把存储器组织成堆结构,以便用户关于存储空间的申请与归还(回收),凡申请者从堆中分给一块,凡释放者退回给堆。4.编译过程中可进行的优化如何分类?最常用的代码优化技术有哪些?答:根据优化涉及范围与程序范围可以分为:局部优化,循环优化和

6、全局优化。最常用的代码优化技术有:删除公共子表达式,复写传播,删除无用代码,代码外提,强度削弱和删除归纳变量。5.一个编译程序的代码生成要着重考虑哪些问题?答:代码生成器的设计要着重考虑目标代码的质量问题,而衡量目标代码的质量主要从占用空间和执行效率两个方面综合考虑。【代码生成要着重考虑两个问题:1).如何使生成的目标代码较短 2.)如何充分利用计算机的寄存器。(减少目标代码中访问存储单元的次数。)这两个问题都直接影响目标代码的执行速度】6语言和文法的转换的例题(1). 文法G2:SbA,AaAa解:推导过程 SbAbaSbAbaAbaaSbAbaAbaa归纳得出:L(G2)=bann1(2)

7、. 文法G3:SAB,AaAa,BbBb解:推导过程 SABabSABaABaAbaaba2bSABabBabbab2归纳得出 L(G3)=ambnm,n1(3). 若已知文法G6(A): A c|Ab 请给出G6(A)的语言?解答:L(G6)=c,cb,cbb, 以c开头,后继若干个b(4). 若已知文法G8(S):SaSBE SaBE EBBE aBab bBbb bEbe eEee请给出G8(S)的语言?解答: SaSBE SaaBEBE (SaBE)SaaBBEE (EBBE)SaabBEE (aBab)SaabbEE (bBbb)SaabbeE (bEbe)Saabbee (eEee

8、)L(G8)= anbnen | n1, 上下文有关文法(5)给出生成下述语言的上下文无关文法:(1) anbnambm| n,m=0(2) 1n0m1m0n| n,m=0 G1(S) SAA AaAb| G2(S) S1S0|A A0A1|7.有限自动机(1)DFA举例 DFA M = (0,1,2,3,a,b,f,0,3)f定义如下: f(0,a)=1 f(0,b)=2 f(1,a)=3 f(1,b)=2 f(2,a)=1 f(2,b)=3 f(3,a)=3 f(3,b)=3 (2). 证明t=baab被下图的DFA所接受对于*中的任何字,若存在一条从初态到某一终态的通路,且这条通路上所有

9、弧的标记符连接成的字等于,则称为DFA M所识别(或接受)证法一:a,b baab*f(S,baab) = f(f(S,b),aab) = f(V,aab) = f(f(V,a),ab) = f(U,ab) = f(f(U,a),b) = f(Q,b) = Q。 Q属于终态,故得证证法二:根据上述状态转换图,可以构造确定有限自动机DFA MS,U,V,Q,a,b,FM,S,Q其中,FM 是DFA M的状态转换函数,定义如下:FM (S,a)U FM (S,b)VFM (U,a)Q FM (U,b)VFM (V,a)U FM (V,b)QFM (Q,a)Q FM (Q,b)Qa,b baab*由

10、题意可知:对于tbaab, DFA M存在一条经过S、V、U、Q和Q的通路,使得该通路上所有弧的标记符连接成的字等于t因此,t 被DFA M所接受(2):下图是一个NFA的状态转换图,请将其转化为一个DFA。 解:采用NFA确定化算法(或子集法)。状态集合I的-闭包表示为-closure(I)。状态集I中任何状态S经任意条弧而能到达的状态集S-closure(I)。状态集合I的a弧转换表示为move(I,a),定义为状态集合J,其中:J是所有那些可从I中的某一状态经过一条a弧而到达的状态的全体。 Ia = move(I,a) = -closure(J)。因此得出上表 。根据上述NFA的状态转换

11、图及其确定化过程,可以构造与它等价的DFA M。DFA MS,A,B,C,D,E,F,a,b,FM,S,C,D,E,F这个DFA M的状态转换图见下图所示。 其中 S=i,1,2 A=1,2,3 B=1,2,4C=1,2,3,5,6,f D=1,2,4,5,6,f E=1,2,4,6,f F=1,2,3,6,fFM 是DFA M的状态转换函数,定义如下:FM (S,a)A FM (S,b)B FM (A,a)C FM (A,b)BFM (B,a)A FM (B,b)D FM (C,a)C FM (C,b)EFM (D,a)F FM (D,b)D FM (E,a)F FM (E,b)DFM (F

12、,a)C FM (F,b)E8语法分析1文法GV: VN | NE EV | V+E Ni 是否为LL(1)文法?若不是,如何改造成LL(1)文法?解:LL(1)文法的基本条件是不含左递归和回溯(公共左因子),而GV中含有回溯,所以先消除回溯得到文法GV: GV: VNV V|EV EVE E|+EE Ni由LL(1)文法的充要条件可证 GV是LL(1)文法2.文法Gs: SBA ABS|d BaA|bS|c证明文法G是LL(1)文法 ,构造LL(1)分析表,写出句子adccd的分析过程解:一个LL(1)文法的充要条件是对每一个非终结符A的任何两个不同产生式A|,有下面的条件成立:FIRST(

13、)FIRST()=, 若*, 则有FIRST()FOLLOW(A)=对于文法Gs: SBA ABS|d BaA|bS|cFIRST集FIRST(B)=a, b, c; FIRST(A)=a, b, c, d;FIRST(S)=a, b, c。FOLLOW集 FOLLOW(S)=#对SBA有 FIRST(A)加入FOLLOW(B),即FOLLOW(B)=a, b, c, d 对ABS有FIRST(S)加入FOLLOW(B),即FOLLOW(B)=a, b, c, d 对BaA有FOLLOW(B)加入FOLLOW(A),即FOLLOW(A)=a, b, c, d 对BbS有FOLLOW(B)加入F

14、OLLOW(S),即FOLLOW(S)=#, a, b, c, d 由ABS|d得FIRST(BS) FIRST(d) = a, b, c d = 由BaA|bS|c得FIRST(aA)FIRST(bS)FIRST(c)=abc= 由于文法Gs不存在形如 的产生式,故无需求解形如FIRST()FOLLOW(A)的值也即,文法GS是一个LL(1)文法 由Gs:SBA ABS|d BaA|bS|c的FIRST(B)=a, b, c; FOLLOW(B)=a, b, c, d ; FIRST(A)=a, b, c, d; FOLLOW(A)=a, b, c, d ;FIRST(S)=a, b, c。

15、 FOLLOW(S)=#, a, b, c, d 可构造LL(1)预测分析表如下:abcd#SS-BAS-BAS-BAAA-BSA-BSA-BSA-dBB-aAB-bSB-c在分析表的控制下,句子adccd的分析过程如下:3对于文法G(E):ETE E+TE | TFTT*FT | F(E) | i 构造每个非终结符的FIRST和FOLLOW集合FIRST(E) = (, i FOLLOW(E) = ), # FIRST(E)=+, FOLLOW(E)= ), # FIRST(T) = (, i FOLLOW(T) = +, ), # FIRST(T)=*, FOLLOW(T)= +, ),

16、# FIRST(F) = (, i FOLLOW(F) = *, +, ), #4已知文法GS:S eT | RT T DR | R dR | D a | bd构造该文法的LL(1)分析表。FIRST(S), FIRST(T), FIRST(R), FIRST(D)FOLLOW(S),FOLLOW (T),FOLLOW (R),FOLLOW (D)LL(1)分析表解:FIRST(S) = a, b, d, e, FOLLOW(S) = # FIRST(T) = a, b, FOLLOW(T) = # FIRST(R) = d, FOLLOW(R) = a, b, # FIRST(D) = a,

17、 b FOLLOW(D) = d, # 该文法的LL(1)分析表如下:abde#SSRTSRTSRTSeTTTDRTDRRTDRDDaDbd5 例:文法GE:E E+T |T T T*F | F F (E) | id 考虑文法GE上的句子id1+id2*id3 。给出其最右推导和分析树,并根据分析树指出句子中的短语、直接短语和句柄从E1推导可得到id1+id2*id3id1+id2*id3是句型id1+id2*id3相对于E1的短语id1+id2不是句型id1+id2*id3中相对于任何非终结符的短语因为找不到任何一个非终结符,它的子树中的所有叶子构成id1+id2短语 以非终结符为根的子树中

18、所有从左到右排列的叶子 E1 E2+id2*id3 T2+id2*id3 F1+id2*id3 id1+id2*id3id1是相对于非终结符E2、T2和F1的短语相对于F1的直接短语,也是句柄6.例4.2 文法: EET | T TT*F | F F(E) | i经消去直接左递归后变成: ETE E+TE | TFT T*FT | F(E) | i7.例: 对于文法G(E)ETE E+TE | TFT T*FT | F(E) | i 构造每个非终结符的FIRST和FOLLOW集:FIRST(E) = (, i FOLLOW(E) = ), # FIRST(E)=+, FOLLOW(E)= ),

19、 # FIRST(T) = (, i FOLLOW(T) = +, ), # FIRST(T)=*, FOLLOW(T)= +, ), # FIRST(F) = (, i FOLLOW(F) = *, +, ), #TFT; T*FT | ; FOLLOW(T) FOLLOW(F) 8.例: 对于文法G(E) ETE E+TE | TFT T*FT | F(E) | i 构造每个非终结符的FIRST和FOLLOW集合:FIRST(E) = (, i FOLLOW(E) = ), # FIRST(E)=+, FOLLOW(E)= ), # FIRST(T) = (, i FOLLOW(T) =

20、+, ), # FIRST(T)=*, FOLLOW(T)= +, ), # FIRST(F) = (, i FOLLOW(F) = *, +, ), # 9.文法GV:VN | NE EV | V+E Ni 是否为LL(1)文法?若不是,如何改造成LL(1)文法?解:LL(1)文法的基本条件是不含左递归和回溯(公共左因子),而GV中含有回溯,所以先消除回溯得到文法GV: GV: VNV V|EV EVE E|+EE Ni由LL(1)文法的充要条件可证:GV是LL(1)文法11.已知文法GS:S eT | RT T DR | R dR | D a | bd构造该文法的LL(1)分析表。FIRS

21、T(S), FIRST(T), FIRST(R), FIRST(D)FOLLOW(S),FOLLOW (T),FOLLOW (R),FOLLOW (D) LL(1)分析表解:FIRST(S) = a, b, d, e, FOLLOW(S) = # FIRST(T) = a, b, FOLLOW(T) = # FIRST(R) = d, FOLLOW(R) = a, b, # FIRST(D) = a, b FOLLOW(D) = d, # 该文法的LL(1)分析表如下:abde#SSRTSRTSRTSeTTTDRTDRRTDRDDaDbd9。中间语言形式常用的中间语言:a.后缀式表示法 b.图

22、表示法:DAG 抽象语法树三地址代码:三元式 四元式 间接三元式1.abc+*等价a*(b+C)表达式 x+yz a0 (8+z) 3 的逆波兰表示为 xy+za08z+3表达式A(CD)的逆波兰表示为 ACD 表达式a b c (b x=0 c) 的逆波兰表示为 abcbx0=c 表达式 (AB)(CDE)的逆波兰表示为 ABCDE 一个带有四个域的记录结构,这四个域分别称为op, arg1, arg2及result例: a:=b*-c+b*-c 的四元式 op arg1 arg2 result(0) uminus c T1(1) * b T1 T2(2) uminus c T3(3) *

23、b T3 T4(4) + T2 T4 T5(5) := T5 a 2.例: a:=b*-c+b*-c 的三元式三个域:op、arg1和arg2 op arg1 arg2(0) uminus c (1) * b (0)(2) uminus c (3) * b (2)(4) + (1) (3)(5) assign a (4)3.例如,语句 X:=(A+B)*C;Y:=D(A+B)的间接三元式表示如右图4表达式 -a+b*c+d+(e*f)/d*e,如果优先级由高到低依次为-、+、*、/,且均为左结合,则其后缀式为 a-b+cd+ef*+*de*/5.如果优先级由高到低依次为-、+、*、$(乘幂),

24、且均为右结合,则表达式2+3-2+2*2*1$2$3-3-2+1的后缀式为 232-2+21*2332-1+$6.如果某表达式的后缀式为ab+cd+*,则其中缀形式的表达式为 (a+b) * (c+d)7.请将表达式-(a+b)*(c+d)-(a+b)分别表示成三元式、间接三元式和四元式序列解: 三元式 间接三元式 (1) (+ a, b) 间接三元式序列 间接码表 (2) (+ c, d) (1) (+ a, b)(1) (3) (* (1), (2) (2) (+ c, d)(2) (4) (- (3), /) (3) (* (1), (2) (3) (5) (+ a, b) (4) (- (3), /) (4)(6) (- (4), (5) (5) (- (4), (1) (1)(5) 四元式 (1) (+, a, b, t1) (2) (+, c, d, t2) (3) (*, t1, t2, t3) (4) (-, t3, /, t4) (5) (+, a, b, t5) (6) (-, t4, t5, t6) 必考题:构造一个DFA,它接收=a,b上所有满足下述条件的字符串:字符串中的每个a都有至少有一个b直接跟在其右边。解:由题意可得其正规式为(b*abb*)*,画出相应的DFM.仅供参考,如有什么不对的地方尽请谅解

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

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