![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编译原理
文章平均质量分 92
另一个喵喵喵
这个作者很懒,什么都没留下…
展开
-
编译原理 规范LR方法
复习我们之前学习了SLR技术,包括LR(0)文法和SLR(1)文法,不过我们还是遇到了移进-归约冲突(SLR(1)、LR(0))和归约-归约冲突(LR(0))的问题。其原因就是我们的项集构造不够精确,如果能在状态中包含更多的状态信息,在建表的时候就能排除掉一些不可能出现的归约动作。...原创 2020-05-28 13:47:20 · 2489 阅读 · 0 评论 -
编译原理 LR语法
复习我们想要通过自底向上文法来进行语法分析,就要使用移入-归约法不断将右串归约成左侧的非终结符最后回到开始字符。在这个过程中,遇到的问题有:何时移入?何时归约?归约时哪部分归约?归约成哪部分?LR(k)文法L表示从左往右扫描,R表示反向构造出一个最右推导,k表示向前看k个字符,缺省为1。一个输入:字符串w;一个输出:分析完成的树;一个栈;一个驱动程序;一个已发分析表。分析表包括Action部分和Goto部分。每次实现,先将初始状态S0压入栈,将串w$作为输入缓冲区内容。接着调用驱动程序原创 2020-05-19 21:02:19 · 9426 阅读 · 0 评论 -
编译原理 自底向上语法分析
引言自底向上的语法分析相当于从叶子节点开始向上一直到根部构造一棵语法树。我们将使用移入-归约法完成这一过程。归约定义:一个与某产生式体相匹配的特定子串被替换成该产生式头部的非终结符号。相当于反向的最右推导。举例:给定文法:S->aABeA->Abc | bB->d串abbcde可以由推导S=>aABe=>aAde=>aAbcde=>abbcde得到。那么逆置最后一步,把b替换成非终结符A就是归约,并且称这个b为句柄。句柄:如果有S->原创 2020-05-12 16:07:00 · 1739 阅读 · 0 评论 -
编译原理 LL(1)文法
复习为了构建语法树(目的)我们采用了自顶向下的语法分析(方法),深度优先地创建各个节点。这其中我们讨论到非递归向下的语法分析,需要借助预测分析表来实现。所谓LL(k)文法,就是构造出向前看k个输入符号的预测分析器。这一节讨论向前看1个输入符号的LL(1)文法。FIRST函数定义:FIRST(α)表示可从α推导得到的串的首符号的集合。其中α为任意的文法符号串(非终结符,终结符,空串e)。特别...原创 2020-05-05 19:33:28 · 4673 阅读 · 0 评论 -
编译原理 自顶向下语法分析
自顶向下语法分析对于任何输入串,从文法开始符号(根节点)出发,自上而下,从左到右地为输入串建立语法分析树。简而言之,就是寻找输入串的最左推导的过程。之前我们了解到,一旦有左递归存在便无法构建这样的语法树,所以用自顶向下语法分析必须先去除左递归。同样,由于使用最左推导,也不能处理有复杂回溯的输入串。递归向下的预测分析自顶向下的语法分析的一种。预测分析能够根据当前输入的符号为非终结符确定采用哪...原创 2020-04-30 23:29:04 · 2297 阅读 · 0 评论 -
编译原理 上下文无关文法
引言学完了词法分析,我们知道词法分析器将正则表达式转换成词法单元流,但对于这个记号流我们不知道是否能由正确的文法产生,因此我们需要通过语法分析器来检测其合法性。语法分析器的输出是一棵语法分析树(无论显性还是隐性),并且进行一些语法纠错处理。语法分析的整个过程大概就是我们先定义一个语法,再用相应的算法来检测我们的词法单元流是否符合该语法。这里主要讨论上下文无关文法构成的语法和自顶向下、自底向上的语...原创 2020-04-18 23:19:07 · 2012 阅读 · 0 评论 -
Hopcroft最小化算法化简DFA
复习我们将一个正则表达式通过MYT算法转化成了一个不确定有限自动机(NFA),又千辛万苦用子集构造算法整合掉多余的状态,生成了一个确定有限自动机(DFA),然后发现状态还是太多了,并不是最精简的、状态最少的。为了让计算机更快地执行,只好我们再出马给他整一个算法,来化简DFA,直到状态数最少。这个算法就是Hopcroft最小化算法。重要函数Split(G)输入:G,一个状态集合输出:T1,...原创 2020-04-01 00:42:59 · 1363 阅读 · 0 评论 -
基于MYT算法和自顶向下算法从正则表达式到NFA
复习有限自动机分为两种:不确定的有限自动机(NFA)和确定的有限自动机(DFA)。我们分别用一个五元组表示。不确定的有限自动机:有限状态集合S.输入符号集合Σ转换函数move:Sx(Σ∪(ε)->p(s))状态S0是唯一的开始状态F包含于S是接受状态集合确定的有限状态自动机1、2、4、5与NFA一样。转换函数move:Sx(Σ)->p(s),两者区别在于:有限自动机任...原创 2020-04-04 21:29:26 · 2833 阅读 · 1 评论