編譯原理的一些總結(jié)
詞法分析
把編寫的代碼字符串按照一定的規(guī)則識別為一個個的token,即變成小的字符串。這里會根據(jù)正則表達(dá)式進(jìn)行識別,為了編碼方便,先把正則表達(dá)式變成NFA有窮自動機,然后再變成DFA無窮自動機,最后按照DFA進(jìn)行編碼,對字符串進(jìn)行識別。
語法分析
把詞法分析得出來的字符串token,組合起來,變成一顆語法樹,如果去構(gòu)建語法樹呢,需要去設(shè)計合適的文法,以及使用一系列的語法分析技術(shù)。
語法制導(dǎo)的翻譯
計算和分析語法分析得出的語法樹上的每個節(jié)點的綜合屬性和繼承屬性。定義一些語義動作來對各個節(jié)點上的屬性進(jìn)行處理。
中間代碼生成
源語言->中間代碼->目標(biāo)語言。根據(jù)語法制導(dǎo)翻譯對聲明賦值表達(dá)式控制流進(jìn)行翻譯,并通過回填技術(shù)對地址進(jìn)行填寫,最后翻譯成中間代碼,中間代碼使用三元式和四元式表示。
運行時刻環(huán)境
講述了運行時動態(tài)存儲和靜態(tài)存儲的規(guī)則,堆棧存儲,全局非全局?jǐn)?shù)據(jù)存儲和符號表