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

正文內(nèi)容

c-minus詞法分析和語(yǔ)法分析設(shè)計(jì)編譯器編譯原理課程設(shè)計(jì)-全文預(yù)覽

  

【正文】 eeNode * t = param(k)。 } else//參數(shù)列表為 (void id,[…… ]) void 類型 的變量 { tchild[0] = param_list(p)。 TreeNode * p = NULL。 } else { syntaxError()。結(jié)尾:普通變量聲明 { t = newNode(Var_DeclK)。 match(RMBRACKET)。 mchild[0] = q。 match(LMBRACKET)。 } else if(==LMBRACKET)//39。 match(LPAREN)。(39。(==ID)) { q = newNode(IdK)。 match(VOID)。 TreeNode * s = NULL。 return t。 if(q!=NULL) { if(t==NULL) { t = p = q。 getToken()。amp。 } return t。 currentToken = getToken()。 if(kind==IdK) p = 。 } psibling = NULL。 if(p==NULL) { cout內(nèi)存分配出錯(cuò)! endl。 } step。 } step++。 case ArgsK: fout_TreeArgsKendl。 case Arry_ElemK: fout_TreeArry_ElemKendl。 break。 break。 break。 break。 break。 break。 break。 while(t!=NULL) { printSpace(step)。 } } void Parser :: printSpace(int n) { for(int i = 0。 } void Parser :: syntaxError(string s) { fout_Trees Syntax error at line 出錯(cuò)附近Token: Token 類 型 :tokenTypeString[]endl。 else cout語(yǔ)法分析成功! endl。 if() { cout開(kāi)始語(yǔ)法分析 ...endl。 cinpath。 tokenIndex = 0。就自增 vectorToken tokenList。//在分析過(guò)程中保存 Token對(duì)應(yīng)的串 bool mentFlag。//根據(jù)字符串返回 Token類型 void printToken()。//根據(jù)下標(biāo)從 tokenList數(shù)組中獲取 Token private: DFAState charType(char)。//通過(guò)提供的文件名獲取源代碼 void deleteComments()。 }。 typedef enum { START = 1, INNUM, INID, INDBSYM, DONE } DFAState。 ()。 fout_Token [tokenTypeString[]]endl。 i()。 i++) tp += 。 fout_Token NUM] : headS tp[tokenTypeString[]]endl。 } else if(==28)//NUM { string tp = 。 for(int i = 0。 fout_TokenkeyWord] : headS tp[tokenTypeString[]]endl。=6)//關(guān)鍵字 { string tp = 。 int width = 10。 fout_Tokentempendl。 string temp。\n39。\039。\n39。 else return DONE。=39。39。c=39。)||(c=39。amp。939。039。==c ||39。==c || 39。 } else { t = ERROR。 } else if(s==/*) { t = LCOMMENT。 } else if(s==[) { t = LMBRACKET。) { t = SEMI。 } else if(s====) { t = EQ。 } else if(s==) { t = LT。 } else if(s==+) { t = PLUS。 } else if(s==int) { t = INT。 } else cout注釋已經(jīng)成功刪除! endl。 } } if(5==state)//結(jié)束狀態(tài),處理 { mentFlag = true。 else if(39。 else { state = 3。 fout_Sourse/ch。*39。==ch) state = 2。\039。 int state = 1。 } ()。 sourseString = 。 if(tokenIndex()) { token = (tokenIndex++)。//輸出 Token到文件 中 } Token Scanner :: getTokenAt(int tokenIndex) { Token token。 if(doubleSym==true) doubleSym = false。amp。 (t)。 Token t。 } if(DONE==state)//接收狀態(tài) { int tp = 0。==ch) { str += ch。 if(state!=INID) state = DONE。 } else if(INNUM==state)//digit { state = charType(ch)。 (t)。==ch) { Token t。 char ch。 bool doubleSym = false。 mentFlag = true。 } 3. 程序代碼實(shí)現(xiàn) 按文件列出主要程序代碼 , 添加必 要的注釋 . : include cstdlib include iostream include fstream include string include includevector using namespace std。 int y。 /* A program to perform Eucild39。 TreeNode * factor(TreeNode * k)。 TreeNode * var(void)。 TreeNode * selection_stmt(void)。 TreeNode * local_declaration(void)。 TreeNode * params(void)。 ofstream fout_Tree()。 if(expression)statement|if(expression)statement else statement while(expression)statement return 。 } 、語(yǔ)法分析 parse部分 設(shè)計(jì)思想: parser 用遞歸下降分析方法實(shí)現(xiàn) ,通過(guò)調(diào)用詞法分析函數(shù) getToken 實(shí)現(xiàn)語(yǔ)法分析。 int y。 /* A program to perform Eucild39。 else cout詞法分析成功了! endl。 }。、 ,、 (、 )、 [、 ]、 {、 }、 /*、 */、 num、 id、錯(cuò)誤、結(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。重復(fù)此步驟,直到 DONE 為止,輸出 token 類型。注釋可以放在任何空白出現(xiàn)的位置 (即注釋不能放在標(biāo)記內(nèi) )上,且可以超過(guò)一行。 慣用詞法 : 打 開(kāi) 源 代 碼 文 件s o u r c e . t x t掃 描 處 理( 詞 法 分 析 )語(yǔ) 法 分 析 程 序語(yǔ) 義 分 析 程 序源 代 碼 優(yōu) 化 程 序代 碼 生 成 器目 標(biāo) 代 碼 優(yōu) 化 程 序目 標(biāo) 代 碼記 號(hào)語(yǔ) 法 樹(shù)注 釋 樹(shù)中 間 代 碼目 標(biāo) 代 碼記 號(hào) 表錯(cuò) 誤 處 理 器文 字 表① 語(yǔ)言的關(guān)鍵字: else if int return void while ② 專用符號(hào): + * / = = == != = 。 編譯原理課程設(shè)計(jì)報(bào)告 課題名稱: C Minus詞法分析和語(yǔ)法分析設(shè)計(jì) 提交文檔學(xué)生姓名: X X X 提交文檔學(xué)生學(xué)號(hào): XXXXXXXXXX 同組 成 員 名 單: X X X 指導(dǎo) 教 師 姓 名: X X 指導(dǎo)教師評(píng)閱成績(jī): 指導(dǎo)教師評(píng)閱意見(jiàn): . . 提交報(bào)告時(shí)間: 2021年 6 月 10日 1. 課程設(shè)計(jì)目標(biāo) 實(shí)驗(yàn)建立 C編譯器。 、掃描程序 scanner部分 設(shè)計(jì)思想 :根據(jù) DFA圖用 switchcase結(jié)構(gòu)實(shí)現(xiàn)狀態(tài)轉(zhuǎn)換。 ⑤ 注釋 用通常的 C語(yǔ)言符號(hào) / * . . . * /圍起來(lái)。 , ( ) [] { }[ other ]scanner 的 DFA*ZZHU[ other ]*/[ other ]digitletterSTART,當(dāng)需要得到下一個(gè) token時(shí),取得次 token的第一個(gè)字符,并且按照 DFA與對(duì)此字符的類型分析,轉(zhuǎn)換狀態(tài)。 //定義的 Token 的類 型 (31 種 ),分別對(duì)應(yīng)于 else、 if、 int、 return、 void、 while、 +、 *、 /、 、 =、 、 =、 ==、 !=、 =、 。 int lineNo。 if(scanSuccess==false) cout詞法分析出錯(cuò)! endl。 測(cè)試程序說(shuō)明 根據(jù)附錄 A后面的例子,程序輸入兩個(gè)整數(shù),計(jì)算并打印出它們的最大公因子,保存為。 /* uu/v*v== u mod v */ } void main(void) { int x。 output(gcd(x,y))。|。 typedef enum {Void,Integer} ExpType。 TreeNode * declaration(void)。 TreeNode * pound_stmt(void)。 TreeNode * expression_stmt(void)。 TreeNode * expressio
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1