實驗二 語法分析(算符優(yōu)先) (2)

實驗二 語法分析(算符優(yōu)先) (2)

ID:18887173

大?。?48.50 KB

頁數(shù):11頁

時間:2018-09-26

實驗二  語法分析(算符優(yōu)先) (2)_第1頁
實驗二  語法分析(算符優(yōu)先) (2)_第2頁
實驗二  語法分析(算符優(yōu)先) (2)_第3頁
實驗二  語法分析(算符優(yōu)先) (2)_第4頁
實驗二  語法分析(算符優(yōu)先) (2)_第5頁
資源描述:

《實驗二 語法分析(算符優(yōu)先) (2)》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫

1、編譯原理實驗報告實驗名稱:語法分析器設計專業(yè):計算機科學與技術姓名:田莉莉?qū)W號:201117906語法分析—算符優(yōu)先分析程序一.實驗要求⑴選擇最有代表性的語法分析方法,如算符優(yōu)先法、遞歸子程序法或LR分析法⑵選擇對各種常見程序語言都用的語法結構,如賦值語句(尤指表達式)作為分析對象,并且與所選語法分析方法要比較貼切。⑶實習時間為6學時。二.實驗內(nèi)容及要求(1)根據(jù)給定文法,先求出FirstVt和LastVt集合,構造算符優(yōu)先關系表(要求算符優(yōu)先關系表輸出到屏幕或者輸出到文件);(2)根據(jù)算法和優(yōu)先

2、關系表分析給定表達式是否是該文法識別的正確的算術表達式(要求輸出歸約過程)(3)給定表達式文法為:G(E’):E’→#E#E→E+T

3、TT→T*F

4、FF→(E)

5、i(4)分析的句子為:(i+i)*i和i+i)*i三.程序設計思想及實現(xiàn)步驟程序的設計思想:按照編譯原理教材提供的算法,本程序的設計主要實現(xiàn)三個主要的過程:(1)求解FristVT集和LastVT集:利用CString數(shù)組存放VT集,利用數(shù)組下標對應非終結符關系;(2)輸出算符優(yōu)先分析表:利用MFC中的ClistCtrl控件輸出顯示算符表

6、,比利用二維數(shù)組對應其在內(nèi)存中的關系。(3)利用算符優(yōu)先分析表進行歸約:根據(jù)教材所給算法,并對其進行實現(xiàn)在屏幕上輸出歸約過程。實現(xiàn)步驟:1、為程序各變量設計存儲形式,具體設計如下所示:CStringm_strTElem[T_LEN];//終結符CStringm_strNTElem[NT_LEN];//非終結符CMapStringToPtrm_mapProdu;//存放產(chǎn)生式CMapStringToPtrm_mapProduEX;//存放擴展產(chǎn)生式CStringm_strFristVT[NT_LEN

7、];//fristVT集CStringm_strLastVT[NT_LEN];//lastVT集intm_nPriSheet[T_LEN+1][T_LEN+1];//優(yōu)先表;無窮大表示空白,-1表示小于,0表示相等,1表示大于Findm_F[STACK_LEN];//bool數(shù)組CStrackm_stack;//堆棧2、為程序設計各個過程,具體設計如下所示:voidCreateFristVT(Find*F);//為每一個非終結符創(chuàng)建FristVT集voidCreateLastVT(Find*F);

8、//為每一個非終結符/創(chuàng)建LastVT集voidSearchPForFirtVT(Find&f);//搜索形如P->a….或P->Qa….的產(chǎn)生式voidSearchQForFristVT(void);//搜索形如P->....Q的產(chǎn)生式voidSearchPForLastVT(Find&f);//搜索形如P->...aQ或P->...a的產(chǎn)生式voidSearchQForLastVT(void);//搜索形如P->....Q的產(chǎn)生式OnBnClickedBtnAnasysic();//點擊按鈕啟

9、動分析3、對各個過程進行實現(xiàn);4、調(diào)試運行并檢驗實驗結果,結果如圖2.1和2.2所示:圖2.1分析成功圖圖2.2分析失敗圖四.程序源碼產(chǎn)生式初始化://產(chǎn)生式CString*str=newCString;*str=_T("

10、E+T

11、T

12、");m_mapProdu.SetAt(_T("E"),(void*)str);CString*str1=newCString;*str1=_T("

13、T*F

14、F

15、");m_mapProdu.SetAt(_T("T"),(void*)str1);CString*str

16、2=newCString;*str2=_T("

17、(E)

18、i

19、");m_mapProdu.SetAt(_T("F"),(void*)str2);CString*str3=newCString;*str3=_T("

20、E+T

21、F+F

22、F*F

23、E+F

24、T

25、F

26、");m_mapProduEX.SetAt(_T("E"),(void*)str3);CString*str4=newCString;*str4=_T("

27、T*F

28、F

29、");m_mapProduEX.SetAt(_T("T"),(void*)str4

30、);CString*str5=newCString;*str5=_T("

31、(E)

32、i

33、(F)

34、");m_mapProduEX.SetAt(_T("F"),(void*)str5);程序主要代碼:voidCGrammarAnalysisDlg::InitFind(void){inti,j;intk=0;while(k

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

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

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