




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、編譯原理實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一一、實(shí)驗(yàn)名稱:詞法分析器的設(shè)計(jì)二、實(shí)驗(yàn)?zāi)康模?,詞法分析器能夠識別簡單語言的單詞符號 2,識別出并輸出簡單語言的基本字.標(biāo)示符.無符號整數(shù).運(yùn)算符.和界符。三、實(shí)驗(yàn)要求:給出一個(gè)簡單語言單詞符號的種別編碼詞法分析器四、實(shí)驗(yàn)原理:1、詞法分析程序的算法思想算法的基本任務(wù)是從字符串表示的源程序中識別出具有獨(dú)立意義的單詞符號,其基本思想是根據(jù)掃描到單詞符號的第一個(gè)字符的種類,拼出相應(yīng)的單詞符號。2、程序流程圖(1)主程序輸入要分析的語句調(diào)用掃描、分析程序輸出單詞符號二元組結(jié)束判斷讀入字符是否為“#”(2)掃描子程序Token清空當(dāng)前字符=?標(biāo)示符常數(shù)表中查找結(jié)束 Error()
2、輸出二元式基本字用戶標(biāo)示符結(jié)束Get()3、各種單詞符號對應(yīng)的種別碼單詞符號種別碼助記符內(nèi)碼值while1while-if2if-else3else-switch4switch-case5case-標(biāo)識符6idid在符號表中的位置常數(shù)7numnum在常數(shù)表中的位置+8+-9-*10*-<=11relopLE<11relopLT=11relopEQ=12=-;13;-五、實(shí)驗(yàn)內(nèi)容:1、實(shí)驗(yàn)分析編寫程序時(shí),先定義幾個(gè)全局變量a、token(均為字符串?dāng)?shù)組),c,s( char型),i,j,k(int型),a用來存放輸入的字符串,token另一個(gè)則用來幫助識別單詞符號,s用來表示正在分析
3、的字符。字符串輸入之后,逐個(gè)分析輸入字符,判斷其是否#,若是表示字符串輸入分析完畢,結(jié)束分析程序,若否則通過int digit(char c)、int letter(char c)判斷其是數(shù)字,字符還是算術(shù)符,分別為用以判斷數(shù)字或字符的情況,算術(shù)符的判斷可以在switch語句中進(jìn)行,還要通過函數(shù)int lookup(char token)來判斷標(biāo)識符和保留字。2 實(shí)驗(yàn)詞法分析器源程序:#include <stdio.h>#include <math.h>#include <string.h>int i,j,k;char c,s,a20,token20=
4、9;0'int letter(char s)if(s>=97)&&(s<=122) return(1);else return(0);int digit(char s)if(s>=48)&&(s<=57) return(1);else return(0);void get()s=ai;i=i+1;void retract()i=i-1;int lookup(char token20)if(strcmp(token,"while")=0) return(1);else if(strcmp(token,"
5、if")=0) return(2);else if(strcmp(token,"else")=0) return(3);else if(strcmp(token,"switch")=0) return(4);else if(strcmp(token,"case")=0) return(5);else return(0);void main()printf("please input string :n");i=0; doi=i+1;scanf("%c",&ai);while(a
6、i!='#');i=1;j=0;get();while(s!='#') memset(token,0,20);switch(s)case 'a':case 'b': case 'c':case 'd':case 'e':case 'f':case 'g':case 'h':case 'i':case 'j':case 'k':case 'l':case 'm'
7、;:case 'n':case 'o':case 'p':case 'q':case 'r':case 's':case 't':case 'u':case 'v':case 'w':case 'x':case 'y':case 'z':while(letter(s)|digit(s)tokenj=s;j=j+1;get();retract();k=lookup(token);if(k=0
8、)printf("(%d,%s)",6,token);else printf("(%d,-)",k);break; case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':while(digit(s)tokenj=s;j=j+1;get();retract();printf(
9、"%d,%s",7,token);break;case '+':printf("('+',NULL)");break;case '-':printf("('-',null)");break; case '*':printf("('*',null)");break;case '<':get();if(s='=') printf("(relop,LE)");elser
10、etract();printf("(relop,LT)");break; case '=':get();if(s='=')printf("(relop,EQ)");elseretract();printf("('=',null)");break;case '':printf("(;,null)");break;case ' ':break;default:printf("!n");j=0;get(); 六:實(shí)驗(yàn)結(jié)果:
11、 實(shí)驗(yàn)二一、 實(shí)驗(yàn)名稱:語法分析器的設(shè)計(jì)二、 實(shí)驗(yàn)?zāi)康模河肅語言編寫對一個(gè)算術(shù)表達(dá)式實(shí)現(xiàn)語法分析的語法分析程序,并以四元式的形式輸出,以加深對語法語義分析原理的理解,掌握語法分析程序的實(shí)現(xiàn)方法和技術(shù)。三、 實(shí)驗(yàn)原理:1、算術(shù)表達(dá)式語法分析程序的算法思想首先通過關(guān)系圖法構(gòu)造出終結(jié)符間的左右優(yōu)先函數(shù)f(a),g(a)。在分析的過程中,通過左右優(yōu)先函數(shù)比較當(dāng)前讀入終結(jié)符與前一個(gè)讀入終結(jié)符間的優(yōu)先關(guān)系,分析后適時(shí)的以四元式形式輸出相關(guān)的符號。2、通過優(yōu)先函數(shù)關(guān)系圖構(gòu)造優(yōu)先函數(shù)優(yōu)先函數(shù)表+*i()f46626g35772f*fif(f)g+g)g*gig(f+優(yōu)先函數(shù)關(guān)系圖四、實(shí)驗(yàn)內(nèi)容:1、實(shí)驗(yàn)分析本實(shí)
12、驗(yàn)所用文法是: GE:E->E+E|E-E|E*E|E/E|(E)E->0|1|2|3|9根據(jù)此文法編寫程序時(shí),算術(shù)表達(dá)式的求解過程需要用到算術(shù)符號的優(yōu)先判斷,定義兩個(gè)字符串?dāng)?shù)組optr、opnd用來模擬棧,存放算術(shù)符和操作數(shù),用a來存放表達(dá)式字符串,在分析時(shí)還要通過函數(shù)int f(char c)和int g(char c),判斷運(yùn)算符之間的優(yōu)先關(guān)系,根據(jù)不同情況作各種不同操作。流程圖如下:輸入算數(shù)表達(dá)式,以#結(jié)束初始化loptr1=#用get()取一個(gè)待分析字符sOptr1和s是否同時(shí)為#判斷S是否為運(yùn)算量Floptrj<g(s)Fl
13、optrj=g(s)Floptrj>g(s)其他情況error()當(dāng)前字符棧optr棧頂元素出棧結(jié)束存入opndget()2,實(shí)驗(yàn)程序源代碼:#include<stdio.h>char a21,optr10,op,s;int opnd10,i,j,k,x1,x2,x3;int operand(char s)if(s>=48)&&(s<=57) return 1;else return 0;int f(char s)switch(s) case '+':return 4;break; case '*':return 6
14、;break;case 'i':return 6;break;case '(':return 2;break;case ')':return 6;break;default:return 0;int g(char s)switch(s) case '+':return 3;break; case '*':return 5;break; case 'i':return 7;break; case '(':return 7;break; case ')':return 2
15、;break; default:return 0;void get()s=ai;i+;void main()printf("請輸入表達(dá)式(以#結(jié)束):n");i=0;doi+; scanf("%c",&ai);while(ai!='#');i=j=k=1;optrj='#'get();while(!(optrj='#')&&(s='#')if(operand(s) opndk=s-48;k+;get();else if (f(optrj)<g(s) j+;optrj=s;get(); else if (f(optrj)>g(s) op=optrj; j-; x1=opndk-1; x2=opndk-2; k=k-2; switch(op) case '+':x3=x1+x2;break; case '*':x3=x1*x2;break; default:break;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 激光癌癥診斷儀項(xiàng)目投資可行性研究分析報(bào)告(2024-2030版)
- 2023-2029年中國粗糧餅干行業(yè)發(fā)展監(jiān)測及投資前景展望報(bào)告
- 2025年 鍋爐水處理作業(yè)G3證考試練習(xí)題附答案
- 2025年中國無花果行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報(bào)告
- 2025年 扶風(fēng)縣職業(yè)教育中心招聘考試筆試試題附答案
- 2023-2028年中國制造執(zhí)行系統(tǒng)行業(yè)發(fā)展前景預(yù)測及投資戰(zhàn)略咨詢報(bào)告
- 2025年中國導(dǎo)爪行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告
- 紅薯系列產(chǎn)品加工項(xiàng)目可行性研究報(bào)告
- 中國高端禮品酒行業(yè)市場全景分析及發(fā)展趨勢預(yù)測報(bào)告
- 公司輝縣市生活垃圾焚燒發(fā)電項(xiàng)目環(huán)境影響報(bào)告書的批復(fù)
- 橡膠生產(chǎn)企業(yè)設(shè)備設(shè)施及作業(yè)活動(dòng)風(fēng)險(xiǎn)分級管控清單
- 連帶責(zé)任擔(dān)保借條(四篇)
- 2023年計(jì)算機(jī)圖形學(xué)試題級考試A卷
- GB/T 42104-2022游樂園安全安全管理體系
- 八年級下冊人教版英語單項(xiàng)選擇(50題)練習(xí)題含答案含答案
- 河北省大眾滑雪等級標(biāo)準(zhǔn)(試行)
- GB/T 3863-2008工業(yè)氧
- GB/T 31125-2014膠粘帶初粘性試驗(yàn)方法環(huán)形法
- 班主任班級管理(課堂)課件
- 學(xué)院輔導(dǎo)答疑情況記錄表
- 31個(gè)級地區(qū)國家重點(diǎn)監(jiān)控企業(yè)自行監(jiān)測信息公開平臺(tái)及污染源監(jiān)督性監(jiān)測信息公開網(wǎng)址
評論
0/150
提交評論