- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理语义分析与中间代码生成.ppt
语义分析与中间代码生成 复习:编译程序的逻辑过程 按照编译程序的逻辑工作过程,语法分析后,接下来就要进行语义分析了,语义分析后,再生成中间代码。实际应用中,往往在语法分析的同时,进行语义分析并生成中间代码,这就是语法制导翻译法。 语法制导翻译过程中,需要借助于属性文法进行语义描述和语义处理。 本章内容: 属性文法有关概念; 语法制导翻译基本思想; 中间代码形式; 简单算术表达式、布尔表达式、赋值语句、条件语句、循环语句的翻译。 属性文法 表达式文法 E—T+T | T or T T—n | b E?T1 + T2 { T1.type = int T2.type= T1.type E.type =int} E ?T1 or T2 { T1.type = bool T2.type= T1.type E.type =bool} T ? n { T.type = int} T ? b { T.type = bool} 属性文法 对于某个压缩了的文法,当把每个文法符号和一组属性相关联,并把产生式附加以语义规则的时候,就得到属性文法。 语法制导的翻译过程:由于属性文法的规则和产生式是一一对应的关系,所以,由属性文法确定的语义分析可以在语法分析的过程中进行。这个过程称为语法制导的翻译。 属性文法(attribute grammar) A=(G,V,F),其中 G:一个CFG, 属性文法的基础。 V:有穷的属性集 每个属性与一个文法符号相关联 这些属性代表与文法符号相关的语义信息 如类型、地址、值、代码、符号表内容等等 属性与变量一样,可以进行计算和传递 属性加工的过程即是语义处理的过程 属性加工与语法分析同时进行 属性的表示: 标识符(或数),写在相应文法的下边 点记法:E.Val,E.Place,E.Type… F:关于属性的属性断言或一组属性的计算规则(称为语义规则) . 断言或语义规则与一个产生式相联,只引用该产生式左端或右端的终结符或非终结符相关的属性. 语义规则描述的工作 属性计算 静态语义检查 符号表操作 代码生成 继承属性和综合属性 两类属性: 综合属性(Synthesized Attribute):归约型属性 用于“自下而上”传递信息 继承属性(Inherited Attribute):推导型属性 用于“自上而下”传递信息。 属性的计算:A?X1 X2 …Xn A的综合属性,计算 S(A) =f(A(X1),…A(Xn)) Xj的继承属性,计算 I(Xj)=f(A(A),... A(Xn)) 文法符号属性的说明: 非终结符既可有综合属性也可有继承属性,但文法开始符号没有继承属性. 终结符只有综合属性. 通常规定:文法符号的综合属性与继承属性无交。 综合属性的例子 非终结符E、T及F都有一个综合属性val,符号digit有一个综合属性,它的值由词法分析器提供。 与产生式L→E对应的语义规则仅仅是打印由E产生的算术表达式的值的一个过程,可认为这条规则定义了L的一个虚属性。 某些非终结符加上标是为了区分一个产生式中同一非终结符多次出现 综合属性的自下而上定值 继承属性的例子 继承属性L.in 继承属性的自上而下定值 语法制导翻译的基本思想 为每条产生式配上一个翻译子程序(称为语义动作或语义子程序); 语义动作的工作 指明符号串的意义; 按照这种意义规定了对应的动作: 查添各种表格 改变变量之值 诊察与报告源程序错误 产生中间代码… 在语法分析的同时,当一个产生式获得匹配(对于自上而下分析)或用于归约(对于自下而上分析)时,就执行相应产生式的语义子程序。 中间代码 中间代码(Intermediate code ): 源程序的一种内部表示,不依赖目标机的结构,易于机械生成目标代码的中间表示。 几种中间语言 后缀式(逆波兰表示法) 三地址代码 四元式 三元式 间接三元式 树 后缀式 表达式的一种表示形式 运算符直接跟在运算量后面 又称为逆波兰表示法 定义:设E是表达式,那么 如果E是变量或者常量,E的逆波兰表示为E E1 OP E2 == E1’ E2’ OP,其中E1’,E2’ 为 E1, E2的逆波兰表示。 (E) == E’,其中E’为E 的逆波兰表示。 后缀式的生成 设置一个操作符栈,当扫描到操作数时,输出该操作数。当遇到操作符时,与栈顶操作符比较优先
您可能关注的文档
最近下载
- 汉语口语速成入门篇上 第九课 你家有几口人?教案资料.ppt VIP
- DZ∕T 0291-2015 饰面石材矿产地质勘查规范.pdf
- 太阳能路灯工程施工组织方案的编制与应用指南.docx VIP
- 教育行业在线教学平台建设与运营管理方案.doc VIP
- 2025年国家开放大学电大《公共部门人力资源管理》机考3套真题题库及.docx VIP
- (2024版)小学一年级道德与法治下册第一课《有个新目标》教学设计部编版.pdf VIP
- 中华护理学会专科护士通科题库 .pdf VIP
- 2025天津市华淼给排水研究设计院有限公司对外招聘7人笔试历年参考题库附带答案详解.docx
- 老年社会工作服务项目策划书.docx VIP
- 圆钢方钢管受压承载力计算表.xls VIP
文档评论(0)