編譯原理實驗三.doc

編譯原理實驗三.doc

ID:55413697

大?。?03.00 KB

頁數(shù):9頁

時間:2020-05-12

編譯原理實驗三.doc_第1頁
編譯原理實驗三.doc_第2頁
編譯原理實驗三.doc_第3頁
編譯原理實驗三.doc_第4頁
編譯原理實驗三.doc_第5頁
資源描述:

《編譯原理實驗三.doc》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫

1、編譯原理實驗報告實驗三語義分析班級:學號:姓名:任課教師:計算機科學與工程系2016年6月20日一、實驗目的通過上機實習,加深對語法制導翻譯原理的理解,掌握將語法分析所識別的語法成分變換為中間代碼的語義翻譯方法。二、實驗要求實驗的輸入和輸出:輸入是語法分析后提供的正確的單詞串,輸出為三地址指令形式的四元式序列。例如:對于語句串begina:=2+3*4;x:=(a+b)/cend#輸出的三地址指令如下:(1)t1=3*4(4)t3=a+b(2)t2=2+t1(5)t4=t3/c(3)a=t2(6)x=t4三、實驗內(nèi)容采用遞歸下降語法制導翻譯法,對算術表達式、賦值語句進行語義

2、分析并生成四元式序列。四、算法設計和源程序#include"stdio.h"#include"string.h"#include"stdlib.h"charprog[100],token[8],ch;char*rwtab[6]={"begin","if","then","while","do","end"};intsyn,p,m,n,sum,q;intkk;struct{charresult1[8];charag11[8];charop1[8];charag21[8];}quad[20];char*factor();char*expression();intyucu();c

3、har*term();intstatement();intlrparser();char*newtemp();scaner();emit(char*result,char*ag1,char*op,char*ag2);main(){intj;q=p=kk=0;printf("pleaseinputastring(endwith'#'):");do{scanf("%c",&ch);prog[p++]=ch;}while(ch!='#');p=0;scaner();lrparser();if(q>19)printf("tolongsentense!");elsefor(j

4、=0;j

5、1)printf("shortof'end'!");//輸出‘缺end’錯誤kk=1;//getch();exit(0);}}else{printf("shortof'begin'!");//輸出’begin’錯誤kk=1;//getch();exit(0);}return(schain);}intyucu(){intschain=0;schain=statement();//調(diào)用語句分析函數(shù)進行分析while(syn==26){scaner();//讀下一個單詞符號schain=statement();//調(diào)用語句分析函數(shù)進行分析}return(schain);}

6、intstatement(){chartt[8],eplace[8];intschain=0;if(syn==10){strcpy(tt,token);scaner();if(syn==18){scaner();//讀下一個單詞符號strcpy(eplace,expression());emit(tt,eplace,"","");schain=0;}else{printf("shortofsign':='!");//輸出’缺少賦值號’的錯誤kk=1;//getch();exit(0);}return(schain);}}char*expression(){char*tp

7、,*ep2,*eplace,*tt;tp=(char*)malloc(12);//分配空間ep2=(char*)malloc(12);eplace=(char*)malloc(12);tt=(char*)malloc(12);strcpy(eplace,term());//調(diào)用term分析產(chǎn)生表達式計算的第一項eplacewhile((syn==13)

8、

9、(syn==14)){if(syn==13)strcpy(tt,"+");//操作符tt=‘+’或者‘—’elsestrcpy(tt,"-");scaner();

當前文檔最多預覽五頁,下載文檔查看全文

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

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