编译原理实验三,四
编译原理实验三,四
语义分析 通常包括 (1)类型检查。验证程序中执行的每个操作是否 遵守语言的类型系统的过程.,编译程序必须报告不 符合类型系统的信息。 (2)控制流检査。控制流语句必须使控制转移到 合法的地方 (3)一致性检查。在很多场合要求对象只能被定 义一次。例如 Pasca语言规定同一标识符在一个分 程序中只能被说明一次等等 (4)名字的作用域分析
语义分析 通常包括: (1)类型检查。验证程序中执行的每个操作是否 遵守语言的类型系统的过程.,编译程序必须报告不 符合类型系统的信息。 (2)控制流检查。控制流语句必须使控制转移到 合法的地方。 (3)一致性检查。在很多场合要求对象只能被定 义一次。例如Pascal语言规定同一标识符在一个分 程序中只能被说明一次等等。 (4)名字的作用域分析
语义分析 *语义分析的要求请参看< The decaf Language>。例子见后。 *语义分析需要用到 Bison/yacc语言中的 “语义值类型定义”和“语义动作”使 用部分。(教材附录有,不再讲述)
语义分析 语义分析的要求请参看<The Decaf Language>。例子见后。 语义分析需要用到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类型。同学们可自行选择