网站大量收购独家精品文档,联系QQ:2885784924

第四讲静态语义分析.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 静态语义分析 第四章 静态语义分析 4.1 语法制导翻译简介 4.1.1 语法与语义 4.1.1 语法与语义(续1) 4.1.1 语法与语义(续2) 4.1.2 属性与语义规则 4.1.2 属性与语义规则(续1) 4.1.2 属性与语义规则(续2) 4.1.2 属性与语义规则(续3) 4.1.3 语义规则的两种形式 4.1.3 语义规则的两种形式(续1) 4.1.3 语义规则的两种形式(续2) 4.1.3 语义规则的两种形式(续3) 4.1.3 语义规则的两种形式(续4) 4.1.4 LR分析翻译方案的设计 4.1.4 LR分析翻译方案的设计(续1) 4.1.4 LR分析翻译方案的设计(续2) 4.1.4 LR分析翻译方案的设计(续3) 4.1.5 递归下降分析翻译方案的设计 * 本章注重讨论 静态语义的分析方法,过程程序设计语言中典型结构的翻译方法。 第2章 第3章 语法制导翻译是处理语义的基本方法,它以语法分析为基础,在语法分析得到语言结构的结果时,处理此结构对应的语义,如计算表达式的值、生成中间代码等。 主要内容包括: 1 语法制导翻译的基本概念 2 中间代码简介 3 符号表简介 4 典型声明语句与可执行语句的翻译 语法是指语言的结构、即语言的“样子”; 语义是指附着于语言结构上的实际含意 ,即语言的“意义”。 1 语法与语义的关系 语义不能离开语法独立存在; 语法与语义之间没有明确的界线; 语义远比语法复杂; 同一语言结构可包含多种含意,不同语言结构可表示相同含意。 例1:程序设计语言中的分情况结构: 1.Linux Bash Script case condition in case1) stat1 ;; case2) stat2 ;; *) … ;; esac 2.C/C++ switch (condition) { case condition1: stat1; case condition2: stat2; default: … } break; break; 例2: “猫吃老鼠” ,“老鼠吃猫” 检查结构正确的句子所表示的意思是否合法; 执行规定的语义动作,如: 表达式求值 符号表的查询/填写 中间代码生成等 3 语义分析的方法 语法制导翻译 (Syntax Directed Translation) 下页 2 语义分析的两个作用 1 语法制导翻译的基本思想 简单地讲:以语法分析为基础,伴随语法分析的各个步骤,执行相应的语义动作。 具体方法: 1. 将文法符号所代表的语言结构的意思,用附着于该文法符号的属性表示; 2. 用语义规则规定产生式所代表的语言结构之间的关系(即属性之间的关系),即用语义规则实现语义(属性)计算。 语义规则的执行: 在语法分析的适当时刻(如推导或归约)执行附着在对应产生式上的语义规则,以实现 对语言结构语义的处理,如计算、查填符号表、生成中间代码、发布出错信息等。 2 属性的抽象表示:.attr 例如:E.val(值) E.type(类型) E.code(代码序列) E.place(存储空间) 3 对文法的约定 本章关注的是语法分析的基础上的语义处理,忽略语法分析。 为了简单,本章的文法一般为二义文法。默认解决二义的方法是规定常规意义下的优先级和结合性。 定义4.1 对于产生式A→α,其中α是由文法符号X1X2...Xn组成的序列,它的语义规则可以表示为(4.1)所示关于属性的函数f: b := f(c1, c2, ..., ck) (4.1) 语义规则中的属性存在下述性质与关系: (1) 称(4.1)中属性b依赖于属性c1, c2, ..., ck。 (2) 若b是A的属性,c1, c2, ..., ck是α中文法符号的属性,或者A的其它属性,则称b是A的综合属性。 (3) 若b是α中某文法符号Xi的属性,c1, c2, ..., ck是A的属性,或者是α中其它文法符号的属性,则称b是Xi的继承属性。 (4) 若语义规则的形式如下述(4.2),则可将其想像为产生式左部文法符号A的一个虚拟属性。属性之间的依赖关系,在虚拟属性上依然存在。 f(c1, c2, ..., ck) (4.2)

文档评论(0)

wx171113 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档