




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、編譯原理實驗報告 實驗二 語法分析 班 級: 13級軟件5班 學(xué) 號: 姓 名: 任課教師: 邢 計算機科學(xué)與工程系2016年 6 月 14 日 實驗?zāi)康木幹埔粋€遞歸下降分析程序,實現(xiàn)對詞法分析程序所提供的單詞序列的語法檢查和結(jié)構(gòu)分析。實驗要求1待分析的簡單語言的語法用擴充的BNF表示如下: (1):beginend (2):;(3)(語句):賦值語句)(4)賦值語句):ID:(5):+|-(6)(項):因子)*|/(7)因子):ID|NUM|()2實驗要求說明 輸入單詞串,以“#”結(jié)束,如果是文法正確的句子,則輸出成功信息,打印“success”,否則輸出“error”。例如: 輸入 beg
2、in a:9;x:2*3;b:a+x end# 輸出 success 輸入 x:a+b*c end# 輸出 error實驗內(nèi)容利用C語言編制遞歸下降分析程序,并對簡單語言進行語法分析。算法設(shè)計和源程序 圖1 遞歸下降分析程序示意圖 圖1 遞歸下降分析程序示意圖 圖2 語句串分析示意圖 圖3 statement語句分析函數(shù)示意圖 圖4 expression表達式分析函數(shù)示意圖圖4 expression表達式分析函數(shù)示意圖 圖5 term分析函數(shù)示意圖 圖6 factor分析過程示意圖#include #include #include char prog100, ch, token8;int p
3、 = 0, syn, n, i;char* keyword6 = begin, then, if, while, do, end ;void scaner();void Irparse();void statement();void expression_r();void term();void factor();void main() int select = -1; p = 0; printf(please input sentence, end of # !n); do ch = getchar(); progp+ = ch; while (ch != #); p = 0; printf
4、(請輸入1 或 2 n 1.詞法分析n 2.語法分析n); scanf(%d, &select); if (select = 1) do scaner(); switch (syn) case -1: printf(詞法分析 出錯n); break; default: printf(n, syn, token); break; while (syn != 0); printf(詞法分析 成功n); else if (select = 2) scaner(); if (syn = 1) Irparse(); /begin else printf(語法分析出錯! 請檢查begin關(guān)鍵字n); re
5、turn; if (syn = 6)/end scaner(); if (syn = 0) printf(恭喜 語法分析 成功n); else printf(語法分析出錯! 請檢查是否缺少#n); else printf(語法分析出錯! 請檢查是否缺少endn); getchar();void scaner() for (n = 0; n = a & ch = A & ch = a & ch = a & ch = 0 & ch = 9); syn = 10; for (n = 0; n = 0 & ch = 0 & ch = 9); syn = 11; return; else /ch=pro
6、gp+; switch (ch) case +: syn = 13; token0 = ch; break; case -: syn = 14; token0 = ch; break; case *: syn = 15; token0 = ch; break; case /: syn = 16; token0 = ch; break; case : syn = 17; token0 = ch; ch = progp+; if (ch = =) token1 = ch; syn+; else p-; break; case ) token1 = ch; syn+; else if (ch = =
7、) token1 = ch; syn = syn + 2; else p-; break; case : syn = 23; token0 = ch; ch = progp+; if (ch = =) token1 = ch; syn+; else p-; break; case =: syn = 25; token0 = ch; break; case ;: syn = 26; token0 = ch; break; case (: syn = 27; token0 = ch; break; case ): syn = 28; token0 = ch; break; case #: syn
8、= 0; token0 = ch; break; default: printf(詞法分析出錯! 請檢查是否輸入非法字符n); syn = -1; break; /return; void Irparse() scaner(); statement(); while (syn = 26)/; scaner(); statement(); void statement() if (syn = 10) scaner(); if (syn = 18) scaner(); expression_r(); else printf(語法分析出錯! 請檢查表達式是否正確n); return; else pr
9、intf(語法分析出錯! 請檢查語句是否正確n); return; void expression_r() term(); while (syn = 13 | syn = 14)/+ - scaner(); term(); void term() factor(); while (syn = 15 | syn = 16)/* / scaner(); factor(); void factor() if (syn = 10 | syn = 11) scaner(); else if (syn = 27) scaner(); expression_r(); if (syn = 28) scaner(); else printf(語法分析出錯! 請檢查是否缺少)n); return; else printf(語法分析出錯! 請檢查是否輸入非法字符n); return; 實驗結(jié)果分析正確實驗結(jié)果1:Begin a:=9 ; x
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 漁船租賃業(yè)務(wù)合同協(xié)議
- 銀行信托計劃保管合同模板
- 供港農(nóng)產(chǎn)品購銷合同代理協(xié)議(樣本)
- 國有林權(quán)出讓合同
- 畢業(yè)生實習(xí)與勞動合同解析
- 渠道合作銷售合同范本
- 合同法視角:股東不履行義務(wù)糾紛案例分析
- 新車銷售團隊心理素質(zhì)訓(xùn)練考核試卷
- 木制拼圖游戲考核試卷
- 世界音樂教育項目的策劃與實施考核試卷
- 部編版小學(xué)(2024版)小學(xué)道德與法治一年級下冊《有個新目標(biāo)》-第一課時教學(xué)課件
- 稅法(第5版) 課件 第13章 印花稅
- 建加油站申請書
- 2024-2025學(xué)年廣州市高二語文上學(xué)期期末考試卷附答案解析
- 2025年山東鋁業(yè)職業(yè)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2024年教育公共基礎(chǔ)知識筆記
- 《銷售合同執(zhí)行》課件
- 深夜地鐵7號線施工方案
- 山東2024年山東經(jīng)貿(mào)職業(yè)學(xué)院第二批招聘102人歷年參考題庫(頻考版)含答案解析
- 宮腔球囊止血護理常規(guī)
- 2024年湖南汽車工程職業(yè)學(xué)院單招職業(yè)技能測試題庫標(biāo)準(zhǔn)卷
評論
0/150
提交評論