LR(k)解析表构造:是否可以按需计算先行集?

时间:2013-10-18 13:57:21

标签: parsing grammar context-free-grammar lalr lr

我已经开始阅读有关LR(k)解析表构造的内容,以及解释k>算法的所有文本。 0建议在生成项集之前应为每个符号计算前瞻,然后在生成所有项集时,应合并冗余项以生成最小的解析表。

考虑以下伪状态/项集构造例程:

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

0 个答案:

没有答案