版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)驗(yàn)一按拼寫單詞,并用(內(nèi)碼,屬性)二元式表示。(屬性值——token的機(jī)內(nèi)(源代碼見附錄利用數(shù)組keywords關(guān)鍵字利用數(shù)組optr算數(shù)運(yùn)算符利用數(shù)組separator分界IsKeytruefalse函數(shù)IsLettertruefalseIsDigit判斷是否是數(shù)字,返回truefalse函數(shù)IsFloat判斷是否是小數(shù),返回truefalseIsOptrtrueIsSeparatortrueLL(1)1、寫出LL(1)分析法的思想:當(dāng)一個(gè)文法滿足LL(1)條件時(shí),就可LL(1)是使用一張分析表和一個(gè)站進(jìn)行聯(lián)合控制。分析表是一個(gè)M[A,a]形式的矩陣分析規(guī)則棧SACK用于存放文法符號(hào)棧頂取符號(hào)按照分表給出的規(guī)則進(jìn)行有步驟的分析。2.(1)E-(2)G->+TG|—(3)G-(4)T-(5)S-(6)S-(7)F-(8)F-LL(1)分析表、初始化變量空間(包括堆棧、結(jié)構(gòu)體、數(shù)組、臨時(shí)變量;(1)Vn[]非終結(jié)符數(shù)組Vt[]終結(jié)符數(shù)組structLL//ll(1){char*c}ClassstackRun()函數(shù)實(shí)現(xiàn)LL(1)文法分析的函數(shù):先將表達(dá)式字符入棧,#最先入棧底,依次取棧通過(guò)完成LL(1)分析法的語(yǔ)法分析程序,自己對(duì)于分析過(guò)程和遞歸子程序法的區(qū)別LR(1)一實(shí)驗(yàn)LR(1)分析法實(shí)驗(yàn)設(shè)計(jì)思想及算(1)總控程序,也可以稱為驅(qū)動(dòng)程序。對(duì)所有的LR分析器總控程序都是相同的。(2)分析表或分析函數(shù),不同的文法分析表將不同,同一個(gè)文法采用的LR分析器(ACTIONLR其中:SP為棧指針,S[i]為狀態(tài)棧,X[i]為文法符號(hào)棧。狀態(tài)轉(zhuǎn)換表用GOTO[i,X]=jiX時(shí)應(yīng)j,X為終結(jié)符或非終結(jié)符。移進(jìn)action[i,a]=Sjjai,j表歸約action[i,a]=rkA,即文AB的產(chǎn)生式,若B的長(zhǎng)度為R(即|B|=R),則從狀態(tài)棧和文法符號(hào)棧中自頂向下去掉R個(gè)符號(hào),即棧指針SPRA移入文法符號(hào)棧內(nèi),j=GOTO[i,A]i為修改指針后的棧頂狀態(tài)。接受S報(bào)錯(cuò)LRLRLR分析法正是給出一種能根據(jù)當(dāng)前分析棧中的符號(hào)串(通常以狀態(tài)表示)和向右順序查看輸入串K個(gè)(≥0符號(hào)就可唯一地確定分析器的動(dòng)作是移進(jìn)還是歸約和用哪個(gè)產(chǎn)生式歸約,因LR0)LRLR(0)K=1時(shí),已能滿足當(dāng)前絕大多數(shù)高級(jí)語(yǔ)言編譯程序?qū)崿F(xiàn)的需要。SLR(1LR(1LR(1LALR(1)分析器的構(gòu)造原理和基礎(chǔ)。LALR(1)分析器是當(dāng)前大多數(shù)高級(jí)程序設(shè)計(jì)語(yǔ)言編譯程序所采ACCLR(0、SLR(1)、LALR(1)、LR(1)四種分析器的構(gòu)造方法都必須深入理解和掌握實(shí)驗(yàn)一源代碼#include<iostream>#include<string>usingnamespacestd;intk;stringkeywords[8]={"do","end","for","if","printf","scanf","then","while"};stringoptr[4]={"+","-","*","/"};stringseparator[6]={",",";","{","}","(",")"};boolIsKey(stringss){inti;returntrue;returnboolIsLetter(charc)returntrue;return boolIsDigit(charc)returntrue;returnboolIsFloat(stringss){intk=for(intm=0;m<ss.length();{if(ss[m]=='.')k++;elsecontinue;}if(k>1)returntrue;elsereturnfalse;}boolIsOptr(stringss){inti;returntrue;returnfalse;boolIsSeparator(stringss)inti;returntrue;returnintstringcc="123";intnum=0;for(intnum+=(cc[y]-'0')*pow(10.0,2-}cout<<"pleaseinputstringendwith#"<<endl;chara;intcharinstring[100];inti=0;intline=1,row=0;stringst="";{==')){}//elseif(instring[j]=='\n else //{{} // }else //無(wú)符號(hào)整數(shù)處{
while(IsDigit(instring[j])||instring[j]==}{////////////////////////////////////////////////ceshixiaoshuintnum=0;for(intnum+=(st[y]-'0')*pow(10.0,2-}{cout<<st<<'\t'<<"error"<<'\t'<<"error"<<'\t'<<"("<<line<<","<<row<<")"<<endl;j--} "<<'\t'<<"("<<line<<","<<row<<")"<<endl;j=j-}elseif(IsLetter(instring[j])||instring[j]=='_'){{}cout<<st<<"\t"<<"error"<<","<<'\t'<<"error"<<'\t'<<"("<<line<<","<<row<<")"<<endl;j--}}if(IsOptr(st))//{cout<<st<<"\t("<<st<<","<<3<<")"<<'\t'<<'\t'<<"elseif((instring[j]=='+')&&(instring[j+1]=={}elseif((instring[j]=='-')&&(instring[j+1]=='-{}{{}}}elseif(IsSeparator(st))//分隔符處 }case{row++;cout<<"="<<"\t("<<"="<<","<<4<<")"<<'\t'<<"\tcase'>' else{cout<<">"<<"\t("<<">"<<","<<4<<")"<<'\t'<<"\t符"<<'\t'<<"("<<line<<","<<row<<")"<<endl;jcase'<' else{cout<<"<"<<"\t("<<"<"<<","<<4<<")"<<"\t"<<"\t關(guān)系運(yùn)算符"<<'\t'<<"("<<line<<","<<row<<")"<<endl;jcase'#':break;case'\0':break; }}}}}}return}實(shí)驗(yàn)二源代碼usingnamespacestd;stringss;//記錄動(dòng)作charcharv1[20]={'i','+','-','*','/','(',')','#'};charv2[20]={'E','G','T','S','F'};intj=0,b=0,top=0,l;/*L*/typedefstructtype/*產(chǎn)生式類型定義*/{charorigin;/*大寫字 chararray[7];/*產(chǎn)生式右邊字符*/intlength;/*字符個(gè)數(shù) typee,t,g,g0,g1,s,s0,s1,f,f1;/*結(jié)構(gòu)體變量*/typeC[10][10];/*分析表 voidprint()/*輸出分析 {inta;/*指針*/}voidprint1()/*輸出剩余串{intprintf("");}int{intm,n,k=0,flag=0,finish=0;charch,x;typecha;/*C[m][n].origin='N';/*全部賦為空cout<<"pleaseinputstringendwith#"<<endl;{A[top]='#';A[++top]='E';/*'#','E'進(jìn)棧printf("步驟\t\t分析棧\t\t剩余\t所用產(chǎn)生式\t動(dòng)作\n");{x=A[top--];/*x為當(dāng)前棧頂字符*/{}if(flag==1)/*如果是終結(jié)符{{}{printf("%c匹配\n",ch);}else/*出錯(cuò)處理{printf("%c出錯(cuò)\n",ch);/*輸出出錯(cuò)終結(jié)符*/}}else/*非終結(jié)符處理{{}{}if(cha.origin!='N')/*判斷是否為空{(diào)ss=for(intm=(cha.length-1);m>=0;m--{if(cha.array[m]!=ss+=}if(ss!={}else{}{printf("%c出錯(cuò)\n",x);/*輸出出錯(cuò)非終結(jié)符*/}}return0;}實(shí)驗(yàn)三源代碼usingnamespaceconstintMaxLen=20;constintLength=20;charch;charboolflag=true;intpoint=0;intstep=classcount=}boolempty()const{if(count==returntrue;returnfalse;}boolif(count==MaxLen)returntrue;return}boolget_top(char&c)const{//獲取棧頂符號(hào)returnfalse;c=dount-1];returntrue;}}boolpush(constcharc){//壓棧returndount++]=c;returntrue;}boolpop(){//出棧returnfalse;return}voidout(){//輸出棧中元素for(int}voidfor(inti=0;i<count;i++)}intcount;//chardata[MaxLen];//stackS,X;//S:Xvoidprint(inti,char*c){//輸出剩余的輸入串for(intj=i;j<Length;j++)}voidGoto(inti,charc){if(i==0){if(c==}elseif(c==}elseif(c==}}
flag=elseif(i==if(c==}elseif(c==}elseif(c==}}
flag=elseif(i==if(c==cout<<",GOTO(6,T)入棧}elseif(c==}}
flag=elsecout<<",GOTO(7,F)=10入棧}}}
flag=if(ch=='i'){cout<<"ACTION[0,i]=S5,狀態(tài)5入棧"<<endl;ch=}elseif(ch=='('){}}
cout<<"ACTION[0,(]=S4,狀態(tài)4入棧"<<endl;ch=flag=if(ch=='+'){cout<<"ACTION[0,+]=S6,6入棧"<<endl;ch=}elseif(ch=='#'){flag=}}
flag=if(ch=='*'){cout<<"ACTION[2,*]=S7,7入棧"<<endl;ch=}elseif(ch=='+'||ch==')'||ch=='#'){cout<<"r2:E->T規(guī)約";}}
flag=voidAction_3(){//狀態(tài)為if(ch=='+'||ch=='*'||ch ==')'||ch=='#'){cout<<"r4:T->F規(guī)約";}}
flag=voidAction_4_6_7(intx){//4,6,7if(ch=='i'){cout<<x<<",i]=S5,5入棧"<<endl;ch=}elseif(ch=='('){cout<<x<<",(]=S4,4入棧"<<endl;ch=}}
flag=voidAction_5(){//狀態(tài)為if((ch=='+')||(ch=='*')||(ch==')')||(ch=='#')){cout<<"r6:F->i規(guī)約";}}
flag=if(ch=='+'){cout<<"ACTION[8,+]=S6,6入棧"<<endl;ch=}elseif(ch==')'){ch=}}
flag=if(ch=='*'){cout<<"ACTION[9,*]=S7,7
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度臨時(shí)彩鋼活動(dòng)房租賃合同范本3篇
- 2024碎磚再利用工程采購(gòu)合同書3篇
- 2024消防無(wú)人機(jī)系統(tǒng)采購(gòu)合同
- 2025年度鮮蛋養(yǎng)殖戶互助合作供銷合同范本(2025版)3篇
- 二零二五年度航空物流樞紐建設(shè)與運(yùn)營(yíng)合同3篇
- 2025年度項(xiàng)目部承包智慧社區(qū)建設(shè)項(xiàng)目合同2篇
- 2024版工程勞務(wù)分包合同參考范本
- 2025便利店品牌升級(jí)商品采購(gòu)合作協(xié)議3篇
- 2024簡(jiǎn)單的家政服務(wù)合同協(xié)議
- 2025年度私人住宅買賣合同(含社區(qū)服務(wù))3篇
- 2025年河北供水有限責(zé)任公司招聘筆試參考題庫(kù)含答案解析
- Unit3 Sports and fitness Discovering Useful Structures 說(shuō)課稿-2024-2025學(xué)年高中英語(yǔ)人教版(2019)必修第一冊(cè)
- 農(nóng)發(fā)行案防知識(shí)培訓(xùn)課件
- 社區(qū)醫(yī)療抗菌藥物分級(jí)管理方案
- NB/T 11536-2024煤礦帶壓開采底板井下注漿加固改造技術(shù)規(guī)范
- 2024年九年級(jí)上德育工作總結(jié)
- 2024年儲(chǔ)罐呼吸閥項(xiàng)目可行性研究報(bào)告
- 除氧器出水溶解氧不合格的原因有哪些
- 沖擊式機(jī)組水輪機(jī)安裝概述與流程
- 新加坡SM2數(shù)學(xué)試題
- 畢業(yè)論文-水利水電工程質(zhì)量管理
評(píng)論
0/150
提交評(píng)論