編譯原理 LR分析法實驗報告.doc

編譯原理 LR分析法實驗報告.doc

ID:57312738

大小:83.50 KB

頁數(shù):6頁

時間:2020-08-11

編譯原理 LR分析法實驗報告.doc_第1頁
編譯原理 LR分析法實驗報告.doc_第2頁
編譯原理 LR分析法實驗報告.doc_第3頁
編譯原理 LR分析法實驗報告.doc_第4頁
編譯原理 LR分析法實驗報告.doc_第5頁
資源描述:

《編譯原理 LR分析法實驗報告.doc》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。

1、實驗五、LR分析法實驗報告計算機與信息技術學院程序功能描述通過設計、編寫和構造LR(0)項目集規(guī)范簇和LR分析表、對給定的符號串進行LR分析的程序,了解構造LR(0)分析表的步驟,對文法的要求,能夠從文法G出發(fā)生成LR(0)分析表,并對給定的符號串進行分析。要求以表格或圖形的方式實現(xiàn)。G[E]:E→aA∣bBA→cA∣dB→cB∣d設計要求:(1)構造LR(0)項目集規(guī)范簇;要求輸入LR(0)文法時,可以直接輸入,也可以讀取文件,并能夠以表格的形式輸出項目集規(guī)范簇集識別活前綴的有窮自動機(2)構造LR(0)分析表。要求要求輸入LR(0)文法時,可以直接輸入,也可以讀取文件;

2、輸出項目集規(guī)范簇,可以調用前一處理部分的結果,輸出為LR(0)分析表(3)LR(0)分析過程【移進、歸約、接受、報錯】的實現(xiàn)。要求調用前一部分處理結果的分析表,輸入一個符號串,依據(jù)LR(0)分析表輸出與句子對應的語法樹,或直接以表格形式輸出分析過程。主要數(shù)據(jù)結構描述數(shù)據(jù)名稱數(shù)據(jù)類型數(shù)據(jù)描述scint終結符個數(shù)ncint非終結符個數(shù)SC字符數(shù)組存放終結符NC字符數(shù)組存放非終結符CAProduction數(shù)組存放產(chǎn)生式excel_actionAction數(shù)組存放Action分析表excel_goto整型數(shù)組存放Goto分析表state整型數(shù)組狀態(tài)棧stack字符數(shù)組分析棧TOKE

3、N字符數(shù)組輸入序列currentint當前輸入指針topint狀態(tài)棧頂指針inint分析棧頂指針numint輸入串長度Pcount整型數(shù)組每個狀態(tài)里項目集數(shù)目Pnumint產(chǎn)生式個數(shù)Pcint狀態(tài)集個數(shù)PParadigm數(shù)組存放狀態(tài)集項目集程序結構描述1.首先要求用戶輸入規(guī)則,并保存,分析出規(guī)則的數(shù)目,規(guī)則里的非終結符號和終結符號等信息,為下一步分析備用。2.根據(jù)產(chǎn)生式構造分析表,首先分析每個狀態(tài)里有哪些產(chǎn)生式,逐步將狀態(tài)構造完整,最后的規(guī)約狀態(tài)數(shù)應該等于產(chǎn)生式的個數(shù)。3.在構造狀態(tài)的時候,首先將所有的內容均填為出錯情況,在每一步狀態(tài)轉換時可以將移進項目填進action表中

4、,對于最后的規(guī)約項目,則再用規(guī)約覆蓋掉之前填的移進。4.要求用戶輸入分析串,并保存在輸入序列數(shù)組中。5.每一步根據(jù)當前的狀態(tài)棧棧頂狀態(tài)和輸入符號查分析表,若是移進,則直接將符號和相應的狀態(tài)添進棧中,否則彈出與產(chǎn)生式右部相同個數(shù)的字符和狀態(tài),并用剩下的狀態(tài)和產(chǎn)生式的左部在goto表中進行查找,將非終結符和得到的狀態(tài)壓入兩個棧內。6.無論是規(guī)約還是移進都要輸出當前三個棧內保存內容的情況。7.如果碰到acc則輸出accept,若碰到error則輸出error,否則則繼續(xù)進行規(guī)約和移進,不進行結果輸出,直至輸出接受或出錯。程序測試:測試1:E→aA∣bBA→cA∣dB→cB∣dE2

5、aAE2bBA2cAB2cBA1dB1dS0輸入:bcd#輸出:輸入二:acccccd#輸出:輸入三:acccccd#輸出:學習總結對各個棧的操作很容易出錯,是直接覆蓋掉棧頂?shù)臓顟B(tài)還是彈出幾個狀態(tài)覆蓋掉一個狀態(tài),對于彈出的狀態(tài),原數(shù)組當中的內容要清空,出棧入棧的字符數(shù)目很容易出錯。構造分析表很難,遇到很多問題,用程序實現(xiàn)比用手工操作要考慮更多的問題,有很多種情況,本實驗給的規(guī)則比較簡單,比如對于E→aA和E→bB,輸入a和輸入b都只有一個對應產(chǎn)生式可以選擇,也沒有太長的字符重復多次的序列,但是也要對LR(0)分析法有很熟練的掌握。實驗實現(xiàn)的相當不完善,對著給定的序列寫,不夠

6、具有通用性,也不夠完備,對于程序,我首先將分析表置入,實現(xiàn)了有了分析表如何判定輸入序列是否合法的部分,然后再實現(xiàn)輸入產(chǎn)生式的功能,分析出終結符和非終結符,實現(xiàn)了分析表橫坐標和縱坐標的排序,再實現(xiàn)項目集規(guī)范族的狀態(tài)分析,邊分析邊構造分析表。

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

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

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