最全的编译原理知识点-完美总结
《编译原理》期末复习资料(完整版)

1.给出语言{a n b n a m b m | n,m≥0}的一个上下文无关文法。
(6分)解:G[S]:S—>ABA—>aAb |εB—>aBb |ε2.给出语言{1 n 0 m 1 m0 n | n,m≥0}的一个上下文无关文法。
解:G[S]:S—>1S0 | AA—>0A1 |ε3.P48 第6题(5)、(6).画语法树6、已知文法G:<表达式>::=<项>|<表达式>+<项><项>::=<因子>|<项>*<因子><因子>::=(<表达式>)|i(5)i+(i+i) (6)i+i*i解:(5)语法树:(6)语法树:4.P48第13题直接短语等13、一个上下文无关文法生成句子abbaa的推导树如下:(3)求直接短语解:直接短语有:a ε bP102例题6.1及其分析.( 后加画语法树)例6.1 设文法G[S]为:(1)S—>aAcBe(2)A—>b(3)A—>Ab(4)B—>d对输入串abbcde#进行分析,检查该符号串是否是G[S]的句子。
步骤符号栈输入符号串动作(1)# abbcde# 移进(2)#a bbcde# 移进(3)#ab bcde# 归约(A—>b)(4)#aA bcde#移进(5)#aAb cde# 归约(A—>Ab)(6)#aA cde# 移进(7)#aAc de# 移进(8)#aAcd e# 归约(B—>d)(9)#aAcB e# 移进(10)#aAcBe # 归约(S—>aAcBe)(11)#S # 接受一、计算分析题(60%)1、正规式→ NFA→ DFA→最简DFAP72第1题(1)、(4);第一题1、构造下列正规式相应的DFA.(1)1(0|1)*101解:先构造NFA0 1S AA A ABAB AC ABAC A ABZABZ AC AB除S,A外,重新命名其他状态,令AB为B、AC为C、ABZ为D,因为D含有Z(NFA的终态),所以0 1S AA A BB C BC A DD C B(4) b((ab)*|bb)*ab解:先构造NFA得到DFA如下所示:P72第4题(a)4、把下图确定化和最小化解:确定化:a b0 01 101 01 11 0、{1},其中A为初态,A,B为终态,因此有:a bA B CB B CC A最小化::初始分划得终态组{A,B},非终态组{C}Π0:{A,B},{C},对终态组进行审查,判断A和B是等价的,故这是最后的划分。
编译原理复习整理(电子科大版)

三种语言涉及的三类人:源语言(设计者),编译语言(实现者),目标语言(使用者)变量:对存储单元的抽象(变量是对一个(或若干个)存储单元的抽象,赋值语句则是修改存储单元内容的抽象。
)。
属性:变量的作用域,变量的生存期,值,类型静态绑定:凡是在编译时能确定的属性,称为静态属性;若绑定在编译时完成,运行时不改变,称为静态绑定。
动态绑定:凡是在运行时才能确定的属性称为动态的。
若绑定在运行时完成,称为动态绑定。
定义:虚拟机是由软件实现的机器。
(实际机器+程序)程序单元:1,程序单元: 程序执行过程中的独立调用单元;2.单元的表示在编译时,单元表示是该单元的源程序。
运行时,单元表示由一个代码段和一个活动记录组成,称为单元实例。
3.活动记录:执行单元所需要的信息,以及该单元的局部变量所绑定的数据对象的存储区。
4.非局部变量:一个程序单元可以引用未被本单元说明而被其它单元说明的变量。
5.引用环境:局部变量+非局部变量。
6.别名:同一单元的引用环境中有两个变量绑定于同一数据对象,称这些变量具有别名。
7.副作用:对绑定于一个非局部变量的对象进行修改时,将产生副作用。
8.程序单元可以递归激活,从而一个单元可以有很多个实例,但代码段相同。
不同的仅仅是活动记录(所以绑定必须是动态的)。
数据类型:数据类型实质上是对存储器中所存储的数据进行的抽象。
它包含了一组值的集合和一组操作。
数据类型的作用1.实现了数据抽象2.使程序员从机器的具体特征中解脱出来3.提高了编程效率聚合的六种方式:笛卡尔积,有限映像,序列,判定或,递归,幂集2.抽象数据类型的定义:满足下述特性的用户定义类型称为抽象数据类型:1.在实现该类型的程序单元中,建立与表示有关的基本操作;2.对使用该类型的程序单元来说,该类型的表示是隐蔽的。
类型等价:若T1和T2是两个类型,且T1的任何值都可以赋予T2类型的变量,T1类型的实参可以对应类型T2的形参,反之亦然,则称T1和T2是相容的,或等价的;有两种类型的相容性概念:①名字等价②结构等价两种相容性实现时的比较①名字等价的实现比较简单②结构等价的实现需要的模式匹配过程可能十分复杂编译时与类型相关的三个重要工作:1.类型检查12.类型转换3.类型等价语句级控制:顺序,选择,重复四种单元级控制结构:显式调用异常处理协同程序并发单元语言的定义:程序设计语言是用来描述计算机所执行的算法的形式表示;语言=语法+语义语法:用以构造程序及其成分的一组规则的集合语义:用以规定语法正确的程序或其成分的含义的一组规则的集合文法定义:文法是描述语言的语法结构的形式规则, 必须准确,易于理解,且描述能力强。
编译原理第三版期末复习

期末复习总结《编译原理》第一章:绪论一、填空问题①由于计算机只能认识机器语言,所以需要翻译程序将高级语言翻译成计算机可以识别的机器语言。
②编译程序的工作过程一般主要划分为词法分析,语法分析,中间代码生成,代码优化,目标代码生成等几个基本阶段,同时还会伴有表格管理和出错处理。
③如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两个阶段:编译阶段和运行阶段。
如果编译程序生成的目标程序是汇编语言的程序,则源程序的执行分为三个阶段:编译阶段,汇编阶段和运行阶段。
1-02.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序 ,则其翻译程序称为编译程序.1-03.编译方式与解释方式的根本区别在于是否生成目标代码 .1-05.对编译程序而言,输入数据是源程序,输出结果是目标程序 .1-10.一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括(1)c.其中, (2)b 和代码优化部分不是每个编译程序都必需的. 词法分析器用于识别 (3)c ,语法分析器则可以发现源程序中的 (4)d .(1) a.模拟执行器 b.解释器 c.表格处理和出错处理 d.符号执行器(2) a.语法分析 b.中间代码生成 c.词法分析 d.目标代码生成(3) a.字符串 b.语句 c.单词 d.标识符(4) a.语义错误 b.语法和语义错误 c.错误并校正 d.语法错误1-11.程序语言的语言处理程序是一种 (1)a . (2)b 是两类程序语言处理程序,他们的主要区别在于 (3)d .(1) a.系统软件 b.应用软件 c.实时系统 d.分布式系统(2) a.高级语言程序和低级语言程序 b.解释程序和编译程序c.编译程序和操作系统d.系统程序和应用程序(3) a.单用户与多用户的差别 b.对用户程序的查错能力c.机器执行效率d.是否生成目标代码1-12.汇编程序是将 a 翻译成 b ,编译程序是将 c 翻译成 d .a.汇编语言程序b.机器语言程序c.高级语言程序d. a 或者 be. a 或者 cf. b 或者 c1-13.下面关于解释程序的描述正确的是 b .(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于COBOL 和 FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的a. (1)(2)b. (1)c. (1)(2)(3)d.(2)(3)1-14.高级语言的语言处理程序分为解释程序和编译程序两种.编译程序有五个阶段,而解释程序通常缺少 (1)e 和 (1)b .其中, (1)e 的目的是使最后阶段产生的目标代码更为高效.与编译系统相比,解释系统 (2)d .解释程序处理语言时,大多数采用的是 (3)b 方法.(1): a. 中间代码生成 b.目标代码生成 c.词法分析 d.语法分析 e.代码优化(2): a.比较简单,可移植性好,执行速度快b.比较复杂,可移植性好,执行速度快c.比较简单,可移植性差,执行速度慢d.比较简单,可移植性好,执行速度慢(3): a.源程序命令被逐个直接解释执行 b.先将源程序转化为之间代码,再解释执行c.先将源程序解释转化为目标程序,在执行d.以上方法都可以1-15.用高级语言编写的程序经编译后产生的程序叫 b .用不同语言编写的程序产生 a 后,可用 g 连接在一起生成机器可执行的程序.在机器中真正执行的是 e .a. 源程序b. 目标程序c. 函数d. 过程e. 机器指令代码f. 模块g. 连接程序h.程序库1-16.要在某一台机器上为某种语言构造一个编译程序,必须掌握下述三方面的内容: c , d , f .a. 汇编语言b. 高级语言c. 源语言d. 目标语言e. 程序设计方法f. 编译方法g. 测试方法h. 机器语言1-17.由于受到具体机器主存容量的限制,编译程序几个不同阶段的工作往往被组合成(1)d ,诸阶段的工作往往是 (2)d 进行的.(1) a. 过程 b. 程序 c. 批量 d.遍(2) a. 顺序 b. 并行 c. 成批 d.穿插1-18.编译程序与具体的机器 a , 与具体的语言 a .a. 有关b.无关1-19.使用解释程序时,在程序未执行完的情况下, a 重新执行已执行过的部分.a. 也能b.不可能1-20.编译过程中,语法分析器的任务就是 b .(1) 分析单词是怎样构成的(2)分析单词串是如何构成语句和说明的(3) 分析语句和说明是如何构成程序的 (4) 分析程序的结构a. (2)(3)b. (2)(3)(4)c. (1)(2)(3)d.(1)(2)(3)(4)1-21.编译程序是一种常用的 b 软件.a. 应用b. 系统1-22.编写一个计算机高级语言的源程序后,到正式上机运行之前,一般要经过 b 这几步.(1) 编辑 (2) 编译 (3) 连接 (4) 运行a. (1)(2)(3)(4)b. (1)(2)(3)c. (1)(3)d.(1)(4)1-23.编译程序必须完成的工作有 a .(1) 词法分析 (2) 语法分析 (3) 语义分析(4) 代码生成 (5) 之间代码生成 (6) 代码优化a. (1)(2)(3)(4)b. (1)(2)(3)(4)(5)c. (1)(2)(3)(4)(5)(6)d. (1)(2)(3)(4)(6)e. (1)(2)(3)(5)(6)1-24.“用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”这种说法a .a. 不正确b.正确1-25.把汇编语言程序翻译成机器可执行的目标程序的工作是由 b 完成的.a. 编译器b. 汇编器c. 解释器d. 预处理器1-26.编译程序生成的目标程序 b 是机器语言的程序.a. 一定b. 不一定1-27.编译程序生成的目标程序 b 是可执行的程序.a. 一定b. 不一定1-28.编译程序是一种 B 。
计算机基础知识点编译原理代码生成

计算机基础知识点编译原理代码生成编译原理是计算机科学中非常重要的一门学科,它研究的是如何将高级语言编写的程序转化为机器可以执行的指令序列。
在编译过程中,代码生成是其中一个关键的步骤。
本文将介绍编译原理中的代码生成基础知识点。
一、代码生成概述代码生成是编译过程中的最后一个阶段,它的任务是将中间表示形式(如抽象语法树或中间代码)转化为目标机器代码,使得程序可以在计算机上运行。
代码生成的目标是产生高效且正确的机器指令序列,以最大程度地利用计算机的硬件资源。
代码生成的过程可以分为以下几个步骤:1. 寄存器分配:将变量和临时值分配到计算机的寄存器中,以便在指令中进行操作。
2. 指令选择:根据中间表示的特点和目标机器的指令集,选择适当的机器指令来实现所需的操作。
3. 指令调度:对指令进行重新排序,以减少指令相关性和提高执行效率。
4. 内存分配:将变量和临时值存储到内存中,以便在需要时可以进行访问。
5. 代码优化:对生成的机器指令进行优化,以减少执行时的开销和资源占用。
二、寄存器分配在代码生成的过程中,寄存器分配是一个非常重要的环节。
寄存器是计算机中的一种高速存储设备,可以用于存储和执行指令操作。
在生成的机器代码中,寄存器通常用于存储临时值和计算结果。
寄存器分配的目标是将变量和临时值存储到寄存器中,并进行相应的寄存器的分配和释放。
常见的寄存器分配算法有线性扫描分配算法、图着色分配算法等。
寄存器分配算法的选择通常取决于目标机器的寄存器数量和寄存器之间的互斥关系。
三、指令选择指令选择是代码生成的关键一环,它的任务是根据中间表示和目标机器的指令集,选择合适的机器指令来实现所需的操作。
指令选择的准则通常是从操作数和操作符的角度考虑,以及考虑目标代码的执行效率和可读性。
指令选择的过程中,需要考虑目标机器的指令格式、寻址方式、寄存器约束等因素。
对于一些特殊的操作,如函数调用、跳转指令等,还需要考虑目标代码的控制流程和程序执行的正确性。
编译原理期末总结复习

编译原理期末总结复习编译原理期末总结复习篇一:一、简答题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. 基本概念在编译原理的第一节课中,老师给我们介绍了编译原理的基本概念。
编译器是将源语言程序翻译成目标语言程序的一种软件。
它包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。
我们学习了编译器的整体结构和各个阶段的作用。
2. 词法分析词法分析是编译器的第一阶段,它负责将源程序分割成一个个单词(Token)。
在本学期的编译原理课程中,我们学习了正则表达式、DFA(Deterministic Finite Automaton)和NFA(Nondeterministic Finite Automaton)的概念。
通过实践,我了解了如何用正则表达式描述词法单元的集合,并将正则表达式转化为NFA和DFA。
3. 语法分析语法分析是编译器的第二阶段,它负责将词法分析得到的单词序列解析成语法树。
在本学期的编译原理课程中,我们学习了上下文无关文法和语法分析算法。
我通过实现LL(1)语法分析器和LR(1)语法分析器,深入理解了语法分析的原理与方法。
4. 语义分析语义分析是编译器的第三阶段,它负责对语法树进行静态检查和语义处理。
在本学期的编译原理课程中,我们学习了符号表的管理和使用、类型检查和类型转换等内容。
通过实践,我掌握了如何设计和实现一个简单的语义分析器。
5. 中间代码生成中间代码生成是编译器的第四阶段,它负责将语法树转化为中间代码。
在本学期的编译原理课程中,我们学习了三地址码和四元式的表示方法,以及中间代码的生成和优化等内容。
编译原理全复习(完整版)

1》编译程序的框架图与功能块:(1)画出编译程序的总体结构,并简述各部分的主要功能:七个部分(2)编译程序的结构分为几个阶段,各阶段的任务是什么?答编译程序总框架(1)词法分析器,又称扫描器,输入源程序,进行词法分析,输出单词符号。
(2)语法分析器,简称分析器,对单词符号串进行语法分析(根据语法规则进行推导或规约),识别出各类语法单位,最终判断输入串是否构成语法上正确的“程序”。
(3)语义分析与中间代码产生器,按照语义规则对语法分析器归约出(或推导出)的语法单位进行语义分析并把它们翻译成一定形式的中间代码。
(4)优化器,对中间代码进行优化处理。
(5)目标代码生成器,把中间代码翻译成目标程序。
(6)表格管理,登记源程序的各类信息,编译各阶段的进展状况。
(7)出错管理,把错误信息报告给用户。
编译程序的结构分为五个阶段:(1)词法分析.任务是:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),如基本字,标识符,常熟,算符和界符。
(2)。
语法分析,任务是:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴)。
(3)语义分析与中间代码产生。
任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。
(4)优化。
任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。
(5)目标代码生成。
任务是:把中间代码(或优化出理之后)变换成特定机械上的低级语言代码。
2》.重要概念:a. 编译程序:是指能够把源语言程序转换成逻辑上等价的目标语言程序的一个程序。
b. 单词符号:是语言的基本组成成分,是人们理解和编写程序的基本要素,是语言中具有独立意义的最基本结构,它一般包括:基本字、标识符、常数、运算符和界符等c. 中间代码:是一种含义明确,便于处理的记号系统,它通常独立于具体的硬件。
编译原理复习汇总

复习汇总一、第一章概述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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章1. 程序设计语言是人与计算机联系的工具,通过程序设计语言指挥计算机按照自己的意志进行运算和操作显示信息和输出运算结果。
2. 最早的计算机程序设计语言是机器语言(指令系统)。
机器语言中的指令都是用二进制代码直接表示的。
3. 机器语言和符号语言以及汇编语言都是低级程序设计语言。
4. 1954年FORTRAN I语言的问世标志计算机高级程序设计语言的诞生。
5. 计算机高级程序设计语言独立于机器,比较接近于自然语言,容易学习掌握,编写程序效率高,编写的程序易读易理解易移植。
6. 翻译程序:将高级语言编写的程序翻译成机器语言。
7. 编译程序的工作过程:编译程序这要功能是将源程序翻译成等价的目标程序,这个翻译过程分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。
8. 编译程序的重要意义在于它使高级语言独立于机器语言,使程序员用高级语言编写程序时不必考虑那些直接与机器有关的琐碎的环节,这些细节由编译程序区处理。
9. 编译程序包括:词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序和目标代码生成程序以及表格处理程序和出错处理程序。
10.编译程序的组织方式:编译过程分为六个阶段,改划分是编译程序的逻辑组织方式。
编译过程分为前端和后端。
前端包括词法分析、语法分析、语义分析、中间代码生成、代码优化。
后端包括目标代码生成,依赖于计算机的硬件系统和机器指令系统。
这种组织方式便于编译程序的移植,如果移植到不同类型的机器上只需修改编译程序的后端即可。
11.翻译方式:编译方式和解释方式。
12.源程序:用高级语言编写的程序。
源程序是编译程序加工的对象。
13.编译方式:先将源程序翻译成汇编语言程序或机器语言程序(目标程序),然后再执行。
这个翻译程序为编译程序.14.编译方式中源程序的编译和目标程序的运行时分成两个阶段完成的。
编译所的目标程序计算机暂时不能执行,必须由连接装配程序将目标程序和编译程序及系统子程序连接成一个可执行程序,这个可执行程序可直接被计算机执行。
例如FORTRAN,ALGOL,PASCAL,C,C++等等。
15.解释方式:对源程序边翻译边执行,按解释方式进行翻译的翻译程序为解释程序。
优点在于便于对源程序调试和修改,加工处理过程慢。
16.解释程序:按解释方式进行翻译的翻译程序.17.词法分析:词法分析是编译过程的基础,任务是扫描源程序,根据语言的词法规则分解和识别出每个单词,并把单词翻译成相应的机内表示。
在识别单词的过程中同时也做词法检查。
18.语法分析:语法分析师在词法分析的基础上进行的。
任务是根据语言的语法规则把单词符号串分解成格内语法单位,如表达式、语句等。
通过语法分析确定整个输入符号串是否构成一个语法正确的程序。
19.语义分析:任务是对源程序进行语义检查,其目的是保证标识符和常数的正确使用,把必要的信息收集保存到符表或中间代码程序中,并进行相应的处理。
20.中间代码生成:是必不可少的阶段,任务是在语法分析和语义分析基础上把语法成分的语义对其继续翻译,翻译的结果是某种中间代码形式,这种中间代码的结果简单,接近计算机的指令形式,能够很容易被翻译成计算机指令,常用的中间代码有三元式,四元式和逆波兰式。
21.目标代码生成:任务:将中间代码或优化之后的中间代码转换为等价的目标代码,即机器指令或汇编语言。
由中间代码很容易生成目标程序(地址指令序列)。
这部分工作与机器关系密切,所以要根据机器进行。
在做这部分工作时(要注意充分利用累加器),也可以进行优化处理。
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*A6. 文法:文法是对语言结构的定义与描述。
即从形式上用于描述和规定语言结构的称为“文法”(或称为“语法”)。
对于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 L30型文法可以产生L0、L1、L2、L3,但2型文法只能产生L2,不能产生L1。
从0型文法到3型文法,各文法描述语言的能力依次减弱。
15.直接推导设文法G=(VN, VT, P, S)(α, β)∈P ,γ,δ∈(VN∪VT)*则称符号串γβδ为符号串γαδ应用产生式α::=β所得到的直接推导,记为γαδ=>γβδ特别有,当γ=δ=ε时,有α=>β即每个产生式得右部都是它左部的直接推导。