教学要点 符号表的组织和作用 ■整理和查找 ■哈希函数 Leblanc-Cook符号表处理方法 关联表和中心引用表
教学要点 ◼ 符号表的组织和作用 ◼ 整理和查找 ◼ 哈希函数 ◼ LeBlanc-Cook符号表处理方法 ◼ 关联表和中心引用表
第八章符号表 符号表: 口将名字映射到编译器已知的有关信息的一个字 典 符号表的作用 口一致性检查和作用域分析; □辅助代码生成
第八章 符号表 ◼ 符号表: 将名字映射到编译器已知的有关信息的一个字 典。 ◼ 符号表的作用: 一致性检查和作用域分析; 辅助代码生成
符号表的组织与作用 m符号表的每一项(入口)包含两大栏 □名字栏,也称主栏,关键字栏 口信息栏,记录相应的不同属性,如:地址、值、 作用域等,分为若干子栏 对符号表的操作: □填入名称( insert) □查找名字(1 hookup) □访问信息 □填写修改信息 □删除
符号表的组织与作用 ◼ 符号表的每一项(入口)包含两大栏: 名字栏,也称主栏,关键字栏 信息栏,记录相应的不同属性,如:地址、值、 作用域等,分为若干子栏. ◼ 对符号表的操作: 填入名称(insert) 查找名字(lookup) 访问信息 填写修改信息 删除
符号表的内容 符号表的信息栏中登记了每个名字的有关 性质 类型:整、实或布尔等 种属:简单变量、数组、过程等 大小:长度,即所需的存储单元字数 相对数:指分配给该名字的存储单元的 相对地址
符号表的内容 ◼ 符号表的信息栏中登记了每个名字的有关 性质 ➢类型:整、实或布尔等 ➢种属:简单变量、数组、过程等 ➢大小:长度,即所需的存储单元字数 ➢相对数:指分配给该名字的存储单元的 相对地址
■对符号表进行操作的时机: □定义性出现 □使用性出现 按名字的不同种属建立多张符号表,如常 数表、变量名表、过程名表、 符号的组织方式: 安排各项各栏的存储单元为固定长度 2.用间接方式安排各栏存储单元
◼ 对符号表进行操作的时机: 定义性出现 使用性出现 ◼ 按名字的不同种属建立多张符号表,如常 数表、变量名表、过程名表、… ◼ 符号的组织方式: 1. 安排各项各栏的存储单元为固定长度 2. 用间接方式安排各栏存储单元
固定长度的符号表 ■有些语言对标识符有长度限制,如:不超 过8个字符,则可用固定长度(两个机器字) 的符号表 符号表 NAME INFORMATION SAMPE
固定长度的符号表 ◼ 有些语言对标识符有长度限制,如:不超 过8个字符,则可用固定长度(两个机器字) 的符号表
间接方式的符号表 ■有些语言对标识 符号丧 NA AME INFORMATION 符无长度限制或 者范围很宽,如: 100个字符,则都 用25个字很浪费, 口 ISAMPLELJoJoP 般引入一个字 符数组来存放有 关信息,在符号 符号表 表的地址栏存放 NAMB INFORMATION 对应的指针 I6(sAIMPLIE4lLlolol匚
间接方式的符号表 ◼ 有些语言对标识 符无长度限制或 者范围很宽,如: 100个字符,则都 用25个字很浪费, 一般引入一个字 符数组来存放有 关信息,在符号 表的地址栏存放 对应的指针
通过符号表访问内情向量 不同的符号,所需 NAME INFORMATION 信息空间长度不 CAT 地址 样,可把共同属性 放在符号表中,而 把特殊属性存放在 别的地方,在符号 内情向量表 表中设一个指针指 维效 首地 示信息的存放位置 界差dn 上界I 下昇u 土界ln 下界1n
通过符号表访问内情向量 ◼ 不同的符号,所需 信息空间长度不一 样,可把共同属性 放在符号表中,而 把特殊属性存放在 别的地方,在符号 表中设一个指针指 示信息的存放位置
个可存放N项的符号表在内存中可采用 下列两种方式之一(假设每项需要K个 字) 1.把每一项置于连续K个存储单元中,构成 张KN的表 2把整个符号表分成m个子表,如T1T2;Tm 每个子表含有N项
◼ 一个可存放N项的符号表在内存中可采用 下列两种方式之一(假设每项需要K个 字): 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
例: PASCAL程序段: PROCEDURE INCWAP(M,N:INTEGER); LABEL START; VAR K:INTEGER; BEGIN START: K:=M+1; M:=N+4; N:=K; END