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

正文內(nèi)容

第六章語法制導(dǎo)翻譯與屬性文法(存儲版)

2024-12-03 14:01上一頁面

下一頁面
  

【正文】 R→ε { R?s:=R?i} 經(jīng)過轉(zhuǎn)換的翻譯模式使用 R的繼承屬性 i和綜合屬性 s。 function T 39。 return syn end。 match(‘*’)。 match(‘/’)。 var node: ↑syntax_tree_node。 2020/11/29 71 LL(1)翻譯法 ? 與遞歸子程序法的區(qū)別與聯(lián)系 ? 都是在掃描過程中進(jìn)行產(chǎn)生式的推導(dǎo),同時(shí)在適當(dāng)?shù)牡胤郊尤胝Z義動作。{e4} ⑶ T 39。.inh 2020/11/29 77 語義棧 語法棧 3*x/y 輸入串 例 對輸入串 3*x/y的翻譯 語法分析動作和語義操作 ⑶ ,*不進(jìn)棧 {e2} T 39。 {e5} {e4} 2020/11/29 80 語義棧 語法棧 3*x/y 輸入串 例 對輸入串 3*x/y的翻譯 語法分析動作和語義操作 ⑵ , /不進(jìn)棧 T 39。 {e4} {e3} 2020/11/29 83 語義棧 語法棧 3*x/y 輸入串 例 對輸入串 3*x/y的翻譯 語法分析動作和語義操作 ⑷, T 39。 2020/11/29 87 L屬性定義的自底向上翻譯 (續(xù) ) ⑶ 如果標(biāo)記性非終結(jié)符 M取代了某個(gè)產(chǎn)生式 A→α{a}β中的動作 a,則按如下方式將 a修改為 a39。 := f()} 2020/11/29 90 L屬性定義的自底向上翻譯 (續(xù) ) ? 注意,執(zhí)行 M的語義規(guī)則時(shí), 可用的,但實(shí)際上,實(shí)現(xiàn)時(shí)會把每個(gè)非終結(jié)符 X的繼承屬性都放在堆棧中緊靠在 X將被歸約出來的位置之下。 := } B ? { := } B1 { := } B2 { := max(, ) } B ? { := } B1 sub { := ? } B2 { := disp (, ) := max (, )} B ? text{ := getheight(,)。 := 。沒有副作用的語法制導(dǎo)定義又稱為屬性文法。 。 := getdepth(,) 2020/11/29 95 L屬性定義的自底向上翻譯 (續(xù) ) 產(chǎn) 生 式 代 碼 段 S ? LB stack[ntop].val2 := stack[top].val2 stack[ntop].val3 := stack[top].val3 L ? ? stack[ntop].val1 := 10 B ? B1 MB2 stack[ntop].val2 := max(stack[top2].val2, stack[top].val2) stack[ntop].val3 := max(stack[top2].val3, stack[top].val3) M ? ? stack[ntop].val1 := stack[top1].val1 B ? B1 sub NB2 stack[ntop].val2:= max(stack[top3].val2, stack[top]. stack[top4].val1) stack[ntop].val3 := max(stack[top3].val3, stack[top].val3+ stack[top4].val1) N ? ? stack[ntop].val1 := stack[top2].val1 B ? text stack[ntop].val2 := getheight(stack[top1].val1,) stack[ntop].val3 := getdepth(stack[top1].val1,) 2020/11/29 96 本章小結(jié) ? 語法分析中進(jìn)行靜態(tài)語義檢查和中間代碼生成的技術(shù)稱為語法制導(dǎo)翻譯技術(shù)。 := L ? ? := 10 B ? B1 MB2 := 。因?yàn)?棧中緊挨在 X1下面的地方,所以該值也可同時(shí)作為。 ? 例如,假設(shè)在某個(gè) LL(1)文法中有一個(gè)形如A→BC的產(chǎn)生式, B的繼承屬性 A的繼承屬性 := f()來計(jì)算的,亦即翻譯模式可能包含如下片斷: A→{ := f()。 ⑵ 在每個(gè)嵌入動作處引入一個(gè)標(biāo)記性非終結(jié)符 (marker nonterminals)。.inh被壓入棧 T 39。.inh被壓入棧 T 39。.inh被壓入棧 {e2} {e1} T 39。{e2} ⑵ T 39。 2020/11/29 70 LL(1)翻譯法 ? 預(yù)先在源文法中的相應(yīng)位置上嵌入語義動作符號 (每個(gè)對應(yīng)一個(gè)語義子程序 ),用于提示語法分析程序,當(dāng)分析到達(dá)這些位置時(shí)應(yīng)調(diào)用相應(yīng)的語義子程序。 return syn end。 → /FT 39。 → *FT 39。 syn := T 39。 2. L屬性定義的遞歸下降翻譯法 2020/11/29 66 3. 與每個(gè)產(chǎn)生式對應(yīng)的程序代碼的工作過程為:按照從左到右的次序,依次對產(chǎn)生式右部的記號、非終結(jié)符和語義動作執(zhí)行如下的動作: 1) 對帶有綜合屬性 x的符號 X,將 x的值保存在 ,并生成一個(gè)函數(shù)調(diào)用來匹配 X,然后繼續(xù)讀入下一個(gè)輸入符號; 2) 對非終結(jié)符 B,生成一個(gè)右部帶有函數(shù)調(diào)用的賦值語句 c:=B(b1,b2,…, bk),其中, b1,b2,…, bk是代表 B的繼承屬性的變量, c是代表 B的綜合屬性的變量; 3) 對于語義動作,將其代碼復(fù)制到語法分析器中,并將對屬性的引用改為對相應(yīng)變量的引用。} E → T ? E → TR R → +T {print(‘+’)。top:=top2。 在執(zhí)行代碼段之前執(zhí)行: ntop:=topr+1 —— r是句柄的長度 執(zhí)行代碼段后執(zhí)行: top:=ntop。.syn := T139。.syn := T139。{ := T 39。 2020/11/29 49 表 對盒子進(jìn)行排版的語法制導(dǎo)定義 產(chǎn)生式 語義規(guī)則 ⑴ S →B :=10 := := ⑵ B → B1B2 := := := max(, ) := max(, ) ⑶ B→B1 sub B2 := := :=max(, ) :=max(, + ) ⑷ B →(B1) := := := ⑸ B →text :=getheight(,) :=getdepth(,) 2020/11/29 50 S→{:=10}B { := 。 2020/11/29 48 屬性設(shè)置 ⑴ point size用于表示盒子中文本的尺寸 (以點(diǎn)來計(jì)算,也就是字號 )。 翻譯模式的設(shè)計(jì) —— 根據(jù)語法制導(dǎo)定義 2020/11/29 46 下面的翻譯模式不滿足要求: S?A1A2 {A1?in:=1。 ) }5{ p r i n t ( ‘ 5 39。 這是一種語法分析和語義動作交錯(cuò)的表示法,它表達(dá)在按深度優(yōu)先遍歷分析樹的過程中何時(shí)執(zhí)行語義動作。.syn ⑷ T 39。.syn ⑶ T 39。.inh := ⑵ T 39。*39。 語法樹 2020/11/29 35 構(gòu)造表達(dá)式的語法樹使用的函數(shù) 1. mknode(op, left, right) 建立一個(gè)標(biāo)記為 op的運(yùn)算符結(jié)點(diǎn),兩個(gè)域 left和 right分別是指向左右運(yùn)算對象的指針。 visit (M)?!?T 39。.inh := := T 39。 ? 如果某個(gè)語法制導(dǎo)定義是 S屬性定義,則可以按照自下而上的順序來計(jì)算分析樹中節(jié)點(diǎn)的屬性。 ? 若依賴圖中無環(huán),則存在一個(gè)拓?fù)渑判颍褪菍傩灾档挠?jì)算順序。 ? 注釋分析樹只是給出了屬性的值,而依賴圖則可以幫助我們確定如何將這些屬性值計(jì)算出來。.inh := T 39。 . i n h = 3 2T139。.inh T 39。 T 39。 ? E→E1 + E2 :=+ ? 語法結(jié)構(gòu)具有規(guī)定的語義 ? 問題:如何根據(jù)被識別出的語法成分進(jìn)行語義處理? ? 亦即怎樣 將屬性值的計(jì)算及翻譯工作同產(chǎn)生式相關(guān)聯(lián)? 2020/11/29 10 典型處理方法一 ? 語法制導(dǎo)定義 ? 通過將屬性與文法符號關(guān)聯(lián)、將語義規(guī)則與產(chǎn)生式關(guān)聯(lián)來描述語言結(jié)構(gòu)的翻譯方案 ? 對應(yīng)每一個(gè)產(chǎn)生式編寫一個(gè)語義子程序,當(dāng)一個(gè)產(chǎn)生式獲得匹配時(shí),就調(diào)用相應(yīng)的語義子程序來實(shí)現(xiàn)語義檢查與翻譯 ? E→E1 + T {:=+} ? T→T1 * F {:=*} ? F →digit {:=} ? 適宜在完成歸約的時(shí)候進(jìn)行 2020/11/29 11 典型處理方法二 ? 翻譯模式 ? 通過將屬性與文法符號關(guān)聯(lián),并將語義規(guī)則插入到產(chǎn)生式的右部來描述語言結(jié)構(gòu)的翻譯方案 ? 在產(chǎn)生式的右部的適當(dāng)位置,插入相應(yīng)的語義動作,按照分析的進(jìn)程,執(zhí)行遇到的語義動作 ? D → T { := } L ? T → int { := integer } ? T → real { := real } ? L → { := }L1,id{addtype(,) } ? L → id{addtype(,)} ? 適宜在進(jìn)行推導(dǎo)時(shí)完成 2020/11/29 12 語法制導(dǎo)定義 ? 語法制導(dǎo)定義是附帶有屬性和語義規(guī)則的上下文無關(guān)文法 ? 屬性是與文法符號相關(guān)聯(lián)的語義信息 ? 語義規(guī)則是與產(chǎn)生式相關(guān)聯(lián)的語義動作 ? 語法制導(dǎo)定義是基于語言結(jié)構(gòu)的語義要求設(shè)計(jì)的,類似于程序設(shè)計(jì),語法制導(dǎo)定義中的屬性類似于程序中用到的數(shù)據(jù)結(jié)構(gòu),用于描述語義信息,語義規(guī)則類似于計(jì)算,用于收集、傳遞和計(jì)算語義信息的。 2020/11/29 6 語法制導(dǎo)翻譯概述 ? 語法制導(dǎo)翻譯的基本思想 ? 在進(jìn)行語法分析的同時(shí),完成相應(yīng)的語義處理。第六章 語法制導(dǎo)翻譯與屬性文法 School of Computer Science amp。 ? 將靜態(tài)檢查和中間代碼生成結(jié)合到語法分
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1