表格模板-07第7章符号表管理技术 精品.ppt
《表格模板-07第7章符号表管理技术 精品.ppt》由会员分享,可在线阅读,更多相关《表格模板-07第7章符号表管理技术 精品.ppt(40页珍藏版)》请在第一文库网上搜索。
1、第7章 符号表管理技术2022-9-211内容提要符号表的作用符号表的建立与访问符号表的内容与组织符号表上的操作非块程序结构语言的符号表结构块程序结构语言的符号表结构2022-9-212符号表是编译程序中的一个重要数据结构,用来保存各类标识符的属性信息;编译的各个阶段都可能用到与符号相关的各种信息,这些信息用一些表格进行记录、存储和管理,如常量表、数组信息表等等,这些表统称为符号表;编译的分析阶段收集和更新符号表信息,综合阶段从符号表获取信息。7.1 符号表的作用2022-9-213符号表的作用符号表的作用 (1) (1) 登记符号属性值登记符号属性值在源程序的各个分析阶段,编译程序根据标识符
2、的声在源程序的各个分析阶段,编译程序根据标识符的声明信息收集其有关的属性值并存放在符号表中。明信息收集其有关的属性值并存放在符号表中。每种语言规则定义了不同的符号属性;即使是同一个每种语言规则定义了不同的符号属性;即使是同一个语言,不同的编译程序也可能会定义并且收集不同的语言,不同的编译程序也可能会定义并且收集不同的属性信息。属性信息。现代编程语言中一般包括常数声明、变量声明、类型现代编程语言中一般包括常数声明、变量声明、类型声明和过程声明和过程/ /函数声明等四类声明。对于每类声明,函数声明等四类声明。对于每类声明,编译程序要收集、存储和应用的属性完全不同。编译程序要收集、存储和应用的属性完
3、全不同。 2022-9-214例:例:C C语言的变量声明语言的变量声明 short int a; short int a; float b = 0.0; float b = 0.0;编译程序对每个变量要记录其类型,以便执行类型检查编译程序对每个变量要记录其类型,以便执行类型检查和存储分配;和存储分配;比如短整型变量比如短整型变量a a占占2 2个字节,要记录它在存储器中的位个字节,要记录它在存储器中的位置(相对位移或绝对地址);若像置(相对位移或绝对地址);若像b b有初始值,则还需要有初始值,则还需要记录该初始值。记录该初始值。 2022-9-215(2) (2) 查找符号属性查找符号属性
4、 符号表存放源程序中的各种类型的信息,比如数符号表存放源程序中的各种类型的信息,比如数值、变量类型、参数传递的地址等,在分析和翻译值、变量类型、参数传递的地址等,在分析和翻译源程序的过程中会被不断地查询。源程序的过程中会被不断地查询。例:例:对声明语句:对声明语句: short int a = 9; short int a = 9; short int b = 10; short int b = 10;如果源程序有代码如果源程序有代码a + ba + b时,需要查找、计算表达时,需要查找、计算表达式中运算数的式中运算数的类型和值类型和值,以便计算出表达式。,以便计算出表达式。2022-9-21
5、6(3)(3)检查符号的合法性检查符号的合法性 A A、检查类型是否一致、检查类型是否一致例:例:对声明语句:对声明语句: short int a ; short int a ; float b = 0.0; float b = 0.0;有代码有代码 a = b + ba = b + b,C C语言的编译将检查变量语言的编译将检查变量a a和和b b的的类型,把表达式类型,把表达式b + bb + b的结果转换成短整型,仅取的结果转换成短整型,仅取整数部分进行赋值。整数部分进行赋值。强类型语言强类型语言( (如如PascalPascal和和Ada)Ada)的表达式运算数的类的表达式运算数的类型
6、必须一致型必须一致2022-9-217B、检查变量重复定义例:C语言程序中出现int i 35; /定义整型数组ifloat i42; /定义实型数组i,重定义冲突int i 35; /定义整型数组i,重定义冲突 编译程序首先在符号表中记录了标识符i的属性是35个整型元素的数组,而后在分析第二、第三这两个定义说明时,编译程序可通过符号表检查出标识符i的重定义冲突错误。 不论在后二句中i的其它属性与前一句是否完全相同,只要标识符名重定义,就将产生标识符重定义的语义错误。2022-9-218(4) (4) 作为目标代码生成阶段地址分配的依据作为目标代码生成阶段地址分配的依据 由标识符定义的存储类型
7、或它在程序中的位置来确定。由标识符定义的存储类型或它在程序中的位置来确定。首先确定变量存储的区域。例如,在首先确定变量存储的区域。例如,在JavaJava语言中,整数类语言中,整数类型有型有bytebyte(1 1个字节)、个字节)、shortshort(2 2个字节)、个字节)、intint(4 4个字个字节)以及节)以及longlong(8 8个字节),而个字节),而floatfloat类型占类型占4 4个字节,个字节,doubledouble类型占类型占8 8个字节。个字节。其次根据标识符的出现顺序,决定标识符在某个存储区域其次根据标识符的出现顺序,决定标识符在某个存储区域中的具体位置,
8、而有关区域的标志及其相对位置都作为该中的具体位置,而有关区域的标志及其相对位置都作为该标识符的语义信息存放在其符号表中。标识符的语义信息存放在其符号表中。2022-9-219创建时间:词法分析时和语义分析时创建时间:词法分析时和语义分析时1 1、词法分析时创建:、词法分析时创建:当词法分析程序识别出一个标识符时,以该标识符名查找符号当词法分析程序识别出一个标识符时,以该标识符名查找符号表;若表中无此标识符的登记项,将此标识符填入符号表;表;若表中无此标识符的登记项,将此标识符填入符号表;与标识符相关的其它信息,可视工作方便分别语义分析及中间与标识符相关的其它信息,可视工作方便分别语义分析及中间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 表格模板-07第7章符号表管理技术 精品 表格 模板 07 符号 管理 技术