个性化阅读
专注于IT技术分析

LR解析器

LR解析是自底向上解析的一种类型。它用于解析大量的语法。

在LR解析中, “ L”代表输入的从左到右扫描。

“ R”代表反向构建最正确的推导。

“ K”是用于做出解析决定数量的前瞻输入符号的数量。

LR解析分为四个部分:LR(0)解析, SLR解析, CLR解析和LALR解析。

LR解析器

LR算法

LR算法需要堆栈, 输入, 输出和解析表。在所有类型的LR解析中, 输入, 输出和堆栈均相同, 但解析表不同。

LR解析器1

图:LR解析器的框图

输入缓冲区用于指示输入结束, 它包含要分析的字符串, 后跟$符号。

堆栈用于包含语法符号序列, 在堆栈底部带有$。

解析表是一个二维数组。它包含两个部分:“操作”部分和“转到”部分。

LR(1)解析

LR(1)解析涉及的各个步骤:

  • 对于给定的输入字符串, 请编写上下文无关的语法。
  • 检查语法的歧义性。
  • 在给定的语法中添加增补产生。
  • 创建LR(0)个项目的规范集合。
  • 绘制数据流程图(DFA)。
  • 构造一个LR(1)解析表。

增强语法

如果我们在给定的语法G中再增加一个产生式, 则会生成增强的语法G`。它有助于解析器确定何时停止解析并宣布接受输入。

给定语法

S → AA
A → aA | b

增强语法G`表示为

S`→ S
S → AA
A → aA | b
赞(0)
未经允许不得转载:srcmini » LR解析器

评论 抢沙发

评论前必须登录!