版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、編譯原理綜合性實驗報告實驗學期 2016至 2017學年 第1學期專業(yè)計算機科學與技術班級 1403學生姓名黃世增學號任課教師趙曦實驗成績編譯原理課程綜合性實驗報告開課實驗室:C2102016年12月 6日實驗題目 |詞法分析器的設計一、實驗目的通過設計、編制、調(diào)試一個具體的詞法分析程序,實現(xiàn)對高級程序設計語言源 程序進行掃描,并將其分解為各種單詞的詞法分析方法;加深對課堂教學的理解; 提高詞法分析方法的實踐能力。二、實驗要求任選一種高級程序設計語言編程完成詞法分析器。詞法分析器應以教材所述 分詞原理為依據(jù),使用恰當?shù)臄?shù)據(jù)結(jié)構(gòu)和方法,結(jié)構(gòu)清晰、高效。編制一個讀單詞過程,源程序保存在文本文件中(
2、也可鍵盤輸入),讀取該文 件,識別出各個具有獨立意義的單詞,即關鍵字、標識符、常數(shù)、運算符、分界符 五大類。依次輸出各個單詞的內(nèi)部單詞種別及單詞符號自身值,遇到錯誤時可顯示“Eorror”,然后跳過錯誤部分繼續(xù)顯示。二、實驗設備與環(huán)境硬件:PC機Pentium】。0以上。軟件:WinlO, VS2010。三、實驗內(nèi)容正規(guī)文法- int |for| while | do | return | break | continue- |+ | - | * | /|=| | | = |,| ; | ( | ) | |- letter (letter | digit)*- digit digit*算法思想
3、算法的基本任務是從字符串表示的源程序中識別出具有獨立意義的單詞符號, 其基本思想是根據(jù)掃描到單詞符號的第一個字符的種類,拼接出相應的單詞符號。2.1主程序圖1詞法分析主程序示意圖其中初始包括關鍵字、運算符、界限符的置初值。2.2掃描子程序的算法思想:在詞法分析中,先以只讀方式讀取一個文件,自文件頭開始掃描文本,濾去 開頭的空格、回車符、換行符等。讀取的字符送入word。掃描第一個字符,看匹 配的類型,并進行相應的類型分析,滿足判斷類型時,輸出其種別碼和值。四、實驗步驟編寫程序時,先定義幾個全局變量,key事先存放7個關鍵字,words用 來存放識別出來的單詞二元組,text用來存放從文件讀取的
4、內(nèi)容,word用于存放 識別出來的單詞,length存放字符個數(shù),k存放識別出來的單詞個數(shù)。首先,將文本內(nèi)容讀取到text中,文本內(nèi)容最后一個字符是空白符,然后調(diào) 用scan方法,逐個掃描每個字符,如果word的第一個字符是字母,則進行拼字 符串,再判斷是關鍵字還是標識符;如果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é)和思考通過這次實驗,我對詞法分析器有了進一步的了解,而且對詞法分析和語法 分析在實踐中的應用有了深入的掌握,讓我對高級語言的學習有了更深的認識, 了解得更透徹。七、源程序清單#include#include#includeusing namespace std;#define MAX 10000struct WordString(string Word;/單詞int category;/類別);char *key7 = (int,for, while, do, return, break, continue);/關鍵字 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;/表示出錯,標識符以數(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);關閉文件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)一、實驗目的通過設計、開發(fā)一個高級語言的LL (1)語法分析程序,實現(xiàn)對源程序的語法 檢查和
9、結(jié)構(gòu)分析,加深對相關課堂教學內(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)造方法;二、實驗設備與環(huán)境硬件:PC 機 Pentium100 以上。軟件:Win10, VS2010O三、實驗內(nèi)容給定一個上下文無關文法G,在LL(1)語法分析方法中,必須先求出Select 集,通過Select集判斷是否是LL(1)文法,若是,則構(gòu)造預測分析表。求出預測 分析表之后,鍵盤輸入一個字符串,依據(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家訪活動總結(jié)(15篇)
- 愚人節(jié)活動策劃集錦15篇
- 感恩父母勵志演講稿(合集15篇)
- 意識形態(tài)安全研究
- 工廠新員工培訓心得體會
- 慶祝元旦致辭范文(14篇)
- 2200 MPa低渦軸用鋼析出相及低周疲勞性能研究
- 二零二五年度建筑工程安全生產(chǎn)文明施工責任協(xié)議3篇
- 2025版退學協(xié)議示范文本下載模板3篇
- 動態(tài)多目標云服務組合優(yōu)化方法研究
- 浙江省臺州市2021-2022學年高一上學期期末質(zhì)量評估政治試題 含解析
- 中國高血壓防治指南(2024年修訂版)解讀課件
- 2024年浙江省中考科學試卷
- 初三科目綜合模擬卷
- 高考志愿咨詢培訓課件
- 《海峽兩岸經(jīng)濟合作框架協(xié)議》全文
- ArcGIS軟件入門培訓教程演示文稿
- 運動技能學習與控制課件第十章動作技能的指導與示范
- 偶函數(shù)講課課件
- 中醫(yī)治療“濕疹”醫(yī)案72例
- 交通工程公司乳化瀝青儲油罐拆除工程安全協(xié)議書
評論
0/150
提交評論