第二章 PL0編譯程序ppt課件.ppt

第二章 PL0編譯程序ppt課件.ppt

ID:58689785

大?。?73.50 KB

頁(yè)數(shù):85頁(yè)

時(shí)間:2020-10-04

第二章 PL0編譯程序ppt課件.ppt_第1頁(yè)
第二章 PL0編譯程序ppt課件.ppt_第2頁(yè)
第二章 PL0編譯程序ppt課件.ppt_第3頁(yè)
第二章 PL0編譯程序ppt課件.ppt_第4頁(yè)
第二章 PL0編譯程序ppt課件.ppt_第5頁(yè)
資源描述:

《第二章 PL0編譯程序ppt課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、PL/0編譯程序PL/0編譯程序PL/0語(yǔ)言程序類(lèi)pcode代嗎源語(yǔ)言(PL/0)目標(biāo)語(yǔ)言(類(lèi)pcode)實(shí)現(xiàn)語(yǔ)言(pascal)PL/0類(lèi)pcodepascalPL/0編譯程序類(lèi)pcode解釋程序類(lèi)pcode代碼PL/0源程序輸入輸出PL/0編譯系統(tǒng)的結(jié)構(gòu)框架PL/0語(yǔ)言PL/0程序示例PL/0的語(yǔ)法描述圖PL/0語(yǔ)言文法的EBNF表示PL/0語(yǔ)言:PASCAL語(yǔ)言的子集PL/0程序示例CONSTA=10;(*常量說(shuō)明部分*)VARB,C;(*變量說(shuō)明部分*)PROCEDUREP;(*過(guò)程說(shuō)明部分*)VARD; PROCEDUREQ;VARX;BEGI

2、N READ(X);D:=X;WHILEX#0DOCALLP; END;BEGIN WRITE(D); CALLQ; END;BEGIN CALLP; END.Q的過(guò)程體p的過(guò)程體主程序體程序分程序.內(nèi)的文字表示非終結(jié)符或內(nèi)的文字或符號(hào)表示終結(jié)符constidentnumber=,;varident,;;procedureident;分程序語(yǔ)句分程序PL/0語(yǔ)言文法的EBNF表示EBNF引入的符號(hào)(元符號(hào)):<>用左右尖括號(hào)括起來(lái)的語(yǔ)法成分為非終結(jié)符∷=(→)‘定義為’∷=(→)的左部由右部定義

3、‘或’{}表示花括號(hào)內(nèi)的語(yǔ)法成分可重復(fù)任意次或限定次數(shù)[]

4、表示方括號(hào)內(nèi)的語(yǔ)法成分為任選項(xiàng)()表示圓括號(hào)內(nèi)的成分優(yōu)先例:用EBNF描述<整數(shù)>的定義:<整數(shù)>∷=[+

5、-]<數(shù)字>{<數(shù)字>} <數(shù)字>∷=0

6、1

7、2

8、3

9、4

10、5

11、6

12、7

13、8

14、9或更好的寫(xiě)法<整數(shù)>∷=[+

15、-]<非零數(shù)字>{<數(shù)字>}

16、0 <非零數(shù)字>∷=1

17、2

18、3

19、4

20、5

21、6

22、7

23、8

24、9 <數(shù)字>∷=0

25、<非零數(shù)字>PL/0語(yǔ)言是PASCAL語(yǔ)言的子集同PASCAL作用域規(guī)則(內(nèi)層可引用包圍它的外層定義的標(biāo)識(shí)符),上下文約束,過(guò)程可嵌套定義,可遞歸調(diào)用子集數(shù)據(jù)類(lèi)型,只有整型數(shù)據(jù)結(jié)構(gòu),只有簡(jiǎn)變和常數(shù)數(shù)字最多為14位標(biāo)識(shí)符的有效長(zhǎng)度是10語(yǔ)句種類(lèi)過(guò)

26、程最多可嵌套三層目標(biāo)代碼類(lèi)pcode目標(biāo)代碼類(lèi)pcode是一種假想棧式計(jì)算機(jī)的匯編語(yǔ)言。指令格式:flaf功能碼l層次差(標(biāo)識(shí)符引用層減去定義層)a根據(jù)不同的指令有所區(qū)別指令功能表consta=10; varb,c; procedurep;begin c:=b+a; end;begin read(b); whileb#0do begin callp; write(2*c); read(b); end end.(0)jmp08轉(zhuǎn)向主程序入口(1)jmp02轉(zhuǎn)向過(guò)程p入口(2)int03過(guò)程p入口,為過(guò)程p開(kāi)辟空間(3)lod13取變量b的值到棧頂(4)li

27、t010取常數(shù)10到棧頂(5)opr02次棧頂與棧頂相加(6)sto14棧頂值送變量c中(7)opr00退棧并返回調(diào)用點(diǎn)(16)(8)int05主程序入口開(kāi)辟5個(gè)??臻g(9)opr016從命令行讀入值置于棧頂(10)sto03將棧頂值存入變量b中(11)lod03將變量b的值取至棧頂(12)lit00將常數(shù)值0進(jìn)棧(13)opr09次棧頂與棧頂是否不等(14)jpc024等時(shí)轉(zhuǎn)(24)(條件不滿足轉(zhuǎn))(15)cal02調(diào)用過(guò)程p(16)lit02常數(shù)值2進(jìn)棧(17)lod04將變量c的值取至棧頂(18)opr04次棧頂與棧頂相乘(2*c)(19)opr0

28、14棧頂值輸出至屏幕(20)opr015換行(21)opr016從命令行讀取值到棧頂(22)sto03棧頂值送變量b中(23)jmp011無(wú)條件轉(zhuǎn)到循環(huán)入口(11)(24)opr00結(jié)束退棧PL/0編譯程序的結(jié)構(gòu)詞法分析程序語(yǔ)法語(yǔ)義分析程序代碼生成程序表格管理程序出錯(cuò)處理程序PL/0源程序目標(biāo)程序PL/0編譯程序的總體設(shè)計(jì)其編譯過(guò)程采用一趟掃描方式以語(yǔ)法、語(yǔ)義分析程序?yàn)楹诵脑~法分析程序和代碼生成程序都作為一個(gè)過(guò)程,當(dāng)語(yǔ)法分析需要讀單詞時(shí)就調(diào)用詞法分析程序,而當(dāng)語(yǔ)法、語(yǔ)義分析正確,需要生成相應(yīng)的目標(biāo)代碼時(shí),則調(diào)用代碼生成程序。表格管理程序?qū)崿F(xiàn)變量,常量和過(guò)

29、程標(biāo)識(shí)符的信息的登錄與查找。出錯(cuò)處理程序,對(duì)詞法和語(yǔ)法、語(yǔ)義分析遇到的錯(cuò)誤給出在源程序中出錯(cuò)的位置和與錯(cuò)誤性質(zhì)有關(guān)的編號(hào),并進(jìn)行錯(cuò)誤恢復(fù)。PL/0編譯程序詞法分析的設(shè)計(jì)與實(shí)現(xiàn)識(shí)別的單詞:保留字或關(guān)鍵字:如:BEGIN、END、IF、THEN等運(yùn)算符:如:+、-、*、/、:=、#、>=、<=等標(biāo)識(shí)符:用戶定義的變量名、常數(shù)名、過(guò)程名常數(shù):如:10、25、100等整數(shù)界符:如:‘,’、‘.’、‘;’、‘(’、‘)’等詞法分析過(guò)程GETSYM所要完成的任務(wù):讀源程序(getch)濾空格識(shí)別保留字識(shí)別標(biāo)識(shí)符拼數(shù)識(shí)別單字符單詞拼雙字符單詞詞法分析過(guò)程:GETSYM

30、框圖(見(jiàn)教材圖2.5)程序(proceduregetsym)當(dāng)識(shí)別到標(biāo)識(shí)符時(shí)先查

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。