编译原理
北朽暖栀24
这个作者很懒,什么都没留下…
展开
-
编译原理知识点总结——素短语、短语、直接短语、句柄的概念
素短语:至少含有一个终结符,并且除它自身之外不再含任何更小的素短语短语和直接短语的概念:一个句型的语法树中任一子树叶结点所组成的符号串都是该句型的短语,当子树中不包含其他更小的子树时,该子数叶结点所组成的字符串就是该句型的直接(简单)短语。句柄的概念:一个句型的最左直接短语汇称为该句型的句柄例子1:E->T|E+TT->F|T*FF-> (E) | i给出句型T*F+i的最右推导。1.首先通过最右推导(也叫规范推导):E=>E+T=>E+F=>E+i=&原创 2020-12-17 09:37:20 · 3137 阅读 · 2 评论 -
编译原理知识点总结——S属性和L属性定义
L属性定义的解释:一个不满足的例子:这里的Q的继承属性依赖于R的继承属性了,依赖了右边的兄弟结点。原创 2020-12-16 11:28:53 · 5134 阅读 · 0 评论 -
编译原理知识点总结——SDD
文法属性的分类:继承属性例子,带有继承属性的SDD,这里addtype是副作用。计算属性的顺序,拓扑序列:这里的副作用设置一个虚属性存在环的情况,这样就不能得到一个拓扑排序。...原创 2020-12-16 11:21:15 · 2923 阅读 · 0 评论 -
编译原理知识点总结(哈工大)——SLR分析
知道在哪些情况下能解决冲突:SLR算法原创 2020-12-15 21:14:30 · 439 阅读 · 0 评论 -
中国大学mooc哈工大编译原理第6单元答案——语法分析3
注意是最左直接短语注意还有结束符注意是最左直接短语原创 2020-12-15 15:41:32 · 182 阅读 · 0 评论 -
编译原理知识点总结(哈工大)——LR0分析表构造算法
CLOSUSER()函数,计算项目的闭包的goto函数计算状态集构造分析表第一个项目要求归约,第二个项目要求移入,这就是移入归约冲突归约规约冲突,不知道用哪个项目进行归约原创 2020-12-15 15:38:52 · 667 阅读 · 0 评论 -
编译原理知识点总结(哈工大)——LR0分析表如何构造
1.项目的概念有k个字符就有k+1个项目2.引入增广文法目的:让开始符号只出现在左部后继项目的定义等价项目只要是非终结符就是等价的如下图:同一种颜色的就是等价的项目闭包如何找闭包,找等价状态一直到出现非终结符。每个项目推出对应的后继项目,一直到只有归约状态由状态转化图得到预测表底下这个状态表示的是acc遇到终结符填action表,遇到非终结符填goto表归约状态填写r,待约状态填s...原创 2020-12-15 15:03:53 · 1486 阅读 · 3 评论 -
编译原理知识点总结(哈工大)——语法分析自底向上分析
句柄:一旦句柄形成,立即将它归约,归约是最右推导的逆过程规范句型:出现的问题,使用了错误的句柄这里有两颗子树,但是应该选择最左边的一个也就是这一棵高度为2的子树的边缘,而之前的i不是高度为2的子树的边缘...原创 2020-12-15 12:25:50 · 292 阅读 · 0 评论 -
中国大学mooc哈工大编译原理第5单元语法分析2答案
因为在这里,分析第一个式子,因为R可能为空,所以T的fisrt集也是S的fisrt集注意,空串也在fisrt集中原创 2020-12-15 11:55:15 · 152 阅读 · 0 评论 -
哈工大编译原理知识点总结——预测分析中的错误处理
错误的情况处理的方法案例分析例题,根据上述预测分析表分析下面的串根据使用方法第1条这里E遇到+为空,就将+出栈了根据使用方法第2条:F遇到+的时候,遇到同步代码块,这个时候就报错,然后将F出栈整个题目的答案总结1.根据follow集将同步代码块加入预测分析表。2.根据根据预测分析表的使用方法,依次对输入的串进行判断。...原创 2020-12-15 11:33:03 · 373 阅读 · 0 评论 -
中国大学mooc哈工大编译原理第四单元语法分析答案
LL1文法需要满足的条件LL1文法需要满足的条件原创 2020-12-14 21:20:15 · 144 阅读 · 1 评论 -
哈工大编译原理知识点总结——语法分析LL1文法
为了确定什么时候用空产生式,follow集出现了比如下面的例子,a,c就是B的follow集里面的,因为在产生式1的B的后面是C,C可以转换为c和a。为了叙述上的方便,从而引出select集first集和select集的关系为什么?例子如下,对式子2,3,4 ,当没有4的时候,也就是first集合...原创 2020-12-14 20:22:07 · 417 阅读 · 0 评论 -
哈工大编译原理知识点总结——first集,follow集的计算
1.Fisrt集第一步:如果右边是以终结符符号开头,就直接加入2.第二步将空串加入第三步,产生式右部是非终结符打头比如1和3先分析式1,那么将T的fisrt集全部加入,因为T没有,所以暂时不加入再看3,将F的fisrt集加入T的fisrt集再看1总结计算串的fisrt集2.计算follow集总结:非终结符打头,非终结符的first集合空产生式 follow集合终结符打头,终结符...原创 2020-12-14 20:20:00 · 500 阅读 · 0 评论 -
哈工大编译原理知识点总结——语法分析文法转换
1.回溯问题2.递归问题解决方法,消除左递归为什么可以这么消除呢?本质上得到的是一样的。例题:一般形式消除间接左递归间接左递归如何消除:原创 2020-12-13 15:55:09 · 269 阅读 · 0 评论 -
哈工大编译原理知识点总结——语法分析自顶向下分析概述
概念:提出问题:最左推导最右推导唯一性:最左推导和最右推导是唯一的分析过程考虑两个因素,一个是输入的指针,一个是最左边的非终结符。非终结符根据当前需要匹配的输入的指针来选择候选式。自顶向下分析的通用过程:因为有时候存在相同的以a打头的候选式,所以可能要回溯,影响了效率。改进,预测分析...原创 2020-12-13 15:31:00 · 216 阅读 · 0 评论 -
中国大学MOOC哈工大编译原理第3单元部分习题解读
注意包括自身的值因为A1最后面有个1,所以必然是以1结尾同样因为只有为0的时候才递归结束,分析句子结构知道了必然是0开头。概念初始状态只能有一个。注意a在前面,b在后面原创 2020-12-13 12:58:05 · 141 阅读 · 0 评论 -
编译原理知识点总结——识别单词的DFA
例子:第一步,将正则表达式转化为NFA分解分析转化为转化为:因为或了一个空串,所以并联一个空串。转化为:所以最终转化为:DFA转化为NFA分析过程已知NFA1.先找到初始状态2.观察通过1,3,6能转化为哪些其中,状态1能通过 . 转化为2; 3通过E转化为4,5;各自都可以通过d转化为自己。所以得到上图。再看4,5的转化最终得到结果:注意:分析转化路线的时候不用考虑空边了,因为空边在状态集合里面蕴含了。...原创 2020-12-13 12:41:06 · 984 阅读 · 0 评论 -
编译原理知识点总结——从NFA到DFA的转化
都是由若干个a加若干个b加若干个c,若干个最少为1。例2,带空边的原创 2020-12-12 21:42:30 · 442 阅读 · 0 评论 -
编译原理知识点总结——从正则表达式到有穷自动机的转化
一般先构造NFA,再通过NFA构造DFA:几种常见的转化:例子原创 2020-12-12 21:33:58 · 288 阅读 · 0 评论 -
编译原理知识点总结——有穷自动机的分类
1.确定的有穷自动机可以用转换表表示:2.非确定的有穷自动机:两者的相互转换特殊情况:带空边和不带空边的转化:因为在不带空边的NFA中,A,B,C都是终态,都可以由这个正则表达式来表示。DFA的算法实现:...原创 2020-12-12 21:25:22 · 1092 阅读 · 0 评论 -
编译原理知识点总结——有穷自动机
1.概念例子:自动化:2.FA模型:FA的转换图:3.最长匹配原则:原创 2020-12-12 21:01:08 · 339 阅读 · 0 评论 -
编译原理知识点总结——正则表达式和正则定义
1.正则表达式的定义2.例子,C语言中的无符号整数RE正则文法和正则表达式的关系:正则定义:例子:上图最后一个表示number,这里digits optionalFraction optionalExponent表示的是数字。原创 2020-12-12 20:51:42 · 2861 阅读 · 1 评论 -
哈工大编译原理mooc第二单元练习题答案及解析
答案D因为S->xSx|y,也就是有两种情况,S可以推出xSx,也可是推出y。而xSx中又有S,所以可以循环下去,一直推到y为止。就得出了x的n次方乘y乘x的n次方(n>=0)答案D因为 b->S Sc->S S1->S S0->S,由这个句子可以推出S。答案A同第5题答案 C答案A答案D答案D因为S->xS|y,也就是有两种情况,S可以推出xSx也可是推出y。而xS中又有S,所以可以循环下去,一直推到y为止.原创 2020-12-12 17:14:14 · 296 阅读 · 0 评论 -
编译原理知识点总结——CFG分析树
1.基本概念2.分析树3.短语和直接短语:例子:直接短语的性质:反之,不成立为什么不成立?例子人民,生活,水平是三个名词的直接短语,根节点都是名词也是产生式的右部,但不是某颗产生树的边缘。4.二义性文法概念例子:判断2义性...原创 2020-12-12 16:41:59 · 829 阅读 · 0 评论 -
编译原理知识点总结——文法的分类
分四类:0型文法1型文法不包括空产生式,这是因为空产生式产生的空代表β为空,而α又必须包含非终结符,所以不满足定义。2型文法:产生式的左部必须是非终结符3型文法四种文法之间的关系,逐级的进行限制:...原创 2020-12-12 16:09:47 · 299 阅读 · 0 评论 -
编译原理知识点总结—语言的定义
推导和归约总结:n步推导:0步推导:直接推导的正闭包:推导的例子归约:将右部替换为左部句子和句型:例子:语言的定义:语言上的运算:原创 2020-12-12 15:18:49 · 463 阅读 · 0 评论 -
编译原理知识点总结——文法的定义
1.从自然语言举例基本概念:一个文法是用来描述句子的构成规则,那么基本符号是单词,一个文法是用来描述单词的构成规则,那么基本符号是字母。2.文法的形式化定义:详细解释一下终结符和非终结符终结符: 通俗的说就是不能单独出现在推导式左边的符号,也就是说终结符不能再进行推导。非终结符: 不是终结符的都是非终结符。非终结符可理解为一个可拆分元素,而终结符是不可拆分的最小元素。例子:有文法G2[S]为:S->ApS->BqA->aA->cAB->bB-原创 2020-12-12 14:50:02 · 1815 阅读 · 0 评论 -
编译原理知识点总结——字母表和串(附思维导图)
1.字母表字母表本质是一个集合字母表的运算:1.字母表的乘积一个属于字母表1,一个属于字母表22.字母表的n次幂本质:长度为n的符号串构成的集合注意空串3.字母表的闭包4.克林闭包2.串:1.概念2.长度3.连接...原创 2020-12-12 12:45:27 · 1435 阅读 · 1 评论