diff --git a/ch04/4.4/4.4.md b/ch04/4.4/4.4.md
index 2ba56d67..f87974dd 100644
--- a/ch04/4.4/4.4.md
+++ b/ch04/4.4/4.4.md
@@ -51,7 +51,7 @@
2. S -> + S S | \* S S | a
-
+
step1. 无左公因子
step2. 无左递归
@@ -90,7 +90,7 @@
S -> A
A -> (S) S A | ε
-
+
step3. 预测分析表
@@ -127,13 +127,13 @@
S -> SA | (S) | a
A -> +S | S | *
-
+
进一步提取终结符
S -> SA | T
A -> +S | S | *
T -> (S) | a
-
+
step2. 消除左递归(根据 p135 的算法 4.19)
i = 1
@@ -149,7 +149,7 @@
无需处理
j = 2
无需处理
-
+
得到最终的产生式
S -> TB
@@ -163,7 +163,7 @@
first(A) = [+, *] + first(T) =[+, *, (, a]
first(B) = [ε] + first(A) = [ε, +, *, (, a]
first(S) = first(T) = [(, a]
-
+
follow(T) = [$, +, *, (, a]
follow(A) = [$, +, *, (, ), a]
follow(B) = [$]
@@ -268,7 +268,7 @@
follow(bexpr) = follow(bexpr') = [), $]
follow(bterm) = follow(bterm') = [or, $]
follow(bfactor) = [and, $]
-
+
````
step4. 预测分析表
@@ -326,8 +326,8 @@
bterm' |
- |
bterm' -> and bfactor bterm' |
+ bterm' -> ε |
|
|
bterm' -> ε |
@@ -349,6 +349,7 @@
+
### 4.4.2 !!
有没有可能通过某种方法修改练习 4.2.1 中的文法,构造出一个与该练习中的语言(运算分量为 a 的后缀表达式)对应的预测分析器?
@@ -356,14 +357,14 @@
#### 解答
S -> SS+ | SS* | a
-
+
step1. 提取左公因子
S -> SSA | a
A -> + | *
-
+
step2. 消除左递归
-
+
i = 1
S -> aB
B -> SAB | ε
@@ -373,7 +374,7 @@ step2. 消除左递归
S -> aB
B -> aBAB | ε
A -> + | *
-
+
step3. 预测分析表
@@ -413,7 +414,7 @@ step3. 预测分析表
-
+
### 4.4.3
@@ -472,7 +473,7 @@ step3. 预测分析表
以下题目请参考 Aho 本人的讲义:[Aho: Properties of Context-Free Languages](http://www.cs.columbia.edu/~aho/cs3261/lectures/12-10-08.htm),[本地副本](cs.columbia.edu-aho-cs3261-properties-of-cfl-121008.html)
此外还有[另一篇内容相似的文章](http://courses.engr.illinois.edu/cs373/Lectures/lec14.pdf),[本地副本](courses.engr.illinois.edu-cs373-lec14.pdf)
-
+
关于 CNF 和 CYK 算法,有较多相关资料,自行搜索
### 4.4.6 !