不确定在涉及 () 时如何解析树?
Not sure how to do parse tree when a ()'s is involved?
我有以下语法:
E -> E+T | E-T | T
T -> T*F | T/F | F
F -> i | (E)
这个字符串:
(i+i)*i
让我困惑的是我将如何合并 ()'s?
尝试:
E -> T
T的左支 = T -> F -> i
中支 = *
右分支 T = F -> (E) -> E + T ..... (E -> i, T -> i)
我不确定这是否可以理解,但我不确定在这里还可以如何编写解析树。任何帮助都感激不尽!谢谢!
一种常见的解析树表示方式是树图(通常根在顶部),其中树中的每个节点都是一个符号,树的 'child' 关系反映了步骤在推导中。
例如,对于 i*(i+i)
,解析树可能如下所示:
E
|
T
|
+---+---+
| | |
T * F
| |
F +---+---+
| | | |
i ( E )
|
+---+---+
| | |
E + T
| |
T F
| |
F i
|
i
或者像这样:
E
|
T
|
+---+-----------+
| | |
T | F
| | |
F | +-------+-------+
| | | | |
| | | E |
| | | | |
| | | +---+---+ |
| | | | | | |
| | | E | T |
| | | | | | |
| | | T | F |
| | | | | | |
| | | F | | |
| | | | | | |
i * ( i + i )
如您所见,括号不会造成特殊问题。
我有以下语法:
E -> E+T | E-T | T
T -> T*F | T/F | F
F -> i | (E)
这个字符串:
(i+i)*i
让我困惑的是我将如何合并 ()'s?
尝试:
E -> T
T的左支 = T -> F -> i
中支 = *
右分支 T = F -> (E) -> E + T ..... (E -> i, T -> i)
我不确定这是否可以理解,但我不确定在这里还可以如何编写解析树。任何帮助都感激不尽!谢谢!
一种常见的解析树表示方式是树图(通常根在顶部),其中树中的每个节点都是一个符号,树的 'child' 关系反映了步骤在推导中。
例如,对于 i*(i+i)
,解析树可能如下所示:
E | T | +---+---+ | | | T * F | | F +---+---+ | | | | i ( E ) | +---+---+ | | | E + T | | T F | | F i | i
或者像这样:
E | T | +---+-----------+ | | | T | F | | | F | +-------+-------+ | | | | | | | | E | | | | | | | | | +---+---+ | | | | | | | | | | | E | T | | | | | | | | | | | T | F | | | | | | | | | | | F | | | | | | | | | | i * ( i + i )
如您所见,括号不会造成特殊问题。