*编译原理试题计算机学院_____级班学号姓名题号一二三四五六七八九十总分满分得分一选择题【】1.词法分析器的输入是。A.符号串B.源程序C.语法单位D.目标程序【】2.两个有穷自动机等价是指它们的。A.状态数相等B.有向弧数相等C.所识别的语言相等D.状态数和有向弧数相等【】3.文法G:S→xSx|y所识别的语言是。A.xy*xB.(xyx)*C.xx*yxx*D.x*yx*【】4.设a,b,c为文法的终结符,且有优先关系ab和bc,则。A.必有acB.必有caC.必有baD.选项A、B和C都不一定成立【】5.若状态k含有项目“A→α.”,且仅当输入符号a∈FOLLOW(A)时,才用规则“A→α”归约的语法分析方法是。A.LALR分析法B.LR(0)分析法C.LR(1)分析法D.SLR(1)分析法二判断题1、一个LL(l)文法一定是无二义的。2、逆波兰法表示的表达式亦称前缀式。3、算符优先关系表不一定存在对应的优先函数。4、同心集的合并有可能产生“移进/归约”冲突。5、若主程序为0层,过程p层次为k,则p的DISPLAY表中就有k+1个元素。三填空题1、词法分析的任务是从___________中识别出一个个__________。2、在LR(0)分析法中,若,βV*且aTV则称“S.A”为项目,称“S.aβ”为项目。3、规范规约每次规约的是句型的______________。算符优先分析法每次规约的是当前句型的____________。四写一个文法,使其语言是奇数集,且每个奇数不以0开头。五已知文法G(S):S→a|(T)T→T,S|S(1)给出句子(a,(a,a))的最左推导并画出语法树;(2)给出句型((T,S),a)的短语、直接短语、句柄。六把语句ifx>0andy>0thenz:=x+yelsebeginx:=x+2y:=y+3end;翻译成四元式序列。七设文法G(S):S→S+aF|aF|+aFF→*aF|*a(1)消除左递归和左因子;(2)构造相应的FIRST和Follow集合;(3)构造预测分析表。八设有以下程序段programmain;vara,b:integer;procedurep(x,y,z:integer);beginy:=y+1;z:=z+xend;begina:=2;b:=3;p(a+b,a,a);write(a)end.对于下列参数传递方式,分别写出执行程序后a的输出值。(1)传名;(2)传地址。九下列文法是否为SLR(1)文法?若是,请构造相应的分析表。若不是,请说明理由。SSab|bRRS|a十文法S(L)|aLL,S|S(a)给出句子(a,((a,a),(a,a)))的一个最右推导;(b)按照(a)的最右推导,给出移进-归约分析器的工作步骤。十一.对PL/0语言扩充单词:+=++请完成下列识别单词‘+’,‘+=’和‘++’(设单词内码分别为PLUS,PLUSDECOME和PLUSPLUS)的词法分析算法:if(CH=='+'){①;if(②){SYM=PLUSBECOME;GetCh();}elseif(CH=='+'){③}else④}答案一选择题b,C,D,D,C二判断题√×√×√三填空题源程序单词符号待约项目移进项目句柄最左素短语四.解:文法G(S):S→AB|B|A0A→AD|CB→2|4|6|8C→1|3|5|7|9|BD→0|C五(2)短语:(2分)((T,S),a)(T,S),a(T,S)T,Sa直接短语:(1分)T,Sa句柄:(1分)T,S六解:(1)(j>0,x,0,3)(2)(j,-,-,8)(3)(j>,y,0,5)(4)(j,-,-,8)(5)(+,x,y,T1)(6)(:=,T1,-,z)(7)(j,-,-,12)(8)(+,x,2,T2)(9)(:=,T2,-,x)(10)(+,y,3,T3)(11)(:=,T3,-,y)(12)七.解:(1)(消除左递归,提公因左因子)S→aFS'|+aFS'S'→+aFS'|εF→*aF'F'→F|ε(2)FIRST(S)={a,十}FOLLOW(S)={#}FIRST(50)={+,ε}FOLLOW(S')={#}FIRST(F)={*}FOLLoW(F)=(+,#}FIRST(F')={*,ε}FOLLOW(+,#}(3)八九.该文法的拓广文法G’为:(0)S’S(1)SSab(2)SbR(3)RS(4)Ra其LR(0)项目集规范族如下:I0:S’S·I3:SSa·bS·SabI4:SbR·S·bRI5:RS·SS·abI1:S’S·I6:Ra·SS·abI2:Sb·RI7:SSab·R·SR·aS·SabS·bR文法G’的识别活前缀的DFA如下所示:SabRababSI0I1I2I3I5I4I7I6FOLLOW(S)=FOLLOW®={a,$}构造的SLR分析表如下:观察左表,对状态5,可归纳又可移进,即存在为重定义的入口。所以,该文法不是SLR(1)文法。十.(a)S(L)(L,S)(L,(L))(L,(L,S))(L,(L,(L)))(L,(L,(L,S)))(L,(L,(L,a)))(L,(L,(S,a)))(L,(L,(a,a)))(L,(S,(a,a)))(L,((L),(a,a)))(L,((L,S),(a,a)))(L,((L,a),(a,a)))(L,((S,a),(a,a)))(L,((a,a),(a,a)))(S,((a,a),(a,a)))(a,((a,a),(a,a)))(注:下划线部分为句柄)(b)步骤栈输入动作1$(a,((a,a),(a,a)))$移进2$(a,((a,a),(a,a)))$移进3$(a,((a,a),(a,a)))$归约,Sa4$(S,((a,a),(a,a)))$归约,LS5$(L,((a,a),(a,a)))$移进6$(L,((a,a),(a,a)))$移进7$(L,((a,a),(a,a)))$移进状态actiongotoab$SR0S211S3acc2S6S2543S74r2r25r3/S3r36r4r47r1r18$(L,((a,a),(a,a)))$移进9$(L,((a,a),(a,a)))$归约,Sa10$(L,((S,a),(a,a)))$归约,LS11$(L,((L,a),(a,a)))$移进12$(L,((L,a),(a,a)))$移进13$(L,((L,a),(a,a)))$归约,Sa14$(L,((L,S),(a,a)))$归约,LL,S15$(L,((L),(a,a)))$移进16$(L,((L),(a,a)))$归约,S(L)17$(L,(S,(a,a)))$归约,LS18$(L,(L,(a,a)))$移进19$(L,(L,(a,a)))$移进20$(L,(L,(a,a)))$移进21$(L,(L,(a,a)))$归约,Sa22$(L,(L,(S,a)))$归约,LS23$(L,(L,(L,a)))$移进24$(L,(L,(L,a)))$移进25$(L,(L,(L,a)))$归约,Sa26$(L,(L,(L,S)))$归约,LL,S27$(L,(L,(L)))$移进28$(L,(L,(L)))$归约,S(L)29$(L,(L,S))$归约,LL,S30$(L,(L))$移进31$(L,(L))$归约,S(L)32$(L,S)$归约,LL,S33$(L)$移进34$(L)$归约,S(L)35$S$接受