freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

word版可編輯-編譯原理課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告川大張兵精心整理-免費(fèi)閱讀

  

【正文】 } match(youkuohao)。 if(t!=NULL) { tchild=expression()。 if(==fenhao) { match(fenhao)。 } } return t。 if(t==NULL) { t=simple_expression(t)。 q=expression()。 return q。 t=q。 t=q。 gettoken()。 t=expression()。 } else if(k!=NULL) { (tchild)brother=args()。 q=s。 treenode * q=NULL。 pbrother=NULL。 } else { printf(unknown\n)。 } else if(tnodekind==ifs) { printf(if\n)。 } else if(tnodekind==ids) { printf(id:%s\n,tnodestring)。 parseerror()。//多個(gè)函數(shù)列表treenode * parse()。//復(fù)合語(yǔ)句后者種類(lèi)treenode * statement_list()。//加成的表達(dá)式treenode * simple_expression(treenode * k)。//函數(shù)聲明void printspace(int n)。token currenttoken。}//19種節(jié)點(diǎn)類(lèi)型,分別表示int、id、void、數(shù)值、變量聲明、數(shù)組聲明、函數(shù)聲明、//函數(shù)聲明參數(shù)列表、函數(shù)聲明參數(shù)、復(fù)合語(yǔ)句體、if、while、return、賦值、運(yùn)算、//數(shù)組元素、函數(shù)調(diào)用、函數(shù)調(diào)用參數(shù)列表、未知節(jié)點(diǎn)typedef enum{ ints,ids,voids,nums,var,shuzu,hanshu,hancanlist,hancan,fuheyuju,ifs,whiles,returns, fuzhi,yunsuan,shuzuyuansu,hanshudiaoyong,hanshudiaoyongcanlist,unknown}Nodekind。 (to)。mn。 =gettokentype(t)。 } } t[n]=39。 while(1) { flag=0。 strcpy(linshi,num)。amp。amp。 =gettokentype(linshi)。 =gettokentype(t)。 } t[m]=39。a39。A39。amp。) { zs=0。j++) { if(zs)//注釋 { if(j=1amp。 for(i=0。,39。,39。,39。,39。}vectortoken tokenlist。 } else if(!strcmp(c,[)) { to=zuozhongkuohao。 } else if(!strcmp(c,==)) { to=dengyudengyu。 } else if(!strcmp(c,+)) { to=jia。//token行號(hào)}。) { if(zs==1) { zs=0。) { if(zs==0) { zs=1。 for(j=0。//當(dāng)前token串char linshi[1100]。但是由于C語(yǔ)言給出的文法有左遞歸存在,于是自己將存在左遞歸的文法改寫(xiě)成EBNF的形式,并據(jù)此進(jìn)行代碼編寫(xiě)。分析函數(shù)treenode * expression_stmt()分析說(shuō)明表達(dá)式語(yǔ)句有一個(gè)可選的且后面跟著分號(hào)的表達(dá)式。params(void)函數(shù)先判斷第一個(gè)是void還是int,如果是int說(shuō)明是由param_list組成,則調(diào)用param_list(TreeNode * k)函數(shù)遞歸向下分析;如果是void說(shuō)明可能是void型的參數(shù),也可能參數(shù)就是void,所以再求其Follow集合,如果集合求出來(lái)是右括號(hào),則說(shuō)明參數(shù)就是void,于是新建一個(gè)VoidK節(jié)點(diǎn)就行;如果集合求出來(lái)不是右括號(hào)則說(shuō)明是void型的參數(shù),然后再調(diào)用param_list(TreeNode * k)函數(shù)遞歸向下分析,并將已經(jīng)取出VoidK節(jié)點(diǎn)傳遞給param_list(TreeNode * k)函數(shù)代碼treenode * params()待分析文法param_list→param{, param}分析函數(shù)treenode * param_list(treenode * k)分析說(shuō)明參數(shù)列表由param序列組成,并由逗號(hào)隔開(kāi)。expression→ var = expression | simpleexpressionrelop → = | | | = | = = | ! =var→ID | ID [expression]simpleexpression-additiveexpression{ relop additiveexpression }additiveexpression→term{addop term }addop → + | term→factor{mulop factor }mulop →* | /factor→(expression) | var | call | NUMcall→ID( args )args→arglist | emptyarglist→ expression{, expression}以下表格列出了根據(jù)上文中的C文法使用遞歸向下分析方法分析程序的過(guò)程,在代碼部分只列出了函數(shù)名,具體函數(shù)見(jiàn)源代碼。//所在行 Nodekind nodekind。//函參列表treenode * pound_stmt()。//表達(dá)式聲明treenode * return_stmt()。treenode * call(treenode * k)。//先行空格void gettoken()。詞法分析的DFA描述:詞法分析的DFA如下所示,一共分為5個(gè)狀態(tài):START、INNUM、INID、INDBSYM、DONE。詞法分析是對(duì)輸入的數(shù)據(jù)一個(gè)字符一個(gè)字符的分析,將所分析出來(lái)的token存儲(chǔ)在一個(gè)vector數(shù)組中,方便后面語(yǔ)法分析時(shí)調(diào)用。編譯原理課程設(shè)計(jì) 指導(dǎo)老師:張兵 學(xué)生:劉佳玉編譯原理課程設(shè)計(jì)報(bào)告課題名稱: C詞法掃描器及語(yǔ)法分析器實(shí)現(xiàn) 提交文檔學(xué)生姓名: 劉佳玉 提交文檔學(xué)生學(xué)號(hào): 2012141461134 同組 成 員 名 單: 無(wú) 指導(dǎo) 教 師 姓 名: 張兵 指導(dǎo)教師評(píng)閱成績(jī): 指導(dǎo)教師評(píng)閱意見(jiàn): . . 提交報(bào)告時(shí)間: 2015 年 6 月 10 日目錄編譯原理課程設(shè)計(jì)報(bào)告 1課程設(shè)計(jì)目標(biāo) 2分析與設(shè)計(jì) 2 2 3 3 3 4 4 5 5 5 6測(cè)試結(jié)果 11 11 15總結(jié) 15 15 15 16程序代碼實(shí)現(xiàn) 16 16 20課程設(shè)計(jì)目標(biāo)學(xué)生在學(xué)習(xí)《編譯原理》課程過(guò)程中,結(jié)合各章節(jié)的構(gòu)造編譯程序的基本理論,要求用C或C++語(yǔ)言描述及上機(jī)調(diào)試,實(shí)現(xiàn)一個(gè) CMinus 小編譯程序(包括詞法分析,語(yǔ)法分析等重要子程序),使學(xué)生將理論與實(shí)際應(yīng)用結(jié)合起來(lái),受到軟件設(shè)計(jì)等開(kāi)發(fā)過(guò)程的全面訓(xùn)練,從而提高學(xué)生軟件開(kāi)發(fā)的能力。詞法分析沒(méi)有什么錯(cuò)誤限制,基本不會(huì)報(bào)錯(cuò)。狀態(tài)START表示開(kāi)始狀態(tài),狀態(tài)INNUM表示數(shù)字類(lèi)型(NUM)Token的狀態(tài),狀態(tài)INID表示字符串類(lèi)型Token的狀態(tài)(如關(guān)鍵字和一般的標(biāo)示符),狀態(tài)INDBSYM表示雙目運(yùn)算符型Token的狀態(tài)(如=、=、!=、==),狀態(tài)DONE表示接收狀態(tài)。//得到tokenvoid parseerror()。//函數(shù)調(diào)用treenode * factor(treenode * k)。//返回式聲明treenode * iteration_stmt()。//函數(shù)內(nèi)容,復(fù)合語(yǔ)句treenode * params()。//節(jié)點(diǎn)類(lèi)型 char nodestring[1100]。待分析文法program→declarationlist分析函數(shù)treeNode * parse()分析說(shuō)明C語(yǔ)言編寫(xiě)的程序由一組聲名序列組成。param_list(TreeNode * k)函數(shù)使用遞歸向下分析方法直接調(diào)用param(TreeNode * k)函數(shù),并返回樹(shù)節(jié)點(diǎn)代碼treenode * param_list(treenode * k)待分析文法param→ typespecifier ID{[ ]}分析函數(shù)treenode * param(treenode * k)分析說(shuō)明參數(shù)由int或void、標(biāo)示符組成,最后可能有中括號(hào)表示數(shù)組。expression_stmt(void)函數(shù)通過(guò)判斷先行Token類(lèi)型是否為分號(hào),如果不是則直接調(diào)用函數(shù)expression()代碼treenode * expression_stmt()待分析文法selectionstmt→if (expression) statement [else statement]分析函數(shù)treenode * selection_stmt()分析selection_stmt(void)函數(shù)直接調(diào)用expression()函數(shù)和statement()函數(shù)分別得到其第一個(gè)和第二個(gè)子節(jié)點(diǎn),然后通過(guò)判斷先行Token類(lèi)型是否為ELSE,如果是則直接調(diào)用statement()函數(shù)得到其第三個(gè)子節(jié)點(diǎn)代碼treenode * selection_stmt()待分析文法iterationstmt→while (expression)statement分析函數(shù)treenode * iteration_stmt()分析iteration_stmt(void)函數(shù)直接調(diào)用expression()函數(shù)和statement()函數(shù)分別得到其第一個(gè)和第二個(gè)子節(jié)點(diǎn)代碼treenode * iteration_stmt()待分析文法returnstmt→return [expression]。整個(gè)過(guò)程可以說(shuō)是痛并快樂(lè)著,一方面自己在編寫(xiě)代碼的時(shí)候遇到了很多問(wèn)題,這也是自己動(dòng)手能力不足的一個(gè)表現(xiàn)。//臨時(shí)數(shù)組int k。jlen1。 } else { return。 } else { zs=1。Tokentype gettokentype(char c[]){ Tokentype to。 } else if(!strcmp(c,)) { to=jian。 } else if(!str
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1