為以下語法構造 SLR 解析表。並解析輸入字串 a * b + a。


描述 - 考慮以下語法

E → E + T|T

T → TF|F

F → F*|a|b。

解答

步驟1 - 構造增廣語法併為產生式編號。

(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。

步驟2 - 查詢閉包和 goto 函式以構造 LR(0) 專案。

方框代表新狀態,圓圈代表重複狀態。

FOLLOW 的計算

我們可以得出

FOLLOW(E) = {+, $}

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

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

輸入字串 a * b + a 的解析 -


        輸入字串
動作
0
a * b + a $
移進
0 a 4
* b + a $
根據 F → a. 規約
0 F 3
* b + a $
移進
0 F 3 * 8
b + a $
根據 F → F ∗ 規約
0 F 3
b + a $
根據 T → F 規約
0 T 2
b + a $
移進
0 T 2 b 5
+a $
根據 F → b 規約
0 T 2 F 7
+a $
根據 T → TF 規約
0 T 2
+a $
根據 E → T 規約
0 E 1
+a $
移進
0 E 1 + 6
a$
移進
0 E 1 + 6 a 4
$
根據 F → a 規約
0 E 1 + 6 F 3
$
根據 T → F 規約
0 E 1 + 6 T 9
$
根據 E → E + T 規約
0 E 1
$
接受

更新於: 2021年11月2日

35K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.