UML課程SNL編譯器程序設(shè)計(jì)文檔對畢業(yè)論文有很大的幫助哪兒都下不到自己珍藏的_第1頁
UML課程SNL編譯器程序設(shè)計(jì)文檔對畢業(yè)論文有很大的幫助哪兒都下不到自己珍藏的_第2頁
UML課程SNL編譯器程序設(shè)計(jì)文檔對畢業(yè)論文有很大的幫助哪兒都下不到自己珍藏的_第3頁
UML課程SNL編譯器程序設(shè)計(jì)文檔對畢業(yè)論文有很大的幫助哪兒都下不到自己珍藏的_第4頁
UML課程SNL編譯器程序設(shè)計(jì)文檔對畢業(yè)論文有很大的幫助哪兒都下不到自己珍藏的_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、snl編譯器程序設(shè)計(jì)文檔項(xiàng)日組長:陳亮(軟件學(xué)院06級1291406006)項(xiàng)目組員:湯源(軟件學(xué)院06級1291406)呂浩(軟件學(xué)院06級1291406)李春娟(軟件學(xué)院06級1291406)黨雪迎(軟件學(xué)院06級1291406)開發(fā)日期:2009年5月1日2009年6月21日f l 7 1 ii.3l.l編寫m的.31 *2 .31.3參考資料.3第二章項(xiàng)目概述".42.1工作內(nèi)容".42.2主要參加人員".4)nu*.42.3.1程序".42.3.2文件".42.4驗(yàn)收標(biāo)準(zhǔn) 2.5完成項(xiàng)目最遲期限""5第三章實(shí)施計(jì)劃

2、 53.1接人員 3.2工作任務(wù)的分解、人物分工及進(jìn)度"63.3關(guān)鍵問題"6第四章程序系統(tǒng)的結(jié)構(gòu).74.1用例圖設(shè)計(jì).74.2類圖設(shè)計(jì)""84.3包圖設(shè)計(jì).94.4構(gòu)件聞設(shè)計(jì)".94.5活動(dòng)圖設(shè)計(jì).104.6順序圖設(shè)計(jì).104.7狀態(tài)圖設(shè)計(jì).114.8合作圖設(shè)計(jì).11第五章程序設(shè)計(jì)說明.115.1程序描述.115.2 編.125.3運(yùn)行*環(huán)境.125.4類及函數(shù)說明.12第人章程序測試說明.21第七章程序開發(fā)總結(jié).22第一章引言1.1編寫目的該文檔的閱讀群體是該項(xiàng)目組的全部成員,一方血讓所有成員能理解本程序 的系統(tǒng)結(jié)構(gòu),另一方而明確自己的分工,

3、方便在編程的過程屮合理運(yùn)用。1.2背景項(xiàng)目名稱:snl編譯器項(xiàng)目類型:java小程序任務(wù)提出者:陳亮開發(fā)者:陳亮湯源呂浩李春娟黨雪迎用戶:對snl語言編譯感興趣者項(xiàng)目思路來源:隨著社會(huì)的發(fā)展,編譯器的開發(fā)程序?qū)映霾桓F,如何讓同學(xué)能更好的了解編 譯器的工作過程呢?于是就產(chǎn)生了用java語言編寫一個(gè)snl編譯器,可以讓同學(xué)們更好的理解 編譯這門學(xué)科的內(nèi)容,運(yùn)用所學(xué)知識(shí)了解編譯的過程,使所學(xué)的知識(shí)得到運(yùn)用。1.3參考資料uml及建模北京清華大學(xué)出版社北京交通大學(xué)出版社 郭寧面向?qū)ο蠹夹g(shù)與工具北京電子工業(yè)出版社陳文宇0忠建0忠建編譯程序的設(shè)計(jì)與實(shí)現(xiàn)北京高等教育出版社劉磊等網(wǎng)絡(luò)資源:第二章項(xiàng)目概述2.1

4、工作內(nèi)容任務(wù)名稱具體內(nèi)容需求分析調(diào)研報(bào)告設(shè)計(jì),調(diào)研總結(jié),需求分析文檔書寫而向?qū)ο笤O(shè)計(jì)而向?qū)ο蟮挠美w、類閣等設(shè)計(jì)程序設(shè)計(jì)程序?qū)崿F(xiàn)功能函數(shù)的設(shè)計(jì)程序具體實(shí)現(xiàn)類的實(shí)現(xiàn),功能函數(shù)的實(shí)現(xiàn)程序測試程序整體測試,用戶測試,測試文檔書寫2.2主要參加人員項(xiàng)目組組長:陳亮備注:一直枳任期末大作業(yè)的項(xiàng)目組組長,且具有一定開發(fā)經(jīng)驗(yàn)。項(xiàng)組成員:湯源呂浩李春娟黨雪迎備注:湯源、呂浩:成績優(yōu)異,具省開發(fā)經(jīng)驗(yàn)。李春娟、黨雪迎:參加過面向?qū)ο缶W(wǎng)站漿構(gòu)的培訓(xùn),初步學(xué)structs 架構(gòu)的相關(guān)知識(shí)。2.3產(chǎn)品2.3.1程序程序名稱:snl編譯器 編程語言:java 存儲(chǔ)程序的媒體形式:硬盤存儲(chǔ)2.3.2文件文件夾名:snlja

5、va mycompiler說明:compiler.java 主程序cifa中包禽詞法分析的creattoken.javayufa屮包含語沈分析的recursion.java備注:單擊test.html即可運(yùn)行木程序。2.4驗(yàn)收標(biāo)準(zhǔn)根據(jù)上課教師對丁期末大作業(yè)的耍求,木項(xiàng)0做到了如下幾點(diǎn):1. 面句對象的設(shè)計(jì)思想,實(shí)現(xiàn)了詞法分析的token生成、語法分析的語法樹 生成和錯(cuò)誤的檢測。2. 項(xiàng)目組成員分工明確。2.5完成項(xiàng)目最遲期限本項(xiàng)0的最后完成期限是2009年6只21門第三章實(shí)施計(jì)劃3.1接口人員木項(xiàng)口的接u人員為項(xiàng)口組組長陳亮,其主要工作以職能如下: 負(fù)責(zé)確定項(xiàng)0需求。負(fù)責(zé)與鄭曉娟老師交流,定期

6、匯報(bào)項(xiàng)目的進(jìn)展程度。負(fù)責(zé)與項(xiàng)目組其他成員聯(lián)系,分配任務(wù),協(xié)調(diào)各部門的工作。3.2工作任務(wù)的分解、人物分工及進(jìn)度/>任務(wù)名稱.充成'心求分析rklukiiw.也mriis丨1:也;乂4分析jf慨卜st«小秈t體成61沒iiiiii1111mmmmmmmmmmhtt 體仇 h 心 m. fttfiw afrih 的ftlhhh it觼a; iv(i b曲21. 托功鼸摘l4ttmr 3ud植分析ttih 執(zhí) 1i 揖t«!ftrbi kl炊分祈齣總w什 處 vhhbflu u|ia項(xiàng)目設(shè)計(jì)2w>-5-|2w>-5-2ovimjmljujb m.尨誠淞

7、1坊 afrtb 龍m44jul分析ttmh 法.分析aw執(zhí)1j *場瀾kmjfrifrs ift注分析總權(quán)呼處:j,偷 til jium flu v.iwwlll'jc >仆蝙龍?jiān)?*st« :足嘗ijl認(rèn)分析btuh vm lih論簿hk 次 #'j 4wc 小«成項(xiàng)目變現(xiàn)jno<w>lv1 ii 吹 i«l 執(zhí)ti/b i*庳 ftrih 'ava小相.中呔!覼編ihdtjl分和 m ikb rts i 6hi>j *rjb w汰分析的aw呼 <jw.i nfa4c><. wht分uwjwl

8、j如m.從泌湖丨1扔 m 卜:l« ;ui*uij;j. :>4trtljifcah*t,. ; pi m fkh « b m、辦 tt鼻 i itr: afrfb wt&4>1am<vfr i現(xiàn)灣 ijflfl lmjim l.rfih.i,.:,:»< h;: v;t5助wurth屮jt對曲 ftriti光婷講認(rèn)»析功 n:汽咸次 辦加人b小!till教姆項(xiàng)目測設(shè)2005-12ww>| o執(zhí)1| 小 m.llifl ifrii njat.mij.t tr- i»i ,i jjm !: ik /j *(l

9、zx r i ?i 3,d ha ; <i k 鵝心.以助muib 1*湖令押蜎mt 曲ahk r;i:交付瑣ri2ch)a*22100mn22id交付裎序代碼及文科3.3關(guān)鍵問題影響整個(gè)項(xiàng)成敗的關(guān)鍵問題及對項(xiàng)的影響:面向?qū)ο蟮乃枷胫匦略O(shè)計(jì)程序。 影響:以前對于程序設(shè)計(jì)的思想還都停留在面h'd過程的思想,產(chǎn)生的問題是代碼冗余,安全性欠缺的隱患。于是我們在原來項(xiàng)目的基礎(chǔ)上進(jìn)行重構(gòu),用而 向?qū)ο蟮乃枷胫貙ひ?guī)劃。對于編譯程序的實(shí)現(xiàn)原理還需重新鞏m學(xué)習(xí)。技術(shù)難點(diǎn):接口的設(shè)計(jì)。token的產(chǎn)生。語法樹的生成風(fēng)險(xiǎn):由于程序開發(fā)周期短,程序員木身開發(fā)經(jīng)驗(yàn)尚淺,只能完成貶義詞的詞法 分析和語法分

10、析部分。第四章程序系統(tǒng)的結(jié)構(gòu)4.1用例圖設(shè)計(jì)使用者調(diào)用錯(cuò)誤顯示中間代碼生成4.2類圖設(shè)計(jì)mywindow-text : toxtarea 十 mywindow ()buttonl:button-button:buttonlabel 1:label:text-windowl:mywindow-*indow2:mywindow-window3:mywindow一 not:gridlayout+ init 0:voidcorcpileractionporrormcd (): viodtokentokentypemaxtokbnlenint1 inenointtcmp_name穆stringfonxi

11、interror鬌booleanstree攀stringsorrorstringyufatroetreenoderecursionvoidvoidcrcattokenmaxtokenlen:int-1:intchar_num:int-1 ineno:int-tokennum:int-is:boolean-eof:boolean-error:boolean+ tok:stringcroattoken () gettokcnlist (> getnextchar <) ungetnextchar () isdigit () isalpha () reservcdlx>okup 0

12、 copy ()returntokenlist ():chainnodotypc :char :void :boolean :boolean :string :void :stringchainnodetype-token : tokcntype -nexttoken : chainnodetypeprocattr paramt : stringattrarrayattr procattr expattr -type namearrayatprocattexpattistringtokentypo1 ineshow : intlex:string-sem:stringarrayattrlow

13、叩childtype : string:int :intexpattropvalvarkindtype:string :int :string :string-child:treenodesibling:treenode-1ineno:int-nodekind:string-kind:string-idnum:int-namc:stringattr:attrtreenode十十+十十+十十+arraytype () rectype () recursion () pielddocmore 0 program 0 piogramllead ()dec larepart () typedec (&

14、gt; typcdcclarat ion 0 typedcclist () typedec.uore () typeld ()typename () basetype () structuretypc ) fielddeclist 0 idlist ()idmore 0 vardec 0 vardeclaration 0 vardeclist 0 vardecmoro 0 varldlist () varldmore () procdcc 0 procdeclaration <) procdccmoro () paramlist () paramdeclist 0 parainmore

15、()param ()formlist ()fid.more 0 procdecpart () procbody () piogrambody 0 stmlist 0 stmmore ()stra ()asscall 0 assignment rest () condi tionaistm () loops tm ()inputstm () outputstm () rcturnstm () callslinrest 0 actparainlist <) actparammore <)exp 0simple exp 0 term (> factor ()variable 0 v

16、arimore 0 fieldvar 0 fieldvarmore 0 match () syntaxerror () readnexttoken () novrnodo (> news tint node () nowexpnode 0 writestr () writespaco (> writetab () printtree ()treenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodevoidvoidvoidvoidtreenodevoidvoidtreenodetreenodetreenodetree

17、nodevoidvoidtreenodetreenodetreenodevoidtreenodetreenodetreenodevoidvoidtreenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodetreenodevoidtreenodevoidtreenodevoidvoidtreenodetreenodetreenodevoid

18、voidvoidvoid4.3包圖設(shè)計(jì)imp°rtmycompiler. crcattokencompilerimporti mportmycompiler. recursion4.4構(gòu)件圖設(shè)計(jì)定義token類覽(tokentype. class)總稅序處理(creattoken . java)總處押(creattoken . class)主程fuonpiler. java)主程序(compi ler. class)記義衍針(chitiitnodetype. class)ih結(jié) 的定義(treenode. c 1 hss)id泌w點(diǎn)k他w性(aur. class)iq求數(shù)俎類型的尿性

19、arrayattr. class)o? wj 處妁1 <kecursi<m. java)總構(gòu)/y的處押(recursion, class)kl決農(nóng)達(dá)式的w性(expattr . class)tokenff*列的定義(tokentype. class)窗 口控制(mywindow, clas4.5活動(dòng)圖設(shè)計(jì)按鈕詞法分析語法分析4.6順序圖設(shè)計(jì)sequence!) iagram 1操作者代碼tokentoken口,yufatreeerror語法樹error符號(hào)表error中間代碼error4.7狀態(tài)圖設(shè)計(jì)gettokenlist丄token同法分析講法分析語法樹do / creatto

20、kendo / recursionku errorerror r ,詞法分析結(jié)果久errorexit / error4.8合作圖設(shè)計(jì)向法分window7: recursion1:文件操作者compiler2:詞法分析icroattoken3:語法分析recursion6: token4: error5: error第五章程序設(shè)計(jì)說明5.1程序描述snl編譯器把snl源程序編譯成虛擬目標(biāo)機(jī)上的目標(biāo)程序(現(xiàn)階段從完成y詞 法分析和語法分析階段),然后再巾解釋程序?qū)υ?標(biāo)程序進(jìn)行解釋執(zhí)行,才能 得到最終的運(yùn)行結(jié)果。5.2功能功能結(jié)構(gòu)框圖(藍(lán)色為已完成部分,紅色為未完成部分):snl源程序snl u

21、程序詞法分析程序:詞法分析是編譯過程的第一階段。它的任務(wù)是對輸入的字符串形式的源程序 按順序進(jìn)行掃描,根據(jù)snl語言的語法規(guī)則識(shí)別兵宥獨(dú)立意義的單詞(符號(hào)), 并輸出與其等價(jià)的token序列。語法分析程序:語法分析是編譯程序的第二階段,也是編譯程序的核心部分。它的任務(wù)是, 根據(jù)snl語言的語法規(guī)則,對源程序進(jìn)行語法檢查,并識(shí)別出相應(yīng)的語法成分。 按照snl編譯程序的模型,語法分析的輸入時(shí)從詞法分析器輸出的源程序的 token序列的形式,然后根據(jù)語言的文法規(guī)則進(jìn)行分析處理,輸出無語法錯(cuò)誤 的語法成分,表示成語法樹的形式。5.3運(yùn)行環(huán)境硬件:個(gè)人電腦1臺(tái)。操作系統(tǒng)類型:windows xp os。

22、應(yīng)用軟件:myeclipse, jdkl.6, ie瀏覽器等主要適合中小型java程序開發(fā)的軟件。5.4類及函數(shù)說明一 compiler.java1. compiler 主函數(shù)init()結(jié)構(gòu)布局actionperformed()接收操作事件的接門2. mywindow 窗體類二 creattoken.java1. tokentype 定義 token 矣型2. chainnodetype 定義指針3. creattoken總程序處理函數(shù)名 creattoken(string s)功能構(gòu)造函數(shù)函數(shù)名 gettokenlist功能取得token序列函數(shù)說明函數(shù)從源文件字符申序列屮獲取所有toke

23、n序列,使用確定性冇限內(nèi)動(dòng) 機(jī)dfa,采用直接轉(zhuǎn)向法超前讀字符,對保留字采用查表方式識(shí)別產(chǎn)生詞法錯(cuò)誤時(shí) 候,僅僅略過產(chǎn)生錯(cuò)誤的字符,不加改正函數(shù)名 getnextchar功能取得下一非空字符函數(shù)說明讀取一個(gè)字節(jié)的數(shù)據(jù),到達(dá)文件尾時(shí),eof為true函數(shù)名 ungetnextchar功能字符回退函數(shù)說明回退一個(gè)字節(jié)的數(shù)據(jù)函數(shù)名isdigit功能檢查參數(shù)c是不是數(shù)字函數(shù)名isalpha功能檢查參數(shù)c是不是字母函數(shù)名 reservedlookup功能保留字杳找函數(shù)說明使用線性查找,查看一個(gè)標(biāo)識(shí)符是杏是保留字標(biāo)識(shí)符,如果在保留字表屮 則返冋和應(yīng)單詞,否則返冋單詞id函數(shù)名copy功能將b中的信息拷貝到

24、a.token中。函數(shù)名 returntokenlist功能將token序列輸出,顯示在文件屮。說明用于顯示詞法分析結(jié)果三 recursion.javatreenode語法樹結(jié)點(diǎn)的定義attr id呆語法樹節(jié)點(diǎn)其他屬性arrayattr記錄數(shù)組類型的屬性procattr記錄過程的屬性exp attr記錄表達(dá)式的城性tokentype token序列的定義recursion總程序的處理函數(shù)名program功能總程序的處理函數(shù)產(chǎn)牛式 < program > = programhead declarepart programbody .說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成

25、語法樹節(jié)點(diǎn),語法樹 的根節(jié)點(diǎn)的第一個(gè)了節(jié)點(diǎn)指向程序頭部分programhead,declarapart為 programhead的兄弟節(jié)點(diǎn),程序體部分programbody為declarepart的兄弟節(jié)點(diǎn).函數(shù)頭部分函數(shù)名 programhead功能程序頭的處理函數(shù)產(chǎn)生式 < programhead > := program programname說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)聲明部分函數(shù)名 declarepart功能聲明部分的處理產(chǎn)生式 < declarepart > := typedec vardec procdec說明函數(shù)根據(jù)文法

26、產(chǎn)生式,凋用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)類型聲明部分函數(shù)名typedec功能類型聲明部分的處理產(chǎn)生式 < typedec > := 8 | typedeclaration說明根據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 typedeclaration功能類型聲明部分的處理函數(shù)產(chǎn)生式 < typedeclaration::= type typedeclist說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)*/函數(shù)名 typedeclist功能類型聲明部分的處理函數(shù)產(chǎn)生式 < typedeclist > = typeld = typ

27、ename ; typedecmore說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 typedecmore功能類型聲明部分的處理函數(shù)產(chǎn)生式 < typedecmore::=£ | typedeclist說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名typeld功能類型聲明部分的處理函數(shù) 產(chǎn)生式 < typeld > id說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相放的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名typename功能類型聲明部分的處理產(chǎn)生式 < typename > := basetype | structuretyp

28、e | id說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相放的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名basetype功能類型聲明部分的處理函數(shù)產(chǎn)生式 < basetype:= integer | char說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相放的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 structuretype功能類型聲明部分的處理函數(shù)產(chǎn)生式 < structuretype > := arraytype | rectype說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相放的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名arraytype功能類型聲明部分的處理函數(shù)產(chǎn)生式arraytype::= array low.top of baset

29、ype說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相放的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn) 函數(shù)名rectype功能類型聲明部分的處理函數(shù)產(chǎn)生式 < rectype:= record fielddeclist end說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相放的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 fielddeclist*/功能類型聲明部分的處理函數(shù)*/產(chǎn)生式 < fielddeclist > := basetype idlist; fielddecmore | arraytype idlist; fielddecmore說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 fielddecm

30、ore功能類型聲明部分的處理函數(shù)產(chǎn)生式 < fielddecmore > := 8 | fielddeclist說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相放的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名idlist功能類型聲明部分的處理函數(shù)產(chǎn)生式 < idlist >:= id idmore說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相放的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名idmore功能類型聲明部分的處理函數(shù)產(chǎn)生式 < idmore > := 8 |,idlist說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)變量聲明部分函數(shù)名vardec能變量聲明部分的處理產(chǎn)生式 < v

31、ardec > := 8 | vardeclaration說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 vardeclaration功能變量聲明部分的處理函數(shù)產(chǎn)生式 < vardeclaration::= var vardeclist說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 vardeclist能變量聲明部分的處理函數(shù)產(chǎn)生式 < vardeclist > := typename varldlist; vardecmore 說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 vardecmore功能變量

32、聲明部分的處理函數(shù)產(chǎn)生式 < vardecmore > := 8 | vardeclist說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名varldlist功能變量聲明部分的處理函數(shù)產(chǎn)生式 < varldlist::= id varldmore說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名varldmore功能變量聲明部分的處理函數(shù)產(chǎn)生式 < varldmore > := 8 |,varldlist說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)過程聲明部分函數(shù)名procdec功能函數(shù)聲明部分的處理產(chǎn)生式 &

33、lt; procdec::= 8 | procdeclaration說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)/函數(shù)名 procdeclaration功能函數(shù)聲明部分的處理函數(shù)產(chǎn)生式 < procdeclaration > := procedure procname(paramlist);procdecpartprocbodyprocdecmore說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 procdecmore能更多函數(shù)聲明中處理函數(shù)產(chǎn)生式 < procdecmore > := 8 | procdeclaration說明函

34、數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名paramlist功能函數(shù)聲明中參數(shù)聲明部分的處理函數(shù)產(chǎn)生式 < paramlist::= s | paramdeclist說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 paramdeclist功能函數(shù)聲明中參數(shù)聲明部分的處理函數(shù)/產(chǎn)生式 < paramdeclist::= param parammore說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名parammore功能函數(shù)聲明中參數(shù)聲明部分的處理函數(shù)產(chǎn)生式 < parammore > := s |; param

35、declist說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名param功能函數(shù)聲明中參數(shù)聲明部分的處理函數(shù)產(chǎn)生式 < param::= typename formlist | var typename formlis 說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名formlist功能函數(shù)聲明中參數(shù)聲明部分的處理函數(shù)產(chǎn)生式 < formlist::= id fidmore說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名fidmore功能函數(shù)聲明中參數(shù)聲明部分的處理函數(shù)產(chǎn)生式 < fidmore::=s | , fo

36、rmlist說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 procdecpart能函數(shù)中的聲明部分的處理函數(shù)產(chǎn)生式 < procdecpart > := declarepart說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名procbody功能函數(shù)體部分的處理函數(shù)產(chǎn)生式 < procbody:= programbody說明函數(shù)根據(jù)文法產(chǎn)生式,凋用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)體部分函數(shù)名 programbody功能程序體部分的處理/產(chǎn)生式 < programbody:= begin stmlist end說明函數(shù)根據(jù)文

37、法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名stmlist功能語句部分的處理函數(shù)產(chǎn)生式 < stmlist > stm stmmore說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名stmmore功能語句部分的處理函數(shù)產(chǎn)生式 < stmmore::=£ | ; stmlist說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹函數(shù)名stm功能語句部分的處理函數(shù)產(chǎn)生式 < stm > = conditionalstm ifloopstm inputstm outputstm return stmwhilereadwrit

38、ereturn| id asscall id說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名asscall功能語句部分的處理函數(shù)產(chǎn)生式asscall::= assignmentrest :=,lmidparen,dot| callstmrest(說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 assignmentrest功能賦值語句部分的處理函數(shù)產(chǎn)生 jrg < assignmentrest > := varimore : = exp說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 conditionalstm功能條件語

39、句部分的處理函數(shù)產(chǎn)生式 <conditionalstm:=if relexp then stmlist else stmlist fi說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名loopstm功能循環(huán)語句部分的處理函數(shù)產(chǎn)生式 < loopstm::= while relexp do stmlist endwh說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名inputstm功能輸入語句部分的處理函數(shù)產(chǎn)生式 < inputstm > := read(id)說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名outp

40、ut stm功能輸出語句部分的處理函數(shù)產(chǎn)生式 < outputstm::= write(exp說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名returnstm功能返回語句部分的處理函數(shù)產(chǎn)生式 < returnstm > :=return(exp)說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 callstmrest功能函數(shù)調(diào)用語句部分的處理函數(shù)產(chǎn)生式 < callstmrest::= (actparamlist)說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 actparamlist能函數(shù)調(diào)用實(shí)參部分的處

41、理函數(shù)產(chǎn)生式actparamlist::=8 | expactparammore說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 actparammore能函數(shù)調(diào)用實(shí)參部分的處理函數(shù)產(chǎn)生式actparammore::=£ | , actparamlist說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用和應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)表達(dá)式部分函數(shù)名exp功能表達(dá)式處理函數(shù)產(chǎn)生式 exp := simple exp | 關(guān)系運(yùn)算符 simple exp說明函數(shù)根據(jù)文法生式,調(diào)用相應(yīng)的遞歸處i函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名 simple_exp功能表達(dá)f處理產(chǎn)生式simple_exp := term |加法運(yùn)算符term說明函數(shù)據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名term功能項(xiàng)處理函數(shù)產(chǎn)生式 < 項(xiàng):=factor |乘法運(yùn)算符factor說明函數(shù)根據(jù)文法產(chǎn)生式,調(diào)用相應(yīng)的遞歸處理函數(shù),生成語法樹節(jié)點(diǎn)函數(shù)名factor功能因子處理函數(shù)產(chǎn)生式 factor := intc | variable | ( exp )說明函

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論