SOS,我在澳洲上學(xué),我們Compiler Design這門課的作業(yè)是完成一個(gè)關(guān)于Semantic Analyser & Code Generator的項(xiàng)目,我前面幾節(jié)課沒仔細(xì)聽,結(jié)果現(xiàn)在完全不知道該怎么做作業(yè)了,老師可以幫我講解一下嗎?
同學(xué)不用擔(dān)心,我們這邊有專門輔導(dǎo)課程作業(yè)的老師,可以幫助同學(xué)解決Compiler Design的作業(yè)問題。根據(jù)問題描述來看,同學(xué)的作業(yè)是一個(gè)關(guān)于語義分析器和代碼生成器的項(xiàng)目,但同學(xué)目前對(duì)這二者的概念還不是很清楚,因此無法完成作業(yè)。針對(duì)這個(gè)問題,我先簡(jiǎn)單介紹一下語義分析器和代碼生成器的概念,希望對(duì)同學(xué)有一定幫助。

1、語義分析執(zhí)行類型檢查,并經(jīng)常將解析樹轉(zhuǎn)換為另一種稱為中間表示的形式。
語義分析器的輸入通常是屬性語法。屬性語法是一種用于語義分析的通用規(guī)范語言。編譯器的語義分析階段可以執(zhí)行許多不同的任務(wù),而不是像掃描和解析那樣執(zhí)行單個(gè)任務(wù)。需要許多稱為屬性的變量來描述這些任務(wù)。
2、代碼生成器輸入程序的中間表示并輸出目標(biāo)代碼。
實(shí)現(xiàn)代碼生成過程自動(dòng)化以及良好編程風(fēng)格的第一步是將代碼生成算法與機(jī)器代碼本身分離開來。代碼生成算法由輸入中間代碼和查詢表的驅(qū)動(dòng)程序組成。代碼生成器的輸入是一組有序?qū)ΑS行驅(qū)Φ牡谝粋€(gè)元素是對(duì)要匹配的中間表示的子樹的描述;第二個(gè)元素是在這種匹配中輸出的代碼。
同學(xué)如果急需老師講解作業(yè),可以添加文章下方的微信,直接和我們的澳洲課程輔導(dǎo)老師聯(lián)系,老師會(huì)根據(jù)作業(yè)的具體內(nèi)容進(jìn)行更有針對(duì)性的輔導(dǎo)。