西电编译原理_总复习
- 格式:ppt
- 大小:691.50 KB
- 文档页数:35
编译原理复习总结⏹题型:填空、选择、简答题、综合题第一章编译器概述复习要点:1、编译程序的总框架,编译程序工作的大致过程。
2、理解一下概念:编译、解释、翻译、编译前端、后端、遍⏹计算机执行用高级语言编写的程序主要有两种途径:解释和编译⏹编译:专指由高级语言转换为低级语言⏹编译和解释的区别:是否产生目标程序⏹编译程序的五个阶段:词法分析、语法分析、语义分析和中间代码生成、优化、目标代码生成⏹此外还包括:表格处理和出错处理第二章词法分析复习要点:1、了解词法分析器的任务2、掌握状态转换图3、正规式:与正规集的转换,判断等价4、有限自动机:NFA确定化、DFA最简化、正规式到DFA的转换⏹词法分析器(扫描器)的任务:从源程序中识别出一个个具有独立含义的最小语法单位。
⏹扫描器的输出格式:二元式序列(单词种别,单词符号的属性值)⏹状态转换图:结点代表状态,用圆圈○表示。
状态之间用箭弧→连结,弧上的标记指明在射出弧的结点状态下可能出现的输入字符初始状态接受状态⏹正规式和有限自动机●正规式和正规集的转换●给出正规式,要求写出相应的NFA、DFA●给出正规集,要求写出相应的NFA、DFA1、正规式和正规集●三种运算:“∣”读为“或”,“∙”读为“连接”“*”读为“闭包”●转换●正规式等价:两个正规式所表示的正规集相同,则称两个正规式等价令Σ是一个有限字母表,则Σ上的正规式及其表示的集合递归定义如下:1. ε和∅都是Σ上正规式,它们表示的正规集为{ε}和∅2. 若a是Σ上的字符,则a是正规式,它表示的正规集为{a}3. 若r和s都是Σ上的正规式,他们表示的正规集记为L(r)和L(s),则(a)r|s是正规式,表示集合L(r)∪L(s),(b)rs是正规式,表示集合L(r)L(s),(c)r*是正规式,表示集合(L(r))*,(d)(r)是正规式,表示的集合仍然是L(r)。
(加括弧改变优先级、结合性)⏹有限自动机1、确定的有限自动机M=(S,Σ,δ,S0,F)其中:1. S —有穷状态集2. Σ—输入字母表3. δ—映射函数(也称状态转换函数) S×Σ→S δ(s,a)=S‟ , S, S‟ ∈S, a∈Σ4. s0 —唯一的初始状态s0 ∈S5. F—终止状态集Z⊆S2、不确定的有限自动机M= (S, Σ,δ,S0, F) 其中:1. S —有限状态集(非终极符集合);2. Σ—输入字母表(终极符集合);3. δ—转换函数S ⨯ (⋃∑{ε}) →P(S),即S ⨯∑*到S的幂集(2S)的一种映射;4. S0 —唯一的初始状态集合(非空)S0∈S5. F—终止状态集合F⊆SDFA是NFA的特例,对于每个NFA M存在一个DFA M”,使L(M)=L(M”)。
编译原理期末总结复习编译原理期末总结复习篇一:一、简答题1.什么是编译程序?答:编译程序是一种将高级语言程序(源程序)翻译成低级语言(目标程序)的程序。
将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。
2.请写出文法的形式定义?答:一个文法G抽象地表示为四元组 G=(Vn,Vt,P,S)–其中Vn表示非终结符号– Vt表示终结符号,Vn∪Vt=V(字母表),Vn∩Vt=φ– S是开始符号,–P是产生式,形如:α→β(α∈V+且至少含有一个非终结符号,β∈V*)3.语法分析阶段的功能是什么?答:在词法分析的基础上,根据语言的语法规则,将单词符号串分解成各类语法短语(例:程序、语句、表达式)。
确定整个输入串是否构成语法上正确的程序。
4.局部优化有哪些常用的技术?答:优化技术1—删除公共子表达式优化技术2—复写传播优化技术3—删除无用代码优化技术4—对程序进行代数恒等变换(降低运算强度)优化技术5—代码外提优化技术6—强度削弱优化技术7—删除归纳变量优化技术简介——对程序进行代数恒等变换(代数简化)优化技术简介——对程序进行代数恒等变换(合并已知量)5.编译过程分哪几个阶段?答:逻辑上分五个阶段:词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成。
每个阶段把源程序从一种表示变换成另一种表示。
6. 什么是文法?答:文法是描述语言的语法结构的形式规则。
是一种工具,它可用于严格定义句子的结构;用有穷的规则刻划无穷的集合;文法是被用来精确而无歧义地描述语言的句子的构成方式;文法描述语言的时候不考虑语言的含义。
7. 语义分析阶段的功能是什么?答:对语法分析所识别出的各类语法范畴分析其含义,进行初步的翻译(翻译成中间代码);并对静态语义进行审查。
8.代码优化须遵循哪些原则?答:等价原则:不改变运行结果有效原则:优化后时间更短,占用空间更少合算原则:应用较低的代价取得较好的优化效果9.词法分析阶段的功能是什么?答:逐个读入源程序字符并按照构词规则切分成一系列单词任务:读入源程序,输出单词符号—滤掉空格,跳过注释、换行符—追踪换行标志,指出源程序出错的行列位置—宏展开,……10.什么是符号表?答:符号表在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类型和特征等相关信息。
编译原理总复习总复习■第1章1、编译程序是⼀种翻译程序,它将⾼级语⾔所写的源程序翻译成等价的机器语⾔或者汇编语⾔的⽬标程序。
2、编译程序是计算机系统中重要的系统软件!3、解释程序与编译程序的主要区别是解释程序在执⾏过程中不产⽣⽬标程序。
4、编译的各个阶段。
答:整个编译过程可以分为5个阶段:词法分析,语法分析,语义分析及中间代码⽣成,代码优化和⽬标代码⽣成。
5、编译程序的结构框图或步骤。
6、遍(趟):是对源程序或源程序的中间结果从头到尾扫描⼀遍,并作有关加⼯处理,⽣成新的中间结果或⽬标程序的过程。
■第2章1、符号串的基本运算。
2、简单的说⽂法由产⽣式组成;产⽣式中的符号分为两类:终结符号和⾮终结符号。
3、推导(最左、最右)、句型、句⼦、短语、句柄4、乔姆斯基层次中:L3 ? L2 ? L1 ? L0■第2章例题已知⽂法G[E]:E→T|E+T|E-TT→F|T*F|T/FF→(E)|i(1)该⽂法的开始符号是什么?(2)请给出该⽂法的终结符号集合VT和⾮终结符号集合VN。
(3)找出句型T+T*F+i的所有短语、直接(简单)短语、句柄。
■第3章1、词法分析程序的输出是单词符号序列。
2、DFA的三种表⽰形式——状态转移图、状态转换表和五元组表⽰(Q, ∑, f, S, Z );3、正规式向DFA的转换:(1)正规式——NFA;(转换原则见下页)(2)NFA——DFA;(3)DFA的最⼩化。
4、DFA向正规式的转换。
正则式向NFA转换的原则:例:构造与正则表达式R=ba(a|b)*等价的状态最少的DFA,并写出该DFA的五元组形式或状态转换表。
■第4章1、语法分析⽅法的各种分类;2、LL(1)分析⽅法。
提⽰:在此算法中注意First集和Follow集的求法。
并且⼀定要注意分析过程中步骤要完整。
(分析步骤见下页总结)例:⽂法:S?a|^|(T) T?T,S|S试判断该⽂法是否是LL(1)⽂法。
习题4:P100 4.3 4.7 4.9■LL(1)分析⽅法相关知识总结1、消除⽂法中的左递归或提取左因⼦;(1)简单直接左递归的消除A →βA’A →Aα| β→A’ →αA’| ε(2)将⽂法G:A→αβ|αγ提取左因⼦。
1》编译程序的框架图与功能块:(1)画出编译程序的总体结构,并简述各部分的主要功能:七个部分(2)编译程序的结构分为几个阶段,各阶段的任务是什么?答编译程序总框架(1)词法分析器,又称扫描器,输入源程序,进行词法分析,输出单词符号。
(2)语法分析器,简称分析器,对单词符号串进行语法分析(根据语法规则进行推导或规约),识别出各类语法单位,最终判断输入串是否构成语法上正确的“程序”。
(3)语义分析与中间代码产生器,按照语义规则对语法分析器归约出(或推导出)的语法单位进行语义分析并把它们翻译成一定形式的中间代码。
(4)优化器,对中间代码进行优化处理。
(5)目标代码生成器,把中间代码翻译成目标程序。
(6)表格管理,登记源程序的各类信息,编译各阶段的进展状况。
(7)出错管理,把错误信息报告给用户。
编译程序的结构分为五个阶段:(1)词法分析.任务是:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),如基本字,标识符,常熟,算符和界符。
(2)。
语法分析,任务是:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴)。
(3)语义分析与中间代码产生。
任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。
(4)优化。
任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。
(5)目标代码生成。
任务是:把中间代码(或优化出理之后)变换成特定机械上的低级语言代码。
2》.重要概念:a. 编译程序:是指能够把源语言程序转换成逻辑上等价的目标语言程序的一个程序。
b. 单词符号:是语言的基本组成成分,是人们理解和编写程序的基本要素,是语言中具有独立意义的最基本结构,它一般包括:基本字、标识符、常数、运算符和界符等c. 中间代码:是一种含义明确,便于处理的记号系统,它通常独立于具体的硬件。
《编译原理》期末复习资料【题1】(此题中第一个空愉入Q可臥省略,V即①可以眷略渝Ia Ib① 1,2,32,3,42,3,5② 2,3,42,3,4,6,7,82,3,5③ 2,3,52,3,42,,3,5,6,7,8④ 2,3,4,6,7,82,3,4,6,7,82,3,5,7,8⑤ 2,3,5,6,7,82,3,4,7,82,3,5,6,7,8⑥ 2,3,5,7,82,3,4,7,82,3,5,6,7,8⑦ 2,3,4,7,82,3,4,6,7,82,3,5,7,8Ia Ib1232431. ( a|b) * (aa|bb) (a|b) *画出状态转换图。
(1)A={1,2,3} , B={4,5,6,7} Aa={2,4} X(2)A={1,3} , B={2} , C={4,5,6,7} Aa={2} B, Ab={3,5} X(3)A={1} , B={2} , C={3},D={4,5,6,7}(单元素可以不用看,必有,古先看D), Ba={4} D , Bb={3} C, Ca={2} Cb={5} C,则有2. ( a*|b* ) b (ba) *的状态转换图。
Ia lb① 1,2,3,42,43,4,5,6,8②2,42,45,6,8③ 3,4,5,6,8---3,4,5,6,7,8④ 5,6,8---7⑤ 3,4,5,6,7,86,83,4,5,6,7,8⑥76,8---⑦6,8---7la lb1232243—54—657567—7—6abA B CB D CC B DD D D新的状态转换图如下:化简:(用终结状态与非终结状态,然后输出状态一致分一类) (1) A={1,2,6} , B={3,4,5,7} Aa={2} X(2)A={1,2} , B={6} , C={3,4,7} , D={5} Cb={5,6} X(只要有一个不属于任何一个集合,就不行) (3) A={1,2} , B={6} , C={3} , D={4,7} , E={5} Ab={3,4} X(4) A={1} , B={2} , C={6} , D={3} , E={4,7} , F={5}Aa={2} B , Ab={3} D , Ba={2} B , Bb={4}正则表达式: a , a | b, ab,(ab) , (a |b) ,a(a|b) , a | a b,a | ab*Ca={7} E , Db={5}F , Eb={6} C , Fa={7}E , Fb={5} Fab A B D B B E C E --- D --- F E--- C FEFb[注意事项]:[知识要点]:a , a, aa, aaa,a a ;a |b(a或b) a,b ;ab(a禾口b) ab ;ab a | ba | b合}a | ab ab的情2aab开始2ac b开躺终结a终结幵始ab开始终结2{a 和若 ab, abab, ababab a |ba a |b a, b, ab,aab, aaab, aaaab a | b a | ba | a ba,b, aab, aabb, baba个(包括 o{a 和a 后跟若 a | ba aaa |ba, ab, abb, abbb,abbbb,个a (包括0的情形)后跟一个 b 构成的符号串集7Vrvb 构成的符号串集合} 状态转换图(有穷状态自动机)是最左边一个字母一定是 a ,其余字母为a 、b 的任意组合,不包括终结【题2】1•求如下简单算术表达式文法G enr中语法变量的FOLLOW集。
《编译原理》总复习-07级第一章编译程序的概述(一)内容本章介绍编译程序在计算机科学中的地位和作用,介绍编译技术的发展历史,讲解编译程序、解释程序的基本概念,概述编译过程,介绍编译程序的逻辑结构和编译程序的组织形式等。
(二)本章重点编译(程序),解释(程序),编译程序的逻辑结构。
(三)本章难点编译程序的生成。
(四)本章考点全部基本概念。
编译程序的逻辑结构。
(五)学习指导引论部分主要是解释什么是编译程序以及编译的总体过程。
因此学习时要对以下几个点进行重点学习:翻译、编译、目标语言和源语言这几个概念的理解;编译的总体过程:词法分析,语法分析、语义分析与中间代码的生成、代码优化、目标代码的生成,以及伴随着整个过程的表格管理与出错处理。
第三章文法和语言课外训练(一)内容本章是编译原理课程的理论基础,主要介绍与课程相关的形式语言的基本概念,包括符号串的基本概念和术语、文法和语言的形式定义、推导与归约、句子和句型、语法分析树和二义性文法等定义、文法和语言的Chomsky分类。
(二)本章重点上下文无关文法,推导,句子和句型,文法生成的语言,语法分析树和二义性文法。
(三)本章难点上下文无关文法,语法分析树,文法的分类。
(四)本章考点上下文无关文法的定义。
符号串的推导。
语法分析树的构造。
(五)学习指导要构造编译程序,就要把源语言用某种方式进行定义和描述。
学习高级语言的语法描述是学习编译原理的基础。
上下文无关文法及语法树是本章学习的重点。
语法与语义的概念;程序的在逻辑上的层次结构;文法的定义,文法是一个四元组:终结符号集,非终结符号集,开始符号、产生式集;与文法相关的概念,字符,正则闭包,积(连接),或,空集,产生式,推导,直接推导,句子,句型,语言,最左推导,最右推导(规范推导);学会用文法来描述语言及通过文法能分析该文法所描述的语言;语法树及二义性的概念、能通过画语法树来分析一个文法描述的语言是否具有二义性;上下文无关文法的定义和正规文法的定义,能判断一个语言的文法是哪一类文法。
编译原理期末复习题(包含上一份N多答案)编译原理复习题一、填空题:1、编译方式与解释方式的根本区别在于(是否生成目标代码)。
2、对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。
3、如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:(编译阶段)和(运行阶段)。
4、如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分成三个阶段:(编译阶段)、(汇编阶段)和(运行阶段)。
5、自顶向下语法分析方法会遇到的主要问题有(回溯)和((左递归带来的)无限循环)。
6、LL(k)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),“k”的含义是(向输入串中查看K个输入符号)。
7、LL(1)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),“1”的含义是(向输入串中查看1个输入符号)。
8、自顶向下语法分析方法的基本思想是:从(识别符号)出发,不断建立(直接推导),试图构造一个推导序列,最终由它推导出与输入符号相同的(符号串)。
9、自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行(直接归约),试图(归约)到文法的(识别符号|开始符号)。
10、LR(0)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“0”的含义是(向貌似句柄的符号串后查看0个输入符号)。
11、LR(1)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。
12、SLR(1)分析法的名字中,“S”的含义是(简单的),“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。