編譯原理實(shí)驗(yàn)三實(shí)驗(yàn)報告

編譯原理實(shí)驗(yàn)三實(shí)驗(yàn)報告

ID:8852942

大?。?61.00 KB

頁數(shù):19頁

時間:2018-04-09

編譯原理實(shí)驗(yàn)三實(shí)驗(yàn)報告_第1頁
編譯原理實(shí)驗(yàn)三實(shí)驗(yàn)報告_第2頁
編譯原理實(shí)驗(yàn)三實(shí)驗(yàn)報告_第3頁
編譯原理實(shí)驗(yàn)三實(shí)驗(yàn)報告_第4頁
編譯原理實(shí)驗(yàn)三實(shí)驗(yàn)報告_第5頁
資源描述:

《編譯原理實(shí)驗(yàn)三實(shí)驗(yàn)報告》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、實(shí)驗(yàn)報告第1頁專業(yè)____軟件工程________班級____2_____姓名_71李飛強(qiáng)77歐藝欣81吳文浩89張?zhí)蝊_組別:第四組實(shí)驗(yàn)日期:2014年3月26日報告退發(fā)(訂正、重做)課程編譯原理實(shí)驗(yàn)名稱遞歸下降的預(yù)測分析一、實(shí)驗(yàn)?zāi)康?.學(xué)會用語法圖來形式化地描述一門簡單的語言;2.掌握遞歸下降的預(yù)測分析;3.掌握詞法分析。二、實(shí)驗(yàn)環(huán)境VisualStudio或GCC或Eclipse三、實(shí)驗(yàn)內(nèi)容、步驟和結(jié)果分析實(shí)驗(yàn)內(nèi)容:請基于遞歸下降的分析方法(教材P55頁),編寫一個“語法圖.doc”所對應(yīng)語言的語法分析

2、器。該語法分析器能讀入一個源代碼文件(如“test.c”文件所示),并判斷其中的源代碼是否符合“語法圖.doc”的規(guī)定。如果符合,打印出Yes;如果不符合,打印出No。(所用編程語言不限)C語言版:#include#include#include#defineMaxIdLen20//標(biāo)志符的最大長度#defineKeyWordsCount5//該語言擁有的關(guān)鍵字個數(shù)#defineBoolValueCount2//bool類型可能取值的個數(shù)#defineS

3、ymTypeCount17//symType個數(shù)enumSymType//枚舉{OR,//或AND,//與LP,//左括號RP,//右括號ID,//標(biāo)志符ASSIGN,//賦值LB,//左大括號RB,//右大括號COMMA,//逗號SEMICOLON,//分號UNDEFINED,//未定義BOOLVALUE,//bool類型的值IF,//ifELSE,//elseWHILE,//whilePRINTF,//printfBOOL,//bool};enumboolValue{TRUE,F(xiàn)ALSE,};//關(guān)鍵字st

4、aticchar*keywords[KeyWordsCount]={"if","else","while","printf","bool",};//關(guān)鍵字對應(yīng)類別staticintkeyType[KeyWordsCount]={IF,ELSE,WHILE,PRINTF,BOOL,};//staticchar*boolvalue[BoolValueCount]={"true","false",};staticintboolValueType[BoolValueCount]={TRUE,FALSE,};charch

5、='';//當(dāng)前字符charid[MaxIdLen+1];//當(dāng)前符號串inttoken;//當(dāng)前記號(的類型)intvalue;//當(dāng)前記號的值FILE*fp;//用來打開要識別的源代碼文件intlineNum=1;//要識別的代碼行數(shù)boolisPass=false;//判斷識別的代碼是否全部合法voidgetToken();voidprogram();voidprogram();voidstatement();voiddefinition();voidterm();voidfactor();voidexp

6、ression();voidmatch(intt);voidmain(){fopen_s(&fp,"D:\test.c","r");getToken();program();if(isPass)printf("Y");elseprintf("N");fclose(fp);}/****************************************lexical*****************************************/intgetKeyWord(char*str){fo

7、r(inti=0;i

8、h){return(ch>='A'&&ch<='Z')

9、

10、(ch>='a'&&ch<='z');}boolisDigit(charch){returnch>='0'&&ch<='9';}voidnextChar(){ch=fgetc(fp);}voidgetToken(){while(ch==''

11、

12、ch=='t'

13、

14、ch=='r'

15、

16、ch==''){if(ch=='')l

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。