




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、算符優(yōu)先分析器設計1實驗目的(1)掌握算符優(yōu)先分析法一一種自底向上的語法分析方法的思想。(2)能識別算符優(yōu)先分析法屮的可規(guī)約串一最左素短語。(3)領會算符優(yōu)先關系表轉換成優(yōu)先函數(shù)的方法。2實驗內容和實驗要求根據(jù)形式化算法,編制程序實現(xiàn)一個算符優(yōu)先分析器,能對常見的算術表達式語句 進行分析。要求實現(xiàn)以下功能:1)組織算枠達式的輸入;2)組織算符優(yōu)先關系表或者優(yōu)先函數(shù)的輸入;3)若輸入的符號串是一個算術表達式語他貝u輸出一個分析樹骨架(既每一步規(guī) 約用到的最左素短語),否則輸出一個錯誤信息。3待分析的語法描述e-e+t|tt->t*f|f f-> (e) | i4算法描述4.1算府分析
2、法基本方法實現(xiàn)算法,轉化成某種高級語言程序,實現(xiàn)一個算符優(yōu)先分析器。其中要用到分析 棧和輸入緩沖器,本實驗采用的方法是一種自底向上的語法分析方法,所以是在詞法分 析的基礎上進行的。對于表達式結果的計算,要在算法中引入內部變量來保存結果,另外在分析過程中, 除了移進、規(guī)約、接受、報錯等動作外,還要引入計算的動作。4.2實現(xiàn)方法(1)首先定義chai' precede (char a, chai' c),在這里規(guī)定算符(終結符之間)的優(yōu)先規(guī)則,在分析文法的時候便于調用。(2)再定義isn(charc),判斷是否為非終結符,返冋值為1和0,用于循環(huán)調用。(3)主函數(shù),總控算法:1.
3、定義棧堆stack «| 的變量,以及控制指針(用于存發(fā)歸約或者待形成最左素 短語的符號串)。2. 用string工作單元存放當前輸入的字符,歸約成功的標志是當讀入的輸入 字符是句子的結束符號#號吋,即棧111只是剩下#t的吋候(棧stack 11只剩下開始標志 #和終結符號t的吋候)使用判斷是否棧頂指針指向的是#,若不是,則繼續(xù)順序掃描子過程。從輸入符號串屮依次讀入字符到string屮,調用char precede (char a, char c)屮進行分析是否要歸約,還是要移進輸入符,再棧s屮形成最左素短語。loop:當stackj與當前輸入符s之間是關系時,重復尋找最左索短語,
4、將 stackj+l.stackkl/d約為某個終結符(etf),這是即可輸出當前的歸約串,將最 左素短語進行歸約。當stackj與當前輸入符s之間是.或者吋=關系吋,再將字符讀入到棧堆 stack'p,即移進字符串。若均不是,則轉入出錯處理,輸出分析失敗。當最后分析到讀入的字符串時#號時,分析成功。4.3子過程分析4.3.1 優(yōu)先函數(shù)的定義 char precede (char a, char c) 根據(jù)給定的文法,分析終結符號之間的優(yōu)先關系,+,*, (,), #,總共32利優(yōu) 先關系。4.3.2出錯管理(兩類錯誤)如果分析棧頂?shù)闹欣^符號與下一個輸入字符之間沒有優(yōu)先關系,即表明下一
5、 個輸入的字符與己分析歸約的文法符號串之間是不匹配的,即一個錯誤的基本語法 成分。發(fā)現(xiàn)此類錯誤之后給出錯誤信息,同時結束輸入符號串的進一步分析。(2)當前句型中找到一個最左素短語,單不存在右部包含最左素短語的任意產生 式。此時輸出出錯的信息,同時出錯管理中確定最左該素斷語于哪個產牛式的右部最相似,給出進一步的錯誤信息。5程序框架6程序清單和程序運行結果程序清單見磁盤程序運行結果如下:1.顯示所要分析的文法,并且輸入所要分析的句型(以#號結束):2.輸入所要分析的句型(1)若所要分析的字符串不為該文法的句型,則有兩種出錯分析:例1:若為i ii#,貝i出錯顯示如下:請輸入所要分析的句型 以井號結
6、東: x分析過程分析失敗failure?例2:若為i + ii + i#,則出錯顯示如2請輸入所要分析的句型以井號結東:分析過程1歩驟.分析棧;1ii;關系標志當前輸入符;剩余輸入串111! 1 . # :11aitt < i移進 i!i*ii*i#ii1! 2 . #i:iii:i > +歸約 i!*ii*i#iii!3. #f!iiiitt < *移逬 +iii! 4 .#f+iii < i移逬 i! ii + i#i_ii! 5 #f+i!;ii1分析失敗<failure>?!(2)若正確輸入該文法的句型如:i + i*i+i則分析結果如下:c'
7、; c:documents and settingsyukunmy documents£譯實墓語法分析計算機0304班 33號余琨請輸入所要分析的句型以#號結東:i+i*i*i#分析過程步驟.分析棧;關系標志a當前輸入符-1!剩余輸入串! 1 tti!# < i移進ia!i*i*i+i#! 2 #iasi > +歸約ii:3 #f!# < *a移進 !*i*i*i#! 4 #f+i!+ < i移進ii! 5 #f*ia!i > *i歸約iia:6 #f+f!* < *a移逬*i! 7 ttf+f*!* < i移進i a! 8 #f+f*ia!
8、i > +i歸約ii!*i#a:9 ttf+f*f!* > +a歸約efi! 10 #f*ti!* > *歸約t+f !*i#! 11 tteii分析成功<succeed>? -i itt-(3)選擇是否要繼續(xù)分析,若需要則選y,若不需要,則選擇n,則退出程序。7實驗感想在完成自頂向下的語法分析之后,接著乂開始接觸到算符優(yōu)先的分析法。 算符優(yōu)先的分析法實際上式仿照了算術表達式的運算過程而提出的一種口底而 上的語法分析,而作為自底向上分析法的關鍵就是,在分析的過程中如何確定號 句柄,從而判斷如何進行移進和歸約。在判斷的過程中同時要處理號如何解決出錯的問題,這樣就可以比較恰當 的去了解相關的信息的內容。在做這個實驗的過程中,為了檢驗的方便,首先規(guī) 定好一個比較熟悉的文法,這樣就可以熟練的進行算符優(yōu)先的定義,同時將他們 存放在一定的緩存單元。在解決好基本思想的問題之后,就是要解決界面的問題。 因為在學習的過程中,做題都是用和應的表格進行分析處理的,所以這個也是需 要進行表格處理的,在分析表格的過程中,棧中空格符的管理也是相當重要的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 理賠業(yè)務風險管理跨部門反饋機制完善風險基礎知識點歸納
- 商法學基礎知識點歸納
- 牦牛養(yǎng)殖與草原生態(tài)保護的關系
- 醫(yī)療人工智能的自主學習與自我優(yōu)化機制
- 民俗音樂與舞蹈的旅游化開發(fā)
- ??漆t(yī)學研究之路
- 房地產風險應對全解析
- 2025版證券交易合同 證券登記與服務協(xié)議
- 工程科學探索之路
- 電化學儲能電站項目建設管理方案
- 紋身學徒合同協(xié)議書范本
- 2025年大數(shù)據(jù)與商業(yè)分析專業(yè)畢業(yè)考試試題及答案
- 2024年江蘇省如皋市事業(yè)單位公開招聘教師崗考試題帶答案分析
- 中班語言學習活動優(yōu)化計劃
- 2025年下半年華電金沙江上游水電開發(fā)限公司校園招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 計算機網(wǎng)絡安全基礎試題及答案
- 動漫產業(yè)協(xié)同創(chuàng)新與產業(yè)鏈協(xié)同效應動態(tài)變化趨勢及對策建議報告
- 2025-2030年中國影視基地行業(yè)深度發(fā)展研究與“十四五”企業(yè)投資戰(zhàn)略規(guī)劃報告
- 2025年教育管理與政策研究考試試題及答案
- 2025年江蘇省南京市玄武區(qū)中考一模歷史試卷
- 2025年新媒體運營專員面試題及答案
評論
0/150
提交評論