编译原理的五个步骤是哪些(通过一句话来简单理解一个程序的编译过程到底是做什么)
编译原理的五个步骤是哪些(通过一句话来简单理解一个程序的编译过程到底是做什么)图2语义处理大概表示为:语法分析程序的任务是将单词符号串分解成各类语法单位,即确定一个程序的结构。语法单位即:短语、句子、子程序、函数、程序等。语义分析是根据程序设计语言的语义定义(形式的或非形式的),确认(识别)程序中各构成组合到一起的含义,并作相应的语义处理。
我们都知道,程序都需要编译以后才能运行,那么,编译过程大概是做什么事情呢?
图1
上图是一个编译过程的简单示意图。
词法分析程序必须按照一定的分类标准将源程序中的单词进行识别并进行预加工处理。
语法分析程序的任务是将单词符号串分解成各类语法单位,即确定一个程序的结构。
语法单位即:短语、句子、子程序、函数、程序等。
语义分析是根据程序设计语言的语义定义(形式的或非形式的),确认(识别)程序中各构成组合到一起的含义,并作相应的语义处理。
语义处理大概表示为:
图2
这是对可执行语句生成中间表示或目标代码。
目标代码指计算机科学中编译器或汇编器处理源代码后所生成的代码,它一般由机器代码或接近于机器语言的代码组成。
下面以一句英语和一段最简单的程序对比来进行说明。
句子:The teacher asked the student to bring the book to her
程序:int i s=0;
for(i=1;i<=100;i )
s =i;
printf("s=%d" s);
对于那句英语,我们首先要检查的就是那句话里面是不是每一个单词都是正确的,检查的方法就是看看那句话里面的单词是不是都属于英语字典里面已有的单词。
对于下面那段程序,同样的要先看看里面的每一个标识符、符号、数字或者函数名是否有错误,这一步在编译中叫词法分析。
词法分析以后就要进行语法分析,对于上面那句英语,我们就要按照语法规则,看看这个句子是否符合主谓宾等语法规定;对于计算机程序,语法分析就是看其中的每一条语句是否符合相关规定,比如x=3 i是符合语法规定的,因为 号和=号的的两边都是数字或者变量。
语法分析以后就是语义分析。对于那句英语来说,就是要分析那句话中包含了什么意思,就是让学生把一本书从某个地方拿到另一个地方。
对于程序来说,它的语义就是要把1到100的和求出来。
为了达成上述目标,在英语句子中的那个学生就必须准备用脚走路,用手拿那本书,也就是说,要为下面真正的动作做好准备。
对于程序来说,要实现加法,比如其中的语句s =i,也就是s=s i 为了真正实现这个加法运算,这个时候就要为s和i两个变量分配好存储空间,然后把这两个变量的值输入到加法器电路的两个输入端,如图2所示,并把加法运算的结果值保留在变量s中。
上述工作都做好了以后,我们知道,计算机最终能够执行的指令只有汇编指令或者机器语言,因此,最后要把上述的高级语言指令转化为汇编指令,也就是机器指令,最后生成可执行程序,这大概就是一个计算机程序的整个编译过程。
简单说来,编译过程就是
1:词法分析
2:语法分析
3:语义分析
4:生成目标代码