编译技术名词解释.doc

上传人:scccc 文档编号:14608034 上传时间:2022-02-10 格式:DOC 页数:4 大小:76.50KB
返回 下载 相关 举报
编译技术名词解释.doc_第1页
第1页 / 共4页
编译技术名词解释.doc_第2页
第2页 / 共4页
编译技术名词解释.doc_第3页
第3页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《编译技术名词解释.doc》由会员分享,可在线阅读,更多相关《编译技术名词解释.doc(4页珍藏版)》请在三一文库上搜索。

1、基本知识编译程序:就是指这样一种程序,通过它能够将用高级语言编写的源程序转换成与之在逻辑上等价的低级语言形式的目标程序解释程序与编译程序的主要区别是:*编译程序将源程序翻译成目标程序后再执行目标程序*解释程序则是逐条读出源程序中的语句并解释执行,即在解释程序的执行过程中并不产生目标程序。形式化方法是用一整套带有严格规定的符号体系来描述问题的方法。文法是程序语言的生成系统 自动机是程序语言的识别系统推导的每一步都是对当前句型中的最右非终结符用相应产生式的右部进行替换,这样的推导称为最右推导(规范推导)最右推导的逆过程称为最左归约(规范归约)。符号串集合的正闭包:设A是符号串的集合,则称A+为符号

2、串集A的正闭包。具体定义如下:A+ = A1 U A2 U A3 符号串集合的(星)闭包:设A是符号串的集合,则称 A*为符号串集A的星闭包。具体定义 如下:A* = A0 U A1 U A2 U A3 二义性文法:文法GS的一个句子如果存在两棵不同的语法树,或者能找到两种不同的最左推导(或最右推导),则称这个文法是二义性的。先天二义性文法:对于一个二义性文法GS,如果能找到一个非二义性文法 GS,使得L(G)=L(G),则该二义性文法的二义性是可以消除的。如果找不到这样的GS,则二义性文法描述的语言为先天二义性的。推导的每一步都是对当前句型中的最右非终结符用相应产生式的右部进行替换,这样的推

3、导称为最右推导(规范推导)最右推导的逆过程称为最左归约(规范归约)。符号串长度:I ab|= 2,| |= 0。四元式,逆波兰,划分基本块,作流图一个句型的最左直接短语称为该句型的句柄。语法树的某个结点连同它的所有后代组成了一棵子树。2型文法:文法G的每一个产生式具有下列形式:A fa其中,A VN , a V*,则称文法G为2型文法或上下文无关文法。3型文法:文法G的每个产生式具有下列形式:A f a 或 A f a B其中,A、B VN , a VT*,则文法G称为3型文法、正规文法或右线性文法在编译方法中:通常用3型文法(正规文法)来描述高级程序语言的词法部分,然后用有限 自动机FA来识

4、别高级语言的单词。利用2型文法(上下文无关文法)来描述高级语言的语法部分,然后用下推 自动机PDA来识别高级语言的各种语法成分编译程序的结构源程序目标程序一般来说,整个编译过程可以划分成五个阶段,这五个阶段的任务是:1词法分析任务:将源程序的字符串变换成单词符号流2 语法分析,通过任务:是在词法分析的基础上,把单词符号流分解成各类语法单位(语法范畴) 语法分析可以确定整个输入串是否构成一个语法上正确的程序”。遵循的是语言的语法规则(文法规则),用上下文无关文法描述。3 语义分析和中间代码生成任务:是对各类不同语法范畴按语言的语义进行初步翻译,4. 代码优化任务:是对前阶段产生的中间代码进行等价

5、变换或改造,以获得更高效(节省时间和空间)的目标代码。5. 目标代码生成任务:把中间代码(或经优化处理之后)变换成特定机器上的机器语言程序或汇编语 言程序,实现最终的翻译工作。此阶段工作十分依赖硬件系统常用的生成编译程序的方法:1.自编译:用某种高级语言书写自己的编译程序称为自编译。2 交叉编译:是指用 A机器上的编译程序来产生可在B机器上运行的目标代码。3 自展:首先确定一个非常简单的核心语言L0,然后用机器语言或汇编语言书写出它的编译程序TO ;再把语言L0扩充到L1,并用L0编写L1的编译程序T1 (即自编译);然后再把语言L1扩充为L2,并用L1编写L2的编译程序T2; 这样不断扩展下

6、去,直 到完成所要求的编译程序为止。4移植:是指 A机器上的某种高级语言的编译程序稍加改动后在B机器上运行。LL(1)分析法和递归下降分析法属于自上而下语法分析方法,LR分析法是一种自下而上进行规范归约的语法分析方法语义检查内容动态语义检查:运行时进行静态语义检查:编译时完成,例如以下几方面的检查。(1)类型检查,如参与运算的操作数其类型应相容。(2)控制流检查,用以保证控制语句有合法的转向点。(3)使用性标识符是否被声明。(4)一致性检查,如在相同作用域中标识符只能说明一次、case语句的标号不能相同等。符号表中的每一项包括两个部分:一部分填入名字(标识符);另一部分是与此名字有关的信息请写

7、出7种常用的优化措施,并指出哪几种主要用于循环优化1删除公共子表达式公共子表达式:计算结果相同的子表达式。2复写传播:尽量不引用值不变只传递信息的变量3删除无用赋值4. 代码外提(循环优化):把循环中的不变运算提到循环体前5. 强度削弱(循环优化):执行时间长的运算替换为执行时间短的6删除归纳变量(循环优化):变换循环控制条件7、合并已知量在各个基本块范围内进行的优化称为局部优化。对于编译程序所用的符号表来说,它所涉及的基本操作大致可以归纳为五类:(1) 判断一个给定的名字是否在表中;(2) 在表中填入新的名字;(3) 对给定的名字访问它在表中的有关信息;(4) 对给定的名字填入或更新它在表中的某些信息;(5) 从表中删去一个或一组无用的项。符号表的组织方式一般可分为直接方式和间接方式。直接方式是指在符号表中直接填入源程序中定义的标识符及相关信息间接方式是指单独设置一个字符串数组来存放所有的标识符,并在符号表的名字栏中设置两项内容:一是指针,用来指向标识符在数组中的起始位置;二是一整数值,用来表示该标识符的长度。运行时管理分静态存储管理和动态存储管理,静态存储分配是一种最简单的存储管理。一般而言,适于静态存储分配的语言必须满 足以下条件:(1) 数组的上下界必须是常数;(2) 过程调用不允许递归;(3) 不允许采用动态的数据结构(即在程序运行过程中申请和释放的数据结构)。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1