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

正文內(nèi)容

編譯原理課程設(shè)計(jì)--c-編譯器詞法分析與語法分析的實(shí)現(xiàn)-展示頁(yè)

2025-01-26 01:33本頁(yè)面
  

【正文】 書上原型做的,但根據(jù)語法規(guī)則所需要的,做過大量修改TreeNode * newStmtNode(StmtKind kind) {}//根據(jù)書上原型做的,未經(jīng)修改TreeNode * newExpNode(ExpKind kind) {}//根據(jù)書上原型做的,未經(jīng)修改TreeNode * newParamNode(void) {}//自己根據(jù)所需建立TreeNode * newDecNode(void) {}//自己根據(jù)所需建立char * copyString(char * s) {}//根據(jù)書上原型做的,未經(jīng)修改static void printSpaces(void) {}//根據(jù)書上原型做的,未經(jīng)修改void printTree( TreeNode * tree ){}//根據(jù)書上原型做的,但根據(jù)語法規(guī)則所需要的,做過大量修改,詞法的分析typedef enum {START,INASSIGN_1,L_ASSIGN,R_ASSIGN, E_ASSIGN,N_ASSIGN,INASSIGN_2,INCOMMENT, INNUM,INID,DONE} StateType。 。 。、代碼設(shè)計(jì)說明程序globals files包里面分為Source Files文件夾和Header Files文件夾Source Files文件夾中包含: 。最后停下編程來從筆頭整理了一陣子語法規(guī)則后,語法分析程序可以分析了,只有個(gè)別錯(cuò)誤了。若是按照書上原來的29條語法規(guī)則來寫,就會(huì)發(fā)現(xiàn)在樹的生成方法與邏輯上會(huì)很難實(shí)現(xiàn)。并且根據(jù)語法規(guī)則來確定語法樹的末結(jié)點(diǎn)的內(nèi)容。分析從program開始,逐層向下擴(kuò)展。 15. expression → simpleexpression { = expression }16. var → ID [ [ expression ] ] 17. simpleexpression → additiveexpression { relop additiveexpression }18. relop → = | | | = | == | != 19. additiveexpression → additiveexpression { addop term } 20. addop → + | 21. term → term mulop { factor } 22. mulop → * | / 23. factor → ( expression ) | NUM | ID (args)|[expression]|empty24. args → arglist | empty 25. arglist → expression{ expression } 其中,3條declaration15條expression和23條factor是重點(diǎn)修改內(nèi)容。 12. selectionstmt → if ( expression ) statement { else statement }13. iterationstmt → while(expression) statement 14. returnstmt → return 。| (params)poundstmt4. params → paramslist | void 5. paramlist → param { param }6. param → int|void ID empty|[] 7. poundstmt → { localdeclarations statementlist } 8. localdeclarations → { declaration }|empty9. statementlist → { statement }|empty 10. statement → expressionstmt | poundstmt | selectionstmt | iterationstmt | returnstmt 11. expressionstmt → expression 。根據(jù)C 語言的規(guī)則,我們可以得出C 語言語法的EBNF。 | return expression 。 | 。 | typespecifier ID [ NUM ] 。在開始時(shí)一直未注意停滯與當(dāng)前字符,因此總是讀不出“/v*”中的“v”,在調(diào)試多次后才得以解決。此中難點(diǎn)在于對(duì)于注釋的分析,因此我將判斷注釋分成幾個(gè)步驟。初始狀態(tài)設(shè)置為START,當(dāng)需要得到下一個(gè)token時(shí),取得此token的第一個(gè)字符,并且按照DFA與對(duì)此字符的類型的分析,轉(zhuǎn)換狀態(tài)。、實(shí)驗(yàn)方法:我通過對(duì)scanner部分原理的了解,確定了他的NFA,再將NFA轉(zhuǎn)化成DFA,并且將狀態(tài)數(shù)最小化。注釋可以放在任何空白出現(xiàn)的位置(即注釋不能放在標(biāo)記內(nèi))上,且可以超過一行??崭裢ǔ1缓雎裕怂仨毞珠_ID、NUM關(guān)鍵字。、,、(、)、[、]、{、}、/*、*/其他標(biāo)記是ID、NUM,通過下列正則表達(dá)式定義:ID = letter letter*NUM = digit digit*letter = a|..|z|A|..|Zdigit = 0|..|9小寫大寫字母是有區(qū)別的。 , [ ] ( ) /* } TokenType。由掃描程序生成的邏輯單元稱作記號(hào)(token),將字符組合成記號(hào)與在一個(gè)英語句子中將字母將字母構(gòu)成單詞并確定單次的含義很相像。編譯原理課程設(shè)計(jì)報(bào)告課題名稱: C編譯器詞法分析與語法分析的實(shí)現(xiàn) 提交文檔學(xué)生姓名: 黃臻旸 提交文檔學(xué)生學(xué)號(hào): 1043041227 同組 成 員 名 單: 無 指導(dǎo) 教 師 姓 名: 金軍 指導(dǎo)教師評(píng)閱成績(jī): 指導(dǎo)教師評(píng)閱意見: . . 提交報(bào)告時(shí)間:2013年 6 月 5 日編譯原理課程設(shè)計(jì)報(bào)告 1課程設(shè)計(jì)目標(biāo) 3分析與設(shè)計(jì) 說明所用的方法: 系統(tǒng)總圖: scanner部分: parse部分: 代碼設(shè)計(jì)說明 7程序代碼實(shí)現(xiàn) 獲取輸入部分(): 詞法分析部分(): 語法分析部分(): 1輸出與結(jié)點(diǎn)的建立() 2TokenType、treeNode與結(jié)點(diǎn)類型的聲明() 34測(cè)試結(jié)果 36總結(jié) 3收獲 3不足 36課程設(shè)計(jì)目標(biāo)本次實(shí)驗(yàn),本C 編譯器主要設(shè)計(jì)并且實(shí)現(xiàn)了C 編譯器的詞法分析功能與語法分析功能。分析與設(shè)計(jì)、說明所用的方法:各部分的實(shí)現(xiàn)方法(scanner:手工實(shí)現(xiàn)、Lex;parser:遞歸下降、LL(1)、LR(0)、SLR(1)、LR(1)、LALR(1)、Yacc),所用編程語言實(shí)現(xiàn)內(nèi)容所用的實(shí)驗(yàn)方法所用編程語言scanner手工實(shí)現(xiàn)C語言parse遞歸下降C語言、系統(tǒng)總圖:、scanner部分:、實(shí)驗(yàn)原理:掃描程序的任務(wù)是從源代碼中讀取字符并形成由編譯器的以后部分(通常是分析程序)處理的邏輯單元。在此程序中,我將記號(hào)分成了以下類型:typedef enum {//按照書上附錄B程序布局, ENDFILE,ERROR, IF,ELSE,INT,RETURN,VOID,WHILE, ID,NUM, ASSIGN,PLUS,MINUS,TIMES,OVER,LT,LET,BT,BET,EQ,NEQ, // = + * / = = == != LPAREN_1,RPAREN_1,SEMI,COM,LPAREN_2,RPAREN_2,LPAREN_3,RPAREN_3,LIN,RIN// { } 。其中,關(guān)鍵字有:else、if、int、return、void、while;專用符號(hào)有:+、*、/、=、=、==、~=、=、??崭裼煽瞻住Q行符和制表符組成。注釋常用通常的C語言符號(hào)/*...*/圍起來。注釋不能嵌套。最后所得的DFA:、編程方法:編程采用C語言。重復(fù)此步驟,直到DONE為止,輸出token類型。當(dāng)字符為“/”時(shí),狀態(tài)轉(zhuǎn)換為INASSIGN_1(自創(chuàng)的)再判斷下一個(gè)字符,如果為“*”則是注釋,如果是其他的則字符停滯與當(dāng)前字符(ungetNextChar()),并且輸出“/”。、parse部分:、實(shí)驗(yàn)原理:C語言的各個(gè)語法規(guī)則: 1. program → declarationlist 2. declarationlist → declarationlist declaration | declaration 3. declaration → vardeclaration | fundeclaration 4. vardeclaration → typespecifier ID 。 5. typespecifier → int | void 6. fundeclaration → typespecifier ID ( params ) poundstmt (在課后解釋中poundstmt前面沒有“|”符號(hào)) 7. params → paramslist | void 8. paramlist → paramlist , param | param 9. param → typespecifier ID | typespecifier ID [ ] 10. poundstmt → { localdeclarations statementlist } 11. localdeclarations → localdeclarations vardeclaration | empty 12. statementlist → statementlist statement | empty 13. statement → expressionstmt | poundstmt | selectionstmt | iterationstmt | returnstmt 14. expressionstmt → expression 。 15. selectionstmt → if ( expression ) statement | if ( expression ) statement else statement 16. iterationstmt → while(expression) statement 17. returnstmt → return 。 18. expression → var = expression | simpleexpression 19. var → ID | ID [ expression ] 20. simpleexpression → additiveexpression relop additiveexpression | additiveexpression 21. relop → = | | | = | == | != 22. additiveexpression → additiveexpression addop term | term 23. addop → + | 24. term → term mulop factor | factor 25. mulop → * | / 26. factor → ( expression ) | var | call | NUM 27. call → ID ( args ) 28. args → arglist | empty 29. arglist → arglist , expression | expression 、實(shí)驗(yàn)方法:本次試驗(yàn)完成parse方法我采用的是遞歸下降的方法。下面是我在代碼中所使用的自己整理出來的語法規(guī)則:注:{ }為重復(fù)[ ]為選擇,{}為本來的意思1. program → declarationlist 2. declarationlist → declaration { declaration }3. declaration → int|void|empty ID [factor]。 | 。|expression 。、編程方法:編程采用C語言。依靠下一步所得到的token,
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1