




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上Pascal語言編譯器的設(shè)計(jì)與實(shí)現(xiàn)我們?cè)O(shè)計(jì)的編譯程序涉及到編譯五個(gè)階段中的三個(gè),即詞法分析器、語法分析器和中間代碼生成器。編譯程序的輸出結(jié)果包括詞法分析后的二元式序列、變量名表、狀態(tài)棧分析過程顯示及四元式序列程序,整個(gè)編譯程序分為三部分:(1) 詞法分析部分(2) 語法分析處理及四元式生成部分 (3) 輸出顯示部分一詞法分析器設(shè)計(jì) 由于我們規(guī)定的程序語句中涉及單詞較少,故在詞法分析階段忽略了單詞輸入錯(cuò)誤的檢查,而將編譯程序的重點(diǎn)放在中間代碼生成階段。詞法分析器的功能是輸入源程序,輸出單詞符號(hào)。我們規(guī)定輸出的單詞符號(hào)格式為如下的二元式: (單詞種別,單詞自身的值)#de
2、fineACC-2#define sy_if0#define sy_then1#define sy_else2#define sy_while3#define sy_begin4#define sy_do5#define sy_end6#define a7#define semicolon8#define e9#define sharp10#define S11#define L12#define tempsy 15#define EA18 /E and#define EO19 /E or#define plus34#define subtract35#define times36#defin
3、e divide37#define becomes38#define op_and39#define op_or40#define op_not41#define rop42#define lparent48#define rparent49#define ident 56#define intconst 57函數(shù)說明 1 讀取函數(shù) readline( )、readchar ( )詞法分析包含從源文件讀取字符的操作,但頻繁的讀文件操作會(huì)影響程序執(zhí)行效率,故實(shí)際上是從源程序文件” PAS.dat ”中讀取一行到輸入緩沖區(qū),而詞法分析過程中每次讀取一個(gè)字符時(shí)則是通過執(zhí)行 readchar ( )從
4、輸入緩沖區(qū)獲得的;若緩沖區(qū)已被讀空,則再執(zhí)行readline( )從 PAS.dat 中讀取下一行至輸入緩沖區(qū)。2 掃描函數(shù) scan( ) 掃描函數(shù) scan( )的功能是濾除多余空格并對(duì)主要單詞進(jìn)行分析處理,將分析得到的二元式存入二元式結(jié)果緩沖區(qū)。3 變量處理 find( )變量處理中首先把以字母開頭的字母數(shù)字串存到 spelling 數(shù)組中,然后進(jìn)行識(shí)別。識(shí)別過程是先讓它與保留關(guān)鍵字表中的所有關(guān)鍵字進(jìn)行匹配,若獲得成功則說明它為保留關(guān)鍵字,即將其內(nèi)碼值寫入二元式結(jié)果緩沖區(qū);否則說明其為變量,這時(shí)讓它與變量名表中的變量進(jìn)行匹配( 變量匹配函數(shù) find( ) ),如果成功,則說明該變量已存
5、在并在二元式結(jié)果緩沖區(qū)中標(biāo)記為此變量( 值填為該變量在變量名表中的位置),否則將該變量登記到變量名表中,再將這個(gè)新變量存入二元式緩存數(shù)組中。4 數(shù)字識(shí)別 number( ) 數(shù)字識(shí)別將識(shí)別出的數(shù)字填入二元式結(jié)果緩存數(shù)組。5 顯示函數(shù) 顯示函數(shù)的功能在屏幕上輸出詞法分析的結(jié)果( 即二元式序列程序),同時(shí)給出二元式個(gè)數(shù)及源程序行數(shù)統(tǒng)計(jì)。二語法分析器設(shè)計(jì) 語法分析器的核心是三張 SLR 分析表以及針對(duì)這三張 SLR 分析表進(jìn)行語義加工的語義動(dòng)作。編譯程序中語法分析處理及四元式生成部分主要是以二元式作為輸入,并通過 SLR 分析表對(duì)語法分析處理過程進(jìn)行控制,使四元式翻譯的工作有條不紊的進(jìn)行,同時(shí)識(shí)別語
6、法分析中的語法錯(cuò)誤。在處理 if 和 while 語句時(shí),需要進(jìn)行真值或假值的拉鏈和返填工作,以便轉(zhuǎn)移目標(biāo)的正確填入。1. 控制語句的 SLR 分析表1 設(shè)計(jì)過程如下: 將擴(kuò)展文法G0) Sà S1)S à if e then S else S2)S à while e do S3)S à begin L end4)S à a5)L à S6)L à S;L用_CLOSURE方法構(gòu)造LR(0)項(xiàng)目規(guī)范簇為:I0: Sà ·SS à ·if e then S else SS à
7、 ·while e do S S à ·begin L endS à · a ;I1: Sà S·I2: S à if·e then S else SI3: S à while ·e do SI4: S à begin·L end L à ·S L à ·S;L S à ·if e then S else SS à ·while e do S S à ·begin L
8、 endS à · a I5: S à a· I6: S à if e·then S else S I7: Sà while e·do S I8: S à begin L·end I9: L à S·L à S·L I10: S à if e then · S else SS à· if e then S else S S à· while e do SS à· begin L
9、 end I11: S à while e do ·SS à· if e then S else SS à ·while e do SS à· begin L endS à· aI12: S à begin L end · I13: L à S; ·L L à·SL à·S;LS à·if e then S else SS à·while e do SS à·
10、;begin L endS à·a I14: S à if e then S·else S I15: S à while e do S· I16: L àS;L·I17: S àif e then S·else SS à·if e then S else SS à·while e do SS à·begin L endS à·aI18: S àif e then S else S·構(gòu)造文法G中非終
11、結(jié)符的FOLLOW集如下:FOLLOW(L) = end FOLLOW(S) = else , ; ,end,# 在()項(xiàng)目規(guī)范簇中,只有9有“移進(jìn)歸約”沖突,L à S·L à S·L因?yàn)镕OLLOW(L) FIRST(L) = 所以可以用方法解決以上沖突,最后我們得到的分析表如下:ACTIONGOTO Ifthenelsewhilebegindoenda;e#SL0S2S3S4S511ACC2S63S74S2S3S4S5985R4R3R4R46S107S118S129R5S1310S2S3S4S51411S2S3S4S51512R3R3R3R313S
12、2S3S4S591614S1715R2R2R2R216R617S2S3S4S51818R1R1R1R1static intaction1913=/*0*/2,-1,-1,3,4,-1,-1,5,-1,-1,10,1,-1,/*1*/-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ACC,-1,-1,/*2*/-1,-1,-1,-1,-1,-1,-1,-1,-1,6,-1,-1,-1,/*3*/-1,-1,-1,-1,-1,-1,-1,-1,-1,7,-1,-1,-1,/*4*/2,-1,-1,3,4,-1,-1,5,-1,-1,-1,9,8,/*5*/-1,-1,104,-1,-1
13、,-1,104,-1,104,-1,104,-1,-1,/*6*/-1,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,/*7*/-1,-1,-1,-1,-1,11,-1,-1,-1,-1,-1,-1,-1,/*8*/-1,-1,-1,-1,-1,-1,12,-1,-1,-1,-1,-1,-1,/*9*/-1,-1,-1,-1,-1,-1,105,-1,13,-1,-1,-1,-1,/*10*/2,-1,-1,3,4,-1,-1,5,-1,-1,-1,14,-1,/*11*/2,-1,-1,3,4,-1,-1,5,-1,-1,-1,15,-1,/*12*/-1,-1,1
14、03,-1,-1,-1,103,-1,103,-1,103,-1,-1,/*13*/2,-1,-1,3,4,-1,-1,5,-1,-1,-1,9,16,/*14*/-1,-1,17,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,/*15*/-1,-1,102,-1,-1,-1,102,-1,102,-1,102,-1,-1,/*16*/-1,-1,-1,-1,-1,-1,106,-1,-1,-1,-1,-1,-1,/*17*/2,-1,-1,3,4,-1,-1,5,-1,-1,-1,18,-1,/*18*/-1,-1,101,-1,-1,-1,101,-1,101,-1,101,
15、-1,-1;其中,前 9 列為 action 值,后 2 列為 goto 值;016 表示 17 個(gè)移進(jìn)狀態(tài)( 即 Si);-1表示出錯(cuò);ACC 表示分析成功;而 100106 對(duì)應(yīng)歸約產(chǎn)生式:2. 算術(shù)表達(dá)式的 LR 分析表 2 設(shè)計(jì)如下:0) S à E1) E à E+E2) E à E*E3) E à (E)4) E à i (過程略)ACTIONGOTOI+-*/()#E0S3S211S4S11S5S10ACC2S3S263R4R4R4R4R4R44S3S275S3S286S4S11S5S10S97R1R1S5S10R1R18R2R2
16、R2R2R2R29R3R3R3R3R3R310S3S21211S3S21312R6R6R6R6R6R613R5R5S5S10R5R5static int action1149=/*0*/3,-1,-1,-1,-1,2,-1,-1,1,/*1*/-1,4,11,5,10,-1,-1,ACC,-1,/*2*/3,-1,-1,-1,-1,2,-1,-1,6,/*3*/104,104,104,104,104,104,104,104,-1,/*4*/3,-1,-1,-1,-1,2,-1,-1,7,/*5*/3,-1,-1,-1,-1,2,-1,-1,8,/*6*/-1,4,11,5,10,-1,9,-1
17、,-1,/*7*/101,101,101,5,10,101,101,101,-1,/*8*/102,102,102,102,102,102,102,102,-1,/*9*/103,103,103,103,103,103,103,103,-1,/*10*/3,-1,-1,-1,-1,2,-1,-1,12,/*11*/3,-1,-1,-1,-1,2,-1,-1,13,/*12*/106,106,106,106,106,106,106,106,-1,/*13*/105,105,105,5,10,105,105,105,-1;3.布爾表達(dá)式的 SLR 分析表3 設(shè)計(jì)如下:(過程略)1) Sà
18、 B2) B à i3) B à i rop i4) B à ( B )5) B à NOT B6) A à B AND7) B à AB8) O à B OR9) B à OBACTIONGOTOiRop()NOTANDOR#BAO0S1S4S513781S2R1R1R1R12S33R2R2R2R24S1S4S511785S1S4S56786R4S9S10R47S1S4S514788S1S4S515789R5R5R510R7R7R711S12S9S1012R3R3R3R313S9S10ACC14R6S9S10R6
19、15R8S9S10R8static int action21611=/*0*/1,-1,4,-1,5,-1,-1,-1,13,7,8,/*1*/-1,2,-1,101,-1,101,101,101,-1,-1,-1,/*2*/3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,/*3*/-1,-1,-1,102,-1,102,102,102,-1,-1,-1,/*4*/1,-1,4,-1,5,-1,-1,-1,11,7,8,/*5*/1,-1,4,-1,5,-1,-1,-1,6,7,8,/*6*/-1,-1,-1,104,-1,9,10,104,-1,-1,-1,/*7*/1,-1
20、,4,-1,5,-1,-1,-1,14,7,8,/*8*/1,-1,4,-1,5,-1,-1,-1,15,7,8,/*9*/105,-1,105,-1,105,-1,-1,105,-1,-1,-1,/*10*/107,-1,107,-1,107,-1,-1,107,-1,-1,-1,/*11*/-1,-1,-1,12,-1,9,10,-1,-1,-1,-1,/*12*/-1,103,-1,103,-1,103,103,103,-1,-1,-1,/*13*/-1,-1,-1,-1,-1,9,10,ACC,-1,-1,-1,/*14*/-1,-1,-1,106,-1,9,10,106,-1,-1,
21、-1,/*15*/-1,-1,-1,108,-1,9,10,108,-1,-1,-1;LR 分析表控制語義加工的實(shí)現(xiàn):當(dāng)掃描 LR 分析表的當(dāng)前狀態(tài)為歸約狀態(tài)時(shí),則在調(diào)用與該狀態(tài)對(duì)應(yīng)的產(chǎn)生式進(jìn)行歸約的同時(shí),調(diào)用相應(yīng)的語義子程序進(jìn)行有關(guān)的翻譯工作。現(xiàn)在對(duì) LR 分析器的分析棧加以擴(kuò)充,使得每個(gè)文法符號(hào)之后都跟著它的語義值。為了清晰起見,我們把這個(gè)棧的每一項(xiàng)看成由三部分組成:狀態(tài) state ,文法符號(hào) syl 和語義值 val。編譯程序?qū)崿F(xiàn)算術(shù)表達(dá)式、布爾表達(dá)式及程序語句的語義加工時(shí),都是按這種狀態(tài)棧加工方式進(jìn)行的。例如:( 5 + 3 ) * 6的分析過程序號(hào)STATEValsylinput1
22、0-#( 5 + 3 ) * 6 #202-#(5 + 3 ) * 6 #3023-#(5+ 3 ) * 6 #4026-5#(E+ 3 ) * 6 #50264-5-#(E+3 ) * 6 #602643-5-#(E+3 ) * 6 #702647-5-3#(E+E) * 6 #8026-8#(E) * 6 #90269-8-#(E)* 6 #1001-8#E* 6 #11015-8-#E* 6 #120153-8-#E*6#130158-8-6#E*E#1401-48#E#15ACC在分析過程中,第(3)步操作后的狀態(tài)棧為 023,根據(jù)棧頂狀態(tài)“ 3”和現(xiàn)行輸入符號(hào)“ +”( input
23、欄字符串的第一個(gè)字符)查分析表 ACTION3,+=R4,即按第(4)個(gè)產(chǎn)生式 En 來進(jìn)行歸約;由于產(chǎn)生式右部?jī)H含一項(xiàng),故去掉狀態(tài)棧棧頂“3”;此時(shí) 2 變?yōu)樾碌臈m敔顟B(tài),再查( 2,E)的下一狀態(tài) s:GOTO2,E=6,即將狀態(tài) 6 和文法符號(hào) E 壓棧,最后得到第( 4)步的狀態(tài)。第( 7)步操作后也是如此,當(dāng)前狀態(tài)棧為 02647,根據(jù)棧頂狀態(tài) 7 和現(xiàn)行輸入符號(hào)“ )”查分析表 ACTION7,)=R1,即按第(1)個(gè)產(chǎn)生式 EE1+E2進(jìn)行歸約;由于產(chǎn)生式右部有三項(xiàng),故去掉狀態(tài)棧棧頂?shù)?647 三項(xiàng);此時(shí) 2 變?yōu)樾碌臈m敔顟B(tài),再查( 2,E)的下一狀態(tài) s:GOTO2,E=6,
24、即將狀態(tài) 6 和文法符號(hào) E 壓棧,最后得到第(8)步的狀態(tài)。三中間代碼生成器設(shè)計(jì):布爾表達(dá)式 布爾表達(dá)式在程序語言中有兩個(gè)基本作用:一是用作控制語句( 如 if -else 或 while語句)的條件式;二是用于邏輯演算,計(jì)算邏輯值。布爾表達(dá)式是由布爾算符( &&、| 、?。┳饔糜诓紶栕兞浚?或常數(shù))或關(guān)系表達(dá)式而形成的。關(guān)系表達(dá)式的形式是 E1 rop E2,其中 rop 是關(guān)系符( 如<、=、>或),E1和 E2是算術(shù)式。在這里,我們只考慮前面給定文法所產(chǎn)生的布爾表達(dá)式:BB &&B | B | B | ! B | (B) | i rop i
25、| i遵照我們的約定,布爾算符的優(yōu)先順序( 從高到低)為:!、&&、|,并假定&&和|都服從左結(jié)合規(guī)則。所有關(guān)系符的優(yōu)先級(jí)都是相同的,而且高于任何布爾算符,低于任何算術(shù)算符,關(guān)系算符不得結(jié)合。表達(dá)式的真、假出口的確定:考慮表達(dá)式 B1 | B2 ,若 B1為真,則立即知道 B 也為真;因此,B1的真出口也就是整個(gè) B 的真出口。若 B1?為假,則 B2必須被計(jì)值,B2的第一個(gè)四元式就是 B1的假出口。當(dāng)然,B2的真、假出口也就是整個(gè) B的真、假出口。類似的考慮適用于對(duì) B1 && B2的翻譯,我們將 B1 | B2和 B1 &&
26、B2 的翻譯用下圖表示,在自下而上的分析過程中,一個(gè)布爾式的真假出口往往不能在產(chǎn)生四元式的同時(shí)就填上。我們只好把這種未完成的四元式的地址( 編號(hào))作為 B 的語義值暫存起來,待到整個(gè)表達(dá)式的四元式產(chǎn)生完畢之后再來回填這個(gè)未填入的轉(zhuǎn)移目標(biāo)。條件語句對(duì)條件語句 if e S1 else S2 中的布爾表達(dá)式 e,其作用僅在于控制對(duì) S1和 S2的選擇。因此,作為轉(zhuǎn)移條件的布爾式e,我們可以賦予它兩種“ 出口”:一是“ 真”出T口,出向 S1;一是“ 假”出口,出向 S2。于是,e的代碼F條件語句可以翻譯成如圖的一般形式。非終結(jié)符 e 具有兩項(xiàng)語義值 e _TC 和e_FC,它們分別指出了尚待回填真
27、、S2的代碼假出口的四元式串。e 的“ 真”出口只有在往回掃描到if時(shí)才能知道,而它圖 3-2 條件語句的代碼結(jié)構(gòu) 的“ 假”出口則需到處理過 S1并且到達(dá) else 才能明確。這就是說,必須把 e_FC 的值傳下去,以便到達(dá)相應(yīng)的 else時(shí)才進(jìn)行回填。另外,當(dāng) S1語句執(zhí)行完時(shí)意味著整個(gè) if-else 語句也已執(zhí)行完畢;因此,在 S1的編碼之后應(yīng)產(chǎn)生一條無條件轉(zhuǎn)移指令。這條轉(zhuǎn)移指令將導(dǎo)致程序控制離開整個(gè) if-else 語句。但是,在完成 S2的翻譯之前,這條無條件轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)是不知道的。甚至,在翻譯完 S2之后,這條轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)仍無法確定。這種情形是由于語句的嵌套性所引起的
28、。例如下面的語句:if e1 if e2 S1 else S2 else S3 在 S1的代碼之后的那條無條件轉(zhuǎn)移指令不僅應(yīng)跨越 S2而且應(yīng)跨越 S3。這也就是說,轉(zhuǎn)移目標(biāo)的確定和語句所處的環(huán)境密切相關(guān)。條件循環(huán)語句條件循環(huán)語句 while e S 通常被翻譯成圖的代碼結(jié)構(gòu)。布爾式 e 的“ 真”出口出向 S 代碼段的第一個(gè)四元式。緊接 S 代碼段之后應(yīng)產(chǎn)生一條轉(zhuǎn)向測(cè)試 e 的無條件轉(zhuǎn)移指令。e 的“ 假”出口將導(dǎo)致程序控制離開整個(gè) while 語句。e 的“ 假”出口目標(biāo)即使在整個(gè) while 語句翻譯完之后也未必明確。例如: if e1 while e2 S1 else S2這種情況仍是由
29、于語句的嵌套性引起的。所以,我們只好把它作為語句的語義值 S·CHAIN 暫留下來,以便在處理外層語句時(shí)再伺機(jī)回填。語法翻譯實(shí)現(xiàn)方法 將上述語法翻譯付諸實(shí)現(xiàn)過程中,我們僅保留了算術(shù)表達(dá)式和布爾表達(dá)式翻譯的文法和語義動(dòng)作;面對(duì)程序語句的翻譯,由于改造后含有較多的非終結(jié)符且語義動(dòng)作又相對(duì)簡(jiǎn)單,故仍恢復(fù)為改造之前的程序語句文法。由于總體上構(gòu)造一個(gè) SLR 分析表來實(shí)現(xiàn)語法分析及語義加工將使得所構(gòu)造的 SLR 分析表過大,所以將其分為下面三部分處理:(1) 對(duì)算術(shù)表達(dá)式單獨(dú)處理,即為算術(shù)表達(dá)式構(gòu)造一個(gè) SLR 分析表,并將賦值語句A=E 與算術(shù)表達(dá)式歸為一類處理,處理之后的賦值語句僅看作為程
30、序語句文法中的一個(gè)終結(jié)符 a。(2) 對(duì)布爾表達(dá)式也單獨(dú)處理,并為其構(gòu)造一個(gè) SLR 分析表,經(jīng) SLR 分析表處理后的布爾表達(dá)式看作為程序語句文法中的一個(gè)終結(jié)符 e。(3) 程序語句文法此時(shí)變?yōu)椋篠 à if e then S else S | while e do S | begin L end | a;L à SL | S此時(shí)為程序語句構(gòu)造相應(yīng)的 SLR 分析表就簡(jiǎn)單多了。前面的程序語句文法中所添加的非終結(jié)符是為了能及時(shí)回填有關(guān)四元式轉(zhuǎn)移目標(biāo)而引入的,在取消了這些非終結(jié)符后又如何解決及時(shí)回填轉(zhuǎn)移目標(biāo)的問題呢?我們采取的解決方法是增加兩個(gè)數(shù)組 labelmark 和 l
31、abeltemp 來分別記錄語句嵌套中每一層布爾表達(dá)式( 如果有的話)e 的首地址以及每一層else( 如果有的話)之前的四元式地址( 即無條件轉(zhuǎn)出此層 if 語句的四元式)。也即,對(duì)程序語句的翻譯來說: 在處理完布爾表達(dá)式 e 后,回填 if 或 while 語句的真值鏈; 在歸約完每一個(gè)語句 S 之后檢查符號(hào)棧,看在 S 之前的文法符號(hào)是否 if 或 while,若是則回填假值鏈( 假值入口為語句 S 所對(duì)應(yīng)的四元式序列之后;對(duì) if 語句,此時(shí)已在該序列之后加入了一條無條件轉(zhuǎn)移的四元式); 在 if 語句中,else 前面要加入一個(gè)無條件轉(zhuǎn)移的四元式轉(zhuǎn)向 if 語句末尾;在 while語
32、句尾要有一個(gè)無條件轉(zhuǎn)移四元式轉(zhuǎn)向 while 語句開頭。四數(shù)據(jù)結(jié)構(gòu)說明 編譯程序中涉及到的數(shù)據(jù)結(jié)構(gòu)說明如下:/*/charch='0'/*當(dāng)前字符*/int count=0;staticcharspelling10=""/*存放識(shí)別的字*/staticcharline81=""/*一行字符緩沖區(qū)*/char*pline;/*字符緩沖區(qū)指針*/staticcharntab110010;structntabint tc;int fc;ntab2200;int label=0;/*存放臨時(shí)變量的表的定義 */structrwordscharsp
33、10;intsy;/*存放文件的結(jié)構(gòu)*/struct rwords reswords10="if",sy_if,"do",sy_do,"else",sy_else,"while",sy_while,"then",sy_then,"begin",sy_begin,"end",sy_end,"and",op_and,"or",op_or,"not",op_not;struct aaint sy1;in
34、t pos;buf1000,/*詞法分析結(jié)果緩沖區(qū)*/g_nCurChar,/*當(dāng)前字符*/g_nExpCurChar,/*當(dāng)前表達(dá)式中的字符*/E,/*非終結(jié)符*/sstack100,/*符號(hào)棧*/ibuf100,stack1000;struct aa oth;struct fourexpchar op10;struct aa arg1;struct aa arg2;intresult;fexp200;/*四元式的結(jié)構(gòu)*/intssp=0;/*指向sstack100*/structaa*pbuf=buf;/*指向詞法分析緩沖區(qū)*/int nlength=0;int lnum=0;/*源程序長(zhǎng)
35、度*/int tt1=0;FILE *cfile;/*/int newt=0;/*臨時(shí)變量*/int nxq=100;/*nxq指向下一個(gè)形成的四元式的地址*/intlr;int lr1;int sp=0;/* 狀態(tài)棧定義*/int stack1100;int sp1=0;/*狀態(tài)棧1的定義*/int num=0;struct llint nxq1;int tc1;int fc1;labelmark10;int labeltemp10;int pointmark=-1,pointtemp=-1;int sign=0;/*sign1,表達(dá)式為賦值語句;sign2,表達(dá)式為布爾表達(dá)式。*/五編譯程
36、序運(yùn)行測(cè)試測(cè)試PAS.dat得源程序如下: while (a>b) do begin if m>=n then a:=a+1else while k=h do x:=x+2; m:=n-x/(m+y); p:=x/2-2 end# 經(jīng)編譯程序運(yùn)行后得到的輸出結(jié)果如下:*詞法分析結(jié)果*30480560423561490504000562422563105603805603405712030564Press any key to continue.42556550566380566340572805623805633505663704805623405674908056838056637057235057260100程序總 10 共行,產(chǎn)生了 5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東廊架垂直綠化施工方案
- 防止欺詐的移動(dòng)支付技術(shù)-深度研究
- 營(yíng)養(yǎng)支持對(duì)關(guān)節(jié)康復(fù)的作用-深度研究
- 采購(gòu)合作會(huì)議流程
- 飯店服務(wù)規(guī)程-前廳部概述
- 2025-2030中國(guó)倒置過濾離心機(jī)行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030中國(guó)體育俱樂部行業(yè)發(fā)展模式與未來前景預(yù)測(cè)分析研究報(bào)告
- 2025-2030中國(guó)云中的地理信息系統(tǒng)行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030中國(guó)主題公園行業(yè)發(fā)展前景與投資建議研究研究報(bào)告
- 2025-2030中國(guó)中藥材行業(yè)發(fā)展分析及投資前景與戰(zhàn)略規(guī)劃研究報(bào)告
- 【大班戶外體育游戲活動(dòng)的問題及對(duì)策研究S幼兒園為例7000字(論文)】
- 003-04-PFMEA第五版表格模板-(帶實(shí)例)-2020.2.3
- 工程安全生產(chǎn)竣工評(píng)定表
- Vue.js前端開發(fā)實(shí)戰(zhàn)(第2版)全套完整教學(xué)課件
- 2023年江蘇海洋大學(xué)招考聘用專職輔導(dǎo)員26人模擬預(yù)測(cè)(共500題)筆試參考題庫(kù)附答案詳解
- 【教案】第4單元++基因的表達(dá)++單元教學(xué)設(shè)計(jì)高一下學(xué)期生物人教版必修2
- 錯(cuò)牙合畸形的早期矯治
- 小學(xué)數(shù)學(xué)-乘法分配律教學(xué)課件設(shè)計(jì)
- 身份證籍貫自動(dòng)對(duì)照自動(dòng)生成
- DG-TJ 08-2367-2021 既有建筑外立面整治設(shè)計(jì)標(biāo)準(zhǔn)
- 教育測(cè)量與評(píng)價(jià)智慧樹知到答案章節(jié)測(cè)試2023年石河子大學(xué)
評(píng)論
0/150
提交評(píng)論