
這一部分,我們將基于之前創(chuàng)建好的抽象語法樹為源代碼生成具體的匯編語言代碼。在這之前,我們先來看看下面這段源代碼對應(yīng)生成的匯編代碼的內(nèi)容:...
上一部分,我們算是對匯編語言開了個頭,介紹了基本操作指令相關(guān)的內(nèi)容。這一部分,我們重點研究匯編語言的另外一塊內(nèi)容:棧幀結(jié)構(gòu)。 7.3 棧...
前面我們已經(jīng)詳細分析并實現(xiàn)了簡易C語言的前處理、詞法分析、語法分析和語義分析過程,最終得到了一棵沒有語法錯誤、節(jié)點相互關(guān)系清晰的抽象語法...
這一部分,我們研究語義分析中剩下的的流程和類型檢查。 6.2 流程檢查 還是以我們前面舉例使用的那段源代碼作為例子,經(jīng)過聲明檢查...
繞來繞去,千辛萬苦,我們終于創(chuàng)建了抽象語法樹,完成了對整個源代碼結(jié)構(gòu)性的分析,似乎可以喘一口氣了。但是,對于下面的代碼: 可以得到下面的...
緊接著上一部分抽象語法樹的內(nèi)容。在這一部分,我們將利用這些定義好的節(jié)點(磚塊)和抽象語法描述(水泥)搭建起完整的抽象語法樹。 同詞...
我們已經(jīng)重新抽象描述了C語言的表達式、語句和聲明,并且進行了實現(xiàn)。如果大家對在實現(xiàn)中出現(xiàn)的并沒有過多解釋的Binop和Negative這...
到這里,我們已經(jīng)研究了詞法分析中表達式和語句的描述和實現(xiàn)。這一部分,我們接著剖析聲明這一塊內(nèi)容。 3.3 聲明(declaration)...
我們緊接著上一部分的內(nèi)容,繼續(xù)討論表達式。 有了上一部分的基礎(chǔ),相信大家對這樣的抽象描述已經(jīng)有所了解了。類似的,我們可以直接寫出包...