为以下语法构造 SLR Parsing 表。此外,解析输入字符串 a * b + a。

描述 - 考虑语法

E → E + T|T

T → TF|F

F → F*|a|b。

解决方案

Step1 - 构建增强语法并对产生式进行编号。

(0) E′ → E

(1) E → E + T

(2) E → T

(3) T→TF

(4) T → F

(5) F → F *

(6) F→a

(7) F→b。

Step2 - 找到闭包和 goto 函数来构造 LR (0) 项目。

方框代表新状态,圆圈代表重复状态。

FOLLOW 的计算

我们可以找出

FOLLOW(E)= {+, $}

FOLLOW(T)= {+, a, b, $}

FOLLOW(F)= {+,*, a, b, $}

解析输入字符串 a * b + a -


        输入字符串
行动
0
a * b + a $
Shift
0 一 4
* b + a $
Reduce by F → a.
0 楼 3
* b + a $
Shift
0 F 3 * 8
b + a $
Reduce by F → F ∗
0 楼 3
b + a $
Reduce by T → F
0 吨 2
b + a $
Shift
0 T 2 b 5
+一美元
Reduce by F → b
0 T 2 F 7
+一美元
Reduce by T → TF
0 吨 2
+一美元
Reduce by E → T
0 E 1
+一美元
Shift
0 E 1 + 6
一美元
Shift
0 E 1 + 6 一 4
$
Reduce by F → a
0 E 1 + 6 F 3
$
Reduce by T → F
0 E 1 + 6 T 9
$
Reduce by E → E + T
0 E 1
$
接受
猜你喜欢