2017-04-22 73 views
0

我有以下語法:當涉及()的時候不知道如何解析樹?

E -> E+T | E-T | T 
    T -> T*F | T/F | F 
    F -> i | (E) 

而這個字符串:

(i+i)*i 

什麼是搞亂了我的我怎麼會納入(的)?

嘗試:

ë - >牛逼

T =的

左支行 - >的F - >我

中秋節分支= *

權支行T = F - >(E) - > E + T .....(E - > i,T - > i)

我不確定這是否可以理解,但我不確定在這裏寫分析樹。任何幫助都感激不盡!謝謝!

+0

您的嘗試似乎與'i *(i + i)'而不是'(i + i)* i'有關。 –

回答

1

表示解析樹的常見方法是樹形圖(通常以頂部的根爲例),其中樹中的每個節點都是一個符號,樹的「子」關係反映了推導中的步驟。

例如,爲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 ) 

正如你所看到的,括號不會造成一個特殊的問題。

相關問題