1、设将文法G改写成等价的LL(1)文法,并构造预测分拼表。 GS→S*aT|aT*aT;T→+aT|+a(15分)
时间: 2024-03-25 15:35:53 浏览: 17
首先,我们需要消除G中的左递归和提取左公因子。对于文法G:
```
S → S*aT | aT*aT
T → +aT | +a
```
我们可以先消除左递归:
```
S → aT*S'
S' → *aTS' | ε
T → +aT | +a
```
然后,我们可以提取左公因子:
```
S → aT S'
S' → * a T S' | ε
T → + a T'
T' → a T | ε
```
现在,我们得到了一个等价的LL(1)文法。下面我们可以构造预测分析表。
首先,我们需要求出每个非终结符的FIRST集和FOLLOW集。对于该文法,有:
```
FIRST(S) = {a}
FIRST(S') = {* , ε}
FIRST(T) = {+ , ε}
FIRST(T') = {a , ε}
FOLLOW(S) = {$}
FOLLOW(S') = {a , $}
FOLLOW(T) = {S' , $}
FOLLOW(T') = {S' , $}
```
然后,我们可以根据每个产生式的FIRST集和FOLLOW集来填写预测分析表:
```
+ * a $
S | | | S → aTS' |
S' | | S' → ε | S' → *aTS' | S' → ε
T | T → +aT' | | |
T' | | | T' → aT | T' → ε
```
最终,我们得到了该文法的预测分析表。