编译原理心得体会

上传人:壹****1 文档编号:485521695 上传时间:2022-07-24 格式:DOCX 页数:13 大小:29.80KB
返回 下载 相关 举报
编译原理心得体会_第1页
第1页 / 共13页
编译原理心得体会_第2页
第2页 / 共13页
编译原理心得体会_第3页
第3页 / 共13页
编译原理心得体会_第4页
第4页 / 共13页
编译原理心得体会_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《编译原理心得体会》由会员分享,可在线阅读,更多相关《编译原理心得体会(13页珍藏版)》请在金锄头文库上搜索。

1、篇一:编译原理总结】1 编译程序: 从高级语言到汇编语言或机器语言的翻译程序2. 源程序:用汇编语言或高级语言编写的程序3. 目标程序:用目标语言所表示的程序。 目标语言:介于源语言和 机器语言之间的 “中间语言”,也可以是某种机器的机器语言,也可以 是 某机器的汇编语言。4 翻译程序:将源程序转换为目标程序的程序称为翻译程序。5 赋值语句的语法规则: a:=v=e e:=t|e+t t:=f|t*f f:=v|(e)|c v:= 标识符c:=常数6 遍:对源程序(包括源程序中间形式)从头到尾扫描一次,并做 有关的加工处理,生成新的源程序中间形式或目标程序,通常称之 为一遍。优点:节省内存空间

2、,提高目标代码质量,逻辑机构清晰 缺点:编译时间较长,会增加输入输出所消耗的时间,在内存许可 下少用为妙7 前端:通常将与源程序有关的编译部分称为前端。 包括词法分析 语法分析,语义分析,等分析部分 后端:与目标机有关的部分称为后端。包括中间代码生成,代码优 化,目标程序生成等综合部分8 编译程序构成部分以及功能: (1)词法分析(扫描器):输入源 程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单 词及其有关属性,并转换成属性字。(2)语法分析(分析器):在词 法分析的基础上,根据语言的语法规则,逐一分析词法分析时得到 的属性字,检查语法错误,若没有错误,则给出正确的语法结构 (如短

3、语、子句、句子、程序段、程序等)。(3)语义分析(语义处 理):语法分析识别出的各类语法范畴,分析其含义 ,进行和初步翻译 产生介于源代码和目标代码之间的一种代码“中间代码”。或者直接 生成目标代码。(4)优化:依据程序的等价变换规则,尽量压缩 目标程序运行时所需的时间和所占的存储空间,以提高目标程序的 质量(5)目标代码生成:把经过优化的中间代码转化成特定机器上 的低级语言代码。9 计算机执行用高级语言编写的程序途径有两种:解释方式和编译 方式。 根本区别:是否生成了目标代码。 解释方式下,翻译程序事先并不对高级语言程序进行彻底翻译以得到机器代码,而是读入一条语句,就解释其含义并执行,然后再

4、读入下一条语句,再解释执 行,即按,源程序中语句的动态顺序逐句地进行分析解释,并立即 予以执行。 编译方式下,翻译程序先对高级语言程序进行彻底翻译 并生成目标代码,然后再对目标代码进行执行,即对源程序的处理 是先翻译后执行。简单来说解释方式不生成目标代码,编译方式生 成目标代码10 编译程序采用多遍扫描还是单编扫描需要考虑哪些因素 不一定, 多遍编译器结构清晰,构造时间短,运行时需要内存少,产生的目 标代码质量高,但时间效率低, 应该根据具体情况决(1)语句的大小与结构,(2)机器规模(3) 设计目的(4)设计人员的素质及数量。 11 比较 lr(0),slr(1),lr (1)和 lalr(

5、1)分析表的优缺点(1) Ir (0)分析表局限性大,但其构造方法是其他构造方法的基础( 2) slr 分析表虽然不是对所有文法都存在,但这种分析表状态少, 存储空间占用少,较易实现又极有实用价值。(3)规范lr分析表,即Ir (1)分析表,它的,它的分析能力最强, 能适用于一大类文法,但是实现代价过高,主要是体积过大 ( 4)IaIr 分析表的能力介于 sIr 分析表和规范 Ir 分析表之间,稍加努力, 就可以高效的实现。12比较II (k)分析表与Ir (k)分析法共同点:(1)两者多借助 于可能句柄左部的全部符号及向右看 k 个符号来确定所应执 行的唯一动作,识别过程严格地从左到右扫描,

6、无回溯,效率高。2)都能及时察觉错误 2。(3)识别程序都能自动生成。 区别:1)两者都是严格地从左到右扫描,名称中第一个 I 隐指这点,但Ir分析技术利用的是最右推导(最左归约),由r隐指,II (k)分析 利用的是最左推导,由第二个I隐指。(2) II (k)要求文法无左递 归,满足无回溯的条件,而Ir分析法则无此限制。(3) II (k)是自 上而下构造推导的,而Ir (k)是自下而上构造归约的。13语法制 导翻译过程:对单词符号串进行语法分析,构造语法分析树,构造 属性依赖图,遍历语法树并在语法树各结点处按语义规则计算顺序。14 静态语义检查:类型检查,控制流检查,一致性检查,相关名字

7、 检查,名字的作用域分析。15 引入中间代码的好处:(1)便于进行与机器无关的代码优化工作 (2)使编译程序更容易 改变目标机(3)使编译程序的结构在逻辑上更为简单明确,以中间语言为界限 编译前端和后端的接口更清晰。 16 编译程序分类 (1)诊断编译程 序 (2)优化编译程序 (3)交叉编译程序 (4)可变目标编译程序 17 编译程序工作过程 5 个阶段及其任务: (1)词法分析:任务是 从左到右逐个字符的读入源程序,对构成源程序的字符流进行扫描 和分解,进而识别一个个单词。(2)语法分析:任务是根据语法规则,分析并识别出各种语法成分 并经行语法正确性检查。(3)语义分析与中间代码生成:任务

8、是对识别出的各种语法成分进 行语义分析,并产生相应的中间代码。(4)目标代码生成:任务是把中间代码转换成特定机器上的低级语 言代码。 18 编译程序和解释程序(1)编译程序需要在运行前将源代码译成目标代码,解释程序接受 某个语言的程序并立即运行这个源程序(2)二者存储组织有着很大不同,编译程序处理时存储区要存储编 译用时需要的各种表格;解释程序将分析结果存放在源程序区(3)编译程序动态性很差,可形成永久性可执行文件,解释程序动 态性较好。19 程序性合计语言范型:(1)强制(命令)式语言:c,fortron,pasal (2)函数式语言: ml,lisp(3)基于规则(逻辑)的语言: prol

9、og (4)面向对象语言: ada,c+,java1.推导:自上而下的语法分析过程 预测分析程序,递归下降分析法(最左推导) 2.归约:自下而上的语法分析过程一简单优先分析法,算符优先分析法、ir分析法33.自下而上的语法分析过程思想一自下而上的语法分析过程是一个最左归约的过程,从输入串开始。朝着文法的开始符号进行归约,直到到达文法的开始符号为止的过 程 注意:输入串在这里是指从词法分析器送来的单词符号组成的二 元式的有限序列 。 即:自左至右把输入串的符号一个一个移进栈, 在移进过程中不断查看栈顶符号串,一旦形成某个句型的句柄时, 就将此句柄用相应的产生式左部替换(归约),若再形成句柄,就

10、继续替换,直到栈顶不再形成句柄为止,然后继续移进符号,重复 上面的过程直到栈顶只剩下文法的开始符号,输入串读完为止,这 样就认为识别了一个句子。1)初态时栈内仅有栈底符 “#”,读头指在最左边的单词符号上 .2)语法分析程序执行的动作:a)移进:读入一个单词并压入栈内,读头后移;b)归约:检查栈顶若干个符号能否进行归约,若能,就以产生式左 部替代该符号串,同时输出产生式编号.c)识别成功:移进一归约的结局是栈内只剩下栈底符号和文法开始 符号,读头也指向语句的结束符.d)识别失败.注: 一个句型的语法树中任一子树叶节点所组成的符号串就是该句 型的短语,当子树中不包含其他更小的子树时,该子树结点所

11、组成 的字符串就是该句型的直接(简单)短语。素短语: 一个递归的定义,至少含有一个终结符,并且除它自身之 外不在含有任何更小的素短语,(所谓最左素短语就是处于句型最 左边的素短语)。简单优先分析法: 1.确定相邻文法符号之间的优先关系 在句型中, 句柄内各相邻符号之间具有相同的优先级,相同优先级用“ ” 由于句柄要先归约,所以规定句柄两端符号的优先级要比位于句柄之 外的相邻符号的优先级高,优先级低于表示为“ ”某句型中:n1ni-1 ni nj nj+1nn定义:一个文法g,如果它不含e产生式,也不含任何右部相同的不同产生式,并且它的任何符号对(x, y)x, y 是终结符或非终结符一一或者没

12、有关系,一一或者存在优先级相同或低于、高于等关系之一, 则这是一个简单优先文法。1lr(0) 文法:该文法的以 lr(0) 项目集为状态的识别规范句型活前缀 的 dfa 中没有冲突状态。2 slr(1) 文法:该文法的以 lr(0) 项目集为状态的识别规范句型活前 缀的 dfa 中有冲突状态,冲突可用 follow 集解决。该文法不是slr(1)文法。因为 follow(s)=a,b,# ,所以无法解决冲突3 算符优先:(t) (firstvt (t) lastvt (t) ) (6 章)1. 静态语义检查包括:( 1 )类型检查 ( 2)控制流检查 ( 3)一致性检查(4)相关名字检查 (5

13、)名字的作用域分析2. 引入中间代码的好处:(1)便于进行与机器无关的代码优化工作 (2)使编译程序更容易 改变目标机( 3)使编译程序的结构在逻辑上更为简单 明确,以中间语言为界限,编译前端和后端的接口更清晰。(1 章) 1.源程序: 用编译语言或高级语言编写的程序 目标程序:用目标语言表示的程序 翻译程序: 将源程序转换为目标程序的程序。2. 编译程序分类 ( 1 )诊断编译程序 ( 2)优化编译程序 ( 3)交叉 编译程序 (4)可变目标编译程序3. 编译程序工作过程 5个阶段及其任务: (1)词法分析:任务是 从左到右逐个字符的读入源程序,对构成源程序的字符流进行扫描 和分解,进而识别

14、一个个单词。( 2)语法分析:任务是根据语法规则,分析并识别出各种语法成分 并经行语法正确性检查。( 3)语义分析与中间代码生成:任务是对识别出的各种语法成分进 行语义分析,并产生相应的中间代码。( 4)目标代码生成:任务是把中间代码转换成特定机器上的低级语 言代码。4. 编译程序和解释程序(1)编译程序需要在运行前将源代码译成目标代码,解释程序接受 某个语言的程序并立即运行这个源程序( 2)二者存储组织有着很大不同,编译程序处理时存储区要存储编 译用时需要的各种表格;解释程序将分析结果存放在源程序区( 3)编译程序动态性很差,可形成永久性可执行文件,解释程序动 态性较好。5. 程序性合计语言

15、范型:( 1 )强制(命令)式语言: c,fortron,pasal ( 2)函数式语言: ml,lisp( 3)基于规则(逻辑)的语言: prolog(4)面向对象语言:ada,c+,java6. 构造编译程序必须掌握的三方面内容:( 1)源程序 ( 2)目标语言 ( 3)编译方法7. 编译前端和后端 前端:通常指与源程序有关的编译部分,包括词法分析,语法分析, 语义分析,特点是与源程序有关。后端:与目标机有关的部分,包括中间代码生成,代码优化,目标 程序生成,特点是与目标机有关。1.推导:自上而下的语法分析过程预测分析程序,递归下降分析法(最左推导)注:要求文法是11(1)文法2.归约:自下而上的语法分析过程一简单优先分析法,算符优先分析法、ir分析法33. 自下而上的语法分析过程思想 自下而上的语法分析过程是一个最左归约的过程,从输入串开始。 朝着文法的开始符号进行归约,直到到达文法的开始符号为止的过 程 注意:输入串在这里是指从词法分析器送来的单词符号组成的二 元式的有限序列 。 即:自左至右把输入串的符号一个一个移进栈, 在移进过程中不断查看栈顶符号串,一旦形成某个句型的句柄时, 就将此句柄用相应的产生式左部替换(归约),若再形成句柄,就 继续替换,直到栈顶不再形成句柄为止,然后继续移进符号,重复 上面

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号