欢迎来到163文库! | 帮助中心 精品课件PPT、教案、教学设计、试题试卷、教学素材分享与下载!
163文库
全部分类
  • 办公、行业>
  • 幼教>
  • 小学>
  • 初中>
  • 高中>
  • 中职>
  • 大学>
  • 各类题库>
  • ImageVerifierCode 换一换
    首页 163文库 > 资源分类 > PPT文档下载
    分享到微信 分享到微博 分享到QQ空间

    课程《编译原理》课件第9章符号表.ppt

    • 文档编号:4371577       资源大小:297.51KB        全文页数:42页
    • 资源格式: PPT        下载积分:25文币     交易提醒:下载本文档,25文币将自动转入上传用户(晟晟文业)的账号。
    微信登录下载
    快捷注册下载 游客一键下载
    账号登录下载
    二维码
    微信扫一扫登录
    下载资源需要25文币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    优惠套餐(点此详情)
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、试题类文档,标题没说有答案的,则无答案。带答案试题资料的主观题可能无答案。PPT文档的音视频可能无法播放。请谨慎下单,否则不予退换。
    3、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者搜狗浏览器、谷歌浏览器下载即可。。

    课程《编译原理》课件第9章符号表.ppt

    1、9.1 9.1 类型的语义表示类型的语义表示 标识符的处理主要包括语义代码化、作用域处理、符号表构造、单元分配等工作。单词是最小的语义单位。一、符号表的作用表 格 管 理错 误 处 理词法分析中间代码生成语法分析中间代码优化目标代码生成源程序 目标程序在整个编译阶段都离不开符号表。二、符号表的内容 Pascal0有以下几种类型:整 型:integer实 型:real布尔型:boolean 数组型:ARRAYN1N2OF T 记录型:RECORD id1:T1;idn;Tn END类型表TYPEL结构形如:TYPELtp:TCLASS TPOINT 种类部分指针TCLASS:i r b a d

    2、整型实型布尔型数组型记录型 TCLASS部分结构如下:数组信息表 AINFL的结构形如:AINFLap:LOW UP CTP CLEN 下界上界指针类型的长度记录信息表 RINFL的表项结构形如:RINFLrp:IDE OFF FTP 域名部分区距部分FTP是域类型部分 一个记录类型要占几个RINFL表项,不同记录类型所占表项个数不一,而在表项中没有链接部分,因此在不同记录的RINFL表之间可放置一条空项,以表示记录类型的RINFL表中的结束。综上所述,我们有:TYPEL表 integer:i nilreal:r nilboolean:b nil aarray:AINFL drecord:RI

    3、NFL设一记录类型的RINFL表为:rp:id1 Off1 tp1id2 Off2 tp2 idn Offn tpn 假定integer,real,boolean为标准类型,其地址部分分别为itp,rtp,btp。Leng(itp)=Leng(rtp)=Leng(btp)=1例1:设有数组类型ARRAY110 OF ARRAY 15 OF integer 则其内部表示如下图所示。AINFLTYPELtp:aTCLASSTPOINTLOW UP CTP CLEN1 10 5a1 5 itp 1例2:记录类型RECORD u:integer;a:ARRAY110 OF boolean;r:RECO

    4、RD x,y:real END END 则表示如下图所示。drtp:TCLASSTPOINTu 0 itpa 1 atpr 11 rtpatp:aTCLASSTPOINTAINFL表1 10 btp 1drtp:TCLASSTPOINTx 0 rtpy 1 rtp9.2 9.2 标识符的语义表示标识符的语义表示 程序中标识符的出现分为定义性的和使用性的。标识符的定义部分确定标识符的语义,它主要包括种类、类型、地址等等内容。标识符语义的内部表示称为机内符(机器内部符号)或语义字。在我们的PASCAL0语言中,标识符的种类有:常量种类类型种类变量种类实在变量 赋值形参变量 引用形参变量 赋值形参变

    5、量 过函种类实在变量 标识符语义字的一种结构:ITYPE ICLASS IADDR类型部分种类部分地址部分 ICLASS的具体结构如下:ICLASS:c t v p d f r常量类型变量过函域名种类形参引用型形参 从实际实现的角度来说,ICLASS的上述结构是很不经济的,因为如果用编码方法,三个二进位就够了。但上述结构直观、便于描述,因此还是采用这种结构。IADDR部分的具体意义依赖于ICLASS内容。1.若ICLASS.c=1,则IADDR是CONSL表地址。2.若ICLASS.t=1,则IADDR是类型长度3.若ICLASS.v=1.则IADDR是形如:的抽象地址,其中LEVEL 是层数

    6、,OFF是区距部分区距部分。4.若ICLASS.d=1,则是域类型长度5.若ICLASS.p=1,则IADDR是过函信息表PFINFL的地址,该表的表项结构如下:LEVEL OFFLEVEL OFF NOFF MOFF FN ENTRY PARAMS 层数区距DISSPLAY表的区距参数个数子程序入口地址参数处理完临时变量时的第一个可用OFF值标识符的语义字内容如下图所示常量:ITYPE ICLASS ADDRtp cCONSL 类型:tp t lengtp v l off变量:域名:tp d leng过函:tp pPFINFL 例子:设有PASCAL过程说明段:PROCEDURE p(VAR

    7、 x:real;y:boolean);CONST pai=3.14;TYPE arr=ARRAY110 OF integer;VAR m:integer;a:arr;FUNCTION f(Z:real;FUNCTION G(U,W:real):real;K:integer):integer;BEGINENDBEGINENDTYPE CLASS ADDR pfinfp1pp:24rtp v f rx:25btp v fy:rtp cpai:10ainfp tarr:2offmitp vm:各标识符的语义字分别如下图所示pfinfp2itppf:34fvrtpZ:pfinfp3frtppG:37f

    8、vitpK:实在过函标识符的OFF值为3,第一个形参的OFF值为4,ainfp表示AINFL表的一表项地址如下图:2offaainfp va:AINFLainfp=1itp101Pinfp1 如所示:PFINFL PARINFL PARAMS ENTRY FN MOFF NOFF OFF LEVEL 2631SEMAN(y)SEMAN(x)其他的情况类似9.3 9.3 符号表的组织符号表的组织一、一、符号表的结构 符号表记为SYMBL,它是标识符的语义表,在语义学中,把这种表称为环境。SYMBL表项的结构如下:SYMBLi:IDENT SEMAN 标识符部分语义字部分二、定义性标识符 1.CO

    9、NST Pi=3.14 2.TYPE A 3.VAR A,B,C 4.PROCEDURE X(A,B)5.FUNCINON X(A,B):Tname 6.RECORD X:T;X END三、标识符的作用域与处理程序段:PROGRAMEND过程段:PROCEDUREEND函数段:FUNCTIONEND记录类型:RECORDEND具体实现方法可分为两种:真删除法 加标记法 9.4 9.4 抽象地址的处理抽象地址的处理存储分配分为静态分配与动态分配。在编译时分配的称静态分配。在目标程序运行时分配的称动态分配。编译程序只能确定某种结构的形式地址,称之为抽象地址。抽象地址通常采用如下结构:level o

    10、ff 层数部分区距部分主pq0层1层2层每当一个过程说明的子程序被调用时,就要给其中的变量分配一串存贮单元,称这一串单元为该过程的一个活动区。从第3号单元开始分配给过函名、形参等。活动区的分配情况如下图所示:管理信息形式参数2形式参数1过函名DISPLAY表局部变量临时变量l10-2453(l,off)(l,off)(l,off)(l,off)(l,off)(l,off)(l,off)(l,off+size(T)(l,off)(l,off)(l,off)(l,off)实在声明:抽象地址的变化规律可图示如下:var id:T(l,off)(l+1,4)(l,off)(l+1,4)(l,off)(

    11、l+1,4)(l,off)(l+1,4)形参入口:proc p(func p(proc P(func F(l,off)(l,off+Size(T)(l,off)(l,off+1)(l,off)(l,off+2)(l,off)(l,off+2)形参声明:Id:TVar id:Tfunc F():Tproc P():形参出口:(l,off)(l,off+l+1)其中小写字母的标识符表示实在标识符,大写字母的标识符则表示形参标识符。Size(T)表示类型T的长度。在形参出口,off+l+1中的l+1表示DISPLAY表的位置。例:在下面程序中,每个对偶(l,i)表示此刻的LEVEL和OFF值。(l,

    12、10)LABEL 100,200;(l,10)CONST pai=3.14;(l,10)TYPE arr=ARRAY110OF integer;(l,10)VAR x:integer;(l,11)a:ARRAY15 OF integer;(l,16)FUNCTION f(l+1,4)VAR x:real;(l+1,5)a:arr;(传值)(l+1,15)VAR c:arr;(传地址)(l+1,16)PROCEDURE G();(l+1,18)FUNCTION F():real(l+1,20):real;(l+1,20+l+2)(形参结束 off+(l+1)+1)BEGINEND;(l,16)9

    13、.5 9.5 标识符的处理标识符的处理算法算法例子:设有非形参过程首部(层数为l)。PROCEDURE P(X,Y:integer;VAR Z:real;PROCEDURE G(U:real;J:integer);FUNCTION F(VAR W:real;FUNCTION H(M:integer):real):bool)最后得到下列一些表的内容:Scopes:SEMAN(F)FSEMAN(G)GSEMAN(Z)ZSEMAN(Y)YSEMAN(X)XSEMAN(P)P531PFINFL 表SEMAN(F)SEMAN(G)SEMAN(Z)SEMAN(Y)SEMAN(X)PFINFL 表29PFINFL 表27PFINFL 表SEMAN(J)SEMAN(U)SEMAN(H)SEMAN(w)PFINFL 表PFINFL 表15PFINFL 表SEMAN(M)PFINFL 表


    注意事项

    本文(课程《编译原理》课件第9章符号表.ppt)为本站会员(晟晟文业)主动上传,其收益全归该用户,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!




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


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


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

    163文库