跳至內容

抽象語法樹

維基百科,自由的百科全書
下列輾轉相除法編程碼的抽象語法樹:
while b  0:
    if a > b:
        a := a - b
    else:
        b := b - a
return a

計算機科學中,抽象語法樹Abstract Syntax Tree,AST),或簡稱語法樹(Syntax tree),是原始碼語法結構的一種抽象表示。它以樹狀的形式表現程式語言的語法結構,樹上的每個節點都表示原始碼中的一種結構。之所以說語法是「抽象」的,是因為這裏的語法並不會表示出真實語法中出現的每個細節。比如,嵌套括號被隱含在樹的結構中,並沒有以節點的形式呈現;而類似於 if-condition-then 這樣的條件跳轉語句,可以使用帶有三個分支的節點來表示。

和抽象語法樹相對的是具體語法樹(通常稱作分析樹)。一般的,在原始碼的翻譯和編譯過程中,語法分析器創建出分析樹,然後從分析樹生成AST。一旦AST被創建出來,在後續的處理過程中,比如語義分析階段,會添加一些信息。