编译原理 第一章: 编译概述 重点总结(翻译程序的过程,解释程序,编译程序的结构)

文章目录

  • [编译原理 第一章 编译概述](#编译原理 第一章 编译概述)
    • [1.1 翻译程序](#1.1 翻译程序)
    • [1.2 解释程序](#1.2 解释程序)
    • [1.3 翻译程序的过程](#1.3 翻译程序的过程)
      • [1.3.1 词法分析与语法分析](#1.3.1 词法分析与语法分析)
      • [1.3.2 语义分析](#1.3.2 语义分析)
      • [1.3.3 代码优化](#1.3.3 代码优化)
      • [1.3.4 目标代码生成](#1.3.4 目标代码生成)
      • [1.3.5 符号表管理](#1.3.5 符号表管理)
      • [1.3.6 错误处理](#1.3.6 错误处理)
    • [1.4 编译程序的结构](#1.4 编译程序的结构)
      • [1.4.1 单遍编译程序](#1.4.1 单遍编译程序)
      • [1.4.2 多遍编译程序](#1.4.2 多遍编译程序)
      • [1.4.3 编译程序分遍的优缺点](#1.4.3 编译程序分遍的优缺点)
      • [1.4.4 端的概念](#1.4.4 端的概念)
    • 习题部分

编译原理 第一章 编译概述

1.1 翻译程序

翻译程序扫描输入的源程序,将源程序转换成目标程序。

输入源程序的分为两种,高级语言源程序和汇编语言程序。


表格要记住

在高级语言程序的编译和运行过程中,源程序和数据是在不同时间处理的。

1.2 解释程序

有一种高级语言翻译程序,从源程序的编译到执行只有一个阶段-解释执行阶段,同时处理源程序和数据。这种翻译程序叫解释程序。

解释方式和编译方式的根本区别:不生成目标程序

优点:易于调试

缺点:执行效率低

1.3 翻译程序的过程

翻译程序的过程包括:词法分析,语法分析 语义分析等,注意:代码优化和目标代码生成阶段不是必需的。

1.3.1 词法分析与语法分析

词法分析:输入是源程序 输出是单词流

语法分析:输入是单词流 输出是语法树

词法分析,又称扫描器,根据词法规则分析和识别单词,并表示为机内形式。

语法分析,根据语言规则,分析并识别出各种语法成分(如表达式,语句),并进行语法正确性检查,常用语法树表示结果。

1.3.2 语义分析

语义分析:确定源程序的语义是否正确,注意识别的是部分错误。

语法分析主要能识别的语义错误有:

1.有变量未经声明就使用。

2.变量重复声明。

3.运算对象类型是否匹配。

语义分析程序通常将源程序生成一种中间表示形式,即中间代码,包括三元式,四元式,逆波兰式

1.3.3 代码优化

提高目标程序的执行效率,首先在中间代码上进行。

1.3.4 目标代码生成

目标代码的形式(分为三种):

1.绝对指令代码

2.可重定位的机器指令代码

3.汇编指令代码

1.3.5 符号表管理

符号表用来记录有关标识符的各种信息。

标识符的各种属性是在编译的不同阶段填入符号表。

1.3.6 错误处理

编译的各个阶段都可能发现源程序中的错误,贯穿编译的多个部分。

1.4 编译程序的结构

1.4.1 单遍编译程序

单遍编译程序只对源程序进行一遍扫描。往往以语法分析程序为中心。

单遍编译程序,产生目标代码,但不产生中间代码。

1.4.2 多遍编译程序

多遍编译程序,每遍只完成部分任务。

1.4.3 编译程序分遍的优缺点

编译程序分为多遍的优点如下:

1️⃣可以减少内存容量的需求

2️⃣可使各遍的编译程序相互独立,结构清晰

3️⃣可以编译程序分为"前端"和"后端",有利于编译程序的移植。

1.4.4 端的概念

前端主要与源语言有关,包括词法分析,语法分析 ,语义分析和中间代码生成等等操作。

前端是在分析阶段

后端主要与目标机器有关,包括代码优化,目标代码生成等

后端在综合阶段

"端"的优点:

便于移植和编译程序的构建

习题部分

M种高级语言程序,N类目标机器,编译程序分为前后端和不分情况下,各需多少种编译程序。

不分前后端,M*N

分前后端,M+N

相关推荐
喵~来学编程啦6 小时前
【编译原理】编译原理知识点汇总·词法分析器(正则式到NFA、NFA到DFA、DFA最小化)
学习笔记·编译原理
喵~来学编程啦2 天前
【编译原理】编译原理知识点汇总·概论与文法
学习笔记·编译原理
Trouvaille ~3 个月前
【C++篇】C++类与对象深度解析(六):全面剖析拷贝省略、RVO、NRVO优化策略
c++·c++20·编译原理·编译器·类和对象·rvo·nrvo
无名之逆4 个月前
B树和B+树
javascript·数据结构·b树·算法·编译原理·期末速成
嚯呀怪怪怪4 个月前
从零基础学Go(九)——Go的Goroutine
golang·线程·多线程·并发·编译原理·协程·gorountine
Beginner x_u6 个月前
编译原理 第二章下: 推导,规约,句型句子,语言,文法分类,二义性
编译原理·语言·推导·文法
codists6 个月前
《编译原理》阅读笔记:p19-p24
编译原理
Beginner x_u6 个月前
编译原理 第三章上 :词法分析 状态图的画法与检验
编译原理·词法分析·状态图
codists6 个月前
《编译原理》阅读笔记:p18
编译原理