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

正文內(nèi)容

pl0-編譯程序講解-wenkub

2022-09-01 22:41:00 本頁面
 

【正文】 語句 表達(dá)式 : = begin 語句 語句 ) ( ident , PL/0語言的 EBNF表示 ?BNF( BACKUSNAUR FORM) 與 EBNF的介紹 BNF是根據(jù)美國的 John Peter Naur來命名的,它是從語法上描述程序設(shè)計語言的 元語言 。 var ident , 。 n := n 1。 while n 0 do begin m := n。 end。 { 遞規(guī)計算 fact = m! } procedure factorial。 WRITE(D)。 D:=X。 ( * 過程說明部分 *) VAR D。 1 PL/0語言 PL/0功能簡單、結(jié)構(gòu)清晰、可讀性強(qiáng),而又具備了一般高級語言的必備部分,因而其編譯程序能充分體現(xiàn)一個高級語言編譯程序的基本技術(shù)和步驟。 2 PL/0處理機(jī) — 假想棧式機(jī) 167。第二章 PL/0編譯程序的實(shí)現(xiàn) 本章以 PL/0編譯程序 為實(shí)例 , 使大家對編譯程序的實(shí)現(xiàn)建立起 整體概念 ,對編譯程序的構(gòu)造得到一些感性認(rèn)識和初步了解。 3 PL/0編譯程序 167。 ?PL/0語言: PASCAL語言的 子集,用于教學(xué) ?PL/0程序示例 ?PL/0的 語法描述圖 ?PL/0語言 的 EBNF表示 PL/0語言是 PASCAL語言的 子集 ?過程可 嵌套定義,內(nèi)層 可引用包圍它的外層定義的 標(biāo)識符 ,可遞歸調(diào)用 ?數(shù)據(jù)類型 ,只有整型 ?數(shù)據(jù)結(jié)構(gòu) ,只有簡變和常數(shù) ?標(biāo)識符的有效長度是 10 ?語句種類: begin/end、 if、 while、賦值、 read/write、 call、 const、 var、 procedure ?過程無參,最多可 嵌套 三層 ?13個保留字: if、 then、 while、 do、 read、 write、 call、begin、 end、 const、 var、 procedure、 odd ?+、 、 *、 /、 =、 、 、 =、 、 =、 (、 ) PL/0程序示例 CONST A=10。( * P的局部變量說明部分 *) PROCEDURE Q。 IF X0 DO CALL P。 END。 begin if m 0 then begin fact := fact * m。 end。 fact := 1。 end。 。采用 BNF就可說明哪些符號序列是對于某給定語言 在語法上 有效的程序。 var a1。 … C過程 call B。 r4: … B 的局部變量 RA DL SL … C 的局部變量 RA DL SL … B 的局部變量 RA DL SL … A 的局部變量 RA DL SL … 主程序變量區(qū) 0 0 0 T B B 的臨時單元 b 2 =1 20 b 1 =5 0 R A : r 1 DL : 115 SL : 106 R A : r 2 DL : 110 SL : 110 b 2 =2 5 b 1 =2 0 R A : r 3 DL : 106 SL : 106 a 1 =1 5 R A : r 4 DL : 100 SL : 100 m 3 =1 18 m 2 =4 72 m 1 =3 35 R A : 0 D L : 0 T B S L : 0 100 三、 PL/0機(jī)的指令系統(tǒng) f: 功能碼 l: 層次差 (標(biāo)識符 引用層 減去 定義層 ) a: 根據(jù)不同的指令有所區(qū)別 f l a 指令格式: 所有運(yùn)算對棧頂?shù)膬蓚€或一個元素進(jìn)行,并用運(yùn)算結(jié)果代替原來的運(yùn)算對象。 begin c:=b+a。 write(2*c)。 ?表格管理 程序?qū)崿F(xiàn) 變量 , 常量 和 過程 標(biāo)識符的 信息的登錄與查找 。 ?出 錯源 程 序 中是 否 有 錯 誤 ?調(diào) 用 解 釋 過 程 i n t e r p r e t解 釋 執(zhí) 行 目 標(biāo) 程 序打 印 錯 誤結(jié) 束NYYNPL/0編譯程序語法、語義分析的核心 PL/0編譯程序詞法分析的實(shí)現(xiàn) 詞法分析函數(shù) getsym()所識別的單詞: ?保留字或關(guān)鍵字:如: BEGIN、 END、 IF、 THEN等 ?運(yùn)算符 : 如: +、 、 *、 /、: =、 、 =、 =等 ?標(biāo)識符 : 用戶定義的變量名、常數(shù)名、過程名 ?常數(shù) : 如: 2 100等整數(shù) ?界符 : 如: ‘ ,’、 ‘ .’ 、 ‘ 。 ssym[‘+’]=plus。 int num。 表示 終態(tài) ,已 識別出一個 單詞 1 2 35141312109786411空格字母字母數(shù)字非字母數(shù)字?jǐn)?shù)字?jǐn)?shù)字非數(shù)字: = =非 = =非 =, + ( …… PL/0編譯程序語法分析 ?語法分析的設(shè)計與實(shí)現(xiàn) ? 自頂向下的語法分析 ? 遞歸子程序法 (遞歸下降分析器 recursivedescent parser) : 對應(yīng) 每個非終結(jié)符 (語法成分), 編一個獨(dú)立的處理子程序。 遞歸下降語法分析過程隱含著對對語法樹的前序遍歷 〈 表達(dá)式 〉 ∷= [+|]〈 項 〉 {( +|) 〈 項 〉 } int expression(bool* fsys, int* ptx, int lev) {if(sym==plus || sym==minus) {getsymdo。 termdo(nxtlev, ptx, lev)。 factordo(nxtlev, ptx, lev)。 else if (sym == lparen) /* 因子為表達(dá)式 */ {getsymdo。 /* 缺少右括號 */ } } return 0。 符號表結(jié)構(gòu) enum object {constant, variable, procedur}。 } table[txmax]。 var b1,b2。 var d。tx, lev, amp。tx, lev, amp。 }while (sym == ident)。 } else {error(4)。 /* 全局變量 id中已存有當(dāng)前名字的名字 */ table[(*ptx)].kind = k。 break。 break。 若無定義則錯 。 i = tx + 1。 if (i == 0) error(11)。 ...... } } } 〈 因子 〉 ∷= 〈 標(biāo)識符 〉 |〈 無符號整數(shù) 〉 |‘( ’ 〈 表達(dá)式 〉 ‘) ’ int factor(bool* fsys, int* ptx, int lev) //因子的 語義分析 {if(sym == ident) /* 因子為常量或變量 */ {i = position(id, *ptx)。 case procedur: /* 名字為過程 */ error(21)。若不屬于,則 濾去 開始 符號 和 后跟 符號 集合外 的所有符號。 語句 i dent c all be gin i f wh il e re ad wri te . 。 ) r op + * / e nd the n do ?開始符號 集合 bool declbegsys[symnum],statbegsys[symnum],facbegsys[symnum]。 ?后 跟 符 號集合 fsys作為參數(shù):
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1