第八章静态语义分析和中间代码生成.ppt

第八章 静态语义分析和中间代码生成;目标程序;静态语义分析和中间代码生成;静态语义分析和中间代码生成;符号表;符号表;符号表的设计 如何有效记录各类符号的属性,以便在编译的各个阶段对符号表进行快速、有效的查找、插入、修改、删除等操作,是符号表设计的基本目标。 符号表的组成 表项分两部分,其中前者是标识符的名字,而后者是属性部分(不同种类的标识符属性不同)。 符号表的组织方式和查找方法 符号表的组织方式可以是数组也可以是链表等等 查找算法可以是顺序查表法、平分查表法、散列查表法等 合理的组织和查找,将使得符号表的操作更高效;;符号表; 与语义分析相关的工作; 代码生成前程序合法性检查的最后阶段 控制流检查 控制流语句必须使控制转移到合法的地方(如 跳转语句要有合法的跳转目标,break 语句必须有合法的语句包围它) 唯一性检查 很多场合要求对 象只能被定义一次(如枚举类型的元素不能重复出现) ; 代码生成前程序合法性检查的最后阶段 名字的上下文相关性检查 例如:变量在使用前必须声明;在外部不能访问私有变量;名字的定义和使用之间要满足一定的上下文相关性 类型检查 检查每个操作是否遵守语言类型系统的定义 ; 类型检查程序(type checker)负责类型检查 验证程序的结构是否匹配上下文所期望的类型 为代码生成阶段搜集及建立必要的类型信息 实现某个类型系统(

文档评论(0)

1亿VIP精品文档

相关文档