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

正文內(nèi)容

編譯原理報(bào)告(6)-資料下載頁

2025-03-23 12:06本頁面
  

【正文】 if(TableIndex TableNum) if(table[TableIndex+1].type==7||table[TableIndex+ 1].type == 8) { TableIndex ++。 Gerror(12,TableIndex)。 return 1。 } } /**************************else**********************/ if(strcmp(else,table[TableIndex].symbol) == 0) //匹配else { ifCount 。 return 1。 } /**********************var變量定義**********************/ if(strcmp(var,table[TableIndex].symbol) == 0)// var a,b,c。 { TableIndex ++。 if(table[TableIndex].type != 2) { if(strcmp(,table[TableIndex].symbol) == 0) Gerror(13,TableIndex)。 else Gerror(2,TableIndex)。//出錯(cuò)信息:此處應(yīng)為變量 } TableIndex ++。 if(strcmp(,table[TableIndex].symbol) !=0) { Gerror(3,TableIndex)。 //出錯(cuò)信息:此處應(yīng)為, TableIndex ++。 } while(1) { while(strcmp(,table[TableIndex].symbol)==0) { TableIndex = TableIndex + 1。 if(table[TableIndex].type !=2) { Gerror(2,TableIndex)。//出錯(cuò)信息:此處應(yīng)為變量 TableIndex ++。 } TableIndex ++。 } if(strcmp(。,table[TableIndex].symbol)==0) { return 1。 } else { Gerror(4,TableIndex)。//出錯(cuò)信息:此處應(yīng)為分號(hào)。 return 0。 } } } /*****************if語句判斷************************/ //if語句 else if(strcmp(if,table[TableIndex].symbol) == 0 || strcmp(while,table[TableIndex].symbol) == 0) { if(strcmp(if,table[TableIndex].symbol) == 0) ifCount ++。 //if個(gè)數(shù)加1 if(table[TableIndex +1].type == 2 || table[TableIndex + 1].type == 3) { Gerror(9,TableIndex)。 //出錯(cuò)信息:此處缺少39。)39。 TableIndex ++。 } else if(strcmp((,table[TableIndex + 1].symbol) != 0) { Gerror(8,TableIndex)。//出錯(cuò)信息:此處應(yīng)為分號(hào)( } TableIndex = TableIndex + 2。 if(express()) { if(strcmp(),table[TableIndex].symbol) == 0) //39。(39。匹配 { TableIndex ++。 if(strcmp(begin,table[TableIndex ].symbol) == 0) { beginCount ++。 if(table[TableIndex + 1].type == 7) { Gerror(16,TableIndex)。 TableIndex ++。 return 1。 } if(strcmp(if,table[TableIndex].symbol) == 0) Gerror(10,TableIndex)。//出錯(cuò)信息:此處缺少then return 0。 } if(strcmp(if,table[TableIndex3].symbol) == 0 amp。amp。 strcmp(then,table[TableIndex].symbol) != 0) { Gerror(11,TableIndex)。//出錯(cuò)信息:此處應(yīng)為then return 0。 }//if_then else { return 1。 } }//if_) else { Gerror(15,TableIndex)。 return 0。 } } //if_express }//if_if return 1。}int main(){ int choice。 int length。 int nLine = 1。 char ch[Max]。 char *TestFile[]={,}。 //測(cè)試文件列表 cout*****************請(qǐng)選擇測(cè)試方式: 0、 ********************endl。 cout***************** ********************endl。 cout***************** ********************endl。 cout***************** ********************endl。 cout***************** 手動(dòng)輸入程序 ********************endl。 cout請(qǐng)輸入: 。 cinchoice。 if(choice==4) { cout請(qǐng)輸入一段程序(VB格式):\n。 (ch,Max,39。39。)。 } else { fstream fin(TestFile[choice],ios::in)。 if(()) { cout打開文件出錯(cuò)!endl。 exit(0)。 } (ch,Max,39。39。)。 } length=strlen(ch)。 cout您的輸入為:\nchendl。 Scanner(ch,length,nLine)。 //調(diào)用詞法分析 cout endl 語法分析結(jié)果:\n endl。 while(TableIndex = TableNum) { TableIndex ++。 if(table[TableIndex].type == 1) judge()。 //判斷句型 else if(table[TableIndex].type == 2) Assign()。 //賦值語句 } if(ifCount 0) { errorFlag = 1。 cout 程序缺少if \n。 } if(beginCount 0) { errorFlag = 1。 cout 程序缺少begin \n。 } if(beginCount 0) { errorFlag = 1。 cout 程序缺少end \n。 } if(errorFlag == 0) { cout 語法分析成功!endl。 } return 0。} 詞法實(shí)驗(yàn)結(jié)果及結(jié)果分析 運(yùn)行程序,輸入一串沒有語法錯(cuò)誤的代碼,分析結(jié)果如下:這段程序沒有語法錯(cuò)誤,因此分析器顯示語法分析成功!運(yùn)行程序,輸入一串有語法錯(cuò)誤的代碼,分析結(jié)果如下:根據(jù)我們給定的簡單語言,這段程序一個(gè)有三個(gè)錯(cuò)誤,都分別在運(yùn)行結(jié)果中表明,錯(cuò)誤原因也已注明,語法分析程序檢測(cè)到這幾處錯(cuò)誤,因此分析結(jié)果中提示錯(cuò)誤所在行數(shù),并指明錯(cuò)誤原因及改正方法。3 實(shí)驗(yàn)中遇到的問題及解決 問題一:錯(cuò)誤定位問題 在源程序有錯(cuò)誤的情況下,編譯器通常在報(bào)錯(cuò)的同時(shí)會(huì)提示發(fā)生錯(cuò)誤的大致位置,一開始我也嘗試實(shí)現(xiàn)此功能,但卻不知如何定位錯(cuò)誤。苦思良久,想到在掃描源程序是用一個(gè)整型變量nLine(初值為1)跟蹤源程序的行數(shù),每當(dāng)掃描到換行符’\n’時(shí)nLine值加1,同時(shí)在存儲(chǔ)詞法分析結(jié)果的結(jié)構(gòu)Table表中增加一個(gè)屬性line表示單詞所在源程序行數(shù),當(dāng)掃描的該單詞時(shí)設(shè)置其屬性line值為當(dāng)前行數(shù)nLine,這樣當(dāng)某個(gè)單詞出錯(cuò)時(shí)變可以很快的通過其屬性line定位到錯(cuò)誤所在的行數(shù)。 問題二:begin與end,if與then的匹配問題 跟據(jù)我們給定的簡單文法,begin與end,if與then的數(shù)量應(yīng)相同,為了方便在語法分析器中檢測(cè)出begin與end和if與then數(shù)量不匹配問題,引入兩個(gè)全局變量beginCount和ifCount(初值均為0),每掃描到一個(gè)begin則beginCount加1,每掃描到一個(gè)end則beginCount減1,最終若beginCount大于0則說明程序中缺少end,beginCount小于0則說明beginCount缺少begin;同理每掃描到一個(gè)if則ifCount加1,每掃描到一個(gè)then則ifCount減1,最終若ifCount大于0,則說明程序中缺少then,若ifCount小于0,則說明程序中缺少if。參考資料[1] 電子工業(yè)出版社《編譯原理》第二版,胡倫駿 劉銘 徐蘭芳 駱婷 編著。 課程實(shí)驗(yàn)的評(píng)分:評(píng)分項(xiàng)目(分值)完成的功能及使用的算法、技術(shù)(50分)報(bào)告撰寫(50分)總分(100分)得分指導(dǎo)老師簽字: 時(shí)間: 年 月 日
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1