已知文法G(E) E→T|E+T T→F|T *F F→(E)|i 给出句型(T *F+i)的最左、最右推导
时间: 2024-06-15 13:06:22 浏览: 338
已知文法G(E)如下:
E → T | E + T
T → F | T * F
F → (E) | i
句型(T *F + i)的最左推导如下:
E → T
E → T * F
E → T * (E)
E → T * (T)
E → T * (F)
E → T * (i)
T → T * (i)
F → T * (i)
T → F * (i)
T → (E) * (i)
T → (T) * (i)
T → (F) * (i)
T → (i) * (i)
句型(T *F + i)的最右推导如下:
E → T
E → T * F
E → T * i
T → T * F
T → F * F
T → (E) * F
T → (T) * F
T → (F) * F
T → (i) * F
T → (i) * i
相关问题
已知文法G为: E→T|E+T|E-T T→F|T*F|T/F F→(E)|id (1)画出句型T+T*F+id的语法分析树 (2)给出句型T+T*F+id的所有短语、直接短语和句柄
好的,我来为您回答这个问题。
(1)先来画出句型T+T*F+id的语法分析树。
首先,我们可以按照这个句型的推导过程来构建语法分析树。具体来说,我们可以按照如下步骤进行:
```
E -> E + T -> T + T * F -> T + F * F -> F + F * F -> id + F * F -> id + T * F -> id + T -> T + F -> T + T * F -> T + T * F + id
```
然后,我们可以按照这个推导过程来构建语法分析树。具体来说,我们可以按照如下步骤进行:
1. 从树的根节点开始,用E作为根节点的标签,表示我们正在分析一个E符号。
2. 根据E -> E + T 推导规则,我们在根节点下方添加一个标签为“+” 的节点,用来表示加号。
3. 将E符号拆分成两个子节点,一个是E符号,一个是T符号,分别作为“+”节点的左右子节点。
4. 根据T -> T * F 推导规则,我们在右子节点下方添加一个标签为“*” 的节点,用来表示乘号。
5. 将T符号拆分成两个子节点,一个是T符号,一个是F符号,分别作为“*”节点的左右子节点。
6. 将F符号表示为一个叶节点,该节点的标签是“id”。
最终得到的语法分析树如下所示:
```
E
/ \
E T
| |
+ *
/ / \
T F F
| |
+ id
/ \
T F
| |
* id
/ \
F id
|
id
```
(2)接下来,给出句型T+T*F+id的所有短语、直接短语和句柄。
- 所有短语:T、F、T*F、id、T+F、F*F、T*F+id、T+F*F、T+F*F+id、T+T*F、T+T*F+id。
- 直接短语:T、F、id。
- 句柄:T、F、T*F、id、T+F、F*F、T*F+id、T+F*F+id、T+T*F、T+T*F+id。
已知文法G(E) E→T|E+T T→F|T *F F→(E)|i (1)给出句型(T *F+i)的最右推导; (2)给出句型(T *F+i)的短语、素短语。
好的,我会根据您提供的文法G(E)来回答您的问题。
(1) 句型(T *F+i)的最右推导如下:
E → E + T → T + T → T * F + T → F * F + T → i * F + T → T *F + i
(2) 句型(T *F+i)的短语和素短语如下:
- 短语:T * F 和 i
- 素短语:T、F 和 i
阅读全文