山东理工大学编译原理2010-2011第一学期期末试题一.(15)1.乔姆斯基把文法分成____种类型,在编译原理中用来描述程序设计语言词法结构的是______文法,用来描述程序设计语言语法结构的是______文法。2.一个上下文无关文法G包括四个组成部分:一组终结符号,一组______,一个开始符号以及一组______。3.自上而下语法分析法会遇到的主要问题有______和______。4.最右推导也称______,最右推导的逆过程称为最左归约,也称为______。5.一个文法符号的______属性是通过语法树中它的文结点和/或兄结点的相应文法符号和属性来计算的,而______属性是通过语法树中它的子结点的属性之值来计算的。6.常用的两种动态存贮分配方法是______动态分配和______动态分配。7.在PASCAL语言中,为了在过程的嵌套调用过程中实现对非局部名字的访问,可以采用______和活动记录,或______和活动记录的方式。二.(15)1.请画出编译程序的总框图。2.请给出表达式(a+b)*c+c/d的后缀式,并将其表示成三元式、四元式和间接三元式。3.设文法G(s):S→(A)|aA→A+s|s,请构造各非终结符的FIRSTVT集合和LASTVT集合。三.(10)将下列语句翻译成四元式序列(假定地址从100开始)While(abandad)doIfa0thenb:=b+1Elsed:=d-1四.(15)构造一个DFA,它接收∑={a,b}上所有满足如下条件的字符串:每个a都有b直接跟在右边。五.(10)有文法G[S]:S→BA.A→BS|d.B→aA|bS|C(1)证明文法G是LL(1)文法(2)构造LL(1)分析表。六.(10)设有基本块.B:=3G:=B*FK:=B*5D:=A+CH:=A+CL:=K+JE:=A*CI:=A*CM:=LF:=D+EJ:=H+I(1)画出DAG图(2)假设基本块出口时只有L被引用,请写出优化后的四元序八.(10)现有如下基本块的三地址代码序列.T1:=A+BT2:=T1-CT3:=D=T2T4:=D+EW:=T3*T4.假定只有两个寄存器R0和R1可用,变量W在基本块出口的活跃变量,试利用基本块的代码生成算法,生成其汇编语言的目标代码,并给出其寄存器描述和地址描述。九.(15)某语言的拓广文法G’为:(0)S'→S(1)S→AB(2)A→aBa|(3)B→bab|(1)请构造该文法的LR(0)项目集规范族;(2)该文法是SLR(1)文法吗?若是构造相应分析表;(3)给出输入串baab#分析过程