《编译原理》编译原理实验三,四讲稿

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

语义分析 通常包括 (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
- 《编译原理》课程教学资源:TAC.rtf
- 《编译原理》课程教学资源:java图.doc
- 《编译原理》课程教学资源:第8章Review.ppt
- 《编译原理》课程教学资源:第5章练习答案.doc
- 《编译原理》课程教学资源:29 TAC examples.pdf
- 《编译原理》课程教学资源:作业及answer.doc
- 《编译原理》课程教学资源:前后端图.doc
- 《编译原理》课程教学资源:复习题1.doc
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿),共三篇,十章).ppt
- 《数据库系统原理与应用》教程教学资源(第二版)数据库概论练习.doc
- 《数据库系统原理与应用》教程教学资源(PPT课件讲稿,第二版)第16章 信息系统的开发过程.ppt
- 《数据库系统原理与应用》教程教学资源(PPT课件讲稿,第二版)第15章 数据仓库技术.ppt
- 《数据库系统原理与应用》教程教学资源(PPT课件讲稿,第二版)第14章 分布式数据库技术.ppt
- 《数据库系统原理与应用》教程教学资源(PPT课件讲稿,第二版)第13章 事务和并发控制.ppt
- 《数据库系统原理与应用》教程教学资源(PPT课件讲稿,第二版)第12章 查询处理技术.ppt
- 《数据库系统原理与应用》教程教学资源(PPT课件讲稿,第二版)第11章 索引和散列技术.ppt
- 《数据库系统原理与应用》教程教学资源(PPT课件讲稿,第二版)第10章 SQL语言高级功能.ppt
- 《数据库系统原理与应用》教程教学资源(PPT课件讲稿,第二版)第9章 SQL语言初步.ppt
- 《数据库系统原理与应用》教程教学资源(PPT课件讲稿,第二版)第8章 Datalog语言.ppt
- 《编译原理》课程教学资源:第10章review.ppt
- 《编译原理》课程教学资源:教学计划.doc
- 《编译原理》课程教学资源:第八章 语法制导翻译和中间代码生成.ppt
- 《编译原理》课程教学资源:第二章 PL/0编译程序.ppt
- 《编译原理》课程教学资源:第九章 符号表.ppt
- 《编译原理》课程教学资源:第六章 LR分析程序及其自动构造.ppt
- 《编译原理》课程教学资源:第三章 词法分析.ppt
- 《编译原理》课程教学资源:第十二章 代码生成.ppt
- 《编译原理》课程教学资源:第十一章 代码优化.ppt
- 《编译原理》课程教学资源:第十章 目标程序运行时的组织.ppt
- 《编译原理》课程教学资源:第四章 文法和语言.ppt
- 《编译原理》课程教学资源:第五章 LL(1)文法及其分析程序.ppt
- 《编译原理》课程教学资源:第一章 概述.ppt
- 河南经贸职业学院:《ASP.NET动态网站开发》课程教学资源(PPT课件)第二十一讲 ASP.NE增强服务器控件.ppt
- 河南经贸职业学院:《ASP.NET动态网站开发》课程教学资源(PPT课件)第十五讲 DataAdapter对象.ppt
- 河南经贸职业学院:《ASP.NET动态网站开发》课程教学资源(PPT课件)第十四讲 DataReader对象的使用.ppt
- 河南经贸职业学院:《ASP.NET动态网站开发》课程教学资源(PPT课件)第十六讲 Dataset对象.ppt
- 河南经贸职业学院:《ASP.NET动态网站开发》课程教学资源(PPT课件)第十八讲 利用Gridview控件显 示数据.ppt
- 河南经贸职业学院:《ASP.NET动态网站开发》课程教学资源(PPT课件)第二十二讲 Treeview控件.ppt
- 河南经贸职业学院:《ASP.NET动态网站开发》课程教学资源(PPT课件)第八讲 ASP.NET验证控件.ppt