編譯器
關於抽象語法樹(AST)的特徵,下列何者正確?
- A連原始碼的括號與分隔符號都全部保留為節點
- B省略與語意無關的符號,並以樹狀結構表示運算子的優先順序
- C與CPU的指令一對一對應,可直接執行
查看答案與解析
正確答案:B. 省略與語意無關的符號,並以樹狀結構表示運算子的優先順序
語法分析會依照文法規則產生連括號與分隔符號都包含在內的樹(具體語法樹),但其中含有許多後續處理不需要的資訊。抽象語法樹則是只將程式語意所需的運算與敘述作為節點的樹,例如在(a + b) * c中,加法節點位於乘法節點之下,因此即使沒有括號也能得知運算的順序。與CPU指令對應的,是更後面的階段所產生的程式碼。
- A. 連括號都保留的是具體語法樹。
- B. 正確。省略不需要的符號,並以樹狀結構表示優先順序。
- C. 與CPU指令對應的是後續階段的程式碼。