編譯原理學(xué)習(xí)教案_第1頁(yè)
編譯原理學(xué)習(xí)教案_第2頁(yè)
編譯原理學(xué)習(xí)教案_第3頁(yè)
編譯原理學(xué)習(xí)教案_第4頁(yè)
編譯原理學(xué)習(xí)教案_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、會(huì)計(jì)學(xué)1編譯原理編譯原理第一頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-32programmingPrinciple of compiler constructionFoundation of programming language第1頁(yè)/共51頁(yè)第二頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-33源程序源程序編譯編譯程序程序目標(biāo)程序目標(biāo)程序連接連接可執(zhí)行程序可執(zhí)行程序第2頁(yè)/共51頁(yè)第三頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-34第3頁(yè)/共51頁(yè)第四頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-35第4頁(yè)/共51頁(yè)第五頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-36重

2、點(diǎn)第5頁(yè)/共51頁(yè)第六頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-37第6頁(yè)/共51頁(yè)第七頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-38第1版第2版中譯本第7頁(yè)/共51頁(yè)第八頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-39第8頁(yè)/共51頁(yè)第九頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-310第9頁(yè)/共51頁(yè)第十頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-311Operating SystemHardware (Low Level Language)CompilerApplications (High Level Language)a = b + c * dMOV A, d

3、MUL A, dADD A, bMOV va, AAssembly CodesRegister-based orStack-based machines第10頁(yè)/共51頁(yè)第十一頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-312CompilerSource programTarget programError message第11頁(yè)/共51頁(yè)第十二頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-313第12頁(yè)/共51頁(yè)第十三頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-314CompilerSourceProgram/Code(C, Pascal etc.)TargetProgram/Co

4、de(Assembly,Machine Code)Error Messagea = b + c * dT1 := c * dT2 := b + T1a := T2MOV A, cMUL A, dADD A, bMOV va, A第13頁(yè)/共51頁(yè)第十四頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-315源程序 翻譯程序 目標(biāo)程序第14頁(yè)/共51頁(yè)第十五頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-316第15頁(yè)/共51頁(yè)第十六頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-317第16頁(yè)/共51頁(yè)第十七頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-318 Java BytecodesJa

5、va program(app.java)(Javac)(app.class)第17頁(yè)/共51頁(yè)第十八頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-319第18頁(yè)/共51頁(yè)第十九頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-320PreprocessorSource ProgramModified Source ProgramCompilerTarget Assembly ProgramAssemblerRelocatable Machine CodeTarget Machine CodeLibrary filesand/orRelocatable object filesLinker/Lo

6、aderThe context of a compiler第19頁(yè)/共51頁(yè)第二十頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-321詞法分析詞法分析代碼優(yōu)化代碼優(yōu)化語(yǔ)法分析語(yǔ)法分析語(yǔ)義分析及中間代碼生成語(yǔ)義分析及中間代碼生成目標(biāo)代碼生成目標(biāo)代碼生成第20頁(yè)/共51頁(yè)第二十一頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-322第21頁(yè)/共51頁(yè)第二十二頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-323詞法分析器詞法分析器語(yǔ)法分析器語(yǔ)法分析器語(yǔ)義分析器語(yǔ)義分析器源程序源程序中間代碼生成器中間代碼生成器代碼優(yōu)化器代碼優(yōu)化器代碼生成器代碼生成器目標(biāo)程序目標(biāo)程序出錯(cuò)管理器出錯(cuò)管理器符號(hào)表管理器

7、符號(hào)表管理器第22頁(yè)/共51頁(yè)第二十三頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-324第23頁(yè)/共51頁(yè)第二十四頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-325第24頁(yè)/共51頁(yè)第二十五頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-326第25頁(yè)/共51頁(yè)第二十六頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-327符符 號(hào)號(hào) 表表 positioninitialrate. . . . . . .123詞法分析器詞法分析器id1 := id2 + id3 * * 60 position := initial + rate * * 60lexical analyzer第26頁(yè)/共5

8、1頁(yè)第二十七頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-328單詞類(lèi)型單詞類(lèi)型 單詞單詞值值保留字 int標(biāo)識(shí)符 a界符 ;標(biāo)識(shí)符 a算符(賦值) =標(biāo)識(shí)符 a算符(加) +整數(shù) 2界符;第27頁(yè)/共51頁(yè)第二十八頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-329第28頁(yè)/共51頁(yè)第二十九頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-330assignment statementidentifier:=expressionpositionexpressionexpression+expressionexpression*identifiernumberrate60identifier

9、initialParse tree語(yǔ)法分析語(yǔ)法分析第29頁(yè)/共51頁(yè)第三十頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-331Syntax tree is a compressed representation of the parse tree.:=position+*rate60initial第30頁(yè)/共51頁(yè)第三十一頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-332符符 號(hào)號(hào) 表表 positioninitialrate. . . . . . .123語(yǔ)法分析器語(yǔ)法分析器id1 := id2 + id3 * * 60 :=+* *60id1id2id3Syntax Analyzer

10、第31頁(yè)/共51頁(yè)第三十二頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-333第32頁(yè)/共51頁(yè)第三十三頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-334語(yǔ)義分析語(yǔ)義分析錯(cuò)在哪里?例1: int arr2, c; c = arr1 * 10; 例2: Program p(input,output); var rate: real; procedure initial; position := initial + rate*60第33頁(yè)/共51頁(yè)第三十四頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-335Semantic analysis inserts a conversion fro

11、m integer to real.:=position+*rate60initialinttoreal插入語(yǔ)義處理結(jié)點(diǎn)的語(yǔ)法樹(shù)插入語(yǔ)義處理結(jié)點(diǎn)的語(yǔ)法樹(shù)第34頁(yè)/共51頁(yè)第三十五頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-336符符 號(hào)號(hào) 表表 positioninitialrate. . . . . . .123語(yǔ)義分析器語(yǔ)義分析器:=+* *60id1id2id3:=+* *60id1id2id3inttorealSemantic Analyzer第35頁(yè)/共51頁(yè)第三十六頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-337符符 號(hào)號(hào) 表表 positioninitialrate.

12、. . . . . .123中間代碼生成器中間代碼生成器temp1 := inttoreal(60)temp2 := id3 * temp1temp3 := id2 + temp2id1 := temp3:=+* *60id1id2id3inttorealIntermediate Code Generator第36頁(yè)/共51頁(yè)第三十七頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-338符符 號(hào)號(hào) 表表 positioninitialrate. . . . . . .123代碼優(yōu)化器代碼優(yōu)化器temp1 := inttoreal(60)temp2 := id3 * temp1temp3 :=

13、id2 + temp2id1 := temp3temp1 := id3 * * 60.0id1 := id2 + + temp1Code Optimizer第37頁(yè)/共51頁(yè)第三十八頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-339符符 號(hào)號(hào) 表表 positioninitialrate. . . . . . .123temp1 := id3 * * 60.0id1 := id2 + + temp1代碼生成器代碼生成器MOVF id3, R2MULF #60.0, R2MOVF id2, R1ADDF R2, R1MOVF R1, id1Code Generator第38頁(yè)/共51頁(yè)第三十

14、九頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-340第39頁(yè)/共51頁(yè)第四十頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-341character streamtoken streamsyntax treesyntax treeIntermediaterepresentationIntermediaterepresentationtarget-machine code第40頁(yè)/共51頁(yè)第四十一頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-342第41頁(yè)/共51頁(yè)第四十二頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-343第42頁(yè)/共51頁(yè)第四十三頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-344第43頁(yè)/共51頁(yè)第四十四頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-345單詞錯(cuò)語(yǔ)法錯(cuò)語(yǔ)義錯(cuò)(如多重定義、類(lèi)型不匹配)環(huán)境錯(cuò)(如數(shù)組太大、名字太長(zhǎng))溢出外設(shè)錯(cuò)誤(I/O錯(cuò))訪問(wèn)內(nèi)存越界編譯錯(cuò)誤運(yùn)行錯(cuò)誤邏輯錯(cuò)誤錯(cuò)誤分類(lèi)第44頁(yè)/共51頁(yè)第四十五頁(yè),編輯于星期日:十九點(diǎn) 二十分。2022-5-346源代碼前 端中間代碼后 端目標(biāo)代碼Front End : Analysis + Intermediate Code Generation

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論