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

正文內(nèi)容

c語言詞法分析器和c-語言語法分析器編譯原理課程設計-文庫吧資料

2025-03-11 16:34本頁面
  

【正文】 ling = q。 q = statement()。 TreeNode * p = t。 } } } return t。 else { qsibling = p。 } } else { syntaxError()。 } else if(token==SEMI) { match(SEMI)。 match(RBRACKET)。 pchild[3] = q3。 match(ID)。 q2 = copyString(tokenString)。amp。 match(INT)。 } else if(token==VOID) { TreeNode * q1 = newNode(VoidK)。 pchild[0] = q1。 while(token==INT || token==VOID) { p = newNode(Var_DeclK)。 TreeNode * q = NULL。 return t。 tchild[1] = statement_list()。 match(LCBRACKET)。 } return t。 } else { return t。 tchild[2] = newNode(IdK)。amp。 } else { syntaxError()。 tchild[1] = q。 if (token==ID) { q = newNode(IdK)。 } 四川大學《編譯原理課程設計》 學號 2021141461017 16 else if (k!=NULL) { p = k。token==INT) { p = newNode(IntK)。 } else if(k==NULLamp。token==VOID) { p = newNode(VoidK)。 if(k==NULLamp。 TreeNode * p = NULL。 } } } return t。 } else { psibling = q。 q = param(k)。//沒有要傳給 param的 VoidK,所以將 k設為 NULL while (token==COMMA) 四川大學《編譯原理課程設計》 學號 2021141461017 15 { TreeNode * q = NULL。 TreeNode * p = t。 } 文法 param_list→ param{, param} 分析函數(shù) TreeNode * param_list(TreeNode * k) 說明 說明參數(shù)列表由 param序列組成,并由逗號隔開。 } else { syntaxError()。 } else//參數(shù)列表為 (void id,[……]) { tchild[0] = param_list(p)。 match(VOID)。 TreeNode * p = NULL。 } return t。 } else { syntaxError()。 tchild[1] = q。 } else if (token==SEMI) { t = newNode(Var_DeclK)。 match(RBRACKET)。 achild[0]=q。 s = atoi(tokenString)。 match(LBRACKET)。 tchild[0] = p。 } else if (token==LBRACKET) 四川大學《編譯原理課程設計》 學號 2021141461017 13 { t = newNode(Var_DeclK)。 match(RPAREN)。 match(LPAREN)。 tchild[0] = p。 match(ID)。token==ID) { q = newNode(IdK)。 } if(p!=NULLamp。 match(VOID)。 match(INT)。 TreeNode * a = NULL。 TreeNode * q = NULL?!?則是 普通變量聲明,返回節(jié)點四川大學《編譯原理課程設計》 學號 2021141461017 12 Var_DeclK 代碼 TreeNode * declaration(void) { TreeNode * t = NULL。 | typespecifier ID [NUM]。 return t。 p=q。 if (q!=NULL) { if (t==NULL) { t=p=q。 } while(token==INT||token==VOID) { TreeNode * q。 token = getToken()。amp。amp。 四川大學《編譯原理課程設計》 學號 2021141461017 11 TreeNode * p =t。 } 文法 declaration_list → declaration{ declaration } 分析函數(shù) TreeNode * declaration_list(void) 說明 聲明序列是由若干聲明構(gòu)成 , declaration_list(void)函數(shù)中直接調(diào)用declaration()函數(shù)返回樹節(jié)點,當前 token為 INT或 VOID時,調(diào)用 declaration()返回之前樹節(jié)點的兄弟節(jié)點。 if(token!=ENDFILE) { syntaxError(endfile error)。 token = getToken()。 } TreeNode。} attr。 int val。 NodeKind nodekind。 struct treeNode * sibling。 selectionstmt→if (expression) statement [else statement] iterationstmt→while (expression)statement returnstmt→return [expression]。 | typespecifier ID [NUM]。 四川大學《編譯原理課程設計》 學號 2021141461017 8 C語言語法 分析器 1 實驗目的及意義 用 C語言編制 Tiny/C語言的語法分析程序,實現(xiàn)對詞法分析程序所提供的 Token序列的語法檢查和結(jié)構(gòu)分析。在 DFA的實現(xiàn)過程中,我主要參考了書后 tiny語言 DFA 的實現(xiàn)方法,將它擴展到 C語言。 7 小結(jié) 通過 編寫 C 語言詞法分析器,我對編譯器的基本原理有了更深的認識,同時掌握了 DFA的設計與實現(xiàn)。 } } 測試結(jié)果 四川大學《編譯原理課程設計》 學號 2021141461017 7 ,保留字,整數(shù)和小數(shù),標識符,特殊符號,字符串以及錯誤輸入。h39。 char c[] = abcdefg。 /* 文件結(jié)束標志 */ 四川大學《編譯原理課程設計》 學號 2021141461017 6 6 實驗結(jié)果與分析 測試文件 /**/ int main(void) { int a = 0。 /* 當前行的位置 */ static int bufsize = 0。 /* 當前行號 */ static char lineBuf[BUFLEN]。 /* 詞法分析函數(shù) */ static int getNextChar(void) /* 獲取下一個字符 */ static void ungetNextChar(void) /* 退回一個字符 */ static TokenType reservedLookup (char * s) /* 查找對應的保留字 */ char tokenString[MAXTOKENLEN+1]。 /*輸出 token */ char* copyString(char *)。 主函數(shù)中進行文件打開和關(guān)閉,并調(diào)用 中的 getToken()函數(shù)對源文件進行詞法分析。狀態(tài) START 表示開始狀態(tài),狀態(tài) INNUM, INNUM1, INNUM2 表示數(shù)字類型( NUM) Token 的狀態(tài),狀態(tài) INID表示標示符 ( ID) 類型 Token 的狀態(tài) ,狀態(tài) INOPERATE表示 算數(shù) 運算符型 Token 的狀態(tài) ,狀態(tài) INOCOMPARE表示 比較 運算符型 Token 的狀態(tài) , INSTRING表示字符串( STRING)類型 Token 的狀態(tài), INCHAR 表示字符( CHARACTER)類型 Token 的狀態(tài), 狀態(tài) DONE 表示接收狀態(tài)。 四川大學《編譯原理課程設計》 學號 2021141461017 3 4 DFA 設計 注釋的 DFA 設計 注釋的 DFA如下所示,一共分為 5個狀態(tài),在開始狀態(tài) 1時,如果輸入的字符為 /, 則 進入狀態(tài) 2,此時有可能進入注釋狀態(tài),如果在狀態(tài) 2時,輸入的字符為 *,則進入注釋狀態(tài),狀態(tài)將轉(zhuǎn)到 3,如果在狀態(tài) 3 時,輸入的字符為 *,則有可能結(jié)束注釋狀態(tài),此時狀態(tài)將轉(zhuǎn)到狀態(tài) 4,如果在狀態(tài) 4時輸入的字符為 /,則注釋狀態(tài)結(jié)束,狀態(tài)轉(zhuǎn)移到結(jié)束 狀態(tài)。 , ( ) [ ] { } /* */ : 文件結(jié)束、錯誤 EOF ERROR 其它 token NUM ID CHARACTER STRING tokenType類型代碼 typedef enum { //錯誤 、 結(jié) 束 ENDFILE,ERROR, //保留字 AUTO,BREAK,CASE,CHAR,CONST,CONTINUE ,DEFAULT , DO ,DOUBLE, ELSE, ENUM, EXTERN , FLOAT ,FOR , GOTO,IF, INT, LONG,REGISTER , RETURN, SHORT, SIGNED ,SIZEOF ,STATIC, STRUCT ,SWITCH, TYPEDEF ,UNION, UNSIGNED , VOID,VOLATILE , WHILE, //其 他 token ID,NUM,CHARACTER,STRING, //特殊符號 //+、 、 *、 /、 ++、 、 +=、 =、 *=、 、 =、 、 =、 ==、 !=、 =、 。other+39。 《 編譯原理課程設計 》課程 報告 題目 C 語言 詞法分析器 和 C語言語法分析器 學生姓名 學生學號
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1