PL0編譯程序的實(shí)現(xiàn)(4學(xué)時(shí))

PL0編譯程序的實(shí)現(xiàn)(4學(xué)時(shí))

ID:41066210

大?。?78.51 KB

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

時(shí)間:2019-08-15

PL0編譯程序的實(shí)現(xiàn)(4學(xué)時(shí))_第1頁(yè)
PL0編譯程序的實(shí)現(xiàn)(4學(xué)時(shí))_第2頁(yè)
PL0編譯程序的實(shí)現(xiàn)(4學(xué)時(shí))_第3頁(yè)
PL0編譯程序的實(shí)現(xiàn)(4學(xué)時(shí))_第4頁(yè)
PL0編譯程序的實(shí)現(xiàn)(4學(xué)時(shí))_第5頁(yè)
資源描述:

《PL0編譯程序的實(shí)現(xiàn)(4學(xué)時(shí))》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、第2章PL/0編譯程序的實(shí)現(xiàn)2.1PL/0語(yǔ)言描述2.2PL/0編譯程序的結(jié)構(gòu)2.3PL/0編譯程序的詞法分析2.4PL/0編譯程序的語(yǔ)法語(yǔ)義分析2.5PL/0編譯程序的目標(biāo)代碼結(jié)構(gòu)和代碼生成2.6PL/0編譯程序的語(yǔ)法錯(cuò)誤處理2.7PL/0編譯程序的目標(biāo)代碼解釋執(zhí)行時(shí)的存儲(chǔ)分配何為PL/0語(yǔ)言?PL/0語(yǔ)言:PASCAL語(yǔ)言的子集,功能簡(jiǎn)單,結(jié)構(gòu)清晰,可讀性強(qiáng),具備了一般高級(jí)語(yǔ)言的必備部分。PL/0程序示例:CONSTA=10;VARB,C;PROCEDUREP; VARD;PROCEDUREQ; VARX; BEGIN READ(X); D:=X;

2、 WHILEX#0DOCALLP; END;BEGIN WRITE(D); CALLQ; END;BEGIN CALLP;END.PL/0編譯程序pcode解釋程序PL/0源程序注:此處的pcode代碼專指PL/0的目標(biāo)代碼,與傳統(tǒng)pcode有區(qū)別pcode代碼2021/9/192.1PL/0語(yǔ)言描述語(yǔ)法描述的目的:用有窮的文法形式,描述(驗(yàn)證)無(wú)窮的句子形式。語(yǔ)法描述的常用形式:非形式化描述(不規(guī)范)語(yǔ)法描述圖:直觀、易讀。EBNF(擴(kuò)充的巴科斯-瑙爾范式)NEXTPL/0語(yǔ)言的非形式描述數(shù)據(jù)類型只有整型標(biāo)識(shí)符的有效長(zhǎng)度是10,以字母開始的字母數(shù)字串

3、過(guò)程無(wú)參,可嵌套(最多三層),可遞歸調(diào)用變量的作用域同PASCAL,常量為全局的,無(wú)標(biāo)語(yǔ)句類型:賦值語(yǔ)句,if...then...,while...do...,read,write,call,復(fù)合語(yǔ)句begin...end,說(shuō)明語(yǔ)句:const...,var...,procedure…13個(gè)保留字:if,then,while,do,read,write,call,begin,end,const,var,procedure,odd2021/9/19PL/0語(yǔ)言的語(yǔ)法描述圖(1)終結(jié)符VT語(yǔ)法成分中的最小單位,構(gòu)成語(yǔ)言文法的單詞。橢圓或圓圈內(nèi)的單詞表示VT

4、(2)非終結(jié)符VN語(yǔ)法成分,在書寫程序時(shí)并不出現(xiàn),但可一直追溯成VT表示的形式。矩形內(nèi)的符號(hào)表示VN(13-15頁(yè))BNF(BACKUS-NAURFORM)是根據(jù)美國(guó)的JohnW.Backus與丹麥的PeterNaur來(lái)命名的,它從語(yǔ)法上描述程序設(shè)計(jì)語(yǔ)言的元語(yǔ)言。采用BNF可說(shuō)明哪些符號(hào)序列是對(duì)于某給定語(yǔ)言在語(yǔ)法上有效的程序。BNF引入的符號(hào):<>表示語(yǔ)法構(gòu)造成分(語(yǔ)法單位),為非終結(jié)符∷=‘定義為’

5、‘或’EBNF引入的符號(hào):{}表示花括號(hào)內(nèi)的語(yǔ)法成分可重復(fù)[]表示方括號(hào)內(nèi)的語(yǔ)法成分為任選項(xiàng)()表示圓括號(hào)內(nèi)的成分優(yōu)先PL/0語(yǔ)言文法的EBNF表示8兩

6、個(gè)用EBNF描述“整數(shù)”的例子<整數(shù)>∷=[+

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

8、1

9、2

10、3

11、4

12、5

13、6

14、7

15、8

16、9或<整數(shù)>∷=[+

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

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

19、2

20、3

21、4

22、5

23、6

24、7

25、8

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

27、1

28、2

29、3

30、4

31、5

32、6

33、7

34、8

35、9PL/0語(yǔ)言文法參見P15,16練習(xí):P.31題6(2)(3)92.2PL/0編譯程序的結(jié)構(gòu)PL/0編譯過(guò)程采用一趟掃描方式以語(yǔ)法語(yǔ)義分析程序?yàn)楹诵?詞法分析程序和代碼生成程序都作為一個(gè)獨(dú)立的過(guò)程。當(dāng)語(yǔ)法分析需要讀單詞時(shí),就調(diào)用詞法分析程序當(dāng)語(yǔ)法分析正確需要生成相應(yīng)的目標(biāo)代碼時(shí),則調(diào)

36、用代碼生成程序用表格管理程序建立變量、常量和過(guò)程標(biāo)識(shí)符的說(shuō)明與引用之間的信息聯(lián)系。用出錯(cuò)處理程序?qū)υ~法和語(yǔ)法分析遇到的錯(cuò)誤,給出在源程序中出錯(cuò)的位置和錯(cuò)誤性質(zhì)。10語(yǔ)法語(yǔ)義分析程序詞法分析程序表格管理程序出錯(cuò)處理程序代碼生成程序目標(biāo)程序PL/0編譯程序的結(jié)構(gòu)圖PL/0源程序目標(biāo)程序解釋執(zhí)行程序輸入數(shù)據(jù)結(jié)果編譯過(guò)程解釋執(zhí)行過(guò)程11編譯程序總體流程圖17頁(yè)12所需識(shí)別的單詞:關(guān)鍵字:如BEGIN、END、IF、THEN等運(yùn)算符:如+、-、*、/、:=、#、>=、<=等標(biāo)識(shí)符:用戶定義的變量名、常數(shù)名、過(guò)程名常數(shù):如10、25、100等整數(shù)界符:如,.;()

37、等2.3PL/0編譯程序的詞法分析詞法分析過(guò)程GETSYM所要完成的任務(wù):濾空格、識(shí)別保留字、識(shí)別標(biāo)識(shí)符、拼數(shù)、拼復(fù)合詞、輸出源程序參見P.19圖通過(guò)三個(gè)全程量將識(shí)別出的單詞信息傳遞給語(yǔ)法分析程序SYM:存放單詞的類別,如beginsym,ident,numberID:存放用戶所定義的標(biāo)識(shí)符的值NUM:存放用戶定義的數(shù)13程序pl/0分程序block語(yǔ)句statement條件condition表達(dá)式expression項(xiàng)term因子factor2.4PL/0編譯程序的語(yǔ)法語(yǔ)義分析語(yǔ)法分析的任務(wù):識(shí)別由詞法分析給出的單詞符號(hào)序列在“結(jié)構(gòu)”上是否符合給定的

38、“文法規(guī)則”。語(yǔ)法分析的過(guò)程:從讀入第一個(gè)單詞開始,由VN“程序”出發(fā),沿語(yǔ)法圖箭頭所指進(jìn)行分

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

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

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(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)系客服處理。