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

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

资源类别:文库,文档格式:PPT,文档页数:17,文件大小:123KB,团购合买
语义分析 通常包括: (1)类型检查。验证程序中执行的每个操作是否遵守语言的类型系统的过程,编译程序必须报告不符合类型系统的信息。 (2)控制流检查。控制流语句必须使控制转移到合法的地方。 (3)一致性检查。在很多场合要求对象只能被定义一次。例如Pascal语言规定同一标识符在一个分程序中只能被说明一次等等。 (4)名字的作用域分析
点击下载完整版文档(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  提交方法:同以前一样。  欢迎同学用不同的方法实现相同的功能。 – 如自己设计符号表、类的实现等

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

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

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