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

正文內容

編譯原理課程設計--對pl0進行擴充和修改(編輯修改稿)

2025-06-25 19:03 本頁面
 

【文章內容簡介】 x。 /*保存判斷條件超作的位置 */ getsymdo。 memcpy(nxtlev,fsys,sizeof(bool)*symnum)。 nxtlev[dowhilesym]=true。/*后跟符號為 do*/ statementdo(fsys,ptx,lev)。 /*循環(huán)體 */ /cx2=cx。 /*保存循環(huán)體的結束的下一個位置 */ //gendo(jmp,0,cx1)。/*回頭重新判斷條件 */ if(sym==dowhilesym) { getsymdo。 } else { error(34)。 /*缺少 dowhile*/ } conditiondo(nxtlev,ptx,lev)。 /*調用條件處理 */ cx2=cx。 /*保存循環(huán)體的結束的下一個位置 */ gendo(jpc,0,0)。/*生成條件跳轉,但跳出循環(huán)的地址未知 */ gendo(jmp,0,cx1)。/*回頭重新判斷條件 */ code[cx2].a=cx。 /*反填跳出循環(huán)的地址,與 if類似 */ } 增加運算 ++和 ① 首先來到頭文件中找到 enum symbol 添加自己定義的 ++, 運算符關鍵字 ppl 和 mmi。有 defiine symnum 以便詞法分析時 能夠正確的識別這些關鍵字。 ② 這里跟前面不一樣的地方就是還要添加: facbegsys[ppl]=true。 facbegsys[mmi]=true。 這是一個關鍵的地方,因為如果把 ++或 — 當作表達式的開始符號時候,首先能夠正常的標識符一樣。 ③ 在詞法分析程序中添加對 +=和 =的識別,也就是在程序中找到 getsym函數(shù),添加如下: else if(ch==39。+39。) { getchdo。 if(ch==39。=39。) { sym=peq。這里是自 己的定義的 +=的標識符 getchdo。 } else if(ch==39。+39。) { sym=ppl。 這里是自己的定義的 +=的標識符 getchdo。 } else { sym=plus。 } } 同理對于 =的標識符: else if(ch==39。39。) { getchdo。 if(ch==39。=39。) { sym=meq。這里是自己的定義的 +=的標識符 getchdo。 } else if(ch==39。39。) { sym=mmi。 這里是自己的定義的 +=的標識符 getchdo。 } else { sym=minus。 } } ④ 根據(jù)前面語法描述,可以看出我這里是把 i++或 i— 作為語句或因子來進行處理的,這就得在相應地方添加語句處理功能。 作為語句處理時,在 statement 中添加代碼如下: 情況一:如 a++, a— 運算符在后面: if(sym==ident)這里是以變量開始 { i=position(id,*ptx)。變量在符號表的位置 if(i==0) { error(11)。出錯處理 } else { if(table[i].kind!=variable)只有對變量才可以做自增自減運算 { error(12)。 i=0。 } else { getsymdo。 if(sym==ppl)++運算 { gendo(lod,levtable[i].level,table[i].adr)。把變量放入棧頂 gendo(lit,0,1)。將常量 1 取到運行棧頂 gendo(opr,0,2)。將棧頂和次棧頂?shù)膬热葑魉阈g加運算結果存放在次棧頂 gendo(sto,levtable[i].level,table[i].adr)。將棧頂?shù)膬热菟腿胱兞恐? getsymdo。 } else { if(sym==mmi)— 運
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1