![編譯原理實驗報告-詞法分析器和LL文法_第1頁](http://file4.renrendoc.com/view/a4225a729e08c723da9a0849b99ea1cf/a4225a729e08c723da9a0849b99ea1cf1.gif)
![編譯原理實驗報告-詞法分析器和LL文法_第2頁](http://file4.renrendoc.com/view/a4225a729e08c723da9a0849b99ea1cf/a4225a729e08c723da9a0849b99ea1cf2.gif)
![編譯原理實驗報告-詞法分析器和LL文法_第3頁](http://file4.renrendoc.com/view/a4225a729e08c723da9a0849b99ea1cf/a4225a729e08c723da9a0849b99ea1cf3.gif)
![編譯原理實驗報告-詞法分析器和LL文法_第4頁](http://file4.renrendoc.com/view/a4225a729e08c723da9a0849b99ea1cf/a4225a729e08c723da9a0849b99ea1cf4.gif)
![編譯原理實驗報告-詞法分析器和LL文法_第5頁](http://file4.renrendoc.com/view/a4225a729e08c723da9a0849b99ea1cf/a4225a729e08c723da9a0849b99ea1cf5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、編譯原理綜合性實驗報告實驗學(xué)期 2016至 2017學(xué)年 第1學(xué)期專業(yè)計算機科學(xué)與技術(shù)班級 1403學(xué)生姓名黃世增學(xué)號任課教師趙曦實驗成績編譯原理課程綜合性實驗報告開課實驗室:C2102016年12月 6日實驗題目 |詞法分析器的設(shè)計一、實驗?zāi)康耐ㄟ^設(shè)計、編制、調(diào)試一個具體的詞法分析程序,實現(xiàn)對高級程序設(shè)計語言源 程序進行掃描,并將其分解為各種單詞的詞法分析方法;加深對課堂教學(xué)的理解; 提高詞法分析方法的實踐能力。二、實驗要求任選一種高級程序設(shè)計語言編程完成詞法分析器。詞法分析器應(yīng)以教材所述 分詞原理為依據(jù),使用恰當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)和方法,結(jié)構(gòu)清晰、高效。編制一個讀單詞過程,源程序保存在文本文件中(
2、也可鍵盤輸入),讀取該文 件,識別出各個具有獨立意義的單詞,即關(guān)鍵字、標(biāo)識符、常數(shù)、運算符、分界符 五大類。依次輸出各個單詞的內(nèi)部單詞種別及單詞符號自身值,遇到錯誤時可顯示“Eorror”,然后跳過錯誤部分繼續(xù)顯示。二、實驗設(shè)備與環(huán)境硬件:PC機Pentium】。0以上。軟件:WinlO, VS2010。三、實驗內(nèi)容正規(guī)文法- int |for| while | do | return | break | continue- |+ | - | * | /|=| | | = |,| ; | ( | ) | |- letter (letter | digit)*- digit digit*算法思想
3、算法的基本任務(wù)是從字符串表示的源程序中識別出具有獨立意義的單詞符號, 其基本思想是根據(jù)掃描到單詞符號的第一個字符的種類,拼接出相應(yīng)的單詞符號。2.1主程序圖1詞法分析主程序示意圖其中初始包括關(guān)鍵字、運算符、界限符的置初值。2.2掃描子程序的算法思想:在詞法分析中,先以只讀方式讀取一個文件,自文件頭開始掃描文本,濾去 開頭的空格、回車符、換行符等。讀取的字符送入word。掃描第一個字符,看匹 配的類型,并進行相應(yīng)的類型分析,滿足判斷類型時,輸出其種別碼和值。四、實驗步驟編寫程序時,先定義幾個全局變量,key事先存放7個關(guān)鍵字,words用 來存放識別出來的單詞二元組,text用來存放從文件讀取的
4、內(nèi)容,word用于存放 識別出來的單詞,length存放字符個數(shù),k存放識別出來的單詞個數(shù)。首先,將文本內(nèi)容讀取到text中,文本內(nèi)容最后一個字符是空白符,然后調(diào) 用scan方法,逐個掃描每個字符,如果word的第一個字符是字母,則進行拼字 符串,再判斷是關(guān)鍵字還是標(biāo)識符;如果word的第一個字符是數(shù)字,則在word 清空之前判斷是否有識別出非數(shù)字字符,若有,則出錯,若沒有,則識別出來的 字符串是常數(shù);若word第一個字符是運算符或界限符,則各自存到words中。 最后掃描結(jié)束后輸出。五、實驗結(jié)果及分析i| fe液trt -記亭市一 口 X7Aint 1 部 k, a = 10;b a + 2
5、0;I5= M |I 11211640305- X六、實驗小結(jié)和思考通過這次實驗,我對詞法分析器有了進一步的了解,而且對詞法分析和語法 分析在實踐中的應(yīng)用有了深入的掌握,讓我對高級語言的學(xué)習(xí)有了更深的認識, 了解得更透徹。七、源程序清單#include#include#includeusing namespace std;#define MAX 10000struct WordString(string Word;/單詞int category;/類別);char *key7 = (int,for, while, do, return, break, continue);/關(guān)鍵字 WordSt
6、ring wordsMAX;創(chuàng)建一個單詞符號串string text;讀入的文本存入text中string word;分割出的單詞用word表示int length;字符個數(shù)int k;總單詞個數(shù)void scan()(int i,j;k=0;word=;for(i=0;i=A)&(word0=a)&(word0=A)&(texti=a)&(texti=48)&(texti=57)(word+=texti;)else(wordsk.Word二word;for(j=0;j|word0=48&word0=48&texti=A&texti=a&texti=z)(word+=texti;wordsk.
7、category=6;/表示出錯,標(biāo)識符以數(shù)字開頭)else(wordsk.Word二word;if(wordsk.category!=6)wordsk.category=3;/表示常數(shù) k+;word=;i-;)else(if(texti!=10&texti!=32&texti!=9)(word+=texti;) int main()(FILE *fp;文件指針fp=fopen(text.txt,r);打開文件if(fp=NULL)(printf(Cant open this file!n);exit(0);)int i=0;while(!feof(fp)判斷是否到文件結(jié)尾(text+=fg
8、etc(fp);i+;)length=i;/text最后一個字符是空字符fclose(fp);關(guān)閉文件scan();for(i=0;ik;i+)輸出(if(wordsi.category=6)printf(%s Eorrorn,wordsi.Word.c_str();elseprintf(%d, %s)n,wordsi.category,wordsi.Word.c_str();)getchar();return 0;)開課實驗室:C210開課實驗室:C210日實驗題目語法分析LL(1)語法分析方法的實現(xiàn)一、實驗?zāi)康耐ㄟ^設(shè)計、開發(fā)一個高級語言的LL (1)語法分析程序,實現(xiàn)對源程序的語法 檢查和
9、結(jié)構(gòu)分析,加深對相關(guān)課堂教學(xué)內(nèi)容(包括自頂向下語法分析、First集、 Follow集、Select集、判斷LL(1)文法的方法、文法等價變換、LL(1)分析表的 構(gòu)造、對某一輸入串的分析過程的理解,提高語法分析方法的實踐能力。二、實驗要求消除直接左遞歸前的文法消除直接左遞歸后的等價文法G 舊:EE+TGE: ETEEFE+TE|eTF*FTfFTTfFTf*FT| (E)|i (E)|i根據(jù)文法建立LL(1)分析表,并對輸入串i+i*i進行語法分析,判斷其是否是合法的句子,給出句子的分析過程。具體要求如下:1、理解語法分析在編譯程序中的作用;2、理解LL(1)語法分析方法對文法的要求(必須是
10、LL(1)文法);3、理解LL(1)分析器模型;4、熟練掌握文法變換方法(消除直接左遞歸和提取左公共因子)。5、熟練掌握Select集合的求解方法和LL(1)分析表的構(gòu)造方法;二、實驗設(shè)備與環(huán)境硬件:PC 機 Pentium100 以上。軟件:Win10, VS2010O三、實驗內(nèi)容給定一個上下文無關(guān)文法G,在LL(1)語法分析方法中,必須先求出Select 集,通過Select集判斷是否是LL(1)文法,若是,則構(gòu)造預(yù)測分析表。求出預(yù)測 分析表之后,鍵盤輸入一個字符串,依據(jù)LL(1)分析表單步輸出字符串的分析過程。四、實驗步驟專業(yè)資料專業(yè)資料. C:U sershu a ng &hizer
11、gXDeskto pXttWlfll 403 -1411 &4. C:U sershu a ng &hizer gXDeskto pXttWlfll 403 -1411 &4邛引5 國也SILL詣活分析WefbuciUL諾法分析已成u 1 2 3 4 n- 6 l-l.J _J lo -u e i-i.u口wr jtE #ET 抵TF 柜T i WET KE1 見T- #ET 舊TF 祀 Ti KET 即T卻半 #ETF M li #ET 州,以盤結(jié)尾:瑜人豐iM#1-iM# 電# 十講2 +i*i# Fi#Fi# T# x誦;t=f所用產(chǎn)生武T-IFT:i-XE1T-;FIF-)iT坪1I-
12、:-_7?成六、實驗小結(jié)和思考本實驗加深了我對LL(1)分析法的算法和思想的理解。七、源程序清單#include#include#include#include/*1:E-TE 2:E-+TE 3:E-X? 4:T-FT 5:T-*FT 6:T-? 7:F-(E) 8:F-i*/int ll156=1,0,0,1,0,0,020,0,3,3,4,0,040,0,0,6,5,0,6,6,8,0,0,7,0,0;/表示 LL(1)分析表內(nèi)容int main()char ch10=#,E;用于存放符號棧內(nèi)容char str10;/存放輸入串char str110;用于存放最初輸入的字符串char cha;分析字符int
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《數(shù)字邏輯基礎(chǔ)》課件
- 《心肌梗死心電圖》課件
- 《科技創(chuàng)新》課件
- 2025年涼山州貨運從業(yè)資格證模擬考試下載什么軟件
- 紫色插畫風(fēng)小學(xué)科學(xué)教學(xué)公開課互動課件主題
- 銀行戰(zhàn)略月報模板
- 中秋節(jié)歷史文化探析模板
- 小學(xué)語文閱讀教學(xué)中如何提高學(xué)生的閱讀能力
- 對茶葉資源整合與市場營銷的創(chuàng)新策略分析
- 學(xué)校開展交通安全教育主題活動方案
- 2025年幼兒園年度工作總結(jié)及工作計劃
- 殘疾人掛靠合作合同協(xié)議書范本
- 《物料擺放規(guī)范》課件
- 寧夏“8·19”較大爆燃事故調(diào)查報告
- 現(xiàn)代康復(fù)治療腕管綜合癥
- 電池結(jié)構(gòu)及原理
- 2024年員工規(guī)章制度具體內(nèi)容范本(三篇)
- 福建公安基礎(chǔ)知識真題匯編2
- 合格網(wǎng)約車出售協(xié)議書范文范本
- 2024年金融理財-特許金融分析CFA考試近5年真題附答案
- 生物光合作用第1課課件-2024-2025學(xué)年北師大版生物七年級上冊
評論
0/150
提交評論