![句法分析實驗報告_第1頁](http://file4.renrendoc.com/view/452f4a23aaa3e6e5e2f4b8e80e248520/452f4a23aaa3e6e5e2f4b8e80e2485201.gif)
![句法分析實驗報告_第2頁](http://file4.renrendoc.com/view/452f4a23aaa3e6e5e2f4b8e80e248520/452f4a23aaa3e6e5e2f4b8e80e2485202.gif)
![句法分析實驗報告_第3頁](http://file4.renrendoc.com/view/452f4a23aaa3e6e5e2f4b8e80e248520/452f4a23aaa3e6e5e2f4b8e80e2485203.gif)
![句法分析實驗報告_第4頁](http://file4.renrendoc.com/view/452f4a23aaa3e6e5e2f4b8e80e248520/452f4a23aaa3e6e5e2f4b8e80e2485204.gif)
![句法分析實驗報告_第5頁](http://file4.renrendoc.com/view/452f4a23aaa3e6e5e2f4b8e80e248520/452f4a23aaa3e6e5e2f4b8e80e2485205.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
編譯原理課程實驗報告實驗2:句法分析姓名云天嬌 院系 軟件學院 學號1113710311任課教師陳鄞指導教師陳鄞實驗地點軟件學院三樓機房實驗時間2013.11.6實驗課表現(xiàn)出勤、表現(xiàn)得分實驗報告得分實驗總分操作結果得分一、需求分析得分要求:采用至少一種語法分析技術(LL(1)、SLR(1)、LR(1)或LALR(1))對類高級語言中的基本語句(至少包括函數(shù)定義、變量說明、賦值、循環(huán)、分支等語句)進行語法分析。闡述句法分析系統(tǒng)所要完成的各個功能,并給出如下語言成分的文法描述?函數(shù)定義(或過程定義)?變量說明?賦值?表達式?循環(huán)?分支句法分析功能簡述:我的程序主要是對第一次實驗詞法分析之后得到的 list進行句法分析,首先有一個textArea來接收輸入的程序,然后會通過句法分析,在預測分析表中體現(xiàn)出單步執(zhí)行輸出棧中元素,以及每步所用的產(chǎn)生式。程序的輔助功能還有重置程序以及導入文件的功能。算法分析:主要的算法思想是,通過產(chǎn)生式求出每個終結符與非終結符的first集,然后在求出非終結符的follow集,再通過follow集和first集求出每個產(chǎn)生式的select集。然后再分析所接收到的字符,通過接收的字符,去select集中找到匹配的產(chǎn)生式,然后通過一系列對棧的操作,寫出預測分析表。文法產(chǎn)生式:<3>—<functions><functions>-*<functionXfunctions><funccions>-*^<funcciQn>—<cype><id><(xparan.ecezsx)><iunctlon_fcody><funccion>-t<VOID><ici><(xparamecersx)><function__fcody><rype>-<INT><rype>^<CHAR><rype>-<FLOAT><匕yp旦LONG〉<type>-*<DOUBLE><paraur.ecers>-*<cype><id><pararrLecer><parair.ecers>-*5<paraiTiecer r><cype><id><paraniecex><parairieter>-*C<function_body>-*<;><function_body>-*<block><blocte>—<{><define_st:Tftts><stmts><}><define_stmts>-*<define_stmtXdefine_stmts><define_scmcs>-*5<define_scmc>-*<cype><id><lnic><vaxs><;><inic>-t<=xexpression><vars>-*<z><id><init><vars><vars>—5<scmc>-*<expression><;>scmc>—<jump_scmc><3cmc>-t<iceracion__scmc><3rmc>^<3election__scmc><3tmc>-*<block_scmc>jump_3tmt>--<C0NTINUE><;>jvimp_3tmt>—<BREAK><:>Cjvimpstmt>-*<RETURN><iisnullexpressionX;>
得分三、詳細設計及實現(xiàn)得分要求:對如下工作進行展開描述核心數(shù)據(jù)結構的設計主要功能函數(shù)說明程序核心部分的程序流程圖?核心數(shù)據(jù)結構設計核心數(shù)據(jù)結構是把實驗一詞法分析的結果存到一個list里,然后對自己所寫的產(chǎn)生式中的每一個符號求first集,follow集和select集,然后編寫一個函數(shù)來讀入你所輸入的符號,根據(jù)select集找到相應的產(chǎn)生式,然后逐步替換,最后將分析的結果輸出來。?主要功能函數(shù)說明publicvoidanalysis():將所有的產(chǎn)生式添加到Ulist里publicvoidgetFirst():求每一個符號的first集publicvoidgetFollow():publicvoidgetSelect():求每一個產(chǎn)生式的select集publicSymbolfindSymbol(Stringstr):判斷符號表中是否有這個符號publicList<Production>AnalysisTable(List<String>t):對棧的操作,如何判斷所需產(chǎn)生式publicbooleanisReadNull(Stringstr):判斷符號是否可多步推導為空
符號是是否號X為終結符號為空,式左部的first集中有右部符號的符號可以多步推導志位為true,證明所有first集都是程序核心部分的程序流程圖符號是是否號X為終結符號為空,式左部的first集中有右部符號的符號可以多步推導志位為true,證明所有first集都是程序核心部分的程序流程圖First集算法流程圖:是遍歷所有符號First(X)=X遍歷所有產(chǎn)生式遍歷產(chǎn)生式右部將右部符號的first集并入到左部非終結符的first集中,設定一個辨別更新的標志位,此結束遍歷右部符號first集是是明符st全了遍歷所有產(chǎn)生式讀取符號讀取符號為終結符號之后的符號多步推導號的follow集中有它之后符號的firsts.志位為true,說明所有follow都找Follow是是明符st全了遍歷所有產(chǎn)生式讀取符號讀取符號為終結符號之后的符號多步推導號的follow集中有它之后符號的firsts.志位為true,說明所有follow都找Follow集算法流程圖:是是設置標志位代表更新n?^H將first集加入到該符號的follow集中,圭市'至后7fcII 集將#加入到<S>的follow集中遍歷之后符號的first集遍歷該符號之后的符號遍歷產(chǎn)生式右部結束否是否否每個產(chǎn)生式右部的第一個符號是否為該產(chǎn)生式的select集中有符號的first集判斷該符號可多步推導為遍歷右部每個符號的first集遍歷該產(chǎn)生式右部的符號是Select否是否否每個產(chǎn)生式右部的第一個符號是否為該產(chǎn)生式的select集中有符號的first集判斷該符號可多步推導為遍歷右部每個符號的first集遍歷該產(chǎn)生式右部的符號是Select集算法流程圖:是開始將該產(chǎn)生式左部的follow集加入到該產(chǎn)生式的select集中將該符號的first集加入到該產(chǎn)生式的select集中將左部的follow集并入到該產(chǎn)生式的select集中遍歷所有產(chǎn)生式返回所需產(chǎn)生式流程圖:開始說明全部遍歷完,棧中沒
有符號了,結束找到select集中包含所輸入終結符的產(chǎn)生式將該產(chǎn)生式的右
部壓入棧四、實驗結果及分析 I得分要求:對實驗結果進行描述和分析,基本內(nèi)容包括:(1) 輸出該語法分析器的語法分析表(2) 針對一測試程序輸出其語法分析結果;(3) 輸出針對此測試程序對應的語法錯誤報告;(4) 對實驗結果進行分析。注:其中的測試樣例需先用已編寫的詞法分析程序進行處理。?主界面?分析結果源程序:intmain(inta,intbX源程序:intmain(inta,intbX分析推導過程所需產(chǎn)生式▲-?<functions><s>-><functions>-?<function><functions><functions>-><function><functions>-><type><id><(><parameters><)><function_bo(iy><functions><function>-><type><id><(><parameters><)><function_body>->v|NT><id><(><parameters><)><function_bo(iy><functions><type>-><INT>-?<INT><id><(><type><id><parametep><)><fundion_bo(iy><functions><parameters>-><type><id><parametep?-?<INT><id><(><INT><id><parameteR<)><function_body><functions><type>-><INT>-?<INT><id><(><INT><id><><type><id><parameteR<)><function_bo(iy><functions><parametep?-?<><type><id><parametep?-?<INT><id><(><INT><id><><INT><id><parametep><)><function_body><functions><type>-><INT>-?<INT><id><(><INT><id><,><INT><id><)><function_body><functions>vparameter>-?£-?<INT><id><(><INT><id><,><INT><id><)><block><functions><function_bo(iy>-><block>-?<INT><id><(><INT><id><,><INT><id><)><(><define_stmts><stmts><}><functions><block>-?<{><define_stmts><stmts><)>-?<INT><id><(><INT><id><,><INT><id><)><(><stmts><}><functions><define_stmts>-?<INT><id><(><INT><id><,><INT><id><)><(><stmt><stmts><}><functions><stmts>-><stmt><stmts>-?<INT><id><(><INT><id><,><INT><id><)><(><expression><;><stmts><}><functions><stmt>-><expression><;>-?<INT><id><(><INT><id><,><INT><id><)><(><value><operation><;><stmts><}><functions>〈expression〉-><value><operation>-?<INT><id><(><INT><id><,><INT><id><)><(><item><items><operation><;><stmts><}><functions><value>-><item><items>-?v|NT>vjd>v(>v|NT>vjd>v,>v|NT>vjd>v)>v{><factor><factors><items><operation><;><stmts><}><functio...<item>-xfactoR<factors>-?<INT><id><(><INT><id><,><INT><id><)><(><id><call_function><factors><items><operation><;><stmts>...<factoR-><id><call_function>-?<INT><id><(><INT><id><,><INT><id><)><(><id><factors><items><operation><;><stmts><}><functions><call_function>--?<INT><id><(><INT><id><,><INT><id><)><(><id><items><operation><;><stmts><}><functions><factors>--?<INT><id><(><INT><id><,><INT><id><)><(><id><operation><;><stmts><}><functions>〈items〉-?<INT><id><(><INT><id><,><INT><id><)><(><id><equal_op><value><;><stmts><}><functions><operation>-><equal_op><value>-?<INT><id><(><INT><id><,><INT><id><)><(><id><=><value><;><stmts><}><functions><equal_op>-?<=>-?<INT><id><(><INT><id><,><INT><id><)><(><id><=><item><items><;><stmts><}><functions><value>-><item><items>-?<INT><id><(><INT><id><,><INT><id><)><(><id><=><factoR<factors><items><;><stmts><}><functions><item>-xfactoR<factors>?測試程序intmain(inta,intb)(a=0;b=5;if(a<b)(returna;}else(returnb;}}?分步結果分析推導過程所需產(chǎn)生式-*<functions><s>^-<functions>-*-<function>〈functions〉<functions>-*-<function>〈functions〉-*<type><id><(>〈parameters〉<)><fundion_body>functions*<unction>-*<type><id><(>〈parameters〉<)><fundion_body>-*<INT><id><(>〈parameters〉<)><function_t>ody><functions><type>fv|NT>-?<1NT><id><(><type><id><parametep*<)><function_body>〈functions〉<parameters>-*-<type><id><parameter>-?<1NT><id><(><INT><id><parameten><)><function_body>〈functions〉<type>-><INT><1NT><id><(><INT><id><><type><id>〈parameter*<)><function_body><functions>〈parameter〉-*<><type><id>〈parameter*-?<INT><id><(><INT><id><,><INT><id><parameter><)><function_body><functions><type>-><INT>-?<1NT><id><(><INT><id><><INT><id><)><function_body><fundions><parameter>->^-*<INT><id><(><INT><id><><INT><id><)><block><functions><function_body>-*<block>-?<INT><id><(><INT><id><,><INT><id><)><(><define_stmts><stmts><}><functions><block>-><(><define_stmts><stmts><}>—v|NT>vid>v(>v|NT>vid>v,x|NT>vid>v)>v{>vstmts><}><functions><define_stmts>—Z-*<INT><id><(><INT><id><><INT><id><)><(><stmt><stmts><}><fundions><stmts>fvstmt><stmts>-?<INT><id><(><INT><id><><INT><id><)><(><expression><;><stmts><}><functions><stmt>-*-<expression><;>-xINTxidxCxINTxidx><INT><id><)><(><value><operation><;><stmts><}>〈functions〉〈expression〉-*<value><operation>-*<INT><id><(><INT><id><><INT><id><)><(><item><items><operation><;><stmts><}><functions><value>-*<item><items>-?v|NTAvid>v(>v|NTAvid>v,Av|NT>vidAv)Av{Avfador><fadors><items><operation><;><stmts><}>〈functions〉<item>-><factor><fadors>—v|NT>vid>v(>v|NT>vid>v,>v|NT>vid>v)>v{xid><call_function><factors><items><operation><;><stmts><}><functions><actor>—vid><call_fundion>-*<INT><id><(><INT><id><><INT><id><)><(><id><factors><items><operation><;><stmts><}><functions>vcaii_function>f(-?<INT><id><(><INT><id><><INT><id><)><(><id><it
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 營銷策劃合同
- 能源行業(yè)新能源技術研發(fā)與應用推廣方案
- 企業(yè)管理咨詢協(xié)議書
- 網(wǎng)絡視頻會議系統(tǒng)安全防護與性能優(yōu)化策略
- 軟件實施工程師聘用合同
- 工廠買賣合同書
- 農(nóng)業(yè)生產(chǎn)技術培訓與教育方案
- 游戲角色設計作業(yè)指導書
- 房屋土地買賣合同書
- 計算機與辦公設備行業(yè)作業(yè)指導書
- 三年級數(shù)學(上)計算題專項練習附答案
- 咯血病人介入術后護理
- 中醫(yī)診療方案腎病科
- 2025年安慶港華燃氣限公司招聘工作人員14人高頻重點提升(共500題)附帶答案詳解
- 2025年供電所所長個人工作總結(2篇)
- 玩具有害物質(zhì)風險評估-洞察分析
- 2025四川廣安發(fā)展建設集團限公司第一批招聘6人高頻重點提升(共500題)附帶答案詳解
- 2024年3月天津第一次高考英語試卷真題答案解析(精校打?。?/a>
- 《(近)零碳園區(qū)評價技術規(guī)范》
- 微信、抖音、快手等社交平臺管理制度
- 保安反恐防暴培訓
評論
0/150
提交評論