欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    #编译原理答案第五章.docx

    • 资源ID:11093883       资源大小:88.56KB        全文页数:22页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    #编译原理答案第五章.docx

    1、#编译原理答案第五章练习5.1解答:输入(4*7+1*2n,带注释的分析树如下:练习5.2解答: (1根据表5.3中的语法制导定义建立表达式(a+(b的分析树和语法树 (2根据图5.17的翻译模式构造(a+(b的分析树和语法树练习5.3解答:设置下面的函数和属性:expr1|expr2:把表达式expr2拼写在表达式expr1后面。deletep(expr:去掉表达式expr左端的。E.expr,T.expr,F.expr:属性变量,分别表示E,T,F的表达式。E.add,T.add,F.add,属性变量,若为true,则表示其表达式中外层有号,否则无号。E.pmark,T.pmark,F.p

    2、mark,属性变量,若为true,表示E,T,F的表达式中左端为 E1 +Tif(T.pmark=true THEN E.expr=E1.expr|+|deletep(T.expr ELSE E.expr:=E1.expr|+|T.expr。E.add:=true。E.pmark:=false。E - Tif(T.pmark=true THEN E.expr:=deletep(T.expr ELSE E.expr:=T.expr。E.add:=T.add。E.pmark:=false。T - T1*FT.expr:=T1.expr|*|F.expr。 T.add:=false。T.pmark:

    3、=false。T - FT.expr:=F.expr。 T.add:=F.add。T.pmark:=F.pmark。F - (Eif(E.add=false THEN BEGIN F.expr:=E.expr。 F.add:=false。 F.pmark:=false。 END ELSE BEGIN F.expr:=(|E.expr|。 F.add:=true。 F.pmark:=true。 END。F - idF.expr:=id.lexval。 F.add:=false。F.pmark:=false。练习5.4解答: (1语法制导定义如下:产生式语义规则E - E1+Tif(E1.type

    4、=int AND (T.type=int THEN E.type:=int ELSE E.type:=real。 E - TE.type:=T.type。 T - numT.type:=int。 T - num.numT.type:=real。 (2设E.pf和T.pf分别是E和T的前缀形式,|是两个字符串的连接,语法制导定义如下:产生式语义规则E - E1+Tif(E1.type=int AND (T.type=int THEN E.type:=int ELSE BEGIN E.type:=real。 if(E1.type=int AND (T.type=real THEN E1.pf:=i

    5、nttoreal|E1.pf ELSE if(E1.type=realAND(T.type=int THEN T.pf:=inttoreal|T.pf END。E.pf:=+|E1.pf|T.pf。 E - TE.type:=T.type。 E.pf:=T.pf。 T - numT.type:=int。 T.pf:=int.lexval。 T - num.numT.type:=real。 T.pf:=real.lexval。练习5.5解答: (1用综合属性决定s.val的语法制导定义:产生式语义规则 S - LS.val:=L.val。 S - L1.L2S.val:=L1.val+L2.va

    6、l*L2.p。 L - BL.val:=B.val。 L.p:=2-1。 L - L1BL.val:=L1.val*2+B.val。 L.p:=L.p*2-1。 B - 0B.val:=0。 B - 1B.val:=1。 注:L.p表示恢复L.val的因子。 (2分析:设B.c是B的综合属性,是B产生的位对最终值的贡献。要求出B.c,必须求出B产生位的 权,设B.i。B.i的求法请参看下面的图示: 另外,设L.fi为继承因子,L.fs为综合因子,语法制导定义如下:产生式语义规则 S - LL.i:=1。 L.fi:=2。 L.fs:=1。 S.val:=L.val。 S - L1.L2L1.i

    7、=1。 L1.fi=2。 L1.fs:=1。 L2.i=2-1。 L2.fi=1。 L2.fs:=2-1。S.val:=L1.val+L2.val。 L - BL.s:=L.i。 B.i:=L.s。 L.val:=B.c。 L - L1BL1.i:=L.i*L1.fi。 L.s:=L1.s*L1.fs。B.i:=L.s。L.val:=L1.val+B.c。 B - 0B.c:=0。 B - 1B.c:=B.i。 若把文法改写成如下形式,则语法制导定义会更清楚: S - L.R | L L - LB | B R - RB | B B - 0 | 1产生式语义规则 S - LL.i:=1。 S.v

    8、al:=L.val。 S - L.RL.i=1。 R.i=2-1。 S.val:=L.val+R.val。 L - L1BB.i:=L.i。 L1.i:=L.i*2。 L.val:=L1.val+B.c。 L - BB.i:=L.i。 L.val:=B.c。 R - R1BR1.i:=R.i。 R.s:=R1.s*2-1。 B.i:=R.s。 R - BR.s:=R.i。 B.i:=R.s。 R.val:=B.c。 B - 0B.c:=0。 B - 1B.c:=B.i。练习5.6解答: 产生式语义规则 D - D1,idD.type:=D1.type。 addtype(id.entry,D1.

    9、type。 D - T idD.type:=T.type。 addtype(id.entry,T.type。 T - intT.type:=int。 T - realT.type:=real。练习5.7解答: (1产生式语义规则 E - TRR.i:=T.type。 E.type:=R.s。 R - +TR1if(R.i=int AND (T.type=int THEN R1.i:=int ELSE R1.i:=real。R.s:=R1.s。 R - R.s:=R.i。 T - num.numT.type:=real。 T - numT.type:=int。 (2产生式语义规则 E - TRR

    10、.itype:=T.type。 R.ipf:=T.pf。 E.pf:=R.spf。 E.type:=R.stype。 R - +TR1if(R.itype=int AND (T.type=int THEN R1.itype:=int ELSE BEGIN R1.itype:=real。 if(R.itype=real AND (T.type=int THEN T.pf:=inttoreal|T.pf ELSE if(R.itype=intAND(T.type=real THEN R.ipf:=inttoreal|R.ipf END。R1.ipf:=+|R.ipf|T.pf。R.stype:=R

    11、1.stype。 R.spf:=R1.spf。 R - R.stype:=R.itype。 R.spf:=R.ipf。 T - numT.type:=int。 T.pf:=int.lexval。 T - num.numT.type:=real。 T.pf:=real.lexval。 注: R.ipf是R的继承属性,是它的前缀表示。 R.spf是R的综合属性,是它的前缀表示。练习5.8解答:设计两个函数lookup(name和enter(name,type,lookup(name查找符号表,若查到,则返回name在符号表中的地址;否则返回NULL。enter(name,type在符号表中建立na

    12、me的符号表项,并填写上name的类型type。翻译模式如下: D - T L.in:=T.type L L - L1.in:=L.in L1,id if(lookup(id.name then error else enter(id.name,L.in L - id if(lookup(id.name then error else enter(id.name,L.in T - int T.type:=int T - real T.type:=real练习5.9解答:(1 翻译模式如下: D - id L addtype(id.entry,L.type L - , id L1 L.type:

    13、=L1.type。 addtype(id.entry,L.type L - : T L.type:=T.type T - integer T.type:=integer T - real T.type:=real(2 预测翻译程序由如下过程组成: PROCEDURE D。 VAR L.type:(integer,real。 id.entry:id-entry。 BEGIN id.entry:=id.lexval。 match(id。 L.type:=L。 addtype(id.entry,L.type END。 FUNCTION L:(integer,real。 VAR L.type,L1.t

    14、ype:(integer,real。 id.entry:id-entry。 BEGIN if(lookahead=, THEN BEGIN match(,。 match(id。 id.entry:=id.lexval。 L1.type:=L。 L.type:=L1.type。 addtype(id.entry,L.type。 END ELSE BEGIN match(:。 L.type:=T。 END。 return(L.type。 END。 FUNCTION T:(integer,real。 VAR T.type:(integer,real。 BEGIN if(lookahead=integ

    15、er THEN BEGIN match(integer。 T.type:=id.lexval END ELSE if(lookahead=real THEN BEGIN match(real。 T.type:=id.lexval。 END ELSE ERROR。 return (T.type。 END。 练习5.10解答: (1 对于F1 sub F2 sub F3,其最左推导和分析树如下: S = L = B = B sub F3 = B sub F2 sub F3 = F1 sub F2 Sub F3 显然,F3.ps:=shrink(F2.ps。 F2.ps:=shrink(F1.ps。

    16、 为此,为B设一个综合属性B.pt,其值等于其下标F的继承属性F.ps。语法制导定义如下: 产生式语义规则 S - LL.ps:=10。 S.ht:=L.ht。 L - BB.ps:=L.ps。 L.ht:=B.ht。 L - L1BL1.ps:=L.ps。 B.ps:=L.ps。 L.ht:=max(L1.ht,B.ht。 B - B1 sub FB1.ps:=B.ps。 F.ps:=shrink(B1.pt。 B.ht:=disp(B1.ht,F.ht。B.pt:=F.ps。 B - FF.ps:=B.ps。 B.ht:=F.ht。 B.pt:=B.ps。 F - LL.ps:=F.ps。

    17、 F.ht:=L.ht。 F - textF.ht:=text.h*F.ps(2 翻译模式如下: S - L.ps:=10 L S.ht:=L.ht L - B.ps:=L.ps B L.ht:=B.ht L - L1.ps:=L.ps L1 B.ps:=L.ps B L.ht:=max(L1.ht,B.ht B - B1.ps:=B.ps B1 sub F.ps:=shrink(B1.pt F B.ht:=disp(B1.ht,F.ht。 B.pt:=F.ps B - F.ps:=B.ps F B.ht:=F.ht。 B.pt:=B.ps F - L.ps:=F.ps LF.ht:=L.ht

    18、 F - text F.ht:=text.h*F.ps 练习5.11解答:(1 假设基础文法含左递归的翻译模式如下: A - A1.i:=A.i A1 Y.i:=A.i Y A.a:=g(A1.a,Y.y A - X.i:=A.i X A.a:=f(X.x 消除基础文法左递归后的翻译模式如下: A - X.i:=A.i X R.i:=f(X.x。 R.yi:=A.i R A.a:=R.s R - Y.i:=R.yi Y R1.i:=g(R.i,Y.y。 R1.yi:=R.yi R1 R.s:=R1.s R - R.s:=R.i 属性R.yi用于传递A.i给Y。(2 设基础文法含左递归的翻译模式

    19、如下: A A1.i:=h1(A.i A1 y.i:=h2(A.i Y A.a:=g(A1.a,Y.y A - X.i:=h3(A.i X A.a:=f(X.x 考虑XY1Y2Y3,其继承属性的计算如下: 消除基础文法中的左递归后,基础文法为: A - XR R - YR | 继承属性的计算如下图所示:当识别出X后,并不能计算出X的继承属性,因而,也就无法计算有关X的其他属性。只好把X的源表示或中间表示作为继承传给R,继续沿R传下去,然后再作为综合属性传回来。直到能计算出X.i,再对X的成分进行翻译。Y1,Y2,Y3的翻译思想和X类似,具体的翻译模式省略。练习5.12解答: S - L.ps:

    20、=10。 L.iht:=0 L S.ht:=L.ht L - B.ps:=L.ps B L.ht:=max(L.iht,B.ht L - B.ps:=L.ps B L1.iht:=max(L.iht,B.ht。 L1.ps:=L.ps L1 L.ht:=L1.ht B - F.ps:=B.ps F sub B1.ps:=shrink(B.ps B1 B.ht:=disp(F.ht,B1.ht B - F.ps:=B.ps F B.ht:=F.ht F - L.ps:=F.ps L F.ht:=L.ht F - text F.ht:=text.h*F.ps练习5.13解答: (1栈输入动作 $

    21、abbb$ 初始 $Mabbb$ 规约 M - $MMabbb$ 规约 M - $MMMabbb$ 规约 M - $MMMabbb$ 移进 $MMMLbbb$ 规约 L - a $MMMLbbb$ 移进 $MMLbb$ 规约 L - MLb $MMLbb$ 移进 $MLb$ 规约 L - MLb $MLb$ 移进 $L$ 规约 L - MLb接受(2 构造文法的LR(1项目的识别文法活前缀的DFA: 在项目集I0,I2,I2中,存在移进-规约冲突,因此,它不是LR(1的。练习5.14解答:(1 把表5.10的语法制导定义改写成下面的翻译模式: S - L B.ps:=L.s B S.ht:=B

    22、.ht L - L.s:=10 B - B1.ps:=B.ps B1 M.i:=B.ps M B2.ps:=M.s B2 B.ht:=max(B1.ht,B2.ht M - M.s:=M.i B - B1.ps:=B.ps B1 sub N.i:=B.ps N B2.ps:=N.s B2 B.ht:=disp(B1.ht,B2.ht B - text B.ht:=text.h*B.ps N - N.s:=shrink(N.i(b 设一个栈ps,管理继承属性B.ps的值。栈的三个操作为 push(ps,值,pop(ps,top(ps. 翻译模式如下: S - L B.ps:=top(ps B S

    23、.ht:=B.ht L - push(ps,10 B - B1.ps:=top(ps B1 B2.ps:=top(ps B2 B.ht:=max(B1.ht,B2.ht B - B1.ps:=top(ps B1 sub N (B2.ps:=top(ps B2 B.ht:=disp(B1.ht,B2.ht。 pop(ps B - text B.ht:=text.h*B.ps N - push(ps,shrink(top(ps练习5.15解答:A B C D 练习5.16解答:(1 FALSE (2 TRUE (3 TRUE (4 FALSE (5 TRUE (6 FALSE练习5.17解答: a

    24、type: ARRAY(0.9, ARRAY(-10.10, integer。 cell: RECORD(a integer (binteger。 pcell: POINTER(cell。 或 : POINTER(RECORD(a integer (b integer。 foo: ARRAY(1.100, cell。 或 : ARRAY(1.100, RECORD(a integer (b integer。 bar: integer cellpcell。 或 : integer cellPOINTER(RECORD(ainteger (binteger。练习5.18解答:D - id:T ad

    25、dtype(id.entry,T.typeT - char T.type:=charT - integer T.type:=integerT - list of T1 T.type:=list(T1.typeE - num E.type:=integerE - id E.type:=lookup(id.entryE - Literal E.type:=charE - (L E.type:=list(L.typeL - E,L1 L.type:=IF (E.type=L1.type THEN E.type ELSE type_errorL - E L.type:=E.type练习5.19解答:(

    26、1S - id:=E S.type:= IF id.type=E.type THEN E.type ELSE type_error。 S.val:= IF id.type=E.type THEN E.val ELSE val_errorS - IF E THEN S1 S.type:= IF E.type=boolean THEN S1.type ELSE type_error。 S.val:= IF E.type=boolean THEN S1.val ELSE val_errorS - WHILE E DO S1 S.type:= IF E.type=boolean THEN S1.typ

    27、e ELSE type_error。 S.val:= IF E.type=boolean THEN S1.val ELSE val_errorS - S1。S2 S.type:=S2.type。 S.val:=S2.val(2E - E1 AND E2 E.type:= IF(E1.type=booleanAND(E2.type=boolean THEN boolean ELSE type_errorE - E1 OR E2 E.type:= IF(E1.type=booleanAND(E2.type=boolean THEN boolean ELSE type_errorE - NOT E1 E.type:= IF(E1.type=boolean THEN boolean ELSE type_errorE - E1 op E2 E.type:= IF(E1.type=E2.type TH


    注意事项

    本文(#编译原理答案第五章.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开