什麼是語法分析

檢查語彙單元序列是否符合語言的文法,並將程式結構組成樹狀的編譯器階段。文法錯誤會在這裡被發現。

日文名稱: 構文解析

「語法分析」出現在1領域的6道練習題中(編譯器等)。

這個名詞所屬的領域: 編譯器

練習語法分析的題目

關於編譯器的語法分析所進行的工作,下列何者正確?

  1. A從字元序列中移除空白與註解,並切分為單字
  2. B找出經常執行的部分,並在執行時轉換為機器碼
  3. C依照文法檢視token序列,將程式的結構組成樹狀結構
查看答案與解析

正確答案:C. 依照文法檢視token序列,將程式的結構組成樹狀結構

語法分析會檢查詞法分析所得的token序列是否符合語言的文法,並將if敘述的條件與主體、運算式中各運算的組合等結構組成樹狀結構(語法樹)。漏寫分號或括號不成對等文法錯誤,會在這個階段被發現。移除空白並切分為單字的是詞法分析,在執行時轉換為機器碼的則是JIT編譯。

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

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

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

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

解析中的「語法分析」

出現「語法分析」的題目(6題)

  1. 關於編譯器的語法分析所進行的工作,下列何者正確?
  2. 下列何者是用來表示許多程式語言的文法、並成為語法分析之基礎的文法種類?
  3. 關於編譯器詞法分析的作用,下列何者正確?
  4. 下列何者最適合作為編譯器的語意分析所能發現的錯誤範例?
  5. 關於抽象語法樹(AST)的特徵,下列何者正確?
  6. 在程式的錯誤中,下列何者能在編譯時就被發現?

相關名詞

詞法分析 JIT編譯(即時編譯) 抽象語法樹(AST) 中間表示法(IR) 共同子運算式消除 向量化 行內展開 指令排程 迴圈展開 基本區塊

前往名詞解釋列表