編譯原理實驗三源程序

編譯原理實驗三源程序

ID:37785843

大小:37.00 KB

頁數(shù):4頁

時間:2019-05-31

編譯原理實驗三源程序_第1頁
編譯原理實驗三源程序_第2頁
編譯原理實驗三源程序_第3頁
編譯原理實驗三源程序_第4頁
資源描述:

《編譯原理實驗三源程序》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、編譯原理實驗3實驗目的:理解屬性文法,理解語法制導翻譯的基本思想和方法。實驗內(nèi)容:設計并實現(xiàn)實現(xiàn)整數(shù)四則運算的遞歸下降翻譯器。實驗要求:編寫程序,上機調(diào)試和測試,紀錄調(diào)試和測試情況,結(jié)合程序進行分析。實驗環(huán)境:VisualC++6.0或以上版本,Windows2000或以上版本,匯編工具(在Software子目錄下)。實現(xiàn)要點與提示:需要實現(xiàn)的語義分析程序的功能是,接受一個表達式,分析該表達式,并在分析的過程中建立該表達式的抽象語法樹。由于四則運算表達式的抽象語法樹可基本上看作是二叉樹,因此中序遍歷序列應該和輸入的表達式一樣——除了沒有括號之外。可輸出中序遍歷

2、序列檢測程序功能是否正確。如果每個分支節(jié)點用一個臨時變量標記,則對四則運算表達式的抽象語法樹進行后序遍歷,可以得到輸入表達式所對應的四元式序列(實驗4要用到這樣的四元式序列)。例如輸入1+2*(3+4),對應的抽象語法樹的中序遍歷序列、四元式序列分別為#include#include#includetypedefenumSymbol{ERR=-1,END,NUM,PLUS,MINUS,TIMES,SLASH,LPAREN,RPAREN}Symbol;charch;SymbolSYM;intflag=0;i

3、ntLastIsNum=0;intnumber;Symbolgettoken();voiderror();voidexpr();voidexprRest();voidterm();voidtermRest();voidfactor();voidmatch(Symbol);voidmain(){SYM=gettoken();expr();if(flag==0&&SYM==END)printf("語法分析正確");10elseprintf("語法分析錯誤");}intgettoken(){if(LastIsNum==0)ch=getchar();elseL

4、astIsNum=0;while(ch==''){ch=getchar();}if(isdigit(ch)){number=0;while(isdigit(ch)){number=ch-'0'+10*number;ch=getchar();}LastIsNum=1;returnNUM;}if(ch=='+')returnPLUS;if(ch=='-')returnMINUS;if(ch=='*')returnTIMES;if(ch=='/')returnSLASH;if(ch=='(')returnLPAREN;11if(ch==')')returnRPARE

5、N;if(ch=='')returnEND;returnERR;}voiderror(){flag=1;}voidmatch(SymbolexpectedToken){if(SYM==expectedToken)SYM=gettoken();elseerror();}voidexpr(){term();exprRest();}voidexprRest(){if(SYM==PLUS

6、

7、SYM==MINUS){match(SYM);term();exprRest();}}voidterm(){factor();termRest();}voidtermRest(

8、){12if(SYM==TIMES

9、

10、SYM==SLASH){match(SYM);factor();termRest();}}voidfactor(){if(SYM==LPAREN){match(LPAREN);expr();match(RPAREN);}elseif(SYM==NUM){SYM=gettoken();}elseerror();}13

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

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

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