文法如下,请用LL(0)给出输入串i*i+i的自顶向下分析过程 G[E]: E → E+T|T T → T*F|F F → (E)|i
时间: 2023-06-14 18:06:10 浏览: 176
自顶向下预测分析语法分析程序
首先,我们需要将文法转化为 LL(0) 文法,即消除左递归和提取左公因子:
G[E]:
E → TE'
E' → +TE' | ε
T → FT'
T' → *FT' | ε
F → (E) | i
消除左递归后,可以得到:
G[E]:
E → TF
F → (E) | i
T → FT'
T' → *FT' | ε
E' → +TE' | ε
接下来,我们可以使用 LL(0) 分析法进行自顶向下分析。
(i*i+i) 的分析过程如下:
输入串:( i * i + i ) $
初始符号:E
使用产生式 E → TF,推导得到:
E → TF
T → FT'
F → (E) | i
当前符号:(
输入串:i * i + i ) $
使用产生式 F → i,推导得到:
E → TF
T → FT'
F → i
当前符号:*
输入串:i + i ) $
使用产生式 T' → ε,推导得到:
E → TF
T → F
F → i
当前符号:+
输入串:i ) $
使用产生式 E' → +TE',推导得到:
E → TF
T → F
F → i
E' → +TE'
T → FT'
F → i
当前符号:i
输入串:) $
使用产生式 F → i,推导得到:
E → TF
T → F
F → i
E' → +TE'
T → ε
当前符号:)
输入串:$
使用产生式 E' → ε,推导得到:
E → TF
T → F
F → i
E' → ε
推导完成,输入串被成功分析。
阅读全文