编译原理复习题2017含试卷[共35页].doc

上传人:scccc 文档编号:11155774 上传时间:2021-07-06 格式:DOC 页数:36 大小:5.78MB
返回 下载 相关 举报
编译原理复习题2017含试卷[共35页].doc_第1页
第1页 / 共36页
编译原理复习题2017含试卷[共35页].doc_第2页
第2页 / 共36页
编译原理复习题2017含试卷[共35页].doc_第3页
第3页 / 共36页
编译原理复习题2017含试卷[共35页].doc_第4页
第4页 / 共36页
编译原理复习题2017含试卷[共35页].doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《编译原理复习题2017含试卷[共35页].doc》由会员分享,可在线阅读,更多相关《编译原理复习题2017含试卷[共35页].doc(36页珍藏版)》请在三一文库上搜索。

1、编译原理复习题一简答题:1) 什么是句子? 什么是语言 ?解答:句子 设G是一个给定的文法, S是文法的开始符号,如果 S * x (其中 xVT *),则称 x 是文法的一个句子。语言 语言是句子的集合。或 设GS 是给定 文 法 ,则由 文 法 G 所 定义的语言 L(G) 可 描 述为: L(G) x S x,x VT * 。2) DFA与 NFA有何区别?解答 :DFA 与 NFA的区别表现为两个方面 : 一是 NFA可以有若干个开始状态,而 DFA仅只有一个开始状态。另一方面, DFA的映象 M是从 K到 K,而 NFA的映象 M是从 K到 K的子集,即映象 M将产生一个状态集合(可

2、能为空集),而不是单个状态。3) 自顶向下的语法分析方法的基本思想是什么 ?解答 : 从文法的开始符号开始 ,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。4) 自底向上的语法分析方法的基本思想是什么 ?解答 : 从给定的输入串(终结符串)开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。5) 一个上下文无关文法 G包括哪四个组成部分?解答 : 一组非终结符号,一组终结符号,一个开始符号,以及一组产生式。6) 在自底向上的语法分析方法中,分析的关键是什么?解答: 关键是寻找句柄。7) 在自顶向下的语法分析方法

3、中,分析的关键是什么?解答: 关键是选择候选式。8)什么是属性文法?答:是在上下文无关文法的基础上,为每个文法符号 ( 含终结符和非终结符 ) 配备若干个属性值 ,对文法的每个产生式都配备了一组属性计算规则 ( 称为语义规则 )。在语法分析过程中,完成语义规则所描述的动作,从而实现语义处理。一个属性文法形式的定义为一个三元组 AG,AG=(G,V,E)。其中 G为一个上下文无关文法; V为属性的有穷集; E为一组语义规则。9)语法制导翻译语法制导翻译:定义翻译所必须的语义属性和语义规则,一般不涉及计算顺序。语法制导翻译 (Syntax-Directed Translations) : 一个句子

4、的语义翻译过程与语法分析过程同时进行。在文法中,文法符号有明确的意义,文法符号之间有确定的语义关系。属性描述语义信息,语义规则描述属性间的的关系,将语义规则与语法规则相结合,在语法分析的过程中计算语义属性值。10)词法分析的主要任务是什么?解答 : 词法分析器的任务是对构成源程序的字符串从左到右逐个字符逐个字符地进行扫描,依次把它们识别为一个一个具有独立意义的单词,并确定其属性,再转换为长度统一的属性字并输出。 目标代码11) 图示运行时存储空间的划分(分为哪几个区)。解答: 一般分为静态区和动态区:静态数据栈程序代码区、静态数据区、栈区和堆区堆12) 常用的中间语言种类有哪几种?解答: 常用

5、的中间语言种类有逆波兰表示、三元式、四元式和树形表示。13)文法 G所描述的语言是什么的集合?解答: 是由文法的开始符号推出的所有终结符串的集合。或说是句子的集合。14)乔姆斯基把文法分为四种类型,即 0 型、1 型、 2 型、 3 型。其中 2 型文法叫什么?解答: 2 型文法叫上下文无关文法。15)常见的动态存贮分配策略有哪两种?解答: 常见的两种动态存贮分配策略是栈式动态分配策略和堆式动态分配策略。16)语法分析的任务是什么?解答: 语法分析的任务是识别给定的终结符串是否为给定文法的句子。17)局部优化是局限于一个什么范围内的一种优化?解答: 是局限于一个基本块范围内的一种优化。18)通

6、常一个编译程序中应包括哪七个部分?解答: 通常一个编译程序中应包含词法分析,语法分析,语义分析与中间代码生成, 代码优化,目标代码生成以及表格处理和出错处理等七个部分。19)代码优化的主要目标是什么?解答: 代码优化的主要目标是如何提高目标程序的运行速度和如何减少目标程序运行时所需的空间。20). 符号表的组织方式有哪几种?答:一个编译程序对符号表的总体组织可有三种选择:第一种: 把属性种类完全相同的那些符号组织在一起, 构造出表项是分别为等长的多个符号表。这样组织的最大优点是每个符号表的属性个数和结构完全相同。则表项是等长的,并且表项中的每个属性栏都是有效的,对于单个符号表示来说,这样使得管

7、理方便一致,空间效率高。但这样组织的主要缺点是一个编译程序将同时管理若干个符号表,增加了总体管理的工作量和复杂度。而且对各类符号共同属性的管理必须设置重复的运行机制。使得符号表的管理显得臃肿。第二种: 把所有语言中的符号都组织在一张符号表中。 组成一张包括了所有属性的庞大的符号表。这样组织方式的最大优点是总体管理非常集中单一,且不同种类符号的共同属性可一致地管理和处理。这样组织所带来的缺点是,由于属性的不同,为完整表达各类符号的全部属性必将出现不等长的表项,以及表项中属性位置的交错重叠的复杂情况,这就极大地增加了符号表管理的复杂度。为使表项等长且实现属性位置的唯一性,可以把所有符号的可能属性作

8、为符号表项属性。这种组织方法可能有助于降低符号表管理复杂性,但对某个具体符号,可能增加了无用的属性空间,从而增加了空间开销。第三种:折衷方式是根据符号属性相似程度分类组织成若干张表,每张表中记录的符号都有比较多的相同属性。这种折衷的组织方式在管理复杂性及时空效率方面都取得折衷的效果,并且对复杂性和效率的取舍可由设计者根据自己的经验和要求及目标系统的客观环境和需求进行选择和调整。21). 在整个编译期间,对于符号表的操作有哪些?答:在整个编译期间,对于符号表的操作大致可归纳为五类: 对给定名字,查询此名是否已在表中; 往表中填入一个新的名字; 对给定名字,访问它的某些信息; 对给定名字,往表中填

9、写或更新它的某些信息; 删除一个或一组无用的项。22). 符号表的作用有哪些?答:在编译程序中符号表用来存放语言程序中出现的有关标识符的属性信息,这些信息集中反映了标识符的语义特征属性。起主要作用是: 收集符号属性; 上下文语义的合法性检查的依据; 作为目标代码生成阶段地址分配的依据。23). 简述优化的原则是什么?答:编译程序提供的对代码优化必须遵循的原则是:(1) 等价原则。经过优化后不应改变程序运行的结果。(2) 有效原则。使优化后所产生的目标代码运行时间较短,占用的存储空间较小。(3) 合算原则。应尽可能以较低的代价取得较好的优化效果。24)简述常用的优化技术有哪些?答:编译程序中常用

10、的优化技术有:删除公共子表示式;复写传播;删除无用代码;代码外提;强度削弱;删除归纳变量;合并常量。25 ) . 何 谓 优 化 ? 按 所 涉 及 的 程 序 范 围 可 分 为 哪 几 级 优 化 ?答:优化:对程序进行各种等价变换,使得从变换后的程序出发,能产生更有效的目标代码。三种级别:局部优化、循环优化、全局优化。26) 、编译程序目标代码运行时的存储区通常被划分为几部分?答: 目标代码区、静态数据区、栈区、堆区。27) 、数组的内情向量包含哪些内容?在编译程序对数组说明进行语义处理时, 须把数组的类型 type 、维数 n、各维的上、 下界 lk,uk等有关信息记录下来。 此外 ,

11、 如果数组是常界的 , 还可将各维的界差 dk 以及计算数组元素地址的常量 C记录下来。 为了便于引用, 通常是把上述信息存放于数组相应的“内情向量”之中 . 对数组内情向量的访问 , 可通过数组在符号表中相应登记项的 ADDR域以间接寻址方式进行(即将其ADDR域作为指针用于存放内情向量的首地址)。28) 、文法分为几种类型?其分类依据是什么?答:分为四类:短语文法( 0 型文法)、前后文有关文法( 1 型文法)、前后文无关文法( 2 型文法)、正规文法( 3 型文法)。分类依据:对产生式家约束。29) 、一般来说编译程序至少包含哪几部分?各部分的作用是什么?答:词法分析,语法分析,语义分析

12、和目标代码生成是必须的,代码优化是为了提高目标代码的质量而引入的,不是必须的,没有代码优化编译程序同样生成目标代码。各部分的作用参见教材30)、分程序结构的栈式存储管理中的活动记录包括哪些内容?答:临时工作单元、局部变量、保存机器状态、存取链、控制链、实参,也称形式单元、返回地址,保存该被调过程返回后的地址。31)、有人认为编译程序的五个组成部分缺一不可,这种看法正确吗?为什么?答:不正确词法分析,语法分析,语义分析和目标代码生成是必须的,代码优化是为了提高目标代码的质量而引入的,不是必须的,没有代码优化编译程序同样生成目标代码。二、应用题1) 写一个文法,使其语言是奇数集,且每个奇数不以 0

13、 开头。解:文法 G(N):NAB|BAAC|DB1|3|5|7|9DB|2|4|6|8C0|D2)写一个文法,使其语言是无符号二进制实数(不含指数)。解答 : 文法 G(N):N L.L|LL LB|BB 0|13)给出上下文无关文法的定义。一个上下文无关文法 G是一个四元式 (VT, VN, S,P),其中:V T是一个非空有限集,它的每个元素称为终结符号;V N是一个非空有限集,它的每个元素称为非终结符号, VTVN=;S 是一个非终结符号,称为开始符号;P 是一个产生式集合 ( 有限 ) ,每个产生式的形式是 P,其中, PVN, (VTVN)*。开始符号 S 至少必须在某个产生式的左

14、部出现一次。4)给出正规式与正规集的递归定义。(1) 和都是上的正规式,它们所表示的正规集分别为 和;(2) 任何 a, a 是上的一个正规式,它所表示的正规集为a ;(3) 假定 U和 V都是上的正规式, 它们所表示的正规集分别记为L(U) 和 L(V) ,那么,(U|V) 、(U V)和(U)* 也都是正规式,它们所表示的正规集分别为 L(U) L(V) 、L(U)L(V)(连接积) 和(L(U)*(闭包 ) 。仅由有限次使用上述三步骤而得到的表达式才是上的正规式。仅由这些正规式所表示的字集才是上的正规集。5)设文法 G为:S aAcB|BdSA BaB|aBc|aB aScA|cAB|b

15、对于输入串 aacabccb ,给出最左推导。答: S=aAcB=aaBccB=aacABccB=aacaBccB=aacabccB=aacabccb6)设文法 G为:S BAA BS|dB aA|bS|c对于输入串 adccd,给出最左推导。答: S=BA=aAA=adA=adBS=adcS=adcBA=adccA=adccd7)给定正规文法 G:a bS aS|bA|bA aSSbaA请构造与之等价的有限自动机。F8)给定正规文法 G:S aAA bA|aB|bB aA请构造与之等价的有限自动机。bSabA F aa9)对下面给出的 NFA确定化。aa ba bS A Faa 21bb3a

16、4 a10). 将文法 GS 改写为等价的 GS ,使 GS 不含左递归和左公共因子。GS : SbSAe | bAAAb | d答: 文法 GS 改写为等价的不含左递归和左公共因子的 GS 为:SbBBSAe | AAd AA bA | 11) 消除下列文法 GA 的左递归。AAaBBBBbCCCeD DD(A) d解答:消除文法 GA 的左递归后得到:A BAA aBAB C BBbcBCe DDD(A) d12) 正规式( a|b ) * a(a|b) 构造一个等价的有限自动机。解答:aa,ba0 1 2b13)将下图的 NFA确定化为 DFA。答: 用子集法确定化如下表I Ia Ib

17、状态X,1,2 1,2. 1,2,3 X1,2. 1,2. 1,2,3 11,2,3 1,2,Y 1,2,3 21,2,Y 1,2. 1,2,3 3确定化后如下图:14). 已知文法 G(E)E T|E TTF|T *FF (E)|i(1) 给出句型 (T *F i) 的最右推导;(2) 给出句型 (T *F i) 的短语、简单短语、句柄、素短语、最左素短语。解:(1) 最右推导: E -T-F-(E)-(E T)-(E F)-(E i)-(T i)-(T*F i)(2) 短语: (T*F i) ,T*Fi ,T*F,i简单短语: T*F,i句柄: T*F素短语: T*F,i最左素短语: T*

18、F15). 构造正规式 1(0|1)*101 相应的 DFA 。解:先构造 NFA :确定化:重新命名,令 AB 为 B 、AC 为 C、ABY 为 D 得:所以,可得 DFA 为:16). 文法:S-MH|aH - LSo| K - dML| L -eHfM-K|bLM判断 G 是否为 LL(1) 文法,如果是,构造 LL(1) 分析表。 解:各符号的 FIRST 集和 FOLLOW集为:预测分析表由于预测分析表中无多重入口,所以可判定文法是 LL(1) 的17). 对下面的文法 G :E -TEE-+E| T -FTT -T| F- PFF- *F| P-(E)|a|b|(1) 计算这个文

19、法的每个非终结符的 FIRST 集和 FOLLOW集。 (4 分)(2) 证明这个方法是 LL(1) 的。(4 分)(3) 构造它的预测分析表。 (2 分)解:( 1)计算这个文法的每个非终结符的 FIRST 集和 FOLLOW集。FIRST 集合有:FIRST(E)=FIRST(T)=FIRST(F)=FIRST(P)=(,a,b,;FIRST(E)=+, FIRST(T)=FIRST(F)=FIRST(P)=(,a,b,;FIRST(T)=FIRST(T)U =(,a,b, ;FIRST(F)=FIRST(P)=(,a,b,;FIRST(F)=FIRST(P)=*, ;FIRST(P)=(

20、,a,b,;FOLLOW集合有:FOLLOW(E)=),#;FOLLOW(E)=FOLLOW(E)=),#; FOLLOW(T)=FIRST(E)UFOLLOW(E)=+,),#;/ 不包含 FOLLOW(T)=FOLLOW(T)=FIRST(E)UFOLLOW(E)=+,),#;FOLLOW(F)=FIRST(T)UFOLLOW(T)=(,a,b,+,),#;/ 不包含 FOLLOW(F)=FOLLOW(F)=FIRST(T)UFOLLOW(T)=(,a,b,+,),#;FOLLOW(P)=FIRST(F)UFOLLOW(F)=*,(,a,b,+,),#;/ 不包含 (2) 证明这个方法是

21、LL(1) 的。各产生式的 SELECT 集合有:E-TE : FIRST(T)=(,a,b,;E-+E: FIRST(+E ) =+;E- : FOLLOW(E)=),#T-FT: FIRST(F)=(,a,b,;T-T: FIRST(T)=(,a,b,;T- : FOLLOW(T/)=+,),#;F-PF: FIRST(P)=(,a,b,;F-*F: FIRST(*F)=*;F- : FOLLOW(F)=(,a,b,+,),#;P-(E) FIRST(E) =(P-a FIRST(a )=aP-b FIRST(b)=bP- FIRST()=可见,相同左部产生式 若不能推出为空,其产生式右部

22、的交集均为空,相同左部产生式,若其中有一个能推出为空,其不能推出为空的产生式右部 FIRST 集合和左部的 FOLLOW交集均为空,所以文法 GE 是 LL(1) 文法。(3) 构造它的预测分析表。 文法 GE 的预测分析表如下:18)设有文法 G:S S*F|FF FP|PP (S)|i 完成下列算符优先关系表,并判断是否为算符优先文法(请说明理由)。* ( ) i #* ( ) i # 由于该文法的任何产生的右部都不含两个相继的非终结符,故属于算符文法。从上表可以看出,任何两个终结符之间至少满足、 、 三种关系之一,故 G为算符优先文法。 给出句型 S*P(S) 对应的语法树,指出该句型的

23、短语、句柄SS * F短语: S*P(S) P (S) P (S) F P句柄: P ( S )P19) 已知文法 G(S)ST | S-TTF | T / FF( S) | i(1)给出句型 T/ F-i 的最右推导;(2)画出句型 T/F-i 规范规约的语法树及算符优先分析规约的语法树框架;(3)给出句型 T / F-i 的短语、素短语。答:(1) 最右推导: ETF(E) (ET) (EF) (Ei) (Ti) (T*F i)(2) 略(3) 短语: (T*F i) ,T*Fi ,T*F,i素短语: T*F, i20) 某语言的拓广文法 G为:(0) S S(1) S Db|B(2) D

24、 d| (3) B Ba| 证明 G不是 LR(0) 文法而是 SLR(1) 文法,请给出 SLR(1)分析表。答:拓广文法 G,增加产生式 S S在项目集 I 0 中:有移进项目 D d归约项目 D 和 B 存在移进 -归约和归约 - 归约冲突,所以 G不是 LR(0) 文法。若产生式排序为:(0) S S(1) S Db(2) S B(3) D d(4) D (5) B Ba(6) B G的 LR(0) 项目集族及识别活前缀的 DFA如下图:由产生式知Follow(S)=#Follow(D)= bFollow(B)= a ,#在 I 0 中:Follow(D) d= bd=Follow(B

25、) d= a ,#d=Follow(D) Follow(B)= b a ,#=在 I 3 中:Follow(S)a=# a=所以在 I 0,I 3 中的移进 - 归约和归约 - 归约冲突可以由 Follow 集解决 , 所以 G是 SLR(1) 文法,构造的 SLR(1)分析表如下表:ACTION GOTO 状态b d a # S D B0 r4 S4 r6 r6 1 2 31 acc2 S53 S6 r24 r35 r16 r5 r521) 、下面文法 G 为:(0)E E(1)E r B(2)B B ; d(3)B d判断 G 是 SLR(1)还是 LR(1) ,说明理由,并构造相应的分析

26、表I6:B B;d ?I3:E r B ?B B ?; dI 1:E E ? I5:;dB B; ?dE BdI 0: r I2:E ? E E r?BE ?r B B ?B;d B ?dI4:B d ?状态 I3 中含项目:E rB 为归约项目B B ; i 为移进项目所以 不是 LR(0) 文法FOLLOW(S)=# FOLLOW(S): 为空,所以该文法是 SLR(1)文法。ACTION GOTO 状态r ; d # E B0 S2 11 acc2 S4 33 S5 r 14 r 3 r 35 S66 r 2 r 222) 、设文法 G(S):S(F) |d S |dFF ; S | S

27、(1) 消除左递归和回溯;(2) 列出第一小题完成后的文法,并计算每个非终结符的 FIRST 和 FOLLOW;(3) 构造预测分析表。解:(1) S( F) SdS SS S 2 分F SF F , S F F 2 分评分细则:消除左递归2 分,提公共因子 2 分。(2) FIRST(S) ( ,d FOLLOW(S) # , ,, ) FIRST(S) d , FOLLOW(S) # , ,, ) FIRST(L) ( ,d FOLLOW(L) )FIRST(L) ,, FOLLOW(L ) 3 分因为:FIRST ( S(F) FIRST ( SdS)=FIRST ( SS ) FOLL

28、OW (S )= FIRST (F , S F ) FIRST (F )= 所以,此文法是 LL(1) 文法(4)预测分析表d , ( ) #S dS (F)S S S F SF SFF ,S F 23). 设有基本块:(1) a:=b-c (6) c:=b-f(2) d:=a+4 (7) b:=b-c(3) e:=a-b (8) f:=b+f(4) f:=a+4 (9) a:=a-f(5) b:=b+c(1) 画出 DAG图;(2) 假设基本块出口时只有 a,b 还被引用,请写出优化后的三地址代码序列。解答:(1) 给出 DAG如右:(2) 重写三地址代码如下:a:=b-cd:=a+4e:=

29、a-bf:=db:=b+cc:=b-fb:=b-cf:=b+fa:=a-f24). 设有基本块T1: 2T2: 10/T 1T3: SRT4: SRA:T2 * T 4B:AT5: SRT6: T3 * T 5B: T6(1) 画出 DAG图;(2) 假设基本块出口时只有 A,B还被引用,请写出优化后的三地址代码序列。解: (1)DAG:见右图(2)优化后的四元式T3: SRT4: SRA: 5*T 4B: T3T425)将下面的条件语句表示成四元式序列:if ab then x:=a+b*c else x:=b-a;答:(1) ( j, a, b, (3)(2) ( j, , , (7) )

30、(3) ( *, b, c, T1)(4) ( +, a, T1, T2)(5) ( :=, T2, , x)(6) ( j, , , (9)(7) ( -, b, a, T3)(8) ( :=, T3, , x)(9) ( )26)翻译成四元式序列。While a 0 b 0 doBeginX : X 1;if a 0 then a : a1else b : b1End;答:(1) (j , a,0,5)(2) (j , 3)(5) ( , 1,T1)(6) ( :, T1, )(7) (j , a,0,9)(8) (j , 12)(9) ( , a,1,T2)(10) ( :, T2, a

31、)(11) (j , 1)(12) ( , b,1, T3)(13) ( :, T3, b)(14) (j , 1)(15)27)设有基本块:t1:=3*At2:=2*Ct3:=t1+t2t4:=t3+5t5:=2*Ct6:=3*At7:=t6+t5E:=t7-1F:=t4-Ea) 画出 DAG图;b) 假设基本块出口时只有 E,F还被引用,请写出优化后的三地址代码序列。解答:a) 构造 DAG:见右图。F n12En11n9 n10 t4 1+ t3,t7n7b) 优化后的三地址代码序列为:t1:=3*At2:=2*Ct3:=t1+t2t4:=t3+5E:=t3-1F:=t4-E五、填空题

32、:1. 编译程序的工作过程一般可以划分为 词法分析 , 语法分析 , 语义分析,之间代码生成 , 代码优化 等几个基本阶段 , 同时还会伴有 表格处理 和 出错处理 .2. 若源程序是用高级语言编写的 , 目标程序是 机器语言程序或汇编程序 , 则其翻译程序称为编译程序 .3. 对编译程序而言 , 输入数据是 源程序 , 输出结果是 目标程序 .4. 一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。其中,词法分析器用于识别 单词 。5. 所谓最右推导是指: 任何一步 都是对中最右非终结符进行替换的 。6. 一个上下文

33、无关文法所含四个组成部分是 一组终结符号、 一组非终结符号、 一个开始符号、一组产生式 。7. 产生式是用于定义 语法成分 的一种书写规则。8. 设 GS 是 给 定 文 法 , 则 由 文 法 G 所 定 义 的 语 言 L(G) 可 描 述 为 : L(G) x S x,x VT * 。9.设G是一个给定的文法, S 是文法的开始符号,如果S x(其中 xV *),则称 x 是文法的一个句型 。10.设G 是 一 个给定 的 文 法 , S 是 文 法 的 开 始 符 号 , 如 果S x( 其中 xVT * ),则称 x 是文法的一个句子。11.语法分析最常用的两类方法是 自上而下 和

34、自下而上 分析法。12.语法分析的任务是识别给定的终极符串是否为给定文法的句子。13. 自顶向下的语法分析方法的关键是 如何选择候选式 的问题。14. 自顶向下的语法分析方法的基本思想是: 从文法的 开始符号 开始, 根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的 句子 ,使之与给定的输入串匹配。15. 自底向上的语法分析方法的基本思想是: 从给定的终极符串开始, 根据文法的规则一步一步的向上进行直接归约,试图归约到文法的 开始符号 。16. 自底向上的语法分析方法的基本思想是: 从输入串入手, 利用文法的产生式一步一步地向上进行 直接归约 ,力求归约到文法的

35、开始符号 。17. 在 L R(0)分析法的名称中, L 的含义是 自左向右的扫描输入串 ,R的含义是 最左归约,0 的含义是 向貌似句柄的符号串后查看 0 个输入符号 。18. 在 SLR(1)分析法的名称中, S 的含义是简单的 。19. 所谓属性文法是 一个属性文法是一个三元组: A( G,V,F),一个上下文无关文法 G;一个属性的有穷集 V 和关于属性的断言或谓词的有穷集 F。每个断言与文法的某产生式相联。19.综合属性是用于 “自下而上”传递信息。20.继承属性是用于 “自上而下”传递信息。21. 符号表中的信息栏中登记了每个名字的 属性和特征等有关信息 ,如类型、 种属、所占单元

36、大小、地址等等。22. 常用的两种动态存贮分配办法是栈式动态分配和 堆式动态分配。23. 局部优化是局限于一个 基本块 范围内的一种优化。24. 代码优化的主要目标是如何提高 目标程序的运行速度 和如何减少 目标程序运行时所需的空间 。编译原理期末考试试卷( A 卷)一、简述编译程序的工作过程。( 10)编译程序的工作过程,是指从输入源程序开始到输出目标程序为止的整个过程,是非常复杂的,就其过程而言,一般可以划分为五个工作阶段:词法分析,对构成源程序的字符串进行扫描和分解,识别出一个个的单词;语法分析,根据语言的语法规则,把单词符号串分解成各类语法单位;语义分析与中间代码产生,即对各类语法单位

37、,分析其汉一并进行初步翻译;代码优化,以期产生更高效的代码;目标代码生成,把中间代码变换成特定机器上的低级语言指令形式。二、给出下面的正规表达式( 15)(1) 以 01 结尾的二进制数串;(2) 能被 5 整除的十进制整数;(3) 包含偶数个 1 或偶数个 0 的二进制数串。(1)(0|1)*01(2)digit=0|1|2|3|4|5|6|7|8|9digit* (0|5)(3)( 0*10*1 )*0* )|(1*01*0 )*1* )三、对下面的文法 G:Sa | b | (T)TT,S | S(1) 消去文法的左递归,得到等价的文法 G2;(2) 判断文法 G2 是否 LL (1)文

38、法,如果是,给出其预测分析表。( 15)G2:Sa | b | (T)T STT , S T | G2 是 LL(1)文法。a b ( ) , #S Sa Sb S(T)T T ST T ST T STT T T , ST四、对下面的文法 G:SABAA00 | 0BB11 | 1(1) 消去文法的左递归,得到等价的文法 G2;(2) 判断文法 G2 是否 LL (1)文法,如果是,给出其预测分析表。( 15)G: SABA 0AA 00A | B 1BB 11B | 文法 GS 是 LL(1) 文法。预测分析表:0 1 #S SABA A0AA A00A AB B1BB B11B B五、设有

39、文法 GA :ABCc | gDBBbCDE | CDaB | caDdD |EgAf | c(1) 计算该文法的每一个非终结符的 FIRST 集和 FOLLOW 集;(2) 试判断该文法是否为 LL (1)文法。( 15)FIRST FOLLOWA A,b,c,d,gB b A,c,dC A,c,d C,d,gD D A,b,c,gE C,g(2) 是 LL(1)文法。编译原理期末考试试卷( B卷)三、应用题( 1、4、5 每题 10 分,2、3 每题 15 分,共 60 分)1、为正规式 (a|b)*a(a|b) 构造等价且状态最少的确定有限自动机。(要求给出主要步骤)2、有文法如下:S

40、BAA BS | dB aA | bS | c(1). 计算文法的每个非终结符的 FIRST 和 FOLLOW集合;(2). 判断文法是否 LL(1)文法,如果是,给出其预测分析表,否则说明理由。4、有文法如下:T T*F | FF P F | PP (T) | i证明 T*i P是该文法的一个句型,但不是规范句型;指出 T*i P 的所有短语、直接短语、素短语、句柄。三、应用题( 1、4、5 每题 10 分,2、3 每题 15 分,共 60 分)1、对于符号串 T*i P存在如下推导:(或画一颗语法树证明是句型)T T*F T*P F T*P P T*i P所以 T*i P 是该文法的一个句

41、型,但不存在一个规范推导能推导出该句型,所以不是规范句型。( 5 分)短语: T*i P、i P、i 、p直接短语: i 、p素短语: i句柄: i2、已知文法 GSSS*aF | aF | *aFF+aF | +a消除文法左递归和提公共左因子。答:消除左递归 SaFS | *aFS S*aFS | F+aF | +a提公共左因子 , 文法 G(S)SaFS | *aFS S*aFS | F+aFFF | 3、设文法 G(S):S | a | (T)TT,S | S 消除左递归; 构造相应的 FIRST 和 FOLLOW集合; 构造预测分析表(1) 消除左递,文法变为 GS :S | a | (T)TST | ST,ST | 此文法无左公共左因子。4、设文法 G(S):S (T) | aS | aT T,S | S消除左递归和提公共左因子;构造相应的 FIRST 和 FOLLOW集合;构造预测分析表。.(1) S (L) | aS SS | L SLL,SL | (2) FIRST(S)=a, ( FIRST(S )=a, (, FIRST(L)=a, ( FIRST(L )=, FOLLOW(S)=, ), # FOLL

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1