摘要: 代码优化 代码优化可分为与机器有关的优化和与机器无关的优化。 与机器有关的优化一般在目标代码上进行。与机器无关的优化一般在中间代码上进行。 代码优化也可分为局部优化、 循环优化和全局优化: 局部优化指的是在只有一个入口、 一个出口的基本程序块上进行的优化。 循环优... 阅读全文
posted @ 2018-12-25 14:42 getianao 阅读(6168) 评论(0) 推荐(1)
摘要: 中间代码生成 中间代码也与机器无关。 常见中间表示形式: 逆波兰式: 逆波兰式 中缀表达式转逆波兰式:按照算术表达式的计算顺序 根据操作数1、(操作数2)、运算符的顺序化成一个部分的后缀式,将这个后缀式在算术表达式中看成一个操作数继续按照上面方法分析。 逆波兰式... 阅读全文
posted @ 2018-12-25 14:37 getianao 阅读(5739) 评论(0) 推荐(0)
摘要: 符号表符号表用来体现作用域与可见性信息 符号表的作用: ① 收集符号属性;(词法分析) ② 上下文语义的合法性检查的依据;(语法分析) ③ 作为目标代码生成阶段地址分配的依据;(语义分析) 符号表中语言符号可分为关键字(保留字)符号,操作符符号及标识符符号 符号表中的... 阅读全文
posted @ 2018-12-25 14:32 getianao 阅读(2122) 评论(0) 推荐(0)
摘要: 语法制导的语义计算1.基本概念 属性文法:在文法G[S]的基础上,为文法符号关联有特定意义的属性,并为产生式关联相应的语义动作或条件谓语,称之为属性文法,并称文法G[S]为之的基础文法。 属性文法AG是一个四元式,即AG = (G, A, R, B):G是上下文无关文... 阅读全文
posted @ 2018-12-25 14:30 getianao 阅读(1951) 评论(0) 推荐(0)
摘要: 自顶向下语法分析方法 什么叫确定: 两个确定:①确定对最左的非终结符进行替换(最左推导)②对于同一个非终结符,确定一个产生式进行推导(SELECT集,无回溯)。 一个上下文无关文法是LL(1)文法的充分必要条件: 关于一个非终结符的各个产生式的可选集互不相交。 ... 阅读全文
posted @ 2018-12-24 17:41 getianao 阅读(2151) 评论(0) 推荐(0)
摘要: 文法和语言 ε,{ε},Ø三者之间的区别 : ε是一个终结符推导出的结果,表示一个不包含任何字符的序列。 Ø是不包含任何元素的空集{},表示不存在匹配文法的句子。 {ε}是任意一个符号串集合的0次幂,表示一个由空字组成的集合。 句子与句型: 如果符号串x是由起始符... 阅读全文
posted @ 2018-12-23 17:18 getianao 阅读(2431) 评论(1) 推荐(0)
摘要: 词法分析 NFA与DFA的等价性: 对于每个NFA M ′都一定存在一个DFA M,使L(M′)=L(M)。 NFA转DFA子集法: 状态集合I的ε-闭包:ε-closure(I),表示I中任意状态S经过任意条ε弧能到达的状态的集合。 首先从初态S开始,计算它... 阅读全文
posted @ 2018-12-23 17:09 getianao 阅读(814) 评论(0) 推荐(0)
摘要: 引论什么是编译程序:一个编译程序是一个语言翻译程序,它将源语言程序翻译成目标语言程序。编译流程高级语言程序的处理过程:需预处理的源程序--(预处理程序)-->源程序--(编译程序)-->目标汇编程序--(汇编程序)-->可重定位的机器语... 阅读全文
posted @ 2018-12-23 17:06 getianao 阅读(265) 评论(0) 推荐(0)
摘要: 其它LR分析技术一、LR(1)分析1. SLR(1)分析的问题无效归约问题:在SLR(1)分析中,我们考虑了所归约非终结符的 Follow 符号,这可以分析出怎么选择归约或移进,但是在选择归约的情况中里,我们只是确认了移进符号是属于非终... 阅读全文
posted @ 2018-12-08 17:01 getianao 阅读(584) 评论(0) 推荐(0)
摘要: 自动化构建工具与gradle一、定义我们在学习c语言的时候都知道,c语言源程序从源程序到二进制程序,经过了预处理(Preprocessing), 编译(Compilation), 汇编(Assemble), 链接(Linking)的过程,在使用gcc进行编译时只需要g... 阅读全文
posted @ 2018-12-07 19:29 getianao 阅读(329) 评论(0) 推荐(0)