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

正文內(nèi)容

c-minus詞法分析和語法分析設計編譯器編譯原理課程設計-展示頁

2025-03-15 16:12本頁面
  

【正文】 類型的參數(shù)列表,所以一直傳到 param中去,作為其一個子節(jié)點 ? :對 //19 種節(jié)點類型,分別表示 int、 id、 void、數(shù) 值、變量聲明、數(shù)組聲明、函數(shù)聲明、函數(shù)聲明參數(shù)列表、函數(shù)聲明參數(shù)、復合語句體、 if、 while、 return、賦值、運算、數(shù)組元素、函數(shù)調(diào)用、函數(shù)調(diào)用參數(shù)列表、未知節(jié)點 typedef enum {IntK, IdK, VoidK, ConstK, Var_DeclK, Arry_DeclK, FunK, ParamsK, ParamK, CompK, Selection_StmtK, Iteration_StmtK, Return_StmtK, AssignK, OpK, Arry_ElemK, CallK, ArgsK, UnkownK} Nodekind。 if(expression)statement|if(expression)statement else statement while(expression)statement return 。|typespecfier ID[NUM] int|void ID(parans) poundstmt paramslist|void paramlist,param|param typespecifier ID|typespecifier ID [] {localdeclarations statementlist} localdeclarations vardeclaration|empty statementlist statement|empty expressionstmt|poundstmt|selectionstmt|iterationstmt|returnstmt expression。 } 、語法分析 parse部分 設計思想: parser 用遞歸下降分析方法實現(xiàn) ,通過調(diào)用詞法分析函數(shù) getToken 實現(xiàn)語法分析。 y=input()。 int y。 else return gcd(v,uu/v*v)。 /* A program to perform Eucild39。/*輸出 Token到文件 */ //正在刪除注釋 void Scanner :: deleteComments() TokenType Scanner :: returnTokenType(string s)//返回 Token的類型 DFAState Scanner :: charType(char c)//返回字符的類型 typedef enum { ENDFILE,ERROR, IF,ELSE,INT,RETURN,VOID,WHILE, //關鍵字 ID,NUM, ASSIGN,PLUS,MINUS,TIMES,OVER,EQ,UEQ,LT,LPAREN,RPAREN,SEMI,BT,LQ,BQ, DOU,LZGH,RZGH,LDGH,RDGH,//特殊字符: = + * / == != 等 } TokenType。 else cout詞法分析成功了! endl。 class Scanner:定義 ? void Scanner :: scan():設置輸出結(jié)果界面以及設置各種輸出狀態(tài)。 }。 string tokenString。、 ,、 (、 )、 [、 ]、 {、 }、 /*、 */、 num、 id、錯誤、結(jié)束 typedef enum { ELSE = 1,IF,INT,RETURN,VOID,WHILE, PLUS,MINUS,TIMES,OVER,LT,LEQ,GT,GEQ,EQ,NEQ,ASSIGN,SEMI,COMMA,LPAREN,RPAREN,LMBRACKET,RMBRACKET,LBBRACKET,RBBRACKET,LCOMMENT,RCOMMENT, NUM,ID,ERROR,ENDFILE } TokenType。 程序流程圖 讀 取 源 文 件 一行 輸 出讀 取 一 個 字 符賦 值 t o k e n輸 出 t o k e n是 否 到 達 終 態(tài)否是源 文 件 各文件或函數(shù)的設計說明 掃描程序用到 :, ? :聲明詞法狀態(tài),詞法分析 //DFA中的狀態(tài) typedef enum { START = 1, INNUM, INID, INDBSYM, DONE } DFAState。重復此步驟,直到 DONE 為止,輸出 token 類型。 初始狀態(tài)設置為STARTINASSIGNNUMINIDZHUINCOMMENTDONE, = , !digitletter/*[ other ][ other ][ other ]=White space \ t \ n+ * = = == != 。注釋可以放在任何空白出現(xiàn)的位置 (即注釋不能放在標記內(nèi) )上,且可以超過一行??崭裢ǔ1缓雎?,除了它必須分開 ID、 NUM 關鍵字。 慣用詞法 : 打 開 源 代 碼 文 件s o u r c e . t x t掃 描 處 理( 詞 法 分 析 )語 法 分 析 程 序語 義 分 析 程 序源 代 碼 優(yōu) 化 程 序代 碼 生 成 器目 標 代 碼 優(yōu) 化 程 序目 標 代 碼記 號語 法 樹注 釋 樹中 間 代 碼目 標 代 碼記 號 表錯 誤 處 理 器文 字 表① 語言的關鍵字: else if int return void while ② 專用符號: + * / = = == != = 。 2. 分析與設計 C編譯器設計的整體框架,本實驗實現(xiàn)掃描處理和語法分析程序(圖中粗黑部分) 。 編譯原理課程設計報告 課題名稱: C Minus詞法分析和語法分析設計 提交文檔學生姓名: X X X 提交文檔學生學號: XXXXXXXXXX 同組 成 員 名 單: X X X 指導 教 師 姓 名: X X 指導教師評閱成績: 指導教師評閱意見: . . 提交報告時間: 2021年 6 月 10日 1. 課程設計目標 實驗建立 C編譯器。只含有掃描程序( scanner)和語法分析( parser)部分。 、掃描程序 scanner部分 設計思想 :根據(jù) DFA圖用 switchcase結(jié)構實現(xiàn)狀態(tài)轉(zhuǎn)換。 , ( ) [ ] { } /* */ ③ 其他標記是 ID 和 NUM,通過下列正則表達式定義: ID = letter letter* NUM = digit digit* letter = a|..|z|A|..|Z digit = 0|..|9 大寫和小寫字母是有區(qū)別的 ④ 空格由空白、換行符和制表符組成。 ⑤ 注釋 用通常的 C語言符號 / * . . . * /圍起來。注釋不能嵌套 說明: 當輸入的字符使 DFA到達接受狀態(tài)的時候,則可以確定一個單詞了。 , ( ) [] { }[ other ]scanner 的 DFA*ZZHU[ other ]*/[ other ]digitletterSTART,當需要得到下一個 token時,取得次 token的第一個字符,并且按照 DFA與對此字符的類型分析,轉(zhuǎn)換狀態(tài)。當字符為“ /”時,狀態(tài)轉(zhuǎn)換為 SLAH 再判斷下一個字符,如果為“ *”則繼續(xù)轉(zhuǎn)到 INCOMMENT,最后以“ *”時轉(zhuǎn)到 ENDCOMMENT狀態(tài),表明是注釋,如果其他的則是字符停滯于當前字符,并且輸出“ /”。 //定義的 Token 的類 型 (31 種 ),分別對應于 else、 if、 int、 return、 void、 while、 +、 *、 /、 、 =、 、 =、 ==、 !=、 =、 。 //定義的 Token 結(jié)構體,包括類型、對應的串、所在代碼的行號 struct Token { TokenType tokenType。 int lineNo。 //每種 TokenType對應的串,如 tokenTypeString[ELSE]==ELSE const string tokenTypeString[32] = {OTHER, ELSE, IF, INT, RETURN, VOID, WHILE, PLUS, MINUS, TIMES, OVER, LT, LEQ, GT, GEQ, EQ, NEQ, ASSIGN, SEMI, COMMA, LPAREN, RPAREN, LMBRACKET, RMBRACKET, LBBRACKET, RBBRACKET, LCOMMENT, RCOMMENT, NUM, ID, ERROR, ENDFILE}。 if(scanSuccess==false) cout詞法分析出錯! endl。 printToken()。 測試程序說明 根據(jù)附錄 A后面的例子,程序輸入兩個整數(shù),計算并打印出它們的最大公因子,保存為。s Algorithm to pute gcd. */ int gcd (int u, int v) { if (v==0) return u。 /* uu/v*v== u mod v */ } void main(void) { int x。 x=input()。 output(gcd(x,y))。 根據(jù) C語言的規(guī)則,得出 BNF 語法如下: declarationlist declarationlist declaration | declaration vardeclaration|fundeclaration typespecifier ID。|。|return expression。 typedef enum {Void,Integer} ExpType。//輸出語法樹到文件 //treeNode定義 包括子節(jié)點、兄弟節(jié)點、所處行號、節(jié)點類型、屬性、表達式返回類型 typedef struct treeNode TreeNode * newNode(Nodekind k)。 TreeNode * declaration(void)。 TreeNode * param_list(TreeNode * k)。 TreeNode * pound_stmt(void)。 TreeNode * statement_list(void)。 TreeNode * expression_stmt(void)。 TreeNode * iteration_stmt(void)。 TreeNode * expression(void)。 TreeNode * simple_expression(TreeNode * k)。 TreeNode * term(TreeNode * k)。 TreeNode * call(TreeNode * k)。 測試程序說明 根據(jù)附錄 A后面的例子,程序輸入兩個整數(shù),計算并打印出它們的最大公因子,保存為。s Algorithm to pute gcd. */ int gcd (int u, int v) { if (v==0) return u。 /* uu/v*v== u mod v */ } void main(void) {
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1