编译原理笔记【第八章 语义分析】

文章目录

  • 第一节 语义分析概述
    • 1.1 语义分析的任务
    • 1.2 语义分析和语法分析
    • 1.3 语义值
    • 1.4 语义动作和语义子程序
    • 1.5 翻译
    • 1.6 三地址码
  • 第二节 说明语句的翻译
    • 2.1 例子
    • 2.2 语法规则
    • 2.3 语义分析目标
    • 2.4 语义子程序
    • 2.5 语法分析过程
    • 2.6 语义分析过程
  • 第三节 赋值语句的翻译
    • 3.1 语法规则
    • 3.2 语义分析目标
    • 3.3 语义子程序
    • 3.4 语法分析过程
    • 3.5 语义分析过程
  • 第四节 goto语句的翻译
    • 4.1 语法规则
    • 4.2 语义分析目标
    • 4.3 语义子程序
    • 4.4 语法分析过程
    • 4.5 语义分析过程
  • 第五节 if语句的翻译
    • 5.1 语法规则
    • 5.2 语义分析目标
    • 5.3 语义子程序
    • 5.4 语法分析过程
    • 5.5 语义分析过程
    • 5.6 if-else语句
  • 第六节 while语句的翻译
    • 6.1 语法规则
    • 6.2 语义分析目标
    • 6.3 语义子程序
    • 6.4 语义分析过程
  • 第七节 for语句的翻译
    • 7.1 语法规则
    • 7.2 语义分析目标
    • 7.3 语义子程序
    • 7.4 语义分析过程
  • 第八节 函数的翻译
    • 8.1 语法规则
    • 8.2 语义分析目标
    • 8.3 语义子程序
    • 8.4 语义分析过程
    • 第九节 函数的调用
    • 9.1 语法规则
    • 9.2 语义分析目标
    • 9.3 语义子程序
    • 9.4 语义分析过程

第一节 语义分析概述

1.1 语义分析的任务

语义检查
一致性检查(数据类型是否一致、操作是否合法)
越界检查(数组维数是否正确、下标是否越界)

语义处理
说明语句的翻译(相关信息登记到符号表中)
执行语句的翻译(生成等价的中间代码)

1.2 语义分析和语法分析

语法分析只能判断一个句子是否合法,不能给出句子的含义。
句子的含义是通过语义分析提现出来的。

编译原理笔记【第八章 语义分析】_第1张图片

编译原理笔记【第八章 语义分析】_第2张图片

1.3 语义值

编译原理笔记【第八章 语义分析】_第3张图片

1.4 语义动作和语义子程序

编译原理笔记【第八章 语义分析】_第4张图片
编译原理笔记【第八章 语义分析】_第5张图片

1.5 翻译

编译原理笔记【第八章 语义分析】_第6张图片

编译原理笔记【第八章 语义分析】_第7张图片
编译原理笔记【第八章 语义分析】_第8张图片

1.6 三地址码

一种中间代码

编译原理笔记【第八章 语义分析】_第9张图片
实例

编译原理笔记【第八章 语义分析】_第10张图片
编译原理笔记【第八章 语义分析】_第11张图片
编译原理笔记【第八章 语义分析】_第12张图片
编译原理笔记【第八章 语义分析】_第13张图片

第二节 说明语句的翻译

即变量说明语句

2.1 例子

int a, b;
float f1, f2;

2.2 语法规则

编译原理笔记【第八章 语义分析】_第14张图片

2.3 语义分析目标

编译原理笔记【第八章 语义分析】_第15张图片

2.4 语义子程序

编译原理笔记【第八章 语义分析】_第16张图片

2.5 语法分析过程

编译原理笔记【第八章 语义分析】_第17张图片

2.6 语义分析过程

编译原理笔记【第八章 语义分析】_第18张图片
编译原理笔记【第八章 语义分析】_第19张图片
编译原理笔记【第八章 语义分析】_第20张图片
编译原理笔记【第八章 语义分析】_第21张图片

第三节 赋值语句的翻译

3.1 语法规则

编译原理笔记【第八章 语义分析】_第22张图片

3.2 语义分析目标

编译原理笔记【第八章 语义分析】_第23张图片

3.3 语义子程序

编译原理笔记【第八章 语义分析】_第24张图片
编译原理笔记【第八章 语义分析】_第25张图片
在这里插入图片描述

3.4 语法分析过程

编译原理笔记【第八章 语义分析】_第26张图片

3.5 语义分析过程

编译原理笔记【第八章 语义分析】_第27张图片
编译原理笔记【第八章 语义分析】_第28张图片
编译原理笔记【第八章 语义分析】_第29张图片
编译原理笔记【第八章 语义分析】_第30张图片
编译原理笔记【第八章 语义分析】_第31张图片

第四节 goto语句的翻译

4.1 语法规则

编译原理笔记【第八章 语义分析】_第32张图片

4.2 语义分析目标

编译原理笔记【第八章 语义分析】_第33张图片

4.3 语义子程序

编译原理笔记【第八章 语义分析】_第34张图片

4.4 语法分析过程

编译原理笔记【第八章 语义分析】_第35张图片

4.5 语义分析过程

编译原理笔记【第八章 语义分析】_第36张图片
编译原理笔记【第八章 语义分析】_第37张图片

第五节 if语句的翻译

5.1 语法规则

编译原理笔记【第八章 语义分析】_第38张图片

5.2 语义分析目标

编译原理笔记【第八章 语义分析】_第39张图片

5.3 语义子程序

编译原理笔记【第八章 语义分析】_第40张图片

5.4 语法分析过程

编译原理笔记【第八章 语义分析】_第41张图片

编译原理笔记【第八章 语义分析】_第42张图片

5.5 语义分析过程

编译原理笔记【第八章 语义分析】_第43张图片
编译原理笔记【第八章 语义分析】_第44张图片
编译原理笔记【第八章 语义分析】_第45张图片

编译原理笔记【第八章 语义分析】_第46张图片

编译原理笔记【第八章 语义分析】_第47张图片

5.6 if-else语句

  1. 语法规则
    编译原理笔记【第八章 语义分析】_第48张图片

  2. 语义分析目标
    编译原理笔记【第八章 语义分析】_第49张图片

  3. 语义子程序
    编译原理笔记【第八章 语义分析】_第50张图片
    编译原理笔记【第八章 语义分析】_第51张图片

  4. 语义分析过程
    编译原理笔记【第八章 语义分析】_第52张图片

编译原理笔记【第八章 语义分析】_第53张图片

编译原理笔记【第八章 语义分析】_第54张图片

第六节 while语句的翻译

6.1 语法规则

编译原理笔记【第八章 语义分析】_第55张图片

6.2 语义分析目标

编译原理笔记【第八章 语义分析】_第56张图片

6.3 语义子程序

编译原理笔记【第八章 语义分析】_第57张图片

编译原理笔记【第八章 语义分析】_第58张图片

6.4 语义分析过程

编译原理笔记【第八章 语义分析】_第59张图片

编译原理笔记【第八章 语义分析】_第60张图片

第七节 for语句的翻译

7.1 语法规则

编译原理笔记【第八章 语义分析】_第61张图片

7.2 语义分析目标

编译原理笔记【第八章 语义分析】_第62张图片

7.3 语义子程序

编译原理笔记【第八章 语义分析】_第63张图片

编译原理笔记【第八章 语义分析】_第64张图片

7.4 语义分析过程

编译原理笔记【第八章 语义分析】_第65张图片

编译原理笔记【第八章 语义分析】_第66张图片

编译原理笔记【第八章 语义分析】_第67张图片

编译原理笔记【第八章 语义分析】_第68张图片

编译原理笔记【第八章 语义分析】_第69张图片

第八节 函数的翻译

8.1 语法规则

编译原理笔记【第八章 语义分析】_第70张图片

8.2 语义分析目标

编译原理笔记【第八章 语义分析】_第71张图片

8.3 语义子程序

编译原理笔记【第八章 语义分析】_第72张图片

编译原理笔记【第八章 语义分析】_第73张图片编译原理笔记【第八章 语义分析】_第74张图片

8.4 语义分析过程

编译原理笔记【第八章 语义分析】_第75张图片
编译原理笔记【第八章 语义分析】_第76张图片
编译原理笔记【第八章 语义分析】_第77张图片

编译原理笔记【第八章 语义分析】_第78张图片
编译原理笔记【第八章 语义分析】_第79张图片

第九节 函数的调用

9.1 语法规则

编译原理笔记【第八章 语义分析】_第80张图片

9.2 语义分析目标

编译原理笔记【第八章 语义分析】_第81张图片

9.3 语义子程序

编译原理笔记【第八章 语义分析】_第82张图片
编译原理笔记【第八章 语义分析】_第83张图片

9.4 语义分析过程

在这里插入图片描述

编译原理笔记【第八章 语义分析】_第84张图片编译原理笔记【第八章 语义分析】_第85张图片

编译原理笔记【第八章 语义分析】_第86张图片

你可能感兴趣的:(编译原理)