編譯原理遞歸下降分析法實驗_第1頁
編譯原理遞歸下降分析法實驗_第2頁
編譯原理遞歸下降分析法實驗_第3頁
編譯原理遞歸下降分析法實驗_第4頁
編譯原理遞歸下降分析法實驗_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、計算機科學與工程學院編譯原理試驗報告二專業(yè)班級10計算機工程02試驗地點計算機大樓8號機房學生學號1005080214指導教師蔡瓊學生姓名劉子龍試驗時間2012-11-24試驗項目算法與數(shù)據(jù)結(jié)構試驗類別基礎性()設計性()綜合性(v)其它()試(1)掌握自上而下語法分析的要求與特點。驗(2)掌握遞歸下降語法分析的基本原理和方法。目(3)掌握相應數(shù)據(jù)結(jié)構的設計方法。的及要求成績評定表類另ij評分標準分值得分合計上機表現(xiàn)積極出勤、遵守紀律主動完成設計任務30分程序與報告程序代碼規(guī)范、功能正確報告詳實完整、體現(xiàn)收獲70分備注:評閱教師:日期:年月曰試驗內(nèi)容一、實驗目的和要求1、實驗目的:(1) 掌握

2、自上而下語法分析的要求與特點。(2) 掌握遞歸下降語法分析的基本原理和方法。(3) 掌握相應數(shù)據(jù)結(jié)構的設計方法。2、實驗內(nèi)容:編程實現(xiàn)給定算術表達式的遞歸下降分析器。算術表達式文法如下:e+e+t丨t | ef(e) | i二、設計分析根據(jù)實驗要求,采用遞歸下降的方法進行詞法分析。遞歸i降分析法是一種確定的自上而卜分析方法,它的基本方法是給文法 每一個非終結(jié)符號設計一相應的子程序。由于文法的產(chǎn)生式往往是遞歸的,因 而這些子程序也是遞歸的,也就是說,只要調(diào)用第一個產(chǎn)生式,程序就會執(zhí)行 到結(jié)束,其他子程序?qū)谄渲姓{(diào)用。過程體按規(guī)則右部符號串的順序編寫, 構造一個數(shù)組s,用來存放輸入字符申,構造一

3、個函數(shù)reado,將3中將要匹 配的字符讀入ch中,用于字符匹配時做比較,走產(chǎn)生式右部的表法式,遇到終 結(jié)符,就進行匹配,失敗則程序結(jié)束,字符串不滿足要求;遇到非終結(jié)符,則 調(diào)用相應的函數(shù)。當讀到字符串的標識符號時,程序結(jié)朿,字符串滿足要求。三、源程序代碼/氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺l/hl/,/文法 ge:e>e+t | t/t>t*f | f/f> (e) | i/<y、,|、vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx v

4、jx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx vjx#t% #t% #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t #t !#include<stdio. h>#include<string.h>#include<stdlib.h>de

5、fine max 50 void e functiono ; void ee functiono ; void t functiono ; void tt functiono ; void f functiono ; static int i=-l; char ch; char strmax; void theend ()printf ("wrong!rt); exit (0);void read ()i+;if (*(str+i) !=#) ch=*(str+i);elseprintf ("分析結(jié)果如下:n"); printf ("right! rt)

6、; exit ;void e function() _printf("tert);t functiono ;ee functiono ;void ee functiono _eelab:printf ("teert); if(ch=read 0 ;t functiono ; goto eelab; _ else if (ch!= # &&ch!=)theend ();void t functiono _printf("ttn");f functiono ;tt functiono ;void tt functiono _tt_lab:pr

7、intf("tttn"); if(ch=*)read 0 ;f functiono ; goto ttlab; _ else i f (ch! = + &&ch! =) &&ch !=#) theend ();void f functiono _printf("tfn"); if(ch= c)read 0 ;e functiono ;if (ch!=) theend ();elseread 0 ;else if (ch=,1 ) read 0 ;elsetheend ();int main()printf ("遞

8、歸下降分析法:n"); char q2="#" printf (請輸入字符串:n); gets (str);strcat (str, q); if (strlen(str)<max)printf ("調(diào)用非終結(jié)符順序如下:n"); read 0 ;e functiono ; _ else printf ("出入字符串過長!退出!n");return 0;、測試用例(盡量覆蓋所有分支) 1.當輸入字符i時,實驗結(jié)果為圖4-1輸入i2.當輸入字符i+i時,實驗結(jié)果為:圖4-2輸入i+i3.當輸入字符(i)時,實驗結(jié)果為:圖4-3輸入(i)4.當輸入字符i*i+i時,實驗結(jié)果為:圖4-4輸入i*i+i5.當輸入字符時,實驗結(jié)果為:圖 4-5 輸入 i*i+i*i6.當輸入字符(i)+(i)時,實驗結(jié)果為:圖 4-6 輸入(i) + (i)7.當輸入字符iii時,實驗結(jié)果為:圖4-7輸入iii五、實驗總結(jié)通過這次實驗,我乂得到了很多新的體會。由于實驗之前看過課本和相關知識,所以在寫代碼的時候比較快,再加之 遞歸下架分析法比較簡單,其實質(zhì)是控制程序比較簡單,但由于采用遞歸的方 法,所以執(zhí)行效率比較低k,當然說的是比起預測法來說。一切看起來都那么 順利,但是在上傳實驗的吋候,同學讓我給他做演示,沒想到,在輸入(

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論