版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1.PL/0編譯程序
PL/0編譯程序
PL/0語(yǔ)言程序
類(lèi)pcode代碼源語(yǔ)言(PL/0)
目標(biāo)語(yǔ)言(類(lèi)pcode)實(shí)現(xiàn)語(yǔ)言(C/pascal)PL/0編譯程序類(lèi)pcode解釋程序類(lèi)pcode代碼PL/0源程序輸入輸出PL/0編譯系統(tǒng)的結(jié)構(gòu)框架2.PL/0語(yǔ)言PL/0語(yǔ)言特征PL/0的語(yǔ)法描述圖PL/0語(yǔ)言文法的EBNF表示PL/0程序示例PL/0語(yǔ)言是PASCAL語(yǔ)言的子集數(shù)據(jù)類(lèi)型,只有整型數(shù)據(jù)結(jié)構(gòu),只有簡(jiǎn)變和常量整數(shù)最多為14位標(biāo)識(shí)符的有效長(zhǎng)度是10位過(guò)程最多可嵌套三層作用域規(guī)則(內(nèi)層可引用包圍它的外層定義的標(biāo)識(shí)符),過(guò)程可嵌套定義,可遞歸調(diào)用
內(nèi)的文字或符號(hào)表示非終結(jié)符或內(nèi)的文字或符號(hào)表示終結(jié)符2.2語(yǔ)法描述圖constidentnumbervaridentprocedureident分程序語(yǔ)句分程序例:用語(yǔ)法描述圖描述分程序的定義EBNF引入的符號(hào)(元符號(hào)):<>:用左右尖括號(hào)括起來(lái)的語(yǔ)法成分為非終結(jié)符∷=:‘定義為’∷=的左部由右部定義|:‘或’{}:表示花括號(hào)內(nèi)的語(yǔ)法成分可重復(fù)任意次或限定次數(shù)
[]:表示方括號(hào)內(nèi)的語(yǔ)法成分為任選項(xiàng)():表示圓括號(hào)內(nèi)的成分優(yōu)先2.3EBNF范式例:用EBNF描述分程序的定義<分程序>∷=[<常量說(shuō)明部分>][<變量說(shuō)明部分>][<過(guò)程說(shuō)明部分>]<語(yǔ)句><常量說(shuō)明部分>∷=CONST<常量定義>{,<常量定義>};<常量定義>∷=<標(biāo)識(shí)符>=<無(wú)符號(hào)整數(shù)><變量說(shuō)明部分>∷=VAR<標(biāo)識(shí)符>{,<標(biāo)識(shí)符>};
PL/0程序示例
CONSTA=10;(*常量說(shuō)明部分*) VARB,C;(*變量說(shuō)明部分*) PROCEDUREP;
(*過(guò)程說(shuō)明部分*) VARD; PROCEDUREQ; VARX;
BEGIN
READ(X); D:=X; WHILEX#0DO CALLP;
END;
BEGIN WRITE(D); CALLQ;
END; BEGIN CALLP; END.Q的過(guò)程體P的過(guò)程體主程序體3.PL/0編譯程序的總體設(shè)計(jì)詞法分析程序語(yǔ)法語(yǔ)義分析程序代碼生成程序表格管理程序出錯(cuò)處理程序PL/0源程序目標(biāo)程序其編譯過(guò)程采用一趟掃描方式以語(yǔ)法、語(yǔ)義分析程序?yàn)楹诵?/p>
詞法分析程序和代碼生成程序都作為一個(gè)過(guò)程,當(dāng)語(yǔ)法分析需要讀單詞時(shí)就調(diào)用詞法分析程序,而當(dāng)語(yǔ)法、語(yǔ)義分析正確,需要生成相應(yīng)的目標(biāo)代碼時(shí),則調(diào)用代碼生成程序。表格管理程序?qū)崿F(xiàn)變量,常量和過(guò)程標(biāo)識(shí)符的信息的登錄與查找。出錯(cuò)處理程序,對(duì)詞法和語(yǔ)法、語(yǔ)義分析遇到的錯(cuò)誤給出在源程序中出錯(cuò)的位置和與錯(cuò)誤性質(zhì)有關(guān)的編號(hào),并進(jìn)行錯(cuò)誤恢復(fù)。4.詞法分析分析過(guò)程所要完成的任務(wù):
讀源程序(getch)
濾空格識(shí)別保留字識(shí)別標(biāo)識(shí)符拼數(shù)拼雙字符單詞識(shí)別單字符單詞符號(hào)表typesymbol=(nul,ident,number,plus,…,varsym,procsym);保留字表:word[1]:=‘BEGIN‘;word[2]:=‘CALL‘;...word[13]:=‘WRITE‘;單字符表:ssym[‘+’]:=plus;ssym[‘-’]:=minus;…ssym[‘;’]:=semicolon;重要變量及過(guò)程注意:按ASCII順序存儲(chǔ)保留字。查到時(shí)找到相應(yīng)的內(nèi)部表示wsym[1]:=beginsym;wsym[2]:=callsym;…wsym[13]:=writesym;全局變量1)SYM:存放單詞的類(lèi)別如:有程序段落為:begininitial:=60;end對(duì)應(yīng)單詞翻譯后變?yōu)椋篵eginbeginsym,initialident,‘:=‘becomes,60number,‘;’semicolon,endendsym。2)ID:存放用戶(hù)所定義的標(biāo)識(shí)符的值如:initial(在SYM中放ident,在ID中放initial)3)NUM:存放用戶(hù)定義的數(shù)如:60(在SYM中放在number在NUM中放60)GETSYM框圖(見(jiàn)教材P19圖2.5)重要變量及過(guò)程任務(wù)一:讀程序內(nèi)容讀程序GetSym()
識(shí)別保留字識(shí)別標(biāo)識(shí)符拼數(shù)拼雙字符單詞識(shí)別單字符單詞要求每班前十名同學(xué)給予檢查任務(wù)二:擴(kuò)充單詞內(nèi)容增加保留字:FOR、DOWNTO和TO增加雙字符單詞:*=和/=要求設(shè)計(jì)測(cè)試方式,測(cè)試單詞是否能被識(shí)別每班前十名同學(xué)給予檢查
5.語(yǔ)法分析
—遞歸子程序法對(duì)應(yīng)每個(gè)非終結(jié)符語(yǔ)法單元,編一個(gè)獨(dú)立的處理過(guò)程(或子程序)。沿語(yǔ)法描述圖箭頭所指出的方向進(jìn)行分析:
1)遇到分支點(diǎn)時(shí),將當(dāng)前的單詞與分支點(diǎn)上多個(gè)終結(jié)符逐個(gè)相比較,若都不匹配時(shí)可能是進(jìn)入下一個(gè)非終結(jié)符語(yǔ)法單位或是出錯(cuò)。
2)當(dāng)遇到非終結(jié)符時(shí),則調(diào)用相應(yīng)的處理過(guò)程;
3)當(dāng)遇到描述圖中是終結(jié)符時(shí),則判斷當(dāng)前讀入的單詞是否與圖中的終結(jié)符相匹配,若匹配,再讀取下一個(gè)單詞繼續(xù)分析。程序pl0分程序block語(yǔ)句
statement條件condition表達(dá)式expression項(xiàng)term因子factor語(yǔ)法調(diào)用關(guān)系圖語(yǔ)句例:條件語(yǔ)句(不帶else子句)的遞歸子程序if條件thenstatement(){if(SYM==ifsym){//處理?xiàng)l件語(yǔ)句getSym();
condition();if(SYM==thensym)getSym();elseError();
statement();}else{……}//處理其它語(yǔ)句}語(yǔ)句任務(wù)三擴(kuò)充條件語(yǔ)句(帶else子句)畫(huà)出語(yǔ)法描述圖寫(xiě)出遞歸子程序類(lèi)pcode代碼語(yǔ)句的語(yǔ)義分析和處理6.語(yǔ)義分析
目標(biāo)代碼類(lèi)pcode是一種假想棧式計(jì)算機(jī)的匯編語(yǔ)言。指令格式:類(lèi)pcode代碼是由過(guò)程
GEN生成的,放在數(shù)組CODE中。flaf功能碼l層次差(標(biāo)識(shí)符引用層減去定義層)a根據(jù)不同的指令有所區(qū)別6.1類(lèi)pcode代碼指令功能表
CONSTa=10;
VARb,c;
BEGIN
READ(b);
WHILEb#0DO
BEGIN
READ(b);
END
END.
(0)
int05(1)opr016(2)sto03(3)lod03(4)lit00(5)opr09(6)jpc016(7)opr016(8)sto03(9)jmp03(10)opr00例:pcode代碼示例解釋器的結(jié)構(gòu)一維整型數(shù)組S作為運(yùn)行棧RADLSLbt每次調(diào)用過(guò)程時(shí)會(huì)在棧頂分配3個(gè)存儲(chǔ)單元:RA:返回地址,記錄調(diào)用該過(guò)程時(shí)目標(biāo)程序的斷點(diǎn);DL:動(dòng)態(tài)鏈,指向調(diào)用過(guò)程的AR基地址;SL:靜態(tài)鏈,指向定義該過(guò)程的直接定義外過(guò)程的AR基地址當(dāng)前AR的基地址棧頂位置
CONSTa=10;
VARb,c;
BEGIN
READ(b);
WHILEb#0DO
BEGIN
READ(b);
END
END.
(0)
int05(1)opr016(2)sto03(3)lod03(4)lit00(5)opr09(6)jpc010(7)opr016(8)sto03(9)jmp03(10)opr00例:pcode代碼的解釋執(zhí)行cb00020200100<條件語(yǔ)句>::=if<條件>then<語(yǔ)句>if(SYM==ident){//處理?xiàng)l件語(yǔ)句getSym();
condition();if(SYM==thensym)getSym();elseError();
statement();}else{……}//處理其它語(yǔ)句6.2條件語(yǔ)句的語(yǔ)義分析和處理(a>b)lod0alod0bopr012write(a)lod0aopr014opr015<條件語(yǔ)句>::=if<條件>then<語(yǔ)句>if(SYM==ident){//處理?xiàng)l件語(yǔ)句getSym();
condition();if(SYM==thensym)getSym();elseError();
statement();}else{……}//處理其它語(yǔ)句6.2條件語(yǔ)句的語(yǔ)義分析和處理CS(a>b)lod0alod0bopr012write(a)lod0aopr014opr015YNlod0alod0bopr012lod0aopr014opr015jpc00<條件語(yǔ)句>::=if<條件>then<語(yǔ)句>if(SYM==ident){//處理?xiàng)l件語(yǔ)句getSym();
condition();if(SYM==thensym)getSym();elseError();
statement();}else{……}//處理其它語(yǔ)句6.2條件語(yǔ)句的語(yǔ)義分析和處理CS(a>b)write(a)YNlod0alod0bopr012lod0aopr014opr015jpc00GEN(jpc,0,0)<條件語(yǔ)句>::=if<條件>then<語(yǔ)句>if(SYM==ident){//處理?xiàng)l件語(yǔ)句getSym();
condition();if(SYM==thensym)getSym();elseError();
statement();}else{……}//處理其它語(yǔ)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高考語(yǔ)文復(fù)習(xí)知識(shí)清單第九章語(yǔ)言文字運(yùn)用專(zhuān)題13圖文轉(zhuǎn)換(學(xué)生版+教師版)
- 自律的課件教學(xué)課件
- 三年級(jí)數(shù)學(xué)(上)計(jì)算題專(zhuān)項(xiàng)練習(xí)附答案
- 網(wǎng)店和解協(xié)議書(shū)(2篇)
- 南京航空航天大學(xué)《電力電子理論與方法》2023-2024學(xué)年期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《食品工藝學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 農(nóng)業(yè)示范區(qū)景觀工程施工組織設(shè)計(jì)
- 顏公河干流整治工程施工組織設(shè)計(jì)
- 南京工業(yè)大學(xué)浦江學(xué)院《結(jié)構(gòu)力學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 《小數(shù)的性質(zhì)》小學(xué)數(shù)學(xué)說(shuō)課稿
- 美麗農(nóng)村路建設(shè)指南DB41-T 1935-2020
- 2024年大學(xué)試題(計(jì)算機(jī)科學(xué))-網(wǎng)絡(luò)工程設(shè)計(jì)與系統(tǒng)集成考試近5年真題集錦(頻考類(lèi)試題)帶答案
- 落實(shí)《中小學(xué)德育工作指南》制定的實(shí)施方案
- 2023年制藥設(shè)備行業(yè)分析報(bào)告及未來(lái)五至十年行業(yè)發(fā)展報(bào)告
- 期中測(cè)試卷(試題)-2024-2025學(xué)年三年級(jí)上冊(cè)語(yǔ)文統(tǒng)編版
- 醫(yī)學(xué)教材打印版護(hù)士首次執(zhí)業(yè)注冊(cè)體檢表
- 《月圓中秋節(jié):1 對(duì)月當(dāng)歌》教學(xué)設(shè)計(jì)-2024-2025學(xué)年五年級(jí)上冊(cè)綜合實(shí)踐活動(dòng)滬科黔科版
- 2024秋國(guó)家開(kāi)放大學(xué)《形勢(shì)與政策》專(zhuān)題測(cè)驗(yàn)及大作業(yè)參考答案
- 2025屆高考語(yǔ)文復(fù)習(xí):文言文翻譯 課件
- 2《伶官傳序》公開(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì) 統(tǒng)編版高中語(yǔ)文選擇性必修中冊(cè)
- 2024比亞迪出海專(zhuān)題報(bào)告(空間、格局、進(jìn)展、展望)-2024-09-企業(yè)研究
評(píng)論
0/150
提交評(píng)論