我已经开始阅读有关LR(k)解析表构造的内容,以及解释k>算法的所有文本。 0建议在生成项集之前应为每个符号计算前瞻,然后在生成所有项集时,应合并冗余项以生成最小的解析表。
考虑以下伪状态/项集构造例程:
- 首先假设可以在没有前瞻(k = 0)的情况下确定状态转换
- 计算当前状态的整个项目集
- 尝试确定当前的状态操作:
- 如果集合中只有一个项目并且已经消耗了所有输入(标记为
在rhs的右边,动作减少到项目的lhs。
- 如果集合中的每个项目都需要输入,则操作将转移并转到
下一个州
- 如果有些项目需要输入,有些项目不是转移/减少冲突
- 如果两个或多个具有不同lhs的项目到达输入结束,则这是减少
/减少冲突。
如果最后两个案例中的一个发生,则意味着我们需要先看一眼
决定国家行动。将k增加1并返回步骤2.
- 如果要转移操作,请继续创建后续操作
通过模拟输入的组合(以及如果k> 0的前瞻)并返回到状态
每个新州的第1步。
醇>
使用上述步骤为任意LR(k)语法构造表是否可行/可行?如果没有,我错过了什么?