2017-02-22 52 views
0

這是我正在描述的圖片: enter image description here 我的問題是,在一個抽象語法樹中,IF節點應該有大量的分支?設想一個直接連接到數百個語句的IF節點。它感覺不對,並且在視覺形式上看起來非常荒謬。這是AST的正確形成還是我錯了?在AST中,IF節點是否有大量的分支?

+0

這是'如果((a> b)和(a = c))'?它是'和'還是'或'?你從哪裏得到這張圖片?這看起來不對。 'if'的AST就像'[if] [1:condition] [2:if-body/true-body] [3:else-body/false-body]'。看到wiki [文章](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree#/media/File%3AAbstract_syntax_tree_for_Euclidean_algorithm.svg) – inquisitive

+0

我做到了。它應該是:if(a> b){a = c;有趣的(C); othersthat}我不確定它應該如何,所以我問了這個問題......身體是否應該能夠按照執行順序從左到右連接數百個節點,或者? – Accumulator

回答

0

試試這種方式。當你使用類似CodeDOM的東西時,這也是你得到的。

AST of if (a > b) {a = c; fun(c); otherstuff}

實際上TrueBodyFalseBody每次都會有一個單獨的孩子 - StatementGroup。這反過來將會有那麼多的孩子,就像那個街區裏有那麼多的孩子。類似地,如果存在多個條件,則節點將具有一個單節點,如說有AndCondition的節點具有與子句一樣多的子節點。

相關問題