- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                第五章  语义分析Semantic Analysis 计算机科学与技术学院 刘  慧 Semantic:与语言表达的含义相关的。 编译器语义分析阶段的任务:将变量的定义与它们的各个使用联系起来,检查每一个表达式是否有正确的类型,并将抽象语法转换成更简单的、适合于生成机器代码的表示。 5.1  Symbol Tables(符号表) 符号表也称为环境(environment),其作用是将标识符映射到它们的类型和存储位置。 在处理类型、变量和函数的声明时,这些标识符便与其在符号表中的“含义”相绑定。每当发现标识符的使用(非声明性出现)时,便在符号表中查看它们的含义。 程序中的每一个局部变量都有一个作用域(scope),该变量在此作用域中是可见的。 当语义分析到达每一个作用域的结束时,所有局部于此作用域的标识符都将被抛弃。 5.1  Symbol Tables Semantic checks refer to properties of identifiers in the program -- their scope or type Need an environment to store the information about identifiers = symbol table Each entry in the symbol table contains  the name of an identifier  additional information: its kind, its type, if it is constant, … 5.1  Symbol Tables 程序中的每一个局部变量都有一个作用域(scope),该变量在此作用域中是可见的。     当语义分析到达每一个作用域的结束时,所有局部与此作用域的标识符都将被抛弃。 5.1  Symbol Tables 环境是由一些绑定(binding)构成的集合,所谓绑定指的是标识符与其含义之间的一种映射关系。 用“→”表示绑定。 5.1  Symbol Tables 函数式风格(functional style):当创建σ2和σ3时,保持σ1原来的状态不变,这样,当再次需要σ1时, σ1就已经就绪了。 命令式风格(imperative style):修改σ1直到它成为σ2 。这种破坏性的更新会“毁掉” σ1 ,即在σ2存在期间,不能查看σ1中的符号;但是,当完成了σ2中的处理时,可以撤销对σ1的更新从而使σ1返回原来的状态。 一个单一的全局环境(它在不同时间变成σ0 、σ1 、σ2 、σ3 、σ1 、σ0 ); 撤销栈:每当添加一个符号到环境时,也将该符号加入到撤销栈中。 5.1.1  Multiple Symbol Tables 在有些语言中,可以同时存在若干个活跃的环境:程序中的每一个模块、类或者记录都有自己的符号表σ 。 举例:Figure5.1 5.1.2  Efficient Imperative Symbol Tables Efficient implementation=Hash table(散列表) 当σ′= σ + { a→τ},是通过以a 作为键值将τ插入散列表来实现的。 5.1.2  Efficient Imperative Symbol Tables 带有外部散列链的散列表(hash table with external chaining)能够很容易实现对作用域的删除操作。 5.1.2  Efficient Imperative Symbol Tables 当σ已经包含a→τ1时,操作σ′=σ+ { a→τ2 }: 函数insert将a→τ1保留在散列链中,并将a→τ2插入到散列链的前部; 在a的作用域结束处执行pop(a)之后,便恢复了σ。 只有当绑定的插入和弹出都按栈的方式操作,pop才能正确工作。 5.1.2  Efficient Imperative Symbol Tables 5.1.3  Efficient Functional Symbol Tables 当计算σ′=σ+ { a→τ}时,希望在σ′活跃的情况下仍然能看到σ中的标识符。 因此,不是将一个绑定加入到已存在的表中来“改变”这个表,而是通过计算现有的这个表与一个新的绑定的“和”来创建一个新表。 散列表的方式不可行: 破坏性更新散列表; 非破坏性更新散列表,效率不高。 5.1.3  Efficient Functional Symbol Tables 二叉搜索树(binary search tree):是一棵可能为空的二叉树,一棵非空的二叉搜索树满足: 每个元素有一个唯一的关键值; 根节点左子树的关键值(如果有的话)小于根节点的关键值; 根节点右子树的关键值(如果有
                您可能关注的文档
- (课堂设计)2013-2014高中政治 1.2.1 影响价格的因素学案 新人教版必修.doc
 - (课堂设计)2013-2014高中政治 1.3.1 消费及其类型学案 新人教版必修.doc
 - (课堂设计)2013-2014高中政治 1.1.2 信用工具和外汇学案 新人教版必修.doc
 - (课堂设计)2013-2014高中政治 1.2.2 价格变动的影响学案 新人教版必修.doc
 - (课堂设计)2013-2014高中政治 1.3.2 树立正确的消费观学案 新人教版必修.doc
 - (课堂设计)2013-2014高中政治 2.4.1 发展生产满足消费学案 新人教版必修.doc
 - (课堂设计)2013-2014高中政治 2.5.1 公司的经营学案 新人教版必修.doc
 - (课堂设计)2013-2014高中政治 2.4.2 我国的基本经济制度学案 新人教版必修.doc
 - (课堂设计)2013-2014高中政治 2.5.2 新时代的劳动者学案 新人教版必修.doc
 - (课堂设计)2013-2014高中政治 2.6.2 股票、债券和保险学案 新人教版必修.doc
 
最近下载
- 消防管道(设备)强度、严密性试验记录.docx VIP
 - 耳穴比赛题库二维码公布附有答案.docx VIP
 - 现代控制理论基础.docx VIP
 - (高清版)DB4406∕T 45-2024 《中药废弃物无害化处理规范》.pdf VIP
 - 《住宅工程质量常见问题防治技术标准》.pdf VIP
 - 2025年事业单位招聘考试公共基础知识题库及答案(共500题).pdf VIP
 - 《汉尚华莲汉服公司SWOT分析及营销策略研究》20000字.docx VIP
 - 家庭中医保健按摩.pptx
 - DNVGL-ST-0126-2018 国外国际标准.pdf
 - QJ 10004-2008 半导体器件总剂量辐照试验方法.docx VIP
 
原创力文档
                        

文档评论(0)