
编译原理
莫余
无论如何,都要去试一试,哪怕不能证明我可以!
展开
-
【编译原理】 LR(0) 分析表
LR(0) 步骤1. 写成 拓广文法 (S’→ S)2. 活前缀的 DFA(靠近.后面的非终结符)看状态Ii里面,是不是只存在一个规约项目。如果有两个规约项目,就是规约——规约冲突;如果同时有规约项目和移进项目,就是移进——规约冲突。3. ACTION表写非终结符 + “#”,GOTO表写终结符4. GOTO表只填写数字,ACTION表看项目类型例题1(项目集规范族、LR(0)分析表)例题2...原创 2021-05-28 19:30:02 · 3883 阅读 · 3 评论 -
【编译原理】最小化 DFA
最小化 DFA最小状态DFA的含义1.没有无关状态(多余状态、死状态)什么是无关状态?死状态:从这个状态没有通路到达终态;S1多余状态:从开始状态出发,任何输入串也不能到达的那个状态。S2如何消除无关状态?删除2.没有两个状态是互相等价(不可区别)两个状态 s 和 t 等价的条件:兼容性(一致性)条件——同是终态或同是非终态传播性(蔓延性)条件——对于所有输入符号,状态s和状态t必须转换到等价的状态里DFA的最小化—例子,第一步都是固定的。分成终态和非终态1.将M的状态原创 2021-05-28 17:25:19 · 16058 阅读 · 0 评论 -
【编译原理】NFA 转换成 DFA
NFA 转化成 DFA子集法例题为上篇博客这种表是从 NFA到DFA 的时候必须要用到的。第一列第一行 I 的意思是从NFA的起始节点经过任意个ε所能到达的结点集合。Ia表示从该集合开始经过一个a所能到达的集合,经过一个a的意思是可以略过前后的ε。同样Ib也就是经过一个b,可以略过前后任意个ε。第二行以及后面的I是这么确定的:上面的Ia和Ib哪个还没出现在I列。这步做完以后,为了画出最后的DFA,那么肯定得标出一些号来,比如1,2,3 或者A,B,C。含有终态标号的即为终态。.原创 2021-05-28 17:11:19 · 2204 阅读 · 0 评论 -
【编译原理】正规式转换成NFA
非确定有限自动机(NFA)状态转换图状态转换矩阵识别语言Σ中的符∑正规式转换成NFA例题具体步骤NFA 转化成 DFA子集法这个表是从NFA到DFA的时候必须要用到的。第一列第一行I的意思是从NFA的起始节点经过任意个ε所能到达的结点集合。Ia表示从该集合开始经过一个a所能到达的集合,经过一个a的意思是可以略过前后的ε。同样Ib也就是经过一个b,可以略过前后任意个ε。至于第二行以及后面的I是怎么确定的。我参考了一些题目才明白,原来就是看上面的Ia和Ib哪个还没出现在I列原创 2021-05-28 16:47:49 · 12962 阅读 · 5 评论 -
【编译原理】左递归及其消除
左递归定义对于一文法,存在非终结符A,A→ Aα,则含有左递归。左递归的分类直接左递归:A → Aa简介左递归:A → Ba, B → …… → Ab左递归的消除直接左递归的消除形式:A → Aa|b改写为:A → bA’ ,A’→ aA’|ε间接左递归的消除例题(消除左递归)S → (T) ,S → a,S → ε,T → ST’,T’ → ,ST’|ε...原创 2021-05-28 16:28:13 · 8144 阅读 · 0 评论 -
【编译原理】逆波兰表达式的求法及值的实现
逆波兰表达式的求法及值的实现逆波兰表达式的求法应注意以下几点:运算对象顺序相同运算符紧跟运算对象后转移操作符各类运算符优先级(从高到低)括号 > 算术运算符(+ - * /) > 关系运算符(< <= > >= ==) > 逻辑运算符(非与或)例题如下逆波兰表达式的值的实现...原创 2021-05-28 15:40:10 · 743 阅读 · 0 评论 -
【编译原理】 三地址语句的具体实现
三地址语句的具体实现三地址代码是由下面一般形式的语句构成的序列:x:=y op z其中, x、y、z为名字、常数或编译时产生的临时变量;op代表运算符号。每个语句的右边只能有一个运算符。三元式三元式主要由三部分组成:(OP,arg1,arg2)间接三元式为了便于优化处理,作为中间代码,设一张指示器表(间接码表)四元式四元式主要由四部分组成:(OP,arg1,arg2,result)其中,OP是运算符,argl、arg2分别是第一和第二个运算对象,result是编译原创 2021-05-28 15:01:21 · 5391 阅读 · 2 评论 -
【编译原理】自顶向下的语法分析之 LL(1) 文法分析
自顶向下的语法分析之 LL(1) 文法分析什么是 LL(1) 文法?第一个L表明自顶向下分析是从左向右扫描输入串。第二个L表明分析过程将用最左推导。1表明只需向右查看一个符号便可决定选择哪个产生式进行推导。LL(k) 文法指只需向右查看k个符号便可决定选择哪个产生式进行推导。LL(1) 必须满足的3个条件是?文法不含有左递归对于文法中的每一个非终结符A的各个产生式的候选FIRST集两两不相交。对于文法中的每个非终结符A,若它存在某个候选首字符集包含ε,则FIRST(A) ∩ FOLL原创 2021-05-27 23:54:39 · 1624 阅读 · 0 评论 -
【编译原理】正规式和正规文法的转换
正规式和正规文法的转换正规式到正规文法A—>xy可分解成 A—>xB,B—>y正规文法到正规式原创 2021-05-27 23:21:48 · 11328 阅读 · 1 评论