編譯器

下列何者是用來表示許多程式語言的文法、並成為語法分析之基礎的文法種類?

  1. A僅有正規文法
  2. B自然語言的文法
  3. C脈絡無關文法(context-free grammar)
查看答案與解析

正確答案:C. 脈絡無關文法(context-free grammar)

括號的巢狀結構,或if敘述裡面還有if敘述的結構,無法用正規表示式表示。許多程式語言的文法是用脈絡無關文法表示的,它是像「運算式 → 運算式 + 項」這樣的改寫規則的集合,語法分析就是依據這種文法來進行。解析方法有從上往下套用規則的LL法,以及從下往上組建的LR法等,也有能從文法自動產生解析器的工具。正規文法適用於詞法分析,無法處理巢狀結構。

  • A. 正規文法無法表示括號巢狀這類結構。
  • B. 程式語言不是以自然語言的文法來定義的。
  • C. 正確。語法分析是以脈絡無關文法為基礎。
練習這個領域 前往領域頁面

編譯器的其他題目

  1. 運算式 2 + 3 * 4 的抽象語法樹之形狀,下列何者正確?
  2. 關於中介表示之一的三位址碼(three-address code)的特徵,下列何者正確?
  3. 作為暫存器配置的準備而進行的存活區間(liveness)分析,所求的是下列何者?
  4. 某函式中,同時存活的值之數量在最多的地方是5個。在干涉圖除了這5個之外不產生其他限制的單純情況下,要讓所有值不溢出就放入暫存器,暫存器至少需要幾個?
  5. 將重複100次的迴圈,改寫成將主體並排4次份的迴圈展開,次數的判斷與分支會變成幾次?(假設100可被4整除)

這個領域的比較