给定文法G[S]:S→(L)| a 以及 L→L,S | S 1.观察该文法是否有左公共因子和左递归,若有清消除文法中的左公共因子和左递归 2、给出新文法的预测分析表 3、根据新文法的预测分析表判断新文法是否是LL(1)的?
时间: 2023-12-06 12:42:51 浏览: 295
LL(1)型文法的判断、求first集、FOLLOW集、select集、LL(1)文法判别、构造预测分析表、非LL(1)文法转换
1. 该文法存在左递归,需要进行消除。具体步骤如下:
首先消除L的左递归,得到如下文法:
L → S L'
L' → , S L' | ε
然后消除S的左递归,得到如下文法:
S → a S'
S' → ( L ) S'' | ε
L → S L'
L' → , S L' | ε
再消除左公共因子,得到如下文法:
S → a S'
S' → ( L ) S'' | ε
L → S L'
L' → , S L' | ε
2. 新文法的预测分析表如下:
| | ( | ) | , | a | $ |
|----|----|----|----|----|----|
| S | S→(L) | | | S→aS' | |
| S' | | S'→)S'' | S'→,SL' | S'→ε | S'→ε |
| L | L→S L' | | | L→S L' | |
| L' | | L'→ε | L'→,SL' | L'→ε | L'→ε |
3. 根据新文法的预测分析表可以看出,每个非终结符的预测符号集合都没有交集,因此该文法是LL(1)的。
阅读全文