符号表 C标识符的作用: 声明部分:定义了各种对象及对应的属性和 使用规则。 程序体:对所定义的对象进行各种操作。 必要性 Token: sid idname 新表一符号表(种类、类型等信息): I dname Attr ibute IR
符号表 标识符的作用: 声明部分:定义了各种对象及对应的属性和 使用规则。 程序体:对所定义的对象进行各种操作。 $id idname Idname AttributeIR 必要性 Token: 新表-符号表(种类、类型等信息):
有关符号表的操作: 添加、作用域删除、查询 C处理符号表的模块: 定义符号表数据结构 定义符号表上的操作
有关符号表的操作: 添加、作用域删除、查询 处理符号表的模块: 定义符号表数据结构 定义符号表上的操作
符号表 符号表的作用:为语义检查和代码生成提供 标识符的语义信息。 标识符的处理思想: 遇到定义性标识符时,在符号表中填写 被定义标识符的符号项; 当遇到使用性标识符时,用该标识符查 符号表求得其属性
符号表 符号表的作用:为语义检查和代码生成提供 标识符的语义信息。 标识符的处理思想: ▪ 遇到定义性标识符时,在符号表中填写 被定义标识符的符号项; ▪ 当遇到使用性标识符时,用该标识符查 符号表求得其属性
标识符的特点 +标识符的作用域:标识符有效的最大程序段 嵌套作用域规则:当存在标识符的嵌套声明 时,最近定义的属性为标识符的当前属性 +局部化单位:允许有声明的程序段 Var x, y, z X:=0 Q: Var x, m, n X:- m:=x+1; y:=x+1;
标识符的特点 标识符的作用域:标识符有效的最大程序段 嵌套作用域规则:当存在标识符的嵌套声明 时,最近定义的属性为标识符的当前属性 局部化单位:允许有声明的程序段 P: Var x ,y,z Var x,m,n x:=1; m:=x+1; y:=x+1; x:=0; Q:
符号表的种类:全局符号表、局部符号表 符号表的操作特点 在声明部分,定义标识符,要加入符号表 在表达式或语句中,使用标识符,应查表 查其属性。 ■每个标识符在其作用域结束后,要删掉该 属性表项 体现嵌套作用规则和局部化
符号表的种类:全局符号表、局部符号表 符号表的操作特点: ▪ 在声明部分,定义标识符,要加入符号表 ▪ 在表达式或语句中,使用标识符,应查表 查其属性。 ▪ 每个标识符在其作用域结束后,要删掉该 属性表项 ▪ 体现嵌套作用规则和局部化