0
点赞
收藏
分享

微信扫一扫

活前缀及构造活前缀的DFA

凌得涂 2022-04-23 阅读 114
编辑器

目录

1.引入背景

2.基本定义

(1)字的前缀

(2)活前缀

3.识别活前缀

 4.构造识别活前缀的DFA

(1)文法的拓广

(2)LR(0)项目 

(3)相关例题


 

1.引入背景

上一讲我们讲了LR分析法和LR分析器的性质,我们知道了在规范规约过程中,栈内的符号串需要满足一定的条件,见下图:

LR分析器的工作过程实际上就是逐步产生规范句型的活前缀 。 

如何保证栈内的符号串永远不会出现在句柄之后呢,于是我们引入了字的活前缀。

2.基本定义

(1)字的前缀

是指字的任意首部,如字ab的前缀有ε(ε是任何字的前缀),a , ab ,abc。

(2)活前缀

可能大家看的有点懵,还是不理解什么叫做活前缀。其实通俗一点来讲,活前缀就是句柄的子集

3.识别活前缀

DFA状态机一直在分析活前缀,分析出一个句柄之后就分析到头了,然后立马规约这个句柄,就一直在规约句柄。活前缀之所以称为活前缀就是这么来的。为了防止歧义,就不能用NFA。

 4.构造识别活前缀的DFA

(1)文法的拓广

(2)LR(0)项目 

大家可能看了还有点懵,我来举个例子供大家理解一下。

 (3)相关例题

根据上面的概念,我们可以列出该文法的所有项目

 

按照这个思路我们就能构造出识别所有文法的活前缀,我们下一讲将介绍把识别文法所有活前缀的NFA确定化。 

举报

相关推荐

0 条评论