1. 程式人生 > >編譯器各個步驟的介紹

編譯器各個步驟的介紹

san attr all osi 必須 字符 ans -s 中間代碼生成

233

技術分享圖片

詞法分析:scanning

將字符流變成詞素序列。每個詞素使用 <token-name, attribute-vallue> 格式的詞法單元(token)表示。

position = initial + rate * 60 轉換成 <id, 1> <=> <id,2> <+> <id,3> <*> <60>

語法分析:parsing

創建樹形的中間表示形式。表示詞法單元流的語法結構。

語義分析:semantic analyzer

檢查代碼是否符合語義。將類型信息存入語法樹或符號表中,包括類型檢查和類型自動轉換。

中間代碼生成:

翻譯成目標代碼的過程中,編譯器可能構造出多個中間表示形式,語法樹是其中一種表示形式,通常在語法分析與語義分析中使用。

在完成語義分析後,還需要生成一個明確的低級的或類機器語言的中間表示形式。考慮使用三地址代碼的中間表示形式。它 由一組類似匯編語言的指令組成,每個指令有三個運算分量。

技術分享圖片 指令的最右部最多只有一個運算符,並且這些指令確定了運算完成的順序。

代碼生成器:

以源程序的中間表示形式作為輸入,映射到目標語言。如果目標語言是機器代碼,那麽必須為程序使用的每個變量選擇寄存器或內存位置。這樣,中間指令將被翻譯成能夠完成相同任務的機器指令序列。

技術分享圖片

編譯器各個步驟的介紹