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

正文內(nèi)容

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

2025-06-16 12:19本頁面
  

【正文】 statementlist statement | empty 13. statement → expressionstmt | poundstmt | selectionstmt | iterationstmt | returnstmt 14. expressionstmt → expression 。 、 parse 部分: 、實(shí)驗(yàn)原理: C語言的各個(gè)語法規(guī)則: 1. program → declarationlist 2. declarationlist → declarationlist declaration | declaration 3. declaration → vardeclaration | fundeclaration 4. vardeclaration → typespecifier ID 。當(dāng)字符為“ /”時(shí),狀態(tài)轉(zhuǎn)換為 INASSIGN_1(自創(chuàng)的)再判斷下一個(gè)字符,如果為“ *”則是注釋,如果是其他的則字符停滯與當(dāng)前字符( ungetNextChar()),并且輸出“ /”。重復(fù)此步驟,直到 DONE 為止,輸出 token類型。 最后所得的 DFA: 、編程方法: 編程采用 C 語言。 、實(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|..|Z digit = 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)閱成績: 指導(dǎo)教師評(píng)閱意見: . . 提交報(bào)告時(shí)間: 2021 年 6 月 5 日 編譯原理課程設(shè)計(jì)報(bào)告 ...................................................................................................................1 課程設(shè)計(jì)目標(biāo) ...........................................................................................................................3 分析與設(shè)計(jì) ..............................................................................................................................3 、說明所用的方法: ...........................................................................................................3 、系統(tǒng)總圖: .....................................................................................................................3 、 scanner部分: ........................................................................................................3 、 parse部分: ...........................................................................................................5 、代碼設(shè)計(jì)說明 .........................................................................................................7 程序代碼實(shí)現(xiàn) ......................................................................................................................... 10 、獲取輸入部分(在 ): ....................................................................................... 10 、詞法分析部分(在 ): ........................................................................................ 10 、語法分析部分(在 ): ....................................................................................... 15 、輸出與結(jié)點(diǎn)的建立(在 ) ..................................................................................... 29 、 TokenType、 treeNode 與結(jié)點(diǎn)類型的聲明(在 中) .................................................. 35 測(cè)試結(jié)果 ............................................................................................................................... 36 總結(jié) ..................................................................................................................................... 40 、收獲 ............................................................................................................................. 43 、不足 ............................................................................................................................. 43 課程設(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)有: +、 、 *、 /、 、 =、 、 =、 ==、 ~=、 =、 。 空格由空白、換行符和制表符組成。 注釋常用通常的 C 語言符號(hào) /*...*/圍起來。注釋不能嵌套。最后根據(jù)我所得的 DFA 與課后 TINY 的示例程序編寫 。 初始狀態(tài)設(shè)置為 START,當(dāng)需要得到下一個(gè) token 時(shí),取得此 token的第一個(gè)字符,并且按照 DFA 與對(duì)此字符的類型的分析,轉(zhuǎn)換狀態(tài)。 此中難點(diǎn)在 于對(duì)于注釋的分析,因此我將判斷注釋分成幾個(gè)步驟。在開始時(shí)一直未注意停滯與當(dāng)前字符,因此總是讀不出“ /v*”中的“ v”,在調(diào)試多次后才得以解決。 | typespecifier ID [ NUM ] 。 | 。 | return expression 。根據(jù) C 語言的規(guī)則,我們可以得出 C 語言語法的 EBNF。| (params)poundstmt 4. params → paramslist | void 5. paramlist → param { param } 6. param → int|void ID empty|[] 7. poundstmt → { localdeclarations statementlist } 8. localdeclarations → { declaration }|empty 9. statementlist → { statement }|empty 10. statement → expressionstmt | poundstmt | selectionstmt | iterationstmt | returnstmt 11. expressionstmt → expression 。 12. selectionstmt → if ( expression ) statement { else statement } 13. iterationstmt → while(expression) statement 14. returnstmt → return 。 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
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1