普考-資訊處理計算機概要109 年第 29 題單選題
編譯器是在下列那一個階段,判斷程式是否符合語法(syntax)?
A詞法分析(lexical analysis)
B解析(parsing)正確答案
C語意分析與機器碼產生(semantic analysis and code generation)
D機器碼最佳化(code optimization)
B正確答案
編譯器在 parsing(語法分析)階段依文法規則判斷程式是否符合 syntax。
為什麼答案是 B
Parsing(語法分析)根據程式語言的文法規則(如 BNF),將 token 組成語法樹,檢查程式結構是否符合 syntax,這正是判斷語法正確性的階段。
載入中…
完整詳解
Pro · 無限重點 編譯器在 parsing(語法分析)階段依文法規則判斷程式是否符合 syntax。
看到 syntax 直接連結 parsing(語法分析),兩字根本是同一件事。
逐選項分析
A✕ 陷阱
詞法分析是將原始碼切成一個個 token(如識別字、關鍵字、運算子),只檢查「字詞」是否合法,不檢查整體句子結構。
B✓ 正確
Parsing(語法分析)根據程式語言的文法規則(如 BNF),將 token 組成語法樹,檢查程式結構是否符合 syntax,這正是判斷語法正確性的階段。
C✕
語意分析處理的是「意義」層面,例如型別檢查、變數是否宣告;機器碼產生則是把中介碼轉成目的碼,皆非 syntax 檢查階段。
D✕
機器碼最佳化發生在產生程式碼之後,目的是讓程式更快、更省空間,與語法檢查完全無關。
編譯器六大階段與任務
| 階段 | 輸入 | 輸出 | 主要檢查 |
|---|
| 詞法分析 Lexical | 原始碼字元 | Token 串 | 字詞是否合法 |
| 語法分析 Parsing | Token 串 | 語法樹 | 句法 syntax |
| 語意分析 Semantic | 語法樹 | 標註樹 | 型別、宣告等意義 |
| 中介碼產生 | 標註樹 | IR | — |
| 最佳化 Optimization | IR / 機器碼 | 更佳碼 | 效能 |
| 機器碼產生 | IR | 目的碼 | — |
最常見陷阱是把「詞法分析」當成語法檢查。記住:lexical 只看「單字拼對沒」,parsing 才看「句子文法對不對」。Syntax 這個字在編譯器語境下幾乎就等於 parsing 的工作。