




已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
編譯原理程序設計實驗報告表達式語法分析器的設計實現(xiàn)班級:計算機1306班姓名:王利達學號:20133959實驗目標:使用LL(1)分析法構造表達式語法分析器程序,判別算術表達式,給出判別結果。實驗內(nèi)容:一、概要設計1.算術表達式文法:E T | E0TT F | T1FF i | ( E )其中0:+ -1:* /i:數(shù)字或常數(shù)文法變換:E T MM 0 T M |T F | NN 1 F N |F i | ( E )其中0:+ -1:* /i:數(shù)字或常數(shù)2.LL(1)分析表表1.LL(1)分析表i+-*/()#EMT,pMT,pMMT,nMT,n,p,pTNF,pNF,pNNF,nNF,n,p,pF,n)E,n),n#OK二、數(shù)據(jù)結構1.輸入表達式定義char型數(shù)組expstr為存放輸入表達式的數(shù)組,char expstr100;2.分析棧定義一個棧來進行LL(1)分析。棧中有bottom、top、stacksize等元素,用于程序調(diào)用棧和對棧操作。typedef struct /定義語法的棧 SElemType *bottom;/底 SElemType *top;/頂 int stacksize;SqStack; (包括:概要設計、數(shù)據(jù)結構、流程圖、關鍵函數(shù)等有選擇填寫)源程序代碼:(加入注釋)#include#include#includeusing namespace std;#define STACKSIZE 30 /棧大小#define STACKINCREMENT 10 /棧增量#define OK 1#define Error 0#define OVERFLOW -1typedef char SElemType;typedef int Status;int i=0;int count1=0;int count2=0; /計數(shù)終結符的個數(shù)char expstr100;typedef struct /定義語法的棧 SElemType *bottom;/底 SElemType *top;/頂 int stacksize;SqStack;Status InitStack(SqStack &S) /初始化棧 S.bottom=(SElemType*)malloc(STACKSIZE*sizeof(SElemType); if(!S.bottom) exit(OVERFLOW); S.top=S.bottom; S.stacksize=STACKSIZE; return OK;Status PUSH(SqStack &S,SElemType e) if(S.top-S.bottom=S.stacksize) S.bottom=(SElemType*)realloc(S.bottom,(S.stacksize+STACKINCREMENT)*sizeof(SElemType); if(!S.bottom) exit(OVERFLOW); S.top=S.bottom+S.stacksize; S.stacksize+=STACKINCREMENT; *(S.top)=e; (S.top)+; return OK;Status POP(SqStack &S,SElemType &e) if(S.top=S.bottom) return Error; S.top-; e=*(S.top); return OK;void wrong()/調(diào)用此函數(shù),表示出錯 coutWrong!=0&sn=a&sn=0&c=a&c=0&si=a&si=0&si=a&si=0&si=a&si=0&si=a&si=z)/如果是數(shù)字或字母則依次計數(shù) while(ter_judge(e) if(e=si) i-; POP(S,e); else wrong(); while(count2!=0) i+; count2-; PUSH(S,e); i+; else /如果是+-*/則直接比較 if(e=si) i+; else wrong(); else wrong(); int main() SqStack S; InitStack(S); coutLL(1)nPlease enter the expression and end with the #:expstr; LL1(S,expstr,i); coutRight! endl; getchar(); return 0;程序運行結果:(截屏)圖1.正確的算術表達式(a+b)*(c/B)的判斷圖2.錯誤的算術表達式a/b+的判斷思考問題回答:(如
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年喀什年貨運從業(yè)資格證考試從業(yè)從業(yè)資格資格題庫及答案
- 2025年江蘇貨運從業(yè)資格考試題庫答案
- 真菌性心包炎的臨床護理
- 2025至2031年中國活氣乳行業(yè)投資前景及策略咨詢研究報告
- 骨髓纖維化的臨床護理
- 2025-2030呼吸系統(tǒng)藥物行業(yè)市場深度分析及發(fā)展前景與投資機會研究報告
- 2025至2031年中國波箱油行業(yè)投資前景及策略咨詢研究報告
- 大學生暑期打工社會實踐報告總結工作總結
- 2025年工程造價管理職業(yè)資格考試試卷及答案
- 2025年高等數(shù)學基礎知識考試題及答案
- 院前急救業(yè)務學習介紹課件
- 虎林市四平山金礦有限責任公司黑龍江省虎林市四平山巖金礦礦山地質(zhì)環(huán)境保護與土地復墾方案
- DINEN1706鋁和鋁合金鑄件化學成分和機械性能(中文版)
- 《春江花月夜》說課 統(tǒng)編版高中語文選擇性必修上冊
- 西政安徽校友會通訊錄
- 2017沂源縣新醫(yī)藥產(chǎn)業(yè)園區(qū)控制性詳細規(guī)劃
- 2023年副主任醫(yī)師(副高)-中醫(yī)婦科學(副高)考試高頻試題(歷年真題)帶答案
- 養(yǎng)老護理員第一章職業(yè)道德
- 動詞三單專項練習
- GB/T 27007-2011合格評定合格評定用規(guī)范性文件的編寫指南
- GB/T 25744-2010鋼件滲碳淬火回火金相檢驗
評論
0/150
提交評論