预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共25页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

编译原理_国防科技大学中国大学mooc课后章节答案期末考试题库 2023年 1.对于文法G(S'),该文法识别活前缀的DFA如下图,状态I5包含的项目有 G(S'):(0)S'→S(1)S→iSeS(2)S【图片】→iS(3)S→a 答案: S→iSeŸS_S→ŸiSeS_S→ŸiS_S→Ÿa 2.(a+b)/(c-d)对应的逆波兰式(后缀式)是 答案: ab+cd-/ 3.表达式(a+b)/c-(a+b)*d对应的间接三元式表示如下,其中三元式表中第(3) 号三元式应为间接码表三元式表(1)OPARG1ARG2(2)(1)+ab(1)(2)/(1) c(3)(3)(4)(4)-(2)(3) 答案: (*,(1),d) 4.设AS为文法的综合属性集,AI为继承属性集,则对于下面的属性文法G(P)定 义中,AS和AI正确描述是产生式语义规则P→xQRQ.b:=R.dR.c:=1 R.e:=Q.aQ→uQ.a:=3R→vR.d:=R.cR.f:=R.e 答案: AS={Q.a,R.d,R.f}AI={Q.b,R.c,R.e} 5.考虑下面的属性文法G(S)【图片】过程enter(name,type)用来把名字 name填入到符号表中,并给出此名字的类型type。按照该属性文法,关于 语句【图片】【图片】,【图片】,:integr的语义描述准确的是 答案: 说明,是,integer变量,把,三个名字填入符号表中,并在类型栏中填上, integer 6.考虑下面的属性文法G(S)【图片】对于输入字符串abc进行自下而上的语 法分析和属性计算,设S.u的初始值为5,属性计算完成后,S.v的值为 答案: 18 7.关于属性文法,下列说法中正确的是 答案: 属性文法是对上下文无关文法的扩展。_属性文法提供了描述语言的语义的 机制。 8.下面哪些属性文法是L-属性文法。 答案: G(D):产生式语义规则D→TLL.in:=T.type T→intT.type:=integerT→realT.type:=realL→, id.in:=L.inaddtype(id.entry,L.in) L→idaddtype(id.entry,:产生式语义L.in)_G(L)规则L→E nprint(E.val)E→+TE.val:=.val+T.valE→TE.val:=T.val T→*FT.val:=.val*F.valT→FT.val:=F.valF→ (E)F.val:=E.valF→digitF.val:=digit.lexval_G(S):产生 式语义规 则S→BB→B.ps:=10S.ht:=B.ht sub.ps:=B.ps.ps:=shrink(B.ps)B.ht :=disp(.ht,.ht)B→textB.ht:=text.h×B.ps 9.1、给定属性文法G(P):语法制导定义如下:产生式语义规则P→D print(D.i)D→【图片】;【图片】D.i【图片】:=.i+【图片】.iD→id:T D.i:=1D→id:label假设语法单位D.i:=1P对应程序,D对应声明语句,id 对应标识符,T对应类型,按照该属性文法的定义,下列说法中正确的是 答案: D.i表示D对应的声明语句中的标识符的数目。_D.i表示D对应的声明语 句的数目。 10.对于翻译模式R→addop【图片】T{.i:=mknode(addop.lexme,R.i,T.nptr)} 【图片】{R.s:=【图片】.s}R→eR.s:=R.i}{编写R的翻译子程序如下: functionR(in:↑AST_node):↑AST_node;varnptr,i1,s1,s:↑AST_node; addoplexeme:char;beginifsym=addopthenbeginaddoplexeme:=lexval; advance;nptr:=T;i1:=mknode(addoplexeme,in,nptr);s1:=R(i1)s:=s1end elses:=in;return其中send;AST_node为抽象语法树(AST)结点类型。关于 该子程序实现,下列说法正确的是 答案: R的综合属性s实现为函数的返回值。_R的继承属性i实现为函数的形式 参数in。_函数R的返回结果是指向抽象语法树结点的指针,指向翻译得到 的抽象语法树的根结点。 11.与语句a:=(b+c)*e+(b+c)/f等价的中间代码是: 答案: _三元式:(1)(+,b,c)(2)(*,(1),e)(3)(+,b,c)(4)(/,(3),f)(5)(+,(2), (4))(6)(:=,a,四元式(5))__:(1