编译原理知识点汇总
编译原理知识点
编译原理知识点
1.1 翻译程序的三种方式
1.编译:将高级语言编写的源程序翻译成等价的机器语言或汇编语言。
2.解释:将高级语言编写的源程序翻译一句执行一句,不生成目标文件,直接执行源代码文件。
3.汇编:用汇编语言编写的源程序翻译成与之等价的机器语言。
1.2 编译程序的五个阶段
1.词法分析:对源程序的字符串进行扫描和分解,识别出每个单词符号。
2.语法分析:根据语言的语法规则,把单词符号分解成各类语法单位。
3.语义分析与中间代码生成:对各种语法范畴进行静态语义检查,若正确则进行中间代码翻译。
4.代码优化:遵循程序的等价变换规则。
5.目标代码生成:将中间代码变换成特定机器上的低级语言代码。2.1.1 字母表
1.定义:字母表是有穷非空的符号集合。
2.表示:通常用字母表大写字母A,B,…Z和希腊字母Σ表示。
eg:A={0,1},Σ={a,b,c,d}
3.说明
1)字母表包含了语言中所允许出现的一切符号。
2)字母表中的符号也称字符。
2.1.2 符号串
1.定义:由字母表中的符号组成的有穷序列。
2.表示:通常由t,u,v,w,x,y,z等小写英文字母来表示。
3.说明
1)符号串由构成的符号的种类、数量、顺序共同决定。
2)不包含任何符号的符号串称为空符号串,简称空串,用ε表示。
4.对于给定的字母表Σ,符号串的递归定义如下:
1)ε是Σ上的一个符号串。
2)若x是Σ上的符号串,a是Σ的符号,则xa是Σ上的符号串。并规定
编译原理知识点范文
编译原理知识点范文
编译原理是计算机科学中的一门重要课程,它研究的是将高级语言程序转化为机器语言程序的过程。编译原理主要包括词法分析、语法分析、语义分析、中间代码生成和目标代码生成等几个核心知识点。
一、词法分析
词法分析是编译器的第一个阶段,它将输入的字符序列转换为有意义的单词序列。词法分析器通过扫描输入字符的方式,识别并生成词法单元(Token),例如关键字、标识符、常量、运算符等。具体的词法分析技术有有限自动机、正则表达式、状态图等。
二、语法分析
语法分析是编译器的第二个阶段,它根据词法分析器生成的词法单元序列,分析语言的结构,并构造语法分析树。语法分析树由各种语法规则组成,其中每个节点代表一个语法规则。常用的语法分析算法有递归下降法、LL(1)分析法、LR分析法等。
三、语义分析
语义分析是编译器的第三个阶段,它对语法树进行静态语义检查,并生成中间代码。语义分析是一个比较复杂的过程,主要涉及类型检查、作用域分析、常量折叠、类型推导、中间代码生成等。语义分析是编译原理中最核心的知识点之一
四、中间代码生成
中间代码生成是编译器的第四个阶段,它将经过语义分析的语法树转化为中间表示形式,以便进一步进行优化和目标代码生成。中间代码的形
式有很多种,常见的有三地址码、四元式、抽象语法树等。中间代码生成的过程主要包括表达式的转换、控制流语句的转换等。
五、目标代码生成
目标代码生成是编译器的最后一个阶段,它将中间代码转换为机器代码。目标代码生成是编译原理中最复杂、也是最底层的知识点之一、目标代码生成涉及到寄存器分配、指令选择、指令调度、代码填充、代码优化等技术。常见的目标代码形式有汇编代码、机器代码等。
编译原理知识点
1.解释程序:不生成目标代码
编译程序:生成目标代码
2.编译程序组成:8个
分析< 前端>:(词法分析程序、语法分析程序、语义分析程序、中间代码生成程序) 综合< 后端>:(代码优化程序、目标代码生成程序)
贯穿始末:表格管理程序、出错处理程序
3.文法四元组:
终结符号集合Vt 、非终结符号集合Vn、产生式集合P、识别符号(开始符号)S
V 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*A
6.句型:符号串x是从识别符号S推导出来的,x称为一个句型
句子:x仅由终结符号组成,仅含终结符号的句型是一个句子
短语:子树的末端(叶子)从左至右连成的串(包括整棵语法树)
简单子树:只含有单层分枝的子树
直接短语( 简单短语):由简单子树的叶子组成
句柄:最左边的直接短语(不一定含终结符)
素短语:至少含有一个终结符的短语,并且除它自身之外不再含任何更小的素短语最左素短语:最左边的素短语
短语:P(相对于T、E)、P+T(相对于E)、i(相对于P、F)、P+T+i(相对于E)直接短语:P、i 句柄:P (最左边的直接短语)
编译原理总复习
8、栈式符号表工作过程。
9、程序运行时存储分配方法有哪 些?动态存储分配包括两种方式 ? 10、代码优化常用的三种方法 ?
二、针对语言构造文法
1、L(G)={奇正整数}; 2、L(G)={anbm|n,m≥1};
1、A::=1|3|5|7|9|NA N::=N0|N1|N2|N3|N4|N5|N6|N7|N8|N9 N::=0|1|2|3|4|5|6|7|8|9
复习大纲
一、基础知识
1、典型的编译程序可划分为几部分? 各部分的重要功能是什么? 2、什么是句子和什么是句型?
3、文法和语言的关系?
4、二义性文法 ?
5、语法分析常用的方法?
6、LL(1)文法、LR(0)文法、 SLR(1)文法、LR(1)文法的充分必要是什 么?
7、属性文法中的符号的属性分为 哪几种?如何设计递归下降翻译?
1、已知文法 E∷=T∣E+T∣E-T T∷=F∣T*F∣T/F F∷=(E)∣x, (1)给出句子x+(x*x)的最左推导和最右推导。 (2)写出句型(E+T)–F*x的短语、简单短语以及句柄
解:(1)最左推导: E=>E+T=>T+T=>F+T=>x+F=>x+(E) =>x+(T) =>x+(T*F) =>x+(F*F) =>x+(x*F) =>x+(x*x) 最右推导:E=>E+T=>E+F=>E+(E)=>E+(T) =>E+(T*F) =>E+(T*x) =>E+(F*x) =>E+(x*x) =>T+(x*x) =>F+(x*x) =>x+x*x
编译原理复习点
编译原理复习
1.简答题
/**********往年问答题**********/
1)按照次序写出一个完整的编译器的各个阶段以及各个阶段的输入输出(The phases of a complier)。
扫描程序:执行词法分析将字符序列收集到称作记号的有意义单元中。输入:源程序,输出:记号;
语法分析程序:从扫描程序中获得记号形式的源代码,并完成定义程序结构的语法分析。输入:记号,输出:语法树;
语义分析程序:分析程序中在执行之前被确定但是不易由语法表示和分析程序分析的特征,即分析程序中的静态语言。输入:语法树,输出:注释树;
源代码优化程序:对代码进行改进产生中间代码。输入:注释树,输出:中间代码;
代码生成器:得到中间代码,并生成目标机器的代码。输入:中间代码,输出:目标代码;目标代码优化程序:改进由代码生成器生成的目标代码,包括:选择编址模式以提高性能、将速度慢的指令更换成速度快的,以及删除多余的操作。输入:目标代码,输出:优化后目标代码。
2)词法分析和语法分析的功能分别是什么(The task of a scanner,parser)
词法分析:将源程序读作字符文件并将其分为若干记号。
语法分析:从扫描程序中获得记号形式的源代码,并确定程序的语法结构,以及构造出表达该结构的语法树或分析树。
3)编译器的前端(front end)和后端(back end)分别包括哪几个阶段?前后端分开有什么好处?前端:只依赖于源语言的操作,包括:扫描程序、语法分析程序、语义分析程序和中间代码的综合。
后端:只依赖于目标语言的操作,包括:代码生成器和一些优化分析。
最全的编译原理知识点--完美总结
不容易掌握。 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 这种语言可以由一种线性界限自动机接受.
《编译原理》重点知识总结
《编译原理》知识点总结
目录
第一章引论
第二章高级语言及其语法描述
第三章语法分析——自上而下分析
第四章属性文法和语法制导翻译
第五章语义分析和中间代码产生
第六章优化
第一章引论
一.编译程序(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 _ Z
4. 优化
任务:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产
生更高效的目标代码。
依循的原则:程序的等价变换规则
FOR K:=1 TO 100 DO
BEGIN
M := I + 10 * K;
N := J + 10 * K;
END
4.目标代码产生
编译原理复习汇总
编译原理复习汇总
复习汇总
一、第一章概述
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)解释器(凡是可以采用编译器的地方均可以采用解释器)
●解释器把翻译和运行结合到一起,编译一段源程序,紧接着就
编译原理资料汇总
第一章
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.语法分析程序以词法分析程序所输出的用内部编码格式表示的单词序列作为输入,其任
编译原理知识点汇集
1、名词:解释器/解释程序interpreter ;编译器/编译程序compiler ;翻译器/翻译程序
translator 。三者的区别与联系。虚拟机(如 JAVA 虚拟机JVM 、Tiny 语言虚拟机)是哪种程 序?
(1)解释器(也称为解析程序) 则是只在执行程序时,才一条一条的解释成机器语言给计算 机来执行,所以运行速度是不如编译后的程序运行的快的•
(2) 编译器(也称为编译程序)是把源程序的每一条语句都编译成机器语言,并保存成二进 制文件,这样运行时计算机可以直接以机器语言来运行此程序 ,速度很快;
(3) 翻译器(也称为翻译程序)是一种系统程序,它将计算机编程语言编写的程序翻译成另 外一种计算机语言的一般来说等价的程序,主要包括编译程序和解释程序,汇编程序也被认 为是翻译程序。程序的最初形式称为源程序或者源代码,翻译后的形式被称为目标程序或者 目标代码。大多数翻译程序是将高级语言编写的程序翻译为机器语言形式的可执行程序。但 是也有些翻译程序将源程序翻译成其他高级语言或者字节码等中间形式。
(4) 解释器翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立的目标程 序。
解释器是另外种形式的语言处理器,它相当于不生成上面的目标程序,直接将输入 放到”源 程序中,然后经过解释器,就得到了输出。通常情况下,编译过程比解释过程更快,但解释 器能够有更好的错误诊断,因为解释器是逐句进行解释的。编 .0译器和解释器可以结合起来 进行处理,Java 语言处理器就是其中的代表,其过程是源程序经过翻译器处理后得到中间程 序,也被称作字节码(bytecode ),然后和输入共同加入到虚拟机(virtual machine )的前 端,得到输出,其前一部分用到编译器,后一部分用到解释器,这样做的好处是一个机器解 释的代码可以应用在另外的机器上,甚至可以延伸到网络上。
编译原理知识点总结
编译原理知识点总结
编译原理知识点总结
编译原理是大学计算机专业的必修科目,也是计算机的基础知识,学好编译原理,有助于更好的进行编程的操作,下面是编译原理知识点总结,一起来看看吧!
编译原理知识点总结
一编译器
简单讲,编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。一个现代编译器的主要工作流程:源代码(source code) → 预处理器
(preprocessor) → 编译器(compiler) → 汇编程序 (assembler) → 目标代码(object code) → 链接器(Linker) → 可执行程序(executables)
二工作原理
编译是从源代码(通常为高阶语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。然而,也存在从低阶语言到高阶语言的编译器,这类编译器中用来从由高阶语言生成的低阶语言代码重新生成高阶语言代码的又被叫做反编译器。
也有从一种高阶语言生成另一种高阶语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。
典型的编译器输出是由包含入口点的名字和地址,以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序
三编译器的发展史
(1) 20世纪50年代
IBM的John Backus带领一个研究小组对FORTRAN语言及其编译器进行开发。但由于当时人们对编译理论了解不多,开发工作变得
编译原理考点
1、编译程序涉及的三个语言(源语言目标语言实现语言)
2、编译程序的概念及其结构(五个)
编译程序(compiler)是一种翻译程序,它特指把某种高级程序设计语言翻译成具体计算机上的低级程序设计语言。
结构:词法分析,语法分析,语义分析及中间代码产生,优化,目标代码产生
3、什么是二义文法。
若文法中存在这样的句型,它具有两棵不同的语法树(两个不同的最左、最右推导),则称该文法是二义性文法。
4、超前搜索技术
词法分析程序在读取单词时,为了判断是否已读入整个单词的全部字符,常采取向前多读取字符并通过读取的字符来判别,即所谓超前搜索技术。
5、“遍”的概念
编译程序对源程序或等价程序从头至尾扫描的次数。
根据语言和环境的不同,编译程序实现时是把各阶段划分成若干遍;典型的情况是两遍的编译程序:第一遍:词法分析、语法分析和语义分析。即前端完成分析,一般与机器无关。
第二遍:目标代码生成和目标代码优化。即后端完成综合,一般与机器有关。
6、上下文无关文法的定义
所定义的语法范畴是完全独立于这种范畴可能出现的环境的。包括四个组成部分,一组终结符号,一组非终结符号,一个开始符号,以及一组产生式
7、词法分析,自上而下以及自下而上语法分析的基本概念,输入,输出,分析方法。
8、LL(k)的含义,以及LL(1)文法的判定。P73
**9、LR分析法
10、中间代码生成的依据,形式,目的。P166
中间代码的几种形式:后缀式(逆波兰式),三地址代码(包括三元式、四元式、间接三元式),图表示法(包括DAG图、抽象语法树)
11、四元式p172
编译原理考试知识点复习
第一章:
编译过程的六个阶段:词法分析,语法分析,语义分析,中间代码生成,
代码优化,目标代码生成
解释程序:把某种语言的源程序转换成等价的另一种语言程序——目标语言程序,然后再执行目标程序。解释方式是接受某高级语言的一个语句输入,进行解释并控制计算
机执行,马上得到这句的执行结果,然后再接受下一句。
编译程序:就是指这样一种程序,通过它能够将用高级语言编写的源程序转换成与之在逻辑上等价的低级语言形式的目标程序(机器语言程序或汇编语言程序)。
解释程序和编译程序的根本区别:是否生成目标代码
第三章:
Chomsky对文法中的规则施加不同限制,将文法和语言分为四大类:
0型文法(PSG)◊ 0型语言或短语结构语言
文法G的每个产生式α→β中:若α∈V*VNV*, β∈(VN∪VT)* ,
则G是0型文法,即短语结构文法。
1型文法(CSG)◊ 1型语言或上下文有关语言
在0型文法的基础上:若产生式集合中所有|α|≤|β|,除S→ε(空串)外,
则G是1型文法,即:上下文有关文法
另一种定义:
文法G的每一个产生式具有下列形式:αAδ→αβδ,其中α、δ∈V*,A∈VN,β∈V+;2型文法(CFG)◊ 2型语言或上下文无关语言
文法G的每个产生式A→α,若A∈VN ,α∈(VN∪VT)*,则G是2型法,即:上下文无关文法。
3型文法(RG)◊ 3型语言或正则(正规)语言
若A、B∈VN,a∈VT或ε,
右线性文法:若产生式为A→aB或A→a
左线性文法:若产生式为A→Ba或A→a
都是3型文法(即:正规文法)
最左(最右)推导
在推导的任何一步α⇒β,其中α、β是句型,都是对α中的最左(右)非终结符
编译原理重点
1语言分类:论基础分为4类语言: 强制式语言:基础是冯·诺依曼模型;函数式语言;基础是数学函数(函数运算);逻辑式语言:基础是数理逻辑、谓词演算;对象式语言:基础是抽象数据类型。按2语言的发展进程分类: 第一代语言(机器语言)第二代语言(汇编语言)第三代语言(高级语言:命令式、过程式)第四代语言(说明性语言、超高级语言)新一代语言(函数式、逻辑式语言)
3冯.诺依曼体系结构:三大特性:①变量存储单元及名称由变量的概念代替。变量可以代表一个或一组单元。②赋值存储(中间、最终的)计算结果。③重复语句顺序执行,指令存储在有限的存储器中,完成复杂计算时需要重复执行某些指令序列。
4绑定(Binding)概念:实体:程序的组成部分,如变量,表达式、程序单元等。属性:实体具有的特性。绑定:实体与其各种属性建立起某种联系的过程称为绑定,实际上就是建立了某种约束。描述符:描述实体属性的表格。若绑定在运行之前(即编译时)完成,且在运行时不会改变,则称为静态绑定。若绑定在运行时完成,则称为动态绑定。
5冯.诺依曼体系结构的特点:数据或指令以二进制形式存储;“存储程序”的工作方式;程序顺序执行;存储器的内容可以被修改
6虚拟机是由实际机器加软件实现的机器。若一台实际机器配置上C语言编译程序,对用户来说,这台机器就是C语言的虚拟机
7变量是对一个或若干个存储单元的抽象。一个存储单元至少一个字节。一个变量至少占用一个存储单元。赋值是对修改存储单元内容的抽象。8属性:变量的作用域:可以访问该变量的程序范围。变量的生存期:存储单元绑定于一个变量的时间区间。变量的值:存储区单元的内容。变量的类型:与变量相关联的值,以及对这些值进行的操作的抽象
编译原理知识点汇总
编译原理的复习提纲
1.编译原理=形式语言+编译技术
2.汇编程序:
把汇编语言程序翻译成等价的机器语言程序
3.编译程序:
把高级语言程序翻译成等价的低级语言程序
4.解释执行方式:
解释程序,逐个语句地模拟执行
翻译执行方式:
翻译程序,把程序设计语言程序翻译成等价的目标程序
5.计算机程序的编译过程类似,一般分为五个阶段:
词法分析、语法分析、语义分析及中间代码生成、代码优化、目标代码生成
词法分析的任务:
扫描源程序的字符串,识别出的最小的语法单位(标识符或无正负号数等)
语法分析是:
在词法分析的基础上的,语法分析不考虑语义。语法分析读入词法分析程序识别出的符号,根据给定的语法规则,识别出各个语法结构。
语义分析的任务是检查程序语义的正确性,解释程序结构的含义,语义分析包括检查变量是否有定义,变量在使用前是否具有值,数值是否溢出等。
语法分析完成之后,编译程序通常就依据语言的语义规则,利用语法制导技术把源程序翻译成某种中间代码。所谓中间代码是一种定义明确、便于处理、独立于计算机硬件的记号系统,可以认为是一种抽象机的程序
代码优化的主要任务是对前一阶段产生的中间代码进行等价变换,以便产生速度快、空间小的目标代码
编译的最后一个阶段是目标代码生成,其主要任务是把中间代码翻译成特定的机器指令或汇编程序
编译程序结构包括五个基本功能模块和两个辅助模块
6.编译划分成前端和后端。
编译前端的工作包括词法分析、语法分析、语义分析。编译前端只依赖于源程序,独立于目标计算机。前端进行分析
编译后端的工作主要是目标代码的生成和优化后端进行综合。独立于源程序,完全依赖于目标机器和中间代码。
编译原理知识点
第一章引言
1.从面向机器的语言到面向人类的语言
汇编指令:用符号表示的指令被称为汇编指令
汇编语言:汇编指令的集合称为汇编语言
2.语言之间的翻译
转换(也被称为预处理):高级语言之间的翻译,如FORTRAN到ADA 的转换
编译:高级语言可以直接翻译成机器语言,也可以翻译成汇编语言,这两个翻译过程称为编译
汇编:从汇编语言到机器语言的翻译被称为汇编
交叉汇编:将一个汇编语言程序汇编成为可在另一机器上运行的机器指令成为交叉汇编
反汇编:把机器语言翻译成汇编语言
反编译:把汇编语言翻译成高级语言
3. 编译器与解释器
(1)语言翻译的两种基本形态
解释器与编译器的主要区别:运行目标程序时的控制权在解释器而不在目标程序.
(2)各自特点
•编译器:工作效率高,即时间快、空间省;交互性与动态性差,可移植性差.
•解释器:工作效率低,,即时间慢、空间费;交互性与动态性好,可移植性好.
共同点:均完成对源程序的翻译.
差异:编译器采用先翻译后执行,解释器采用边翻译边执行.
4. 编译器的工作原理与基本组成
(0)通用程序设计语言的主要成份声明+操作=完整定义
(1)以过程为基本结构的程序设计语言的组成
•声明性语句:提供操作对象的性质,如数据类型、值、作用域等;
•操作性语句:确定操作的计算次序,完成实际操作。
•过程定义= 过程头+过程体
(2)以阶段划分编译器
注:符号表管理器和出错处理贯穿编译器工作的各个阶段.
(3)编译器各阶段工作
1> 词法分析:词法分析的输入是源程序,输出是识别出的记号流.目的是识别单词. 至少分以下几类:关键字(保留字)、标识符、字面量、特殊符号
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译原理的复习提纲
1.编译原理=形式语言+编译技术
2.汇编程序:
把汇编语言程序翻译成等价的机器语言程序
3.编译程序:
把高级语言程序翻译成等价的低级语言程序
4.解释执行方式:
解释程序,逐个语句地模拟执行
翻译执行方式:
翻译程序,把程序设计语言程序翻译成等价的目标程序
5.计算机程序的编译过程类似,一般分为五个阶段:
词法分析、语法分析、语义分析及中间代码生成、代码优化、目标代码生成
词法分析的任务:
扫描源程序的字符串,识别出的最小的语法单位(标识符或无正负号数等)
语法分析是:
在词法分析的基础上的,语法分析不考虑语义。语法分析读入词法分析程序识别出的符号,根据给定的语法规则,识别出各个语法结构。
语义分析的任务是检查程序语义的正确性,解释程序结构的含义,语义分析包括检查变量是否有定义,变量在使用前是否具有值,数值是否溢出等。
语法分析完成之后,编译程序通常就依据语言的语义规则,利用语法制导技术把源程序翻译成某种中间代码。所谓中间代码是一种定义明确、便于处理、独立于计算机硬件的记号系统,可以认为是一种抽象机的程序
代码优化的主要任务是对前一阶段产生的中间代码进行等价变换,以便产生速度快、空间小的目标代码
编译的最后一个阶段是目标代码生成,其主要任务是把中间代码翻译成特定的机器指令或汇编程序
编译程序结构包括五个基本功能模块和两个辅助模块
6.编译划分成前端和后端。
编译前端的工作包括词法分析、语法分析、语义分析。编译前端只依赖于源程序,独立于目标计算机。前端进行分析
编译后端的工作主要是目标代码的生成和优化后端进行综合。独立于源程序,完全依赖于目标机器和中间代码。
把编译程序分为前端和后端的优点是:
可以优化配置不同的编译程序组合,实现编译重用,保持语言与机器的独立性。
7.汇编器把汇编语言代码翻译成一个特定的机器指令序列
第二章
1.符号,字母表,符号串,符号串的长度计算P18,子符号串的含义,符号串的简单运算XY,Xn,
2.符号串集合的概念,符号串集合的乘积运算,方幂运算,闭包与正闭包的概念P19,P20A0
={ε}
3.重写规则,简称规则。非xx(V
n),xx(V
t)的概念。
4.文法的概念。P23识别符号.P23文法的第一个重写规则的左部符号为识别符号。
BNF表示法P6
5.直接推导和直接规约,广义推导广义规约,P24最左推导,最右推导P62
6.句型和句子P26,短语,简单短语,句柄P26,P27
7.语言的定义P31
8.递归,左递归P32
9.文法的形式化定义P36定义重点是正则文法和上下文无关文法
0型文法,短语结构语言
1型文法,上下文有关文法CSG
2型文法,上下文无关文法CFG
3型文法,正则文法RG
3型语言类(2型语言类(1型语言类(0型语言类
但四种语言之间没有必然的包含关系P38
3型语言的定义有穷状态自动机P41
2型语言下推自动机
1型语言线性界限自动机
0型语言图灵机
10.消去规则左递归P51
11.语法分析树的构造,能够根据语法书来寻找短语,直接短语,句柄。
12.文法的二义性问题P58,文法的二义性是不可判定的
-------------------------------
第三章
1.词法分析的功能P69
2.词法分析器可以有两种实现模式:
完全融合模式(大多采用)和相对独立模式,完全独立方式P71
3.有穷状态自动机的概念,如何从正则文法构造有穷状态转换自动机P72
4.
5.
6.
7.如何从有穷状态转换自动机构造正则文法P75
确定有穷状态自动机DFA五元组(K,Σ,M,S,F),五个字母的含义。P75非确定有穷状态自动机NFA,如何将NFA转化为DFAP82
DFA的化简
8.属性字由符号类和符号值组成。特定符号类,一个符号类对应一个符号值:
关键字、括号,运算符。非特定符号类:
标示符,无符号整数。符号类识别不同类的符号,符号值识别同类的不同符号P90
9.字符表,符号机内表示对照表,标示符表,无符号整数表各自的定义和作用P93词法分析程序的大致思路
------------------------------
第四章自顶向下(重点是预测分析表的构造和应用预测分析表进行字符串分析)
1.带回溯的自顶向下分析方法P121(一般采用最左或者最右推导)
2.无回溯的自顶向下分析方法:
条件,无左递归性,无回溯性。
3.预测分析技术:
消去文法左递归P51;构造first集合和follow集合P138,构造预测分析表P139进行字符串分析P134
-------------------------------------
第五章自底向上(重点是构造算符优先矩阵并进行字符串的分析)
1.规范分析:
最右推导被称为规范推导,最左规约被称为规范规约。P145
2.分析需要解决的两个基本问题:
找出要被归约的短语u;确定归约到哪个非终结符号U
3.一个符号串的前缀是指该串的任一部分。一个规范句型的前缀若不含句柄之后的任何符号就称为活前缀
4.基本方法:
移入规约xxP147四个动作之一:
移进归约接受出错
5.算符优先分析技术:
P150定义