2 請問將程式原始碼(Source Code)轉換至可執行碼(Object Code)之編譯過程中,其中將符號(Symbol) 轉為標記(Token)的轉換工具,是下列那一個?
(A)詞法分析器(Lexical Analyzer)
(B)語法分析器(Syntax Analyzer)
(C)語意分析器(Semantic Analyzer)
(D)碼產生器(Code Generator)
答案:登入後查看
統計: A(35), B(27), C(14), D(18), E(0) #2780538
統計: A(35), B(27), C(14), D(18), E(0) #2780538
詳解 (共 2 筆)
#5815524
承接上面同學的答案,做些補充。
第一步:詞法(詞彙、語彙)分析器(Lexical Analyzer,簡稱Lexer)
將原始碼中所有字元逐字讀入,分解為標記(token,也有人譯為「單語」)。
第二步:語法分析器(Syntax Analyzer,也有人稱為Parser)
讀取標記(token),然後對照語法規則來判斷標記(token)屬於哪個語法的哪個部分,遇到不合法的標記(token)就會丟出 Parse error,最後產生語法樹(Syntax Tree,也有人稱為也有人稱為Parser tree)。
第三步:語意分析器(Semantic Analyzer)
幫語法樹(Syntax Tree,也有人稱為也有人稱為Parser tree)做檢查,確認裡面的語意是否有問題,然後產生抽象語法樹(Abstract Syntax Tree,AST)。
例如:var a:bool = 1 + ture
假設一個數字跟一個布林值相加,很明顯是錯誤的,語意分析器(Semantic Analyzer)要做的就是把這個問題抽出來。
---中間語言生成---
編譯器可能有中間語言,稱作中間表達式 Intermedia Representation(簡稱 IR)
第四步:碼產生器(Code Generator)
最佳化與目的碼輸出。
2
0