编译原理第19讲(第十章)
- 格式:ppt
- 大小:176.00 KB
- 文档页数:33
《编译原理》知识点总结目录第一章引论第二章高级语言及其语法描述第三章语法分析——自上而下分析第四章属性文法和语法制导翻译第五章语义分析和中间代码产生第六章优化第一章引论一.编译程序(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)单词符号是语言中具有独立意义的最基本结构。
可编辑修改精选全文完整版1什么事编译程序?:什么是解解释程序?它们的区别?编译程序就是指这样的一种程序,通过它能够将用高级语言编写的源程序转换成与之在逻辑上等价的低级语言形式的目标程序。
解释程序也是一种翻译程序,它将原程序作为输入,一条语句一条语句地读入并解释执行。
区别:编译程序将源程序翻译成目标程序后在执行该目标程序:解释程序则逐条读出源程序中的语句并解释执行。
2什么是扫描器?:扫描器就是词法分析器,他接受输入的源程序,队源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
通常把此法分析器作为一个子程序,每当词法分析器需要一个单词符号时就调用这个子程序。
每次调用时,词法分析器就从输入串中识别出一个单词符号交给语法分析器。
3.正规表达是到上下无关文法的转换方法是什么?:正规表达式所描述的语言结构均可以用上下文无关文法描述,反之则不一定。
方法如下:1.构造正规表达式的NFA;2.若0为初始状态,则A为开始符号;3.如果存在映射关系f(i,a)=J,则定义产生式Ai→aAj 4. 如果存在映射关系f(i,ξ)=J,则定义产生式Ai→Aj。
5.若1为终态,,则定义产生式Ai→ξ。
4.什么是语法树?:对文法G[s]:(Vt,Vn,S, )满足下列条件的树称为G[s]的语法树。
(1)每个结点用G[s]的一个终结符或非终结符标记。
(2)根据点用文法开始符S标记。
(3)内部结点一定是非终结符,如果某内部结点A有n个分支,它的所有子结点从左至右依次标记为X1,X2,X3……. Xn,则A→X1,X2,X3……. Xn一定是文法G[s]的一条产生式。
(4)如果某节点标记为ξ,则它必为叶结点是父结点的唯一子结点。
5.自下而上分析原理是什么?:自下而上是就是自左至右扫描输入串,自下而上进行分析:通过反复查找当前句型的句柄(最左直接短语),并使用产生式规则将找到的句柄归约为相应的非终结符。
编译原理讲义全范文编译原理是计算机科学中的一门重要课程,它研究如何将高级语言程序转化为可执行代码的过程。
在编译原理的学习过程中,我们需要掌握一系列的理论知识和实践技巧,以便正确地设计和实现编译器。
下面是一份全面的编译原理讲义,主要包括词法分析、语法分析、语义分析、优化与目标代码生成等内容。
一、词法分析1.编译原理概述2.词法分析的定义和作用3.词法分析器的实现方法4.正则表达式和有限自动机5.正则表达式到NFA的转化6.NFA到DFA的转化7.最小化DFA8.正则表达式到DFA的转化9.词法分析器生成器的使用二、语法分析1.上下文无关文法的定义和作用2.语法分析的定义和作用3.自顶向下语法分析方法4.递归下降分析方法5.预测分析方法6.LL(1)文法和LL(1)分析方法7.自底向上语法分析方法8.LR分析方法和SLR分析方法LR分析方法和LR分析方法10.LR分析器生成器的使用三、语义分析1.语义分析的定义和作用2.语义动作和语法制导定义3.语法制导翻译和语义树的构建4.属性文法和符号表管理5.语义分析的错误处理6.语义分析器的实现方法四、中间代码生成1.中间代码的定义和作用2.中间代码的表示方法3.中间代码生成的基本原理4.三地址码的生成方法5.语法树的线性化6.优化技术在中间代码生成中的应用7.中间代码生成器的实现方法五、代码优化1.代码优化的概述2.代码的局部优化技术3.代码的全局优化技术4.数据流分析和优化5.控制流优化和代码调度6.代码优化器的实现方法六、目标代码生成1.目标代码的定义和作用2.目标机器的特性和指令系统3.指令选择和寄存器分配4.目标代码生成的基本原理5.基本块和流图的生成6.目标代码的生成方法7.目标代码生成器的实现方法七、构建编译器1.编译器整体架构与设计2.词法分析器的实现3.语法分析器的实现4.语义分析器的实现5.中间代码生成器的实现6.代码优化器的实现7.目标代码生成器的实现8.编译器的调试和测试技巧通过学习以上内容,我们将全面了解编译原理的基本理论和实践技术,掌握编译器的设计和实现方法。