




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
PL/0語言編譯器分析實驗報告一、實驗目的通過閱讀與解析一個實際編譯器(PL/0語言編譯器)的源代碼,加深對編譯階段(包括詞法分析、語法分析、語義分析、中間代碼生成等)和編譯系統(tǒng)軟件結構的理解,并達到提高學生學習興趣的目的。二、實驗要求(1)要求掌握基本的程序設計技巧(C語言)和閱讀較大規(guī)模程序源代碼的能力;(2)理解并掌握編譯過程的邏輯階段及各邏輯階段的功能;(3)要求能把握整個系統(tǒng)(PL/0語言編譯器)的體系結構,各功能模塊的功能,各模塊之間的接口;(4)要求能總結出實現(xiàn)編譯過程各邏輯階段功能采用的具體算法與技術。三、實驗步驟(1)根據(jù)PL/0語言的語法圖,理解PL/0語言各級語法單位的結構,掌握PL/0語言合法程序的結構;(2)從總體上分析整個系統(tǒng)的體系結構、各功能模塊的功能、各模塊之間的調(diào)用關系、各模塊之間的接口;(3)詳細分析各子程序和函數(shù)的代碼結構、程序流程、采用的主要算法及實現(xiàn)的功能;(4)撰寫分析報告,主要內(nèi)容包括系統(tǒng)結構框圖、模塊接口、主要算法、各模塊程序流程圖等。四、報告內(nèi)容pl/0語言是pascal語言的一個子集,我們這里分析的pl/0的編譯程序包括了對pl/0語言源程序進行分析處理、編譯生成類pcode代碼,并在虛擬機上解釋運行生成的類pcode代碼的功能。pl/0語言編譯程序采用以語法分析為核心、一遍掃描的編譯方法。詞法分析和代碼生成作為獨立的子程序供語法分析程序調(diào)用。語法分析的同時,提供了出錯報告和出錯恢復的功能。在源程序沒有錯誤編譯通過的情況下,調(diào)用類pcode解釋程序解釋執(zhí)行生成的類pcode代碼。PL/0語言文法的EBNF表示EBNF表示的符號說明?!础涤米笥壹饫ㄌ柪ㄆ饋淼闹形淖直硎菊Z法構造成分,或稱語法單
位,為非終結符。::二該符號的左部由右部定義,可讀作“定義為”。|表示“或”,為左部可由多個右部定義。{}花括號表示其內(nèi)的語法成分可以重復。在不加上下界時可重復0到任意次數(shù),有上下界時為可重復次數(shù)的限制。PL/0編譯程序過程與函數(shù)定義層次結構圖PL/0的解釋執(zhí)行結構PL/0語言目標程序PL/0語言解釋執(zhí)行程序PL/0編譯程序結構PL/0語言目標程序PL/0語言解釋執(zhí)行程序PL/0編譯程序結構表格管理程出錯處理程編譯程序總體流程圖結束PL/0編譯程序的語法分析PL/0編譯程序語法、語義分析是整個編譯程序設計與實現(xiàn)的核心部分,要求學員努力學習掌握實現(xiàn)技術和方法?,F(xiàn)分別說明語法分析實現(xiàn)的主要思想方法和語義分析的實現(xiàn)。語法分析的任務是識別由詞法分析給出的單詞符號序列在結構上是否符合給定的文法規(guī)則。PL/0語言的文法規(guī)則已在節(jié)中給出。本節(jié)將以語法圖描述的語法形式為依據(jù),給出語法分析過程的直觀思想。PL/0編譯程序的語法分析采用了自頂向下的遞歸子程序法??捎孟旅婧唵蔚腜L/0程序為例構造其語法分析樹語法調(diào)用關系圖PL/0編譯程序語法分析的設計與實現(xiàn)〈表達式〉的遞歸子程序實現(xiàn)procedureexpr;beginifsymin[plus,minus]thenbegingetsym;term;endelseterm;whilesymin[plus,minus]dobegingetsym;term;endend;〈因子〉::=〈標識符〉|〈無符號整數(shù)〉|(‘〈表達式〉‘)’〈因子〉的遞歸子程序實現(xiàn)procedurefactor;beginifsym<>identthenbeginifsym<>numberthenbeginifsym=‘(‘thenbegingetsym;expr;ifsym=‘)’thengetsymelseerrorendelseerrorendelsegetsymendelsegetsymend;說明部分的分析與處理對每個過程(含主程序)說明的對象(變量,常量和過程)造符號表,登錄標識符的屬性。標識符的屬性:種類,所在層次,值和分配的相對位置。登錄信息由ENTER過程完成。常量定義語句的處理語法:<常量說明部分>::=const<常量定義>{,<常量定義>};<常量定義>::=<標識符>=<無符號整數(shù)><無符號整數(shù)>::=<數(shù)字>{<數(shù)字>}ifsym=constsymthenbegingetsym;(*獲取下一個token,正常應為用作常量名的標識符*)repeat(*反復進行常量聲明*)constdeclaration;(*聲明以當前token為標識符的常量*)whilesym=commado(*如果遇到了逗號則反復聲明下一常量*)begingetsym;(*獲取下一個token,這里正好應該是標識符*)constdeclaration(*聲明以當前token為標識符的常量*)end;ifsym=semicolonthen(*如果常量聲明結束,應遇到分號*)getsym(*獲取下一個token,為下一輪循環(huán)做好準備*)elseerror(5)(*提示5號錯誤*)untilsym<>ident(*如果遇到非標識符,則常量聲明結束*)end;常量說明處理procedureconstdeclaration;beginifsym=identthenbegingetsym;ifsymin[eql,becomes]then(*如果是等號或賦值號*)ifsym=becomesthen(*如果是賦值號(常量生明中應該是等號)*)error(1);(*提示1號錯誤*)getsym;(*獲取下一個token,等號或賦值號后應接上數(shù)字*)ifsym=numberthen(*如果的確是數(shù)字*)beginenter(constant);(*把這個常量登陸到符號表*)getsym(*獲取下一個token,為后面作準備*)endelseerror(2)(*如果等號后接的不是數(shù)字,提示2號錯誤*)elseerror(3)(*如常量標識符后不是等號或賦值號,提示3號錯誤*)endelseerror(4)end(*constdeclaration*);變量定義語句的處理語法:<變量說明部分>::=var<標識符>{,<標識符>};ifsym=varsymthenbegingetsym;repeatvardeclaration;(*變量說明處理*)whilesym=commadobegingetsym;vardeclarationend;ifsym=semicolonthengetsymelseerror(5)untilsym<>ident;end;變量說明處理procedureardeclaration;beginifsym=identthenbeginenter(variable);getsymendelseerror(4)end(*vardeclaration*);過程定義語句的處理程序:whilesym=procsymdo(*循環(huán)聲明各子過程*)begingetsym;(*獲取下一個token,此處正常應為作為過程名的標識符*)ifsym=identthen(*如果token確為標識符*)beginenter(procedur);(*把這個過程登錄到名字表
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度船舶建造與設計合同年度更新
- 2025年度跨境電商代理記賬與稅務合規(guī)支持協(xié)議
- 2025年度人工智能技術研發(fā)合作協(xié)議(全新版)
- 2025年度創(chuàng)意產(chǎn)業(yè)園區(qū)租賃合同及創(chuàng)業(yè)支持協(xié)議
- 2025年度租賃合同范本(含違約責任)
- 持續(xù)反饋機制的建立與實施計劃
- 加強數(shù)據(jù)安全管理的實施措施計劃
- 2025年CO2氣體保護藥芯焊絲合作協(xié)議書
- 定期舉辦學術交流活動計劃
- 生產(chǎn)計劃科學制定
- 初中英語1600詞背誦版+檢測默寫版
- 《公共設施設計》課件
- 養(yǎng)老護理員安全培訓
- 現(xiàn)代服務服務費合同范本
- 2024年云南省公務員錄用考試《行測》試題及答案解析
- 2024年度-工程造價培訓課件全新
- 中國急性缺血性卒中診治指南(2023版)
- 高中學校工會工作制度
- 人教版八年級上冊數(shù)學期末考試試卷含答案
- 2024至2030年全球與中國市場頭戴式耳機深度研究報告
- 學前教育普及普惠質(zhì)量評估幼兒園準備工作詳解
評論
0/150
提交評論