版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGE3編譯原理實(shí)驗(yàn)報(bào)告設(shè)計(jì)題目設(shè)計(jì)題目將FOR語(yǔ)句轉(zhuǎn)換成四元式的程序?qū)崿F(xiàn)學(xué)號(hào)學(xué)號(hào)學(xué)生姓名專(zhuān)業(yè)班級(jí)專(zhuān)業(yè)班級(jí)指導(dǎo)教師指導(dǎo)教師羅珣目錄引言2第一章概述31.1設(shè)計(jì)內(nèi)容31.2設(shè)計(jì)要求3第二章設(shè)計(jì)的基本原理32.1詞法分析32.2語(yǔ)法分析32.3語(yǔ)義分析32.4文法描述32.5屬性文法描述42.6語(yǔ)法分析方法描述52.7操作符優(yōu)先級(jí)62.8中間代碼形式描述62.9中間代碼序列的結(jié)構(gòu)設(shè)計(jì)7第三章程序設(shè)計(jì)73.1總體方案設(shè)計(jì)73.2各模塊設(shè)計(jì)8程序測(cè)試94.1測(cè)試方法94.2測(cè)試結(jié)果9第五章結(jié)論16參考文獻(xiàn)17附錄程序清單17合肥工業(yè)大學(xué)課程設(shè)計(jì)任務(wù)書(shū)設(shè)計(jì)題目將FOR語(yǔ)句轉(zhuǎn)換成四元式的程序?qū)崿F(xiàn)成績(jī)主要內(nèi)容設(shè)計(jì)內(nèi)容及要求:設(shè)計(jì)一個(gè)語(yǔ)法制導(dǎo)翻譯器,將FOR語(yǔ)句翻譯成四元式。要求:先確定一個(gè)定義FOR語(yǔ)句的文法,為其設(shè)計(jì)一個(gè)語(yǔ)法分析程序,為每條產(chǎn)生式配備一個(gè)語(yǔ)義子程序,按照一遍掃描的語(yǔ)法制導(dǎo)翻譯方法,實(shí)現(xiàn)翻譯程序。對(duì)用戶(hù)輸入的任意一個(gè)正確的FOR語(yǔ)句,程序?qū)⑵滢D(zhuǎn)換成四元式輸出(可按一定格式輸出到指定文件中)。指導(dǎo)教師意見(jiàn)該生能按時(shí)完成課程設(shè)計(jì)任務(wù)書(shū)所規(guī)定的程序設(shè)計(jì),綜合運(yùn)用所學(xué)知識(shí)獨(dú)立分析和解決問(wèn)題的能力。程序設(shè)計(jì)方案。論文論述,文理,格式。程序運(yùn)行結(jié)果。程序驗(yàn)收時(shí)回答問(wèn)題。簽名:第一章概述1.1設(shè)計(jì)內(nèi)容設(shè)計(jì)一個(gè)語(yǔ)法制導(dǎo)翻譯器,將FOR語(yǔ)句翻譯成四元式。1.2設(shè)計(jì)要求先確定一個(gè)定義FOR語(yǔ)句的文法,為其設(shè)計(jì)一個(gè)語(yǔ)法分析程序,為每條產(chǎn)生式配備一個(gè)語(yǔ)義子程序,按照一遍掃描的語(yǔ)法制導(dǎo)翻譯方法,實(shí)現(xiàn)翻譯程序。對(duì)用戶(hù)輸入的任意一個(gè)正確的FOR語(yǔ)句,程序?qū)⑵滢D(zhuǎn)換成四元式輸出(可按一定格式輸出到指定文件中)。第二章設(shè)計(jì)的基本原理2.1詞法分析設(shè)計(jì)詞法分析算法,每當(dāng)語(yǔ)法分析程序需要一個(gè)單詞時(shí),則調(diào)用該算法函數(shù)。詞法分析程序每調(diào)用一次,便從源程序文件中讀入一些字符,直到識(shí)別出一個(gè)單詞,送給語(yǔ)法分析器2.2語(yǔ)法分析采用遞歸下降方法,為對(duì)應(yīng)文法中的每個(gè)非終結(jié)符編寫(xiě)一個(gè)遞歸過(guò)程,每個(gè)過(guò)程的功能是識(shí)別由該非終結(jié)符推出的串。若輸入串是給定文法的句子,則從文法的開(kāi)始符號(hào)出發(fā)一定能推導(dǎo)出與輸入的單詞串完全相同的句子。2.3語(yǔ)義分析在語(yǔ)法分析的同時(shí)可由語(yǔ)法分析程序調(diào)用相應(yīng)的語(yǔ)義子程序進(jìn)行語(yǔ)義處理,完成附加在所使用的產(chǎn)生式上的語(yǔ)義規(guī)則描述,并生成四元式的中間代碼形式。2.4文法描述遞歸下降法要求文法滿(mǎn)足LL(1)文法,則消除左遞歸后的文法如下:start→spsceofspsc→for[parse;parse;parse]{spsclist}|e list→parse;list |e parse→cdexprmorecdexprsmorecdexprs→=cdexprmorecdexprs|ecdexpr→cdsexprmorecdsexprsmorecdsexprs→||cdsexprmorecdsexprs |ecdsexpr→cdtermmorecdtermsmorecdterms→&&cdtermmorecdterms|ecdterm→cdstermmorecdstermsmorecdsterms→==cdstermmorecdsterms|!=cdstermmorecdsterms |ecdsterm→exprmoreexprsmoreexprs→<exprmoreexprs |<=exprmoreexprs |>exprmoreexprs |>=exprmoreexprs |eexpr→termmoretermsmoreterms→+termmoreterms |-termmoreterms |eterm→factormorefactorsmorefactors→*factormorefactors|/factormorefactors |efactor→!factor|(cdexpr)|id|num圖1FOR循環(huán)語(yǔ)句文法描述2.5屬性文法描述將語(yǔ)義規(guī)則附加在文法產(chǎn)生式的合適位置上,構(gòu)成屬性文法如下:start→spsceofspsc→for[parse;parse;parse]{spsclist}|e list→parse;list |e parse→cdexprmorecdexprsmorecdexprs→=cdexpr{print(“=”)}morecdexprs|ecdexpr→cdsexprmorecdsexprsmorecdsexprs→||cdsexpr{print(“||”)}morecdsexprs |ecdsexpr→cdtermmorecdtermsmorecdterms→&&cdterm{print(“&&”)}morecdterms|ecdterm→cdstermmorecdstermsmorecdsterms→==cdsterm{print(“==”)}morecdsterms|!=cdsterm{print(“!=”)}morecdsterms |ecdsterm→exprmoreexprsmoreexprs→<expr{print(“<”)}moreexprs |<=expr{print(“<=”)}moreexprs |>expr{print(“>”)}moreexprs |>=expr{print(“>=”)}moreexprs |eexpr→termmoretermsmoreterms→+term{print(“+”)}moreterms |-term{print(“-”)}moreterms |eterm→factormorefactorsmorefactors→*factor{print(“*”)}morefactors|/factor{print(“/”)}morefactors |efactor→!factor{print(“!”)}|(cdexpr)|id{print(id.lexeme)}|num{print(num.value)}圖2FOR循環(huán)語(yǔ)句屬性文法描述2.6語(yǔ)法分析方法描述遞歸下降分析方法是一種自頂向下語(yǔ)法分析方法,其目的是從文法的開(kāi)始符號(hào)開(kāi)始,根據(jù)輸入字符串進(jìn)行最左推導(dǎo),試圖推導(dǎo)出給定的字符串?;蛘哒f(shuō),從根節(jié)點(diǎn)(文法開(kāi)始符號(hào))開(kāi)始,自上而下,從左到右地為輸入字符串建立一棵語(yǔ)法樹(shù),并以預(yù)先確定的順序創(chuàng)建語(yǔ)法樹(shù)的節(jié)點(diǎn)。遞歸下降分析法可能需要回溯,即需要重復(fù)地掃描輸入。遞歸子程序法的實(shí)現(xiàn)思想是對(duì)應(yīng)每個(gè)非終結(jié)符編寫(xiě)一個(gè)遞歸過(guò)程,每個(gè)過(guò)程的功能是識(shí)別由該非終結(jié)符推出的串,當(dāng)某非終結(jié)符的產(chǎn)生式有多個(gè)候選式時(shí),能夠按照LL(1)形式唯一地確定選擇某個(gè)候選式進(jìn)行推導(dǎo),因此首先要消除左遞歸。其文法及屬性文法如圖1和圖2所示。由于遞歸下降法對(duì)每個(gè)過(guò)程可能存在直接或間接的遞歸調(diào)用,所以對(duì)某個(gè)過(guò)程在退出之前可能又要被調(diào)用,因此有些信息需要保留,通常在入口時(shí)需保留某些信息,出口時(shí)需恢復(fù)。由于遞歸過(guò)程是遵循先進(jìn)后出規(guī)律,通常開(kāi)辟棧來(lái)處理。2.7操作符優(yōu)先級(jí)在對(duì)for循環(huán)語(yǔ)句進(jìn)行翻譯時(shí),涉及到對(duì)賦值表達(dá)式和布爾表達(dá)式語(yǔ)句的翻譯。在文法的描述中給出了算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符之間的優(yōu)先級(jí)關(guān)系,其結(jié)合性由下表所示:優(yōu)先級(jí)操作符類(lèi)型操作對(duì)象的個(gè)數(shù)結(jié)合性1()邏輯運(yùn)算符——左—>右2!邏輯非運(yùn)算符單目運(yùn)算符右—>左3*,/算術(shù)運(yùn)算符雙目運(yùn)算符左—>右4+,-算術(shù)運(yùn)算符雙目運(yùn)算符左—>右5<,<=,>,>=關(guān)系運(yùn)算符雙目運(yùn)算符左—>右6==,!=關(guān)系運(yùn)算符雙目運(yùn)算符左—>右7&&邏輯與運(yùn)算符雙目運(yùn)算符左—>右8||邏輯或運(yùn)算符雙目運(yùn)算符左—>右9=賦值運(yùn)算符雙目運(yùn)算符右—>左2.8中間代碼形式的描述常見(jiàn)的中間代碼形式有逆波蘭記號(hào),三元式,四元式和樹(shù)形表示。本課題設(shè)計(jì)輸出的中間代碼的表示方法是四元式。它是帶有四個(gè)域的記錄結(jié)構(gòu),這四個(gè)域分別稱(chēng)為算符op,第一運(yùn)算對(duì)象arg1,第二運(yùn)算對(duì)象arg2及結(jié)果result。域op包含一個(gè)代表運(yùn)算符的內(nèi)部碼。例如x=yopz的四元式表示為(op,y,z,x),即將y置于arg1域,z置于arg2域,x置于result域,=置于算符域op,如果op是單目運(yùn)算符,例如非‘!’(x=!y)的四元式表示形式中不用填arg2。通常,四元式中的arg1,arg2和result的內(nèi)容都是一個(gè)指針,此指針指向有關(guān)名字的符號(hào)表入口。這樣,臨時(shí)變量名也要填入符號(hào)表中。2.9中間代碼序列的結(jié)構(gòu)設(shè)計(jì)型如for[parse1;parse2;parse3]{list}的中間代碼序列的結(jié)構(gòu)設(shè)計(jì)如下:parse1parse1parse2parse3listTRUEENDFALSE圖3中間代碼序列結(jié)構(gòu)設(shè)計(jì)第三章程序設(shè)計(jì)3.1總體方案設(shè)計(jì)本程序采用遞歸下降的方法實(shí)現(xiàn)FOR循環(huán)語(yǔ)句的翻譯,并以四元式的中間代碼形式輸出。經(jīng)過(guò)詞法分析,語(yǔ)法分析,同時(shí)執(zhí)行語(yǔ)法制導(dǎo)翻譯將中間結(jié)果表達(dá)出來(lái),然后通過(guò)一個(gè)函數(shù)轉(zhuǎn)化成要求的四元式結(jié)構(gòu)的中間代碼。上述的這個(gè)過(guò)程在一遍掃描過(guò)程中完成:在語(yǔ)法分析的過(guò)程中調(diào)用詞法分析來(lái)不斷的分解出下一個(gè)句柄;在用遞歸下降方法進(jìn)行語(yǔ)法分析的同時(shí)進(jìn)行中間形式數(shù)據(jù)的保存,在分析出操作符號(hào)的同時(shí)結(jié)合當(dāng)前棧中的數(shù)據(jù)輸出四元式。源文件源文件詞法分析語(yǔ)法分析語(yǔ)義分析中間代碼出錯(cuò)處理3.2各模塊方案設(shè)計(jì)程序中各階段的功能如下:詞法分析階段對(duì)源程序流進(jìn)行掃描,每識(shí)別出一個(gè)單詞,若是標(biāo)識(shí)符,則到符號(hào)表中查找,如果符號(hào)表中沒(méi)有此標(biāo)識(shí)符的記錄,那么將此標(biāo)識(shí)符插入符號(hào)表。最后按照單詞其所屬的類(lèi)別,把類(lèi)標(biāo)識(shí)返回,作為語(yǔ)法分析階段的輸入。詞法分析算法在symr.h頭文件中:voidsymbolnum();voidsymbolchar();voidsymbolothers();intSymbolanalysis();語(yǔ)法及語(yǔ)義分析階段由文法開(kāi)始符號(hào)對(duì)應(yīng)的子程序控制for循環(huán)語(yǔ)句各個(gè)模塊的執(zhí)行順序,并由文法開(kāi)始符號(hào)對(duì)應(yīng)的子程序遞歸調(diào)用其他的子程序,對(duì)各個(gè)模塊采用自頂向下,自左至右的推導(dǎo)方法完成對(duì)輸入字符進(jìn)行匹配的工作,試圖推導(dǎo)出與輸入符號(hào)串一致的文法的句子。voidFor_s1(int*k,int*j);//初值賦值語(yǔ)句voidFor_s2(int*k,int*j);//條件判斷語(yǔ)句voidFor_s3(int*k,int*j);//變量更新語(yǔ)句voidTrans_for();//for語(yǔ)句入口voidphrasinganalyse();//語(yǔ)法語(yǔ)義分析中間代碼生成階段控制代碼的輸出形式,以四元式形式輸出中間代碼。中間代碼最終以cout語(yǔ)句和outfile、outfile2、oufile3文件輸出結(jié)果。程序測(cè)試4.1測(cè)試方法由于本程序在設(shè)計(jì)上考慮到for循環(huán)語(yǔ)句的多種表現(xiàn)形式,如for嵌套的方式,條件語(yǔ)句的表述等,所以在理論上能完成的功能很全,因此為了測(cè)試程序在實(shí)際應(yīng)用中能否完成這些功能,我設(shè)計(jì)了三種測(cè)試途徑:輸入最簡(jiǎn)單的for循環(huán)語(yǔ)句(無(wú)嵌套)增加條件語(yǔ)句的復(fù)雜度實(shí)現(xiàn)簡(jiǎn)單for嵌套,可包括多個(gè)賦值語(yǔ)句4.2測(cè)試結(jié)果(1)簡(jiǎn)單的for循環(huán)語(yǔ)句(無(wú)嵌套)圖5簡(jiǎn)單FOR循環(huán)輸入文件圖6詞法分析二元式結(jié)果圖7四元式輸出(2)增加條件語(yǔ)句的復(fù)雜度圖8FOR循環(huán)輸入圖9詞法分析結(jié)果圖10四元式輸出(3)簡(jiǎn)單for循環(huán)嵌套圖11內(nèi)嵌FOR循環(huán)輸入圖12詞法分析結(jié)果圖13四元式輸出結(jié)論本程序?qū)崿F(xiàn)的功能有:簡(jiǎn)單for循環(huán),for循環(huán)嵌套,賦值語(yǔ)句,能完成的計(jì)算功能有布爾表達(dá)式,基本的四則運(yùn)算,能將各個(gè)功能結(jié)合起來(lái)形成for循環(huán),賦值語(yǔ)句,布爾表達(dá)式,空語(yǔ)句的復(fù)合出現(xiàn)。for語(yǔ)句的實(shí)現(xiàn)上,通過(guò)將之分解成三個(gè)表達(dá)式來(lái)分別調(diào)用,初值賦值語(yǔ)句、條件控制語(yǔ)句和變量更新語(yǔ)句。在詞法分析階段,區(qū)分一元和二元操作符的方法是:當(dāng)取得的第一個(gè)字符為一元操作符時(shí),繼續(xù)取下一個(gè)字符,若仍為操作符,則返回宏定義的標(biāo)號(hào),若不是操作符則將其放回,返回一元操作符的標(biāo)號(hào)。在詞法分析階段在每一個(gè)類(lèi)型判斷中都需要進(jìn)行放回操作。對(duì)語(yǔ)法分析,詞法分析,四元式輸出分離設(shè)計(jì),同步控制,使得代碼更靈活,結(jié)構(gòu)更緊湊,不必要對(duì)中間結(jié)果進(jìn)行大量重復(fù)的存儲(chǔ)后,然后逐一檢索后使用。此次課程設(shè)計(jì)讓我想了老師說(shuō)過(guò)的一句話(huà):“編譯原理這門(mén)課很難”。經(jīng)過(guò)這次課程設(shè)計(jì),我更體會(huì)到了這句話(huà)的含義。編譯原理這門(mén)課,不僅難理解而且很抽象。很多知識(shí)需要仔細(xì)琢磨才能理解,很多概念都很抽象,不找到例子很難搞明白。由于我本人C++編程并不好,很多的東西都不懂。所以,這次課程設(shè)計(jì),我參考和查找了很多資料,也找同學(xué)詢(xún)問(wèn)不懂的地方,請(qǐng)他們幫忙講解。經(jīng)過(guò)幾天的努力,按照以上所述的研制過(guò)程,終于做完了這次課程設(shè)計(jì)。將一個(gè)抽象的過(guò)程轉(zhuǎn)變?yōu)樵敿?xì)的結(jié)果,顯示出來(lái)。實(shí)現(xiàn)這個(gè)過(guò)程,是很有難度的。在設(shè)計(jì)時(shí),通過(guò)仔細(xì)分析各功能程序段之間的聯(lián)系、函數(shù)的調(diào)用實(shí)現(xiàn)和程序代碼的運(yùn)行效率,最終制定出了完整的程序?qū)崿F(xiàn)方案。本程序采用C++語(yǔ)言編寫(xiě),在編碼的過(guò)程中使我熟悉了C++語(yǔ)言的語(yǔ)法和庫(kù)函數(shù)的使用,以及數(shù)據(jù)結(jié)構(gòu)的應(yīng)用。現(xiàn)在我能熟練的運(yùn)用他們了,而且通過(guò)查看源代碼,對(duì)大部分庫(kù)函數(shù)的內(nèi)部實(shí)現(xiàn)有了一個(gè)很好的把握。通過(guò)此次課程設(shè)計(jì),讓我看到了自己的很多不足之處。很多知識(shí)點(diǎn)知識(shí)淺嘗輒止,只看到了皮毛,沒(méi)有深入理解。人都是有惰性的,我也不例外。很多問(wèn)題,都不愿意仔細(xì)思考。做事沒(méi)耐心,不能堅(jiān)持到最后,輕易放棄也是我的重大缺點(diǎn)。這些問(wèn)題,以后我必須盡量改正。只有這樣,才能有利于自己的發(fā)展,自己才能成為一個(gè)合格的大學(xué)生。參考文獻(xiàn)[1]陳火旺、劉春林、譚慶平、趙克佳、劉越.程序設(shè)計(jì)語(yǔ)言編譯原理(第3版).國(guó)防工業(yè)出版社.2007年8月第46次印刷[2]李師賢、李文軍等.面向?qū)ο蟪绦蛟O(shè)計(jì).高等教育出版社.2008年4月第6次印刷附錄程序清單#include"symr.h"http://S-->forS1S2S3Incycle//S1-->(E1;//S2-->E2;//S3-->E1)//Incycle-->E1;//(E1為賦值語(yǔ)句)//(E2為布爾表達(dá)式)voidphrasinganalyse();voideval(int*,int*);charjudge(string,string);voidTrans_for();strings[10]={"T1","T2","T3","T4","T5","T6","T7","T8","T9","T10"};stringad[5]={"Begin","Adress2","Again","Adress4","Exit"};stringad_e[20]={"(0)","(1)","(2)","(3)","(4)","(5)","(6)","(7)","(8)","(9)","(10)","(11)","(12)","(13)","(14)","(15)","(16)","(17)","(18)","(19)"};structgoto_adress{stringname;intvalue;}adress[5];//跳轉(zhuǎn)地址structexpression_adress{stringname;intvalue;}e_adress[20];//四元式地址stack<string>sqstacks;stack<string>sqstackr;fstreamoutfile2("outfile2.txt",ios::out);fstreamoutfile3("outfile3.txt",ios::out);stringbuffer[50];externintn;externSymbolattributesymattri[100];inti;intmain(){i=Symbolanalysis();phrasinganalyse();cin>>i;outfile2.close();return0;}//語(yǔ)法語(yǔ)義分析voidphrasinganalyse(){for(intm=0;m<5;m++)adress[m].name=ad[m];for(m=0;m<20;m++)e_adress[m].name=ad_e[m]; stringtype; stringch; do{ type=symattri[i].stype; if(type=="4"){ ch=symattri[i].svalue; if(ch=="for")Trans_for(); } i++; }while(i<n); return;}//跳轉(zhuǎn)地址回填voidbackpath(intl,int*j){adress[l].value=(*j);}/*循環(huán)語(yǔ)句*/voidIncircle(int*k,int*j){ into=i; cout<<adress[2].name<<":"<<endl; outfile2<<ad[2]<<":"<<"\n"; backpath(2,j); while(symattri[i].svalue!=")")i++; while(symattri[i].svalue=="{"||symattri[i].svalue==""||symattri[i].svalue==")"||symattri[i].svalue=="\n")i++; eval(k,j); i=o;}/*初值賦值語(yǔ)句*/voidFor_s1(int*k,int*j){ cout<<adress[0].name<<":"<<endl; outfile2<<adress[0].name<<":"<<"\n"; backpath(0,j); eval(k,j);}/*條件判斷語(yǔ)句*/voidFor_s2(int*k,int*j){ cout<<adress[1].name<<":"<<endl; outfile2<<adress[1].name<<":"<<"\n";backpath(1,j); eval(k,j); Incircle(k,j);}/*變量更新語(yǔ)句*/voidFor_s3(int*k,int*j){ cout<<adress[3].name<<":"<<endl; outfile2<<adress[3].name<<":"<<"\n"; backpath(3,j); eval(k,j); cout<<e_adress[*j].name<<"(jump"+adress[1].name+")"<<endl; outfile2<<e_adress[*j].name<<"(jump"+adress[1].name+")"<<"\n"; (*j)++; e_adress[*j].value=(*j); cout<<adress[4].name<<":"<<endl;backpath(4,j); outfile2<<adress[4].name<<":"<<"\n"; cout<<"analysishasfinished"<<endl;}/*for語(yǔ)句入口*/voidTrans_for(){ i++; if(symattri[i].svalue!="(")return;//actually,hereshouldgotoerror(); i++; intk=0; intj=0; For_s1(&k,&j);//S=>S1S2S3 For_s2(&k,&j); For_s3(&k,&j);for(intm=0;m<5;m++){cout<<adress[m].name<<"="<<adress[m].value<<endl;outfile3<<adress[m].name<<"="<<adress[m].value<<"\n";} return;}/*賦值語(yǔ)句分析函數(shù)*/voideval(int*k,int*j){ intm=i; stringch; stringsh; string*p; string*q; sqstacks.push("#"); sqstackr.push("#"); while(!(symattri[i].svalue==";")&&!(symattri[i].svalue==")")){ if(symattri[i].stype=="1"||symattri[i].stype=="2"||symattri[i].stype=="3") { ch=symattri[i].svalue; sqstacks.push(ch); i++;} if(!(symattri[i].svalue==";")&&!(symattri[i].svalue==")")) if(symattri[i].stype=="6"){ ch=symattri[i].svalue; p=&sqstackr.top(); switch(judge(ch,*p)){ case'=':; case'>':; sqstackr.push(ch); i++; break; case'<': sqstacks.push(symattri[i+1].svalue); buffer[2]=sqstacks.top();sqstacks.pop(); buffer[1]=sqstackr.top();sqstackr.pop(); buffer[0]=sqstacks.top();sqstacks.pop(); buffer[0]=e_adress[*j].name+"("+buffer[1]+""+buffer[0]+""+buffer[2]+""+s[*k]+")"+"\n"; sqstacks.push(s[*k]); sqstackr.push(ch); (*k)++; (*j)++; e_adress[*j].value=(*j); cout<<*buffer; outfile2<<*buffer; i++; break;} if(!(symattri[i].stype=="1"||symattri[i].stype=="2"||symattri[i].stype=="3"||symattri[i].svalue==";")){ cout<<"cancel"<<endl; } } else{cout<<"wrongsentence"<<endl;i++;} else{while(sqstackr.top()!="#"&&sqstackr.top()!="="&&sqstackr.top()!="<"&&sqstackr.top()!=">"){ buffer[2]=sqstacks.top();sqstacks.pop(); buffer[1]=sqstackr.top();sqstackr.pop(); buffer[0]=sqstacks.top();sqstacks.pop(); buffer[0]=e_adress[*j].name+"("+buffer[1]+""+buffer[0]+""+buffer[2]+""+s[*k]+")"+"\n"; sqstacks.push(s[*k]); //sqstackr.push(ch); cout<<*buffer; outfile2<<*buffer; (*k)++;(*j)++;e_adress[*j].value=(*j);} if(sqstackr.top()=="="){ buffer[2]=sqs
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度文化遺址場(chǎng)地保護(hù)與利用合同協(xié)議書(shū)3篇
- 專(zhuān)業(yè)拓展訓(xùn)練合作合同書(shū)2024版版B版
- 2024離婚雙方房產(chǎn)分割及過(guò)戶(hù)操作補(bǔ)充合同版B版
- 2024綜合授信額度合同及分期貸款細(xì)則版B版
- 2025年度廠(chǎng)房租賃及品牌授權(quán)合作協(xié)議3篇
- 2025年度工業(yè)廠(chǎng)房拆除及重建合同范本4篇
- 2025年度商業(yè)地產(chǎn)項(xiàng)目場(chǎng)地借用合同樣本3篇
- 2025年度數(shù)字化工廠(chǎng)搬遷工程合同范本4篇
- 油品基礎(chǔ)知識(shí)培訓(xùn)課件
- 2024版室內(nèi)粉刷工作班組勞動(dòng)協(xié)議樣本版B版
- GB/T 20840.8-2007互感器第8部分:電子式電流互感器
- GB/T 14864-2013實(shí)心聚乙烯絕緣柔軟射頻電纜
- 品牌策劃與推廣-項(xiàng)目5-品牌推廣課件
- 信息學(xué)奧賽-計(jì)算機(jī)基礎(chǔ)知識(shí)(完整版)資料
- 發(fā)煙硫酸(CAS:8014-95-7)理化性質(zhì)及危險(xiǎn)特性表
- 數(shù)字信號(hào)處理(課件)
- 公路自然災(zāi)害防治對(duì)策課件
- 火災(zāi)報(bào)警應(yīng)急處置程序流程圖
- 耳鳴中醫(yī)臨床路徑
- 安徽身份證號(hào)碼前6位
- 分子生物學(xué)在動(dòng)物遺傳育種方面的應(yīng)用
評(píng)論
0/150
提交評(píng)論