编译器设计中 LR Parser 的类型是什么?

LR解析器分为三种类型,如下所示 -

  • Simple LR Parser (SLR) - SLR 代表“Simple LR Parser”。执行起来非常简单且具有成本效益。但是它没有为某些语法类制作解析表,即为什么使用CLR和LALR,它们主要实现所有类或类型的语法。它构造解析表,有助于执行输入字符串的解析。如果给出上下文无关语法,则可以进行 SLR 解析。在 LR (0) 中,0 表示没有 Look Ahead 符号。

SLR 解析动作和 goto 函数来自识别可行前缀的确定性有限自动机。它不会为所有语法制作专门表示的解析动作表,但会在一些编程语言的语法上实现。给定一个文法 G。我们扩充 G 以产生 G',并且从 G' 可以构造 C,即 G' 的一组项目的规范集合。

  • Canonical Look Ahead LR Parser (CLR) - CLR 定义规范前瞻。CLR 解析使用 LR (1) 项的规范集合来构造 CLR (1) 解析表。与 SLR (1) 解析相比,CLR (1) 解析表产生更多的状态。在CLR(1)中,它只能在前瞻符号中定位reduce节点。

LR(1)语法项目集合的构建

它需要三样东西

  • 增强语法

  • 闭包函数

  • 转到函数

增强语法- 它是一个新的语法 G',其中包含一个新的产生式 S' → S 以及给定语法 G 的所有其他产生式。

关闭

  • 程序关闭(一)

  • 开始重复

  • 对于每个项目 A→α ∙B β, a in I,

    • 每个产生式 B→γ 和

    • 每个终端 b∈FIRST (β a)

  • 如果 B→ ∙ γ 不在 I

  • 将 B→ ∙γ,b 添加到 I

  • 直到没有更多的元素可以连接到我;

  • 结尾

以上是 编译器设计中 LR Parser 的类型是什么? 的全部内容, 来源链接: utcz.com/z/363413.html

回到顶部