编译原理1----编译原理的基本概念

时间:2022-09-25 16:28:01

编译程序:把一种语言(源语言===高级语言)转换成另一种语言(目标语言===低级语言(汇编或者机器语言))的程序。

词法分析:对输入的字符串进行扫描和分解,识别出一个个单词及其类型;(输入是字符串,输出是<单词的种类标示符,单词的值>)

语法分析:对输入的字符串进行语法单位的识别,判断他是一个赋值语句还是一个表达式(输入是程序串,输出是是否是合法的语法单位)

语义分析与中间代码的产生:对输入的程序串进行语法的检查,并且合法的话进行初步的翻译。(输入是语法单位,输出是翻译的初步代码)

优化器:对于初步翻译得到的代码进行再次的扫描和翻译,去掉冗余。(输入是初步的翻译结果,输出是优化后的代码)

目标代码生成器:对于优化后的代码进行再次翻译,生成符合机器的最终代码。(输入是优化后的代码,输出是符合机器的目标代码)

表格和表格管理:每个阶段都会有相应的表格记录各类信息以及编译的进展状况。

出错处理:当编译的过程中有错误出现的时候应当有报错处理,具体的地点,原因,并且使得范围尽量的小,使源程序的其余部分继续执行。

 

遍:就是对源程序或者源程序的中间结果进行从头到尾的扫描依次,并且作出相应的处理,生成新的中间结果或者目标程序。次法分析相当于一遍,语法分析相当于一遍,但是词法、语法可以合为一遍,根据自身的内存情况而定。内存大的时候可以少几遍。因为遍数多了也是会浪费输入输出时间的。

闭包:V^n=VVVVV....V     规定V^0={e}(这里的e就是空的意思)。

V*=V^0UV^1UV^2...(其中V*是V的闭包)相当于你从0到n都被我承包了。

文法:定义一组的规则产生式的集合,如:G:

E->i

E->E+E

E->E*E

E->(E)

称为文法。其中的每一条即为产生式。

一组产生式是一个四元式(VT,VN,S,p),终结符号,非终结符号,开始符号,一组产生式。

句型:由开始符号推导出的一个串是句型,如:s-*>a;a是一个句型,如果a中只含终结符,a为句子。E->E*E中E*E是一个句型,E->i中i也是一个句型,同时也是一个句子。E的所有句子是一个语言。

语法树:句型的推导过程就是一颗语法树。

二义性:是指对于一种推导有多中不同的结果,而不是分别最左推导和最右推导有不同的结果。