编译原理
等的人心好烦
这个作者很懒,什么都没留下…
展开
-
第五章 语法分析-自下而上分析
自底向上分析方法是从输入符号串开始,查找当前可归约串,并用产生式将它归约成相应的非终结符号,最后归约为识别符号的一种分析方法。注意以下几点:(1)对输入符号串的扫描,采用自左向右的顺序;(2)分析过程是自下而上进行的(对语法树来说从末端结点开始,最后归约到根结点);(3)每次归约是对最左可归约串进行的;(4)算法的关键是确定最左可归约串;重点掌握:(1)句柄、素短语原创 2017-11-30 00:19:27 · 4704 阅读 · 1 评论 -
第五章 LR分析法
LR分析法也是一种“移进—归约”的自底向上语法分析方法,其本质是规范归约,具有以下特点:(1)应用面广:能够用LR分析程序识别绝大多数的程序设计语言的语法结构;(2)实现效率高:虽构造方法复杂,但是实现(执行)效率高。(3)查错准确:LR分析器能够及时发现语法错误并准确指出错误位置。LR(k)分析方法中L是指自左(Left)向右扫描输入单词串,R指分析过程是最右(Right)推原创 2017-12-03 22:22:23 · 32724 阅读 · 1 评论 -
第一章 引论
1.1什么叫编译程序1.1.1程序设计语言的发展机器语言、汇编语言、高级语言 随着计算机应用需求的不断增长,人们希望能有功能更强、抽象级别更高的语言来支持程序设计,于是就产生了面向各类应用的程序设计语言。这些语言的共同特征是便于人类的理解与使用,因此被称为面向人类的语言或高级语言。表1.1列出了几种面向机器和面向人类的语言及其表现形式。表1.1 面向机器和面向人类语原创 2018-01-13 10:48:45 · 402 阅读 · 0 评论 -
第二章 高级语言及其语法描述
2.3 程序语言的语法描述一、符号和符号串字母表:字母表Σ是符号元素的非空集合。符号:字母表中的元素。符号串:字母表中的符号所组成的任何有穷序列。例如,若有字母表Σ={a,b}则a,b是字母表Σ中的元素(符号);a, b,aa,ab,ba…都是符号串。注意:符号串中的符号与顺序有关, ab和ba是不同的符号串特别定义:空符号串——不含任何符号的符号串,用ε表示。原创 2018-01-13 11:41:55 · 938 阅读 · 0 评论 -
第三章 词法分析
3.1词法分析器的设计词法分析的主要工作: 从源程序的第一个字符开始,从左到右扫描源程序,一次读一个字符,根据词法规则将有关字符组合成单词,并识别各类单词,当确定单词类别后,将单词输出。在词法分析过程中还要完成其它任务,如:•过滤掉源程序中的注释和空白;•记录读入字符的行号,以便发现错误后能报告出错位置;•进行预编译工作(对宏进行展开等工作);•符号表操原创 2018-01-13 17:32:51 · 1056 阅读 · 0 评论 -
第四章 自顶向下语法分析方法
4.1语法分析器的功能: 语法分析是整个编译过程的核心部分,它完成的任务是:按照文法从源程序单词串(符号串)中识别各类语法成分,判断所给出的单词串是否是给定文法的正确句子,并为语义分析和代码生成做准备。4.2 不确定的自顶向下分析一、算法思想: 对于任一输入符号串,试用一切可能的办法从树根结点出发根据文法自上向下的为输入串建立一棵语法树。原创 2018-01-14 12:13:47 · 8938 阅读 · 0 评论 -
第七章 语义分析和中间代码生成
1、 编译程序的任务是把源语言程序翻译成目标程序,有些编译程序在编译过程中,不产生中间语言,而是直接从源语言程序翻译成目标语言程序。 以上编译过程省略了中间语言,它不利于编译所产生的目标代码的优化.为了产生高质量的代码,可以将源语言程序首先翻译成一种特殊形式的中间语言代码形式,并对其进行优化,然后再将它翻译成最终的目标代码。中间代码 中间代码也原创 2018-01-14 20:35:55 · 18605 阅读 · 1 评论