编译原理第一章
Q7nl1s admin

第一章

一些课后习题。

术语解释:

机器语言:❖ 一般来说,计算机可以直接执行的代码形式的指令系统称为机器语言

汇编语言:❖ 汇编语言就是计算机符号形式的指令系统

高级语言:❖ 常用的高级语言:BASICFORTRANALGOLPASCALCOBOLC

(1)编译程序:

编译程序就是一个语言翻译程序。语言翻译程序把一种语言(源语言)书写的程序翻译成另一种语言(称作目标语言)的等价语言。

(2)源程序:

源语言编写的程序为源程序,一般为用高级语言编写的程序

(3)目标程序:

指用低级语言(机器语言或汇编语言)编写的程序

(4)编译程序的前端

主要由与源语言有关,但与目标机无关的那些部分组成,这些部分通常包括词法分析、语法分析、语义分析与中间代码生成,有的代码优化工作可以包括在前端

(5)后端

包括编译程序中与目标机有关的那部分,如与目标机有关的代码优化和目标代码生产等。后端不依赖于源语言,仅依赖于中间语言。

(6)趟

所谓一趟是指一个编译程序在编译时刻把 源程序 或与之等价的 中间程序 从头到尾扫描一遍,并转换成为紧密相邻的 等价程序的全过程

计算机实现程序设计语言的方法

➢ 第一种方法:对程序进行编译

将一份源程序 从头至尾 翻译成某台计算机上的机器语言,让机器接受,然后执行之,并允许重复执行若干次

image-20230322210211838

“两大阶段”和”三大阶段”

image-20230322211000909

➢ 第二种方法:对程序进行解释

就是对于源程序的一个 语句,把它翻译成相应的机器语言**,** 并让计算机立即执行

三元式的定义及应用

三元式定义为如下形式:**(op, a1, a2)**

对于表达式:a + b * c / d

则有三元式:

(1) ( *, b, c) (2) (/, (1), d) (3) (+, a , (2) )

于是 x : = 2 * a + b 的中间代码形式为:

(1) ( *, 2, a) (2) (+, (1), b) (3) (:=, (2), x)

一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。

image-20230322211327035

词法分析:

从左到右一个一字符读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。

e.g

1
2
3
4
5
Program scr (input,output); 
var s,c,r : real ;
begin s : = 3.14 * sqr(r);
c : = 2 * 3.14 * r;
End.

语法分析:

在词法分析的基础上将单词序列分解成各类语法短语。

分析源程序的结构,* 判别它是否为相应程序设计语言中的一个合法程序*

e.g

image-20230322212734628

语义分析:

审查源程序有无语义错误,为代码生成阶段收集类型信息。

根据语法结构分析其含义,并用某中间语言表示出来,亦就生成中间代码,或者直接生成目标代码

image-20230322213229816

中间代码生成:

有的编译程序将源程序变成一种内部表示形式,这种内部表示形式叫做中间代码生成。

使用中间语言的好处是使编译算法更加清晰,便于优化,还使编译程序的更多部分不依赖于目标机器

代码优化:

对前一阶段的中间代码进行变换或改造,目的是使生成的代码更为高效,即省时间和省空间。

为了提高目标程序的质量而进行的工作。

image-20230322213256057
  • ➢思考:还可以怎么优化?
  • ➢答案:3.14*r

目标代码生成:

是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。

完成从中间代码到目标代码的生成工作。

image-20230322213926750

什么是解释程序?它与编译程序的主要不同是什么?

解释程序也称为解释器,它直接解释执行源程序,或者将源程序翻译成某种中间表示形式后再加以执行;

编译程序(编译器)则是将源程序翻译成目标语言程序,然后在计算机上运行目标程序。

主要不同:解释器翻译源程序时 不生成独立的目标程序,而编译器则将源程序翻译成 独立的目标程序

编译程序与 T 型图

image-20230322214834609

S :编译程序所实现的源语言

T :目标语言

I : 编译程序的实现语言

T-型图的叠加

image-20230322214932022

 Comments
Comment plugin failed to load
Loading comment plugin
Powered by Hexo & Theme Keep
Unique Visitor Page View