清华大学:《编译原理》课程教学资源_实验三,四讲稿

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

语义分析 通常包括 (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
- 清华大学:《编译原理》课程教学资源_第十章 review.ppt
- 清华大学:《编译原理》课程教学资源_第十二章 代码生成.ppt
- 清华大学:《编译原理》课程教学资源_第十一章 代码优化.ppt
- 清华大学:《编译原理》课程教学资源_第八章 语法制导翻译和中间代码生成.ppt
- 清华大学:《编译原理》课程教学资源_第五章 LL(1)文法及其分析程序.ppt
- 清华大学:《编译原理》课程教学资源_第二章 PL/0编译程序.ppt
- 清华大学:《编译原理》课程教学资源_第九章 符号表.ppt
- 清华大学:《编译原理》课程教学资源_第三章 词法分析.ppt
- 清华大学:《编译原理》课程教学资源_第一章 概述.ppt
- 清华大学:《编译原理》课程教学资源_教学计划.doc
- 清华大学:《编译原理》课程教学资源_复习题1.doc
- 清华大学:《编译原理》课程教学资源_前后端图.doc
- 清华大学:《编译原理》课程教学资源_作业及answer.doc
- 清华大学:《编译原理》课程教学资源_TAC Three address code.rtf
- 清华大学:《编译原理》课程教学资源_第六章 LR分析程序及其自动构造.ppt
- 清华大学:《编译原理》课程教学资源_java图.doc
- 清华大学:《编译原理》课程教学资源_第8章 Review.ppt
- 清华大学:《计算机文化基础》 第一章 计算机基础知识.ppt
- 清华大学:《计算机文化基础》 第二章 图形用户界面的使用.ppt
- 清华大学:《计算机文化基础》 第三章 Windows2000基本使用.ppt
- 清华大学:《计算机文化基础》 第四章 文字处理软件的使用.ppt
- 清华大学:《计算机文化基础》 第五章 因特网基础知识.ppt
- 清华大学:《计算机文化基础》 第六章 WWW信息服务与信息搜索.ppt
- 清华大学:《计算机文化基础》 第七章 网页制作(一).ppt
- 清华大学:《计算机文化基础》 第八章 网页制作(二).ppt
- 清华大学:《计算机文化基础》 第九章 Power point演示软件.ppt
- 清华大学:《计算机文化基础》 第十章 电子报表处理软件Exce.ppt
- 清华大学:《计算机文化基础》 第十一章 动画制作软件 FLASE.ppt
- 清华大学:《计算机文化基础》 第十二章 网络安全.ppt
- 清华大学:《计算机文化基础》 第十三章 因特网上的信息服务.ppt
- 操作系统的定义讲义.ppt
- 西安交通大学:《VC++》课程教学资源(教案讲义)前言.doc
- 西安交通大学:《VC++》课程教学资源(教案讲义)第1单元 Hello. c++!.doc
- 西安交通大学:《VC++》课程教学资源(教案讲义)第2单元 控制结构.doc
- 西安交通大学:《VC++》课程教学资源(教案讲义)第3单元 数据类型.doc
- 西安交通大学:《VC++》课程教学资源(教案讲义)第4单元 表达式.doc
- 西安交通大学:《VC++》课程教学资源(教案讲义)第5单元 函数.doc