书签 分享 收藏 举报 版权申诉 / 22
上传文档赚钱

类型属性文法课堂练习课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4612843
  • 上传时间:2022-12-25
  • 格式:PPT
  • 页数:22
  • 大小:284.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《属性文法课堂练习课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    属性 文法 课堂 练习 课件
    资源描述:

    1、属性文法课堂练习题2、写出下面文法的属性文法:Number Digit Number1Number DigitDigit 0|1|2|3|4|5|6|7|8|9|1、写出下面文法的属性文法:Number Number1 Digit Number Digit Digit 0|1|2|3|4|5|6|7|8|9|1、写出下面文法的属性文法:Number Number1 Digit Number DigitDigit 0|1|2|3|4|5|6|7|8|9|文法规则语义规则Number Number1 Digit Number.val=Number1.val*10+Digit.valNumber D

    2、igitNumber.val=Digit.valDigit 0Digit.val=0Digit 9Digit.val=92、写出下面文法的属性文法:Number Digit Number1Number DigitDigit 0|1|2|3|4|5|6|7|8|9|文法规则语义规则Number Digit Number1Number.mul=Number 1.mul*10Number.val=Digit.val*Number.mul+Number 1.valNumber DigitNumber.mul=1Number.val=Digit.valDigit 0Digit.val=0Digit 9D

    3、igit.val=93、给出下列文法中S产生的二进制数值的语义规则,并用堆栈说明该语义的实现过程,例如输入1101.011时,S.val=13.375:S-L.L|LL-L B|BB-0|1 B.Val:=0 B-0 B.Val:=1 B-1 L.val:=B.val;L.length=1 L-B L.val:=L.val*2+B.val L.length=L.length+1 L-L B S.val:=L.val S-L S.val:=L1.val+L2.val/2 L2.length S-L1.L2语义规则产生式13_._1_1L.L1L.Val:=L.val*2+B.val(L.engt

    4、h=2)13_._1L.L1B.Val:=113_._0_1L.LB113_._0_1L.L11L.Val:=B.val(L.length=1)13_._0L.L11B.Val:=113_._0L.B1113_._0L.01113_.L.011L.Val:=L.val*2+B.val(L.length=4)13L.011B.Val:=16_1LB.0116_1L1.011L.val:=L.val*2+B.val(L.length=3)6L1.011B.val:=03_0LB1.0113_0L01.011L.val:=L.val*2+B.val(L.length=2)3L01.011B.val:

    5、=11_1LB01.0111_1L101.011L.val:=B.val(L.length=1)1L101.011B.val:=11B101.01111101.011-1101.011使用的语义规则使用的语义规则valstate输入输入S.Val:=L1.val+L2.val/2L2.length13.375SL.Val:=L.val*2+B.val(L.ength=3)13_._3L.LB.Val:=113_._1_1L.LB13_._1_1L.L1使用的语义规则使用的语义规则valstate输入输入1101.011 的分析树的分析树1B.val=1L1.val=11B.Val=1L1.va

    6、l=30B.Val=0L1.val=60B.Val=0L2.val=01B.Val=1L2.val=11B.Val=1L2.val=3.S=13.3751B.Val=1L1.val=134、十进制浮点数的文法修改如下:dnum num.snumnum num1 digit|digitsnum digit snum1|digitdigit 0|1|2|3|4|5|6|7|8|9(注意:整数、小数分别用左、右递归文法)文法规则语义规则dnum num.snumdnum.val=num.val+snum.valnum num1 digitnum.val=num1.val*10+digit.valnu

    7、m digitnum.val=digit.valsnum digit snum1snum.val=(snum1.val+digit.val)/10snum digitsnum.val=digit.val/10digit 0digit.val=0digit 9digit.val=95、下面文法给出是Pascal说明的文法,写出变量类型的一个属性文法。decl -var-list:type var-list-var-list,id|idtype-int|float 文法规则语义规则declvar-list:typevar-list.dtype=type.dtypevar-list1var-list

    8、2,idvar-listidtypeintegertype.dtype=integertyperealtype.dtype=realvar-list2.in=var-list1.dtypevar-list2.dtype=var-list2.inid.in=var-list1.dtypeid.in=var-list.dtypevar-list2.dtype=var-list1.dtypeid.dtype=var-list1.dtypeid.dtype=var-list.dtype6、对于输入的表达式、对于输入的表达式(4*7+1)*2,根据下表的语法制导定义建立一棵带注释,根据下表的语法制导定义

    9、建立一棵带注释的分析树。的分析树。val:val:表示非终结符的整数值表示非终结符的整数值,综合属性综合属性,lexval,lexval 是单词是单词 digit digit 的属性的属性 语法制导定义语法制导定义 产生式产生式 语义规则语义规则 L E print(E.val)E E1 1+T+T E.val:=E1.val+T.val E T E.val:=T.val T T1 1*F F T.val:=T1.val*F.val T F T.val:=F.val F(E)F.val:=E.val F digit F.val:=digit.lexval 7、请按语法制导的定义,将后缀表达式翻

    10、译成中缀表达式。、请按语法制导的定义,将后缀表达式翻译成中缀表达式。注意,不允许出现冗余括号,后续表达式的文法如下:注意,不允许出现冗余括号,后续表达式的文法如下:E-EE+E-EE*E-id 语法制导定义语法制导定义 产生式产生式 语义规则语义规则 S-E print E.code E-E1E2+E.code=E1.code|+|E2.code;E.op=+E-E1E2*IF E1.op=+AND E2.op=+THEN E.code=(|E1.code|)|*|(|E2.code|);ELSE IF E1.op=+THEN E.code=(|E1.code|)|*|E2.code;ELSE

    11、 IF E2.op=+THEN E.code=E1.code|*|(|E2.code|);ELSE E.code=E1.code|*|E2.code|;E一一id E.code:=id.lexeme;v8、假设变量的说明是由下列文法生成的:、假设变量的说明是由下列文法生成的:vDi L vL,i L|:T vTinteger|real v1)建立一个语法制导定义,把每一个标志符的类型加在符)建立一个语法制导定义,把每一个标志符的类型加在符号表中号表中 v2)为)为1)构造一个预翻译程序)构造一个预翻译程序 1)type为综合属性,代表类型属性,为综合属性,代表类型属性,函数函数addtype实

    12、现向符号表中实现向符号表中i对应项填类型信息。对应项填类型信息。语法制导定义语法制导定义 产生式产生式 语义动作语义动作 Di L D.Type:=L.Type addtype(i.entry,D.type)L,i L1 L.Type:=L1.Type addtype(i.entry,L.type)L:T L.type:=T.type Tinteger T.type:=integer Treal T.type:=real vb)采用递归下降分析法编写预翻译程序:采用递归下降分析法编写预翻译程序:vProcedure D;vbegin v if lookahead=id then vbegin

    13、vmatch(id);vD.type=L;vaddtype(id.entry,D.type)vend velse v error vend vFunction L:DataType;vbegin vif lookahead=,then vbegin v match(,);v if lookahead=id then v begin v match(id);vL.Type=L;v addtype(id.entry,L.type);v return(L.type)v end v else v error v end else if lookahead=:then begin match(:);L.

    14、Type=T;return(L.Type)end else error end Function T:DataType;begin if lookahead=integer then begin match(integer);return(integer)end else if lookahead=real then begin match(real);return(real)end else error end v9、下面文法产生的表达式是对整型和实型常数应用算符、下面文法产生的表达式是对整型和实型常数应用算符+形形成的。当两个整数相加时成的。当两个整数相加时,结果为整数,否则为实数。结果为

    15、整数,否则为实数。vE TR vR+TR|vTnum.num|num va)给出语法制导定义确定每个子表达式的类型。给出语法制导定义确定每个子表达式的类型。vb)把表达式翻译成前缀形式,并且决定类型。试用一元运把表达式翻译成前缀形式,并且决定类型。试用一元运算符算符inttoreal把整型值转换为相等的实型值,以使得前缀表把整型值转换为相等的实型值,以使得前缀表达式中两个运算对象是同类型的。达式中两个运算对象是同类型的。a)设设type是综合属性,代表各非终结符的是综合属性,代表各非终结符的“类型类型”属性属性 设设in是继承属性,是继承属性,翻译方案翻译方案 产生式产生式 语义规则语义规则

    16、ET R R.in:=T.type E.Type:=R.s R+T R1 IF(R.in=integer)and(T.type=integer)THEN R1.in:=integer ELSE R1.in:=real R.s:=R1.s R R.s:=R.in Tnum.num T.type:=real Tnum T.type:=integer b)设属性设属性s和和i用于传递属性用于传递属性type,属性,属性t和和j用于传递属性用于传递属性val。翻译方案翻译方案 产生式产生式 语义规则语义规则 ET R R.i:=T.type R.j:=T.val E.Type:=R.s E.val:=

    17、R.t R+T R1 IF(R.i=integer)and(T.type=integer)THEN BEGIN R1.i:=integer Print(+,R.j,T.val)R1.j:=R.j+T.val END ELSE BEGIN R1.i:=real IF R.i=integer THEN Begin R.i:=real R.j:=inttoreal(R.j)End IF T.type=integer THEN Begin T.type:=real T.val:=inttoreal(T.val)End Print(+,R.j,T.val)R1.j:=R.j+T.val END R.s:=R1.s R.t:=R1.t R R.s:=R.i R.t:=R.j Tnum.num T.type:=real T.val:=num.num.lexval Tnum T.type:=integer T.val:=num.lexval

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:属性文法课堂练习课件.ppt
    链接地址:https://www.163wenku.com/p-4612843.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库