版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2016級《編譯原理課程設(shè)計》總結(jié)報告(組)_2019_年_5_月_25_日姓名性別班級學(xué)號所占比例個人成績男04%男04%男04%任務(wù)分工:(請用小四號宋體填寫)編譯系統(tǒng)的總體分析與設(shè)計-具體功能的設(shè)計與實現(xiàn)-對應(yīng)的測試與驗證過程-系統(tǒng)界面的設(shè)計與美工-成績評定:詞法分析自底向上語法分析中間代碼生成自頂向下語法分析語義分析目標代碼生成團隊成績教師簽章備注填寫說明:1、 請將首頁紅色部分信息填全,其中:班級為2位數(shù)字,保留首位的0;學(xué)號為8位數(shù)字,軟件學(xué)院以54開頭;所占比例為百分數(shù),精確到個位數(shù),且所有人的所占比例之和為100%;不足3人的分組請保留后面的多余空行,請勿修改該表的結(jié)構(gòu)。2、 請根據(jù)實際情況填寫任務(wù)分工部分,主要任務(wù)包括:編譯系統(tǒng)的總體分析與設(shè)計,4個具體功能的設(shè)計與實現(xiàn),對應(yīng)的測試與驗證過程(報告正文需要列出若干組具體測試樣例與對應(yīng)結(jié)果),系統(tǒng)界面的設(shè)計與美工,以及輔助工具、視圖和文件等。3、 成績評定部分由指導(dǎo)教師填寫,請勿填寫和修改。
報告正文(請用小四號宋體填寫,自行組織章節(jié)和段落)目錄TOC\o"1-5"\h\z\o"CurrentDocument"第一部分實驗成果統(tǒng)計表 1第二部分實驗簡介 2\o"CurrentDocument"第三部分詞法分析 3\o"CurrentDocument"第四部分語法分析 6LL⑴語法分析 7LR語法分析 10第五部分程序測試 22第一部分實驗成果統(tǒng)計表見首頁第二部分實驗簡介實驗?zāi)康姆纸M(每組最多3人)完成對SNL語言的以下兩個程序:詞法分析程序,語法分析程序(方法不限)。察并鍛煉學(xué)生的團隊協(xié)作能力,代碼編寫能力,加深同學(xué)對編譯原理中SNL編譯系統(tǒng)的理解,幫助同學(xué)理解整個編譯原理的機制實驗內(nèi)容本實驗中實現(xiàn)了SNL編譯系統(tǒng)中的詞法分析、語法分析。其中語法分析包括LL(1)分析方法和LR分析方法詞法分析,以源程序為輸入,生成單詞的內(nèi)部表示TOKEN序列。語法分析,以TOKEN序列為輸入進行語法分析,并生成整個源程序的語法分析樹。在SNL編譯程序中,采用了兩種語法分析方法實現(xiàn):LL(1)和LR,前者為自頂向下的,后者為自底向上的。兩種語法分析的結(jié)果是一樣的。實驗步驟編譯系統(tǒng)的總體分析(算法分析,數(shù)據(jù)結(jié)構(gòu)設(shè)計,優(yōu)化)一代碼實現(xiàn),分工進行詞法分析,語法分析部分一代碼測試一結(jié)果反饋,修正一系統(tǒng)界面優(yōu)化設(shè)計詞鍛諂葩忻泵毎LRo詞鍛諂葩忻泵毎LRoEji分析第三部分詞法分析源程序一般表現(xiàn)為字符串(機器語言稱其為ASCII碼)序列的形式,而編譯程序的翻譯工作應(yīng)該在單詞一級上進行,這與自然語言的翻譯理解過程是類似的。因此要進行編譯工作,首先要把源程序的字符序列翻譯成單詞序列。詞法分析是編譯過程的第一階段。它的任務(wù)就是對輸入的字符串形式的源程序按順序進行掃描,根據(jù)源程序的詞法規(guī)則識別具有獨立意義的單詞(符號),并輸出與其等價的TOKEN序列。TOKEN是單詞(符號)的內(nèi)部表示。完成詞法分析任務(wù)的程序稱為詞法分析程序,通常也稱為詞法分析器或掃描器(seanner)。TOKEN是單詞在編譯程序處理過程中的一種內(nèi)部表示,也是詞法分析程序?qū)Τ绦蛑懈黝悊卧~進行處理之后的輸出形式。對于一種語言而言,如何對它的單詞進行分類,每一類單詞的TOKEN數(shù)據(jù)結(jié)構(gòu)的形式如何,都沒有固定的模式,可以隨編譯程序的不同而不同。通常TOKEN的結(jié)構(gòu)可以分成兩部分,單詞的語法信息和語義信息。其中語法信息記錄的是這個單詞的種類,語義信息則記錄著這個單詞的具體信息。這樣,就能為以后的語法分析和語義分析處理單詞做好準備。SNL語法分析對每類單詞的分析結(jié)果的TOKEN結(jié)構(gòu)為三元組(詞法信息、語義信息以及該單詞在源程序中的行號))實現(xiàn)詞法分析器的注意事項:保留字和標識符名字的區(qū)分復(fù)合單詞的處理向前搜索及回退數(shù)字的轉(zhuǎn)換輸入時邊界的處理注釋的處理詞法分析主要的類有DoToken、Data、Rule、TokenDoToken是最主要的類,它包括identifier標識符列表、INTC常量列表、isldentifier()標識符自動機、isINTC()數(shù)字常量自動機。Data類包括tokenShow顯示token用StringBuffer、tokenShow2測試token用StringBuffer、tokentoken列表、separator分隔符列表等、以及LL(1)分析表,終極符,非終極符等。Rule表示SNL的語法規(guī)則。doToken()函數(shù)是最主要的函數(shù),它每次調(diào)用詞法分析方法時要先重新初始化各列表和緩沖字符串,然后從源程序中一個字符一個字符地進行讀取,并逐個分離出單詞,然后構(gòu)造它們的機內(nèi)表示Token。如果該字符不是分隔符則直接追加到sb中,如果該字符是分隔符,則處理分離出的單詞。如果是數(shù)字常量,則對數(shù)字常量進行處理,如果數(shù)字常量列表INTC中沒有該數(shù)字常量則添加。若程序結(jié)束時分離出的單詞長度不為零,則處理為相應(yīng)的Token(盡管詞法分析已失敗,因為程序未能成功結(jié)束),并重新初始化用以分離單詞的緩沖字符串。當(dāng)整個源程序都分析完成的時候,將TOKEN鏈表中各個TOKEN存入文件中,將來輸出顯示TOKEN時再從中讀取。isIdentifier()函數(shù)被doToken()函數(shù)調(diào)用,如果分隔出的字符串是標識符則在token和tokenShow都要追加。isINTC()函數(shù)被doToken()函數(shù)調(diào)用,對數(shù)字常量列表進行判斷,如果數(shù)字常量列表中沒有該數(shù)字常量則添加。Token()函數(shù)中,i表示類型,1為分隔符,2為保留字,3為標識符,4為數(shù)字主要函數(shù)doToken()的流程圖如下:第四部分語法分析語法分析是編譯程序的第二階段,也是編譯程序的核心部分。語法分析的任務(wù)是,根據(jù)語言的語法規(guī)則,對源程序進行語法檢查,并識別出相應(yīng)的語法成分。按照SNL編譯程序的模型,語法分析的輸入時從詞法分析器輸出的源程序的TOKEN序列形式,然后根據(jù)語言的文法規(guī)則進行分析處理,語法分析的輸出是無語法錯誤的語法成分,表示成語法樹的形式。語言是具有獨立意義的單詞根據(jù)一定的語法規(guī)則組成的句子的集合,句子的結(jié)構(gòu)由語法規(guī)則給出,句子的含義由語義規(guī)則給出,而對語言的語法分析就是對語言的句子結(jié)構(gòu)的分析。歸于程序設(shè)計語言而言,它的句子就是程序,程序設(shè)計語言定義的是符合其語法規(guī)則的程序的集合,因此程序設(shè)計語言的語法分析的關(guān)鍵是識別程序(句子)的語法結(jié)構(gòu)。完成語法分析任務(wù)的程序成為語法分析程序,也稱為語法分析器或簡稱分析器。編譯器的語法分析采用自頂向下的語法分析LL(1)和自底向上的語法分析。LL(1)語法分析LL(1)語法分析方法是一種自頂向下的語法分析方法,它是LL(k)分析方法的特例,其中k表示向前看k個符號的意思。LL(1)分析程序工作過程首先初始化,即把開始符壓入棧中,以后的每步分析必是下面的四種情況之一:(1) 分析棧的棧頂元素是終極符,則看其是否與輸入流的頭符相匹配,如果匹配成功,則去掉棧頂元素并讀入下一個單詞;若匹配不成功,則報錯。(2) 棧頂是非終極符,則用棧頂和輸入流的當(dāng)前單詞去查當(dāng)前矩陣,如果查得的值是產(chǎn)生式編號,則把對應(yīng)的產(chǎn)生式右部逆序壓入棧中;如果查得的值為錯誤信息,則報錯。(3) 棧已空,輸入流不空,這時輸入流報錯。(4) 若棧已空,輸入流也空,則語法分析成功。SNL語法程序的實現(xiàn)采用手工操作構(gòu)造LL(1)分析表。LL(1)分析表用一個二維矩陣表示,其中每個非終極符對應(yīng)一行,每個終極符對應(yīng)一列,一個非終極符和一個終極符可以確定矩陣中的一個元素。SNL的LL(1)語法分析程序共用到四個棧,分別稱為:符號棧、語法樹棧、操
作符棧和操作數(shù)棧。LL(1)語法分析的主要函數(shù)有:doGrammar()、Grammar。、findRulelndex()、getVariables()、getStartVariable()、computeFirstSets()、computeFollowSet()、getRuledByLeftVariable()、getTerminals()、getFirstSets()、getFallowSets()等等doGrammar()函數(shù)是最主要的函數(shù)。它利用LL(1)分析表和符號棧進行語法分析,并處理終極符不匹配和文件提前結(jié)束錯誤。函數(shù)處理完成后,得到整個語法樹。Grammar。函數(shù)主要進行Rule格式轉(zhuǎn)換。 #輸人的“屆n序列XIX2X3XIX2X3XI-LL{1}驅(qū)動程序?qū)⑻枟W缘紫蛏险Z法分析LR(0)分析方法實現(xiàn)過程結(jié)構(gòu)如下LR(0)因SMiB■嗣&&LLU屜分卷 kj=nunH*1,whier<jo>?如KaHthsnt=X4ps.c^parsioc丿separator3xiDnamfr-ip<separator=p4;IHTC.^=1sapautor:■怨?如135reMr/?lWdM?i6如冃p5iDrcme-ielsetiO35separator:tt35-fi?par3t&ri;K=?e*l35iDAame=rixncnS;35.separator;-t=l*135INTCV-I=1ongh35seoaratorlenot>eon36reservedWadxrteraadinumf36-fiflpar3t&ri;(=T36IDAdme=3wMer?)num*1}cto3^.separator;JroatW).35sapautor:a-i:3*iDnsme-iB8epar3tor二enOAti3TIDnamesiq(HLm>:3T-separator?-l:=1:B7INTC.vai=13$ies<r/c<lWocd’enWvmtDOX悴心《vcdWeedanagseoaralor—end:鮒i林咖■何裟分析LL應(yīng)迭分if
?■,級酸■嗣親&w】)ifc矽折器?■,級酸■嗣親&w】)ifc矽折器*rn^I?nuFiflC~K=nunn*1;lc-1;Md@K勺如f如]訕r*nt=a?時甘=1eteetsOnK=K*1end^ti.I:=H1
仙如Ienobeonrca^numyi:=1:road(j);a-j:I:=k1enoMiq(num):t=1:*ntoUXt-i*1mWend紳了莊83?BO. (砸了鬲83.86、加、9絳生痔J:ID"用了菊9)、87、85、W饒生偌X;tIHTC樓丸了咖.昭生曲)"用T鬲37?8保土或式;5毎3旳苗口砸了鬲58?64、處承主翩:witnI侵用?那3?恥、9仁92水土戰(zhàn)卬ID樓丸TH23?87,8*砒:)細T環(huán)g主如:,.第37竹苗口砸了鬲58.66紀t腸式:ID綽7竟舁、69>93術(shù)生如;:=侵用?那3?恥、9仁92水土戰(zhàn)卬ID樓丸TH23?87,85slOt^JKlt!?"用〒長33?86、90f主如;IHTC擁3旳苗口砸了鬲87.84、5唏注翩:5亦樓丸了丼畑主険e[■LRParser I°凹LR(O) ▼AugmentedGrammafFirstSetsFollowSetsCanonialCollectionGoToTableActionTableSUrt當(dāng)前扶恣為59珈入A豈前扶恣為25歸約OtherFectar當(dāng)幣伏態(tài)為買歸約二"比當(dāng)前M戀為56級入豈HJ試姦為92i日約srerrmrx當(dāng)前伙東為X歸約EXF當(dāng)怕扶態(tài).為129歸約OtherTcrr當(dāng)前伏態(tài)為94歸約Exp去前伏恣為131歸?\:Assignn*,-ntRest當(dāng)前伏恣為M歸約AssCell當(dāng)幣伏態(tài)為刀歸約S亞當(dāng)前M戀為26級入出用試姦為59舊約szirzere當(dāng)前伏畜為61歸約SEIA3匕當(dāng)怕伏態(tài).為102歸約StrMorc當(dāng)怕扶態(tài)為61歸約StmList當(dāng)前序恣為122移入“d心當(dāng)前扶恣為162歸^LocpStm當(dāng)前伏態(tài)為29歸約SA當(dāng)前M戀為26級入出用試姦為59舊約szirzere當(dāng)前伏畜為61歸約SEIA3匕當(dāng)怕伏態(tài).為102歸約StrMorc當(dāng)怕伏態(tài).為61歸約StmList當(dāng)丙M恣為102歸約StrMore當(dāng)前扶恣為61歸約Stunlist當(dāng)前伏咨為102歸約SzrMoxe當(dāng)前M態(tài)為£1歸約SlilLLsl出用試恣為22歸約5zrMCre當(dāng)前伏畜為61歸約SEIA3匕當(dāng)怕伏態(tài).為102歸約StrMorc當(dāng)怕扶態(tài)為61歸約StmList當(dāng)前伏恣為27珈入亡nd吉前伏恣為62歸約PrcgrairBDdy當(dāng)旃伏態(tài)為X場入.當(dāng)前M態(tài)為20歸約PxcQXatt.豈麗試志為1語法分祈成內(nèi)!Accecu1V*「£ML科fflS^ALLJ:曲商將一比亠■'*Tiiiei-:flumao 二j=num4+1第H昭HRt-1"任用TSSsa;G2.巧承主爾:^iiewNlek<j?>帶用亍麗衍、陽j趴91h DfaX*1|<aJH校用T算璽kW-.翦、鮭、蜩生慶螢」<rwnt=#|*fflTS33.HD.ESKMffiit!(時叭11:律用亍鬲3旅師、91-Q弊生席云;IDap?-1|:±i■ft用了幣斂B7>ft5,10哮生床巾+eteitaDHB-.9呻生陽怛INTCft-.;;;;SBT.:MYr■.-!::k:=M帶用亍麗鞋、的社生.應(yīng)云圍end^ti.I:=K1autn語口gndwh律用亍鬲讀h54>"系注如;¥WllB3bEgrHB-.91、92^±ffirf!IDr?AdCnum^任用T;SM.時、B啤主爾:)l:=1;帶用亍押轄注!£需■wtiihWEjtf■廿dornaUflka-J:律用亍鬲闕1BBfrt.fijf:;IDl:=U1縛了酈韓徐怕5注幅1-en<!whHB-.91、92^±ffirf!IDqlnuiri);任用T5S3■乳時、眄、101^生底武:*t=1;帶用亍麗3旅冊、g嫦生如;INTCrthite-i-^lnunr-ljdoiwnlii[j]ausn語口t-l+1-endLJtasflH.::'"-:;'nE-.P:!(3)LR(0)語法分析:叵;LRParatr .u回Augment-EdGrammarFirat右?UFdbw&rtsCanonical匚口1上心比00 6dToTabicActionJable合lart肖前妝蕊泊關(guān)歸SEMP當(dāng)前我態(tài)前燈0'B^OtiiexRelE當(dāng)前狀壺為肝C^RelEKp肖前妝蕊泊沾?Adc-當(dāng)荷狀壺対酸?X[肖前:擾蕊帥越SAID肖前狀態(tài)罰51移入當(dāng)荷狀態(tài)対自fi^aiiMcre肖前妝蕊泊歹歸friable當(dāng)前址態(tài)前吧G^lFactar當(dāng)前狀壺為昴?X肖前妝蕊泊2占歸*5Drli--rractdt當(dāng)前就態(tài)対覺歸旳二巴乂當(dāng)荷狀壺対審?X肖前:擾蕊帥盟fii^DtHsUezm肖前狀態(tài)対呉歸豹Exp當(dāng)荷狀態(tài)対111移>4肖前妝蕊泊1"歸^OEjtputStni當(dāng)前我態(tài)前拄fi^Stni當(dāng)前狀壺為阿?X?肖前妝蕊泊閃移人工口當(dāng)前狀態(tài)対如爭入當(dāng)荷狀壺対已fiS^raEiMare肖前:擾蕊帥創(chuàng)SA:-當(dāng)前狀態(tài)罰切3移扎ID當(dāng)荷狀態(tài)対h??X肖前妝蕊泊口當(dāng)前址態(tài)為皆掃溝7匸5口4當(dāng)前我壺対51CS^Faccoi肖前妝蕊泊彩移入當(dāng)前■戀対E5.3^1C±hsiIactoi當(dāng)荷狀壺対盹fi^Term肖前:擾蕊帥空移入十肖前就態(tài)対鮎歸豹心0口當(dāng)荷狀態(tài)対弱?XllfTC第釣訂出現(xiàn)未龍識別的?d(4)LALR(1)語法分析■LRP$rsa I,二,回.L^LR(1:AugmentedGrammarFirstSetsFail口田Sets CanonkflC-allectionGoTaTableActionTable-Stiart當(dāng)fir伙恣対時3勺“!當(dāng)背杭態(tài)為130歸^OttiezRe1EHD:<;'*99J?L|7-lZxp當(dāng)WFSXoa當(dāng)f-L:>X-+Jl&Xwe1t:b-^>:~-二BA(-^>:~-匕鼠5=riI舷為,■■Va=D:七"53'JrlVarilJzzs=H:■':.:■+37」friable當(dāng)苜杭蠱虜51掃SlFEDWT當(dāng)苗狀熬為53"巨忒P〔対.十FtXhutrf2=:二疋VA當(dāng)酋杭態(tài)為虻歸的GLhaTg=h:■':.:■+34 」?L|ZXD當(dāng)前狀血拘二1SA)當(dāng)苗秋態(tài)為141歸的CiurputEGm-!.^.忖:0臺前杭蕊為茁SA;當(dāng)ST伙戀為idVAI1當(dāng)宦協(xié)態(tài)為別祚人_HJ:::?*S31J5*TVai_>Jor.當(dāng)Ngg9X;=■Fi-/-/IO:區(qū)心-^>:~-UBA當(dāng)苗狀蕊為旳歸的伽E?Z?=ri:*.;"97'IrlVai-izli=「;:*.;"丄Jr'lFaDtox_H^
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 虛擬拍攝與綠幕技術(shù)-洞察分析
- 線粒體遺傳與疾病診斷-洞察分析
- 鄉(xiāng)村治理與綠色發(fā)展-洞察分析
- 膝關(guān)節(jié)韌帶損傷力學(xué)特性研究-洞察分析
- 醫(yī)院調(diào)崗位申請書(6篇)
- 辦公室環(huán)境的實驗室安全與標準實施策略
- 創(chuàng)新設(shè)計思維在廣告行業(yè)的作用
- 化學(xué)實驗操作的安全隱患及應(yīng)對措施
- 辦公環(huán)境下的孕婦如何進行合理飲食搭配
- 企業(yè)內(nèi)部創(chuàng)新與創(chuàng)意產(chǎn)業(yè)結(jié)構(gòu)的優(yōu)化
- 2024-2025學(xué)年人教版道法八年級上冊 第一學(xué)期期末測試卷01
- 期末試卷(試題)-2024-2025學(xué)年四年級上冊數(shù)學(xué)滬教版
- 基于深度教學(xué)構(gòu)建高品質(zhì)課堂
- 2、5、3的倍數(shù)(教案)-2023-2024學(xué)年五年級下冊數(shù)學(xué)人教版
- 第4課《古代詩歌四首》作業(yè)設(shè)計- 2024-2025學(xué)年統(tǒng)編版語文七年級上冊
- 趣味知識問答100道
- 光儲充一體化充電站項目設(shè)計方案
- 光伏貸款合同
- Unit 7 Happy Birthday!教學(xué)設(shè)計2024年秋人教版新教材七年級英語上冊
- 催化材料智慧樹知到期末考試答案章節(jié)答案2024年南開大學(xué)
- 高空蜘蛛人施工專項施工方案
評論
0/150
提交評論