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

正文內容

編譯第七章語法制導翻譯(編輯修改稿)

2024-11-13 02:28 本頁面
 

【文章內容簡介】 (4)E E(1) {E● TC=E(1)● FC。 E● FC=E(1)● FC} ? (5)EA E(1)∧ ? {BACKPATCH(E● TC,NXQ)。 ? EA● FC=E(1)● FC。} ? (6)E EAE(2) ? {E● TC=E(1)● TC。 ? E● FC=MERG(EA● FC,E(2)● FC} 第三節(jié) 布爾表達式的翻譯 ? 五、控制語句中布爾式的翻譯 ? 例如:將布爾式 A∧B∨ C 在語法制導下翻譯成四元式。 INPUT SYM TC FC 四元式 A∧B∨ C ∧B∨ C i ∧B∨ C E 1 2 1.(jnz,a,_,(3)) B∨ C E∧ 1 2 2.(j,_,_.(5)) B∨ C EA 2 ∨ C EAi 2 INPUT SYM TC FC 四元式 ∨ C EAE 3 24 3.(jnz,B,_,0) ∨ C E 3 4 4.(j,_,_,(5)) C E∨ 3 4 C E0 3 C E0 3 E0 i 3 E0 E 35 6 5.(jnz,C,_,0) E0E 36 5 5.(j,_,_,(3)) E 6 5 成功 第四節(jié) 控制語句的翻譯 ? 一、 控制語句的種類: ? 無條件轉換語句 ? 條件語句 ? 迭代語句 ? 循環(huán)語句 ? 分支語句 第四節(jié) 控制語句的翻譯 ? 二、標號和轉移語句 (GOTO) ? 標號和轉移語句 (GOTO) ? (1)標號語句 ? GOTO語句實現無條件轉移,要確定轉移的目的語句,需要給語句加標號。 ? 帶標號的語句形式: L:S ? L是標號 ? (2)標號的定義和使用: ? 先定義后使用 L:S …… ..GOTO L ? 先使用后定義 GOTO L…… L:S 第四節(jié) 控制語句的翻譯 ? 先定義后使用 ? (1)形式: L:S ? …… . ? GOTO L ? …… . ? (2)定義和使用表號的文法 ? S goto L ? Label i: ? (3)翻譯過程: ? 當遇到定義性的標號語句時,將 L歸約為 Label,再將 L填入符號表,如下: NAME INFORMATION CAT …… .. 定義否 地址 …… …… .. L 標號 已 …… .. :即 S對應的入口四元式序號。 當后面遇到 GOTO L語句時,便產生四元式: (j,_,_,P), 其中 P= ? 先使用后定義 ? (1)形式: GOTO L’ ? …… ? GOTO L’ ? …… . ? GOTO L’ ? …… . ? L’:S ? (2)翻譯過程: ? 由于這里是先使用,所以當遇到標號 L’時,它還未定義,故而填入符號表時情況與上不同,表如下: NAME INFORMATION CAT …… .. 定義否 地址 …… …… .. L‘ 標號 未 P …… .. (2)翻譯過程: (a)填符號表:將定義否欄填 “ 未 ” ,地址檔暫填即將生成的四元式序號 P,CAT欄填 “ 標號 ” ; (b)生成四元式 (P) (j,_,_,0),等待回填; NAME INFORMATION CAT …… .. 定義否 地址 …… …… .. L’ 標號 未 q …… .. (c)當遇到第 2個使用性標號 L‘時,修改符號表,僅將 L’這一行的地址欄內容修改為即將生成的四元式序號 q。 (b)生成四元式 (q) (j,_,_,P),其中第四段的 P取自符號表的地址欄在修改前的內容,即形成一個需要回填的鏈,不斷重復 (c)(d). NAME INFORMATION CAT …… .. 定義否 地址 …… …… .. L’ 標號 未 r …… .. (p) (j,_,_,0) (q) (j,_,_,p) (r) (j,_,_,q) 第四節(jié) 控制語句的翻譯 ? 二、標號和轉移語句 (GOTO) ? 先使用后定義 ? (2)翻譯過程: ? e)當定義性語句 L’:S出現時,用 S語句所對應的第一個四元式序號回填這個鏈,即使用 BACKPATCH過程。 ? 注:此鏈表的鏈首在符號表的相應行的地址欄內。 ? (3)形式化的語義子程序: ? 產生式 語義子程序 ? S goto L 程序 1 ? label i: 程序 2 ? {查符號表: ? 若 L不在表中,在表中建 L這行, CAT欄置標號,定義否填 “ 未 ” ,地址為 NXQ。GEN(j,_,_,0)。 ? 若 L在表中,但未定義,則 。P=L 地址; NXQ。GEN(j,_,_,p)。 若 L在表中,已定義,則 :P=; GEN(j,_,_,p)。 } ? {查符號表: ? 若 L不在表中,在表中建 L這行, CAT欄置標號,定義否填 “ 已 ” ,地址為 NXQ。 ? 若 L已在表中,但定義否填 “ 已 ” 或 CAT標號,則出錯; 否則, {將定義否改為 “ 已 ” ; q=; BACKPATCH()。 =NXQ。} } 第四節(jié) 控制語句的翻譯 ? 三、 IF語句的翻譯 ? 描述 IF語句的文法 ? S if E then S(1) ? S if E then S(1) else S(2) ? IF語句的翻譯 ? (1)完成對布爾式 E的翻譯,獲得一元四元式,并留下兩個待續(xù)的語義值 E● EC, E● FC。 ? (2)掃描完 then之后,就得到了 E的真出口,用BACKPATCH(E● EC,NXQ)過程或填; ? (3)翻譯 S(1),它可能會是任何一種語句,總可以遞歸地調用語句翻譯過程來完成,得到一組四元式序列; 第四節(jié) 控制語句的翻譯 ? 三、 IF語句的翻譯 ? IF語句的翻譯 ? (4)若遇到 else,表示 S(1)已翻譯完,應無條件生成一條 GOTO四元式 (j,_,_,0)轉到 S(2)語句后面,以示這個 IF語句已執(zhí)行結束。但這個無條件轉移語句究竟轉到什么地方去 ,是不確定的 .甚至在翻譯完S(2)語句之后也不一定確定下來。遇到 else還表示已獲得 E的假出口。 ? 例如:語句 ? if E1 then if E2 then S1 else S2 else S3 ? 注:由于轉移指令的轉移目標只能等到出口明朗了才能回填。此時應把該待填的四元式序號并鏈后存在與代表整個語句的非終結符 S相聯系的語義棧 S● CHAIN中。 第四節(jié) 控制語句的翻譯 ? 三、 IF語句的翻譯 ? IF語句的翻譯 ? (4)若不遇到 else,那么布爾式的假出口與 S(1)的結束出口都表示 IF語句的結束。 ? (5)翻譯 S(2)語句成四元式序列。它執(zhí)行過后也表示IF語句應該結束了,它的結束出口和 S(1)是一樣的,可將它們出口并鏈,鏈首置于 S● CHAIN. ? 姑,條件語句翻譯之后,除了生成相應 E,S(1),S(2)的四元式之外,還剩下一個待填語句鏈,鏈首在 S● CHAIN中,出口明確后接此回填。 第四節(jié) 控制語句的翻譯 ? 三、 IF語句的翻譯 ? 改寫產生式 ? S if E then S(1)else S(2)改寫為: C if E then T C S(1)else S T S(2) S if E then S(1)改寫為: C if E then S CS(1) 第四節(jié) 控制語句的翻譯 ? 三、 IF語句的翻譯 ? 語義子程序 ? C if E then {BACKPATCH(E● EC,NXQ)。 C● CHAIN=E● FC。} T CS(1) else {q=NXQ。GEN(j,_,_,0)。 BACKPATCH(C● CHAIN,NXQ)。 T● CHAIN=MERG(S(1)● CHAIN,q)} S TS(2) {S● CHAIN=MERG(T● CHAIN, S(2)● CHAIN)} S CS(1) {S● CHAIN=MERG(T● CHAIN, S(2)● CHAIN)} 第四節(jié) 控制語句的翻譯 ? 例如:翻譯無條件嵌套語句: ? if a then ? if b then ? A:=2 ? else A:=3 ? ELSE if c then ? A:=4 ? Else A:=5 ? 翻譯成四元式為: (1)(jnz,a,_,0) (2)(j,_,_,0) (3)(jnz,b,_,0) (4)(j,_,_,0) (5)(:=,2,_,A) (6)(j,_,_,0) (7)(:=,3,_,A) (8)(j,_,_,0) 第四節(jié) 控制語句的翻譯 ? (1)(jnz,a,_,0) ? (2)(j,_,_,0) ? (3)(jnz,b,_,0) ? (4)(j,_,_,0) ? (5)(:=,2,_,A) ? (6)(j,_,_,0) ? (7)(:=,3,_,A) ? (8)(j,_,_,0) (8)(j,_,_,6) (9)(jnz,c,_,11) (10)(j,_,_,13) (11)(:=,4,_,A) (12)(j,_,_,8) (13)(:=,5,) a S4(A:=5) b S1(A:=2) S2(A:=3) c S3(A:=4)
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1