
think in 编译原理
winglessbird
这个作者很懒,什么都没留下…
展开
-
正则pumping lemma和infeasible path
正则的pumping lemma 说如果存在环的话那么就是a* 了,所以对a做某些限制的 比如 n(a) == n(b) 的就一定不是正则语言。 而在软测中有个infeasible path(并且也是在循环中产生的), 先对代码画出CFG图, 然后如果业务要求某个循环至少一次,但是在CFG图中是可以不循环的, 似乎和这个影影约约有些关系...原创 2015-11-11 21:24:42 · 740 阅读 · 0 评论 -
【直接NFA->DFA】
1.为什么要加#?比如(a|b)*a b b # 1 2 3 4 5 6因为对于每个NFA的状态集,比如{1} 表示的是分析到了1对应的位置之前。 所以如果不加#的话, 对于{5} 表示的是分析到了b之前, 但这个时候并没有结束。那把{1} 表示的是分析到了1对应的位置之前 改成 分析到了1对应的位置之后,又会发现一个问题,那怎么表示start,最开始的状态呢?原创 2015-11-01 13:16:48 · 331 阅读 · 0 评论 -
【直接NFA->DFA】易错点
1.在计算followpos的 cat节点的时候,是followpos(child1) = firstpos(child2) 而不是follopos(father) = firstpos(father)原创 2015-11-01 13:20:28 · 347 阅读 · 0 评论 -
是不是所有的文法都可以化为LL(1)文法?
这个问题也是我想问的... 然后就搜到了这样的一个回答提出一个问题:是不是所有的文法都可以化为LL(1)文法?这个问题提得很好,说明该同学确实认真学习了本章内容,对没有讲到的问题进行了深入的思考。 应当指出,并非一切非LL(1)文法都能利用提取左因子的方法将它改造为LL(1)文法。例如,对于文法S→AU|BR A→aAU|b转载 2015-11-18 16:09:29 · 15913 阅读 · 3 评论 -
四类文法
乔姆斯基把方法分成四种类型,即0型、1型、2型和3型。这几种文法类型的概念一定要掌握,是一个非常重要的考点。对于这几种文法,一般书上都只有简单的概念介绍,比较抽象,所以很多学员都没有真正理解。下面我将把概念结合例题进行讲解。 0型文法 设G=(VN,VT,P,S),如果它的每个产生式α→β是这样一种结构:α∈(VN∪VT)*且至少含有一个非终结符,而β∈(VN∪VT)*,则G是一个转载 2015-12-10 17:58:28 · 2000 阅读 · 0 评论