




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
9.1类型的语义表示,标识符的处理主要包括语义代码化、作用域处理、符号表构造、单元分配等工作。,单词是最小的语义单位。,一、符号表的作用,表格管理,错误处理,词法分析,中间代码生成,语法分析,中间代码优化,目标代码生成,源程序,目标程序,在整个编译阶段都离不开符号表。,二、符号表的内容Pascal0有以下几种类型:,整型:integer实型:real布尔型:boolean数组型:ARRAYN1N2OFT记录型:RECORDid1:T1;idn;TnEND,类型表TYPEL结构形如:,种类部分,指针,整型,实型,布尔型,数组型,记录型,TCLASS部分结构如下:,数组信息表AINFL的结构形如:,下界,上界,指针,类型的长度,记录信息表RINFL的表项结构形如:,域名部分,区距部分,FTP是域类型部分,一个记录类型要占几个RINFL表项,不同记录类型所占表项个数不一,而在表项中没有链接部分,因此在不同记录的RINFL表之间可放置一条空项,以表示记录类型的RINFL表中的结束。,综上所述,我们有:,a,array:,AINFL,d,record:,RINFL,设一记录类型的RINFL表为:,假定integer,real,boolean为标准类型,其地址部分分别为itp,rtp,btp。Leng(itp)=Leng(rtp)=Leng(btp)=1,例1:设有数组类型ARRAY110OFARRAY15OFinteger则其内部表示如下图所示。,例2:记录类型RECORDu:integer;a:ARRAY110OFboolean;r:RECORDx,y:realENDEND则表示如下图所示。,atp:,TCLASS,TPOINT,AINFL表,110btp1,9.2标识符的语义表示,程序中标识符的出现分为定义性的和使用性的。,标识符的定义部分确定标识符的语义,它主要包括种类、类型、地址等等内容。,标识符语义的内部表示称为机内符(机器内部符号)或语义字。,在我们的PASCAL0语言中,标识符的种类有:,常量种类类型种类,变量种类,实在变量,赋值形参变量,引用形参变量,赋值形参变量,过函种类,实在变量,标识符语义字的一种结构:,类型部分,种类部分,地址部分,ICLASS的具体结构如下:,常量,类型,变量,过函,域名种类,形参,引用型形参,从实际实现的角度来说,ICLASS的上述结构是很不经济的,因为如果用编码方法,三个二进位就够了。但上述结构直观、便于描述,因此还是采用这种结构。,IADDR部分的具体意义依赖于ICLASS内容。,1.若ICLASS.c=1,则IADDR是CONSL表地址。,2.若ICLASS.t=1,则IADDR是类型长度3.若ICLASS.v=1.则IADDR是形如:的抽象地址,其中LEVEL是层数,OFF是区距部分。,4.若ICLASS.d=1,则是域类型长度5.若ICLASS.p=1,则IADDR是过函信息表PFINFL的地址,该表的表项结构如下:,层数,区距,DISSPLAY表的区距,参数个数,子程序入口地址,参数,处理完临时变量时的第一个可用OFF值,标识符的语义字内容如下图所示,常量:,tpvloff,变量:,过函:,例子:设有PASCAL过程说明段:PROCEDUREp(VARx:real;y:boolean);CONSTpai=3.14;TYPEarr=ARRAY110OFinteger;VARm:integer;a:arr;FUNCTIONf(Z:real;FUNCTIONG(U,W:real):real;K:integer):integer;BEGINENDBEGINEND,各标识符的语义字分别如下图所示,实在过函标识符的OFF值为3,第一个形参的OFF值为4,ainfp表示AINFL表的一表项地址如下图:,Pinfp1如所示:,PFINFLPARINFL,其他的情况类似,9.3符号表的组织,一、符号表的结构符号表记为SYMBL,它是标识符的语义表,在语义学中,把这种表称为环境。SYMBL表项的结构如下:,标识符部分,语义字部分,二、定义性标识符1.CONSTPi=3.142.TYPEA3.VARA,B,C4.PROCEDUREX(A,B)5.FUNCINONX(A,B):Tname6.RECORDX:T;XEND,三、标识符的作用域与处理程序段:PROGRAMEND过程段:PROCEDUREEND函数段:FUNCTIONEND记录类型:RECORDEND,具体实现方法可分为两种:,真删除法,加标记法,9.4抽象地址的处理,存储分配分为静态分配与动态分配。在编译时分配的称静态分配。在目标程序运行时分配的称动态分配。编译程序只能确定某种结构的形式地址,称之为抽象地址。,抽象地址通常采用如下结构:,层数部分,区距部分,主,p,q,0层,1层,2层,每当一个过程说明的子程序被调用时,就要给其中的变量分配一串存贮单元,称这一串单元为该过程的一个活动区。,从第3号单元开始分配给过函名、形参等。,活动区的分配情况如下图所示:,管理信息,形式参数2形式参数1过函名,DISPLAY表,局部变量,临时变量,l1,0-2,4,5,3,(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),实在声明:,抽象地址的变化规律可图示如下:,varid:T,(l,off)(l+1,4)(l,off)(l+1,4)(l,off)(l+1,4)(l,off)(l+1,4),形参入口:,procp(,funcp(,procP(,funcF(,(l,off)(l,off+Size(T)(l,off)(l,off+1)(l,off)(l,off+2)(l,off)(l,off+2),形参声明:,Id:T,Varid:T,funcF():T,procP():,形参出口:,(l,off)(l,off+l+1),其中小写字母的标识符表示实在标识符,大写字母的标识符则表示形参标识符。Size(T)表示类型T的长度。,在形参出口,off+l+1中的l+1表示DISPLAY表的位置。,例:在下面程序中,每个对偶(l,i)表示此刻的LEVEL和OFF值。(l,10)LABEL100,200;(l,10)CONSTpai=3.14;(l,10)TYPEarr=ARRAY110OFinteger;(l,10)VARx:integer;(l,11)a:ARRAY15OFinteger;(l,16)FUNCTIONf(l+1,4)VARx:real;(l+1,5)a:arr;(传值),(l+1,15)VARc:arr;(传地址)(l+1,16)PROCEDUREG();(l+1,18)FUNCTIONF():real(l+1,20):real;(l+1,20+l+2)(形参结束off+(l+1)+1)BEGINEND;(l,16),9.5标识符的处理算法,例子:设有非形参过程首部(层数为l)。PROCEDUREP(X,Y:integer;VARZ:real;PROCEDUREG(U:real;J:integer);FUNCTIONF(VARW:real;FUNCTIONH(M:integer):real):bool),最后得到下列
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年终止写字楼租赁合同协议范本
- 门面续签合同范本
- 购买电脑耗材合同范本
- 家具清仓转让合同范本
- 病人用品租赁合同范本
- 单位购柴油合同范本
- 轨道热熔合同范本
- 废旧手表销售合同范本
- 乡村公路业绩合同范本
- 化脓性脑膜炎脑脊液漏护理查房
- (完整)三年级下册数学竖式计算题500题(可直接打印)
- GB/T 43241-2023法庭科学一氧化二氮检验气相色谱-质谱法
- 小儿腹泻护理查房
- GB/T 42653-2023玻璃高温黏度试验方法
- 代持股权挂名法人协议书
- 普通化学(第五版)浙江大学普通化学教研组P课件
- 医疗保障法律法规行政处罚司法审视及建议PPT学习培训课件
- GB/T 9999.2-2018中国标准连续出版物号第2部分:ISSN
- GB/T 6543-2008运输包装用单瓦楞纸箱和双瓦楞纸箱
- GB 19522-2004车辆驾驶人员血液、呼气酒精含量阈值与检验
- GB 10238-1998油井水泥
评论
0/150
提交评论