第9章 符号表例析.ppt

* 4. 存储分配属性: (1) 对于a:a是结构tag的成员,是t结构量的成员变量。其存储分配属性是成员变量a在结构变量t中的相对位移量。 (2) 对于t:由于结构变量t是函数func中的Auto变量,因而t的存储分配属性又是函数func动态工作区中的相对位移量。 5. 数组内情向量属性: 该变量a是一个二维整型数组,具有n×m个元素。 * 符号表的查找算法,与该符号表的组织方法密切相关。与符号表的3种组织方法对应,可用顺序查找、折半查找和杂凑查找算法实现符号表的查找。 广东工业大学计算机学院 LOGO * 4. 其它域的组织 符号表属性域的组织,根据属性性质大致分成两类: 一类是符号的属性值的类型相同,并且是等长的,则该属性域的类型结构就可用其长度及类型来定义。 例如boolean,int,float等基本数据类型 另一类符号的属性值的类型相同,但不等长,则该属性域的定义不能用简单的数据类型来定义。 例如:数组内情向量。 广东工业大学计算机学院 LOGO * (1) 等长属性值域的组织 下面我们讨论一些典型的等长属性值域的组织。 (1) 表示某个符号的布尔性质的属性域,可用1个bit位来表示;也可用1个布尔量来表示。如 defined 1 /* defined true */ 表示已定义 defined 0 /* defined false */ 表示尚未定义 符号类型 3个bit位表示 整数值表示 char 000 0 short 001 1 int 010 2 long 011 3 unsigned 100 4 float 101 5 double 111 6 (2) 表示符号的数据类型可以用若干个bit位来表示;也可用1个整型量来表示。 以C语言为例: 广东工业大学计算机学院 LOGO * 等长属性值域的组织(续) 对于表示符号之间关系的属性,可用指针或指针链来构造。 如函数符号与它的形参符号之间的关系属性:“函数-形参”指针域。例: func1 (para1, para2, para3); func2 () 广东工业大学计算机学院 LOGO * 指针型参数域的应用 设有一个C语言的结构体变量结构: struct tag1 { … memb1;  … memb2;           struct tag2{ … memb3;    … memb4; … memb5; } memb6;      … memb7; } stv; 标识符 结构定义 结构-成员域 … tag1 m1 m2 tag2 m3 m4 m5 m6 m7 stv “空” “空” 广东工业大学计算机学院 LOGO * 2 (2) 不等长属性值域的组织 符号的某些属性值是不等长的,例如数组内情向量。 设有下列两个数组 array1(subscrip1, subscrip2) array2(subscrip3, subscrip4, subscrip5, subscrip6) “0”值用来表示下标到此为止 广东工业大学计算机学院 LOGO * (3) 下推链域的组织 在某些程序语言的结构中,分程序的分层结构允许同名标识符具有的生存期发生重叠,即存在同名标识符。 为实现这种同名标识符的语义功能,符号表中需要设立下推链域的组织。 下推链域要求:在进入内层结构并发生重名标识符定义时, (1) 把当前符号中外层的该符号下推到下推链中, (2) 在符号表被下推的表项处,建立内层的同名标识符表项。 广东工业大学计算机学院 LOGO * 下推链举例 例: int i ; …….(1) ……. func( ) …… (2) { …… float i; ……. (3) { ……. (4) int i[5] ;……(5) { ……. (6) int i;……(7) } …… i……(8) } …….i……(9) } 广东工业大学计算机学院 LOGO * 本课内容 9.1 符号表的作用和地位 9.2 符号的主要属性及作用 9.3 符号表

文档评论(0)

1亿VIP精品文档

相关文档