2016-05-17 86 views
0

所以我努力學習的那一刻的AST,並與一些簡單的功能一直在練習像抽象語法樹 - 菜鳥級(試圖瞭解)

var a; 
var b; 
b = 666 
a = b; 
print a; 

從而結束這樣的: Simple

所以一直試圖瞭解它。我幾乎開始明白,但現在問題來了,當我試圖做這樣的功能:

var a; 
var b; 
b = 666; 
a = b+42*6; 
print a; 

給我帶來了麻煩的是,A = B + 42 * 6,我不要我不知道該如何製作它的樹。我知道如果只有他們中的一個人喜歡+或*而不是當它們在一起時該怎麼辦。我一直在試圖查看YouTube剪輯,其他網站的教程等,但無法找到類似的東西。

所以我會需要你的幫助傢伙!

反正。我也有一個語法,但它會尋找類似的圖片:)

編輯:

Like this

我弄成這個樣子。它感覺不對...?

編輯2:

enter image description here

+0

別樹完全按照自己的計算。一部分具有與該相加相關的乘法和結果。 –

+0

@SamiKuhmonen嗯。那就是我不知道如何連接的部分。我會畫和編輯帖子,並會讓你知道我的想法。 – Thrillofit123

+0

@SamiKuhmonen你走了。看編輯 – Thrillofit123

回答

1

由於表達a = b + 42 * 6你必須想你會怎麼做你自己開始。第一部分是42 * 6基於數學的規則,所以你寫爲表達式(使用您使用的相同術語):

expr 
/| \ 
    42 * 6 

這樣做的結果將被添加到b,所以這是下一個:

expr 
/| \ 
    b + \ 
     expr 
    /| \ 
     42 * 6 

然後你想把它都分配給a,使補充說:

assign 
/| \ 
a = \ 
     expr 
    /| \ 
     b + \ 
      expr 
     /| \ 
      42 * 6 
+0

哦。我不知道它允許使用expr兩次!那麼它不應該那麼辛苦! – Thrillofit123

+0

@ Thrillofit123 AST沒有單一的方法,但是因爲你需要將上一步的結果轉到下一步,所以你必須以某種方式將它們結合起來。 –

+0

我會寫下一張新照片併發送。如果你有時間的話:)?等一下! – Thrillofit123