书签 分享 收藏 举报 版权申诉 / 45
上传文档赚钱

类型编译原理课件CHAPTER5(SemanticA.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:2784125
  • 上传时间:2022-05-26
  • 格式:PPT
  • 页数:45
  • 大小:415KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《编译原理课件CHAPTER5(SemanticA.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    编译 原理 课件 CHAPTER5 SemanticA
    资源描述:

    1、5/26/202215.1 5.1 语义分析概述语义分析概述n词法分析、语法分析词法分析、语法分析 程序在书写上程序在书写上是正确的、在语法上是正确的,不能保证是正确的、在语法上是正确的,不能保证含义(语义)上的正确性含义(语义)上的正确性5/26/202225.1 5.1 语义分析概述语义分析概述n语义分析阶段分析源程序的含义,并作相语义分析阶段分析源程序的含义,并作相应的处理,语义分析的基本功能:应的处理,语义分析的基本功能:n确定类型确定类型:确定标识符所关联数据对象的类型,即处理源程序的说明部分n类型检查类型检查:对运算及进行运算的运算分量进行类型检查,检查运算的合法性与运算分量类型的

    2、一致性(相容性),必要时作相应的类型转换5/26/202235.1 5.1 语义分析概述语义分析概述n识别含义识别含义:确定程序中各构成成分组合到一起的含义,对可执行语句生成中间代码或目标代码* 语义分析往往是和中间代码生成紧密联系的n其他一些静态语义检查:n控制流检查控制流检查:如对于PASCAL语言,不允许从循环外跳转到循环内,C语言的Break引起控制离开最小包围的while、for等语句,检查是否这样的语句存在n唯一性检查唯一性检查:如标识符只能定义一次,枚举类型的元素不能重复等5/26/202245.1 5.1 语义分析概述语义分析概述n语义分析的输入是语法分析的输出(分析语义分析的

    3、输入是语法分析的输出(分析树),输出是中间代码,但同时它还完成树),输出是中间代码,但同时它还完成了很多语义处理工作(见上)了很多语义处理工作(见上)n语义分析的主流技术语义分析的主流技术 语法制导翻译语法制导翻译技术技术5/26/202255.2 5.2 语法制导翻译语法制导翻译n文法符号的属性:文法符号的属性:n文法符号(Grammar Symbols)代表语言结构(Language Construct),如标识符、表达式、语句、程序n为每个文法符号文法符号引入一个属性(属性(attribute)集合集合,反映相应语言结构的语义信息语义信息,如标识符的类型、常量的值、变量的存储地址等5/2

    4、6/20226n属性的类型(从分析过程中属性值的计算方法来分类):5.2 5.2 语法制导翻译语法制导翻译1、综合属性综合属性(Synthesized Attributes):属性值是分析树中该结点的子结点的属性值的函数 2、继承属性继承属性(Inherited Attributes):属性值是分析树中该结点的父结点和和/或或兄弟结点的属性值的函数5/26/202275.2 5.2 语法制导翻译语法制导翻译n对于产生式 AX1 X2 XnA AX X1 1X X2 2X Xn n计算 A 的综合属性, S ( A ) : = f ( I ( X1 ) , , I ( Xn ) )计算 Xj 的

    5、继承属性, T ( Xj ) : = f ( I ( A ) , ., I ( Xn ) )n综合属性用于“自下而上”传递信息,继承属性用于“自上而下”传递信息5/26/202285.2 5.2 语法制导翻译语法制导翻译n非终结符(开始符号除外)既可有综合属性也可有继承属性n文法开始符号没有继承属性n终结符号只有综合属性,一般由词法分析器提供5/26/202295.2 5.2 语法制导翻译语法制导翻译n语法制导定义:语法制导定义:n为每一条产生式(A )引入一套语义规则n规则形式:b := f (c1,c2,ck)nb 是 A 的综合属性,则c1,c2,ck是产生式文法符号的属性nb 是产生式

    6、右部某文法符号的继承属性,则c1,c2,ck是产生式文法符号的属性5/26/2022105.2 5.2 语法制导翻译语法制导翻译n虚(综合)属性 (Dummy synthesized attribute) :n 针对语义动作(过程或语义子程序)n只是为了形式上的统一n语义规则可以计算属性值,也可以(语义动作)在符号表中登录信息、输出错误信息、进行类型检查、产生中间代码等5/26/2022115.2 5.2 语法制导翻译语法制导翻译n例1 P281 Fig.5.2 (只有综合属性)n虚属性n终结符号的属性 n某些非终结符加下标是为了区分一个产生式中同一非终结符的多次出现n例2 P283 Fig.

    7、5.4 (带有继承属性)5/26/2022125.2 5.2 语法制导翻译语法制导翻译n属性文法属性文法:语法制导定义对上下文无关文法进行了扩充,扩充后的文法称为属性文法(attribute grammar)。5/26/2022135.2 5.2 语法制导翻译语法制导翻译n语法制导翻译语法制导翻译(Syntax-Directed Translation):n根据语法分析中产生式对应的语义规则语义规则进行翻译的方法称为语法制导翻译语法制导翻译。n语法制导:语法制导:基于语法分析中用到的文法产生式n翻译:翻译:完成语义分析的各项功能,不仅指生成中间代码5/26/2022145.2 5.2 语法制导

    8、翻译语法制导翻译n属性之间的依赖关系属性之间的依赖关系n语义规则 b := f (c1,c2,ck)n只有在已知 c1,ck 值的基础上,才能计算属性值 bn称属性 b 依赖于属性 c1,ck5/26/2022155.2 5.2 语法制导翻译语法制导翻译n依赖图(依赖图(Dependency Graphs):n有向边,a b,表示属性 b 依赖于属性 an用来表示属性之间依赖关系的有向图(Directed Graph)称为依赖图依赖图5/26/2022165.2 5.2 语法制导翻译语法制导翻译n依赖图的构造算法:P284n考虑的是分析树中的结点n一个属性建立一个结点n为每个语义动作引入一个虚

    9、属性n例 Fig.5.65/26/2022175.2 5.2 语法制导翻译语法制导翻译n依赖图的例子:LE.val=19E.val=15T.val=4T.val=15F.val=4T.val=3F.val=3F.val=5digit.lexval=4digit.lexval=5digit.lexval=3+*Fig.5.3的依赖图n5/26/2022185.2 5.2 语法制导翻译语法制导翻译n依赖图的例子:nFig.5.7(Fig.5.5的依赖图)5/26/2022195.2 5.2 语法制导翻译语法制导翻译n属性计算顺序属性计算顺序n有向非循环图(directed acyclic grap

    10、h)的拓扑排序(topological sort):n图中所有结点的一个排列n若 mimj 是一有向边,则在结点序列中 mi 在 mj 的前面5/26/2022205.2 5.2 语法制导翻译语法制导翻译n例子:1234765拓扑排序:拓扑排序:7 6 5 4 3 2 1 7 5 6 4 3 2 1 4 7 6 3 5 2 1* 依赖图的任一拓扑排序是一个合理的属性计算顺序 5/26/2022215.2 5.2 语法制导翻译语法制导翻译n属性计算实例:nP286 Example 5.65/26/2022225.2 5.2 语法制导翻译语法制导翻译n属性计算的三种方法:属性计算的三种方法:n1、

    11、分析树法:(1)按基础文法构造句子(程序)的分析树(语法分析)(2)按分析树构造依赖图(3)对依赖图进行拓扑排序,得到语义规则的执行顺序(4)按上述顺序执行语义规则,计算属性值,得到句子的翻译结果* 如果依赖图存在回路,这种方法会失败5/26/2022235.2 5.2 语法制导翻译语法制导翻译n2、基于语义规则的方法(Rule-based methods):n语法分析和属性计算分开,先构造分析树,然后按预先定义的策略遍历分析树来计算属性n语义规则的定义和计算顺序(翻译模式翻译模式)在编译器构造之前确定5/26/2022245.2 5.2 语法制导翻译语法制导翻译n分析树遍历策略的确定(构造编

    12、译器时)要考虑语义规则的定义及计算顺序,因此是基于规则的方法n优点:不构造依赖图,不对依赖图进行拓扑排序,提高了时空效率5/26/2022255.2 5.2 语法制导翻译语法制导翻译n3、忽略语义规则的方法(Oblivious methods):n在进行语法分析的同时进行翻译,即边分析边计算属性,计算次序由分析方法确定而与语义规则无关n缺点:这样确定计算次序将限制能实现的语法制导定义的种类n优点:不构造依赖图,不对依赖图进行拓扑排序,提高了时空效率5/26/2022265.2 5.2 语法制导翻译语法制导翻译nS -属性定义属性定义(S-attributed definitions):):n只

    13、含有综合属性的语法制导定义n例:P281 Fig.5.25/26/2022275.2 5.2 语法制导翻译语法制导翻译n只有综合属性时(以 P282 Fig.5.3 的依赖图为例)依赖图中有向边的走向和自底向上分析时建立分析树的顺序是一致的n因此,可以考虑在进行语法分析(自底向上)的同时进行翻译(执行语义规则)5/26/2022285.2 5.2 语法制导翻译语法制导翻译n具体实现具体实现:扩充 LR分析器,为栈中的每一个文法符号增加一个属性域,存放分析过程中该文法符号的综合属性值,当用产生式进行归约时,产生式左边文法符号入栈,其属性值由栈中正在归约的产生式右边符号的属性值计算5/26/202

    14、2295.2 5.2 语法制导翻译语法制导翻译n例子例子1:nP294 XX.x YY.y ZZ.z AA.atoptoptoptop5/26/2022305.2 5.2 语法制导翻译语法制导翻译n例子例子2:P295-296 Fig.5.16 Fig.5.17nntop = top r + 1 r是产生式右部符号个数PRODUCTIONPRODUCTION SEMANTIC RULE SEMANTIC RULEL L E n E nprintprint(val(valtoptop)E E E E1 1 + T + Tvalvalntopntop = val = valtoptop-2+val

    15、-2+valtoptop E E T TT T T T1 1 * * F Fvalvalntopntop = val = valtoptop-2-2* *valvaltoptop T T F FF F (E) (E)valvalntopntop = val = valtoptop-1-1F F digit digit5/26/2022315.2 5.2 语法制导翻译语法制导翻译n* Fig.5.16 是 Fig.5.2 的一种具体实现方法5/26/2022325.2 5.2 语法制导翻译语法制导翻译nL -属性定义属性定义(L-attributed definitions):):n是一种语法制

    16、导定义n对于产生式 AX1X2Xn 右部 Xj 的继承属性,它依赖于:1、 X1,X2,Xj-1 ( Xj左边的文法符号)的属性2、A 的继承属性n* L-属性定义包含 S-属性定义5/26/2022335.2 5.2 语法制导翻译语法制导翻译n例子:nP298 Fig.5.19(非L-属性定义)5/26/2022345.2 5.2 语法制导翻译语法制导翻译n翻译模式(翻译模式(translation scheme):):n将语义规则放到 中,并插入到产生式右部的适当位置,以反映语义规则的计算顺序,这种书写形式称之为翻译模式翻译模式n翻译模式与语法制导定义的区别:翻译模式中指明了语义规则的执行

    17、顺序5/26/2022355.2 5.2 语法制导翻译语法制导翻译n例子:P298 例5.12n(5.1)是一个翻译模式n用此翻译模式去分析一个句子(9-5+2)n把语义动作作为终结符号5/26/202236ETR9print(“9”)print(“9”)-Tprint(“-”)print(“-”)print(“5”)print(“5”)print(“+”)print(“+”)print(“2”)print(“2”)52RT1 12 23 34 45 5n对分析树(Fig.5.20)进行深度优先遍历,执行语义动作,完成翻译工作(95-2+)n(5.1)是一个适合以深度优先顺序计算属性的翻译模式

    18、R+5/26/2022375.2 5.2 语法制导翻译语法制导翻译n为为 L-属性定义构造翻译模式:属性定义构造翻译模式:n适合以深度优先顺序计算属性的翻译模式需满足的条件:1、产生式右部文法符号的继承属性必须在这个符号以前的动作中计算出来;2、一个动作不能引用该动作右边符号的综合属性;3、产生式左部非终结符号的综合属性只有在其引用的所有属性都计算出来以后才能计算。计算该属性的动作通常放在产生式右部的末尾5/26/2022385.2 5.2 语法制导翻译语法制导翻译n从 L-属性定义出发,构造一个满足要求的翻译模式 * L-属性定义本身考虑到了满足这些条件n(第一条件)将计算产生式右边某文法符

    19、号的继承属性的语义规则插入到此符号之前n(第二条件)L-属性定义本身满足n(第三条件)将计算产生式左边非终结符号综合属性的语义规则放在产生式右端的末尾5/26/2022395.2 5.2 语法制导翻译语法制导翻译n例子:P300-301 例5.13nFig.5.22-语法制导定义( L-属性定义)nFig.5.23-翻译模式5/26/202240PRODUCTION SEMANTIC RULES BB.ps = 10; S.ht = B.htB B1 B2B1.ps = B.ps; B2.ps = B.ps;B.ht = max(B1.ht, B2.ht)B B1 sub B2 B1.ps =

    20、 B.ps; B2.ps = shrink(B.ps);B.ht = disp(B1.ht, B2.ht)B textB.ht = text.h * B.psTRANSLATION SCHEMES B.ps = 10 B S.ht = B.ht B B1.ps = B.ps B1 B2.ps = B.ps B2 B.ht = max(B1.ht, B2.ht) B B1.ps = B.ps B1 sub B2.ps = shrink(B.ps) B2 B.ht = disp(B1.ht, B2.ht)B text B.ht = text.h * B.ps 5/26/2022415.2 5.2

    21、语法制导翻译语法制导翻译n分析一个句子:text sub text textSBB2B1textB3subB4texttext分析树分析树5/26/202242带语义动作的分析树带语义动作的分析树SBB.ps:=10S.ht:=B.htB1.ps:=B.psB.ht:=max(B1.ht,B2.htB2.ps:=B.psB1B2B3.ps:=B1.psB4.ps:=shrink(B1.ps)B1.ht:=disp(B3.ht,B4.htB4subB3textB2.ht:=text.h*B2.pstextB3.ht:=text.h*B3.pstextB4.ht:=text.h*B4.ps1 12 23 34 45 56 67 78 89 910101111* 深度优先计算属性深度优先计算属性5/26/202243

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:编译原理课件CHAPTER5(SemanticA.ppt
    链接地址:https://www.163wenku.com/p-2784125.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库