SLR 分析表 - 逻辑表达式 G[S]:语法分析示例

本文将介绍 SLR 分析表的构造以及使用示例。

逻辑表达式 G[S]:

0	S→ A
1	A→A∨B
2	A→ B
3	B→B∧C
4	B→ C
5	C→┐D 
6	C→ D
7	D→(A)
8	D→a

SLR 分析表:

| 状态 | 动作 | GOTO | |---|---|---| | | ┐ | ∨ | ∧ | a | ( | ) | # | A | B | C | D | | 0 | s5 | | | | s7 | s6 | | | 1 | 2 | 3 | 4 | | 1 | | s8 | | | | | | a0 | | | | | | 2 | | r2 | s9 | | | r2 | r2 | | | | | | | 3 | | r4 | r4 | | | r4 | r4 | | | | | | | 4 | | r6 | r6 | | | r6 | r6 | | | | | | | 5 | | | | | s7 | s6 | | | | | | 10 | | 6 | s5 | | | | s7 | s6 | | 11 | 2 | 3 | 4 | | 7 | | r8 | r8 | | | r8 | r8 | | | | | | | 8 | s5 | | | | s7 | s6 | | | 12 | 3 | 4 | | 9 | s5 | | | | s7 | s6 | | | | 13 | 4 | | 10 | | r5 | r5 | | | r5 | r5 | | | | | | | 11 | | s8 | | | | s14 | | | | | | | | 12 | | r1 | s9 | | | r1 | r1 | | | | | | | 13 | | r3 | r3 | | | r3 | r3 | | | | | | | 14 | | r7 | r7 | | | r7 | r7 | | | | | |

识别过程: #(a∨┐a)∧a#

| 状态栈 | 符号栈 | 输入串 | 动作 | |---|---|---|---| | 0 | # | #(a∨┐a)∧a# | 移进 | | 0 5 | # 0 | (a∨┐a)∧a# | 移进 | | 0 5 7 | # 0 ( | a∨┐a)∧a# | 移进 | | 0 5 7 6 | # 0 ( a | ∨┐a)∧a# | 规约 B→C | | 0 5 3 | # 0 ( B | ∨┐a)∧a# | 规约 A→A∨B | | 0 1 | # 0 ( A | ∨┐a)∧a# | 移进 | | 0 1 9 | # 0 ( A | ∨┐a)∧a# | 移进 | | 0 1 9 7 | # 0 ( A └ | ∨┐a)∧a# | 移进 | | 0 1 9 7 6 | # 0 ( A └ b | ∨┐a)∧a# | 规约 B→C | | 0 1 9 3 | # 0 ( A └ B | ∨┐a)∧a# | 规约 A→A∨B | | 0 1 1 | # 0 ( A └ A | ∨┐a)∧a# | 移进 | | 0 1 1 8 | # 0 ( A └ A | ∨(┐a))∧a# | 移进 | | 0 1 1 8 0 | # 0 ( A └ A | ∨(┐a))∧a# | 规约 D→a | | 0 1 1 8 8 | # 0 ( A └ A | ∨(D))∧a# | 规约 C→┐D | | 0 1 1 8 5 | # 0 ( A └ A | ∨(C))∧a# | 规约 B→C | | 0 1 1 3 | # 0 ( A └ A | ∨B)∧a# | 规约 A→A∨B | | 0 1 | # 0 ( A | ∨B)∧a# | 规约 A→A∨B | | 0 1 9 | # 0 ( A | ∨B)∧a# | 移进 | | 0 1 9 3 | # 0 ( A └ | ∨B)∧a# | 规约 A→A∨B | | 0 1 | # 0 ( A | ∨B)∧a# | 规约 A→A∨B | | 0 3 | # 0 ( A∨B | )∧a# | 规约 B→C | | 0 1 | # 0 ( A | ∨B)∧a# | 移进 | | 0 1 9 | # 0 ( A | ∨B)∧a# | 移进 | | 0 1 9 2 | # 0 ( A └ | ∧B)∧a# | 移进 | | 0 1 9 2 7 | # 0 ( A └ b | ∧B)∧a# | 移进 | | 0 1 9 2 6 | # 0 ( A └ B | ∧B)∧a# | 规约 B→C | | 0 1 9 3 | # 0 ( A └ B | ∧C)∧a# | 规约 A→A∨B | | 0 1 | # 0 ( A | ∨B)∧a# | 规约 A→A∨B | | 0 3 | # 0 ( A∨B | )∧a# | 规约 B→C | | 0 2 | # 0 ( A∨B∧C | ) ∧a# | 规约 A→B | | 0 | # 0 | (A∨B∧C)∧a# | 规约 S→A | | 0 | # | A∨B∧C∧a# | 接受 |

注意:

  • 代表规约时的弹出符号。
  • a0 表示接受状态。
  • 该识别过程展示了使用 SLR 分析表对逻辑表达式进行语法分析的过程。

总结:

SLR 分析表是一种常用的语法分析方法,可以有效地识别符合语法规则的表达式,并通过识别过程输出分析结果。


原文地址: https://www.cveoy.top/t/topic/od2i 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录