![計算機13-3班實驗報告_第1頁](http://file4.renrendoc.com/view/53ae3771529ee42eee9fd19eec8c5c6a/53ae3771529ee42eee9fd19eec8c5c6a1.gif)
![計算機13-3班實驗報告_第2頁](http://file4.renrendoc.com/view/53ae3771529ee42eee9fd19eec8c5c6a/53ae3771529ee42eee9fd19eec8c5c6a2.gif)
![計算機13-3班實驗報告_第3頁](http://file4.renrendoc.com/view/53ae3771529ee42eee9fd19eec8c5c6a/53ae3771529ee42eee9fd19eec8c5c6a3.gif)
![計算機13-3班實驗報告_第4頁](http://file4.renrendoc.com/view/53ae3771529ee42eee9fd19eec8c5c6a/53ae3771529ee42eee9fd19eec8c5c6a4.gif)
![計算機13-3班實驗報告_第5頁](http://file4.renrendoc.com/view/53ae3771529ee42eee9fd19eec8c5c6a/53ae3771529ee42eee9fd19eec8c5c6a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗一按拼寫單詞,并用(內(nèi)碼,屬性)二元式表示。(屬性值——token的機內(nèi)(源代碼見附錄利用數(shù)組keywords關(guān)鍵字利用數(shù)組optr算數(shù)運算符利用數(shù)組separator分界IsKeytruefalse函數(shù)IsLettertruefalseIsDigit判斷是否是數(shù)字,返回truefalse函數(shù)IsFloat判斷是否是小數(shù),返回truefalseIsOptrtrueIsSeparatortrueLL(1)1、寫出LL(1)分析法的思想:當一個文法滿足LL(1)條件時,就可LL(1)是使用一張分析表和一個站進行聯(lián)合控制。分析表是一個M[A,a]形式的矩陣分析規(guī)則棧SACK用于存放文法符號棧頂取符號按照分表給出的規(guī)則進行有步驟的分析。2.(1)E-(2)G->+TG|—(3)G-(4)T-(5)S-(6)S-(7)F-(8)F-LL(1)分析表、初始化變量空間(包括堆棧、結(jié)構(gòu)體、數(shù)組、臨時變量;(1)Vn[]非終結(jié)符數(shù)組Vt[]終結(jié)符數(shù)組structLL//ll(1){char*c}ClassstackRun()函數(shù)實現(xiàn)LL(1)文法分析的函數(shù):先將表達式字符入棧,#最先入棧底,依次取棧通過完成LL(1)分析法的語法分析程序,自己對于分析過程和遞歸子程序法的區(qū)別LR(1)一實驗LR(1)分析法實驗設(shè)計思想及算(1)總控程序,也可以稱為驅(qū)動程序。對所有的LR分析器總控程序都是相同的。(2)分析表或分析函數(shù),不同的文法分析表將不同,同一個文法采用的LR分析器(ACTIONLR其中:SP為棧指針,S[i]為狀態(tài)棧,X[i]為文法符號棧。狀態(tài)轉(zhuǎn)換表用GOTO[i,X]=jiX時應(yīng)j,X為終結(jié)符或非終結(jié)符。移進action[i,a]=Sjjai,j表歸約action[i,a]=rkA,即文AB的產(chǎn)生式,若B的長度為R(即|B|=R),則從狀態(tài)棧和文法符號棧中自頂向下去掉R個符號,即棧指針SPRA移入文法符號棧內(nèi),j=GOTO[i,A]i為修改指針后的棧頂狀態(tài)。接受S報錯LRLRLR分析法正是給出一種能根據(jù)當前分析棧中的符號串(通常以狀態(tài)表示)和向右順序查看輸入串K個(≥0符號就可唯一地確定分析器的動作是移進還是歸約和用哪個產(chǎn)生式歸約,因LR0)LRLR(0)K=1時,已能滿足當前絕大多數(shù)高級語言編譯程序?qū)崿F(xiàn)的需要。SLR(1LR(1LR(1LALR(1)分析器的構(gòu)造原理和基礎(chǔ)。LALR(1)分析器是當前大多數(shù)高級程序設(shè)計語言編譯程序所采ACCLR(0、SLR(1)、LALR(1)、LR(1)四種分析器的構(gòu)造方法都必須深入理解和掌握實驗一源代碼#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 //無符號整數(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)系運算符"<<'\t'<<"("<<line<<","<<row<<")"<<endl;jcase'#':break;case'\0':break; }}}}}}return}實驗二源代碼usingnamespacestd;stringss;//記錄動作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;/*字符個數(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'進棧printf("步驟\t\t分析棧\t\t剩余\t所用產(chǎn)生式\t動作\n");{x=A[top--];/*x為當前棧頂字符*/{}if(flag==1)/*如果是終結(jié)符{{}{printf("%c匹配\n",ch);}else/*出錯處理{printf("%c出錯\n",ch);/*輸出出錯終結(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出錯\n",x);/*輸出出錯非終結(jié)符*/}}return0;}實驗三源代碼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{//獲取棧頂符號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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年買賣協(xié)議參考范文(2篇)
- 2025年五人股東合作的協(xié)議(2篇)
- 2025年代課教師勞動合同標準版本(4篇)
- 2025年代交社會保險協(xié)議(三篇)
- 2025年買賣房屋定金協(xié)議簡單版(三篇)
- 2025年個人股權(quán)轉(zhuǎn)讓協(xié)議公司股東(三篇)
- 動漫周邊承運商運輸合同
- 毒性物質(zhì)運輸承包合同范本
- 產(chǎn)業(yè)園改造協(xié)議主要條款
- 塑料機械廠裝修合同
- 2025年三人合伙投資合作開店合同模板(三篇)
- 2025年合資經(jīng)營印刷煙包盒行業(yè)深度研究分析報告
- 天津市五區(qū)縣重點校2024-2025學(xué)年高一上學(xué)期1月期末聯(lián)考試題 化學(xué) 含答案
- 吉林省吉林市普通中學(xué)2024-2025學(xué)年高三上學(xué)期二模試題 生物 含答案
- 高考日語閱讀理解練習(xí)2篇-高考日語復(fù)習(xí)
- 2025年湖南省通信產(chǎn)業(yè)服務(wù)限公司春季校園招聘76人高頻重點提升(共500題)附帶答案詳解
- 《電影之創(chuàng)戰(zhàn)紀》課件
- 印刷基礎(chǔ)知識培訓(xùn)資料
- NB/T 11536-2024煤礦帶壓開采底板井下注漿加固改造技術(shù)規(guī)范
- 2024-2025學(xué)年人教版五年級(上)英語寒假作業(yè)(一)
- 【課件】九年級化學(xué)下冊(人教版2024)-【新教材解讀】義務(wù)教育教材內(nèi)容解讀課件
評論
0/150
提交評論