2022年编译原理基本概念 .pdf
《2022年编译原理基本概念 .pdf》由会员分享,可在线阅读,更多相关《2022年编译原理基本概念 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 编译程序编译程序是一种翻译程序,它将高级语言所写的源程序翻译成等价的机器语言或汇编语言的目标程序。2 词法分析(Lexical analysis或 Scanning)和词法分析程序(Lexical analyzer或 Scanner)词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用 lex 等工具自动生成。3 语法分析(Syntax analysis或 Parsing)和语法分析程序(Parser)语法分析是编译过程的一个逻辑
2、阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确.源程序的结构由上下文无关文法描述.4 语义分析(Syntax analysis)及中间代码生成语义分析是编译过程的一个逻辑阶段.语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查,进行类型审查.例如一个 C 程序片断:int arr2,b;b=arr*10;源程序的结构是正确的.语义分析将审查类型并报告错误:不能在表达式中使用一个数组变量,赋值语句的右端和左端的类型不匹配.语义分析时,根据语句的含义,可对它进行翻译,用另一种语言形式(比源
3、语言更接近于目标语言的一种中间代码或直接用目标语言)来描述这种语义。5 代码优化代码优化的任务是对前阶段产生的中间代码进行等价变换或改造,以期获得更为高效的,即省时间和空间的代码。6 目标代码生成目标代码的生成的任务是将中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。7 遍8 前端(Frontend)和后端(Back end)有时,常常把编译的过程分为前端(front end)和后端(back end),前端由那样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。通常这些阶段包括词法分析、语法分析、语义分析和中间代码生成,某些优化工作也可在前端做,也包括与前
4、端每个阶段相关的出错处理工作和符号表管理工作。后端工作指那名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 12 页 -些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。编译程序和解释程序9 Lex一个词法分析程序的自动生成工具。它输入描述构词规则的一系列正规式,然后构建有穷自动机和这个有穷自动机的一个驱动程序,进而生成一个词法分析程序.10Yacc一个语法分析程序的自动生成工具。它接受语言的文法,构造一个LALR(1)分析程序.因为它采用语法制导翻译的思想,还可以接受用C 语言描述的语义动作,从而构造一个编译程序.Yacc
5、 是 Yet another compiler compiler的缩写.11源语言(Source language)和源程序(Source program)被编译程序翻译的程序称为源程序,书写该程序的语言称为源语言.12目标语言(Object language or Target language)和目标程序(Object program or Target program)编译程序翻译源程序而得到的结果程序称为目标程序,书写该程序的语言称为目标语言.13中间语言(中间表示)(Intermediate language(representation))在进行了语法分析和语义分析阶段的工作之后,
6、有的编译程序将源程序变成一种内部表示形式,这种内部表示形式叫做中间语言或中间表示或中间代码。所谓“中间代码”是一种结构简单、含义明确的记号系统,这种记号系统复杂性介于源程序语言和机器语言之间,容易将它翻译成目标代码。另外,还可以在中间代码一级进行与机器无关的优化。常见的中间代码形式有:逆波兰式、三元式、四元式、树形表示和三地址代码。14文法(Grammars)文法是用于描述语言的语法结构的形式规则。文法 G 定义为四元组(VN,V T,P,S)。其中 VN为非终结符号(或语法实体,或变量)集;VT为终结符号集;P 为产生式(也称规则)的集合;产生式(规则)是形如 或 a:=b 的(a,b)有序
7、对,其中(VNVT)*且至少含有一个非终结符,而(VNVT)*。VN,VT和 P是非空有穷集。S 称作识别符号或开始符号,它是一个非终结符,至少要在一条规则中作为左部出现。一个文法的例子:G=(VN=A,R,P=0,1,P=A 0R,A01,RA1,S=A)15文法分类(A hierarchy of Grammars)著名语言学家 Noam Chomsky定义了四类文法和四种形式语言类,文法的四种类型分别是 0 型、1 型、2 型和 3 型。几类文法的差别在于对产生式施加不同的限制,分别是:名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 12 页 -0 型文法(短语结构文法)(p
8、hrase structure grammars):设 G=(VN,VT,P,S),如果它的每个产生式 是这样一种结构(VNV T)*且至少含有一个非终结符,而(VNV T)*,则 G 是一个 0 型文法。1 型文法(上下文有关文法)(context-sensitive grammars):设 G=(VN,V T,P,S)为一文法|,若 P中的每一个产生式 均满足|,仅仅 S除外,则文法 G 是 1 型或上下文有关的。2 型文法(上下文无关文法)(context-free grammars):设 G=(VN,V T,P,S),若 P 中的每一个产生式 满足:是一非终结符,(VNV T)*则此文
9、法称为 2 型的或上下文无关的。3 型文法(正规文法)(regular grammars):设 G=(VN,V T,P,S),若 P 中的每一个产生式的形式都是AaB 或 Aa,其中 A 和 B 都是非终结符,a是终结符,则 G 是 3 型文法或正规文法。0 型文法产生的语言称为0 型语言。1 型文法产生的语言称为1 型语言,也称作上下文有关语言。2 型文法产生的语言称为2 型语言,也称作上下文无关语言。3 型文法产生的语言称为3 型语言,也称作正规语言。16句型(Sententialform),句子(Sentence)和语言(Language)设 GS是一文法,如果符号串x 是从识别符号推导
10、出来的,即有Sx,则称 x 是文法 GS的句型。若 x 仅由终结符号组成,即Sx,xV T*,则称 x为 GS的句子。文法 G 所产生的语言定义为集合 xSx,其中 S为文法识别符号,且 xV T*。可用 L(G)或 L(GS)表示该集合。17推导(Derive)和语法树(Parse tree)推导的概念:分别定义V*中的符号之间的关系 直接推导、长度为 n(n1)的推导和长度为 n(n0)的推导:(1)如是文法 G=(VN,V T,P,S)的规则(或说是P中的一个产生式),和是 V*中的任意符号,若有符号串v,w 满足:v,w则说 v(应用规则)直接产生 w,或说,w 是 v 的直接推导,或
11、说,w 直接归约到 v,记做 vw。(2)如果存在直接推导的序列:vw0w1w2wnw,(n0)名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 12 页 -则称 v 推导出(产生)w(推导长度为 n),或称 w 归约到 v。记作 vw。(3)若有 vw,或 vw,则记作。语法树(推导树)的概念:给定文法G=(VN,V T,P,S),对于 G 的任何句型都能构造与之关联的语法树(推导树)。这棵树满足下列 4 个条件:每个结点都有一个标记,此标记是V 的一个符号。根的标记是 S。若一个结点 n 至少有一个它自己除外的子孙,并且有标记A,则 A 肯定在 VN中。如果结点 n 的直接子孙
12、,从左到右的次序是结点n1,n2,nk,其标记分别为 A1,A2,Ak,那么 AA1A2,Ak一定是 P 中的一个产生式。18二义文法(Ambiguous grammer)如果一个文法存在某个句子对应两棵不同的语法树,则说这个文法是二义的。或者说,若一个文法中存在某个句子,它有两个不同的最左(最右)推导,则这个文法是二义的。19 短语,句柄(phrase,sentence handle)令 G 是一文法,S 是文法的开始符号,是文法 G 的一个句型。如果有:且则称是句型相对与非终结符A 的短语。特别,如有则称是句型 相对于规则 A的直接短语(也称简单短语)。一个句型的最左直接短语称为该句型的句
13、柄。20 正规式(regular expression)和它所表示的正规集(regular set)设字母表为,辅助字母表 =,,.,*,(,)。1.和都是上的正规式,它们所表示的正规集分别为 和;2.任何 a,a 是上的一个正规式,它所表示的正规集为a;3.假定1和2都是上的正规式,它们所表示的正规集分别为L(1)和 L(2),那么,(1),12,1 2和2*也都是正规式,它们所表示的正规集分别为 L(1),L(1)L(2),L(1)L(2)和(L(1)*。4.仅由有限次使用上述三步骤而定义的表达式才是上的正规式,仅由这些正规式所表示的字集才是 上的正规集。21 确定的有穷状态自动机DFA(
14、deterministic finite automaton)和不确定的有穷状态自动机 NFA(nondeterministic finite automaton)我们这里是把 DFA 和 NFA 作为正规集的识别工具而介绍的。DFA 定义如下:一个确定的有穷自动机(DFA)M 是一个五元组:M=(K,,f,S,Z)其中名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 12 页 -1.K 是一个有穷集,它的每个元素称为一个状态;2.是一个有穷字母表,它的每个元素称为一个输入字符,所以也称 为输入符号字母表;3.f 是转换函数,是在KK 上的映像,即,如f(ki,a)=kj(kiK,
15、kjK)就意味着,当前状态为ki,输入字符为a 时,将转换到下一状态kj,我们把 kj称作ki的一个后继状态;4.SK 是唯一的一个初态;5.ZK,是一个终态集,终态也称可接受状态或结束状态。NFA 定义如下;一个不确定的有穷自动机(NFA)M 是一个五元组,M=(K,,f,S,Z)其中1.K 是一个有穷集,它的每个元素称为一个状态;2.是一个有穷字母表,它的每个元素称为一个输入字符;3.f 是一个从 K*到 K 的子集的映像.4.SK,是一个非空初态集;5.ZK,是一个终态集。DFA 和 NFA 的等价定理:对于每个NFA M,存在一个 DFA M ,使得 L(M)L(M ),即 M 和 M
16、 是等价的。22 最小状态 DFA(reduced DFA or minimum DFA)我们说一个确定的有穷自动机是化简了的,即是说,它没有多余状态并且它的状态中没有两个是互相等价的,这种 DFA 也叫做最小状态 DFA。一个 DFA 可以通过消除多余状态和合并等价状态而转换成一个与之等价的最小状态DFA。24FIRST 集设 G=(VN,V T,P,S)是上下文无关文法FIRST()=a,aV T,,V*若,则规定FIRST()。25FOLLOW 集设 G=(VN,V T,P,S)是上下文无关文法,AVN,是开始符号FOLLOW(A)=a且 aV T,aFIRST(),V T*,V+若,且
17、,则#FOLLOW(A)。也可定义为:FOLLOW(A)=a|Aa,aV T 若有A,则规定#FOLLOW(A)这里我们用 作为输入串的结束符,或称为句子括号,如:输入串。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 12 页 -26SELECT 集给定上下文无关文法的产生式A AVN,V*,若,则SELECT(A )=FIRST()如果,则 SELECT(A )=FIRST()FOLLOW(A)。27左递归文法(Left recursive grammar)一个文法含有下列形式的产生式时。a)AA AVN,V*b)AB B A,BVN,、V*在 a)中也可称为含有左递归的规则
18、或称直接左递归,在b)中为 A称文法中含有左递归或间接左递归,文法中只要含有a)或含有 b)或二者皆有均认为文法是左递归的。28LL(1)文法满足如下条件的上下文无关文法称为LL(1)文法:对每个非终结符A 的两个不同产生式,A,A,满足SELECT(A)SELECT(A)其中、不同时能。LL(1)文法的含义是:第一个 L 表明自顶向下分析是从左向右扫描输入串,第二个 L 表明分析过程中将用最左推导,1 表明只需向右看一个符号便可决定如何推导即选择哪个产生式(规则)进行推导,类似也可以有LL(K)文法,也就是需向前查看 K 个符号才可确定选用哪个产生式。通常采用K1,个别情况采用 K2。29递
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年编译原理基本概念 2022 编译 原理 基本概念
限制150内