《编译原理》课程PPT教学课件(讲稿)编译原理实验三、四讲稿

编译原理实验三,四
编译原理实验三,四

语义分析 通常包括 (1)类型检查。验证程序中执行的每个操作是否 遵守语言的类型系统的过程.,编译程序必须报告不 符合类型系统的信息。 (2)控制流检査。控制流语句必须使控制转移到 合法的地方 (3)一致性检查。在很多场合要求对象只能被定 义一次。例如 Pasca语言规定同一标识符在一个分 程序中只能被说明一次等等 (4)名字的作用域分析
语义分析 通常包括: (1)类型检查。验证程序中执行的每个操作是否 遵守语言的类型系统的过程.,编译程序必须报告不 符合类型系统的信息。 (2)控制流检查。控制流语句必须使控制转移到 合法的地方。 (3)一致性检查。在很多场合要求对象只能被定 义一次。例如Pascal语言规定同一标识符在一个分 程序中只能被说明一次等等。 (4)名字的作用域分析

语义分析 *语义分析的要求请参看。例子见后。 *语义分析需要用到 Bison/yacc语言中的 “语义值类型定义”和“语义动作”使 用部分。(教材附录有,不再讲述)
语义分析 语义分析的要求请参看。例子见后。 语义分析需要用到Bison/Yacc语言中的 “语义值类型定义”和“语义动作”使 用部分。(教材附录有,不再讲述)

语义分析的例子 w Type equivalence and compatibility w Two base types are equivalent if and only if they are the same exact type BoolEXpr ExprI$$= Check BoolExprUsage(&@1, $1); * Check BoolExprUsageo中检查$即 Expr的ype是否是boo类型的
语义分析的例子 Type equivalence and compatibility Two base types are equivalent if and only if they are the same exact type. BoolExpr : Expr { $$ = CheckBoolExprUsage(&@1, $1); } CheckBoolExprUsage()中检查$1即 Expr的type是否是bool类型的

变量的类型 *在pp3中我们要获得变量的类型 *在我们给的 StartLes里面,为了简单起 见,我们将expr、 Simple Stmt等也定义 为type类型。同学们可自行选择
变量的类型 在pp3中我们要获得变量的类型。 在我们给的StartFiles里面,为了简单起 见,我们将expr、SimpleStmt等也定义 为type类型。同学们可自行选择

sc。pe符号表 * Scope类起到符号表的作用。在 scope. h中定 义了 static Scope* stack[MaxNestLevel]; *每进入一个 scope( Globalfunction,Cass,Loca就会在 stack顶端加入一项,退出这个 scope时就把 该项退栈。 Scope内的标识符都加入 scope内 部的加入 hashtable中 *退出一个cope时,打印出这个 scope内的所 有标识符及其信息
Scope—符号表 Scope类起到符号表的作用。在scope.h中定 义了static Scope* stack[MaxNestLevel]; 每进入一个 scope(Global,Function,Class,Local)就会在 stack顶端加入一项,退出这个scope时就把 该项退栈。Scope内的标识符都加入scope内 部的加入hashtable中。 退出一个scope时,打印出这个scope内的所 有标识符及其信息

四种 Scope Global Scope 全局变量,类定义,main函数。 Local Scope 函数内部的临时变量 Class Scope 类内部的成员变量和方法 Function Scope 函数的参数
四种scope Global Scope 全局变量,类定义,main函数。 Local Scope 函数内部的临时变量。 Class Scope 类内部的成员变量和方法。 Function Scope 函数的参数

*int test(int c int d) Exiting local scope Contents * void main( (line 4 variable type int int c s: (line 5) string si variable type string Exiting function 'main scope. Contents: s =Whello' Exiting local scope c= test(4, 5)i Contents: Exiting function ' test Print(c) scope. Contents Print(s)i a:(1ine13) variable, type int 3 variable type int int test (int a int b Exiting global scope Contents main:(line 3) return a t b function test: (line 13) function
int test(int c, int d); void main() { int c; string s; s = "hello"; c = test(4, 5); Print(c); Print(s); } int test(int a, int b) { return a + b; } Exiting local scope. Contents: c: (line 4) variable , type int s: (line 5) variable , type string Exiting function 'main' scope. Contents: Exiting local scope. Contents: Exiting function 'test' scope. Contents: a: (line 13) variable , type int b: (line 13) variable , type int Exiting global scope. Contents: main: (line 3) function test: (line 13) function

Main Local scope String s Main Fundtion Scope Empty Global main
Global Main Function Scope Main Local Scope main Empty Int c String s

实验三要求 *实验要求:完成语义分析,结果同 sample一致,扩展不做要求。 *上交日期:三周以后即128日晚12:00 上载到1661116886 compiler/soft *提交方法:同以前一样。 *欢迎同学用不同的方法实现相同的功能。 如自己设计符号表、类的实现等
实验三要求 实验要求:完成语义分析,结果同 sample一致,扩展不做要求。 上交日期:三周以后即12.8日晚12:00 上载到166.111.68.86 compiler/soft 提交方法:同以前一样。 欢迎同学用不同的方法实现相同的功能。 – 如自己设计符号表、类的实现等
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《编译原理》课程PPT教学课件(讲稿)第四章 练习参考答案.ppt
- 《编译原理》课程PPT教学课件(讲稿)第四章 文法和语言.ppt
- 《编译原理》课程PPT教学课件(讲稿)第十章 目标程序运行时的组织.ppt
- 《编译原理》课程PPT教学课件(讲稿)第十章 RUN-Time Organization.ppt
- 《编译原理》课程PPT教学课件(讲稿)第十二章 代码生成.ppt
- 《编译原理》课程PPT教学课件(讲稿)第十一章 代码优化.ppt
- 《编译原理》课程PPT教学课件(讲稿)第六章 LR分析程序及其自动构造.ppt
- 《编译原理》课程PPT教学课件(讲稿)第八章 语法制导翻译和中间代码生成.ppt
- 《编译原理》课程PPT教学课件(讲稿)第五章 LL(1)文法及其分析程序.ppt
- 《编译原理》课程PPT教学课件(讲稿)第二章 PL/0编译程序.ppt
- 《编译原理》课程PPT教学课件(讲稿)第九章 符号表.ppt
- 《编译原理》课程PPT教学课件(讲稿)第三章 词法分析.ppt
- 《编译原理》课程PPT教学课件(讲稿)第一章 概述.ppt
- 华北电力大学《操作系统》PPT教案_第八章 文件系统(File System).ppt
- 华北电力大学《操作系统》PPT教案_第七章 设备管理 (Devices Management).ppt
- 华北电力大学《操作系统》PPT教案_第六章 虚拟存储器(Virtual Memory).ppt
- 华北电力大学《操作系统》PPT教案_第五课 存储器管理(Memory Management).ppt
- 华北电力大学《操作系统》PPT教案_第四章 调度和死锁(Scheduling and Deadlock).ppt
- 华北电力大学《操作系统》PPT教案_第三章 进程的同步和通讯 (Synchronization and Communication Among Processes).ppt
- 华北电力大学《操作系统》PPT教案_第二章 进程的描述和控制(Process Description and Control).ppt
- 《VB语言程序设计》课程电子教案(PPT教学课件)课程介绍.ppt
- 《VB语言程序设计》课程电子教案(讲义)教材习题答案(林卓然编著).doc
- 《VB语言程序设计》课程电子教案(PPT教学课件)第1章 认识 Visual Basic.ppt
- 《VB语言程序设计》课程电子教案(PPT教学课件)第2章 程序设计基础.ppt
- 《VB语言程序设计》课程电子教案(PPT教学课件)第3章 赋值与输入输出.ppt
- 《VB语言程序设计》课程电子教案(PPT教学课件)第4章 选择结构设计.ppt
- 《VB语言程序设计》课程电子教案(PPT教学课件)第5章 循环结构设计.ppt
- 《VB语言程序设计》课程电子教案(PPT教学课件)第6章 数组.ppt
- 《VB语言程序设计》课程电子教案(PPT教学课件)第7章 过程.ppt
- 《VB语言程序设计》课程电子教案(PPT教学课件)第8章 数据文件.ppt
- 《VB语言程序设计》课程电子教案(PPT教学课件)第9章 程序高度与错误处理.ppt
- 《VB语言程序设计》课程电子教案(PPT教学课件)第10章 其他常用的语句与控件.ppt
- 《VB语言程序设计》课程电子教案(讲义)教学安排.doc
- 《VB语言程序设计》课程电子教案(讲义)教学大纲.doc
- 《Flash MX基础培训教程》电子教案(PPT教学课件,上)第1章 Flash MX.ppt
- 《Flash MX基础培训教程》电子教案(PPT教学课件,上)第2章 创建矢量图形.ppt
- 《Flash MX基础培训教程》电子教案(PPT教学课件,上)第3章 编辑及辅助工具.ppt
- 《Flash MX基础培训教程》电子教案(PPT教学课件,上)第4章 动画制作基础.ppt
- 《Flash MX基础培训教程》电子教案(PPT教学课件,上)第5章 图像与元件.ppt
- 《Flash MX基础培训教程》电子教案(PPT教学课件,上)第6章 高级动画制作.ppt