版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計報告( 2010 - 2011年度第 1 學(xué)期)名 稱:編譯技術(shù)課程設(shè)計b 題 目:詞法分析器設(shè)計 算符優(yōu)先分析程序設(shè)計 基于算符優(yōu)先分析方法的語法制導(dǎo)翻譯程序設(shè)計院 系: 計算機(jī)系 班 級: 網(wǎng)絡(luò)0802 學(xué) 號: 學(xué)生姓名: 指導(dǎo)教師: 設(shè)計周數(shù): 1周 成 績: 日期:2010年12月31一、課程設(shè)計的目的與要求1詞法分析器設(shè)計的目的與要求1.1 詞法分析器設(shè)計的實驗?zāi)康谋緦嶒炇菫橛嬎銠C(jī)科學(xué)與技術(shù)專業(yè)的學(xué)生在學(xué)習(xí)編譯技術(shù)課程后,為加深對課堂教學(xué)內(nèi)容的理解,培養(yǎng)解決實際問題能力而設(shè)置的實踐環(huán)節(jié)。通過這個實驗,使學(xué)生應(yīng)用編譯程序設(shè)計的原理和技術(shù)設(shè)計出詞法分析器,了解掃描器的組成結(jié)構(gòu),
2、不同種類單詞的識別方法。能使得學(xué)生在設(shè)計和調(diào)試編譯程序的能力方面有所提高。為將來設(shè)計、分析編譯程序打下良好的基礎(chǔ)。1.2 詞法分析器設(shè)計的實驗要求設(shè)計一個掃描器,該掃描器是一個子程序,其輸入是源程序字符串,每調(diào)用一次識別并輸出一個單詞符號。為了避免超前搜索,提高運(yùn)行效率,簡化掃描器的設(shè)計,假設(shè)該程序設(shè)計語言中,基本字(也稱關(guān)鍵詞)不能做一般標(biāo)識符用,如果基本字、標(biāo)識符和常數(shù)之間沒有確定的運(yùn)算符或界符作間隔,則用空白作間隔。單詞符號及其內(nèi)部表示如表1-1所示,單詞符號中標(biāo)識符由一個字母后跟多個字母、數(shù)字組成,常數(shù)由多個十進(jìn)制數(shù)字組成。單詞符號的內(nèi)部表示,即單詞的輸出形式為二元式:(種別編碼,單詞
3、的屬性值)。表1-1單詞符號及其內(nèi)部表示單詞符號種別編碼單詞的屬性值beginifthenelseend標(biāo)識符整型常數(shù)+*()123456789101112在名字表中的地址十進(jìn)制整數(shù)2算符優(yōu)先分析程序設(shè)計的目的和要求2.1 算符優(yōu)先分析程序設(shè)計的實驗?zāi)康谋緦嶒炇菫橛嬎銠C(jī)科學(xué)與技術(shù)專業(yè)的學(xué)生在學(xué)習(xí)編譯技術(shù)課程后,為加深對課堂教學(xué)內(nèi)容的理解,培養(yǎng)解決實際問題能力而設(shè)置的實踐環(huán)節(jié)。通過這個實驗,使學(xué)生應(yīng)用編譯程序設(shè)計的原理和技術(shù), 設(shè)計、編寫和調(diào)試算符優(yōu)先分析程序,了解算符優(yōu)先分析程序的組成結(jié)構(gòu),掌握實現(xiàn)通用算符優(yōu)先分析算法的方法。能使得學(xué)生在設(shè)計和調(diào)試編譯程序的能力方面有所提高。為將來設(shè)計、分析編
4、譯程序打下良好的基礎(chǔ)。2.2 算符優(yōu)先分析程序設(shè)計的實驗要求算符優(yōu)先分析屬于自下而上的分析方法,該語法分析程序的輸入是終結(jié)符號串(即單詞符號串,以一個“”結(jié)尾),如果輸入串是句子則輸出“yes”,否則輸出“no”和錯誤信息。算符優(yōu)先分析過程與非終結(jié)符號無關(guān),當(dāng)由文法產(chǎn)生了優(yōu)先關(guān)系之后文法也就失去了作用,本題目給出文法的目的是為了便于對語法分析結(jié)果進(jìn)行驗證。(1)文法設(shè)算符優(yōu)先文法為: 說明:i為整型常數(shù)或者為標(biāo)識符表示整型變量;使用中用*表示。(2)優(yōu)先關(guān)系表設(shè)優(yōu)先關(guān)系表如表1-2所示。表1-2優(yōu)先關(guān)系表+ * i ( ) # + * i ( ) # 3基于算符優(yōu)先分析方法的語法制導(dǎo)翻譯程序設(shè)
5、計的目的和要求3.1 基于算符優(yōu)先分析方法的語法制導(dǎo)翻譯程序設(shè)計的實驗?zāi)康谋緦嶒炇菫橛嬎銠C(jī)科學(xué)與技術(shù)專業(yè)的學(xué)生在學(xué)習(xí)編譯技術(shù)課程后,為加深對課堂教學(xué)內(nèi)容的理解,培養(yǎng)解決實際問題能力而設(shè)置的實踐環(huán)節(jié)。通過這個實驗,使學(xué)生應(yīng)用編譯程序設(shè)計的原理和技術(shù), 通過設(shè)計、編寫和調(diào)試語法制導(dǎo)翻譯程序,掌握從一種語句的語法和語義出發(fā),構(gòu)造相應(yīng)的語義子程序,實現(xiàn)基于算符優(yōu)先分析方法的語法制導(dǎo)翻譯的方法。能使得學(xué)生在設(shè)計和調(diào)試編譯程序的能力方面有所提高。為將來設(shè)計、分析編譯程序打下良好的基礎(chǔ)。3.2 基于算符優(yōu)先分析方法的語法制導(dǎo)翻譯程序設(shè)計的實驗要求算符優(yōu)先分析方法是通過反復(fù)把輸入符號移進(jìn)分析棧,使用優(yōu)先關(guān)系表
6、在分析棧頂尋找最左素短語,將其歸約為一個非終結(jié)符號而實現(xiàn)的。這個分析過程與非終結(jié)符號無關(guān),當(dāng)由文法產(chǎn)生了優(yōu)先關(guān)系之后文法也就失去了作用(所以本題目無需給出文法)。基于算符優(yōu)先分析方法的語法制導(dǎo)翻譯是在算符優(yōu)先語法分析的基礎(chǔ)上進(jìn)行翻譯工作(即語義分析),每當(dāng)將一個最左素短語歸約為一個非終結(jié)符號時,就調(diào)用對應(yīng)產(chǎn)生式的語義子程序,去完成相應(yīng)的語義翻譯工作,這步歸約使用的產(chǎn)生式對非終結(jié)符號不加區(qū)分(即將所有的非終結(jié)符號用一個通用的非終結(jié)符號表示)。語法制導(dǎo)翻譯程序的輸入是終結(jié)符號串(即單詞符號串,以一個“”結(jié)尾),如果輸入符號串是句子,則按照其語義進(jìn)行翻譯,輸出等價的四元式序列(作為練習(xí)應(yīng)顯示輸出)。
7、二、課程設(shè)計正文1 詞法分析器設(shè)計1.1 以文件流的方式對詞法進(jìn)行輸入句子。1.2 標(biāo)識符和常數(shù)的屬性值(1)標(biāo)識符和常數(shù)的屬性值為該單詞在名次表或常數(shù)表中登機(jī)項的相對地址;(2)當(dāng)識別出一個標(biāo)識符或常數(shù)時,要查名字表或常數(shù)表,若表中有其登記項,則把得到的登記項地址作為其屬性值;(3)若表中沒有其登記項,則建立一個新登記項,該登記項地址作為其屬性值,此處的地址為在表中的下標(biāo)。1.3 主要數(shù)據(jù)結(jié)構(gòu)(1)屬性類dog,內(nèi)含某一單詞的顯示字符串和類別,類別包括關(guān)鍵字、標(biāo)識符、常數(shù);(2)輸入緩沖區(qū)buffer100,類型為字符型;(3)關(guān)鍵字表letter,類型為dog;(4)標(biāo)識符表varible
8、,類型為dog,存儲在句子中出現(xiàn)過的標(biāo)識符;(5)常數(shù)表constant,類型為dog,存儲在句子中出現(xiàn)過的常數(shù);(6)設(shè)置全局變量b,v,c,l記錄輸入緩沖區(qū)、標(biāo)識符表、常數(shù)表、關(guān)鍵字表的當(dāng)前最后一個指針。1.4 詞法錯誤處理:出錯則顯示錯誤所在字符位置。2 算符優(yōu)先分析程序設(shè)計2.1 以文件流的方式對詞法進(jìn)行輸入句子。2.2 主要數(shù)據(jù)結(jié)構(gòu)(1)優(yōu)先關(guān)系表xx,全局變量,事先設(shè)定;(2)分析棧類stack,內(nèi)含數(shù)組array存儲終結(jié)符號、“#”、非終結(jié)符n,和數(shù)組array的長度size;(3)數(shù)組str,用于存放輸入字符串。2.3 算法主要使用兩個while嵌套循環(huán),外層為當(dāng)前字符a不為#
9、則繼續(xù),內(nèi)層循環(huán)當(dāng)前字符a與其后一個終結(jié)符的相對優(yōu)先關(guān)系為大于時,則進(jìn)行規(guī)約,否則執(zhí)行移入操作;2.4 當(dāng)分析棧中進(jìn)入#,且分析棧中只剩三個字符時,表示分析成功,否則失敗。2.5 出錯則顯示錯誤所在字符位置。3 基于算符優(yōu)先分析方法的語法制導(dǎo)翻譯程序的設(shè)計3.1 該實驗算法是在第二個實驗的基礎(chǔ)上,將規(guī)約后產(chǎn)生的n變?yōu)榕R時變量ei或中間變量ti,當(dāng)產(chǎn)生中間變量的四元式時,則輸出該四元式。3.2 為實現(xiàn)算法,這里用到詞法分析的思想,將輸入字符串先通過詞法分析,轉(zhuǎn)化為各單詞的屬性值或地址值。此做法便于實現(xiàn)數(shù)組的輸出和查看。三、課程設(shè)計總結(jié)或結(jié)論1詞法分析器設(shè)計在做這個實驗以前一直認(rèn)為編譯的詞法分析器
10、是計算機(jī)內(nèi)部某個硬件部分。由于該門課程結(jié)課較早,有些內(nèi)容需要重新翻書查找。通過這次實驗,我對之前學(xué)過的內(nèi)容有了更深的理解,了解了掃描器的組成結(jié)構(gòu)、不同種類單詞的識別方法,掌握了由單詞的語法規(guī)則觸發(fā)、畫出識別單詞的狀態(tài)轉(zhuǎn)換圖、然后再用程序?qū)崿F(xiàn)的掃描器設(shè)計方法。2算符優(yōu)先分析程序設(shè)計該程序的主要難點(diǎn)在于何時規(guī)約和何地規(guī)約,以及規(guī)約前后對幾個指針位置的處理。通過本次實驗一定程度上提高了軟件開發(fā)能力,對編譯原理這一門課程也有了比較深刻的了解,掌握了算符優(yōu)先分析方法。最后,由于所學(xué)知識不夠全面,實驗在很多方面還有待完善,在以后的學(xué)習(xí)過程中,會掌握更多知識,力求做到更好。3基于算符優(yōu)先分析方法的語法制導(dǎo)翻
11、譯程序的設(shè)計關(guān)于語法制導(dǎo)的內(nèi)容之前未在課堂上有學(xué)過,首先鍛煉了我的自學(xué)能力,通過學(xué)習(xí)和實踐掌握了從一種語句的語法和語義出發(fā),構(gòu)造相應(yīng)的語義子程序,實現(xiàn)語法制導(dǎo)翻譯的方法。這個實驗有著第二個實驗的基礎(chǔ),保持算符優(yōu)先分析的整體思想,在此基礎(chǔ)上利用詞法分析器的思想設(shè)計了一段模數(shù)轉(zhuǎn)換程序,將字符串轉(zhuǎn)換為數(shù)字形式。通過自己思考摸索,不斷調(diào)試,最終使程序得以正常運(yùn)行。四、參考文獻(xiàn)1 陳火旺,劉春林. 程序設(shè)計語言編譯原理. 北京:國防工業(yè)出版社,第三版. 2008,92 宋雨,程曉榮,黃志強(qiáng). 計算機(jī)綜合實踐指導(dǎo). 北京:清華大學(xué)出版社,第一版. 2004,2附錄(設(shè)計流程圖、程序、運(yùn)行結(jié)果等)(一)流程
12、圖1 詞法分析器設(shè)計開始結(jié)束初始化讀入需要分析的句子還有單詞未分析?否是是字母?是否其他單詞分析程序是數(shù)字?否輸出單詞二元式關(guān)鍵字或標(biāo)識符分析程序讀一個字符是常數(shù)分析程序2 算符優(yōu)先分析程序設(shè)計開始結(jié)束初始化,顯示算符優(yōu)先矩陣打開需要讀入的文檔a的優(yōu)先關(guān)系大于arry中最后一個終結(jié)符?是是array為空?否是將array中優(yōu)先關(guān)系一樣的字符規(guī)約為n構(gòu)造字符串s ,存儲需要分析的句子從s 中讀取一個字符a將a壓入數(shù)組array3. 基于算符優(yōu)先分析方法的語法制導(dǎo)翻譯程序的設(shè)計開始結(jié)束初始化,顯示算符優(yōu)先矩陣打開需要讀入的文檔da的優(yōu)先關(guān)系大于arry中最后一個終結(jié)符?是是array為空?否是將a
13、rray中優(yōu)先關(guān)系一樣的字符規(guī)約為臨時變量或中間變量,如有產(chǎn)生四元式則輸出構(gòu)造字符串s ,存儲需要分析的句子從digital 中讀取一個字符da將da壓入數(shù)組array對s里的每個字符進(jìn)行模數(shù)轉(zhuǎn)換,存入digital(二)程序代碼1 詞法分析器設(shè)計#include#include#include #includeusing namespace std;char strtoken20;/存當(dāng)前構(gòu)成字符串class dogchar info20;int race;public:dog(char cc20,int rr)/構(gòu)造函數(shù)strcpy(info,cc);race=rr;int comp(ch
14、ar ss20)/比較strtoken是否為此類別,否返回0if(strcmp(info,ss)=0)return race;return 0;char buffer100;/輸入緩沖區(qū)int b;/buffer指針char ch;/當(dāng)前讀進(jìn)字符dog* varible20;/符號表dog* constant20;/常數(shù)表dog* letter20;/已有單詞表int v,c,l;/對應(yīng)尾指針的后一個int a2;void init0()b=0;v=0;c=0;l=0;letterl+=new dog(begin,1);letterl+=new dog(if,2);letterl+=new d
15、og(then,3);letterl+=new dog(else,4);letterl+=new dog(end,5);void init()ch= ;a0=-1;a1=-1;strcpy(strtoken,);void getchar()/取當(dāng)前字符ch=bufferb;b+;void getbc()/取字符直到不為空格while(ch= )getchar();bool isletter()/判斷是否為字母if(ch=a&ch=a&ch=0&ch=9)return 1;return 0;void concat()/把字符連接到當(dāng)前短語后邊strcat(strtoken,&ch);void r
16、etract()/回退一個字符ch= ;b-;int reserve()/*整型函數(shù)過程,對strtoken則可回送0值中的字符串查找保留字表,若它是一個保留字則返回它的編碼;否則返回非保留字信息,譬如若0不是保留字的編碼*/int i,x;for(i=0;icomp(strtoken);if(x0)return x;return 0;int insertid()/整型函數(shù)過程,將strtoken中的標(biāo)識符插入符號表,返回符號表指針variblev=new dog(strtoken,v+1);v+;int i=v;return i;int insertconst()/整型函數(shù)過程,將strto
17、ken中的常數(shù)插入常數(shù)表,返回常數(shù)表指針constantc=new dog(strtoken,c+1);c+;return c;void proerror()coutendl第b個字符bufferb-1出錯endl;/couterrorerror!endl;void f()/詞法分析器int code, value;init();/int a2;/作為return(種別,屬性)getchar(); getbc();if(isletter()while (isletter()|isdigit()concat(); getchar();retract();code=reserve();if (co
18、de=0)value=insertid();a0=6;/該單詞為標(biāo)識符a1=value;return;/return a;elsea0=code;/該單詞為保留字a1=-1;return;/return a;else if (isdigit()while(isdigit()concat();getchar();retract();value=insertconst();a0=7;/該單詞為常數(shù)a1=value;return;/return a;else if (ch=)a0=8;a1=-1;return;/return a;else if (ch=+)a0=9;a1=-1;return;/re
19、turn a;else if (ch=*)getchar();if (ch=*)a0=11;a1=-1;return;/return a;retract();a0=10;a1=-1;return;/return a;else if (ch=,)a0=12;a1=-1;return;/return a;else if (ch=()a0=13;a1=-1;return;/return a;else if (ch=)a0=14;a1=-1;return;/return a;else proerror(); /*錯誤處理*/a0=-1;a1=-1;return;/return a;void disp(
20、)char x;/if(a0=-1)/proerror();if(a1=-1)x=-;cout(a0,x);elsecout(a0,a1);void main()init0();/strcpy(buffer,begin if else abcde 1234);/char in100; /用于接收輸入文件名/ char str100;/存句子file *fin; /用于指向輸入文件的指針coutin;while(fin=fopen(in,r)=null) /判斷輸入文件名是否正確coutendl打開詞法分析輸入文件出錯!endl;coutin;int m=0;/記錄str句子串的長度char c
21、h1=a;while (ch1!=#)/從文件中讀入一串字符ch1=getc(fin);bufferm+=ch1;/cinbuffer;int lllong=m-1;/coutlllongendl;while(blllong)init();f();disp();coutendl;/return;2 算符優(yōu)先分析程序設(shè)計#include#include#include #includeusing namespace std;const int maxsize=100; /為數(shù)組str、in分配的最大存儲空間const int length=100;/為數(shù)組array分配的最大存儲空間char x
22、x88= ,+,*,!,i,(,),#, +, *, !, i, , , (, , , #, ,=;class stackprivate:int size;/size為當(dāng)前數(shù)組array的大小char arraylength;/用于存儲讀入的字符public:stack()size=0;/數(shù)組array的初始長度為0void push(char ch)if(sizelength)/如果數(shù)組未滿,則壓入arraysize=ch;size+;else/若數(shù)組已滿,則給出出錯信息coutoverflow!=0)for(int i=0;ilen;i+)chi=arraysize-len+i;size-
23、=len;return len;elsecout參數(shù)錯誤!=0&possize)return arraypos;return 0;void disp_all()/輸出當(dāng)前數(shù)組中的字符for(int i=0;isize;i+)if(judge(i)=!)cout*;elsecout7)couttt;elsecouttt=0&ch=a&ch)return 1;else if(xxij=a&ch=0&ch=9)return 1;for(int i=0;i8;i+)if(ch=xx0i)return 1;return 0;/*主函數(shù)*/void main()cout=該文法的算符優(yōu)先矩陣如下=endl
24、;int i;for(i=0;i8;i+) /輸出算符優(yōu)先矩陣for(int j=0;j8;j+)if(xxij=!)cout*t; elsecoutxxijt; coutendl;char inmaxsize; /用于接收輸入文件名 char strmaxsize;/存句子file *fin; /用于指向輸入文件的指針coutin;while(fin=fopen(in,r)=null) /判斷輸入文件名是否正確coutendl打開詞法分析輸入文件出錯!endl;coutin;int m=0;/記錄str句子串的長度char ch1=a;while (ch1!=#)/從文件中讀入一串字符ch1
25、=getc(fin);strm+=ch1;strm=#;/將#賦給字符串尾stack s;/定義stack類的變量sint len;len=int(strlen(str);/取出輸入字符串的長度 s.push(#);/先把#壓入數(shù)組arrayint k=s.getsize()-1;/k為當(dāng)前數(shù)組array讀入已讀入字符的位置標(biāo)識,int t=0;/t為輸入字符串?dāng)?shù)組str即將被讀的字符位置標(biāo)識,int j;/j用于記錄當(dāng)前數(shù)組array中的最后一個非終結(jié)符的位置char a=str0;/a用于傳遞即將讀入的字符char ch10;/存規(guī)約串while(a!=#)/如果a不等于#,則繼續(xù)讀入操作
26、或規(guī)約操作a=strt;if(a=*)if(strt+1=*)a=!;t+;if(isvt(s.judge(k) j=k;elsej=k-1;while(isvt(a)&getrank(s.judge(j),a)=1)/判斷是否滿足規(guī)約的條件 s.disp_all();/規(guī)約后輸出當(dāng)前數(shù)組array中的字符int h=j,low=j-1;/h記錄要規(guī)約的位置,low記錄規(guī)約后數(shù)組array中的最qian一個非終結(jié)符的位置if(!isvt(s.judge(low)low-;while(getrank(s.judge(low),s.judge(h)!=-1)/尋找最前一個非終結(jié)符的位置用low記錄
27、h=low;low-;if(!isvt(s.judge(low)low-;h=s.getsize();/array的長度low+;/規(guī)約的起始位置int len=h-low; /len記錄要規(guī)約的長度for(int p=0;p10;p+)chp=0;s.pop(ch,len);/彈出要規(guī)約的字符用字符串ch存儲char c=guiyue(ch);/將ch規(guī)約為ns.push(c);/再將規(guī)約后的n壓入數(shù)組中cout 規(guī)約: ;for(i=0;istrlen(ch);i+)if(chi=!)cout*;elsecoutchi;cout guiyue(ch)=a&a=z)&getrank(s.ju
28、dge(j),a)=2)/當(dāng)待輸入字符不是大寫字母且與前一個 /非終結(jié)符無優(yōu)先關(guān)系則提示出錯并給出提示cout出錯!endl;cout錯誤為第 t+1個字符 :strtendl;exit(0);elses.disp_all();if(a=!)cout移進(jìn): *endl;elsecout移進(jìn): aendl;s.push(a);/將a壓入數(shù)組array/讀入后輸出當(dāng)前數(shù)組array中的字符t+;k=s.getsize()-1;s.disp_all();char temp10; s.pop(temp,3);if(s.getsize()=0)/如果最后數(shù)組array的長度size的值為0,則分析成功c
29、out成功!endl;else/否則,分析失敗cout失敗!endl;fclose(fin);/關(guān)閉輸入文件 3 基于算符優(yōu)先分析方法的語法制導(dǎo)翻譯程序的設(shè)計#include#include#include #includeusing namespace std;typedef class four *c;char xx88= ,+,*,!,i,(,),#, +, *, !, i, , , (, , , #, ,=;const int maxsize=100; /為數(shù)組str、in分配的最大存儲空間const int length=100;/為數(shù)組array分配的最大存儲空間int digit
30、almaxsize;int d_len=0;char b21;/標(biāo)識符,b0記錄最后一個的下標(biāo)int e21;/臨時變量,e0記錄最后一個的下標(biāo),1xx為標(biāo)識符地址,2xx為臨時變量地址c gama21;/一個中間變量即一個四元式,gamai記錄最后一個下標(biāo)int a=0,b=0,c=0;/b,e,gama的最后一個下標(biāo) int atd(char ch);/將單個字符轉(zhuǎn)為為數(shù)字int entry(char ch);/查找ch是否在名字表內(nèi),返回名字表內(nèi)的下標(biāo)+100,如沒有則將其加入表中-okint newtemp(int t3);/新建一個臨時變量,返回其在臨變表中的下標(biāo)+200void f
31、uzhi(int m,int n);/m.place:=n.placeint guiyue(int ch,int ll);/規(guī)約為nint getrank(int i,int j);/根據(jù)算符優(yōu)先分析矩陣設(shè)置讀入優(yōu)先次序int isword(char ch);/判斷是否為字母/gai!void disp_one(int i);/輸出單個i代碼的字符,標(biāo)識符或符號void disp_deep_one(int i);/輸出單個i代碼的字符,標(biāo)識符或符號typedef class four/四元式char fuhao;/int s2,s3,s4;/(fuhao,s2,s3,s4)public:fou
32、r(int f,int a1,int a2)/雙目運(yùn)算符,本題只有雙目運(yùn)算符.a1,a2均為地址位移量fuhao=xx0f;s2=a1;s3=a2;s4=c+300;void disp_four()cout產(chǎn)生c: (;if(fuhao=!)cout*,;elsecoutfuhao,;disp_deep_one(s2);cout,;disp_deep_one(s3);cout,;disp_deep_one(s4);cout);void disp_simple()cout(;if(fuhao=!)cout*,;elsecoutfuhao,;disp_deep_one(s2);cout,;disp
33、_deep_one(s3);cout,;disp_deep_one(s4);cout)endl;*c;class stackprivate:int size;/size為當(dāng)前數(shù)組array的大小int arraylength;/用于存儲讀入的字符public:stack()size=0;/數(shù)組array的初始長度為0void push(int ch)/將ch壓入arrayif(sizelength)/如果數(shù)組未滿,則壓入arraysize=ch;size+;else/若數(shù)組已滿,則給出出錯信息coutoverflow! push error!=0)for(int i=0;ilen;i+)chi
34、=arraysize-len+i;size-=len;return len;elsecout參數(shù)錯誤!pop error!=0&possize)return arraypos;return 0;void disp_all()/輸出當(dāng)前數(shù)組中的所有字符=改改改!for(int i=0;i7)couttt;elsecoutttt;int getsize()/返回當(dāng)前數(shù)組大小return size;stack s;/定義stack類的變量sint entry(char ch)/查找ch是否在名字表內(nèi),返回名字表內(nèi)的下標(biāo)+100,如沒有則將其加入表中-okfor(int i=1;idisp_four(
35、);coutendl;return c+300;int guiyue(int ch,int ll)/規(guī)約為e/t,返回其地址值 s.pop(ch,ll);if(ll=1)e+b=ch0;cout規(guī)約:;disp_one(ch0);cout;disp_one(b+200);coutendl;return b+200;else if(ch0=5&ch2=6)/(。)e+b=ch1;cout規(guī)約:(;disp_one(ch1);cout;disp_one(b+200);cout100&ch2100&ch1100)cout規(guī)約:;disp_one(ch0);disp_one(ch1);disp_one(ch2);cout;disp_one(c+301);coutt;return newtemp(ch);elsecout規(guī)約失??!guiyue error!)return 1;else if(xxij=a&ch=a&ch=z)return 1;return 0;int atd(char ch)/將單個字符轉(zhuǎn)為為數(shù)字int j;for(j=
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 資料員年終個人工作總結(jié)參考8篇
- 七年級地理上冊 4.2 氣溫和降水教學(xué)實錄 (新版)粵教版
- 三年級信息技術(shù)上冊 4 熟悉鍵位分布教學(xué)實錄1 閩教版
- 2024-2025學(xué)年高中化學(xué) 第二單元 化學(xué)與資源開發(fā)利用 2.1 獲取潔凈的水教學(xué)實錄1 新人教版選修2
- 陜西省神木縣大保當(dāng)初級中學(xué)九年級化學(xué)上冊 6.2 二氧化碳制取的研究教學(xué)實錄 新人教版
- 江西省九江市高中數(shù)學(xué) 第二章 概率 5 離散型隨機(jī)變量的均值與方差(2)教學(xué)實錄 北師大版選修2-3
- 物流運(yùn)營方案
- 事業(yè)單位固定資產(chǎn)管理辦法
- 房地產(chǎn)辭職報告
- 2023二年級數(shù)學(xué)上冊 6 表內(nèi)乘法(二)第5課時 解決問題配套教學(xué)實錄 新人教版
- 精裝修工程工作界面劃分
- 山東省青島市市北區(qū)2023-2024學(xué)年九年級上學(xué)期11月期中數(shù)學(xué)試題
- 【語文】上海市三年級上冊期末復(fù)習(xí)試題(含答案)
- 遙感技術(shù)基礎(chǔ)第二版課后答案
- 項目式高中化學(xué)教學(xué)《保護(hù)珊瑚礁的措施-沉淀溶解平衡》
- 犯罪現(xiàn)場勘察題庫(348道)
- 八段錦操作評分標(biāo)準(zhǔn)
- 校園修繕施工方案投標(biāo)文件
- 十六烷安全技術(shù)說明書(msds)
- 網(wǎng)上外賣系統(tǒng)分析報告-課程設(shè)計報告
- 2024浙江省建筑安全員B證(項目經(jīng)理)考試題庫
評論
0/150
提交評論