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

正文內(nèi)容

pl0-編譯程序講解-免費(fèi)閱讀

2025-08-28 22:41 上一頁面

下一頁面
  

【正文】 move(1, a, b, c)。 cal move(n1, buf, from, to)。 ... end。 begin x := a[i]。一個過程結(jié)束時將釋放相應(yīng)的子符號表 解決作用域檢查問題。 //find base l level down while (l0) {b1=s[b1]。 P=0? 返回 解釋執(zhí)行的流程圖 執(zhí)行指令 i N Y 幾條 特殊指令 的 解釋執(zhí)行 過程 出口 — opr 0 0 RA DL SL b . . t M t b t=b1。 ?CAL L A 調(diào)用過程 , 填寫 靜態(tài)鏈 、 動態(tài)鏈 、 返回地址 ,給出 被調(diào) 用過程 的 基地址 值, 送 入基址寄存器 B中,目標(biāo)程序的 入口地址 A的值 送 指令地址寄存器 P中,使指令從 A開始執(zhí)行 interpret 三個寄存器賦初值 t:=0。 過程 體 入口 時的處理 code[table[tx0].adr].a=cx。 //生成轉(zhuǎn)向過程體入口的指令 …… while (sym == procsym) {getsymdo()。 if sym=thensym then getsym else error(16)。 ? 由于 write語句的 語法 write(exp{,exp})。 int factor (bool* fsys, int * ptx, int lev)。 declbegsys: [constsym,varsym,procsym]。 ? 在 語法單位 分析結(jié)束 時,調(diào)用 TEST,檢查當(dāng)前符號是否屬于調(diào)用該語法單位時應(yīng)有的 后跟 符號集合。 /* 查找名字 */ if (i == 0) {error(11)。 while(strcmp(table[i].name, id) != 0)。 case procedur: /* 過程名字 */ table[(*ptx)].level = lev。 switch (k) {case constant: /* 常量名字 */ if (num amax) {error(31)。 } 注意: amp。dx)。 procedure P1。 struct tablestruct { char name[al]。 expressiondo(nxtlev, ptx, lev)。 // 處理項 } return 0。 由 程序 開始,按規(guī)則右部 (語法描述圖 箭頭 方向 )進(jìn)行分析 遇到 非終結(jié)符 ,則 調(diào)用 相應(yīng)的 處理過程 遇到 終結(jié)符 ,則判斷當(dāng)前讀入的單詞是否與該終結(jié)符 相匹配 ,若匹配,再讀取下一個單詞繼續(xù)分析。 ssym[‘’]=minus。 ?出錯處理 程序,對詞法和語法 、 語義分析遇到的錯誤給出在源程序中 出錯的位置 和與 錯誤 性質(zhì)有關(guān) 的編號,并進(jìn)行錯誤恢復(fù)。 end。 r1: … … B過程 call C。 ?構(gòu)成 EBNF的元素:非終結(jié)符,終結(jié)符,開始符,規(guī)則 ?EBNF的元符號: 用左右尖括號括起來的內(nèi)容為 非終結(jié)符 ∷ =或 → 讀做 ‘ 定義為 ’ , → 的 左部由 右部 定義 | 讀做 ‘ 或 ’ 表示右部候選內(nèi)容 { } 表示花括號內(nèi)的內(nèi)容 可重復(fù) 任意次或限定次數(shù) [ ] 表示方括號內(nèi)的內(nèi)容為 任選項 ( ) 表示圓括號內(nèi)的內(nèi)容 優(yōu)先 PL/0語言文法的 EBNF表示 〈 程序 〉 〈 分程序 〉 . 〈 分程序 〉 [常量說明部分 ][變量說明部分 ][過程說明部分 ]語句 〈 常量說明部分 〉 CONST〈 常量定義部分 〉 {, 〈 常量定義 〉 }; 〈 無符號整數(shù) 〉 〈 數(shù)字 〉 {〈 數(shù)字 〉 } 〈 變量說明部分 〉 VAR〈 標(biāo)識符 〉 {, 〈 標(biāo)識符 〉 }; 〈 標(biāo)識符 〉 〈 字母 〉 {〈 字母 〉 |〈 數(shù)字 〉 } …… 表達(dá)式 〉 ∷=[+| ]〈 項 〉 {( +|) 〈 項 〉 } 〈 項 〉 ∷= 〈 因子 〉 {( *|/) 〈 因子 〉 } 〈 因子 〉 ∷= 〈 標(biāo)識符 〉 |〈 無符號整數(shù) 〉 |‘( ’ 〈 表達(dá)式 〉 ‘) ’ …… 167。 { 輸出 n !} write(sum)。 begin { 讀入 n } read(n)。 BEGIN CALL P。 ( * P的局部過程說明部分 *) VAR X。 4 符號表的一般形式討論 167。 1 PL/0語言 167。 ( * 變量說明部分 *) PROCEDURE P。 BEGIN CALL Q。 call factorial。 sum := sum + fact。 分程序 語句 分程序 程序 分程序 . 語法圖 ident read end 。 var b1,b2。 var b,c。 end end. SL:靜態(tài)鏈 DL:動態(tài)鏈 RA:返回地址 0 演示執(zhí)行過程 167。 enum symble wsym[norw]。 ?sym:存放單詞的類別 如: initial:= 60;中各單詞對應(yīng)的類別為: initial ident, ‘:=‘ bees, 60 number, ‘。 //處理項 } else {termdo(nxtlev, ptx, lev)。 } 〈 因子 〉 ∷= 〈 標(biāo)識符 〉 |〈 無符號整數(shù) 〉 |‘( ’ 〈 表達(dá)式 〉 ‘) ’ int factor(bool* fsys, int* ptx, int lev) {if(sym == ident) /* 因子為常量或變量 */ getsymdo。 ?標(biāo)識符的屬性 :種類,所在 層次 ,值 和分配的 相對位置 。//常量 無 層次 var a1,a2,a3。 過程 P2在code的 入口 (0) jmp 0 0 CX (1) jmp 0 0 (2) jmp 0 0 …… (k) jmp 0 0 名字 類 值 層次 地址 大小 變量說明部分 : :=var標(biāo)識符 {, 標(biāo)識符 }; if(sym==varsym)/* 收到變量聲明符號,開始處理變量聲明 */ {getsymdo。 } if (sym == semicolon) {getsymdo。 } 過程 ENTER的實現(xiàn) /* 在名字表中加入一項 * * k: 名字種類 const,var or procedure * ptx: 名字表尾指針 * lev: 名字所在的層次 ,以后所有的 lev都是這樣 * pdx: 當(dāng)前應(yīng)分配變量的相對地址,分配后增加 1 */ void enter(enum object k, int* ptx,int lev, int* pdx) {(*ptx)++。 table[(*ptx)].adr = (*pdx)。 ?當(dāng) 語法語義正確時 ,就 生成 相應(yīng)語句功能的 目標(biāo)代碼 int position(char* id) {int i。 /* 賦值語句格式錯誤 */ i = 0。 PL/0編譯程序?qū)φZ法錯誤的處理: (1)對于 易于校正 的錯誤,如丟了逗號,分號等,指出出錯位置, 加以校正 ,繼續(xù)進(jìn)行分析。 ) r op e nd t he n do 項 i dent n umbe r ( . 。 int statement(bool* fsys, int * ptx, int lev)。 end end。例如 ge
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1