编译原理三——语义分析

2019-06-17  本文已影响0人  小屋的快乐

语义分析和中间代码生成

1、概述

1、和语法分析、词法分析的同时进行进行词法检查、语法检查一样,语义分析也伴随语义检查。

  1. 动态语义检查需要生成相应的目标代码,它是在运行时进行的。
  2. 静态语义检查是在编译时完成的,主要涉及类型检查(与参与运算的操作数类型相容)、控制流检查(保证控制语句有合法的转向点)、一致性检查(如图标识符在同作用域只说明一次,case语句标号不能同等)(语义是上下文有关的,故形式化困难,目前用属性文法和语法制导翻译)

2、语法制导翻译:为每个产生式配上一个翻译子程序,并在语法分析同时执行这些子程序。

2、属性文法

1、文法符号的属性:(可以根据语法树找,注意复习

3、常见的中间语言

1、抽象语法树

2、逆波兰表示法

3、 三地址代码:三地址代码是中间代码的一种抽象形式。通常有四元式、三元式和间接三元式三种表示方法。(三地址代码通常包含三个地址,两个存运算对象,一个存运算结果)

常用:


四元式.jpg
举例: 三元式.jpg

4、表达式及赋值语句的翻译

一套语义翻译: ytyyfx0.jpg
ytyyfx1.jpg ytyyfy2.jpg

注意语义栈与规约同步,状态栈转换斜对角法


ytyyfy3.jpg
最后再进行手写演算

控制语句的翻译

上一篇 下一篇

猜你喜欢

热点阅读