![吉林大學《編譯原理課程設計》滿分實驗報告_第1頁](http://file4.renrendoc.com/view/75031e9c313d9129f633a45a859e91e2/75031e9c313d9129f633a45a859e91e21.gif)
![吉林大學《編譯原理課程設計》滿分實驗報告_第2頁](http://file4.renrendoc.com/view/75031e9c313d9129f633a45a859e91e2/75031e9c313d9129f633a45a859e91e22.gif)
![吉林大學《編譯原理課程設計》滿分實驗報告_第3頁](http://file4.renrendoc.com/view/75031e9c313d9129f633a45a859e91e2/75031e9c313d9129f633a45a859e91e23.gif)
![吉林大學《編譯原理課程設計》滿分實驗報告_第4頁](http://file4.renrendoc.com/view/75031e9c313d9129f633a45a859e91e2/75031e9c313d9129f633a45a859e91e24.gif)
![吉林大學《編譯原理課程設計》滿分實驗報告_第5頁](http://file4.renrendoc.com/view/75031e9c313d9129f633a45a859e91e2/75031e9c313d9129f633a45a859e91e25.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2016級《編譯原理課程設計》總結報告(組)_2019_年_5_月_25_日姓名性別班級學號所占比例個人成績男04%男04%男04%任務分工:(請用小四號宋體填寫)編譯系統(tǒng)的總體分析與設計-具體功能的設計與實現-對應的測試與驗證過程-系統(tǒng)界面的設計與美工-成績評定:詞法分析自底向上語法分析中間代碼生成自頂向下語法分析語義分析目標代碼生成團隊成績教師簽章備注填寫說明:1、 請將首頁紅色部分信息填全,其中:班級為2位數字,保留首位的0;學號為8位數字,軟件學院以54開頭;所占比例為百分數,精確到個位數,且所有人的所占比例之和為100%;不足3人的分組請保留后面的多余空行,請勿修改該表的結構。2、 請根據實際情況填寫任務分工部分,主要任務包括:編譯系統(tǒng)的總體分析與設計,4個具體功能的設計與實現,對應的測試與驗證過程(報告正文需要列出若干組具體測試樣例與對應結果),系統(tǒng)界面的設計與美工,以及輔助工具、視圖和文件等。3、 成績評定部分由指導教師填寫,請勿填寫和修改。
報告正文(請用小四號宋體填寫,自行組織章節(jié)和段落)目錄TOC\o"1-5"\h\z\o"CurrentDocument"第一部分實驗成果統(tǒng)計表 1第二部分實驗簡介 2\o"CurrentDocument"第三部分詞法分析 3\o"CurrentDocument"第四部分語法分析 6LL⑴語法分析 7LR語法分析 10第五部分程序測試 22第一部分實驗成果統(tǒng)計表見首頁第二部分實驗簡介實驗目的分組(每組最多3人)完成對SNL語言的以下兩個程序:詞法分析程序,語法分析程序(方法不限)。察并鍛煉學生的團隊協作能力,代碼編寫能力,加深同學對編譯原理中SNL編譯系統(tǒng)的理解,幫助同學理解整個編譯原理的機制實驗內容本實驗中實現了SNL編譯系統(tǒng)中的詞法分析、語法分析。其中語法分析包括LL(1)分析方法和LR分析方法詞法分析,以源程序為輸入,生成單詞的內部表示TOKEN序列。語法分析,以TOKEN序列為輸入進行語法分析,并生成整個源程序的語法分析樹。在SNL編譯程序中,采用了兩種語法分析方法實現:LL(1)和LR,前者為自頂向下的,后者為自底向上的。兩種語法分析的結果是一樣的。實驗步驟編譯系統(tǒng)的總體分析(算法分析,數據結構設計,優(yōu)化)一代碼實現,分工進行詞法分析,語法分析部分一代碼測試一結果反饋,修正一系統(tǒng)界面優(yōu)化設計詞鍛諂葩忻泵毎LRo詞鍛諂葩忻泵毎LRoEji分析第三部分詞法分析源程序一般表現為字符串(機器語言稱其為ASCII碼)序列的形式,而編譯程序的翻譯工作應該在單詞一級上進行,這與自然語言的翻譯理解過程是類似的。因此要進行編譯工作,首先要把源程序的字符序列翻譯成單詞序列。詞法分析是編譯過程的第一階段。它的任務就是對輸入的字符串形式的源程序按順序進行掃描,根據源程序的詞法規(guī)則識別具有獨立意義的單詞(符號),并輸出與其等價的TOKEN序列。TOKEN是單詞(符號)的內部表示。完成詞法分析任務的程序稱為詞法分析程序,通常也稱為詞法分析器或掃描器(seanner)。TOKEN是單詞在編譯程序處理過程中的一種內部表示,也是詞法分析程序對程序中各類單詞進行處理之后的輸出形式。對于一種語言而言,如何對它的單詞進行分類,每一類單詞的TOKEN數據結構的形式如何,都沒有固定的模式,可以隨編譯程序的不同而不同。通常TOKEN的結構可以分成兩部分,單詞的語法信息和語義信息。其中語法信息記錄的是這個單詞的種類,語義信息則記錄著這個單詞的具體信息。這樣,就能為以后的語法分析和語義分析處理單詞做好準備。SNL語法分析對每類單詞的分析結果的TOKEN結構為三元組(詞法信息、語義信息以及該單詞在源程序中的行號))實現詞法分析器的注意事項:保留字和標識符名字的區(qū)分復合單詞的處理向前搜索及回退數字的轉換輸入時邊界的處理注釋的處理詞法分析主要的類有DoToken、Data、Rule、TokenDoToken是最主要的類,它包括identifier標識符列表、INTC常量列表、isldentifier()標識符自動機、isINTC()數字常量自動機。Data類包括tokenShow顯示token用StringBuffer、tokenShow2測試token用StringBuffer、tokentoken列表、separator分隔符列表等、以及LL(1)分析表,終極符,非終極符等。Rule表示SNL的語法規(guī)則。doToken()函數是最主要的函數,它每次調用詞法分析方法時要先重新初始化各列表和緩沖字符串,然后從源程序中一個字符一個字符地進行讀取,并逐個分離出單詞,然后構造它們的機內表示Token。如果該字符不是分隔符則直接追加到sb中,如果該字符是分隔符,則處理分離出的單詞。如果是數字常量,則對數字常量進行處理,如果數字常量列表INTC中沒有該數字常量則添加。若程序結束時分離出的單詞長度不為零,則處理為相應的Token(盡管詞法分析已失敗,因為程序未能成功結束),并重新初始化用以分離單詞的緩沖字符串。當整個源程序都分析完成的時候,將TOKEN鏈表中各個TOKEN存入文件中,將來輸出顯示TOKEN時再從中讀取。isIdentifier()函數被doToken()函數調用,如果分隔出的字符串是標識符則在token和tokenShow都要追加。isINTC()函數被doToken()函數調用,對數字常量列表進行判斷,如果數字常量列表中沒有該數字常量則添加。Token()函數中,i表示類型,1為分隔符,2為保留字,3為標識符,4為數字主要函數doToken()的流程圖如下:第四部分語法分析語法分析是編譯程序的第二階段,也是編譯程序的核心部分。語法分析的任務是,根據語言的語法規(guī)則,對源程序進行語法檢查,并識別出相應的語法成分。按照SNL編譯程序的模型,語法分析的輸入時從詞法分析器輸出的源程序的TOKEN序列形式,然后根據語言的文法規(guī)則進行分析處理,語法分析的輸出是無語法錯誤的語法成分,表示成語法樹的形式。語言是具有獨立意義的單詞根據一定的語法規(guī)則組成的句子的集合,句子的結構由語法規(guī)則給出,句子的含義由語義規(guī)則給出,而對語言的語法分析就是對語言的句子結構的分析。歸于程序設計語言而言,它的句子就是程序,程序設計語言定義的是符合其語法規(guī)則的程序的集合,因此程序設計語言的語法分析的關鍵是識別程序(句子)的語法結構。完成語法分析任務的程序成為語法分析程序,也稱為語法分析器或簡稱分析器。編譯器的語法分析采用自頂向下的語法分析LL(1)和自底向上的語法分析。LL(1)語法分析LL(1)語法分析方法是一種自頂向下的語法分析方法,它是LL(k)分析方法的特例,其中k表示向前看k個符號的意思。LL(1)分析程序工作過程首先初始化,即把開始符壓入棧中,以后的每步分析必是下面的四種情況之一:(1) 分析棧的棧頂元素是終極符,則看其是否與輸入流的頭符相匹配,如果匹配成功,則去掉棧頂元素并讀入下一個單詞;若匹配不成功,則報錯。(2) 棧頂是非終極符,則用棧頂和輸入流的當前單詞去查當前矩陣,如果查得的值是產生式編號,則把對應的產生式右部逆序壓入棧中;如果查得的值為錯誤信息,則報錯。(3) 棧已空,輸入流不空,這時輸入流報錯。(4) 若棧已空,輸入流也空,則語法分析成功。SNL語法程序的實現采用手工操作構造LL(1)分析表。LL(1)分析表用一個二維矩陣表示,其中每個非終極符對應一行,每個終極符對應一列,一個非終極符和一個終極符可以確定矩陣中的一個元素。SNL的LL(1)語法分析程序共用到四個棧,分別稱為:符號棧、語法樹棧、操
作符棧和操作數棧。LL(1)語法分析的主要函數有:doGrammar()、Grammar。、findRulelndex()、getVariables()、getStartVariable()、computeFirstSets()、computeFollowSet()、getRuledByLeftVariable()、getTerminals()、getFirstSets()、getFallowSets()等等doGrammar()函數是最主要的函數。它利用LL(1)分析表和符號棧進行語法分析,并處理終極符不匹配和文件提前結束錯誤。函數處理完成后,得到整個語法樹。Grammar。函數主要進行Rule格式轉換。 #輸人的“屆n序列XIX2X3XIX2X3XI-LL{1}驅動程序將號棧自底向上語法分析LR(0)分析方法實現過程結構如下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應迭分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術生如;:=侵用?那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當前扶恣為59珈入A豈前扶恣為25歸約OtherFectar當幣伏態(tài)為買歸約二"比當前M戀為56級入豈HJ試姦為92i日約srerrmrx當前伙東為X歸約EXF當怕扶態(tài).為129歸約OtherTcrr當前伏態(tài)為94歸約Exp去前伏恣為131歸?\:Assignn*,-ntRest當前伏恣為M歸約AssCell當幣伏態(tài)為刀歸約S亞當前M戀為26級入出用試姦為59舊約szirzere當前伏畜為61歸約SEIA3匕當怕伏態(tài).為102歸約StrMorc當怕扶態(tài)為61歸約StmList當前序恣為122移入“d心當前扶恣為162歸^LocpStm當前伏態(tài)為29歸約SA當前M戀為26級入出用試姦為59舊約szirzere當前伏畜為61歸約SEIA3匕當怕伏態(tài).為102歸約StrMorc當怕伏態(tài).為61歸約StmList當丙M恣為102歸約StrMore當前扶恣為61歸約Stunlist當前伏咨為102歸約SzrMoxe當前M態(tài)為£1歸約SlilLLsl出用試恣為22歸約5zrMCre當前伏畜為61歸約SEIA3匕當怕伏態(tài).為102歸約StrMorc當怕扶態(tài)為61歸約StmList當前伏恣為27珈入亡nd吉前伏恣為62歸約PrcgrairBDdy當旃伏態(tài)為X場入.當前M態(tài)為20歸約PxcQXatt.豈麗試志為1語法分祈成內!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帶用亍麗鞋、的社生.應云圍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肖前妝蕊泊關歸SEMP當前我態(tài)前燈0'B^OtiiexRelE當前狀壺為肝C^RelEKp肖前妝蕊泊沾?Adc-當荷狀壺対酸?X[肖前:擾蕊帥越SAID肖前狀態(tài)罰51移入當荷狀態(tài)対自fi^aiiMcre肖前妝蕊泊歹歸friable當前址態(tài)前吧G^lFactar當前狀壺為昴?X肖前妝蕊泊2占歸*5Drli--rractdt當前就態(tài)対覺歸旳二巴乂當荷狀壺対審?X肖前:擾蕊帥盟fii^DtHsUezm肖前狀態(tài)対呉歸豹Exp當荷狀態(tài)対111移>4肖前妝蕊泊1"歸^OEjtputStni當前我態(tài)前拄fi^Stni當前狀壺為阿?X?肖前妝蕊泊閃移人工口當前狀態(tài)対如爭入當荷狀壺対已fiS^raEiMare肖前:擾蕊帥創(chuàng)SA:-當前狀態(tài)罰切3移扎ID當荷狀態(tài)対h??X肖前妝蕊泊口當前址態(tài)為皆掃溝7匸5口4當前我壺対51CS^Faccoi肖前妝蕊泊彩移入當前■戀対E5.3^1C±hsiIactoi當荷狀壺対盹fi^Term肖前:擾蕊帥空移入十肖前就態(tài)対鮎歸豹心0口當荷狀態(tài)対弱?XllfTC第釣訂出現未龍識別的?d(4)LALR(1)語法分析■LRP$rsa I,二,回.L^LR(1:AugmentedGrammarFirstSetsFail口田Sets CanonkflC-allectionGoTaTableActionTable-Stiart當fir伙恣対時3勺“!當背杭態(tài)為130歸^OttiezRe1EHD:<;'*99J?L|7-lZxp當WFSXoa當f-L:>X-+Jl&Xwe1t:b-^>:~-二BA(-^>:~-匕鼠5=riI舷為,■■Va=D:七"53'JrlVarilJzzs=H:■':.:■+37」friable當苜杭蠱虜51掃SlFEDWT當苗狀熬為53"巨忒P〔対.十FtXhutrf2=:二疋VA當酋杭態(tài)為虻歸的GLhaTg=h:■':.:■+34 」?L|ZXD當前狀血拘二1SA)當苗秋態(tài)為141歸的CiurputEGm-!.^.忖:0臺前杭蕊為茁SA;當ST伙戀為idVAI1當宦協態(tài)為別祚人_HJ:::?*S31J5*TVai_>Jor.當Ngg9X;=■Fi-/-/IO:區(qū)心-^>:~-UBA當苗狀蕊為旳歸的伽E?Z?=ri:*.;"97'IrlVai-izli=「;:*.;"丄Jr'lFaDtox_H^
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校園環(huán)境對幼兒自信心與自尊心的影響
- 2025年度家具行業(yè)專利技術居間轉讓合同
- 生態(tài)建筑設計在商業(yè)地產的前景展望
- 深入探討美顏相機的技術創(chuàng)新與應用
- 2025年度電子信息產品檢測與加工技術服務合同
- 現代辦公環(huán)境的健康與舒適性研究
- 電商平臺的跨境服務策略與文化差異應對
- 2025年度婚介行業(yè)獨家代理協議書模板
- 用戶體驗在產品設計結構中的重要性
- 現代家居的智能照明設計與生活品質提升
- 2024年度體育賽事贊助合同:運動員代言與贊助權益2篇
- 智研咨詢發(fā)布:2024年中國新疫苗行業(yè)市場現狀、發(fā)展概況、未來前景分析報告
- 2025屆西藏林芝一中高三第二次診斷性檢測英語試卷含解析
- 藥企銷售總經理競聘
- 開封市第一屆職業(yè)技能大賽健康照護項目技術文件(國賽)
- 公路電子收費系統(tǒng)安裝合同范本
- 醫(yī)院培訓課件:《傷口評估與測量》
- 2021年全國高考物理真題試卷及解析(全國已卷)
- 期末試卷(試題)-2024-2025學年四年級上冊數學滬教版
- 《第一單元口語交際:即興發(fā)言》教案-2023-2024學年六年級下冊語文統(tǒng)編版
- 綜合實踐項目 制作水族箱飼養(yǎng)淡水魚 教學設計-2024-2025學年魯科版生物六年級上冊
評論
0/150
提交評論