编译原理
文章平均质量分 54
moodfriend
这个作者很懒,什么都没留下…
展开
-
编译原理之LL(1) 、LR(0)、SLR、LR(1)、LALR文法的对比
考完编译原理有一段时间了,记得当时都被以上这五种文法搞懵了,所以希望写篇文章帮助那些正在学习的人。以下内容是依据龙书中文版讲解的,由于老师不同可能某些地方大同小异,如有什么纰漏之处还请指出,多谢~以下文章参考了:LL LR SLR LALR 傻傻分不清。首先来看张图,上图是四种文法的包含关系,即 LR(1)文法范围最大,而 LR(0)文法范围最小。同时也说明了四种文法分析过程的强弱,即 LR(1)文法分析最强,而 LR(0)文法分析最弱。那为什么没有 LL(1)文法呢?因为它和上面的四.转载 2020-06-27 10:49:22 · 6568 阅读 · 0 评论 -
从正则表达式到NFA(Thompson算法)
正规式定义也叫正则表达式(regular expression,常简写为RE或regex)。是计算机科学标准化的成就之一。描述了一种字符串的模式。形式上正则表达式是用于表征一组字符串的代数表示法。构建由较小的正则表达式按照特定规则递归地构建。每个正则表达式r定义一个语言。这个语言也是根据r的子表达式所表示的语言递归定义的。正规式与正规集字母表∑上的正规式和正规集递归定义如下:归纳基础ε和φ都是∑上的正规式,它们所表示的正规集分别为{ε}和 φ。其中:ε为空字符串,φ为原创 2020-05-17 08:36:12 · 11648 阅读 · 0 评论 -
FIRST集合基本构造
FIRST集合定义令G是一个不含左递归的文法,对G的所有非终结符的每个候选a定义它的终结首符集FIRST(a)为:FIRST(α) = { a│α ⇒∗ a…, a∈VT }若α⇒∗ε,则规定ε∈FIRST(α)。FIRST(α)被定义为从α推导得到的句子的首符号的集合,α是任意的文法符号串。n非终结符的FISRT集合中有空串与该非终结符属于NULLABLE集合等价。FIRST集合构造第一种说明:对于文法G的每个文法符号X∈VT∪VN:若 X ∈ VT,则...原创 2020-05-16 23:05:31 · 4718 阅读 · 4 评论 -
编译原理中的NULLABLE集合
定义非终结符X属于NULLABLE集合,当且仅当:基本:X → ε归纳:X → Y1…Yn, 且Y1…Yn都是非终结符并且都属于NULLABLE集合NULLABLE集合表示一个非终结符是否可以推出空串 ε 。意义属于NULLABLE意味着不用接受任何输入即可跳过该非终结符。例S → A B C | sA → a | εB → C | aC → c | εNULLABLE集合{A, C} //第一轮,只有A,C可以推出空串{A,.原创 2020-05-17 08:18:36 · 656 阅读 · 0 评论 -
上下文无关文法的组成
上下文无关文法上下文无关文法 G 是一个四元组 G = (VN , VT , S, £), 其中VN :非终结符的非空有限集合VT :终结符的非空有限集合, VN ∩ VT = ΦS: 开始符号,且S∈ VN £ :形式为 P→α的产生式的有限集合, 且 P∈VN ,α∈ (VN∪VT )*文法组成上下文无关文法由一组终结字符,一组非终结字符,一个开始字符,一...原创 2020-04-27 22:08:50 · 2976 阅读 · 0 评论 -
字符串的前缀与后缀
定义字符串的前缀:符号串左部的任意子串(或者说是字符串的任意首部)字符串的后缀:符号串右部的任意子串(或者说是字符串的任意尾部)举例比如说有一个长度为5字符串 x = "ababc",其中前缀有 ε(空串),a,ab,aba,abab,ababc;后缀有 ε(空串),c,bc,abc,babc,ababc,这样应该就很好理解了...原创 2020-04-27 19:08:25 · 15927 阅读 · 4 评论