第八章符号表 ■符号表的作用: 口一致性检查和作用域分析; 口辅助代码生成。 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 第八章 符号表 ◼ 符号表的作用: 一致性检查和作用域分析; 辅助代码生成
8.1符号表的组织与作用 ■符号表的每一项(入口)包含两大栏: 口名字栏,也称主栏,关键字栏 口信息栏,记录相应的不同属性,分为若干子栏. ■对符号表的操作: 口填入名称 口查找名字 口访问信息 口填写修改信息 口删除 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 8.1 符号表的组织与作用 ◼ 符号表的每一项(入口)包含两大栏: 名字栏,也称主栏,关键字栏 信息栏,记录相应的不同属性,分为若干子栏. ◼ 对符号表的操作: 填入名称 查找名字 访问信息 填写修改信息 删除
■对符号表进行操作的时机: ▣定义性出现 ▣使用性出现 ■按名字的不同种属建立多张符号表,如常 数表、变量名表、过程名表、… ■符号的组织方式: 1.安排各项各栏的存储单元为固定长度 2.用间接方式安排各栏存储单元 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 ◼ 对符号表进行操作的时机: 定义性出现 使用性出现 ◼ 按名字的不同种属建立多张符号表,如常 数表、变量名表、过程名表、… ◼ 符号的组织方式: 1. 安排各项各栏的存储单元为固定长度 2. 用间接方式安排各栏存储单元
■符号表的存放次序: 1.把每一项置于连续K存储单元中,构成一 张K*N的表 2.把整个符号表分成m个子表,如T1,T2,.Tm 每个子表含有N项. 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 ◼ 符号表的存放次序: 1. 把每一项置于连续K存储单元中,构成一 张K*N的表 2. 把整个符号表分成m个子表,如T1 ,T2 ,…Tm, 每个子表含有N项
例:PASCAL程序段: PROCEDURE INCWAP(M,N:INTEGER); LABEL START; VAR K:INTEGER; BEGIN START: K:=M+1; M:=N+4; N:=K; END. 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 例: PASCAL程序段: PROCEDURE INCWAP(M,N:INTEGER); LABEL START; VAR K:INTEGER; BEGIN START: K:=M+1; M:=N+4; N:=K; END
PROCEDURE INCWAP(M,N:INTEGER); LABEL START; VAR K:INTEGER; BEGIN START: K:=M+1; 表0.1符号名表SNT M:=N+4; N:=K; NAME INFORMATION END. M 形式参数,整 型,值参数 N 形式参数,整 型,值参数 K 整型,变量 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 PROCEDURE INCWAP(M,N:INTEGER); LABEL START; VAR K:INTEGER; BEGIN START: K:=M+1; M:=N+4; N:=K; END. 表 0.1 符号名表 SNT NAME INFORMATION M 形式参数,整 型,值参数 N 形式参数,整 型,值参数 K 整型,变量
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 (1) 1 (2) 4 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 表 0.2 常数表 CT 值 (VALUE) (1) 1 (2) 4 PROCEDURE INCWAP(M,N:INTEGER); LABEL START; VAR K:INTEGER; BEGIN START: K:=M+1; M:=N+4; N:=K; END
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 二目子程序, 入口四元式:1 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 表 0.3 入口名表 ENT NAME INFORMATION (1) INCWAP 二目子程序, 入口四元式:1 PROCEDURE INCWAP(M,N:INTEGER); LABEL START; VAR K:INTEGER; BEGIN START: K:=M+1; M:=N+4; N:=K; END
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) 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 表 0.4 标号表 LT NAME INFORMATION (1)START 四元式:(4) PROCEDURE INCWAP(M,N:INTEGER); LABEL START; VAR K:INTEGER; BEGIN START: K:=M+1; M:=N+4; N:=K; END
表0.1符号名表SNT 表0.2常数表CT NAME INFORMATION 值 M 形式参数,整 (VALUE) 型,值参数 (1) 1 N 形式参数,整 (2) 4 型,值参数 K 整型,变量 表0.3入口名表ENT 表0.4 标号表LT NAME INFORMATION NAME INFORMATION (1) INCWAP 二目子程序, (1) START 四元式:(4) 入口四元式:1 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 表 0.1 符号名表 SNT NAME INFORMATION M 形式参数,整 型,值参数 N 形式参数,整 型,值参数 K 整型,变量 表 0.2 常数表 CT 值 (VALUE) (1) 1 (2) 4 表 0.3 入口名表 ENT NAME INFORMATION (1) INCWAP 二目子程序, 入口四元式:1 表 0.4 标号表 LT NAME INFORMATION (1)START 四元式:(4)