《编译原理》课程教学资源(PPT课件讲稿)第七章 语义分析和中间代码生成

第七章语义分析和中间代码生成 本章内容 介绍几种常用的中间表示:后缀表示、图 形表示和三地址代码 用语法制导定义和翻译方案的方法来说明 程序设计语言的结构怎样被翻译成中间形式
第七章 语义分析和中间代码生成 本章内容 –介绍几种常用的中间表示:后缀表示、图 形表示和三地址代码 –用语法制导定义和翻译方案的方法来说明 程序设计语言的结构怎样被翻译成中间形式

71中间语言 71.1后缀式 表达式E的后缀式可以如下递归定义 ·如果碮变量或常数,那么E的后缀式就是E 本身
7.1 中 间 语 言 7.1.1 后缀式 表达式E的后缀式可以如下递归定义 • 如果E是变量或常数,那么E的后缀式就是E 本身

71中间语言 71.1后缀表示 表达式E的后缀表示可以如下递归定义 如果碮变量或常数,那么E的后缀表示就是 E本身。 如果E是形式为E1pE2的表达式,那么E的后 缀式是E1E2o,其中E1和E2分别是E1和E2 的后缀式
7.1 中 间 语 言 7.1.1 后缀表示 表达式E的后缀表示可以如下递归定义 • 如果E是变量或常数,那么E的后缀表示就是 E本身。 • 如果E是形式为E1 opE2的表达式,那么E的后 缀式是E1 E2 op,其中E1 和E2 分别是E1和E2 的后缀式

71中间语言 71.1后缀式 表达式E的后缀式可以如下递归定义 ·如果碮变量或常数,那么E的后缀式就是E 本身。 如果E是形式为E1pE2的表达式,那么E的后 缀式是E1E2o,其中E1和E2分别是E1和E2 的后缀式。 如果E是形式为(E1)的表达式,那么E的后缀 表示也是E的后缀式
7.1 中 间 语 言 7.1.1 后缀式 表达式E的后缀式可以如下递归定义 • 如果E是变量或常数,那么E的后缀式就是E 本身。 • 如果E是形式为E1 opE2的表达式,那么E的后 缀式是E1 E2 op,其中E1 和E2 分别是E1和E2 的后缀式。 • 如果E是形式为(E1 )的表达式,那么E1的后缀 表示也是E的后缀式

71中间语言 后缀式表示法是波兰逻辑学家卢卡西维奇( Lukasiewicz)发明的一种表示表达式的方法 因此又称逆波兰表示法。这种表示法是把运 算量(操作数)写在前面把算符写在后面( 后缀)
7.1 中 间 语 言 • 后缀式表示法是波兰逻辑学家卢卡西维奇( Lukasiewicz)发明的一种表示表达式的方法 因此又称逆波兰表示法。这种表示法是把运 算量(操作数)写在前面把算符写在后面( 后缀)

71中间语言 把表达式翻译为后缀式的语义规则描述 产生式 语义规则 E→→E10pE2E.code:=E1 code e2, code op E(EE. code:=E code E→id E. code =id
7.1 中 间 语 言 把表达式翻译为后缀式的语义规则描述 产 生 式 语 义 规 则 E→E1 op E2 E.code :=E1 .code || E2 .code || op E→(E1) E.code := E1 .code E→id E.code :=id

71中间语言 后缀式不需要括号 (8-4)+2的后缀表示是84-2+ 后缀式的最大优点是便于计算机处理表达式 后缀式很容易拓广到含一元算符的表达式 后缀式也可以拓广到其它语言成分 演示Tab1e71
7.1 中 间 语 言 后缀式不需要括号 (8 − 4) + 2 的后缀表示是8 4 −2 + • 后缀式的最大优点是便于计算机处理表达式 • 后缀式很容易拓广到含一元算符的表达式 • 后缀式也可以拓广到其它语言成分 演示Table7_1

71中间语言 712图表示法 图表示法包括DAG与抽象语法树 抽象语法树 assign a ulmus d d b (a)语法树 a:=(-b+c*d)+c*d抽象语法树
7.1 中 间 语 言 7.1.2 图表示法 图表示法包括DAG与抽象语法树 • 抽象语法树 assign a + + b c d uminus c d (a) 语法树 a := (−b + cd ) + cd抽象语法树

71中间语言 712图表示法 有向无环图也是一种中间表示 assign assign a ulmus d umnus d d b b (a)语法树 (bDAG a:=(-b+c*d)+c*d的图形表示
7.1 中 间 语 言 7.1.2 图表示法 • 有向无环图也是一种中间表示 assign a + + b c d uminus c d assign a + + b c d uminus (a) 语法树 (b)DAG a := (−b + cd ) + cd的图形表示

71中间语言 构造赋值语句抽象语法树的属性文法 演示 Table72 立生式 语义规则 S→id:=E|S.np:= mknodecassign”, maleat(id, identry), E.nptr) E→E1+E2E.mp:= mknode(+’,E1-npt,E2ptm) E,El*E2Enptr:=mknode(*, Er nptr, E, nptr) E,-E1 Enptr:= mkunode(, Ernptr) E→(E1)E.mp:=E,npt E→id E nptr: = mkleaf (id, identry)
7.1 中 间 语 言 构造赋值语句抽象语法树的属性文法 演示Table7_2 产 生 式 语 义 规 则 S → id :=E S.nptr := mknode(‘assign’, mkleaf (id, id.entry), E.nptr) E → E1 +E2 E.nptr := mknode( ‘+’, E1 .nptr, E2 .nptr) E → E1 E2 E.nptr := mknode( ‘’, E1 .nptr, E2 .nptr) E → −E1 E.nptr := mkunode( ‘uminus’, E1 .nptr) E → (E1 ) E.nptr := E1 .nptr E→ id E.nptr := mkleaf (id, id.entry)
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《计算机组成原理》课程教学资源(PPT课件讲稿)第八章 I/O操作的实现.ppt
- 《C++语言程序设计》课程教学课件(PPT讲稿)第13讲 多态.ppt
- 山东大学:《人机交互技术》课程教学资源(PPT课件讲稿)第9章 可用性分析与评估.ppt
- 多媒体图像处理技术(PPT课件讲稿,共六章).ppt
- 山东大学:《微机原理及单片机接口技术》课程教学资源(PPT课件讲稿)第四章 指令系统及汇编语言程序设计 4.5 各类指令详解.ppt
- 《微机原理》课程教学资源(PPT课件)第2章 微处理器与总线.ppt
- 《网页设计与制作》课程教学资源(PPT课件讲稿)第四章 设计页面布局.ppt
- 《网页设计与制作》课程教学资源(PPT课件讲稿)第七章 模板与库的应用.ppt
- 《单片机原理及应用》课程教学资源(PPT课件)第8章 AT89S51单片机外部存储器的扩展.ppt
- 《微机原理》课程教学资源(PPT课件)第六章 微型计算机的输入/输出.ppt
- 《计算机应用基础》课程教学资源(PPT课件讲稿)第3章 Word 2007文字处理.ppt
- 中国铁道出版社:《局域网技术与组网工程》课程教学资源(PPT课件讲稿)第7章 网络系统集成与网络维护.ppt
- 西安交通大学:《微型计算机接口技术》课程教学资源(PPT课件讲稿)第二章 微型处理器与单片机.ppt
- 长安大学:《微机原理》课程教学资源(PPT课件讲稿)第7章 汇编语言程序设计.pptx
- 《数字图像处理基础》课程教学资源(教学大纲.pdf
- 《数据库基础与Access应用》课程教学资源(PPT课件)第12章 应用实例.pptx
- 《数据库基础与应用》课程PPT教学课件(Access案例教程)第8章 宏.pptx
- 《数据库基础与应用》课程PPT教学课件(Access案例教程)第9章 数据库语言SQL.pptx
- 上海交通大学:《现代操作系统》课程教学资源(PPT课件讲稿)Chapter 02 进程与线程 Process and Thread.pps
- 上海交通大学:《程序设计》课程教学资源(PPT课件讲稿)第5章 批量数据处理——数组.ppt
- 山东大学计算机科学与技术学院:Web Service(PPT讲稿).ppt
- 《Android 程序设计基础》课程教学资源(PPT课件讲稿)第5章 Android用户界面(界面设计、控件操作).ppt
- 山东大学:《数据结构》课程教学资源(PPT课件讲稿)第7章 跳表和散列(Skip List and Hashing).ppt
- 文字处理软件 Word 2010(PPT讲稿).pptx
- 烟台理工学院:《算法与数据结构》课程教学资源(PPT课件)第1章 绪论(主讲:高慧).ppt
- 《大学计算机基础》课程教学资源(PPT课件讲稿)第三章 字处理软件Word 2003.ppt
- Enabling SOA Using Messaging(PPT讲稿).ppt
- Folksonomies and Social Tagging(PPT讲稿).ppt
- 兰州大学:搜索引擎的使用(PPT讲稿,主讲 杨青).ppt
- 中国科学技术大学:《数据结构及其算法》课程电子教案(PPT课件讲稿)第7章 图(主讲:刘东).pptx
- 《计算机算法设计与分析》课程教学资源(PPT课件讲稿)分支界限法.ppt
- 电子工业出版社:《计算机网络》课程教学资源(PPT课件讲稿)第1章 概述.pptx
- 《软件测试 Software Testing》教学资源(PPT讲稿)Part 3 Applying Your Testing Skills.ppt
- 《编译原理与技术》课程教学资源(PPT课件讲义)中间代码生成.ppt
- 南京大学:《编译原理》课程教学资源(PPT课件讲稿)第六章 中间代码生成.ppt
- 合肥工业大学:《网络安全概论》课程教学资源(PPT课件讲稿)第一讲 网络安全概述.ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第五章 存储层次.ppt
- 南京大学:移动Agent系统支撑(PPT讲稿)Mobile Agent Communication——Software Agent.pptx
- 西安电子科技大学:《现代密码学》课程教学资源(PPT课件讲稿)第七章 数字签名和密码协议.ppt
- 《编译原理》课程教学资源(PPT课件讲稿)第九章 独立于机器的优化.ppt