編譯器各個步驟的介紹
阿新 • • 發佈:2018-06-24
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
檢查代碼是否符合語義。將類型信息存入語法樹或符號表中,包括類型檢查和類型自動轉換。
中間代碼生成:
翻譯成目標代碼的過程中,編譯器可能構造出多個中間表示形式,語法樹是其中一種表示形式,通常在語法分析與語義分析中使用。
在完成語義分析後,還需要生成一個明確的低級的或類機器語言的中間表示形式。考慮使用三地址代碼的中間表示形式。它 由一組類似匯編語言的指令組成,每個指令有三個運算分量。
指令的最右部最多只有一個運算符,並且這些指令確定了運算完成的順序。
代碼生成器:
以源程序的中間表示形式作為輸入,映射到目標語言。如果目標語言是機器代碼,那麽必須為程序使用的每個變量選擇寄存器或內存位置。這樣,中間指令將被翻譯成能夠完成相同任務的機器指令序列。
編譯器各個步驟的介紹