编译原理 符号表和词法分析.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理 符号表和词法分析

第四章 符号表词法分析 一、符号表及其作用(续一) 一、符号表及其作用(续二) 二、符号表的内容 二、符号表的内容(续二) 二、符号表的内容(续三) 三、存储分配符号表的组织 存储分配原则:(参见例P81) 1、标号、类型标识符和过程标识符不分配单元。 (1)标号对应机器语言是一个地址,不需要分配单元。 (2)类型标识符定义了某种类型,不需要分配单元。 (3)过程标识符没有值,也不需要分配单元。 2、常量、简单变量、数组、形参和函数等需要分配单元。 三、存储分配符号表的组织(续一) 静态分配:编译时能够确定所需存储空间的大小,并进行存储分配。 1、同一分程序的不同分量分配在不同单元。 2、内外层中的不同量分配在不同的单元。 形参的分配。 eg. Procedure sum1(var sum:integer,I:integer); begin sum:=sum+I; end; 形参的分配。 eg. Procedure sum1(var sum:integer,I:integer); begin sum:=sum+I; end; 原则: 1、如果形参是按值调用,则分配一个单元存放实参的值 2、如果形参是按名调用,则分配一个单元存放实参的地址。 四、标识符的处理 四、标识符的处理 五、符号表的结构和存取 符号表结构: 无序符号表 有序符号表 树结构符号表 栈符号表 hash表 六、词法分析 任务: 词法分析阶段: 扫描源程序的ASCII码序列,拼出每一个单词,并把每个 单词的ASCII码序列替换为所谓的机内表示TOKEN形式(属性字),这时还检查词法错误。 六、词法分析(续一) 七、取单词 1、单词的种类 单词由字符组成。 字符::=字母|数字|特定符号|无效字符 字母::=a|b|c|..z|A| B|C|...|Z 数字::=0|1|2|3|...|9 特定符号::=+|-|*|/|:=|||…. 无效字符::=回车符|换行符|制表符 symbol=(ident,constsy,notop,mul,div,add,sub….) 单词的机内表示采用长度统一的二元形式(token字) (单词种别码,单词的自身值) 七、取单词 流程图 八、读标识符 1、标识符的文法规则 标识符::=字母{字母| 数字 } 字母::=a|b|c|..z|A| B|C|...|Z 数字::=0|1|2|3|...|9 九、词法分析器的自动生成 词法分析程序的自动生成问题 Lex语言 十、一个实例 1、查填符号表(见书) 十、一个实例 * * 一、符号表及其作用 二、符号表的内容 三、存储分配符号表的组织 四、标识符的处理 五、符号表的结构和存取 六、词法分析 七、取单词 八、读标识符 九、词法分析器的自动生成 十、一个实例 一、符号表及其作用 1.编译程序逻辑图 表 格 管 理 错误处理 源程序 词法分析 语法分析 中间代码生成 中间代码优化 目标代码生成 目标程序 符 号 表 (单词属性表) 常量表 变量表(标识符表) 保留字表 特殊符号表 数组信息表 过程信息表 …… 名 字 属 性 符 号 表 静 态 表:保留字表,标准函数表等 动 态 表:标识符表,过程信息表等 符号表 查填 隐式说明语言的符号表查填 : FORTRAN语言 显式说明语言的符号表查填:pascal,c等 符号表的作用:辅助语义正确性检查、辅助目标代码的生成 单词的基本属性(Pascal语言为例) 1、保留字的属性 2、特殊符号的属性 3、常量的属性 eg. begin, end, procedure, to, for, with 属性 eg. +, *,/,,,等 属性 属性: 名字、值、类型 eg. 100,false,0.5等 二、符号表的内容(续一) 4标识 符的属性 标准类型标识符:integer,char,real 常量标识符 简单变量标识符 过程/函数标识符 数组标识符 名字、值、类型 名字、类型、地址 var i,j,k:integer; var a:array[1..10]of integer; 名字、类型、维数、上下界、下标类型、数据区首地址等 Procedure sear

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档