




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、LIAOCHENG UNIVERSITY編譯原理實驗指導(dǎo)書聊城大學(xué)計算機(jī)學(xué)院2011年3月目錄編譯原理課程實驗教學(xué)大綱1實驗一詞法分析器的設(shè)計3基本信息3實驗?zāi)康?實驗內(nèi)容3實驗擴(kuò)充5實驗說明5實驗考核方式5實驗輔導(dǎo)5實驗二語法分析器的設(shè)計10基本信息10實驗?zāi)康?0實驗內(nèi)容10實驗說明:10實驗考核方式:10實驗輔導(dǎo)11能力擴(kuò)展19附錄19編譯原理課程實驗教學(xué)大綱課程名稱:編譯原理英文名稱:Compile principles設(shè)置形式:非獨立設(shè)課課程模塊:專業(yè)方向課實驗課性質(zhì):專業(yè)實驗課程編號:509615課程負(fù)責(zé)人:姜華大綱主撰人:姜華大綱審核人:左風(fēng)朝一、學(xué)時、學(xué)分 課程總學(xué)時:72實驗
2、學(xué)時:8課程學(xué)分:4二、適用專業(yè)及年級計算機(jī)科學(xué)與技術(shù)、軟件工程三年級三、課程目標(biāo)與基本要求編譯原理課程是計算機(jī)專業(yè)的核心課程,是培養(yǎng)計算機(jī)技術(shù)高級人才的必修課程。該課程通過程序設(shè)計語言和語言處理軟件的理論與技術(shù)的教學(xué),培養(yǎng)學(xué)生利用計算機(jī)語言處理技術(shù)進(jìn)行系統(tǒng)分析和軟件設(shè)計的能力。<<編譯原理>>是理論與實踐并重的課程,這門實驗課要綜合運用一、二、三年級所學(xué)的多門課程的內(nèi)容。實驗?zāi)繕?biāo)與要求; 1學(xué)會用高級程序設(shè)計語言設(shè)計詞法分析器。 2學(xué)會用高級程序設(shè)計語言設(shè)計語法分析器。四、主要儀器設(shè)備Windows操作系統(tǒng),編程語言采用C、C+,集成調(diào)試環(huán)境采用TC或Microsof
3、t Visual Studio 6五、實驗項目及教學(xué)安排序 號實驗項目名稱實 驗 內(nèi) 容學(xué)時要求性質(zhì)類別所用主要儀器及臺套數(shù)所在實驗室1用C或者 C+ 語言設(shè)計一個詞法分析器1. 確定編譯中使用的表格、詞法分析器的輸出形式、標(biāo)識符與關(guān)鍵字的區(qū)分方法。2. 把詞法分析器設(shè)計成一個獨立的過程。4必做設(shè)計綜合型微機(jī),每人一臺。計算機(jī)學(xué)院實驗中心2用C或者 C+語言設(shè)計一個語法分析器。1. 詞法分析和語法分析在一起實現(xiàn)。2. 把語法分析器設(shè)計成一個獨的過程。4必做設(shè)計綜合型微機(jī),每人一臺。計算機(jī)學(xué)院實驗
4、中心六、考核方式及成績評定根據(jù)學(xué)生實驗出勤情況、實驗態(tài)度、實驗報告成績等方面評定實驗成績。實驗報告平均成績(含實驗理論)占實驗成績的50%,實驗技能平均成績(含實驗態(tài)度)占實驗成績的50%。 實驗成績占該課程考試總成績的1020%。在機(jī)器上將程序及運行結(jié)果上傳至服務(wù)器,由實習(xí)教師給出優(yōu)、良、中、及格、不及格。七、實驗教科書、參考書1實驗教科書自編實驗指導(dǎo)書。 2實驗參考書實驗一詞法分析器的設(shè)計基本信息實驗課程:編譯原理設(shè)課形式:非獨立課程學(xué)分:4實驗項目:詞法分析器的設(shè)計項目類型:設(shè)計項目學(xué)時:4實驗?zāi)康?. 掌握詞法分析的原理;2. 熟悉符號表的建立與單詞的分類方法;3. 掌握詞法分析器的設(shè)
5、計與調(diào)試;實驗內(nèi)容1. 分析如表1所定義的PASCAL語言子集的語法,找出所有單詞的組成及類別;2. 完成單詞的分類及其編碼;3. 完成保留字表、變量名表和常數(shù)表的結(jié)構(gòu)設(shè)計;4. 建立識別單詞符號集合的DFA;5. 由DFA設(shè)計詞法分析程序;6. 調(diào)試并運行詞法分析程序;7. 實驗結(jié)果分析。分析結(jié)果含義并寫出自己的心得體會。表1.PASCAL語言子集的語法定義程序變量說明BEGIN語句表END.變量說明VAR變量表:類型;|空變量表變量表,變量|變量類型INTEGER語句表語句表;語句|語句語句賦值語句|條件語句|WHILE語句|復(fù)合語句|過程定義賦值語句變量=算術(shù)表達(dá)式條件語句IF關(guān)系表達(dá)式
6、THEN語句ELSE語句WHILE語句WHILE關(guān)系表達(dá)式DO語句復(fù)合語句BEGIN語句表END過程定義PROCEDURE標(biāo)識符參數(shù)表;BEGIN語句表END參數(shù)表(標(biāo)識符表)|空標(biāo)識符表標(biāo)識符表,標(biāo)識符|標(biāo)識符算術(shù)表達(dá)式算術(shù)表達(dá)式+項|項項項*初等量|初等量初等量(算術(shù)表達(dá)式)|變量|無符號數(shù)關(guān)系表達(dá)式算術(shù)表達(dá)式關(guān)系符算術(shù)表達(dá)式變量標(biāo)識符標(biāo)識符標(biāo)識符字母|標(biāo)識符數(shù)學(xué)|字母無符號數(shù)無符號數(shù)數(shù)字|數(shù)字關(guān)系符=|=|=|字母A|B|C|X|Y|Z數(shù)字0|1|2|8|9空提示: (1) 單詞的分類。 可將所有標(biāo)識符歸為一類;將常數(shù)歸為另一類;保留字和分隔符則可采取一詞一類。 (2) 符號表的建立。
7、可事先建立一保留字表,以備在識別保留字時進(jìn)行查詢。變量名表及常數(shù)表則在詞法分析過程中建立。 (3) 單詞串的輸出形式。 所輸出的每一單詞,均按形如 (CLASS,VALUE)的二元式編碼。對于變量標(biāo)識符和常數(shù),CLASS字段為相應(yīng)的類別碼,VALUE字段則是該標(biāo)識符、常數(shù)在其符號表中登記項的序號 (要求在變量名表登記項中存放該標(biāo)識符的字符串,其最大長度為四個字符;常數(shù)表登記項中則存放該整數(shù)的二進(jìn)制形式)。對于保留字和分隔號,由于采用一詞一類的編碼方式,所以僅需在二元式的CLASS字段上放置相應(yīng)的單詞的類別碼,VALUE字段則為“空”。不過,為便于查看由詞法分析程序所輸出的單詞串,也可以在CLA
8、SS字段上直接放置單詞符號串本身。 測試用輸入:測試用輸入程序為。 Procedure program1(a, b);BeginVar xyz=50;While a>b do beginIf xyz=0 then xyz=50; xyz:=xyz-a; a:=a-1; endEnd實驗擴(kuò)充構(gòu)造語言的詞法分析程序,要求識別出變量類型并記錄相關(guān)信息。實驗說明實驗環(huán)境:WINDOWS下,工具為Turbo C2.0或Visual C 6.0。實驗考核方式1提交實驗報告2演示程序和答辯(抽查)實驗輔導(dǎo)1. 詞法分析程序的功能詞法分析程序又稱為掃描器,其功能在于依次掃視字符串形式源程序中的各個字符,
9、逐個識別出其中的單詞,并將其轉(zhuǎn)換為內(nèi)部編碼形式的單詞符號串作確為輸出。通常,可采用二元式(class,value)來表示一個單詞符號的內(nèi)部編碼,其中:class為一整數(shù)碼,用于表示該單詞的類別;value則是該單詞之值(如變量名在符號表中序號,常數(shù)的二進(jìn)制表示,以及運算符和分隔符的編碼等等)。概括地說,掃描器在其工作過程中,一般應(yīng)完成下列的任務(wù):(1)識別出源程序中的各個單詞符號,并將其轉(zhuǎn)換為內(nèi)部編碼形式;(2)刪除無用的空白字符、回車字符以及其它非實質(zhì)性字符;(3)刪除注釋;(4)進(jìn)行詞法檢查,報告所發(fā)現(xiàn)的錯誤。此外,視編譯工作流程的組織,一些編譯程序在進(jìn)行詞法分析時,還要完成將所識別出的標(biāo)
10、識符登錄到符號表的工作。 2. 實例分析對于表2所列的各類單詞符號,詞法分析程序可按圖1所示的狀態(tài)轉(zhuǎn)換圖來構(gòu)造。表2 一個語言的單詞符號及分類碼表圖1識別表2所列語言單詞的DFA及相關(guān)的語義過程相關(guān)變量和子程序說明如下:u 函數(shù)GETCHAR每調(diào)用一次,就把掃描指示器當(dāng)前所指示的源程序字符送入字符變量ch,然后把掃描指示器前推一個字符位置。u 字符數(shù)組TOKEN用來依次存放一個單詞詞文中的各個字符。u 函數(shù)CAT每調(diào)用一次,就把當(dāng)前ch中的字符拼接于TOKEN中所存字符串的右邊。u 函數(shù)LOOKUP每調(diào)用一次,就以TOKEN中的字符串查保留字表,若查到,就將相應(yīng)關(guān)鍵字的類別碼賦給整型變量c;否
11、則將c置為零。u 函數(shù)RETRACT每調(diào)用一次,就把掃描指示器回退一個字符位置 (即退回多讀的那個字符)。u 函數(shù)OUT一般僅在進(jìn)入終態(tài)時調(diào)用此函數(shù),調(diào)用的形式為OUT (c,VAL)。其中,實參c為相應(yīng)單詞的類別碼或其助記符;當(dāng)所識別的單詞為標(biāo)識符和整數(shù)時,實參VAL為TOKEN (即詞文分別為字母數(shù)字串和數(shù)字串),對于其余種類的單詞,VAL均為空串。函數(shù)OUT的功能是,在送出一個單詞的內(nèi)部表示之后,返回到調(diào)用該詞法分析程序的那個程序。可參考的C語言源程序如下:# include <stdio.h># include <ctype.h># include <st
12、ring.h># define ID6# define INT7# define LT8# define LE9# define EQ10# define NE11# define GT12# define GE13char TOKEN20;extern int lookup (char*);extern void out (int, char*);extern reporterror (void);void scannerexample (FILE*fp)char ch;int i, c;ch=fgetc (fp);if (isalpha (ch)/*it must be a iden
13、tifer!*/TOKEN0=ch;ch=fgetc (fp);i=1;while (isalnum (ch)TOKENi=ch;i+;ch=fgetc (fp);TOKENi=0fseek(fp,-1,1);/* retract*/c=lookup (TOKEN);if (c=0) out (ID,TOKEN);else out (c," ");Elseif(isdigit(ch)TOKEN0=ch;ch=fgetc(fp);i=1;while(isdigit(ch)TOKENi=ch;i+;ch=fgetc(fp);TOKENi=0;fseek(fp,-1,1);out
14、(INT,TOKEN);Elseswitch(ch)case :ch=fgetc(fp);if(ch=)out(LE," ");else if(ch=) out (NE," ");elsefseek (fp,-1,1);out (LT," ");break;case =:out(EQ, " ");break;case :ch=fgetc(fp);if(ch=)out(GE," ");elsefseek(fp,-1,1);out(GT," ");break;default: r
15、eporterror( );break;return;實驗二語法分析器的設(shè)計基本信息實驗課程:編譯原理設(shè)課形式:非獨立課程學(xué)分:4實驗項目:語法分析器的設(shè)計項目類型:設(shè)計項目學(xué)時:4實驗?zāi)康?. 掌握自上而下語法分析的基本思想;2. 掌握利用預(yù)測分析法進(jìn)行語法分析的原理和過程;3. 熟悉文法的機(jī)內(nèi)表示;4. 掌握語法分析器的設(shè)計與調(diào)試,提高編程能力、動手能力以及獨立分析問題、解決問題的能力和綜合運用所學(xué)知識的能力。實驗內(nèi)容1. 輸入任意文法,改寫文法使其成為LL(1)文法。 Ø2. 構(gòu)造文法的預(yù)測分析表;3. 設(shè)計堆棧和預(yù)測分析表的機(jī)內(nèi)表示;4. 設(shè)計并書寫語法分析程序;5. 調(diào)試并
16、運行語法分析程序;6. 實驗結(jié)果分析l 分析程序中文法存儲所采用的數(shù)據(jù)結(jié)構(gòu)l 分析結(jié)果并寫出自己的心得體會提示: 對于所選定的分析方法,如有需要,應(yīng)選擇一種合適的數(shù)據(jù)結(jié)構(gòu),以構(gòu)造所給文法的機(jī)內(nèi)表示。 實驗說明:實驗環(huán)境:WINDOWS下,工具為Turbo C2.0或Visual C 6.0。實驗考核方式:1. 提交實驗報告2. 演示程序和答辯(抽查)實驗預(yù)習(xí)實驗輔導(dǎo)1. 設(shè)計原理及算法描述 所謂LL(1)分析法,就是指從左到右掃描輸入串(源程序),同時采用最左推導(dǎo),且對每次直接推導(dǎo)只需向前看一個輸入符號,便可確定當(dāng)前所應(yīng)當(dāng)選擇的規(guī)則。實現(xiàn)LL(1)分析的程序又稱為LL(1)分析程序或LL1(1
17、)分析器。 一個文法要能進(jìn)行LL(1)分析,那么這個文法應(yīng)該滿足:無二義性,無左遞歸,無左公因子。當(dāng)文法滿足條件后,再分別構(gòu)造文法每個非終結(jié)符的FIRST和FOLLOW集合,然后根據(jù)FIRST和FOLLOW集合構(gòu)造LL(1)分析表,最后利用分析表,根據(jù)LL(1)語法分析構(gòu)造一個分析器。2. 分析過程LL(1)的語法分析程序包含了三個部分,總控程序,預(yù)測分析表函數(shù),先進(jìn)先出的語法分析棧,本程序也是采用了同樣的方法進(jìn)行語法分析,該程序是采用了C語言來編寫,其邏輯結(jié)構(gòu)圖如圖2所示。 圖2 LL(1)語法分析邏輯結(jié)構(gòu)圖 LL(1)預(yù)測分析程序的總控程序在任何時候都是按STACK棧頂符號X和當(dāng)前的輸入符
18、號a做哪種過程的。對于任何(X,a)總控程序每次都執(zhí)行下述三種可能的動作之一: ()若X = a =#,則宣布分析成功,停止分析過程。 ()若X = a #,則把X從STACK棧頂彈出,讓a指向下一個輸入符號。 ()若X是一個非終結(jié)符,則查看預(yù)測分析表M。若MA,a中存放著關(guān)于X的一個產(chǎn)生式,那么,首先把X彈出STACK棧頂,然后,把產(chǎn)生式的右部符號串按反序一一彈出STACK棧(若右部符號為,則不推什么東西進(jìn)STACK棧)。若MA,a中存放著“出錯標(biāo)志”,則調(diào)用出錯診斷程序ERROR。 事實上,LL(1)的分析是根據(jù)文法構(gòu)造的,它反映了相應(yīng)文法所定義的語言的固定特征,因此在LL(1)分析器中,
19、實際上是以LL(1)分析表代替相應(yīng)方法來進(jìn)行分析的。 3. 構(gòu)造LL(1)分析表 例如考查文法GE: EE+T | T TT*F | F F( E ) | i | 我們?nèi)菀卓闯龃宋姆]有左公因子也沒有二義性,但卻存在兩個直接左遞歸,這里我們利用引入新非終結(jié)符的方法來消除它使方法滿足要求,即: (1) 改寫文法。對形如:UUx|y的產(chǎn)生式(其中x,y V+ ,y不以U開頭),引入一個新的非終結(jié)符U后,可以等價地改寫成為: UyU Ux U| 顯然改寫后,U和U都不是左遞歸的非終結(jié)符。因此文法GE按上述方法消去左遞歸后可等價地寫成: ETP P+TP | TFQ Q*FQ | F( E ) | i
20、 (2) FIRST和FOLLOW集合構(gòu)造。在構(gòu)造LL(1)預(yù)測分析表之前,首先要構(gòu)造該文法的每個非終結(jié)符的FIRST和FOLLOW集合,按照下面描述的算法來構(gòu)造這兩個集合。 FIRST集合的構(gòu)造算法: l 若XVT,則FIRST(X)=X。 l 若XVN,且有產(chǎn)生式Xa,則把a(bǔ)加入到FIRST(X)中;若X也是一條產(chǎn)生式,則把也加到FIRST(X)中。 l 若XY是一個產(chǎn)生式且YVN,則把FIRST(Y)中的所有非-元素都加到FIRST(X)中;若XY1Y2Yk是一個產(chǎn)生式,Y1,Yi-1都是非終結(jié)符,而且,對于任何j,1ji-1,F(xiàn)IRST(Yj)都含有(即Y1Yi-1* ),則把FIRS
21、T(Yj)中的所有非-元素都加到FIRST(X)中;特別是,若所有的FIRST(Yj)均含有,j=1,2,,k,則把加到FIRST(X)中。連續(xù)使用上面的規(guī)則,直至每個集合FIRST不再增大為止。 FOLLOW集合的構(gòu)造算法: l 對于文法的開始符號S,置#于FOLLOW(S)中; l 若AB是一個產(chǎn)生式,則把FIRST()| 加至FOLLOW(B)中; l 若AB是一個產(chǎn)生式,或AB是一個產(chǎn)生式而ð(即FIRST()),則把FOLLOW(A)加至FOLLOW(B)中。 連續(xù)使用上面的規(guī)則,直至每個集合FOLLOW不再增大為止。 算法中利用二維數(shù)組分別表示各產(chǎn)生式右部的FIRST和左
22、部的FOLLOW集合(3)預(yù)測分析表構(gòu)造。構(gòu)造GE的LL(1)預(yù)測分析表。預(yù)測分析表MA, a是如下形式的一個矩陣。A為非終結(jié)符,a是終結(jié)符或#。矩陣元素 MA, a中存放這一條關(guān)于A的產(chǎn)生式,指出當(dāng)A面臨輸入符號a是所應(yīng)采用的規(guī)則。MA, a也可能存放一條“出錯標(biāo)志”,指出當(dāng)A根本不該面臨輸入符號a。算法中利用二維數(shù)組存儲分析表。 4. 利用分析表進(jìn)行預(yù)測分析 (1) 總控程序的流程圖LL(1)分析法總控程序流程圖如圖3所示。圖3 LL(1)分析法總控程序流程圖(2) 總程序的算法描述如下:BEGIN 首先把#然后把文法開始符號推進(jìn)STACK棧;把第一個輸入符號讀進(jìn)a; FLAG:=TRUE
23、; WHILE FLAG DO BEGIN 把棧頂符號出棧到X中; IF X in VT THEN IF X =a THEN 把下一輸入符號讀進(jìn)a ELSE ERROR ELSE IF X= # THEN IF X=a THEN FLAG:=FALSE ELSE ERROR ELSE IF MA, a=Xx1x2xk THEN 把xk, xk1, x1依次進(jìn)棧 /*若x1, x2 xk=e,則不進(jìn)棧*/ ELSE ERROREND OF WHILE; STOP /*分析成功,過程結(jié)束*/ END (5) 實例分析 實例考查文法GE: EE+T | T TT*F | F F( E ) | i |
24、 文法改造為LL(1)文法為測試文法GE: ETG G+TG | TFS S*FS | F( E ) | i分析例句:i*(i)# , i+i#輸入:串w和文法G的分析表M。輸出:如果W屬于L(G),則輸出W的最左推導(dǎo),否則報告錯誤。方法:開始時,#S在分析棧中,其中S是文法的開始符號,在棧頂;令指針ip指向W#的第一個符號; 主要數(shù)據(jù)結(jié)構(gòu)描述 char termin50; /*終結(jié)符號*/ char non_ter50; /*非終結(jié)符號*/ char v50; /*所有符號*/ char left50; /*左部*/ char right5050; /*右部*/ int M2020; /*二
25、維數(shù)組存儲分析表*/ 棧T用來存放產(chǎn)生式的右邊 Str數(shù)組存放要分析的句子串 可參考的C語言源程序V/*LL(1)分析法源程序,只能在VC+中運行 */#include<stdio.h>#include<stdlib.h>#include<string.h>#include<dos.h>char A20;/*分析棧*/char B20;/*剩余串*/char v120='i','+','*','(',')','#'/*終結(jié)符 */c
26、har v220='E','G','T','S','F'/*非終結(jié)符 */ int j=0,b=0,top=0,l;/*L為輸入串長度 */ typedef struct type/*產(chǎn)生式類型定義 */ char origin;/*大寫字符 */ &
27、#160; char array5;/*產(chǎn)生式右邊字符 */ int length;/*字符個數(shù) */type; type e,t,g,g1,s,s1,f,f1;/*結(jié)構(gòu)體變量 */type C1010;/*預(yù)測分析表 */ void print()/*輸出分析棧 */
28、int a;/*指針*/ for(a=0;a<=top+1;a+) printf("%c",Aa); printf(""t"t");/*print*/ void print1()/*輸出剩
29、余串*/ int j; for(j=0;j<b;j+)/*輸出對齊符*/ printf(" "); for(j=b;j<=l;j+)
30、160; printf("%c",Bj); printf(""t"t"t");/*print1*/void main() int m,n,k=0,flag=0,finish=0;
31、160; char ch,x; type cha;/*用來接受Cmn*/ /*把文法產(chǎn)生式賦值結(jié)構(gòu)體*/ e.origin='E' strcpy(e.array,"TG");
32、60; e.length=2; t.origin='T' strcpy(t.array,"FS"); t.length=2; g.origin='G'&
33、#160; strcpy(g.array,"+TG"); g.length=3; g1.origin='G' g1.array0='' g1
34、.length=1; s.origin='S' strcpy(s.array,"*FS"); s.length=3; s1.origin='S' s1.array0='
35、' s1.length=1; f.origin='F' strcpy(f.array,"(E)"); f.length=3; f1.or
36、igin='F' f1.array0='i' f1.length=1; for(m=0;m<=4;m+)/*初始化分析表*/ fo
37、r(n=0;n<=5;n+) Cmn.origin='N'/*全部賦為空*/ /*填充分析表*/ C00=e;C03=e; C11=g;C14=g1;C15=g1; C20=t;C23=t; C
38、31=s1;C32=s;C34=C35=s1; C40=f1;C43=f; printf("提示:本程序只能對由'i','+','*','(',')'構(gòu)成的以'#'結(jié)束的字符串進(jìn)行分析,n"); printf("請輸入要分析的字符串:"); do/*讀入分析串*/
39、60; scanf("%c",&ch); if (ch!='i') &&(ch!='+') &&(ch!='*')&&(ch!='(')&&(ch!=')')&&(ch!='#')
40、0; printf("輸入串中有非法字符n"); exit(1); Bj=ch;
41、; j+; while(ch!='#'); l=j;/*分析串長度*/ ch=B0;/*當(dāng)前分析字符*/ Atop='#' A+top='E'/*'#','E'進(jìn)棧*/ printf("步驟tt分析棧 tt剩余字符 tt所用產(chǎn)生式 n"); do
42、; x=Atop-;/*x為當(dāng)前棧頂字符*/ printf("%d",k+); printf("tt"); for(j=0;j<=5;j+)/*判斷是否為終結(jié)符*/
43、0; if(x=v1j) flag=1;
44、160; break; if(flag=1)/
45、*如果是終結(jié)符*/ if(x='#') &
46、#160; finish=1;/*結(jié)束標(biāo)記*/
47、 printf("acc!n");/*接受 */
48、160; getchar(); ge
49、tchar(); exit(1); &
50、#160; /*if*/ if(x=ch)
51、60; print();
52、; print1(); &
53、#160; printf("%c匹配n",ch); ch=B+b;/*下一個輸入字符*/
54、 flag=0;/*恢復(fù)標(biāo)記*/ /*if*/ &
55、#160; else/*出錯處理*/
56、0;print(); print1();
57、0; printf("%c出錯n",ch);/*輸出出錯終結(jié)符*/ exit(1);
58、60; /*else*/ /*if*/
59、; else/*非終結(jié)符處理*/ for(j=0;j<=4;j+) if(x=v2j) &
60、#160; m=j;/*行號*/ break;&
61、#160;
62、 for(j=0;j<=5;j+) if(ch=v1j)
63、; n=j;/*列號*/
64、 break;
65、; cha=Cmn; if(cha.origin!='N')/*判斷是否為空*/
66、 print(); print1();
67、0; printf("%c->",cha.origin);/*輸出產(chǎn)生式*/ for(j=0;j
68、<cha.length;j+) printf("%c",cha.arrayj); printf("n");
69、60; for(j=(cha.length-1);j =0;j-)/*產(chǎn)生式逆序入棧*/ A+top=cha.array
70、j; if(Atop='')/*為空則不進(jìn)棧*/ top-;
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河南省周口西華縣聯(lián)考2025屆八年級物理第二學(xué)期期末考試模擬試題含解析
- 2025年廣東佛山市西南水都飲料基地投資有限公司招聘筆試參考題庫含答案解析
- 安全文化概述課件
- 2025年廣東省科學(xué)院梅州產(chǎn)業(yè)技術(shù)研究院有限公司招聘筆試參考題庫含答案解析
- 2025年新疆克拉瑪依市鑫塔物業(yè)服務(wù)有限責(zé)任公司招聘筆試參考題庫含答案解析
- 2025年江蘇江蘇射陽港港口集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 小朋友國防教育課件
- 山東中考英語真題單選題100道及答案
- 四川省 2023-2024學(xué)年高二上學(xué)期11月月考數(shù)學(xué) 無答案
- 重慶市烏江新高考協(xié)作體2022-2023學(xué)年高一下學(xué)期期末聯(lián)考語文試題 無答案
- 2025安徽蚌埠市龍子湖區(qū)產(chǎn)業(yè)發(fā)展有限公司招聘22人筆試參考題庫附帶答案詳解
- 償二代下我國財險公司償付能力影響因素的深度剖析與實證研究
- 【MOOC】理解馬克思-南京大學(xué) 中國大學(xué)慕課MOOC答案
- JGT266-2011 泡沫混凝土標(biāo)準(zhǔn)規(guī)范
- 配電室運行維護(hù)投標(biāo)方案(技術(shù)標(biāo))
- 禾川x3系列伺服說明書
- 常用H型鋼理論重量表格
- 中學(xué)自主招生考試物理試題
- 四川大學(xué)-劉龍飛-畢業(yè)答辯PPT模板
- 工作分析試題及答案
- 突發(fā)事件應(yīng)急演練指南
評論
0/150
提交評論