




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
类型的语义表示第一页,共四十二页,2022年,8月28日9.1类型的语义表示标识符的处理主要包括语义代码化、作用域处理、符号表构造、单元分配等工作。单词是最小的语义单位。第二页,共四十二页,2022年,8月28日一、符号表的作用
表格管理
错误处理
词法分析中间代码生成
语法分析中间代码优化目标代码生成
源程序
目标程序第三页,共四十二页,2022年,8月28日在整个编译阶段都离不开符号表。二、符号表的内容
Pascal0有以下几种类型:整型:integer实型:real布尔型:boolean数组型:ARRAY[N1…N2]OFT记录型:RECORDid1:T1;…;idn;TnEND第四页,共四十二页,2022年,8月28日类型表TYPEL结构形如:TYPEL[tp]:TCLASS
TPOINT种类部分指针第五页,共四十二页,2022年,8月28日TCLASS:
irbad整型实型布尔型数组型记录型
TCLASS部分结构如下:第六页,共四十二页,2022年,8月28日
数组信息表
AINFL的结构形如:AINFL[ap]:LOWUPCTPCLEN下界上界指针类型的长度第七页,共四十二页,2022年,8月28日记录信息表
RINFL的表项结构形如:RINFL[rp]:IDEOFFFTP域名部分区距部分FTP是域类型部分第八页,共四十二页,2022年,8月28日一个记录类型要占几个RINFL表项,不同记录类型所占表项个数不一,而在表项中没有链接部分,因此在不同记录的RINFL表之间可放置一条空项,以表示记录类型的RINFL表中的结束。第九页,共四十二页,2022年,8月28日综上所述,我们有:
TYPEL表
integer:inilreal:
rnilboolean:
bnil
aarray:AINFL
drecord:RINFL第十页,共四十二页,2022年,8月28日设一记录类型的RINFL表为:rp:id1
Off1
tp1id2
Off2
tp2
idn
Offn
tpn假定integer,real,boolean为标准类型,其地址部分分别为itp,rtp,btp。
Leng(itp)=Leng(rtp)=Leng(btp)=1第十一页,共四十二页,2022年,8月28日例1:设有数组类型ARRAY[1…10]OFARRAY[1…5]OFinteger则其内部表示如下图所示。AINFLTYPELtp:aTCLASSTPOINTLOWUPCTPCLEN1105a15itp1第十二页,共四十二页,2022年,8月28日例2:记录类型RECORDu:integer;
a:ARRAY[1…10]OFboolean;
r:RECORDx,y:realENDEND则表示如下图所示。
drtp:TCLASSTPOINTu0itpa
1
atpr11rtp’atp:aTCLASSTPOINTAINFL表110btp1第十三页,共四十二页,2022年,8月28日drtp:TCLASSTPOINTx0rtpy
1
rtp第十四页,共四十二页,2022年,8月28日9.2标识符的语义表示程序中标识符的出现分为定义性的和使用性的。标识符的定义部分确定标识符的语义,它主要包括种类、类型、地址等等内容。标识符语义的内部表示称为机内符(机器内部符号)或语义字。第十五页,共四十二页,2022年,8月28日在我们的PASCAL0语言中,标识符的种类有:常量种类类型种类变量种类实在变量赋值形参变量引用形参变量赋值形参变量过函种类实在变量第十六页,共四十二页,2022年,8月28日标识符语义字的一种结构:ITYPEICLASSIADDR类型部分种类部分地址部分第十七页,共四十二页,2022年,8月28日
ICLASS的具体结构如下:ICLASS:ctvpdfr常量类型变量过函域名种类形参引用型形参第十八页,共四十二页,2022年,8月28日从实际实现的角度来说,ICLASS的上述结构是很不经济的,因为如果用编码方法,三个二进位就够了。但上述结构直观、便于描述,因此还是采用这种结构。
IADDR部分的具体意义依赖于ICLASS内容。1.若ICLASS.c=1,则IADDR是CONSL表地址。第十九页,共四十二页,2022年,8月28日2.若ICLASS.t=1,则IADDR是类型长度3.若ICLASS.v=1.则IADDR是形如:的抽象地址,其中LEVEL
是层数,OFF是区距部分。4.若ICLASS.d=1
,则是域类型长度5.若ICLASS.p=1,则IADDR是过函信息表PFINFL的地址,该表的表项结构如下:LEVELOFF第二十页,共四十二页,2022年,8月28日LEVELOFFNOFFMOFFFNENTRYPARAMS层数区距DISSPLAY表的区距参数个数子程序入口地址参数处理完临时变量时的第一个可用OFF值第二十一页,共四十二页,2022年,8月28日标识符的语义字内容如下图所示常量:ITYPEICLASSADDRtp’c’CONSL类型:tp’t’lengtp’v’
loff变量:域名:
tp’d’leng过函:tp’p’PFINFL第二十二页,共四十二页,2022年,8月28日例子:设有PASCAL过程说明段:PROCEDUREp(VARx:real;y:boolean); CONSTpai=3.14; TYPEarr=ARRAY[1…10]OFinteger; VARm:integer;a:arr;
FUNCTIONf(Z:real;FUNCTIONG(U,W:real):real;K:integer):integer; BEGIN………………END BEGIN………………END第二十三页,共四十二页,2022年,8月28日TYPECLASSADDRpfinfp1pp:2…4rtpvfrx:2…5btpvfy:<3.14>rtpcpai:10ainfptarr:2…offmitpvm:各标识符的语义字分别如下图所示第二十四页,共四十二页,2022年,8月28日pfinfp2itppf:3…4fvrtpZ:pfinfp3frtppG:3…7fvitpK:实在过函标识符的OFF值为3,第一个形参的OFF值为4,ainfp表示AINFL表的一表项地址如下图:
2…offaainfpva:第二十五页,共四十二页,2022年,8月28日
AINFL[ainfp]=1itp101Pinfp1如所示:PFINFLPARINFLPARAMSENTRYFNMOFFNOFFOFFLEVEL2631SEMAN(y)SEMAN(x)其他的情况类似第二十六页,共四十二页,2022年,8月28日9.3符号表的组织一、符号表的结构
符号表记为SYMBL,它是标识符的语义表,在语义学中,把这种表称为环境。SYMBL表项的结构如下:
SYMBL[i]:IDENTSEMAN标识符部分语义字部分第二十七页,共四十二页,2022年,8月28日二、定义性标识符
1.CONSTPi=3.142.TYPEA…3.VARA,B,C4.PROCEDUREX(A,B)5.FUNCINONX(A,B):Tname6.RECORDX:T;…;XEND第二十八页,共四十二页,2022年,8月28日三、标识符的作用域与处理程序段:PROGRAM…END过程段:PROCEDURE………………END函数段:FUNCTION………………END记录类型:RECORD………………END具体实现方法可分为两种:真删除法加标记法第二十九页,共四十二页,2022年,8月28日9.4抽象地址的处理
存储分配分为静态分配与动态分配。
在编译时分配的称静态分配。在目标程序运行时分配的称动态分配。
编译程序只能确定某种结构的形式地址,称之为抽象地址。第三十页,共四十二页,2022年,8月28日抽象地址通常采用如下结构:leveloff
层数部分区距部分主pq0层1层2层第三十一页,共四十二页,2022年,8月28日 每当一个过程说明的子程序被调用时,就要给其中的变量分配一串存贮单元,称这一串单元为该过程的一个活动区。 从第3号单元开始分配给过函名、形参等。第三十二页,共四十二页,2022年,8月28日活动区的分配情况如下图所示:管理信息形式参数2形式参数1过函名DISPLAY表局部变量临时变量l+10-2453第三十三页,共四十二页,2022年,8月28日(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<过程声明部分><函数声明部分>第三十四页,共四十二页,2022年,8月28日(l,off)
(l+1,4)(l,off)
(l+1,4)(l,off)
(l+1,4)(l,off)
(l+1,4)形参入口:procp(funcp(procP(funcF(第三十五页,共四十二页,2022年,8月28日(l,off)
(l,off+Size(T))(l,off)
(l,off+1)(l,off)
(l,off+2)(l,off)
(l,off+2)形参声明:Id:TVarid:TfuncF(…):TprocP(…):形参出口:(l,off)
(l,off+l+1)<形参结束”)”>第三十六页,共四十二页,2022年,8月28日其中小写字母的标识符表示实在标识符,大写字母的标识符则表示形参标识符。Size(T)表示类型T的长度。在形参出口,off+l+1中的l+1表示DISPLAY表的位置。第三十七页,共四十二页,2022年,8月28日例:在下面程序中,每个对偶(l,i)表示此刻的LEVEL和OFF值。(l,10)LABEL100,200;(l,10)CONSTpai=3.14;(l,10)TYPEarr=ARRAY[1…10]OFinteger;(l,10)VARx:integer;(l,11)a:ARRAY[1…5]OFinteger;(l,16)FUNCTIONf((l+1,4)VARx:real;(l+1,5)a:arr;(传值)
第三十八页,共四十二页,2022年,8月28日(l+1,15)VARc:arr;(传地址)(l+1,16)PROCEDUREG();(l+1,18)FUNCTIONF():real
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业厂房购买协议3篇
- 垫资施工合同中的工程安全3篇
- 家电购销合同模板
- 山塘管护协议书3篇
- 录用合同范本版2篇
- 仓库租赁续租3篇
- 动迁房买卖合同中的权利义务3篇
- 电气机械电动车充电服务与维护考核试卷
- 电子白板交互功能维修考核试卷
- 稀有金属回收与再利用技术考核试卷
- 福建省龙岩市一级校2024-2025学年高二下学期4月期中联考 数学试题(含答案)
- 2025年街道全面加强乡村治理工作实施方案
- 明股实债协议合同
- 2025“十五五”金融规划研究白皮书
- 9.2法律保障生活(教案) -2024-2025学年统编版道德与法治七年级下册
- 2025年江西上饶铅山城投控股集团有限公司招聘笔试参考题库含答案解析
- 建筑工程结算审核现场踏勘
- 加油站防汛抗洪应急预案范本
- 融资岗专业考试题及答案
- 2025年高考物理模拟试卷1(贵州卷)及答案
- 胃癌课件完整版本
评论
0/150
提交评论