当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

吉林大学:《编译原理》课程教学资源(PPT课件讲稿)第七章 动作文法和属性文法

资源类别:文库,文档格式:PPT,文档页数:14,文件大小:100.5KB,团购合买
一、语义处理的抽象描述。 二、作用:自动实现语法和语义检查 三、分类:
点击下载完整版文档(PPT)

第七章动作文法和属性文法 义处理的抽象描述。 C作用:自动实现语法和语义检查 C分类: 动作文法 属性文法

第七章 动作文法和属性文法  语义处理的抽象描述。  作用:自动实现语法和语义检查  分类: 动作文法 属性文法

动作文法 动作文法 动作符( Action Symbo) 动作文法( Action Grammer) 尾动作文法 抽象动作文法 动作文法的实现: 动作文法的L实现 动作文法的LR实现

动作文法  动作文法 动作符(Action Symbol) 动作文法(Action Grammer) 尾动作文法 抽象动作文法  动作文法的实现: 动作文法的LL实现 动作文法的LR实现

动作符和动作文法 动作符:(区别于语法符号) 作用:无语法作用,代表语义动作。 形式:#Name (Name是语义子程序名,无参。) 位置:产生式右部的任意位置 动作文法:产生式带动作符的文法 作用:描述语义分析、中间代码生成 等工作过程

动作符和动作文法  动作符: (区别于语法符号) 作用:无语法作用,代表语义动作。 形式:#Name (Name是语义子程序名,无参。) 位置:产生式右部的任意位置  动作文法:产生式带动作符的文法。 作用:描述语义分析、中间代码生成 等工作过程

动作文法的例子 例:文法 L→DL L→>DL L→)入 L→入 D→)a D→)a D b D→b<Add S:=0 亲Add:S:=S+1 来Out: Print(S)

动作文法的例子 例:文法: L → D L L →  D → a D → b L →D L L →  D → a D → b S:=0  Add: S:=S+1  Out: Print(S)

SyntexStack InputStream Action bab L→)DL LD bab D→)b#Add Lb bab match b): S: =S+ ab L→DL LD ab D→a La b match(a) → LD D→b#Add Lb match(b); S: =S+ L→)#0ut <0 Prints)

SyntexStack InputStream Action L bab L → D L LD bab D → b #Add Lb bab match(b);S:=S+1 L ab L → D L LD ab D → a La ab match(a) L b L → D L LD b D → b #Add Lb b match(b);S:=S+1 L L → #Out Print(S)

例2:串中出现连续b的个数。 L→BB B→aB B→bB M nit B→c m:=0 米0 lut nit L→BB lfm≠0 B→aB Print(m): m: =0 B→bB M Add B→c m:=m+1

例2:串中出现连续b的个数。 ⚫ L → B B ⚫ B → a B ⚫ B → b B ⚫ B → c  L → B B ⚫ B → a B ⚫ B → b B ⚫ B → c  Init: m:= 0  Out_Init: If m0 Print(m);m:=0  Add: m:= m + 1

尾动作文法 定义:动作符只出现于产生式的末尾。 特点:实现容易,LL方法和LR方法都可以。 例:E→n #PUSH E→(E1+E2) HEADD E→(E1*E2) iMUL PUSH: top: =top+1; Sem[top]: =n ADD: Sem[top-1]: =Sem[top-1]+Sem[top]; top: =top-1 MUL: Sem [top-1]: =Sem[top-1]*Semtop]; top: =top-1

尾动作文法  定义:动作符只出现于产生式的末尾。  特点:实现容易,LL方法和LR方法都可以。  例:E → n #PUSH E → (E1+ E2) #ADD E → (E1* E2) #MUL PUSH:top:=top+1; Sem[top]:=n ADD: Sem[top-1]:=Sem[top-1]+Sem[top];top:=top-1 MUL:Sem[top-1]:=Sem[top-1]*Sem[top];top:=top-1

抽象尾动作文法 定义:动作子程序中,直接引用对应文法符 号的值,不考虑其形式、位置和结构如何。 ÷举例: E0→n1 iPUSH E0→>(E2+E4)#ADD E0→(E2*E4)#MUL PUSH [E0.va|:=n1.va| ADD IEO. val: = E2. val + E4. val F I EO. val E2 val E4 val F

抽象尾动作文法  定义:动作子程序中,直接引用对应文法符 号的值,不考虑其形式、位置和结构如何。  举例: E 0 → n 1 #PUSH E 0 → ( E2 + E4 ) #ADD E 0 → ( E2 * E4 ) #MUL PUSH: { E0.val := n 1.val } ADD: { E0.val := E 2.val + E4.val } MUL: { E0.val := E 2.val * E4.val }

动作文法的山实现 LL动作文法: 动作文法满足L(1)文法的条件。 实现组成: LL(1)分析表,驱动器,语义子程序。 驱动程序的分类: 不带语义栈控制:由用户实现语义栈的 管理,即将语义栈的处理写在语义 子程序中。 带语义栈控制:由驱动器来控制语义栈

动作文法的LL实现  LL动作文法: 动作文法满足LL(1)文法的条件。  实现组成: LL(1)分析表,驱动器,语义子程序。  驱动程序的分类: 不带语义栈控制:由用户实现语义栈的 管理,即将语义栈的处理写在语义 子程序中。 带语义栈控制:由驱动器来控制语义栈

带语义栈控制的L驱动器 LRGT指针: Leftindex:指向当前产生式左部符号的语义栈地址 Right Index:指向当前产生式右部的语义栈基地址 CurrentIndex:指向当前符号的语义栈地址 ÷ Top Index:指向当前第一自由地址 LeftIndex right index Current Index Top Index Semantic Stack

带语义栈控制的LL驱动器 LRCT指针:  LeftIndex:指向当前产生式左部符号的语义栈地址  RightIndex:指向当前产生式右部的语义栈基地址  CurrentIndex:指向当前符号的语义栈地址  TopIndex:指向当前第一自由地址 LeftIndex RightIndex CurrentIndex TopIndex Semantic Stack

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共14页,试读已结束,阅读完整版请下载
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有