活前缀的有效项目集

1、活前缀的有效项目集的定义

 

2、简单理解

这个概念出现于LR分析法,LR分析法可以看作是一种模拟最左规约的符号分析法,我们假设我们在做最左规约的时候,有一个符号栈存放我们读入的符号

 

活前缀的有效项目集,就是当栈内的符号是这个活前缀的时候,可能运用的下一步的最左规约的规则。

 

3、例子
编译原理书上有一个很好的例子

 

此时符号栈中有E+T*
如果下一个读入符号是F,则可以运用T->T*.F
如果下一簇读入符号是(E),则可以运用F->.(E)
如果下一个读入符号是i,则可以运用F->.i
没有其他的合法的可运用的最左规约的规则,所以只有这三个是该活前缀的有效项目。

 

4、快速寻找活前缀的方法
首先找到规约到当前状态时应该运用的最后一条规则(可能不唯一),把点打在活前缀的边界部分。
对于上面的例子,即为T->T*.F。
接着如果“.”后面的第一个符号是非终结符号,则将该符号的规则全部列出,
对于上面的例子,即为F->.(E),F->.i
如果这些规则里有符合 “.”后面的第一个符号是非终结符号 的规则,那么也需要把这个符号的规则列出,以此类推,直到找不出为止。

 

posted @ 2019-12-15 22:06  Asterism  阅读(3177)  评论(1编辑  收藏  举报