版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 編譯原理課程實驗指導(dǎo)書目錄TOC o 1-5 h z HYPERLINK l bookmark2 序言2 HYPERLINK l bookmark4 實驗一設(shè)計實現(xiàn)簡單語言的詞法分析器3 HYPERLINK l bookmark60 實驗二設(shè)計實現(xiàn)簡單語言的語法分析器17序言編譯原理實驗環(huán)節(jié),主要通過對編譯器的兩個重要模塊-詞法和語法模塊編程調(diào)試實現(xiàn),使學(xué)生能應(yīng)用編譯原理的基本理論和方法,學(xué)會用高級程序設(shè)計語言設(shè)計詞法分析器和語法分析器,加深對編譯原理理論的分析理解,鞏固所學(xué)知識,培養(yǎng)和提高學(xué)生的動手實踐能力。實驗一設(shè)計實現(xiàn)簡單語言的詞法分析器1、實驗?zāi)康耐ㄟ^該實驗,熟練應(yīng)用編譯原理關(guān)于詞法
2、分析的基本理論和方法;學(xué)會用高級程序設(shè)計語言設(shè)計一個詞法分析器;加深對編譯原理理論的分析理解,提高實際操作和解決具體問題的能力。2、實驗條件計算機(jī)上安裝編譯處理軟件。3、實驗內(nèi)容及要求對下述單詞表定義的語言設(shè)計編制一個詞法分析器。單詞符號及種別表和詞法分析器功能及基本要求如下:(1)單詞符號及種別表單詞符號種別編碼單詞值main1int2float3double4char5if6else7do8while9l(lld)*10內(nèi)部字符串(+l-l)dd*(.dd*1)(e(+l-l)dd*l)20二進(jìn)制數(shù)值表示21+2223*24/25(26)272829,30(2)詞法分析器功能及基本要求處理
3、用戶提交的符合上述詞法的源代碼序列,進(jìn)行詞法分析,并輸出單詞二元組。4、主要參考步驟(1畫)出識別上述語言單詞的狀態(tài)轉(zhuǎn)換圖用語言編寫詞法分析程序(應(yīng)考慮能被語法分析程序調(diào)用)預(yù)處理,去除注釋、多余空格、Tab字符、回車換行符等(4設(shè))計若干用例,上機(jī)測試并通過所設(shè)計實現(xiàn)的詞法分析器+-123.456e-127*+45.99e+200+abc+-cnt+49(+123.456+-456.789e-120)*m2+(a+456)*-c123+4+1.4a+-149+49.7e+127+m123x=a+1.27e+18-20+-124.987e+127+-xyzbeginif(x=-1.27e-18
4、)xyz=(x1+y1)*-124.987e+127-20+-124.e+111-137+569.246e+(123+ivar);x=1;if(x1)y=1234;x=(123+abc);(本例應(yīng)有出錯信息)5、思考數(shù)字的正負(fù)號與運算符加減如何處理,識別數(shù)字的怎樣和運算符加減等融合在一起,進(jìn)而指導(dǎo)詞法分析器的程序編寫。6、實驗報告提交格式(1)總體設(shè)計思想先定義一個結(jié)構(gòu)體用于存放單詞的種別編碼和單詞符號,定義一個輸入緩沖區(qū)字符數(shù)組,一個單詞緩沖區(qū)字符數(shù)組,定義scaner()函數(shù),通過結(jié)構(gòu)體定義一個myword對象,運用m_getch()函數(shù)讀取輸入的一個字符,并判斷是否為數(shù)字,字母,或符號,
5、通過concat()函數(shù)將數(shù)字或字母的整體進(jìn)行連接,每識別一個單詞就返回給WORD結(jié)構(gòu)體,并在主函數(shù)中輸出單詞的種別編碼和符號,直到所有的單詞全部識別完。(2)詳細(xì)算法設(shè)計通過函數(shù)讀入一個字符,然后判斷是否為字母,如果是字母,就繼續(xù)讀入,判斷下一個字符是否為字母或數(shù)字,如果是,就用連接到一起,并返回種別編碼10和連接后的單詞;如果字母單詞與關(guān)鍵字字表中的相同,就返回關(guān)鍵字和對應(yīng)的編碼。判斷讀入的字符是否為數(shù)字,如果是就連接并存入數(shù)組,繼續(xù)判斷讀入的字符是否是或,如果是繼續(xù)連接,并判斷后面是否為數(shù)字,如果是,繼續(xù)連接,并判斷是否讀入了字符,如果是,繼續(xù)連接,并將后面的+,-,和數(shù)字繼續(xù)連接,并存
6、入結(jié)構(gòu)體,返回編碼20和數(shù)字單詞,如果.后面不是數(shù)字則輸出錯誤;如果在讀入一段數(shù)字后字符是,連接后將后面的+,-,和數(shù)字繼續(xù)連接,并存入結(jié)構(gòu)體,返回編碼20和數(shù)字單詞。出錯錯誤3通.過對輸入不同的符號進(jìn)行判斷,并返回對應(yīng)的種別編碼和符號單詞,如果輸入的是“/*”-則判-定*為/注解,如果輸入的是“/*”或“/*-”-則-判*定為輸入錯誤并返回-1;如果輸入的是!而不是“!=”也判定為錯誤。注解輸入錯誤錯誤是若關(guān)鍵字運算轉(zhuǎn).*他哥號界符等符號syn為對應(yīng)關(guān)健字的單詞種別碼syn-10對不同符號給出相應(yīng)的$yn值拼我(4函)數(shù)相關(guān)說明主函數(shù):從緩沖區(qū)讀一個字符函數(shù)去掉空白符號函數(shù):拼接單詞函數(shù):判
7、斷是否為字母函數(shù):判斷是否為數(shù)字函數(shù):檢索是否為關(guān)鍵字:回退一個字符函數(shù):(5輸)入與輸出(包括出錯處理)輸入:所給文法的源程序字符串。輸出:二元組構(gòu)成的序列。(或)其中:為單詞種別碼;為存放的單詞自身字符串;為整型常數(shù)。出錯處理:EnterYourwords(endwith:124.#Yourwords:124.出錯9錯誤)press#toexit:PressanykeytocontinueEnterYourwords(endwith#):/*88888ttYourwords:88888輸入曾誤:(-1,錯誤)press#toexit:PressanykeytocontinuepnterYo
8、urwordstendwith:7*8888/#pfourwords:/+B888*/9,注解)press#toexit:Ptsesanykeytocontinue(6程)序運行結(jié)果(屏幕截圖)1.+-123.456e-127*+45.99e+200+abc+-cnt+49EnterYourwords(endwithfl):+-123.456e-127+45.99e+200+abc+-cnt+49flYourwords:+-123.456e-127+45.99e+200-i-+abc+-cnt+49(22,+)(22,+)(22,+)(20,-123.456e-127)(24,*)(20,+4
9、5.99e+200)(22,+)(22,+)(10,abc)(22,+)(23,-)(10,ent)(22,+)(20,+49)press#toexit:Pressanykeytocontinue2.(+123.456+-456.789e-120)*m2+(a+456)*-c123EnterYourwords(endwithfl):(+123.456+-456.789e-120)*m2+(a+456):+:-cl23fl?urwords:(+123.456+-456.789e-120)*m2+Ca+456)*-c123(26,0(20,+123.456)(22,+)(20,-456.789e-
10、120)(27,)(24產(chǎn))(10,m2)(22,+)(26,0(10,a)(22,+)(20,+456)(27,)(24產(chǎn))(23,-)(10,cl23),ress#toexit:Pressanykeytocontinue3.+4+1.4EnterYourwords(endwith#):+4+L4#Yourwords:+4+1.4(22,+)(20,-+4)(20,+1.4)press#toexit:Pressanykeytocontinue.4.a+-149+49.7e+127+m123EnterYourwords(endwithfl):a-i149+49.7e+127+nil23Your
11、words:a+-149+49.7e+127-Hnl23(10,a)(22,十)(20,-149),(20,+49.7e+127)晨22,十)(10,ml23)pressqtoexit:Pressanykeytocontinue5.x=a+1.27e+18EnterYcurwords(.endwith:x-a+l.27e+lE#Yourwords:z=a+l.27e+18(10,x),二)(103a)(22,+)(20,+1.27e+18:ipress#toexit:Pressanykey二口continue-6.-20+-124.987e+127+-xyzbeginif(x=-1.27e-1
12、8)xyz=(x1+y1)*-124.987e+127EnterYourwords(endwith:-20+-124.987e+127+-xyzbeginif(k=-1.27e-18)意yz=Gl號D*-124.987e+127#fourwords:20+-124.987e+127+-xyzbeginif(k=-1.27e-18)意yz=Gl號D*-124.987e+127(23,-)(20,-20)(22,+)(20,-124.987e+127)(22,+)(23,-)(10,xyz)(10,begin)6if)(26,0(10,x)(弱=)(20,-1.27e-18)(27,1)(10,x
13、yz)(21,=)(26,0(10,xl)(22,+)(10,yl)(27,1)產(chǎn))(20,-124.987e+127)press#toexit:Pressanykeytocontinue7,-20+-124.e+111-137+569.246e+(123+ivar);x=1;if(x1)y=1234;x=(123+abc);()EnterYourwords(endwith:一一20+-124.e+lll-137+569.246e+(123+ivar)x=l;ifxl)y=1234;(123+abc);#Yourwords:20+-L24.e+lll-137+569.246e+(123+iva
14、r);x=l;ifxl)y=1234;x=(123+abc);(23,-)(20,-20)(22,+)出錯錯誤)(10,e)(20,+111)(20,-137)(22,+)(20,+569.246e+)(26,0|(20,123)(22,+)(10,ivar)(27,)(31,1)(10,x)(21,=)(20,1)(31,1)(6,if)(26,0(10,x)(32,(20,1)(27n)(10ny),二)1(20,1234)(10,x)(21,=)(26,()(20n123)(22n+)(10,abc)(27,)press*toexit:Pressanykeytocontinue(7詞)法
15、分析器使用說明運行程序,提示“輸入要分析的語句或詞語,輸入完后再末尾加上“#”,回車,在屏幕上顯示剛輸入的詞語或語句,然后程序?qū)υ~語逐個分析,返回并顯示每個詞語的單詞符號和種別編碼,分析完畢后,輸入“#”結(jié)束程序。心得與體會本次的編譯原理上機(jī)實驗,讓我對語言有了新的認(rèn)識,運用語言來編寫程序,也能運用語言來對每個文法中的單詞進(jìn)行分析,并輸出每個單詞的種別編碼,通過詞法分析器的設(shè)計,對每個單詞的字符讀入,連接和存取有了新的方法來實現(xiàn),通過對全局變量指針的修改來實現(xiàn)對不同位置的字符進(jìn)行操作,也發(fā)現(xiàn)了自己C語言知識掌握的不全,在用多個if和elseif語句進(jìn)行判別時,括號的錯誤編寫導(dǎo)致判斷的錯誤,花了
16、大量的時間來檢查和修改,在多個地方需要進(jìn)行相同判別時,是直接復(fù)制,導(dǎo)致代碼的多和繁瑣,也讓程序運行效率變低。雖然不容易完成,但還是慢慢學(xué)會了解決,通過自己完成問題。源程序清單實驗二設(shè)計實現(xiàn)簡單語言的語法分析器通過該實驗,熟練應(yīng)用編譯原理關(guān)于語法分析的基本理論和方法;學(xué)會用高級程序設(shè)計語言設(shè)計一個語法分析器;加深對編譯原理理論的分析理解,提高實際操作和解決具體問題的能力。2、實驗條件計算機(jī)上安裝編譯處理軟件。3、實驗內(nèi)容及要求對下述單詞表與語法定義的語言設(shè)計編制一個語法分析器。單詞符號及種別表、語法及語法分析器功能、基本要求如下:(1)單詞符號及種別表單詞符號種別編碼單詞值main1int2fl
17、oat3double4char5if6else7do8while9l(lld)*10內(nèi)部字符串(+l-l)dd*(.dd*1)(e(+l-l)dd*l)20二進(jìn)制數(shù)值表示21+2223*24/25(26)272829,30;3132=3334=3536!=37#I0I(2)語法結(jié)構(gòu)定義表達(dá)式:=項+項|-項項:=因子*因子|/因子因子:=IDI1(表達(dá)式)num:=(+l-l)數(shù)字?jǐn)?shù)字*(.數(shù)字?jǐn)?shù)字*I)(e(+l-l)數(shù)字?jǐn)?shù)字*后)ID:=字母(字母I數(shù)字)*字母:=alblcIzIAIBICIZ數(shù)字:=0I1I2I9(3)語法分析器功能及基本要求處理用戶提交的符合上述文法的源代碼序列,進(jìn)行語法分析,并給出語法是否正確的結(jié)論。4、主要參考步驟在實驗一的基礎(chǔ)上,將詞法分析器改造成為可以被語法分析器調(diào)用的形式,相
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國旅游管理咨詢服務(wù)行業(yè)全國市場開拓戰(zhàn)略制定與實施研究報告
- 2025-2030年中國餐飲供應(yīng)鏈行業(yè)營銷創(chuàng)新戰(zhàn)略制定與實施研究報告
- 市政道路工程監(jiān)理評估報告
- 2024年幼兒園大班健康教案
- 2025年冶金機(jī)械配件項目可行性研究報告
- 縫紉初步知識培訓(xùn)課件
- 廣東省深圳市龍崗區(qū)2023-2024學(xué)年五年級上學(xué)期英語期末試卷
- 輪船玻璃鋼接閃桿 CMCE電場補(bǔ)償避雷器 無源驅(qū)雷避雷針
- 輕紡城糧油冷鏈物流中心新建項目可行性研究報告寫作模板-備案審批
- 年產(chǎn)100萬只高適配性大電流管式接頭智能化技改項目可行性研究報告模板-立項備案
- 北京2025年首都醫(yī)科大學(xué)附屬北京友誼醫(yī)院招聘140人歷年參考題庫(頻考版)含答案解析
- 《工商管理專業(yè)畢業(yè)實習(xí)》課程教學(xué)大綱
- 2025年中國社區(qū)團(tuán)購行業(yè)發(fā)展環(huán)境、運行態(tài)勢及投資前景分析報告(智研咨詢發(fā)布)
- 國開電大本科《西方經(jīng)濟(jì)學(xué)(本)》網(wǎng)上形考(作業(yè)一至六)試題及答案
- 提高有風(fēng)險患者預(yù)防跌倒墜床護(hù)理措施落實率品管圈PDCA案例匯報
- 2024年行政執(zhí)法人員執(zhí)法資格知識考試題庫(附含答案)
- 西那卡塞治療甲旁亢
- 無人駕駛 物流行業(yè)市場調(diào)研分析報告
- AI技術(shù)打造智能客服機(jī)器人
- 油氣儲存企業(yè)安全風(fēng)險評估指南(試行)
- 快速了解陌生行業(yè)的方法論及示例PPT課件
評論
0/150
提交評論