为以下语法构造一个预测解析表并检查字符串 id + id * id 是否被接受。

问题 - 考虑以下语法 -

E → TE′

E′ → +TE′|ε

T′ → FT′

T′ → FT′|ε

F → (E)|id

解决方案 -

Step1- 消除左递归并执行左因子分解

由于语法中没有左递归,所以我们将按原样进行。此外,不需要左因子分解。

Step2- FIRST 的计算

FIRST(E)= FIRST(T)= FIRST(F)= {(, id}

第一 (E′) = {+, ε}

FIRST (T′) = {*, ε}

Step3- FOLLOW的计算

跟随 (E) = 跟随(E′) = {), $}

跟随 (T) = 跟随(T′) = {+, ), $}

跟随 (F) = {+,*,),$}

Step4− 预测解析表的构建

创建表,即逐行写入所有非终端和逐列写入所有终端。

现在,通过应用构建预测解析表的规则来填充表格。

  • E → TE′

比较 E → TE′ 与 A → α

E →TE'
A →

∴ A = E, α = TE′

∴ FIRST(α) = FIRST(TE′) = FIRST(T)= {(, id}

预测解析表的应用规则(1)

∴ ADD E → TE′ 到 M[E, ( ] 和 M[E, id]

∴ 在行 (E) 和列 {(, id} (1) 前面写 E → TE′

  • E′ → +TE′|