![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编译原理
getianao’
这个作者很懒,什么都没留下…
展开
-
编译原理系列之十 代码优化
代码优化 代码优化可分为与机器有关的优化和与机器无关的优化。 与机器有关的优化一般在目标代码上进行。与机器无关的优化一般在中间代码上进行。 代码优化也可分为局部优化、 循环优化和全局优化: 局部优化指的是在只有一个入口、 一个出口的基本程序块上进行的优化。 循环优化是对循环中的代码进行的优化,在一个程序运行时,相当多的一部分时间会花在循环上,因此,基于循环的优化非常重要。...原创 2018-12-25 14:42:00 · 1620 阅读 · 0 评论 -
编译原理系列之五 自底向上优先分析(1)-简单优先分析法
简单优先分析法1.基本概念通过语法树来理解这三个概念更加简单:文法G1[S]:S→ABA→bBA→AaB→aB→Sb语法树 短语:若S=*=>αAδ且A=+=>β,则称β是相对于非终结符A的句型αβδ的短语。 即:语法树中以非终结符的作为根的子树的叶子所组成的字符串。 如:ba是相对于非终结符A的句型AB的短语。句型baSb的短语有ba,...原创 2018-12-03 18:44:00 · 12518 阅读 · 2 评论 -
编译原理系列之六 自底向上的LR分析法(1)-LR(0)分析法
LR(0)分析法一、基本概念 拓广文法: 对于文法 G = (VN, VT, P , S ) , 增加如下产生式:S’->S ,其中, S’ ∈ VN∪ VT , 得到 G 的拓广文法,G’ = (VN ’, VT, P ’ , S’ ) 其实就是增加了一条右部为开始符号的产生式,就变成了拓广文法 可归前缀: 采取归约过程前符号栈中的内容,称做可归前缀。 这...原创 2018-12-06 17:02:00 · 2364 阅读 · 0 评论 -
编译原理系列之六 自底向上的LR分析法(2) – SLR(1)分析
SLR(1)分析1.SLR(1)解决的问题LR(0)文法的要求是①不同时含有移进项目和归约项目,即不存在移进-归约冲突。②不含有两个以上归约项目,即不存在归约-归约冲突。例如项目集Ii中存在: Ii ={A->α•bγ , B→ γ•,C→β• },此时就同时存在移进-归约冲突和归约-归约;因为你不知道下一步是选择归约还是移进,选择归约的话选择哪个产生式归约。而事实上一般文法...原创 2018-12-07 17:28:00 · 3202 阅读 · 3 评论 -
编译原理系列之三 词法分析
词法分析 NFA与DFA的等价性: 对于每个NFA M ′都一定存在一个DFA M,使L(M′)=L(M)。 NFA转DFA子集法: 状态集合I的ε-闭包:ε-closure(I),表示I中任意状态S经过任意条ε弧能到达的状态的集合。 <u>首先从初态S开始,计算它的ε-closure(S)为I0,然后计算当前状态下对于输入符号∑中任意字符a的ε-cl...原创 2018-12-23 17:09:00 · 290 阅读 · 0 评论 -
编译原理系列之二 文法和语言
文法和语言 ε,{ε},Ø三者之间的区别 : ε是一个终结符推导出的结果,表示一个不包含任何字符的序列。 Ø是不包含任何元素的空集{},表示不存在匹配文法的句子。 {ε}是任意一个符号串集合的0次幂,表示一个由空字组成的集合。 句子与句型: 如果符号串x是由起始符号推导出的,则称x是文法G[S]的句型。 如果x中只包含终结符,则称x是文法G[S]的句子。 文...原创 2018-12-23 17:18:00 · 1224 阅读 · 0 评论 -
编译原理系列之四 自顶向下语法分析方法
自顶向下语法分析方法 什么叫确定: 两个确定:①确定对最左的非终结符进行替换(最左推导)②对于同一个非终结符,确定一个产生式进行推导(SELECT集,无回溯)。 一个上下文无关文法是LL(1)文法的充分必要条件: 关于一个非终结符的各个产生式的可选集互不相交。 LL(1)文法的判定过程: 检查产生式中是否有含有左递归或左公因子: 含有左递归或左公因...原创 2018-12-24 17:41:00 · 1672 阅读 · 0 评论 -
编译原理系列之七 语法制导的语义计算
语法制导的语义计算1.基本概念 属性文法:在文法G[S]的基础上,为文法符号关联有特定意义的属性,并为产生式关联相应的语义动作或条件谓语,称之为属性文法,并称文法G[S]为之的基础文法。 属性文法AG是一个四元式,即AG = (G, A, R, B):G是上下文无关文法,A是属性的有限集合,R是语义规则式的有限集合,B是样式的有限集合。 例子: 产生式 语义动作...原创 2018-12-25 14:30:00 · 2826 阅读 · 0 评论 -
编译原理系列之八 符号表
符号表符号表用来体现作用域与可见性信息 符号表的作用: ① 收集符号属性;(词法分析) ② 上下文语义的合法性检查的依据;(语法分析) ③ 作为目标代码生成阶段地址分配的依据;(语义分析) 符号表中语言符号可分为关键字(保留字)符号,操作符符号及标识符符号 符号表中的标识符一般设置的属性项目有: ① 符号名 ② 符号的类型 ③ 符号的存储类别 ④ 符号的作用域及可视性 ⑤...原创 2018-12-25 14:32:00 · 10252 阅读 · 0 评论 -
编译原理系列之九 中间代码生成
中间代码生成 中间代码也与机器无关。 常见中间表示形式: 逆波兰式: 逆波兰式 中缀表达式转逆波兰式:按照算术表达式的计算顺序 根据操作数1、(操作数2)、运算符的顺序化成一个部分的后缀式,将这个后缀式在算术表达式中看成一个操作数继续按照上面方法分析。 逆波兰式转中缀表达式:根据逆波兰式的序列从左向右找运算符,找到后从这个运算符开始向前找出紧邻的操作数2、操作数...原创 2018-12-25 14:37:00 · 3007 阅读 · 0 评论 -
编译原理系列之五 自底向上优先分析(2)-算符优先分析法
算符优先分析法1.基本概念 算符文法(OG):文法G中没有形如A=>···BC···的产生式,其中B、C为非终结符,则G为算符文法(operator grammar)。 也就是说产生式的右部不能出现两个非终结符相邻,就好像算式中两个操作数相连。 算符文法的两个性质: ①算符文法中任何句型都不包含两个相邻的非终结符。 ②如果Ab(bA)出现在算符文法的句型y中,则y中...原创 2018-12-03 18:48:00 · 3413 阅读 · 0 评论