
编译原理
文章平均质量分 79
东南大学廖力
ychychychychychych
这个作者很懒,什么都没留下…
展开
-
编译原理——运行时数据区管理
运行时数据区管理:引言:存储单元分配策略:静态存储分配:在编译时就可以完成为数据项分配存储单元程序不能包含可变数组和递归调用点击程序,程序先完成变量内存单元的分配,到了运行到那一步的时候直接使用编译时指定的地址动态存储分配:到运行时才进行存储分配可以使用可变数组和递归分配方式:栈式存储分配每进入一个过程,就为过程分配一块数据区堆式存储分配由用户动态申请和释放空间栈式存储管理:运行递归调用,不允许定义嵌套过程和可变数组嵌套过程:在一个原创 2021-05-17 14:15:19 · 288 阅读 · 0 评论 -
编译原理——代码优化
代码优化:概述:目的:提高代码运行效率,占用更少空间实质:代码之间的等价变换优化概念:优化等级:源程序级 程序员做的代码优化中间代码级,主要优化内容 编译程序优化部分目标代码级优化代价:优化算法的复杂度,即编程难易程度及算法时间复杂度优化代码和优化程度的关系:手工水平为最优化代码,也就是汇编优化的分类:局部优化,针对一段顺序执行的语句序列的优化优化方法:合并已知量删除公共子表达式变量传播与无用赋值删除对于常量运算,可以直接在编译阶段原创 2021-05-17 14:15:00 · 1420 阅读 · 0 评论 -
递归下降分析法
介绍:递归下降分析法是针对LL(1)文法的一种语法分析方法;通过对文法的消除左递归,提取左公因子,对各个产生式和非终结符求first()和follow()集,通过first()和follow()集构造该文法的预测分析表,当这个预测分析表中不存在多重定义项,那么这个文法就是LL(1)文法,可以通过递归下降分析法来判断某个句子是否可以结果这个文法得到。实现:文法:E->TE’ E’->+TE’ | 空串T->FT’ T’->*FT’ | 空串F-&原创 2021-04-30 11:39:21 · 2063 阅读 · 0 评论 -
编译原理——语法制导翻译并产生中间代码(while,复合语句和过程调用语句的翻译)
while,复合语句和过程调用语句的翻译while:S的chain可以理解为回填while语句之后的第一个四元式,对于之前的if……else也可以这样理解W的语义子程序需要保留四元式号,Wd需要回填TC,S需要生成循环S1可能是带出口链条的句子,所以这里需要回填一些S1的链条,W.QUAD表示的就是while语句的开头部分。解释:记录开头值NXQ,翻译完do,回填ETC的值,将EFC赋值给WDchain,回填开头的值到S1chain中,这里主要是为了一些做完的语句确定之后跳转的位置,同时生产跳转原创 2021-03-25 09:10:46 · 2490 阅读 · 0 评论 -
编译原理——语法制导翻译并产生中间代码(布尔表达式和控制语句)
语法制导翻译并产生中间代码:概述:语法分析之后,编译的任务是由已识别成功的正确源程序生成一组规格一致,便于计算加工的指令形式。中间代码的生成方法:语法制导翻译,属性文法制导翻译中间代码:不是机器语言,便于生成机器语言,便于代码优化。中间代码的形式:逆波兰式树形表示法三元式四元式翻译方法:语法制导翻译在语法分析基础上边分析边翻译语法制导翻译会根据文法产生式右部符号串的含义,进行翻译,翻译的结果是生成相应中间代码。语法制导翻译的依据是语义子程序具体做原创 2021-03-24 15:34:46 · 10644 阅读 · 1 评论 -
编译原理——自下而上的语法分析方法(LR分析法)
LR分析法及分析程序自动构造概述上下文无关文法的LR分析法LR:自左至右扫描,最右推导的逆过程(也就是最左归约)LR方法:在归约的过程中,一方面记住移入和归约的整个符号串,另一方面通过产生式推测未来可能碰到的输入符号优缺点:优点:文法范围广,识别能力强,可以识别出错位置缺点:工作量大,需要构造这种分析程序的产生器产生器作用:应用产生器产生一大类上下文无关文法的LR分析程序对二义性文法或难分析的特殊方法,施加一些限制使之能用LR分析法LR分析器:包括两部原创 2021-03-18 08:34:38 · 12873 阅读 · 0 评论 -
编译原理——自下而上的语法分析方法(算符优先分析法)
自下而上的分析方法概述归约:自上而下的语法分析过程过程:初态:栈中只有#,读头指向最左边的单词符号语法分析程序执行动作移进读入一个单词并压入栈中,读头后移归约,检查栈顶若干符号,能否进行归约,若能,以产生式左部代替该符号,同时输出产生式编号例子:该例子使用的是简单优先分析法这种方式的问题,只有在有树图的情况下才好判断句柄,也就是难以寻找句柄,对于电脑来说,不容易实现,且耗费时间多相邻文法符号之间的优先关系:句柄寻找:句柄的概念:在一棵树中,这棵树的最左直接短语原创 2021-03-18 08:33:51 · 4957 阅读 · 0 评论 -
编译原理——自上而下的语法分析方法(LL分析法)
概述:语法分析的地位:编译程序的核心部分任务:词法分析出来的单词序列是否是给定文法的句子理论:上下文无关文法和下推自动机方式:自上而下的语法分析(推导)和自下而上的语法分析(规约)下推自动机:下推自动机模型:pda和fa的模型相比,多了一个下推栈决定pda的动作因素:当前状态,读头指向的符号,下推栈栈顶符号当输入串读完下推栈为空,到达终态下推自动机定义:当处于q状态,不需要读入任何字符,就可以将栈顶符号A转化为w(欧米伽),就是推导的过程,当处于q状态,读入一个字原创 2021-03-17 11:46:56 · 3736 阅读 · 0 评论 -
编译原理—词法分析
词法分析在单词的级别上分析和翻译源程序,需要将单词翻译成(类号,内码)的二元表达 式,用于后序的语法分析理论基础有限自动机理论有限自动机与正规文法,正规式之间在描述语言方面有一一对应关系正规文法:A->αB,A->α,或者A->Bα,其中A,B∈VN,α∈VT*,其中当A->αB或者A->α为右线性文法,A->Bα或者A->α为左线性文法正规文法和有限自动机正规文法,3型文法正规文法是描述正规集的文法,用于描述程序语言的语法部分符原创 2021-03-16 09:52:53 · 742 阅读 · 0 评论 -
编译原理——编译基础知识
编译基础知识语言是什么1.1,高级语言语言就是一个记号系统通过语法来组成语义1.2,语法规则如何语言程序可以看成一定字符集语法使得这串字符串形成一个形式上正确的程序1.3,词法规则规定了那些字符串是单词符号单词符号一般包括:常数,标识符,基本字,算符等等可以使用正规式和有限自动机理论来描述词法结构进行词法分析正规式:正确的单词符号有限自动机:用来比较编写的程序符号和正规式是否一样1.4,语义离开语义,语言就是一堆符号的集合字符字母表和符原创 2021-03-14 14:38:44 · 1440 阅读 · 0 评论 -
编译原理——引论
目录第一章 引论1.1程序设计语言与编译:1.2编译程序概述基本介绍:词法分析语法分析中间代码生成:优化目标代码生成:编译原理介绍的是如何将高级语言变为硬件能识别的机器语言**第一章 引论1.1程序设计语言与编译:程序设计语言:高级语言,汇编语言,机器语言汇编程序:将汇编语言转化为机器语言不同机器之间可能汇编语言不同,因此高级语言出现了程序语言的转化翻译,将某种语言的源程序,在不改变语义的情况下转化为另外一种语言编译,将高级语言转化为低级语言的过程解释,接收某个高级语言的一原创 2021-03-12 15:25:28 · 194 阅读 · 0 评论