已知文法G[S]: S→A ; A→B|AiB ; B→C|B+C C→)A*|( 改写为LL(1)文法
时间: 2024-05-28 22:12:01 浏览: 158
首先,我们需要对原有的文法进行一些调整,使其成为LL(1)文法。
1. 针对A → B | AiB,我们可以将其拆分成两个产生式:
A → B
A → AiB
2. 针对B → C | B+C,我们可以将其改写成左递归的形式:
B → CB'
B' → ε | +C
接下来,我们对新的文法进行LL(1)分析表的构建:
| | ( | ) | * | + | i | $ |
|----|-----------|-----------|-----------|-----------|-----------|-----------|
| S | | | | | A | |
| A | | | | | A1, B | |
| A1 | | | | | | ε |
| B | C, B' | | | C, B' | | |
| B' | ε | | | +C, B' | ε | ε |
| C | )A*, B | | | | | |
其中,ε表示空串,逗号表示分隔符。
最后,我们可以使用该LL(1)分析表对输入的符号串进行分析,判断其是否符合该文法。
阅读全文