天津大学编译原理Part7语义分析与中间代码生成.ppt

天津大学编译原理Part7语义分析与中间代码生成.ppt

天津大学编译原理Part7语义分析与中间代码生成

数据库原理与Oracle——SQL语言 语义分析与中间代码生成 授课:胡静 语义分析的位置和作用 紧跟在语法分析和语法分析之后,编译程序要做的工作就是进行静态语义检查和翻译。 编译器必须要检查源程序是否符合源语言规定的语法和语义要求。这种检查称为静态检查,检查并报告程序中某些类型的错误。 静态语义检查 静态语义检查通常包括: 类型检查:如果操作符作用于不相容的操作数,编译器应该报错 控制流检查:引起控制流从某个结构中跳转出来的语句必须能够决定控制流转向的目标地址 唯一性检查:有时,有的对象只能被定义一次。比如,同一case语句的标号不能相同,枚举类型的元素不能重复。 与名字相关的检查:有时候要求同一名字在特定位置出现两次或多次(如,标识结构的开始和结尾) 中间语言 源语言的中间表示方法 抽象语法树 后缀式 三地址代码(包括三元式、四元式、间接三元式) DAG图表示 后缀式 后缀式表示又称逆波兰表示法。 这种表示法是:把运算量(操作数)写在前面,把算符写在后面(后缀)。 一个表达式的后缀形式可以如下定义: 如果E是一个变量或常量,则E的后缀式是E自身 如果E是E1opE2形式的表达式,这里op是任何二元操作符,则E的后缀式为E1’E2’op。这里E1’和E2’分别是E1和E2的后缀式。 如果E是(E1)形式的表达式,则E1的后缀式就是E的后缀式 这种表示法用不着使用括号。 只要知道每

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档