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

上传人:F****n 文档编号:88428232 上传时间:2019-04-27 格式:PPT 页数:42 大小:297.52KB
返回 下载 相关 举报
《编译原理》ppt课件第9章--符号表_第1页
第1页 / 共42页
《编译原理》ppt课件第9章--符号表_第2页
第2页 / 共42页
《编译原理》ppt课件第9章--符号表_第3页
第3页 / 共42页
《编译原理》ppt课件第9章--符号表_第4页
第4页 / 共42页
《编译原理》ppt课件第9章--符号表_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《《编译原理》ppt课件第9章--符号表》由会员分享,可在线阅读,更多相关《《编译原理》ppt课件第9章--符号表(42页珍藏版)》请在金锄头文库上搜索。

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

2、,数组信息表 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)=

3、1,例1:设有数组类型ARRAY110 OF ARRAY 15 OF integer 则其内部表示如下图所示。,例2:记录类型RECORD u:integer; a:ARRAY110 OF boolean; r:RECORD x,y:real END END 则表示如下图所示。,atp:,TCLASS,TPOINT,AINFL表,1 10 btp 1,9.2 标识符的语义表示,程序中标识符的出现分为定义性的和使用性的。,标识符的定义部分确定标识符的语义,它主要包括种类、类型、地址等等内容。,标识符语义的内部表示称为机内符(机器内部符号)或语义字。,在我们的PASCAL0语言中,标识符的种类有:

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

5、: 的抽象地址,其中LEVEL 是层数,OFF是区距部分。,4.若ICLASS.d=1,则是域类型长度 5.若ICLASS.p=1,则IADDR是过函信息表PFINFL的地址,该表的表项结构如下:,层数,区距,DISSPLAY表的区距,参数个数,子程序入口地址,参数,处理完临时变量时的第一个可用OFF值,标识符的语义字内容如下图所示,常量:,tp v l off,变量:,过函:,例子:设有PASCAL过程说明段: PROCEDURE p(VAR x:real; y:boolean); CONST pai=3.14; TYPE arr=ARRAY110 OF integer; VAR m:int

6、eger; a:arr; FUNCTION f(Z:real;FUNCTION G(U,W: real):real;K:integer):integer; BEGINEND BEGINEND,各标识符的语义字分别如下图所示,实在过函标识符的OFF值为3,第一个形参的OFF值为4,ainfp表示AINFL表的一表项地址如下图:,Pinfp1 如所示:,PFINFL PARINFL,其他的情况类似,9.3 符号表的组织,一、符号表的结构 符号表记为SYMBL,它是标识符的语义表,在语义学中,把这种表称为环境。SYMBL表项的结构如下:,标识符部分,语义字部分,二、定义性标识符 1.CONST Pi

7、=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 抽象地址的处理,存储分配分为静态分配与动态分配。 在编译时分配的称静态分配。 在目标程序运行时分配的称动态分配。 编译程序只能确定某种结构的形式地址,称之为抽象地址。,抽象地址通常采用如下结构:,层数部分

8、,区距部分,主,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),实在声明:,抽象地址的变化规律可图示如下:,var id:T,(l,of

9、f) (l +1,4) (l,off) (l +1,4) (l,off) (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:T,Var id:T,func F():T,proc P():,形参出口:,(l,off) (l,off+l+1),其中小写字母的标识符表示实在标识符,大写字母的标识符则表示形参标识符。Size(T)表示类型T的长度。

10、,在形参出口,off+l+1中的l+1表示DISPLAY表的位置。,例:在下面程序中,每个对偶(l,i)表示此刻的LEVEL和OFF值。 (l,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(

11、 ); (l+1,18)FUNCTION F( ):real (l+1,20) ):real; (l+1,20+l+2) (形参结束 off+(l+1)+1 ) BEGINEND; (l,16),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),F,SEMAN(G),G,SEMAN(Z),Z,SEMAN(Y),Y,SEMAN(X),X,SEMAN(P),P,2,9,PFINFL 表,2,7,PFINFL 表,SEMAN(J),SEMAN(U),PFINFL 表,1,5,PFINFL 表,SEMAN(M),PFINFL 表,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号