SLR 分析表 - 逻辑表达式 G[S]:语法分析示例
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 著作权归作者所有。请勿转载和采集!