第8章语法制导与中间代码生成浅析.pptVIP

  • 1
  • 0
  • 约6.15千字
  • 约 88页
  • 2017-04-22 发布于湖北
  • 举报
第8章 语法制导翻译与中间代码生成;8.1 属性文法;静态语义审查 (1)类型检查。根据类型相容性要求,验证程序中执行的每个操作是否遵守语言的类型系统的过程,编译程序必须报告不符合类型系统的信息。 (2)控制流检查。控制流语句必须使控制转移到合法的地方。例如,在C语言中break语句使控制跳离包括该语句的最小while、for或switch语句。如果不存在包括它的这样的语句,则就报错。; (3)一致性检查。在很多场合要求对象只能被定义一次。例如Pascal语言规定同一标识符在一个分程序中只能被说明一次,同一case语句的标号不能相同,枚举类型的元素不能重复出现等等。 (4)上下文相关性检查。比如,变量名字必须先声明后引用; (5)名字的作用域分析。各变量的作用域可能是不一样的,要通过分析明确各变量的作用域。 解释执行动态语义 (计算)生成代码(中间代码或目标代码) ;例:有文法G[E]: E → T1+T2 | T1 or T2 T → num|true|false 对输入串 2+6 语法树如图:;类型检查的属性文法: E → T1+T2 {T1.t=int AND T2.t=int} E → T1 or T2 {T1.t=bool AND T2.t=bool} T → num {T.t:=int} T → true {T.t:=boo

文档评论(0)

1亿VIP精品文档

相关文档