G[E]: E → T | E+T | E-T T → F | T*F | T/F F → (E) | i (1)给出句型T+T*F+i的最左推导和最右推导 (2)画出句型T+T*F+i的语法树 (3)在语法树基础上找出该句型的短语、直接短语和句柄
时间: 2024-11-22 11:36:39 浏览: 7
(1) **最左推导** 和 **最右推导** 是解析树的不同构建方式。对于句型 `T+T*F+i`,按照从左到右的顺序,最左推导会先处理左部的加法,然后才是乘法和除法,最后是括号里的表达式和常数:
- 最左推导:`T+T*F+i` -> `T+(T*F)+i` -> `(T+T)*F+i`
- 最右推导:`T+T*F+i` -> `T+(T*F)+i` -> `T+((T*)F)+i`
(2) **语法树** 的构建如下:
```
+
/ \
T *
/ \ / \
+ T * F
/ \
T /
/ \ / \
+ T * (i)
```
其中 `+` 是根节点,其左右子树分别对应 `T+T` 和 `T*F`,而 `T*F` 的左子树是 `+`,右子树是 `F(i)`。
(3) **短语**:
- `T+T`: 加法表达式
- `T*F`: 乘除表达式
- `T/F`: 除法表达式
- `T*F+i`: 整体表达式
- `(E)`: 括号内的表达式 `E`(隐含)
**直接短语**:
- `T`: 出现在 `T+T` 和 `T*F` 中
- `F`: 出现在 `T*F` 和 `T/F` 中
- `(E)`: 标识括号内的表达式
**句柄**:
- `+`, `*`, `/`: 分别对应加法、乘法和除法运算,它们是句柄,因为它们决定了后续的解析方向。
- `(i)`: 作为 `F` 的句柄,指示一个整数常量的开始。
阅读全文