最全的编译原理知识点--完美总结
编译原理知识点范文
编译原理知识点范文编译原理是计算机科学中的一门重要课程,它研究的是将高级语言程序转化为机器语言程序的过程。
编译原理主要包括词法分析、语法分析、语义分析、中间代码生成和目标代码生成等几个核心知识点。
一、词法分析词法分析是编译器的第一个阶段,它将输入的字符序列转换为有意义的单词序列。
词法分析器通过扫描输入字符的方式,识别并生成词法单元(Token),例如关键字、标识符、常量、运算符等。
具体的词法分析技术有有限自动机、正则表达式、状态图等。
二、语法分析语法分析是编译器的第二个阶段,它根据词法分析器生成的词法单元序列,分析语言的结构,并构造语法分析树。
语法分析树由各种语法规则组成,其中每个节点代表一个语法规则。
常用的语法分析算法有递归下降法、LL(1)分析法、LR分析法等。
三、语义分析语义分析是编译器的第三个阶段,它对语法树进行静态语义检查,并生成中间代码。
语义分析是一个比较复杂的过程,主要涉及类型检查、作用域分析、常量折叠、类型推导、中间代码生成等。
语义分析是编译原理中最核心的知识点之一四、中间代码生成中间代码生成是编译器的第四个阶段,它将经过语义分析的语法树转化为中间表示形式,以便进一步进行优化和目标代码生成。
中间代码的形式有很多种,常见的有三地址码、四元式、抽象语法树等。
中间代码生成的过程主要包括表达式的转换、控制流语句的转换等。
五、目标代码生成目标代码生成是编译器的最后一个阶段,它将中间代码转换为机器代码。
目标代码生成是编译原理中最复杂、也是最底层的知识点之一、目标代码生成涉及到寄存器分配、指令选择、指令调度、代码填充、代码优化等技术。
常见的目标代码形式有汇编代码、机器代码等。
六、优化优化是编译过程中非常重要的一个环节,它的目标是对生成的中间代码或目标代码进行优化,以提高程序的效率和性能。
常见的编译优化技术包括常量传播、公共子表达式消除、循环优化、函数内联等。
编译器的优化水平对程序的运行效率有着直接的影响。
编译原理部分知识点
编译原理部分知识点①编译程序的工作过程一般划分为5个阶段:词法分析,语法分析,语义分析与中间代码生成,优化,目标代码生成【还有表格管理还有出错管理】②编译器常用的语法分析方法两种。
自顶向下,自下而上分析方法。
LR方法(自下而上),LL(1)属于什么方法(自上而下)、算符优先分析法(自下而上)③概念:句子(仅含终结符号的句型是一个句子)、最左素短语(语法树中最左边的素短语为最左素短语)、句柄、(一个句型的最左直接短语)二义:(如果一个文法存在某个句子对应两颗不同的语法树,则称这个文法是二义的)正规文法(左线性文法和右线性文法统称为正规文法)④程序语言的单词符号分为5种(关键字、标识符、常数、运算符、界符)⑤属性通常分为两类(综合属性)(继承属性)⑥LR分析器的实质是一个后进先出确定有限状态自动机。
⑦常用的参数传递方式(传地址),(传值),(传名)(传结果)⑧一个LL(1)文法一定是无二义的。
⑨解释程序、编译处理语言时的特点(源语言程序作为输入,但不产生目标程序,而是边解释边执行源程序本身。
①边解释边执行②有利于程序的调试③ 1次运算)⑩语法分析器作用(按文法的产生式,识别输入符号串是否为一个句子)⑪任何算符优先文法与优先函数的关系(任何算符优先文法可能有若干个优先函数,不一定存在优先函数)⑫确定有限自动机的化简是要实现目的(寻找一个状态数比M少的DFA M’,使得L(M)=L(M’))⑬间接三元式表示法的优点为(采用间接码表,节省三元式空间,便于优化处理)⑭词法分析器任务(从左到右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序)2、设文法G(S)S→(T)|aT→T+S | S计算FIRSTVT和LASTVT;构造优先关系表。
(1) FIRSTVT(S)={a, ( }FIRSTVT(T)={+, a a, (}LASTVT(S)={a, ) }LASTVT(T)={+, a, )}(2)a + ( )a .> .>+ <. .> <. .>( <. <. <. =.) .> .> >.3、设文法G(S):S→( T ) | aS | aT→T, S | S消除左递归和提取公因子;构造相应的FIRST和FOLLOW集合;构造预测分析表。
(完整word版)计算机编译原理名词解释_总结版
2.二义性文法:如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义性文法。
5.最左推导:任何一步α=>β都是对α中的最右非终结符替换。
6.语法:一组规则,用它可形成和产生一组合式的程序。
7.文法:描述语言的语法结构的形式规则。
8.基本块:指程序中一顺序执行的语句序列,其中只有一个入口和一个出口,入口就是其中的第一个语句,出口就是其中的最后一个语句。
10.短语:令G 是一个文法,S 划文法的开始符号,假定αβδ是文法G 的一个句型,如果有S αAδ且A β,则称β是句型αβδ相对非终结符A 的短语。
12.规范句型:由规范推导所得到的句型。
13.扫描器:执行词法分析的程序。
15.句柄:一个句型的最左直接短语。
16.语法制导翻译:在语法分析过程中,根据每个产生式所对应的语义程序进行翻译的方法 叫做语法制导翻译。
18.素短语:素短语是指这样一个短语,至少含有一个终结符,并且,除它自身外不再含任何更小的素短语。
20.语义:定义程序的意义的一组规则。
三种级别:局部优化、循环优化、全局优化21.词法分析词法分析的主要任务是从左向右扫描每行源程序的符号,按照词法规则从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位,并转换成统一的内部表示(token),送给语法分析程序。
23.语法树句子的树结构表示法称为语法树(语法分析树或语法推导树)。
给定文法G=(V N ,V T ,P ,S),对于G 的任何句型都能构造与之关联的语法树。
这棵树具有下列特征:(1)根节点的标记是开始符号S 。
(2)每个节点的标记都是V 中的一个符号。
(3)若一棵子树的根节点为A ,且其所有直接子孙的标记从左向右的排列次序为A 1A 2…A R ,那么A →A 1A 2…A R 一定是P 中的一条产生式。
(4)若一标记为A 的节点至少有一个除它以外的子孙,则A ∈V N 。
(5)若树的所有叶节点上的标记从左到右排列为字符串w ,则w 是文法G 的句型;若w 中仅含终结符号,则w 为文法G 所产生的句子。
编译原理知识点总结
编译原理知识点总结编译原理是计算机科学中的一个重要领域,它研究的是将高级程序语言转化为可执行目标代码的原理和方法。
在软件开发过程中,编译器起着至关重要的作用,因此了解编译原理的知识点对于理解和优化程序的性能至关重要。
1. 词法分析:词法分析是编译器的第一步,它将源代码划分为一个个的词法单元,如关键字、标识符、运算符等。
词法分析器通过正则表达式和有限自动机来实现,可以有效地将源代码转化为词法单元流。
2. 语法分析:语法分析是编译器的第二步,它通过语法规则将词法单元流转化为抽象语法树(AST)。
语法分析器使用上下文无关文法来描述语言的语法结构,并通过LL(1)分析、LR(1)分析等算法来构建抽象语法树。
3. 语义分析:语义分析是编译器的第三步,它对抽象语法树进行语义检查和类型推断。
语义分析器会检查变量的作用域、类型是否匹配等语义错误,并生成中间代码或目标代码。
4. 中间代码生成:中间代码生成是编译器的一项重要任务,它将抽象语法树转化为中间表示形式,如三地址码、四地址码等。
中间代码是一种抽象的低级语言,便于后续的优化和目标代码生成。
5. 代码优化:代码优化是编译器的关键环节,它通过对中间代码进行分析和优化,提高程序的执行效率和资源利用率。
常见的代码优化技术包括常量折叠、循环优化、函数内联等。
6. 目标代码生成:目标代码生成是编译器的最后一步,它将中间代码转化为目标机器代码。
目标代码生成器根据目标机器的特性和指令集,生成可执行的目标代码。
7. 符号表管理:符号表是编译器中用于管理变量、函数等符号信息的数据结构。
符号表包含了符号的名称、类型、作用域等信息,编译器在词法分析、语法分析和语义分析阶段使用符号表进行符号的查找和管理。
8. 错误处理:错误处理是编译器中一个重要的组成部分,它负责检测和报告源代码中的错误。
编译器需要能够准确地定位错误的位置,并给出有意义的错误信息,帮助程序员快速定位和修复错误。
编译原理涉及的知识点非常广泛,上述仅是其中的一部分。
编译原理资料汇总精选全文完整版
可编辑修改精选全文完整版第一章1.翻译,是指在计算机中放置一个能由计算机直接执行的翻译程序,它以某一种程序设计语言(源语言)所编写的程序(源程序)作为翻译或加工的对象,当计算机翻译程序时,就将它翻译为与之等价的另一种语言(目标语言)的程序(目标程序)。
2.编译程序与运行系统合称为编译系统。
3.源程序的编译(或汇编)和目标程序的执行不一定在同一种计算机上完成。
当源程序由另一种计算机进行编译(或汇编)时,我们将此种编译(或汇编)称为交叉编译(或汇编)。
4.解释程序也以源程序作为它的输入,它与编译程序的主要区别是在解释程序的执行过程中不产生目标程序,而是解释执行源程序本身。
5.编译程序的主要功能是把用高级语言编写的源程序翻译为等价的目标程序。
6.编译程序的8个组成部分:(1)词法分析程序(也称扫描器)(2)语法分析程序(3)语义分析程序(4)中间代码分析程序(5)代码优化程序(6)目标代码生成程序(7)错误检查和处理程序(8)信息表格的管理程序7.编译程序的逻辑结构:(八个组成部分间的控制流程和信息流程)源程序->(1)词法分析程序->(2)语法分析程序->(3)语义分析程序->(4)中间代码生成->(5)代码优化程序->(6)目标代码生成->目标代码和以上1 2 3 4 5 6 相关联的还有(7)错误检查和处理程序和(8)信息表管理程序。
8.用形如(Class,V alue)的序偶(二元式)作为一个单词的内部表示。
Class表示单词的类别,Value是单词的值。
9.语法分析程序以词法分析程序所输出的用内部编码格式表示的单词序列作为输入,其任务是分析源程序的结构,判别他是否为相应程序设计语言中的一个合法程序。
10.前后文无关文法CFG11.常见的中间代码形式:逆波兰表示、三元式、四元式、树形结构12.目标代码生成程序以语义分析(或优化处理)所产生的中间代码作为输入,其功能是根据前面各阶段对源程序进行分析和加工所得到的有关信息,将中间代码翻译为机器语言或汇编语言形式的目标程序。
编译原理要点整理
编译原理要点整理//红色字体标注的是重点中的重点,大题的归宿第一章引论1.翻译器,编译器的定义2.编译器工作步骤和流程3.编译器前端后端的概念,理解为什么要有前端后端4.“遍”的概念第二章词法分析1.词法分析器的定义2.词法分析器所要完成的任务3.记号,模式,词法单元概念区分4.串的运算(和,连接,指数,闭包,正闭包)5.正规定义6.转换图(注意开始状态和结束状态以及需要将指针回退的状态)7.不确定的有限自动机(NFA)定义8.确定的有限自动机(DFA)定义9.从正规式到NFA(明确通过正规式如何构造连接运算,和运算,闭包运算的NFA)10.此方法产生的NFA的性质11.从NFA到DFA(子集构造法)12.DFA的化简(合并不可区别状态)13.从语言描述直接到DFA14.了解Lex学完本章:能语言描述改写成正规定义,能将正规定义转化为语言描述,给出一个正规式,能转换成相应的NFA,DFA并化简。
第三章语法分析1.上下文无关文法定义2.区分句子和句型3.最左推导&& 最右推导4.分析树5.文法二义性6.消除左递归&& 提左因子7.了解语言鸟瞰(0型文法:短语文法;1型文法:上下文有关文法;2型文法:上下文无关文法;3型文法:正规式)8.FIRST集合&& FOLLOW集合定义及计算方法9.LL(1)文法定义10.了解自上而下的递归下降的预测分析11.自上而下非递归的预测分析(详细明确预测分析器接受某一输入串时的具体过程,明确栈如何变化,输入输出如何变化)12.预测分析表的构造13.句柄的概念14.自下而上的分析方法:用栈实现移近-归约分析(详细明确预测分析器接受某一输入串时的具体过程,明确栈如何变化,输入输出如何变化)15.LR文法和LR分析算法16.构造SLR分析表(从文法构造识别活前缀的DFA(LR(0)项目集规范族),从DFA构造SLR分析表)17.构造规范的LR分析表(从文法构造识别活前缀的DFA(LR(1)项目集规范族),从DFA构造规范的LR分析表)18.构造LALR分析表(从文法构造识别活前缀的DFA(合并同心的LR(1)项目集),从DFA构造规范的LR分析表)(合并同心项目集可能会引起归约-归约冲突,不会引起新的移进-归约冲突)学完本章:能计算FIRST集合和FOLLOW集合;给定一个文法,能判断是否是LL(1)文法,并为其构造分析表;能构造LR(1)文法的三种预测分析表;明确移近归约分析中的每一个步骤,明确栈如何变化。
《编译原理》重点知识总结
《编译原理》知识点总结目录第一章引论第二章高级语言及其语法描述第三章语法分析——自上而下分析第四章属性文法和语法制导翻译第五章语义分析和中间代码产生第六章优化第一章引论一.编译程序(compiler):把某一种高级语言程序等价地转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序二.编译程序的工作的五个阶段:词法分析、语法分析、中间代码产生、优化、目标代码产生1.词法分析任务: 输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词符号。
依循的原则:构词规则描述工具:有限自动机FOR I := 1 TO 100 DO保留字标识符等符整常数保留字整常数保留字2.语法分析任务:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位。
依循的原则:语法规则述工具:上下文无关文法3.语义分析与中间代码产生任务:对各类不同语法范畴按语言的语义进行初步翻译。
(变量是否定义、类型是否正确等)依循的原则:语义规则中间代码:三元式,四元式,逆波兰记号,树形结构等。
是一种独立于具体硬件的记号系统。
例:将Z:=X + 0.618 * Y 翻译成四元式为(1) * 0.618 Y T1(2) + X T1 T2(3) := T2 _ Z4. 优化任务:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码。
依循的原则:程序的等价变换规则FOR K:=1 TO 100 DOBEGINM := I + 10 * K;N := J + 10 * K;END4.目标代码产生任务: 把中间代码变换成特定机器上的目标代码。
依赖于硬件系统结构和机器指令的含义目标代码三种形式:a)绝对指令代码: 可直接运行b)可重新定位指令代码: 需要连接装配c)汇编指令代码: 需要进行汇编第二章高级语言及其语法描述2.1.1语法词法规则:单词符号的形成规则。
a)单词符号是语言中具有独立意义的最基本结构。
编译原理知识点
编译原理知识点(总7页) -CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除1.解释程序:不生成目标代码编译程序:生成目标代码2.编译程序组成:8个分析< 前端 >:(词法分析程序、语法分析程序、语义分析程序、中间代码生成程序)综合< 后端 >:(代码优化程序、目标代码生成程序)贯穿始末:表格管理程序、出错处理程序3.文法四元组:终结符号集合Vt 、非终结符号集合Vn、产生式集合P、识别符号(开始符号)SV T∩V N=Φ文法 -> 语言(推导、规约)唯一;语言 -> 文法(凑规则)不唯一。
4.文法分类:0型文法(短语结构文法):左侧至少含有一个非终结符1型文法(上下文有关文法):左侧长度 <= 右侧长度 S->ε除外, S不能出现在右侧2型文法(上下文无关文法):左侧只能有一个非终结符 ( 语法分析 )3型文法(正规文法):A-> aB A->a 右线性; ( 词法分析 )A->Ba 或A->a 左线性(看非终结符位置)5.A*= A0 ∪A+ A0 ={ε} != { } =Φ空集A+ = AA* = A*A6.句型:符号串x是从识别符号S推导出来的,x称为一个句型句子:x仅由终结符号组成,仅含终结符号的句型是一个句子短语:子树的末端(叶子)从左至右连成的串(包括整棵语法树)简单子树:只含有单层分枝的子树直接短语( 简单短语 ):由简单子树的叶子组成句柄:最左边的直接短语(不一定含终结符)素短语:至少含有一个终结符的短语,并且除它自身之外不再含任何更小的素短语最左素短语:最左边的素短语短语:P(相对于T、E)、 P+T(相对于E)、i(相对于P、F)、P+T+i(相对于E)直接短语:P、i 句柄:P (最左边的直接短语)素短语:P+T 、i (至少含有一个终结符的短语)最左素短语:P+T7.二义性文法:有两个不同的最左推导或有两个不同的最右推导或能产生两棵语法树8.文法产生式正规式规则1 A xB B y A = xy规则2 A xA|y A = x*y 右线性A Ax|y A = yx* 左线性规则3 A x A y A = x|y9.DFA 初态唯一,转换函数为单值映射表示方式:转移矩阵、状态转换图状态转换图上若存在一条从初态到某一终态的道路,且这条路上所有弧的标记符连成的字符串为t,则称t被DFA接受。
编译原理复习汇总
复习汇总一、第一章概述1.文法与自动机的等价1)0型文法—图灵机2)1型文法—线性有界非确定图灵机3)2型文法—非确定下推自动机4)3型文法—有限状态自动机2.编译技术的应用1)语法制导的结构化编辑器2)程序格式化工具3)软件测试工具4)程序理解工具5)高级语言的翻译工具6)等等3.从面向机器的语言到面向人类的语言(结合第二章第9小点理解)1)面向机器的语言:机器指令,汇编语言2)面向人类的语言:通用程序设计语言,数据查询语言,形式化描述语言(正规式,产生式)等等。
4.各语言的分类(结合第二章第9小点理解)1)过程式语言,面向对象语言:通用程序设计语言。
2)函数语言:面向特点领域的,递归特性。
例如LISP语言3)说明性,非算法式语言:LEX/YACC,SQL。
4)脚本式语言:Shell语言5.语言之间的转换(李静PPT41)1)高级语言之间的转换一般称为预处理或转换。
2)高级语言翻译成汇编语言或机器语言称之为编译。
3)把汇编语言翻译成机器语言称之为汇编。
4)将一个汇编语言程序汇编为可在另一台机器上运行的机器指令称之为交叉汇编。
5)把机器语言翻译成汇编语言称之为反汇编。
6)把汇编语言翻译成高级语言称之为反编译。
6.编译器和解释器1)编译器●源程序的翻译和翻译后的程序的运行是两个不同的阶段。
◆编译阶段:用户输入源程序,经过编译器的处理,生成目标程序。
◆目标程序的运行阶段:根据要求输入数据,得出结果。
2)解释器(凡是可以采用编译器的地方均可以采用解释器)●解释器把翻译和运行结合到一起,编译一段源程序,紧接着就执行它。
这种方式称为解释。
7.解释器的优点(对比与编译器)1)具有较好的动态特性。
2)具有较好的移植特性。
8.解释器的缺点(对比于编译器)1)相比于编译器需花费大量的时间。
2)占用更多的内存空间。
9.编译器的工作阶段(结合第二章6小点红色部分理解)1)源程序->词法分析器->语法分析器->语义分析器->中间代码生成器->代码优化器->目标代码生成器->目标代码2)工作过程中的每个阶段均采用了符号表管理器,出错处理器。
编译原理知识点汇集
1、名词:解释器/解释程序interpreter ;编译器/编译程序compiler ;翻译器/翻译程序translator 。
三者的区别与联系。
虚拟机(如 JAVA 虚拟机JVM 、Tiny 语言虚拟机)是哪种程 序?(1)解释器(也称为解析程序) 则是只在执行程序时,才一条一条的解释成机器语言给计算 机来执行,所以运行速度是不如编译后的程序运行的快的•(2) 编译器(也称为编译程序)是把源程序的每一条语句都编译成机器语言,并保存成二进 制文件,这样运行时计算机可以直接以机器语言来运行此程序 ,速度很快;(3) 翻译器(也称为翻译程序)是一种系统程序,它将计算机编程语言编写的程序翻译成另 外一种计算机语言的一般来说等价的程序,主要包括编译程序和解释程序,汇编程序也被认 为是翻译程序。
程序的最初形式称为源程序或者源代码,翻译后的形式被称为目标程序或者 目标代码。
大多数翻译程序是将高级语言编写的程序翻译为机器语言形式的可执行程序。
但 是也有些翻译程序将源程序翻译成其他高级语言或者字节码等中间形式。
(4) 解释器翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立的目标程 序。
解释器是另外种形式的语言处理器,它相当于不生成上面的目标程序,直接将输入 放到”源 程序中,然后经过解释器,就得到了输出。
通常情况下,编译过程比解释过程更快,但解释 器能够有更好的错误诊断,因为解释器是逐句进行解释的。
编 .0译器和解释器可以结合起来 进行处理,Java 语言处理器就是其中的代表,其过程是源程序经过翻译器处理后得到中间程 序,也被称作字节码(bytecode ),然后和输入共同加入到虚拟机(virtual machine )的前 端,得到输出,其前一部分用到编译器,后一部分用到解释器,这样做的好处是一个机器解 释的代码可以应用在另外的机器上,甚至可以延伸到网络上。
2、编译过程图示P5图1-1编译的过程文字表符号表 错误处理器 分析第3早: 1、Chomsky 语言文法分类,程序语言的语法是哪一类,词法是哪一类,其产生式有什么特 点。
最全的编译原理知识点--完美总结
不容易掌握。 38.实现扩充语言编译程序的方式有: 直接法:直接接受扩充式语言,并按语言的语义规则处理。 间接法:接受串行源程序(或带并行指示标志的串行源程序),并行编译程序对源程序进 行并行性检查,将检测到的并行成分转换成并行语句。或者立即进行并行编译处理。 39.并行粒度是对并行执行任务或者事务大小的度量。 分为作业级,用户级,程序级,指令级(语 句级)。作业级粒度最大,指令级粒度最小。并行编译程序应该选择适当的并行粒度。 40.加速比 Sp 可认为是应用程序在单处理机上串行执行时间 Ts 和 p 个处理器并行执行的时 间 Tp 之比,即 Sp=Ts/Tp。分析比较并行编译程序所生成的目标程序的执行速度是可用此 指标。 41.并行硬件上实现神经模型和连接机制模型途径: 用大量的专门的神经元器件连接成特定的模型。用通用并行计算机支持各种连接模型。 第二章 1. 字母表:字母表是元素的非空有穷集合。字母表中的元素称为符号。 2. 符号串:符号的有穷序列成为符号串。什么符号也不包含的符号称为空符号串。符号串 中符号的个数称为符号的长度。 3. 符号串相等 若 xy 是集合上的两个符号串。且符号串的每个元素和元素的位置均相等时 符号串相等。 4. 符号串的正闭包:A+ 为集合 A 上所有符号串的集合。 5. 符号串的自反闭包:A* 自反闭包不包含 A 本身 A+=AA*=A*A 6. 文法: 文法是对语言结构的定义与描述。 即从形式上用于描述和规定语言结构的称为 “文 法” (或称为“语法” ) 。对于 we 妇女发 要研究它的句型、句子和语言。 7. 语法规则:我们通过建立一组规则,来描述句子的语法结构。规定用“::=”表示“由„„ 组成”或“定义为„„” 。 8. 产生式的定义;设 VN、 VT 分别是非空有限的非终结符号集和终结符号集, V=VN∪ VT ,VN∩VT=Φ 。 一个产生式是一个有序偶对(α ,β ),其中α ∈V+,β ∈V*,通常表示 为α →β 或α ::=β 。称α 为产生式的左部,称β 为产生式的右部。产生式又称为重写规 则,它意味着能将一个符号串用另一个符号串替换。 9. 文法的定义:文法 G =(VN,VT,P,S) 。VN:非终结符号集。VT:终结符号集。P: 产生式或规则的集合。S:开始符号(识别符号) S∈VN. 10.文法和语言分类 Chomsky 将文法分为四类:0 型、1 型、2 型、3 型。这几类文法的差别 在于对产生式施加不同的限制。 11.0 型文法:P: α ::=β 其中α ∈(VN∪VT)+,β ∈(VN∪VT)* 0 型文法称为短语结构文法。规则的左部和右部都可 以是符号串,一个短语可以产生另一个短语。 0 型语言:L0 这种语言可以用图灵机(Turing)接受。 12.1 型文法: P: γ 1Aγ 2::= γ 1δ γ 2 其中 γ 1,γ 2∈(VN∪VT)*, A∈VN, δ ∈ (VN∪VT)+ 称为上下文有关文法或上下文敏感文法。也即只有在 γ 1,γ 2 这样的上下文中才能把 A 改写为δ 1 型语言:L1 这种语言可以由一种线性界限自动机接受.
编译原理知识点总结
编译原理知识点总结编译原理知识点总结编译原理是大学计算机专业的必修科目,也是计算机的基础知识,学好编译原理,有助于更好的进行编程的操作,下面是编译原理知识点总结,一起来看看吧!编译原理知识点总结一编译器简单讲,编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。
一个现代编译器的主要工作流程:源代码(source code) → 预处理器(preprocessor) → 编译器(compiler) → 汇编程序 (assembler) → 目标代码(object code) → 链接器(Linker) → 可执行程序(executables)二工作原理编译是从源代码(通常为高阶语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。
然而,也存在从低阶语言到高阶语言的编译器,这类编译器中用来从由高阶语言生成的低阶语言代码重新生成高阶语言代码的又被叫做反编译器。
也有从一种高阶语言生成另一种高阶语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。
典型的编译器输出是由包含入口点的名字和地址,以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。
一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序三编译器的发展史(1) 20世纪50年代IBM的John Backus带领一个研究小组对FORTRAN语言及其编译器进行开发。
但由于当时人们对编译理论了解不多,开发工作变得既复杂又艰苦。
与此同时,Noam Chomsky开始了他对自然语言结构的研究。
他的发现最终使得编译器的结构异常简单,甚至还带有了一些自动化。
Chomsky的`研究导致了根据语言文法的难易程度以及识别它们所需要的算法来对语言分类。
正如现在所称的Chomsky架构(Chomsky Hierarchy),它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法,且其中的每一个都是其前者的特殊情况。
计科1201编译原理整理
计科1201编译原理知识点:1.编译过程:词法分析、语法分析、语义分析及中间代码生成、中间代码优化、目标代码生成。
2.常见的错误分类:词法错误、语法错误、语义错误。
3.文法的四要素:Vn(非终结符集)、Vt(终结符集)、P(产生式集)、S(开始符)。
4.逆波兰式(后缀式)。
5. 最左推导的逆是最右归约,最右推导的逆是最左归约。
规范推导是(最右推导),规范归约是(最左规约)。
6. 优化依据的原则:等价变换。
7. 句柄:最左简单短语;最左归约:每次归约的是句柄。
8. 消除文法二义性的方式:(1、改写文法,2、添加限制条件)。
9. Chomsky文法的分类:0型文法(无限制文法)识别机制是图灵机(TM)、1型文法(上下文有关文法)识别机制是线性界限自动机LBA、2型文法(上下文无关文法)识别机制是下推自动机PDA,是语法分析的文法基础、3型文法(正规文法RG)识别机制是有限状态自动机FA是词法分析的文法基础。
10.由不确定的有限自动机NFA变为确定有限自动机DFA采用的是(子集法)。
11.确定有限自动机DFA化简采用的方法是(最小化)。
12.语法分析方法的分类分为自上而下和自下而上。
自上而下分析法是边推导边分析,而自下而上分析法是边归约边分析。
13.对于同一个句子至少有2棵不同的语法树,该文法必为二义的。
14.┣K 表示自动机做了K步动作;┣* 表示自动机做了0步动作或0步以上动作;┣+ 表示自动机做了1步动作或1步以上动作。
15. 正规文法=右线性文法⊕左线性文法。
16.左线性文法和右线性文法都是3型文法17. 自上而下语法分析可能面对的两个问题:左递归、回溯。
18. 自上而下语法分析方法有:(递归下降法,LL(1)分析法)。
19. 消除直接左递归的方法是:(改成右递归)。
20. 消除间接左递归:先排序,转化为直接左递归。
21. PDA规约过程的4种可能动作:移进(s)、归约(r)、接受(acc)、出错(error)。
编译原理知识点汇总
编译原理的复习提纲1.编译原理=形式语言+编译技术2.汇编程序:把汇编语言程序翻译成等价的机器语言程序3.编译程序:把高级语言程序翻译成等价的低级语言程序4.解释执行方式:解释程序,逐个语句地模拟执行翻译执行方式:翻译程序,把程序设计语言程序翻译成等价的目标程序5.计算机程序的编译过程类似,一般分为五个阶段:词法分析、语法分析、语义分析及中间代码生成、代码优化、目标代码生成词法分析的任务:扫描源程序的字符串,识别出的最小的语法单位(标识符或无正负号数等)语法分析是:在词法分析的基础上的,语法分析不考虑语义。
语法分析读入词法分析程序识别出的符号,根据给定的语法规则,识别出各个语法结构。
语义分析的任务是检查程序语义的正确性,解释程序结构的含义,语义分析包括检查变量是否有定义,变量在使用前是否具有值,数值是否溢出等。
语法分析完成之后,编译程序通常就依据语言的语义规则,利用语法制导技术把源程序翻译成某种中间代码。
所谓中间代码是一种定义明确、便于处理、独立于计算机硬件的记号系统,可以认为是一种抽象机的程序代码优化的主要任务是对前一阶段产生的中间代码进行等价变换,以便产生速度快、空间小的目标代码编译的最后一个阶段是目标代码生成,其主要任务是把中间代码翻译成特定的机器指令或汇编程序编译程序结构包括五个基本功能模块和两个辅助模块6.编译划分成前端和后端。
编译前端的工作包括词法分析、语法分析、语义分析。
编译前端只依赖于源程序,独立于目标计算机。
前端进行分析编译后端的工作主要是目标代码的生成和优化后端进行综合。
独立于源程序,完全依赖于目标机器和中间代码。
把编译程序分为前端和后端的优点是:可以优化配置不同的编译程序组合,实现编译重用,保持语言与机器的独立性。
7.汇编器把汇编语言代码翻译成一个特定的机器指令序列第二章1.符号,字母表,符号串,符号串的长度计算P18,子符号串的含义,符号串的简单运算XY,Xn,2.符号串集合的概念,符号串集合的乘积运算,方幂运算,闭包与正闭包的概念P19,P20A0={ε}3.重写规则,简称规则。
编译原理知识点
第一、二章引论、高级语言及其描述1、用汇编语言或高级语言编写的程序,必须先送入计算机,经过转换成用机器语言表示的目标程序(这个过程叫做编译),才能由计算机执行。
执行转换过程的程序叫做编译程序。
汇编程序是指没有编译过的汇编语言源文件。
编译程序转换过的叫做目标程序,也就是机器语言。
2、编译程序是一种翻译程序3、通常一个编译程序中,不仅包含词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理,其中中间代码生成和代码优化不是每个编译程序都必须的。
4、产生式是用于定义语法成分的一种书写规则。
5、四种类型的文法的主要特点:6、解释程序和编译程序的区别在于是否生成目标程序。
7、中间代码有:逆波兰记号、树形表示、三元式、四元式等形式8、语法制导翻译即可用来产生中间代码,也可以用来产生目标指令,甚至可用来对输入串进行解释执行。
第三章词法分析3.1 确定的有限自动机DFA M是一个五元组M =(S,∑,δ ,S0 ,F )(1) S 是一个非空有限集,它的每个元素称为一个状态(2)∑是一个有穷字母表,它的每个元素称为一个输入符号,所以也称为输入符号字母表(3)δ是状态转换函数,是在S×å→S上的单值映射(4) s0 s0∈S,是唯一的一个初态(5) F F含于S,可空,是一个终态集,终态也称可接受状态或结束状态3.2 一个NFA M是五元式M=(S,S,δ,S0,F)(1)S 有穷非空状态集合(2)∑ 有穷的输入字母表集合(3)δ 从S´∑*到S的子集的映射(4)S0Í 是S的非空子集,称为初始状态集合(5)F Í 是S的子集(可空),称为终止状态集合3.3 DFA与NFA特点比较DFA特点:1. 初态唯一2. 输入字符不包括空符号串3. 有向边上只有一个字符4. 一个状态对某个字符最多只有一条出边NFA特点:1. 初态不唯一2. 输入字符包括空符号串3. 有向边上可以为字符串4. 一个状态对某个字符可能有多条输出边,即状态的后继不唯一3.4 词法分析是基于正则文法进行,即识别的单词是该文法的句子;语法分析基于上下文无关文法进行,即识别的是该类文法的句子。
编译原理概念汇总
编译原理概念汇总一、编译原理概述编译原理是计算机科学中的一个重要分支,主要研究如何将高级语言编写的源代码转换成计算机能够执行的机器码。
这个过程涉及到多个阶段,包括词法分析、语法分析、中间代码生成、优化和目标代码生成等。
二、源代码到目标代码的转换编译过程的核心是将源代码转换成目标代码。
这个过程通常包括词法分析、语法分析、语义分析和生成目标代码等阶段。
词法分析是将源代码分解成一系列的记号,语法分析是将记号组合成语法结构,语义分析是检查这些结构是否有意义,最后生成目标代码是将这些结构转换成机器码。
三、词法分析词法分析是编译过程中的第一个阶段,主要任务是将源代码分解成一个个的记号。
这个过程通常使用词法扫描器或词法器完成,它按照一定的规则将源代码分解成一个个的记号,每个记号代表一个单词或符号。
四、语法分析语法分析是编译过程中的第二个阶段,主要任务是将记号组合成语法结构。
这个过程通常使用语法分析器完成,它按照一定的语法规则将记号组合成语法结构,这些结构代表了源代码的语义。
五、中间代码生成在完成语法分析后,通常会生成中间代码,也称为抽象语法树或中间表示。
这个过程是将语法结构转换成一种更易于处理的表示形式,以便进行后续的优化和目标代码生成。
中间代码生成是编译器设计中一个非常重要的技术,它可以提高编译器的灵活性和可扩展性。
六、优化优化是编译过程中的一个重要阶段,主要任务是对中间代码进行优化,以提高生成的目标代码的执行效率。
这个过程通常包括消除无用代码、简化计算、优化循环结构等操作,以减小目标代码的大小和提高程序的运行效率。
编译器优化技术可以显著提高程序的性能和效率。
七、目标代码生成目标代码生成是编译过程中的最后一个阶段,主要任务是将中间代码转换成机器码或可执行文件。
这个过程通常使用代码生成器完成,它根据中间代码和目标机器的指令集,生成可在特定硬件平台上运行的机器码或可执行文件。
目标代码生成的目标是生成高效、低耗的机器码,同时保证程序的正确性和可维护性。
编译原理重点
编译原理重点第一章1.编译原理所讨论的问题,就是如何把符合人类思维方式的、用文字描述的意愿(源程序)翻译成计算机能够理解和执行的形式(目标程序)。
具体实现从源程序到目标程序转换的程序,被称为编译程序或编译器。
2. 用符号表示的指令被称为汇编指令。
3.汇编指令的集合被称为汇编语言。
4.由汇编语言编写的指令序列被称为汇编语言程序。
5.通用程序设计语言是继汇编语言之后发展起来的应用最广的一类语言。
6.语言分为三个层次:高级语言、汇编语言、机器语言。
高级语言之间的翻译被称为转换或者预处理;高级语言可以直接翻译成机器语言,也可以直接翻译成汇编语言,这两个翻译过程被称为编译;从汇编语言到机器语言的翻译称为汇编;把机器语言翻译成汇编语言或者把汇编语言翻译成高级语言,分别称它们为反汇编和反编译。
7.公认为最早的编译器是50年代末研制的FORTRAN编译器。
8.解释器与编译器的主要区别:运行目标程序时的控制权在解释器而不在目标程序。
9.通用程序设计语言的典型特征之一是抽象,其抽象程度是以程序设计语言所支持的基本结构为特征的,可以大致划分为三种形式:过程、模块(抽象数据类型、ADT)和类。
10.编译器的工作阶段:符号表管理器(词法分析器、语法分析器、语义分析器、中间代码生成器、代码优化器、目标代码生成器)出错处理器。
11. 编译器从左到右扫描输入该语句,首先进行的是此法分析。
词法分析器的输入是源程序,输出的是识别出的记号流。
12.语法分析器以词法分析器返回的记号流为输入构造句子的结构,并以树的形式表示出来,称之为语法树。
13.语义分析器根据语法分析器够早的语法树,进行适当的语义处理。
对于声明语句,进行符号表的查填。
14.编译器生成的目标程序代码的多种形式:汇编语言形式、可重定位二进制代码形式、内存形式。
15.我们把每个阶段将程序完全扫描一遍的工作模式称为一遍扫描。
第二章1.组成语句的基本单元也可根据其在句子中的作用分类,最基本的分类有四类:关键字(保留字)、标示符、字面量、特殊符号。
《编译原理》重点知识总结
《编译原理》重点知识总结一、编译器的基本概念1.编译器的定义:编译器是一种将高级语言程序转换为低级语言程序的软件工具。
2.编译器的主要任务:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等。
二、词法分析1. 词法分析的任务:将源程序的字符序列转换为有意义的词法单元(token)序列。
2.词法单元的分类:关键字、标识符、运算符、界限符等。
3.词法分析器的实现方法:有限状态自动机(DFA)、正则表达式、词法规则等。
三、语法分析1.语法分析的任务:根据语法规则,将词法单元序列转换为抽象语法树(AST)。
2.语法分析器的实现方法:上下文无关文法(CFG)、递归下降分析、LL(1)分析器、LR分析器等。
四、语义分析1.语义分析的任务:对抽象语法树进行静态语义检查,确定语法结构的含义和约束。
2.语义分析的主要内容:类型检查、作用域分析、常量折叠、中间代码生成等。
五、中间代码生成1.中间代码的定义:介于源程序和目标代码之间的一种抽象表示形式,可以是三地址代码、四元式、虚拟机代码等。
2.中间代码生成的方法:递归下降、语法制导翻译、语法制导的翻译方案等。
六、代码优化1.代码优化的目的:提高程序的执行效率和资源利用率,减小目标代码的体积。
2.常见的代码优化技术:常量传播、代码移动、循环优化、函数内联等。
七、目标代码生成1.目标代码的定义:能够被底层硬件直接执行的机器指令。
2.目标代码生成的方法:模板匹配、基本块划分、寄存器分配等。
八、词法分析器和语法分析器的生成工具1. Flex:用于生成词法分析器的工具。
2. Bison:用于生成语法分析器的工具。
3. Lex:Flex的前身,用于生成词法分析器。
4. Yacc:Bison的前身,用于生成语法分析器。
九、常用的编程语言1. 静态类型语言:C、C++、Java、C#等。
2. 动态类型语言:Python、JavaScript、Ruby等。
3. 函数式编程语言:Lisp、Haskell、Erlang等。
编译原理---总结59页文档
1、合法而稳定的权力在使用得当时很 少遇到 抵抗。 ——塞 ·约翰 逊 2、权力会使人渐渐失去温厚善良的美 德。— —伯克
3、最大限度地行使权力总是令人反感 ;权力 不易确 定之处 始终存 在着危 险。— —塞·约翰逊 4、权力会奴化一切。——塔西佗
5、虽然权力是一头固执的熊,可是金 子可以 拉着它 的鼻子 走。— —莎士 比
6、最大的骄傲于最大的自卑都表示心灵的最软弱无力。——斯宾诺莎 7、自知之明是最难得的知识。——西班牙 8、勇气通往天堂,怯懦通往地狱。——塞内加 9、有时候读书是一种巧妙地避开思考的方法。——赫尔普斯 10、阅读一切好书如同和过去最杰出
编译原理知识总结
简答题:1、翻译和编译程序的区别翻译程序是把一种语言翻译成另一种语言,而编译程序是把高级语言翻译成低级语言,即把源程序翻译成目标程序2、算符优先分析和简单优先分析的相同和不同点算符优先分析:分析思想:自底向上,移进规约思想何时移进:当前栈顶的符号优先性小于或等于当前输入符号的优先性时何时归约:当前栈顶的符号优先性大于当前输入符号的优先性时可归约串:当前句型的最左素短语何时结束:当前输入指向句子的结尾,栈中只有起始符号“#”和一个非终结符简单优先分析:分析思想:自底向下,移进规约思想何时移进:当前栈顶的符号优先性小于或等于当前输入符号的优先性时何时归约:当前栈顶的符号优先性大于当前输入符号的优先性时可规约串:当前句型的句柄何时结束:当前输入指向句子的结尾,栈顶为文法的开始符号3、编译过程的6个阶段、8个模块和框架图以及相应功能6阶段:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成8模块:表格管理程序、词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、出错处理程序词法分析:编译过程的第一个阶段,任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词语法分析:第二阶段,在词法分析的基础上将单词序列分解成各类语法短语语义分析:审查源程序有无语义错误,为代码生成阶段收集类型信息中间代码生成:进行语法分析和语义分析阶段工作后,编译程序将源程序变成一种内部表示形式,这种内部表示形式叫做中间语言或中间代码代码优化:对前阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更为高级,省时间、省空间目标代码生成:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码表格管理:编译过程中源程序的各种信息被保留在种种不同的表格里,这些都涉及到构造查找或更新有关表格,需要表格管理的工作出错处理:编译过程中发现源程序有错误,编译程序应报告错误的性质和错误发生的地点,并且将错误造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续编译,有些程序错误能自动校正,这些都是出错处理程序完成还要能画出它们的关系图4、文法的类型及其特征0型文法:设G=(V N,V T,P,S),如果它的每个产生式α—>β是这样一种结构α、βЄ(V∪V T)*且α至少包含一个非终结符。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
令或汇编语言。由中间代码很容易生成目标程序(地址指令序列) 。这部分工作与机器关 系密切 ,所以要根据机器进行。在做这部分工作时(要注意充分利用累加器) ,也可以进 行优化处理。 22.编译程序的自展、移植与自动化:高级语言的自编译性是指可以用这个语言来编写自己 的编译程序。对于具有自编译性的高级语言,可运用自展技术构造其编译程序。即先对语 言的核心部分构造一个小小的编译程序(可用低级语言实现),再以它为工具构造一个能够 编译更多语言成分的较大编译程序,如此扩展下去,最后形成整个编译程序。 23.高级语言的自编译性:是指可以用这个语言来编写自己的编译程序。一个具有自编译性 的高级语言该机其他高级语言的编译程序。 24.编译程序的移植: 将一个机器(宿主机)上的具有自编译性的高级语言编译程序移植到另一 个机器上(目标机)。 25.编译程序的自动化:在编译程序自动化中开发早和应用广泛的是分析程序生成器和语法 分析程序生成器。LEX 是一个有代表的性的词法分析生成器。输入的是正规表达式,输出 的是词法分析器。LEX 的基本思想是由正规表达式构造有穷自动机。YACC 是一种基于 LALR(1)文法的语法分析生成器。 他接受 LALR(1)文法生成一个相应的 LALR(1)分析表以 及一个 LALR(1)分析器,而且 YACC 得语法分析程序可以和扫描器连接。在 YACC 源程 序中除 2 型语言的规则之外,还可以包括一段语义程序指定相应的语义操作(填写,查找符 号表,语义检查,生成语法树,代码生成)。LEX 和 YACC 是关于编译程序前端的生成器。编 译程序后端(代码生成,代码优化)。 26.编译程序编写系统(TWS):将有助于减轻编写翻译程序(编译程序汇编程序解释程序)工作 的任何软件系统或工具包统称为翻译程序编写系统。 包括产生式语言的编译程序和自动分 析算法的改构造程序,以及翻译程序所必须执行的各种基本操作( 建立,查找符号表操作,生 成目标代码,处错处理操作等)。 27.TWS 分为三类: 第一类为自动产生编译程序的“编译程序的编译程序”,只要给出一个高级语言的语法规 则和语义描述这类程序就能自动产生相应语言的编译程序。第二类为面向语法的符号加 工程序。比较通用,例如表达式符号化简,数据格式转换,高级语言之间的相互转换等。当 输入对象可用巴科斯范式 BNF 表示法加以描述时该 TWS 适用。第三类为由可扩充语言 组成的集合。允许程序员用已有的数据类型和语句自定义新的数据类型和语句。 28.规格说明:以某种方式告知计算机所需要的是什么样的程序,要求这一程序干什么。 29.目标语言:是自动程序设计系统用以表示最后生成的程序的语言。 30.问题范围:是指希望生成的程序的应用范围,问题范围与规格说明有关,对系统采用的 方法有很大影响。 31.采用方法:程序转换,知识工程等。 32.串行编译程序:适合于 SISD 结构计算机的编译程序。 33.并行编译程序:适合于 SIMD 和 MIMD 结构计算机,具有并行处理功能的编译程序。 34.并行编译程序的功能:把串行的源程序和尚未充分并行化的并行源程序自动转换成并行 计算机上运行的并行目标程序或它所能接受的并行源程序。 35.并行编译程序的任务:实现对并行语言的翻译,受到并行语言的约束和并行计算机体系 结构以及和操作系统提供的基本手段的限制。 36.并行语言分为扩充式语言和全新设计语言。 37.扩充式语言流行原因: 向上兼容串行语言。用扩充式语言编译程序可以使串行源程序不必修改或者极少的修改 就可以转换成并行程序。 当前全新式并行语言不能够全面的支持并行语言。 兼容性不高,
不容易掌握。 38.实现扩充语言编译程序的方式有: 直接法:直接接受扩充式语言,并按语言的语义规则处理。 间接法:接受串行源程序(或带并行指示标志的串行源程序),并行编译程序对源程序进 行并行性检查,将检测到的并行成分转换成并行语句。或者立即进行并行编译处理。 39.并行粒度是对并行执行任务或者事务大小的度量。 分为作业级,用户级,程序级,指令级(语 句级)。作业级粒度最大,指令级粒度最小。并行编译程序应该选择适当的并行粒度。 40.加速比 Sp 可认为是应用程序在单处理机上串行执行时间 Ts 和 p 个处理器并行执行的时 间 Tp 之比,即 Sp=Ts/Tp。分析比较并行编译程序所生成的目标程序的执行速度是可用此 指标。 41.并行硬件上实现神经模型和连接机制模型途径: 用大量的专门的神经元器件连接成特定的模型。用通用并行计算机支持各种连接模型。 第二章 1. 字母表:字母表是元素的非空有穷集合。字母表中的元素称为符号。 2. 符号串:符号的有穷序列成为符号串。什么符号也不包含的符号称为空符号串。符号串 中符号的个数称为符号的长度。 3. 符号串相等 若 xy 是集合上的两个符号串。且符号串的每个元素和元素的位置均相等时 符号串相等。 4. 符号串的正闭包:A+ 为集合 A 上所有符号串的集合。 5. 符号串的自反闭包:A* 自反闭包不包含 A 本身 A+=AA*=A*A 6. 文法: 文法是对语言结构的定义与描述。 即从形式上用于描述和规定语言结构的称为 “文 法” (或称为“语法” ) 。对于 we 妇女发 要研究它的句型、句子和语言。 7. 语法规则:我们通过建立一组规则,来描述句子的语法结构。规定用“::=”表示“由„„ 组成”或“定义为„„” 。 8. 产生式的定义;设 VN、 VT 分别是非空有限的非终结符号集和终结符号集, V=VN∪ VT ,VN∩VT=Φ 。 一个产生式是一个有序偶对(α ,β ),其中α ∈V+,β ∈V*,通常表示 为α →β 或α ::=β 。称α 为产生式的左部,称β 为产生式的右部。产生式又称为重写规 则,它意味着能将一个符号串用另一个符号串替换。 9. 文法的定义:文法 G =(VN,VT,P,S) 。VN:非终结Байду номын сангаас号集。VT:终结符号集。P: 产生式或规则的集合。S:开始符号(识别符号) S∈VN. 10.文法和语言分类 Chomsky 将文法分为四类:0 型、1 型、2 型、3 型。这几类文法的差别 在于对产生式施加不同的限制。 11.0 型文法:P: α ::=β 其中α ∈(VN∪VT)+,β ∈(VN∪VT)* 0 型文法称为短语结构文法。规则的左部和右部都可 以是符号串,一个短语可以产生另一个短语。 0 型语言:L0 这种语言可以用图灵机(Turing)接受。 12.1 型文法: P: γ 1Aγ 2::= γ 1δ γ 2 其中 γ 1,γ 2∈(VN∪VT)*, A∈VN, δ ∈ (VN∪VT)+ 称为上下文有关文法或上下文敏感文法。也即只有在 γ 1,γ 2 这样的上下文中才能把 A 改写为δ 1 型语言:L1 这种语言可以由一种线性界限自动机接受.
13.2 型文法: P: A::= δ 其中 A∈VN, δ ∈ (VN∪VT)+ 称为上下文无关文法。也即把 A 改写为δ 时,不必考虑上下文。 注意:2 型文法与 BNF 表示相等价。 2 型语言:L2 这种语言可以由下推自动机接受. 14.3 型文法: (右线性) P: A::=a 或 A::=aB 其中 A、B∈VN。a∈VT。 3 型文法称为正则文法。它是对 2 型文法进行进一步限制。 3 型语言:L3 又称正则语言、正则集合这种语言可以由有穷自动机接受. 根据上述分析,L0 L1 L2 L3 0 型文法可以产生 L0、L1、L2、L3,但 2 型文法只能产生 L2,不能产生 L1。 从 0 型文法到 3 型文法,各文法描述语言的能力依次减弱。 15.直接推导 设文法 G=(VN, VT, P, S)(α , β )∈P ,γ ,δ ∈ (VN∪VT)*则称符号串γ β δ 为符号串 γ α δ 应用产生式α ::=β 所得到的直接推导,记为γ α δ =>γ β δ 特别有,当γ =δ =ε 时,有α =>β 即每个产生式得右部都是它左部的直接推导。 16.最左直接推导 在 xUy=》xuy 直接推导中,若 x 属于 Vt*,U 属于 Vn,即 U 是符号串最左非终结符,即 最左直接推导,若每一步都是最左直接推导,称为最左推导。 17.最右直接推导 在 xUy=》xuy 直接推导中,若 y 属于 Vt*,U 属于 Vn,即 U 是符号串最右非终结符,即最 右直接推导,若每一步都是最右直接推导(规范直接推导) ,称为最右推导(规范推导) 。 18.句型: S 是文法 G 的识别符号,若 S*=>u,则称 u 为文法 G 的句型。S 也是。 19.句子: S 是文法 G 的识别符号,若 S*=>u,u 属于 Vt*,则 U 为文法 G 的句子。 20.语言: S 是文法 G 的识别符号,G 语言 L(G)={u|S*=>u,u 属于 V*t},即文法的语言是文 法所有句子构成的集合。 21.语法树:句子结构的图示表示法,它是一种有向图,由结点和有向边组成。 (1) :树中每个结点都有一个标记,该标记是 Vn 并上 Vt 并上空中的一个符号。 (2) :树的根节结标记是文法的标志符号 S (3) : 若书的一个节点至少有一个叶子结点, 则该结点的标记一点是一个非终结 22 二义性:若对于一个文法的某一句子存在两棵不同的语法树,则该文法是二义性文法, 否则是无二义性文法。 (包含二义性的句子) 23.无用非终结符号:如果文法的某个非终结符不出现的任何一个句型中,并且不能从它推 导出非终结号串,则称该非终结符称为无用非终结符号。 24.不可达文法符号: 如果一个非终结符不出现在 we 妇女发的任何一条产生式的右部, 则称 该非终结符为不可达文法符号。 25. 自上而下分析方法:从文法的识别符号出发,看是否能推导出待检查的符号串,如果能 推导出这个符号串,则表明此符号串是该文法的一个句型或句子,否则便不是。或者说, 以文法的识别符号作为根节点,看其是否能构造一个语法树,而且此语法树所有叶子节 点从左到右所构成的符号串恰好是待检查的符号串。如果能生成这样的语法树,则表明 待检查的符号串是该文法的一个句型或句子,否则便不是。