Chapt8符号表
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8.2 整理和查找
1. 线性查找 按关键字出现的顺序填写各项。 填表快,查找慢。 结构简单,节省空间,效率低,查找时间
复杂度:O(n)。
改进:自适应线性表
Chapt8符号表教研室教研室
12
2. 二分查找
表格中的项按名字的“大小”顺序整理排列 。
填表慢,查找快。查找时间复杂度:O(Log2n) 改进:组织成二叉树。
型,值参数
N 形式参数,整
型,值参数
K 整型,变量
Chapt8符号表教研室教研室
6
PROCEDURE INCWAP(M,N:INTEGER);
LABEL START;
VAR
K:INTEGER;
BEGIN
START:
K:=M+1;
M:=N+4;
N:=K;
表 0.2 常 数 表 CT
END.
值
(VALUE)
Chapt8符号表教研室教研室
14
PL 语言编译程序的符号表
1. 表格的定义 名字表(nametab) 程序体表(btab) 层次显示表(display) 数组信息表(atab) 中间代码表(code)
Chapt8符号表教研室教研室
15
1) 名字表(nametab) 名字表nametab:登记程序中出现的各 种名字及其属性
(1) INCWAP 二目子程序, 入口四元式:1
表 0.4 标号表 LT NAME INFORMATION (1)START 四元式:(4)
Biblioteka Baidu
Chapt8符号表教研室教研室
10
PROCEDURE INCWAP(M,N:INTEGER);
LABEL START;
VAR
K:INTEGER;
BEGIN
表 0.5 四 元 式 表 QT
2. 把整个符号表分成m个子表,如T1,T2,…Tm ,每个子表含有N项.
Chapt8符号表教研室教研室
4
例: PASCAL程序段:
PROCEDURE INCWAP(M,N:INTEGER); LABEL START; VAR
K:INTEGER; BEGIN START:
K:=M+1; M:=N+4; N:=K; END.
3. 杂凑查找(HASH技术)
杂凑函数H(SYM):0~N-1
N:符号表的项数。
要求:1. 计算简单高效 2. 函数值分布均匀
填表快,查找快
Chapt8符号表教研室教研室
13
8.4 符号表的内容
符号表的信息栏中登记了每个名字的有关 性质 ➢ 类型:整、实或布尔等 ➢ 种属:简单变量、数组、过程等 ➢ 大小:长度,即所需的存储单元字数 ➢ 相对数:指分配给该名字的存储单元的 相对地址
Chapt8符号表教研室教研室
5
PROCEDURE INCWAP(M,N:INTEGER);
LABEL START;
VAR
K:INTEGER;
BEGIN
START:
K:=M+1; M:=N+4; N:=K;
表 0.1 符 号 名 表 SNT NAME INFORMATION
END.
M 形式参数,整
START: K:=M+1; M:=N+4;
OPR OPN1 OPN2 (1) link
N:=K; END.
(2) par INCWAP 1 (3) par INCWAP 2
(4) +
M
1
(5) +
N
4
(6) :=
K
(7) return
Chapt8符号表教研室教研室
RESULT
M N K M N
11
(1) 1
(2) 4
Chapt8符号表教研室教研室
7
PROCEDURE INCWAP(M,N:INTEGER);
LABEL START;
VAR
K:INTEGER;
BEGIN
START:
K:=M+1;
M:=N+4;
N:=K; END.
表 0.3 入口名表 ENT
NAME INFORMATION
(1) INCWAP 二目子程序,
第八章
符号表的作用:
一致性检查和作用域分析; 辅助代码生成.
Chapt8符号表教研室教研室
1
8.1 符号表的组织与作用
符号表的每一项(入口)包含两大栏:
名字栏,也称主栏,关键字栏 信息栏,记录相应的不同属性,分为若干子栏.
对符号表的操作:
填入名称 查找名字 访问信息 填写修改信息 删除
Chapt8符号表教研室教研室
2
对符号表进行操作的时机:
定义性出现 使用性出现
按名字的不同种属建立多张符号表,如常 数表、变量名表、过程名表、…
符号的组织方式:
1. 安排各项各栏的存储单元为固定长度 2. 用间接方式安排各栏存储单元
Chapt8符号表教研室教研室
3
符号表的存放次序:
1. 把每一项置于连续K存储单元中,构成一 张K*N的表
name kindlev typ normal ref adr/val/size link
0 1 tx→
当组在名信程名字息序▪中址▪▪avs字名(类a分di为表体zclre,,类o,当字型当数中表标当的n名名 (于名名c存(种组 的s字字tbh一 名 其识字字 无贮ty为为ta类位a为p单a个 , 他变n变的 类r符e名 定 义类b元,s型 置t量量指在n为))型)布 当 情的)类 型、a名中、字主的名、可或;名n0向相m时尔名况时型的a过时的变所程层对布同以Ce数当,m(包,h地t量字填,名程填aa位量在序次一e尔是括组名填p址bt入t,是入类字8a形程入(;中置(的的为符型常他变字pbv参该对号用否t序型填登中r们a;程层2r(,类量为o于表urb的,体记的于为有入存型i教c过其序次eoa相名过e研入中数的位程依或bo标变整n应d室他体为该据名程时l定o第置值e)教u次不明量变所型,、情t的1)研r义名,一,y量需、填e类,填名形室(数p况(静的存)个i每入时或rne推主e字参贮他形组上名个tr态f,s单e们指参程是 名一字程()f元层相)a、r为在向序个e的否 时的序应r次相rf字数0代名该指al体中应为填i目码。ny符活字在数向k定的s变入动规)型入组该,记量f口a录在过对地l形s1e数程6参,
Chapt8符号表教研室教研室
9
表 0.1 符 号 名 表 SNT NAME INFORMATION
M 形式参数,整 型,值参数
N 形式参数,整 型,值参数
K 整型,变量
表 0.2 常 数 表 CT 值
(VALUE) (1) 1 (2) 4
表 0.3 入口名表 ENT NAME INFORMATION
入口四元式:1
Chapt8符号表教研室教研室
8
PROCEDURE INCWAP(M,N:INTEGER);
LABEL START;
VAR
K:INTEGER;
BEGIN
START:
K:=M+1;
M:=N+4;
N:=K;
表 0.4 标号表 LT
END.
NAME INFORMATION
(1)START 四元式:(4)