编译原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章概述
1、编译程序:是现代计算机的基本组成部分之一。是一种翻译程序,它将高级语言所写的
源程序翻译成等价的机器语言或汇编语言的目标程序。
2、编译程序的五个阶段:(表格管理程序和错误处理程序涉及到编译程序的每个阶段)
(1)词法分析:词法分析阶段的任务是对构成源程序的字符串从左到右进行扫描和分解,根据语言的词法规则,识别出一个一个具有独立意义的单词。
(2)语法分析:语法分析的任务根据语法规则(即语言的文法),分析并识别出各种语法单位(如表达式、说明、语句等)并进行语法检查,即检查各种语法单位在语法结构上的正确性。
(3)语义分析及中间代码生成:定义一种语言除要求定义语法外,还要求定义其语义,即对语言的各种语法单位赋予具体的意义。
(4)代码优化:代码优化的任务是对前阶段产生的中间代码进行等价变换或改造,以期获得更为高效的,即省时间和空间的目标代码。
(5)目标代码生成:目标代码生成的任务是将中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。
3、自动构造工具:LEX、YACC、GCC
第二章文法和语言的基本知识
1、字母表:是元素的非空有穷集合。
符号(字符):字母表中的元素称为符号,或称为字符。
符号串(字):符号的有穷序列称为符号串。
不包含任何符号的符号串,称为空符号串,用ε表示。
A的正闭包表示A上元素a,b构成的所有符号串的集合,集合A的闭包比正闭包多含一个空符号串ε。
2、形式语言:序列的集合称为形式语言。每个形式语言都是某个字母按某种规则构成的所
有符号串的集合,反之,任何一个字母表上符号串的集合均可定义为一个形式语言。3、规则:也称产生式,它是一个符号与另一个符号串的有序对(A,β),通常写作A→β或
A::=β。一组规则规定了一个语言的语法结构。
4、文法是规则的非空有穷集合,通常表示成四元组G=(V N,V T,P,S)。其中:
V N是规则中非终结符号的集合。
V T是规则中终结符号的集合。V N∩V T=Ф。通常用V表示V N∪V T,称为文法G的字汇表P是文法规则的集合
S是一个非终结符号,称为文法的开始符号或文法的识别符号。
对于一个给定的语言,描述该语言的文法不是唯一的。
5、直接推导:=>
推导:α0=>(+)αn,表示从α0出发,经一步或若干步或使用若干次规则可推导出αn 广义推导:α0=>(*)αn,表示从α0出发,经0步或若干步,可推导出αn
直接推导的长度为1,推导的长度大于等于1,而广义推导的长度大于等于0.
6、语言:文法G[S]产生的所有句子的集合称为文法G所定义的语言,记为L(G[S])。
7、当文法给定时,语言也就确定;L(G)是V T*的子集,即属于V T*的符号串x不一定属于L(G)。
8、已知文法确定语言的中心思想是:从文法的开始符号出发,反复连续地使用规则,对非
终结符号施行替换和展开,找出句子的规律,用式子或自然语言描述出来。
9、(1)给定一个文法,就能从结构上唯一地确定其语言
(2)给定一种语言,能确定其文法,但这种文法不是唯一的。
10. 最右推导也称为规范推导,用规范推导推导出的句型称为规范句型。
规范推导的逆过程,称为最左规约,也称为规范规约。
11. 递归规则:是指在规则的左部和右部具有相同非终结符的规则(规则左递归、规则右递归、规则递归)
文法的递归性:指对文法中任一非终结符,若能建立一个推导过程,在推导所得的符号串中又出现了该非终结符本身,则文法是递归性的。(文法左递归、文法右递归、文法递归)12. 短语:子树的末端节点形成的符号串是相对于子树根的短语。
直接短语:简单子树的末端结点形成的符号串是相对于简单子树根的直接短语。
句柄:最左简单子树的末端节点形成的符号串是句柄。
13. 文法的二义性:如果一个文法存在某个句子对应两棵不同的语法树。则说这个文法是二义性的。或者说,若一个文法中存在某个句子,它有两个不同的最左(最右)推导,则这个文法是二义性的。
14. 消除文法的二义性
(1)不改变文法中原有的语法规则,仅加进一些语法的非形式规定。
(2)构造一个等价的无二义性文法,即把排除二义性的规则合并到原有文法中,改写原有的文法。
15. 文法和语言的分类:0型文法(无限制文法),1型文法(上下文有关文法),2型文法(上下文无关文法),3型文法(正规文法)。
第三章词法分析与有穷自动机
1、单词符号是程序语言的基本语法单位,分为5种:关键字、标识符、常数、运算符、界符。
(关键字、运算符、界符的个数有上限;标识符、常数个数无上限)
2、语法分析程序所输出单词符号通常表示成如下的二元式:(单词种别,单词自身的值)
3、对任意一个正规文法,存在定义同一语言的正规式;反之,对每个正规式存在一个生成
同一语言的正规文法。
4、正规文法到正规式的转换:(1)将正规文法中的每个非终结符表示成关于它的一个正规
式方程,获得一个连立方程组;(2)依照求解规则:若x=ax|β(或x= ax+β),则解为x=a*β;若x=xa|β(或x= xa+β),则解为x=βa*.
5、不确定的有穷自动机NFA和确定的有穷自动机DFA区别:DFA没有输入空串之上的转换
动作;对于DFA,一个特定的符号输入,有且只能得到一个状态,而NFA就有可能得到一个状态集。
6、化简了的DFA满足:没有多余状态;它的状态集中,没有两个状态是互相等价的。
第四章语法分析
1、非确定的自上而下分析法,即带回溯的自上而下分析法,实际上是一种琼剧的额试探方
法,其分析效率极地,代价很高,在实用的编译程序中是不常用的。
2、确定的自上而下分析法,要求描述语言的文法是无左递归的和无回溯的。
3、文法左递归的消除:
(1)引进一个新的非终结符,把含左递归的规则改写成右递归。
一般情况下,设文法中关于A的规则为A→Aα1|Aα2|…|Aαm|β1|β2|…|
βn;其中每个α都不等于ε,而每个β都不以A开头,消除直接左递归后改写
成:A→β1A’|β2A’|…|βnA’ ; A’→α1A’|α2A’|…|αmA’|ε(2)采用扩充BNF表示法改写含直接左递归的规则。