




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 編譯原理課程實驗指導書目錄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),使學生能應用編譯原理的基本理論和方法,學會用高級程序設(shè)計語言設(shè)計詞法分析器和語法分析器,加深對編譯原理理論的分析理解,鞏固所學知識,培養(yǎng)和提高學生的動手實踐能力。實驗一設(shè)計實現(xiàn)簡單語言的詞法分析器1、實驗目的通過該實驗,熟練應用編譯原理關(guān)于詞法
2、分析的基本理論和方法;學會用高級程序設(shè)計語言設(shè)計一個詞法分析器;加深對編譯原理理論的分析理解,提高實際操作和解決具體問題的能力。2、實驗條件計算機上安裝編譯處理軟件。3、實驗內(nèi)容及要求對下述單詞表定義的語言設(shè)計編制一個詞法分析器。單詞符號及種別表和詞法分析器功能及基本要求如下:(1)單詞符號及種別表單詞符號種別編碼單詞值main1int2float3double4char5if6else7do8while9l(lld)*10內(nèi)部字符串(+l-l)dd*(.dd*1)(e(+l-l)dd*l)20二進制數(shù)值表示21+2223*24/25(26)272829,30(2)詞法分析器功能及基本要求處理
3、用戶提交的符合上述詞法的源代碼序列,進行詞法分析,并輸出單詞二元組。4、主要參考步驟(1畫)出識別上述語言單詞的狀態(tài)轉(zhuǎn)換圖用語言編寫詞法分析程序(應考慮能被語法分析程序調(diào)用)預處理,去除注釋、多余空格、Tab字符、回車換行符等(4設(shè))計若干用例,上機測試并通過所設(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);(本例應有出錯信息)5、思考數(shù)字的正負號與運算符加減如何處理,識別數(shù)字的怎樣和運算符加減等融合在一起,進而指導詞法分析器的程序編寫。6、實驗報告提交格式(1)總體設(shè)計思想先定義一個結(jié)構(gòu)體用于存放單詞的種別編碼和單詞符號,定義一個輸入緩沖區(qū)字符數(shù)組,一個單詞緩沖區(qū)字符數(shù)組,定義scaner()函數(shù),通過結(jié)構(gòu)體定義一個myword對象,運用m_getch()函數(shù)讀取輸入的一個字符,并判斷是否為數(shù)字,字母,或符號,
5、通過concat()函數(shù)將數(shù)字或字母的整體進行連接,每識別一個單詞就返回給WORD結(jié)構(gòu)體,并在主函數(shù)中輸出單詞的種別編碼和符號,直到所有的單詞全部識別完。(2)詳細算法設(shè)計通過函數(shù)讀入一個字符,然后判斷是否為字母,如果是字母,就繼續(xù)讀入,判斷下一個字符是否為字母或數(shù)字,如果是,就用連接到一起,并返回種別編碼10和連接后的單詞;如果字母單詞與關(guān)鍵字字表中的相同,就返回關(guān)鍵字和對應的編碼。判斷讀入的字符是否為數(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通.過對輸入不同的符號進行判斷,并返回對應的種別編碼和符號單詞,如果輸入的是“/*”-則判-定*為/注解,如果輸入的是“/*”或“/*-”-則-判*定為輸入錯誤并返回-1;如果輸入的是!而不是“!=”也判定為錯誤。注解輸入錯誤錯誤是若關(guān)鍵字運算轉(zhuǎn).*他哥號界符等符號syn為對應關(guān)健字的單詞種別碼syn-10對不同符號給出相應的$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é)束程序。心得與體會本次的編譯原理上機實驗,讓我對語言有了新的認識,運用語言來編寫程序,也能運用語言來對每個文法中的單詞進行分析,并輸出每個單詞的種別編碼,通過詞法分析器的設(shè)計,對每個單詞的字符讀入,連接和存取有了新的方法來實現(xiàn),通過對全局變量指針的修改來實現(xiàn)對不同位置的字符進行操作,也發(fā)現(xiàn)了自己C語言知識掌握的不全,在用多個if和elseif語句進行判別時,括號的錯誤編寫導致判斷的錯誤,花了
16、大量的時間來檢查和修改,在多個地方需要進行相同判別時,是直接復制,導致代碼的多和繁瑣,也讓程序運行效率變低。雖然不容易完成,但還是慢慢學會了解決,通過自己完成問題。源程序清單實驗二設(shè)計實現(xiàn)簡單語言的語法分析器通過該實驗,熟練應用編譯原理關(guān)于語法分析的基本理論和方法;學會用高級程序設(shè)計語言設(shè)計一個語法分析器;加深對編譯原理理論的分析理解,提高實際操作和解決具體問題的能力。2、實驗條件計算機上安裝編譯處理軟件。3、實驗內(nèi)容及要求對下述單詞表與語法定義的語言設(shè)計編制一個語法分析器。單詞符號及種別表、語法及語法分析器功能、基本要求如下:(1)單詞符號及種別表單詞符號種別編碼單詞值main1int2fl
17、oat3double4char5if6else7do8while9l(lld)*10內(nèi)部字符串(+l-l)dd*(.dd*1)(e(+l-l)dd*l)20二進制數(shù)值表示21+2223*24/25(26)272829,30;3132=3334=3536!=37#I0I(2)語法結(jié)構(gòu)定義表達式:=項+項|-項項:=因子*因子|/因子因子:=IDI1(表達式)num:=(+l-l)數(shù)字數(shù)字*(.數(shù)字數(shù)字*I)(e(+l-l)數(shù)字數(shù)字*后)ID:=字母(字母I數(shù)字)*字母:=alblcIzIAIBICIZ數(shù)字:=0I1I2I9(3)語法分析器功能及基本要求處理用戶提交的符合上述文法的源代碼序列,進行語法分析,并給出語法是否正確的結(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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藝術(shù)館項目建設(shè)合同協(xié)議
- 裝箱出售租賃合同協(xié)議
- 船舶公司勞動合同協(xié)議
- 茶樓出租轉(zhuǎn)讓合同協(xié)議
- 蔬菜地租憑合同協(xié)議
- 解約商鋪租賃合同協(xié)議
- 裝修區(qū)域代理合同協(xié)議
- 解除分公司經(jīng)營合同協(xié)議
- 衣服廠商供貨合同協(xié)議
- 營養(yǎng)餐戰(zhàn)略合同協(xié)議
- 2025年下半年度中鐵特貨物流股份限公司招聘畢業(yè)生三易考易錯模擬試題(共500題)試卷后附參考答案
- 嘉峪關(guān)2025年嘉峪關(guān)市事業(yè)單位引進50名高層次和急需緊缺人才(含教育系統(tǒng))筆試歷年參考題庫附帶答案詳解
- 2025-2030海上風電產(chǎn)業(yè)行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 玉器代銷合同協(xié)議書范本
- 正比例函數(shù)性質(zhì)課件
- 鐵路退休人員乘車優(yōu)惠政策
- 礦山尾礦購銷合同
- T-CACM 1212-2019 中醫(yī)婦科臨床診療指南 產(chǎn)后小便不通
- 2022年全國森林、草原、濕地調(diào)查監(jiān)測技術(shù)規(guī)程-附錄
- 2024年湖南省中考道德與法治試題卷(含答案解析)
- 干部履歷表(中共中央組織部2015年制)
評論
0/150
提交評論