編譯器

關於抽象語法樹(AST)的特徵,下列何者正確?

  1. A連原始碼的括號與分隔符號都全部保留為節點
  2. B省略與語意無關的符號,並以樹狀結構表示運算子的優先順序
  3. C與CPU的指令一對一對應,可直接執行
查看答案與解析

正確答案:B. 省略與語意無關的符號,並以樹狀結構表示運算子的優先順序

語法分析會依照文法規則產生連括號與分隔符號都包含在內的樹(具體語法樹),但其中含有許多後續處理不需要的資訊。抽象語法樹則是只將程式語意所需的運算與敘述作為節點的樹,例如在(a + b) * c中,加法節點位於乘法節點之下,因此即使沒有括號也能得知運算的順序。與CPU指令對應的,是更後面的階段所產生的程式碼。

  • A. 連括號都保留的是具體語法樹。
  • B. 正確。省略不需要的符號,並以樹狀結構表示優先順序。
  • C. 與CPU指令對應的是後續階段的程式碼。
練習這個領域 前往領域頁面

編譯器的其他題目

  1. 編譯器內部使用不依賴來源語言、也不依賴CPU的中介表示(IR),其主要優點為何?
  2. 關於基本區塊的說明,下列何者正確?
  3. 在控制流程圖中,節點與箭頭所代表的事物,下列組合何者正確?
  4. 關於SSA形式中介表示的特徵,下列何者正確?
  5. 將上方程式碼轉為SSA形式後,if敘述之後會加入類似「x3 = φ(x1, x2)」的式子。關於此φ函數的作用,下列何者正確?

這個領域的比較