编译原理基本知识 下载本文

内容发布更新时间 : 2024/12/26 16:40:42星期一 下面是文章的全部内容请认真阅读。

编译原理基本知识

基本概念

? 程序生成过程

? 源程序

---用汇编语言或高级语言编写的程序称为源程序。

? 目标程序

---用目标语言所表示的程序。可以是介于源语言和机器语言之间的“中间语言”,可以是某种机器的机器语言,也可以是某机器的汇编语言。

? 翻译程序

---将源程序转换为目标程序的程序称为翻译程序。它是指各种语言的翻译器,包括汇编程序和编译程序,是汇编程序、编译程序以及各种变换程序的总称。

? 诊断编译程序 ? 优化编译程序 ? 交叉编译程序 ? 可变目标编译程序

汇编程序:若源程序用汇编语言书写,经过翻译程序得到用机器语言表示的程序,这时的翻译程序就称之为汇编程序,这种翻译过程称为“汇编”(Assemble)。

编译程序:若源程序是用高级语言书写,经加工后得到目标程序,这种翻译过程称“编译”(Compile)。

需预处理的源程序预处理程序 源程序编译程序目标汇编程序汇编程序可再装配的机器代码装配/连接-编辑程序绝对机器代码可再装配目标文件

? 编译器

编译器就是一个程序,它读入用某种语言编写的源程序,并翻译成一个与之等价的另一种语言编写的源程序。

编译过程的基本阶段

编译过程是指将高级语言程序翻译为等价的目标程序的过程。其一般包含5个基本阶段:

? 词法分析

任务:分析和识别单词。

描述:源程序是由字符序列构成的,词法分析扫描源程序(字符串),根据语言的词法规则分析并识别单词,并以某种编码形式输出。

方法:词法分析依照词法规则,识别出正确的单词,转换成统一规格备用。 转换:

—对基本字,运算符,界符的转换 —标识符的转换 —常数的转换

—转换完成后的格式(类号,内码) 工具:正规式和有限自动机 例子1:

X1:= ( 2.0 + 0.8 ) * C1 1 2 3 4 5 6 7 8 9

例子2: Void jisuan( ) {

int y,c,d;

float x,a,b; x=a+b*50; y=c+d*(x+b); }

基本字:Void,int,float 标识符:a,b,c,d,x,y,jisuan 常数:50 运算符:*,+,=,- 界限符:{ } ; , ( ) 例子3:

position = initial + rate * 60

第一步:识别出单词(关键字、标识符、常数、算符和界符)。

position、=、initial、+ 、rate、*、60

第二步:并用记号表示识别出的单词(记号表示逻辑上相关的字符序列,常用整数来表示)。

id1、id2、id3表示position、initial、rate

第三步:输出结果(得到记号流)。

id1=id2+id3*60

? 语法分析

任务:根据语法规则(即语言的文法),分析并识别出各种语法成分,如表达式、各种说明、各种语句、过程、函数等,并进行语法正确性检查。

方法:推导(derive)和归约(reduce)。