資源描述:
《編譯原理湖南大學(xué)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、楊曉波湖南大學(xué)信息科學(xué)與工程學(xué)院Email:248133074@qq.com2/23/2011QQ群:81711763(編譯原理)(輸入學(xué)號(hào)進(jìn)行驗(yàn)證,進(jìn)入后改名為年級(jí)+學(xué)號(hào)后三位+姓名,如:07101張三)編譯原理CompilerPrinciples2010-1-14教材及參考書趙建華等譯.編譯原理(第2版).機(jī)械工業(yè)出版社,2009龍之書陳火旺.程序設(shè)計(jì)語(yǔ)言編譯原理(第3版)國(guó)防工業(yè)出版社.2000學(xué)習(xí)內(nèi)容及動(dòng)機(jī)課程內(nèi)容編譯程序構(gòu)造的基本原理和實(shí)現(xiàn)技術(shù).學(xué)習(xí)動(dòng)機(jī):提高學(xué)習(xí)能力、實(shí)踐能力和計(jì)算思維能力編譯程序是程序語(yǔ)言應(yīng)用的基礎(chǔ)在
2、早期的ACM圖靈獎(jiǎng)中程序設(shè)計(jì)語(yǔ)言、編譯理論與方法約占1/3程序語(yǔ)言上千種,而其編譯器的構(gòu)造原理卻相通其模型、理論和算法廣泛應(yīng)用,如:代碼優(yōu)化技術(shù)用于尋找軟件缺陷和漏洞有窮自動(dòng)機(jī)和正則表達(dá)式用于深度包檢測(cè)文法用于自然語(yǔ)言翻譯學(xué)好編譯原理有助于更好地理解高級(jí)語(yǔ)言有助于構(gòu)造一些實(shí)用的工具萬(wàn)變不離其宗怎樣構(gòu)造編譯程序構(gòu)造編譯程序的前提:掌握源語(yǔ)言掌握目標(biāo)語(yǔ)言掌握編譯方法考核方式及要求作業(yè)20%+實(shí)驗(yàn)30%+筆試50%+表現(xiàn)-3~3要求DIY、按時(shí)交抄襲計(jì)0分,過(guò)期不候作業(yè):word2003文檔,宋體5號(hào)第一章要點(diǎn)語(yǔ)言處理器(是什么,做什么
3、)編譯器的結(jié)構(gòu)(有什么)編譯程序的其他問(wèn)題遍前端與后端編譯程序的構(gòu)造方法(怎么做)程序語(yǔ)言的發(fā)展歷程程序設(shè)計(jì)語(yǔ)言基礎(chǔ)第一章引論1.1語(yǔ)言處理器Q:我們?cè)趺醋層?jì)算機(jī)工作的?A:編程。Q:計(jì)算機(jī)能直接執(zhí)行什么程序?A:機(jī)器語(yǔ)言程序Q:我們所書寫的程序一般是面向人類的高級(jí)語(yǔ)言程序,它們是怎樣執(zhí)行的?1.1語(yǔ)言處理器程序的執(zhí)行方式解釋型,如:BASIC編譯型,如:C,C++混合型,如:JAVA其中后兩種都要使用編譯程序(編譯器)。源程序目標(biāo)程序編譯器1.1語(yǔ)言處理器編譯程序(compiler)把某一種語(yǔ)言程序(源語(yǔ)言)等價(jià)地轉(zhuǎn)換成另一種語(yǔ)
4、言程序(目標(biāo)語(yǔ)言)的程序輸入輸出目標(biāo)程序運(yùn)行當(dāng)目標(biāo)程序是一個(gè)可執(zhí)行的機(jī)器語(yǔ)言程序,可被用戶調(diào)用,處理輸入并產(chǎn)生輸出1.1語(yǔ)言處理器解釋程序把源語(yǔ)言寫的源程序作為輸入,但不產(chǎn)生目標(biāo)程序,而是直接利用輸入執(zhí)行源程序中的指定操作。輸入輸出解釋器源程序混合編譯器編譯執(zhí)行比解釋執(zhí)行快解釋執(zhí)行錯(cuò)誤診斷效果更好JAVA處理器中結(jié)合了編譯和解釋過(guò)程,是混合編譯器輸入輸出解釋器源程序編譯器中間代碼JAVA語(yǔ)言操作系統(tǒng)平臺(tái)Java虛擬機(jī)(解釋器)Java編譯器Java源程序(.java)Java虛擬機(jī)代碼(.class)解釋執(zhí)行javacjava.N
5、ET框架與VS.NETOperatingSystemCommonLanguageRuntimeADO.NET:DataandXMLASP.NET:WebServices&WebFormsWindowsFormsCommonLanguageSpecificationVisualStudio.NETVBC++C#JScript….net框架類似java虛擬機(jī).net編程工作原理操作系統(tǒng)平臺(tái)CLR各自的編譯器高級(jí)語(yǔ)言代碼(支持CLR,符合CLS)托管代碼(MSIL)即時(shí)編譯JIT操作系統(tǒng)平臺(tái)CLR各自的編譯器操作系統(tǒng)平臺(tái)CLR各自的
6、編譯器操作系統(tǒng)平臺(tái)語(yǔ)言處理系統(tǒng)要產(chǎn)生可執(zhí)行的文件,除了編譯器外,還需要其他的一些程序。源程序骨架預(yù)處理器預(yù)處理后的源程序編譯器目標(biāo)匯編程序匯編器可重定位機(jī)器代碼鏈接/裝載器庫(kù)文件,其他可重定位目標(biāo)文件目標(biāo)機(jī)器代碼宏擴(kuò)展,加入頭文件1.2編譯器結(jié)構(gòu)把英文翻譯為中文的過(guò)程如下:識(shí)別出句子中的一個(gè)個(gè)單詞;分析句子的語(yǔ)法結(jié)構(gòu);根據(jù)句子的含義進(jìn)行初步翻譯;對(duì)譯文進(jìn)行修飾;寫出最后的譯文。詞法分析語(yǔ)法分析中間代碼產(chǎn)生優(yōu)化目標(biāo)代碼產(chǎn)生編譯器的結(jié)構(gòu)(1)編譯器可以分為分析部分和綜合部分分析部分(前端,frontend)把源程序分解成組成要素,以及
7、相應(yīng)的語(yǔ)法結(jié)構(gòu)使用這個(gè)結(jié)構(gòu)創(chuàng)建源程序的中間表示同時(shí)收集和源程序相關(guān)的信息,存放到符號(hào)表綜合部分(后端,backend)根據(jù)中間表示和符號(hào)表信息構(gòu)造目標(biāo)程序前端部分是機(jī)器無(wú)關(guān)的,后端部分是機(jī)器相關(guān)的。編譯器的結(jié)構(gòu)(2)編譯器可分成順序執(zhí)行的一組步驟(phase)前端后端與源語(yǔ)言有關(guān)與目標(biāo)機(jī)有關(guān)詞法分析詞法分析/掃描(lexicalanalysis,scanning)讀入源程序的字符流,輸出成為有意義的詞素(lexeme)token-name由語(yǔ)法分析步驟使用attribute-
8、value指向相應(yīng)的符號(hào)表?xiàng)l目,由語(yǔ)義分析/代碼生成步驟使用例子position=initial+rate*60<=,><+,><*,>語(yǔ)法分析語(yǔ)法分析/解析(syntaxanalysis/p