已知某算术表达式的文法G为: (1)<AEXPR>→<AEXPR>+<TERM>丨<TERM> (2)<TERM>→<TERM>*<FACTOR>丨<FACTOR>(3)<FACTOR>→i丨(<AEXPR>) 给出i+i+i和i+i*I的最左推导、最右推导和语法树
时间: 2023-12-17 17:06:04 浏览: 17
最左推导、最右推导和语法树如下所示:
i+i+i的最左推导:
```
<AEXPR>
<AEXPR>+<TERM>
<TERM>+<TERM>
<FACTOR>+<TERM>
i+<TERM>
i+<FACTOR>
i+i
```
i+i+i的最右推导:
```
<AEXPR>
<TERM>
<FACTOR>
i
<FACTOR>(<AEXPR>)
<FACTOR>(<AEXPR>+<TERM>)
<FACTOR>(<FACTOR>+<TERM>)
<FACTOR>(i+<TERM>)
<FACTOR>(i+<FACTOR>)
<FACTOR>(i+i)
<AEXPR>+<TERM>
<TERM>+<TERM>
<FACTOR>+<TERM>
i+<TERM>
i+<FACTOR>
i+i
```
i+i+i的语法树:
```
<AEXPR>
/ \
<FACTOR> + <TERM>
| / \
i <FACTOR> + <TERM>
| / \
i <FACTOR> + <TERM>
| |
i i
```
i+i*I的最左推导:
```
<AEXPR>
<AEXPR>+<TERM>
<TERM>+<FACTOR>
<FACTOR>+<FACTOR>*<FACTOR>
i+<FACTOR>*<FACTOR>
i+<FACTOR>*i
i+<TERM>*i
<FACTOR>+<TERM>*i
i+<TERM>*<FACTOR>
i+<FACTOR>
```
i+i*I的最右推导:
```
<AEXPR>
<TERM>
<FACTOR>
i
<FACTOR>(<AEXPR>)
<FACTOR>(<TERM>)
<FACTOR>(<FACTOR>*<FACTOR>)
<FACTOR>(i*<FACTOR>)
<FACTOR>(i*i)
<TERM>+<FACTOR>
<FACTOR>+<FACTOR>*<FACTOR>
i+<FACTOR>*<FACTOR>
i+<FACTOR>*i
i+<TERM>*i
<FACTOR>+<TERM>*i
i+<TERM>*<FACTOR>
i+<FACTOR>
```
i+i*I的语法树:
```
<AEXPR>
/ \
<FACTOR> + <TERM>
| / \
i <FACTOR> * <FACTOR>
| |
i i
```