文法G: E->E+T|T T->T*F|F F->i|(E)下面用预测分析法的总控程序、分析栈和预测分析表对输入串i+i*i进行分析,给出输入串T的分析过程
时间: 2024-02-16 07:01:15 浏览: 61
首先,我们需要构造预测分析表如下:
| + | * | i | ( | ) | $ |
| -------- | ------- | ------ | ------ | ------ | ------ |
| E -> TE' | | E -> TE' | E -> TE' | | |
| | T' -> *FT' | | | T' -> ε | T' -> ε |
| T -> FT' | | T -> FT' | T -> FT' | | |
| | F -> ε | F -> i | F -> (E) | | |
接下来,我们用总控程序和分析栈对输入串i+i*i进行分析。初始时,分析栈中只有$符号,总控程序从左到右扫描输入串并依次进行匹配。
| 总控程序 | 分析栈 | 剩余输入串 |
| -------------- | ------------ | ---------------- |
| | $ | i+i*i$ |
| | E$ | i+i*i$ |
| E -> TE' | T$ | i+i*i$ |
| T -> FT' | F$ | i+i*i$ |
| F -> i | i$ | +i*i$ |
| | + | +i*i$ |
| E -> TE' | T+ | i*i$ |
| T -> FT' | F+ | i*i$ |
| F -> i | i+ | *i$ |
| | * | *i$ |
| T -> FT' | F*T | i$ |
| F -> i | i*T | i$ |
| | T+i | i$ |
| T -> FT' | F+T+i | $ |
| F -> i | i+T+i | $ |
| | E+i | $ |
| E -> TE' | T+i | $ |
| T -> FT' | F+i | $ |
| F -> i | i | $ |
最终得到了一个合法的推导式:E -> TE' -> T -> FT' -> F -> i -> i + T -> F + T -> F * T -> i * T -> i。输入串i+i*i符合文法G的语法规则。而输入串T的分析过程如下:
| 总控程序 | 分析栈 | 剩余输入串 |
| -------------- | ------------ | ---------------- |
| | $ | T$ |
| | E$ | T$ |
| E -> TE' | T$ | T$ |
| | T | T$ |
| T -> FT' | F$ | *i$ |
| F -> i | i$ | *i$ |
| | * | i$ |
| T -> FT' | F*T | i$ |
| F -> i | i*T | i$ |
| | T+i | i$ |
| T -> FT' | F+T+i | $ |
| F -> i | i+T+i | $ |
| | E+i | $ |
| E -> TE' | T+i | $ |
| T -> FT' | F+i | $ |
| F -> i | i | $ |
可以看到,T最终被成功分析出来,并得到了合法的推导式:T -> FT' -> F -> i。
阅读全文