




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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ǔ)言程序
類pcode代碼源語(yǔ)言(PL/0)
目標(biāo)語(yǔ)言(類pcode)實(shí)現(xiàn)語(yǔ)言(C/pascal)PL/0編譯程序類pcode解釋程序類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ù)類型,只有整型數(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:存放單詞的類別如:有程序段落為:begininitial:=60;end對(duì)應(yīng)單詞翻譯后變?yōu)椋篵eginbeginsym,initialident,‘:=‘becomes,60number,‘;’semicolon,endendsym。2)ID:存放用戶所定義的標(biāo)識(shí)符的值如:initial(在SYM中放ident,在ID中放initial)3)NUM:存放用戶定義的數(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ě)出遞歸子程序類pcode代碼語(yǔ)句的語(yǔ)義分析和處理6.語(yǔ)義分析
目標(biāo)代碼類pcode是一種假想棧式計(jì)算機(jī)的匯編語(yǔ)言。指令格式:類pcode代碼是由過(guò)程
GEN生成的,放在數(shù)組CODE中。flaf功能碼l層次差(標(biāo)識(shí)符引用層減去定義層)a根據(jù)不同的指令有所區(qū)別6.1類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)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高校統(tǒng)計(jì)管理暫行辦法
- 2025中國(guó)人民健康保險(xiǎn)股份有限公司安徽分公司招聘筆試歷年參考題庫(kù)附帶答案詳解
- 2025廣西交通投資集團(tuán)有限公司第二季度招聘192人筆試歷年參考題庫(kù)附帶答案詳解
- 中考二??荚囌Z(yǔ)文試卷(圖片版含答案)
- 幼兒食品安全教育講座
- 加油加氣站安全技術(shù)課件
- 病理學(xué)技術(shù)(中級(jí))考試試題及答案
- 2024年陜西省富縣人民醫(yī)院公開(kāi)招聘護(hù)理工作人員試題帶答案詳解
- 2020-2025年中國(guó)電梯金屬材料行業(yè)發(fā)展趨勢(shì)及投資前景預(yù)測(cè)報(bào)告
- 2020-2025年中國(guó)汽車自動(dòng)化行業(yè)發(fā)展趨勢(shì)及投資前景預(yù)測(cè)報(bào)告
- 2024-2025學(xué)年下學(xué)期高一數(shù)學(xué)人教A版期末必刷??碱}之頻率與概率
- 設(shè)備易損配件管理制度
- 青霉素過(guò)敏反應(yīng)的急救
- 2025-2030中國(guó)鋁業(yè)發(fā)展?fàn)顩r與投資戰(zhàn)略研究報(bào)告
- 國(guó)外警用槍支管理制度
- 2025年國(guó)家醫(yī)療器械抽檢品種檢驗(yàn)方案
- 防汛物資儲(chǔ)備定額編制規(guī)程(SL298-2024)
- 平臺(tái)廣告投放管理制度
- 無(wú)人機(jī)培訓(xùn)創(chuàng)業(yè)計(jì)劃書(shū)-20250205-222450
- 輿情分析試題及答案
- 營(yíng)運(yùn)車輛入股協(xié)議書(shū)
評(píng)論
0/150
提交評(píng)論