


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)學(xué)與信息編譯原理實驗報告三實驗名稱:語法分析:5113班級:132 班姓名:學(xué)號:1329210045分?jǐn)?shù)A+96-100A90-95A-85-89B+80-84B75-79B-70-74C+67-69C63-66C-60-62D0-59語法分析一、實驗?zāi)康乃阈g(shù)表的文法是(你可以根據(jù)需要適當(dāng)改變):EE+E|E-E|E*E|E/E|(E)|i根據(jù)算符優(yōu)先分析法,參照書本 107 頁表 6.4 算符優(yōu)先關(guān)系表,將表進(jìn)行語法分析,一個表是否正確。二、實驗環(huán)境操作系統(tǒng):windows 編寫環(huán)境:visual c+ 編寫語言:c 語言三、實驗內(nèi)容程序輸入/輸出示例:如參考 C 語言的運算符。輸入如下
2、表(1)10; 輸出:正確(2)1+2;輸出:正確(3)(1+2)/3+4-(5+6/7);輸出:正確(4)(1-2)/3+4輸出:錯誤(5)1+2-3+(*4/5)輸出:錯誤實驗步驟:1.簡述你的程序?qū)崿F(xiàn)的功能是什么?(以分號為結(jié)束)和輸出結(jié)果:根據(jù)算符優(yōu)先分析法,參照書本 107 頁表 6.4 算符優(yōu)先關(guān)系表,將表斷一個表是否正確進(jìn)行語法分析,判算術(shù)表的文法:EE+E|E-E|E*E|E/E|(E)|i2.程序的模塊描述。優(yōu)先關(guān)系:可以對應(yīng)的左右推導(dǎo)關(guān)系以此歸約和句型是不是可推導(dǎo):是否非終結(jié)符:是否終結(jié)符:完成在文件中輸入輸出:四、實驗結(jié)果文件建立輸入測試數(shù)據(jù)保存在同目錄的文本文件 tes
3、tin.txt 中,保存格式:表表.行;行;預(yù)期的輸出保存在同目錄的文本文件 testout.txt 中,保存格式:表行;正確/錯誤表行;正確/錯誤五、實驗小結(jié)本次實驗中將 C+代碼改成 C 語言代碼,需要用到大一學(xué)到的 C 語言,但是已經(jīng)一年多沒有使用 C 語言了,生疏了很多,而要將代碼轉(zhuǎn)變成 C 語言首先就要先看懂 C+的代碼,修改過也出現(xiàn)了挺多的難點和錯誤,C+可以直接定義類而 C 語言則沒有這個功能,要將 C+定義出的類改成用 C 語言實現(xiàn),這個一開始出現(xiàn)了挺多錯誤之后查了附錄:源代碼#include<string.h> #include<stdio.h>有修改
4、了才正確。char result100;char table88='>','>','<','<','<','>','<','>','>','>','<','<','<','>','<','>','>','>
5、9;,'>','>','<','>','<','>','>','>','>','>','<','>','<','>','<','<','<','<','<','=',
6、'<','-','>','>','>','>','-','>','-','>','>','>','>','>','-','>','-','>','<','<','<',
7、'<','<','-','<','Y'char key64="E+E","E-E","E*E","E/E","(E)","i"char v6='E','E','E','E','E','E'int all;char search(char c,char d)/是否非終結(jié)符int m,n;
8、 if(c='+') m=0;else if(c='-') m=1; else if(c='*') m=2; else if(c='/') m=3; else if(c='(') m=4;else if(c=')') m=5; else if(c='i') m=6; else if(c='#') m=7; else return '-' if(d='+') n=0;else if(d='-') n=1; else if(
9、d='*') n=2; else if(d='/') n=3; else if(d='(') n=4;else if(d=')') n=5; else if(d='i') n=6; else if(d='#') n=7; else return '-' return tablemn;bool svt(char c)/是不是終結(jié)符bool b=true; if(c='+') ;else if(c='-');else if(c='*');e
10、lse if(c='/');else if(c='(');else if(c=')');else if(c='i');else if(c='#');else b=false; return b;void operatorp()char s100; char a,Q; int k,j,i,l;char input100,temp100; int len;strcpy(input,result); len=strlen(input); inputlen='#'inputlen+1='0'
11、printf("步驟t棧t優(yōu)先關(guān)系t當(dāng)前符號t剩余輸入串移進(jìn)或歸約n"); k=1;sk='#'i=1;do/若無#就繼續(xù)a=input0; len=0;for(l=1;inputl;l+)/從剩余字符中取頭上一個templen+=inputl;templen='0' strcpy(input,temp); if(svt(sk)j=k;else /不是終結(jié)符在往下找j=k-1;while (search(sj,a)='>')/while循環(huán)做歸約分析bool flag; printf("(%d)t",
12、i);len=0;for(l=1;l<k+1;l+)templen+=sl; templen='0'/棧printf("%st",temp);/優(yōu)先關(guān)系/當(dāng)前符號/剩余輸入串printf("%>t");printf("%ct",a); printf("%st",input); i+;for(;)Q=sj;if(svt(sj-1) j=j-1; else j=j-2; if(search(sj,Q)='<')printf("歸約tn");/歸約br
13、eak;len=0;for(l=j+1;l<k+1;l+) templen+=sl; templen='0'flag=false; for(l=0;l<6;l+)if(strcmp(temp,keyl)=0)k=j+1; sk=vl; flag=true; break;if (!flag)printf("(%d)t",i);printf("%s不是任何產(chǎn)生式的右部,不能進(jìn)行歸約!n",temp); return ;printf("(%d)t",i);len=0; for(l=1;l<k+1;l+) t
14、emplen+=sl;templen='0'printf("%st",temp); if(search(sj,a)='<')printf("<t");printf("%ct",a); printf("%st",input); puts("移進(jìn)");i+;k=k+1;sk=a;/移進(jìn)else if(search(sj,a)='=')printf("=t");printf("%ct",a); prin
15、tf("%st",input); puts("移進(jìn)");i+;k=k+1;sk=a;/移進(jìn)else if(search(sj,a)='Y')printf("=t");printf("%ct",a); printf("%st",input); puts("接受");i+;elseprintf("-t");printf("%ct",a); printf("%st",input); puts("出
16、錯"); return ;/出錯while(a!='#');/棧/優(yōu)先關(guān)系/當(dāng)前符號/剩余輸入串/優(yōu)先關(guān)系/當(dāng)前符號/剩余輸入串/優(yōu)先關(guān)系/當(dāng)前符號/剩余輸入串/優(yōu)先關(guān)系/當(dāng)前符號/剩余輸入串int main()freopen("d:/testin.in","r",stdin);/ 在D盤新建一個文件testin.infreopen("d:/testout.out","w",stdout);/在D盤新建一個輸出文件testout.out int t=5;while(t-)char inp100;bool sign = false;printf("請輸入字符:");scanf("%s",inp);puts("&
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州師范大學(xué)《漆屏風(fēng)設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西交通職業(yè)技術(shù)學(xué)院《界面交互設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 智慧安防提升城市安全保障居民生活
- DB13T 5651.1-2023 節(jié)水管理規(guī)范 第1部分:食品企業(yè)
- DB13T 5660-2023 水文水井分層抽水技術(shù)規(guī)范
- 仿真船模防傾覆穩(wěn)定性分析創(chuàng)新創(chuàng)業(yè)項目商業(yè)計劃書
- 豪華別墅租賃行業(yè)深度調(diào)研及發(fā)展項目商業(yè)計劃書
- 書房邊桌感應(yīng)式照明創(chuàng)新創(chuàng)業(yè)項目商業(yè)計劃書
- 健身氣功培訓(xùn)中心行業(yè)深度調(diào)研及發(fā)展項目商業(yè)計劃書
- 素食面小店行業(yè)跨境出海項目商業(yè)計劃書
- 福建省福州市2023?2024學(xué)年高一下冊期末考數(shù)學(xué)試卷附解析
- 2025年宜賓市英語七下期末復(fù)習(xí)檢測試題含答案
- 項目管理從立項到結(jié)項全解析
- 全國導(dǎo)游人員資格考試單科綜合測試卷(科目一:政策與法律法規(guī))
- 2024年中國鐵路成都局集團(tuán)有限公司招聘考試《鐵路基本常識》真題庫及答案
- 中醫(yī)診斷學(xué)考點總結(jié)
- 生態(tài)草場使用權(quán)轉(zhuǎn)讓協(xié)議
- 第18課清朝的邊疆治理教學(xué)設(shè)計-統(tǒng)編版七年級歷史下冊
- 物流實操試題及答案詳解
- 播出設(shè)備檢修管理制度
- 國家開放大學(xué)學(xué)習(xí)網(wǎng)電大證券投資分析形考任務(wù)12345答案
評論
0/150
提交評論