软件开发过程与项目管理综述 天津大学ppt课件.ppt

软件开发过程与项目管理综述 天津大学ppt课件.ppt

ID:58999087

大小:651.00 KB

页数:33页

时间:2020-09-27

软件开发过程与项目管理综述  天津大学ppt课件.ppt_第1页
软件开发过程与项目管理综述  天津大学ppt课件.ppt_第2页
软件开发过程与项目管理综述  天津大学ppt课件.ppt_第3页
软件开发过程与项目管理综述  天津大学ppt课件.ppt_第4页
软件开发过程与项目管理综述  天津大学ppt课件.ppt_第5页
资源描述:

《软件开发过程与项目管理综述 天津大学ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、符号表授课:胡静8/21/20211编译器的应用模型出错处理语法分析程序语义分析程序目标代码生成程序词法分析程序中间代码生成程序代码优化程序表格管理编译的前端(FrontEnd)编译的后端(BackEnd)符号表管理技术概述符号表的组织和作用符号表的整理和查找名字的作用域范围非分程序结构语言的符号表组织分程序结构语言的符号表组织符号表的内容概述(1)什么是符号表?编译过程中,编译程序需要不断汇集和反复查证出现在源程序中各种名字的属性和特征等有关信息。这些信息通常记录在一张或几张符号表中。符号表的每一项包含两部分:名字(标识符):程序名、过程名、函数名、用

2、户定义类型名、变量名、常量名、枚举值名、标号名等。特性信息:上述名字的种类、类型、维数、参数个数、数值及目标地址(存储单元地址)等。符号表的创建和查找为什么要几张符号表?说明了什么?概述(2)建表和查表的必要性(符号表在编译过程中的作用)源程序中变量要先声明,然后才能引用。用户通过声明语句,声明各种名字,并给出它们的类型、维数等信息,编译程序在处理这些声明语句时,应该将声明中的名字及其信息登录到符号表中,同时编译程序还要给变量分配存储单元,而存储单元地址也必须登录在符号表中。当编译程序编译到引用所声明的变量时(赋值或引用其值),要进行语法语义正确性检查(

3、类型是否符合要求)和生成相应的目标程序,这就需要查符号表以取得相关信息。符号表何时建立?符号表的表项合适填写?在编译何阶段对符号表内容进行查找?概述(3)有关符号表的操作:填表和查表填表:当分析到程序中的说明或定义语句时,应将说明或定义的名字,以及与之有关的信息填入符号表中。例:ProcedureP()查表:(1)填表前查表,检查在程序的同一作用域内名字是否重复定义;(2)检查名字的种类是否与说明一致;(3)对于强类型语言,要检查表达式中各变量的类型是否一致;(4)生成目标指令时,要取得所需要的地址。.........符号表的组织与作用符号表的基本结构“

4、名字”域:存放名字,一般为标识符的符号串,也可为指向标识符字符串的指针。“信息”域:可包括多个子域,分别表示标识符的有关信息,名字栏(Name)信息栏(Information)第一项(入口1)第二项(入口2)第N项(入口N)……信息域表示标识符的相关信息名字(标识符)的种类:简单变量、函数、过程、数组、标号、参数等类型:如整型、浮点型、字符型、指针等性质:变量形参、值形参等值:常量名所代表的数值地址:变量所分配单元的首址或地址位移大小:所占的字节数作用域的嵌套层次:对于数组:维数、上下界值、计算下标变量地址所用的信息(数组信息向量)以及数组元素类型等。对

5、于记录(结构、联合):域的个数,每个域的域名、地址位移、类型等。对于过程或函数:形参个数、所在层次、函数返回值类型、局部变量所占空间大小等。对于指针:所指对象类型等。对符号表可能的操作在整个编译期间,对符号表的操作大致可以归纳为五类:对给定的名字,查询此名是否已在表中;往表中填入一个新的名字对给定名字,访问它的某些信息;对给定名字,往表中填写或更新它的某些信息删除一个或一组无用的项。符号表的组织方式1.统一符号表:不论什么名字都填入统一格式的符号表中符号表表项应按信息量最大的名字设计,填表、查表比较方便,结构简单,但是浪费大量空间。2.对于不同种类的名字

6、分别建立各种符号表节省空间,但是填表和查表不方便。3.折中办法:大部分共同信息组成统一格式的符号表,特殊信息另设附表,两者用指针连接。1.表里面会有大量的空白表项2.每个字段都要取最大长度,使得空间被浪费另一种方法是将符号表的每个表项重新拆成新的表。符号表的整理和查找符号表的初始化:在编译程序刚开始时,符号表或者是空的,或者预先存放了一些保留字和标准函数名的有关项。在编译的其他阶段,主要是对符号表进行查填的操作:线性查找——方法最简单,但效率低二叉树——查找效率高,但实现上略显困难Hash表——效率最高,可实现比较复杂而且要消耗一些额外的存储空间。线性表

7、构造符号表最简单和最容易的办法就是按符号出现的顺序填写各个项。线性表中每一项的先后顺序是按先来者先填的原则安排的,编译程序不做任何排序的工作。显式说明的程序设计语言,根据名字在说明部分出现的顺序填入表中(表尾)隐式说明的程序设计语言,根据各名字首次引用的先后顺序填入表中。当需要查找某个名字时,就从该表的第一项开始顺序查找。查表操作的平均长度为(n+1)/2线性表的效率可以通过使用“最新最近”访问链来进行提高:1.每次查表时都按照这条链所指的顺序,一旦查到之后就改造这条链,使得连头指向刚才找到的那个项。2.当填入新项时,总让链头指向这个新项。——————自

8、适应线性表对折查找与二叉树在造表时把表格中的项按照名字的“大小”顺序整理排列。这

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。