



版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄1系統(tǒng)描述 .21.1目的 .21.2設(shè)計(jì)內(nèi)容: .21.3翻譯過(guò)程 .21.4初始條件: .31.5開(kāi)發(fā)平臺(tái) .32文法及屬性文法的描述 .33語(yǔ)法分析表設(shè)計(jì) .43.1 LR 分析概述 .43.2 LR(0) 分析表 .53.3LR 語(yǔ)法分析過(guò)程的設(shè)計(jì)思想及算法 .743.4翻譯方法 .8中間代碼形式的描述及中間代碼序列的結(jié)構(gòu)設(shè)計(jì).85簡(jiǎn)要的分析與概要設(shè)計(jì) .96詳細(xì)的算法描述 .96.1main 函數(shù) .106.2詞法分析 .1076.3語(yǔ)法分析 .12測(cè)試方法和測(cè)試結(jié)果 .137.1測(cè)試過(guò)程 .137.2測(cè)試結(jié)論 .148研制報(bào)告 .148.1研制過(guò)程 .148.2本設(shè)計(jì)的評(píng)價(jià) .
2、1598.3個(gè)人心得體會(huì) .15參考文獻(xiàn) .16本科生課程設(shè)計(jì)成績(jī)?cè)u(píng)定表 .17FOR循環(huán)語(yǔ)句的翻譯程序設(shè)計(jì) LR 方法 、輸出四元式1 系統(tǒng)描述1.1 目的通過(guò)設(shè)計(jì)、編制、調(diào)試一個(gè)FOR 循環(huán)語(yǔ)句的語(yǔ)法及語(yǔ)義分析程序,加深對(duì)語(yǔ)法及語(yǔ)義分析原理的理解, 實(shí)現(xiàn)詞法分析程序?qū)卧~序列的詞法檢查和分析,并且實(shí)現(xiàn)對(duì)單詞序列的語(yǔ)法分析、語(yǔ)義分析以及中間代碼生成。1.2 設(shè)計(jì)內(nèi)容:本設(shè)計(jì)按照要求設(shè)計(jì)出for 語(yǔ)句的簡(jiǎn)單文法, 并使用 LR 分析法對(duì)用戶輸入的程序進(jìn)行分析和翻譯。對(duì)下列正確的程序輸入:for(i=0;i<10;i+)m=m+i;結(jié)果程序要對(duì)該輸入進(jìn)行詞法分析,然后利用LR 分析法對(duì)詞法
3、分析后得到的單詞序列進(jìn)行語(yǔ)法分析,經(jīng)過(guò)語(yǔ)法制導(dǎo)翻譯顯示出等價(jià)的四元式表示的中間代碼。對(duì)于錯(cuò)誤的程序輸入,如:for(i=0;i<10)m=m+i;結(jié)果程序要指出程序出錯(cuò)。1.3 翻譯過(guò)程詞法分析:詞法分析是編制一個(gè)讀單詞的過(guò)程,從輸入的源程序中,識(shí)別出各個(gè)具有獨(dú)立意義的單詞,即基本保留字、標(biāo)識(shí)符、常數(shù)、運(yùn)算符、分隔符五大類。并依次輸出各個(gè)單詞的內(nèi)部編碼及單詞符號(hào)自身值。程序語(yǔ)言的單詞符號(hào)一般分為五種:關(guān)鍵字(保留字/基本字) if 、while 、begin ;標(biāo)識(shí)符:常量名、變量名 ;常數(shù): 34、56.78、true、a、;運(yùn)算符: +、-、* 、/、and、or、.、;界限符:,
4、; ()/* 。語(yǔ)法分析:語(yǔ)法分析是編譯程序的核心部分 ,其主要任務(wù)是確定語(yǔ)法結(jié)構(gòu) , 檢查語(yǔ)法錯(cuò)誤,報(bào)告錯(cuò)誤的性質(zhì)和位置,并進(jìn)行適當(dāng)?shù)募m錯(cuò)工作。此次設(shè)計(jì)中語(yǔ)法分析中主要通過(guò) LR 分析表對(duì)語(yǔ)法分析處理過(guò)程進(jìn)行控制,使四元式翻譯的工作有條不紊的進(jìn)行,同時(shí)識(shí)別語(yǔ)法分析中的語(yǔ)法錯(cuò)誤。中間代碼生成:為了使編譯程序有較高的目標(biāo)程序質(zhì)量,或要求從編譯程序邏輯結(jié)構(gòu)上把與機(jī)器無(wú)關(guān)和與機(jī)器有關(guān)的工作明顯的分開(kāi)來(lái)時(shí),許多編譯程序都采用了某種復(fù)雜性介于源程序語(yǔ)言和機(jī)器語(yǔ)言之間的中間語(yǔ)言。常用的幾種中間語(yǔ)言有: 逆波蘭式、四元式、三元式、樹(shù)表示。本課程設(shè)計(jì)主要實(shí)現(xiàn)四元式的生成。1.4 初始條件:理論:掌握一種計(jì)算機(jī)
5、高級(jí)語(yǔ)言的使用。學(xué)完編譯課程,掌握詞法分析程序設(shè)計(jì)方法, LR 語(yǔ)法分析方法,以及語(yǔ)法制導(dǎo)的翻譯和中間代碼生成技術(shù)。實(shí)踐工具和環(huán)境:計(jì)算機(jī)實(shí)驗(yàn)室提供計(jì)算機(jī)及軟件環(huán)境。1. 5 開(kāi)發(fā)平臺(tái)所使用的系統(tǒng): Windows XP程序開(kāi)發(fā)工具: Visual C+ 6.0程序設(shè)計(jì)語(yǔ)言:C+ 。2 文法及屬性文法的描述按照設(shè)計(jì)要求,設(shè)計(jì)出的For 語(yǔ)句的符合簡(jiǎn)單優(yōu)先定義的文法規(guī)則及相關(guān)的語(yǔ)義規(guī)則如下:產(chǎn)生式語(yǔ)義規(guī)則S f ( E ; F ; G ) H ;gotoS f ( E ; X ; Y ) H ;gotoEid= cid.value=c.value;Fid<cIf id.value>=
6、c.valuegoto over ;Gid + +id.value=id.value+1 ;Xid> cIf id.value<=c.valuegoto over ;Yid id.value=id.value-1;H123123id= id+ idid .value= id .value + id.valueHid 1 = id 2 + cid 1.value= id 2 .value + c .valueHid 1 = c+ id 2id 1 .value= c.value + id2 .value其中產(chǎn)生式規(guī)則中的符號(hào):c 表示常數(shù) const, f 表示關(guān)鍵字 for, i
7、表示一般標(biāo)識(shí)符id3 語(yǔ)法分析表設(shè)計(jì)3.1 LR 分析概述一個(gè) LR 分析器由 3 個(gè)部分組成:總控程序,也可以稱為驅(qū)動(dòng)程序。對(duì)所有的LR 分析器總控程序都是相同的。分析表或分析函數(shù)。不同的文法分析表將不同,同一個(gè)文法采用的LR 分析器不同時(shí),分析表也不同,分析表又可分為動(dòng)作(ACTION )表和狀態(tài)轉(zhuǎn)換( GOTO)表兩個(gè)部分,他們都可用二維數(shù)組表示。分析棧,包括文法符號(hào)棧和相應(yīng)的狀態(tài)棧。它們均是先進(jìn)后出棧。分析器的動(dòng)作由棧頂狀態(tài)和相應(yīng)的狀態(tài)棧所決定( LR (0)分析器不需向前查看輸入符號(hào))。LR 分析器工作過(guò)程示意圖如下圖所示:輸入串 XXX .#SnXn.SP.總控程序輸出.S1X1S
8、0X0ACTIONGOTO 表表其中 SP 為棧指針 ,Si 為狀態(tài)棧, Xi 為文法符號(hào)棧。 狀態(tài)轉(zhuǎn)換表內(nèi)容按關(guān)系 GOTOSi,X=Sj 確定,該關(guān)系式是指當(dāng)棧頂狀態(tài)為 Si 遇到當(dāng)前文法符號(hào)為 X 時(shí)應(yīng)轉(zhuǎn)向狀態(tài) Sj。 X 為終結(jié)符或非終結(jié)符。ACTIONSi,a 規(guī)定了棧頂狀態(tài)為Si 時(shí)遇到輸入符號(hào)a 應(yīng)執(zhí)行的動(dòng)作。動(dòng)作有 4 種可能:移進(jìn):檔 Sj=GOTOSi,a 成立,則把 Sj 移入到狀態(tài)棧,把 a 移入到文法符號(hào)棧。其中 i,j 表示狀態(tài)號(hào)。歸約:檔在棧頂形成句柄為 時(shí),則用 歸約為相應(yīng)的非終結(jié)符 A ,即當(dāng)文法中有 A 的產(chǎn)生式,而 的長(zhǎng)度為 r(即 | |=r),則從狀態(tài)
9、棧和文法符號(hào)棧中自棧頂向下去掉 r 個(gè)符號(hào),即棧指針 SP 減去 r。并把 A 一如文法符號(hào)棧內(nèi),再把滿足 Sj=GOTOSi,A 的狀態(tài)移進(jìn)狀態(tài)棧,其中Si 為修改指針后的棧頂狀態(tài)。接受 acc:當(dāng)歸約到文法符號(hào)棧中只剩文法的開(kāi)始符號(hào)S 時(shí),并且輸入符號(hào)串已結(jié)束即當(dāng)前輸入符是 #,則為分析成功。報(bào)錯(cuò):當(dāng)遇到狀態(tài)棧頂為某一狀態(tài)下出現(xiàn)不該遇到的文法符號(hào)時(shí),則報(bào)錯(cuò),說(shuō)明輸入串不是該文法能接受的句子3.2 LR(0) 分析表根據(jù)上述文法構(gòu)造的有窮自動(dòng)機(jī)和根據(jù)有窮自動(dòng)機(jī)構(gòu)造的LR(0)分析表有窮自動(dòng)機(jī):>15c21id10<14c20H0S1F8;12G16)222630;3336c43f
10、idid37+40id422( 3E 4; 6X9id17+23+ 27id;1331=34c38+41id445= 7c11idY18)242832;3539idH19_25_29 LR(0)分析表:ACTIONGOTOf(;)id=c<+>-#SEFGXYH0S211acc2S33S544S65S76S10897S118S129S1310S14S1511R3R3R3R3R3R3R3R3R3R3R3R3R3R312S171613S191814S2015S2116S2217S2318S2419S2520R4R4R4R4R4R4R4R4R4R4R4R4R4R421R6R6R6R6R6
11、R6R6R6R6R6R6R6R6R622S2623S2724S2825S2926S313027R5R5R5R5R5R5R5R5R5R5R5R5R5R528S313229R7R7R7R7R7R7R7R7R7R7R7R7R7R730S3331S3432S3533S3634S37S3835S3936R1R1R1R1R1R1R1R1R1R1R1R1R1R137S4038S4139R2R2R2R2R2R2R2R2R2R2R2R2R2R240S4241S4442R8R8R8R8R8R8R8R8R8R8R8R8R8R843R9R9R9R9R9R9R9R9R9R9R9R9R9R944R10R10R10R10R
12、10R10R10R10R10R10R10R10R10R10其中, S 表示移進(jìn)且下一狀態(tài)為S 的下標(biāo); R 表示歸約,歸約所用的產(chǎn)生式為 R 的下標(biāo)相對(duì)應(yīng)的產(chǎn)生式;空白表示沒(méi)有相應(yīng)的關(guān)系即出錯(cuò)。3.3 LR語(yǔ)法分析過(guò)程的設(shè)計(jì)思想及算法3.4翻譯方法設(shè)計(jì)中,使用語(yǔ)法制導(dǎo)翻譯方法。所謂語(yǔ)法制導(dǎo)的翻譯方法是指:按照給定的語(yǔ)法,對(duì)單詞符號(hào)串進(jìn)行語(yǔ)法分析,并構(gòu)造出語(yǔ)法分析樹(shù),語(yǔ)法分析過(guò)程中根據(jù)需要構(gòu)造屬性依賴圖,然后遍歷語(yǔ)法樹(shù)并在語(yǔ)法樹(shù)的各個(gè)節(jié)點(diǎn)處,按語(yǔ)義規(guī)則進(jìn)行計(jì)算,并生成中間代碼。所謂屬性依賴圖是一個(gè)有向圖,用于描述分析樹(shù)中的屬性和屬性間的相互依賴關(guān)系。4 中間代碼形式的描述及中間代碼序列的結(jié)構(gòu)設(shè)計(jì)
13、本次設(shè)計(jì),使用的中間代碼為四元式(即三地址碼) 。四元式的四個(gè)組成成分:算符 op,第一和第二運(yùn)算對(duì)象ARG1 和 ARG2,及運(yùn)算結(jié)果RESULT。例如對(duì)語(yǔ)句:for(i=0;i<10;i+)emp=temp+i;等價(jià)的四元式表示如下:(1)(=,0,, i)(2)if i>=10 goto over(3)( +,temp, i , t)(4)( =,t, temp)(5)( +,i, 1, i)(6)goto (2)(7)over設(shè)計(jì)并生成的結(jié)果程序,最終需要將用戶輸入的程序經(jīng)過(guò)詞法分析和語(yǔ)法分析,生成如上所述的四元式表示的中間代碼形式。5 簡(jiǎn)要的分析與概要設(shè)計(jì)程序由詞法分析和
14、語(yǔ)法分析兩部分構(gòu)成:詞法分析程序, 以用戶輸入的字符串為輸入,判斷輸入是否包含非法字符,若字符完全合法,分析結(jié)果是,將標(biāo)識(shí)符、常量、其他合法單詞的類別和值保存在輸入流中,做為語(yǔ)法分析的輸入。為了有效地編寫(xiě)詞法分析程序,首先應(yīng)構(gòu)造出程序流程圖,然后根據(jù)流程圖編寫(xiě)程序。語(yǔ)法分析,以詞法分析結(jié)果作為輸入,驗(yàn)證,輸入流中各種符號(hào)是否符合語(yǔ)法規(guī)則。若不符合,顯示出錯(cuò)信息,否則,在分析過(guò)后顯示與輸入程序等價(jià)的中間代碼。同樣需要構(gòu)造語(yǔ)法分析的程序流程圖。6 詳細(xì)的算法描述程序包括三個(gè)文件:詞法分析.cpp 和 for 循環(huán)翻譯 .cpp。其中 for 循環(huán)語(yǔ)句翻譯 .cpp 中含有 main 函數(shù),作為程序
15、的入口,在main 函數(shù)中接受用戶輸入的程序流,并保存在一個(gè)string 對(duì)象中,然后調(diào)用詞法分析.cpp 中的voidgetSym(string &s,int &i) 對(duì)程序流進(jìn)行詞法分析分離出單詞符號(hào),再調(diào)用語(yǔ)法分析 .cpp 文件中的 void gramCheck()函數(shù)對(duì)單詞符號(hào)輸入流進(jìn)行語(yǔ)法分析和語(yǔ)義分析,并生成四元式形式的中間代碼。函數(shù) void getSym(string &s,int &i) 調(diào)用 getchar 函數(shù)獲得輸入流中的符號(hào)進(jìn)行分析,如得到的是標(biāo)識(shí)符,則調(diào)用 outsym 函數(shù)分別普通標(biāo)識(shí)符和關(guān)鍵字。函數(shù) gramCheck()調(diào)用函
16、數(shù) priCmp 比較符號(hào)棧和輸入流中的兩個(gè)符號(hào)的優(yōu)先級(jí)關(guān)系。程序中的函數(shù)調(diào)用關(guān)系如,圖1:圖 1 for 循環(huán)語(yǔ)句翻譯程序函數(shù)調(diào)用關(guān)系圖Maingetlinegetsymactiongotopoppushgetcharoutsym6.1main函數(shù)Main() 函數(shù)主要代碼和相關(guān)解釋如下:int main()Int r;string s;/用于保存輸入程序的字符串cout<<" 輸入for循環(huán)語(yǔ)句:"<<endl;/ 提示用戶輸入程序getline(cin,s);/接受用戶輸入并保存在s 中g(shù)etSym(s,i);r=nodeSize;for(i=
17、0;i<r;i+)/ 調(diào)用詞法分析程序sti=nodei.type;/將此法分析的結(jié)果保存到數(shù)組中語(yǔ)法分析;中間代碼生成;6.2 詞法分析在文件“詞法分析.cpp”中編寫(xiě)詞法分析程序,文件中主要包含一個(gè)結(jié)構(gòu)體 struct symNode,一個(gè)結(jié)構(gòu)體數(shù)組 symNode node100,取字符函數(shù) void getChar(string &s,int &i)ch=si;i+; ,取單詞函數(shù) void getSym(string &s,int &i) ,程序中數(shù)據(jù)結(jié)構(gòu)和各函數(shù)具體功能如下:(1)定義結(jié)構(gòu)體:struct symNodeint type;str
18、ing sValue;int eValue;此結(jié)構(gòu)體用來(lái)保存詞法分析后,各種單詞的信息。Type 表示單詞的類別,各符號(hào)對(duì)應(yīng)的類別值見(jiàn)表1,如果單詞是常量, eValue 則保存該常量的值,如果單詞是標(biāo)識(shí)符, sValue 則保存該標(biāo)識(shí)符的值。(2)數(shù)組 symNode node100,用來(lái)保存單詞輸入流作為語(yǔ)法分析的輸入流;int position=0; position 保存數(shù)組 node 中將要輸入的單詞的位置,初值為 0。(3)函數(shù) void getSym(string &s,int &i); 用來(lái)作詞法分析, s 存儲(chǔ)用戶的輸入程序, i 用來(lái)保存當(dāng)前應(yīng)該取字符的位置
19、。(4)函數(shù)void getChar(string &s,int &i)ch=si;i+;用來(lái)取字符串 s 中第 i 個(gè)字符。(5)函數(shù) void outSym(string s); 區(qū)分 s 是關(guān)鍵字還是普通標(biāo)識(shí)符。詞法分析程序的具體算法描述: getChar()函數(shù)從串 s 里面取字符,直到遇到非空字符,如果已到達(dá)串尾,詞法分析結(jié)束。 getSym()判斷所取的字符是字母開(kāi)頭,還是以數(shù)字開(kāi)頭,還是其他合法字符;如果以字母開(kāi)頭,則開(kāi)始保存為標(biāo)識(shí)符,繼續(xù)取字符直到遇到非字母非數(shù)字字符;如果以數(shù)字開(kāi)頭則保存為整數(shù)常量,繼續(xù)取字符直到遇到非數(shù)字字符;其他字符則保存為相應(yīng)類別。所有的
20、單詞分離后保存到數(shù)組symNode node100中。詞法分析程序所輸出的單詞符號(hào)常常采用以下二元式表示:(單詞種別,單詞自身的值)。單詞的種別是語(yǔ)法分析需要的信息,而單詞自身的值則是編譯其他階段所需要的信息。詞法分析的流程圖,如圖2:圖 2 詞法分析流程圖開(kāi)始輸入串末尾NYYgetcharCh=空YN結(jié)束Ch=string sCh=保存 s 的類型Ys=s+chA-Z orNA-Z和值getchar0-9NYCh=Yint temp保存 temp 的類Temp=temp*10+Ch=0-9Nint(ch)-480-9型和值Ngetchar其他合法Y保存其他符號(hào)字符?的類型和值N出錯(cuò)6.3語(yǔ)法
21、分析在文件“ for 循環(huán)翻譯 .cpp”中編寫(xiě)語(yǔ)法分析程序。程序中各函數(shù)具體功能解釋如下:int Initstack(stack &s):初始化棧;int push(stack &s,char e) :將要入棧的元素壓入棧中; char pop(stack &s,char *e) :將要出棧的元素彈出棧;int action(int m,int n,char a):對(duì)照 LR 分析表,判斷輸入的字符需要移進(jìn)還是歸約;int go(int m,int n,char a) :對(duì)照 LR 分析表,判斷需要?dú)w約的字符串所對(duì)應(yīng)的產(chǎn)生式;在 main 函數(shù)中利用switch()
22、語(yǔ)句來(lái)實(shí)現(xiàn)歸約。7 測(cè)試方法和測(cè)試結(jié)果7.1 測(cè)試過(guò)程針對(duì)所設(shè)計(jì)的關(guān)于for 循環(huán)語(yǔ)句的翻譯程序,分別用正確的程序和有錯(cuò)誤的程序進(jìn)行測(cè)試,測(cè)試出結(jié)果程序的可用性和健壯性。測(cè)試中分別使用了兩個(gè)合法程序和兩個(gè)非法程序,對(duì)結(jié)果程序進(jìn)行測(cè)試,具體的測(cè)試程序、測(cè)試過(guò)程和測(cè)試結(jié)果如下: for 循環(huán)語(yǔ)句語(yǔ)法分析過(guò)程:合法程序 1:for(i=0;i<10;i+) m=m+i;合法程序 2:for(j=1000;j >100;j -)t=t+j;非法程序:for(i=0;i<20) m=m+i;7.2測(cè)試結(jié)論經(jīng)過(guò)測(cè)試,可以得知,結(jié)果程序能達(dá)到預(yù)計(jì)的要求:對(duì)合法程序進(jìn)行詞法分析和簡(jiǎn)單優(yōu)先的語(yǔ)
23、法分析,并生成四元式表示的中間代碼;對(duì)于錯(cuò)誤的程序輸入,結(jié)果程序能夠判斷其出錯(cuò)。存在問(wèn)題:對(duì)于錯(cuò)誤的程序輸入,結(jié)果程序不能給出錯(cuò)誤的位置。對(duì)于含有非法輸入符號(hào)的程序,結(jié)果程序沒(méi)有很好地處理,程序健壯性不強(qiáng)。8 研制報(bào)告8.1 研制過(guò)程在課程設(shè)計(jì)期間,通過(guò)閱讀大量相關(guān)書(shū)籍,利用網(wǎng)絡(luò)查找各種資料,根據(jù)相關(guān)知識(shí),寫(xiě)出了符合簡(jiǎn)單優(yōu)先語(yǔ)法規(guī)則的關(guān)于for 語(yǔ)句的屬性文法。獲得語(yǔ)法規(guī)則的屬性文法后,對(duì)程序進(jìn)行了概要設(shè)計(jì),將程序大致分為詞法分析和語(yǔ)法分析兩個(gè)模塊,并且設(shè)計(jì)出文法對(duì)應(yīng)的符號(hào)優(yōu)先關(guān)系表。詞法分析負(fù)責(zé)對(duì)輸入串進(jìn)行單詞識(shí)別,并保存單詞各信息,作為語(yǔ)法分析和翻譯的輸入。語(yǔ)法分析負(fù)責(zé)對(duì)輸入流中的單詞進(jìn)行
24、分析,檢驗(yàn)是否符合所寫(xiě)的語(yǔ)法規(guī)則,并對(duì)其進(jìn)行初步翻譯。概要設(shè)計(jì)后,對(duì)兩個(gè)模塊分別進(jìn)行了詳細(xì)設(shè)計(jì),并利用詞法分析流程圖和語(yǔ)法分析流程圖,設(shè)計(jì)程序的大致流程,并具體到各函數(shù)的設(shè)計(jì)。通過(guò)對(duì)程序進(jìn)行了詳細(xì)設(shè)計(jì),得到了程序大致流程, 并根據(jù)流程進(jìn)行編碼,編碼過(guò)程中,出現(xiàn)了一些語(yǔ)法和語(yǔ)義上錯(cuò)誤,通過(guò)調(diào)試和修改,使得程序成功運(yùn)行。設(shè)計(jì)測(cè)試方法和測(cè)試用程序,并對(duì)程序進(jìn)行了測(cè)試。8.2 本設(shè)計(jì)的評(píng)價(jià)此次設(shè)計(jì)對(duì)for 語(yǔ)句進(jìn)行了全面詞法分析和語(yǔ)法分析,并得到了用于分析for 語(yǔ)句的結(jié)果程序。結(jié)果程序能對(duì)用戶輸入的程序代碼進(jìn)行分析,判斷是否存在詞法錯(cuò)誤和語(yǔ)法錯(cuò)誤,如果出現(xiàn)錯(cuò)誤,向用戶給出提示,如果沒(méi)有錯(cuò)誤,則生成于
25、輸入程序等價(jià)的中間代碼,方便后續(xù)編譯過(guò)程工作。但是結(jié)果程序也存在很多不足:對(duì)于非法的輸入,無(wú)法給出錯(cuò)誤的位置。對(duì)非法輸入考慮不全面,對(duì)某些非法輸入無(wú)法給出錯(cuò)誤信息,另外屬性文法不完善,程序中的使用的某些判斷方法,只適合于本次設(shè)計(jì)使用的文法,實(shí)用性不強(qiáng)。8.3 個(gè)人心得體會(huì)本課程設(shè)計(jì)是for循環(huán)語(yǔ)句的翻譯程序,包括詞法分析部分、語(yǔ)法分析部分和中間代碼生成部分。詞法分析階段是編譯過(guò)程的第一個(gè)階段,是編譯的基礎(chǔ)。這個(gè)階段的任務(wù)是從左到右一個(gè)字符一個(gè)字符地讀入源程序,即對(duì)構(gòu)成源程序的字符流進(jìn)行掃描然后根據(jù)構(gòu)詞規(guī)則識(shí)別單詞( 也稱單詞符號(hào)或符號(hào) )。 語(yǔ)法分析部分采用 LR 分析方法進(jìn)行語(yǔ)法分析,判斷給出的符號(hào)串是否為該文法識(shí)別的句子。中間代碼生成器部分主要實(shí)現(xiàn)四元式的生成,將用中綴式表示的算術(shù)表達(dá)式轉(zhuǎn)換為用四元式表示的算術(shù)表達(dá)式。在整個(gè)編譯器設(shè)計(jì)過(guò)程中,遇到了很多意想不到的困難,其主要原因是對(duì)各個(gè)部分要實(shí)現(xiàn)的功能考慮不夠周全,典型的如在詞法分析的設(shè)計(jì)中,當(dāng)前待分析字符串為“ a>+” , 當(dāng)前字符為 >,此時(shí),分析器到底是將其分析為大于關(guān)系運(yùn)算符還是大于等
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025客房租賃承包合同范本
- 2025財(cái)產(chǎn)轉(zhuǎn)讓委托合同
- 2025年小提琴勞動(dòng)合同
- 2025年的技術(shù)委托培訓(xùn)合同范本
- 2025年泡絲劑項(xiàng)目建議書(shū)
- 2025音響設(shè)備租賃合同書(shū)
- 2025年車庫(kù)坡道用漆合作協(xié)議書(shū)
- 2025年超大型特厚板軋機(jī)項(xiàng)目建議書(shū)
- 2025年床頭末端裝置項(xiàng)目建議書(shū)
- 2025年水利管理及技術(shù)咨詢服務(wù)項(xiàng)目合作計(jì)劃書(shū)
- 傷殘鑒定 委托書(shū)
- 班組長(zhǎng)、員工安全生產(chǎn)責(zé)任制考核記錄表
- 老年康體指導(dǎo)職業(yè)教育79課件
- 北京市建設(shè)工程施工現(xiàn)場(chǎng)安全生產(chǎn)標(biāo)準(zhǔn)化管理圖集(2019版)
- 2025年江蘇省江寧城建集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 大學(xué)生就業(yè)與創(chuàng)業(yè)指導(dǎo)知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋遼寧廣告職業(yè)學(xué)院
- 高鈦渣及其產(chǎn)品深加工項(xiàng)目的可行性研究報(bào)告
- 2024年中國(guó)黃油行業(yè)供需態(tài)勢(shì)及進(jìn)出口狀況分析
- 三下26《和拖延的壞朋友說(shuō)再見(jiàn)》心理健康教學(xué)設(shè)計(jì)
- 2025屆山東省濰坊市高考英語(yǔ)二模試卷含解析
- 2023無(wú)人機(jī)系統(tǒng)測(cè)評(píng)規(guī)范
評(píng)論
0/150
提交評(píng)論