




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上編譯方法實驗報告姓 名學 號班 級指 導 教 師實驗名稱中間代碼生成器的設計開 設 學 期實 驗 時 間第周評 定 成 績評定人簽字評 定 日 期2011年10月專心-專注-專業(yè)一、 實驗目的熟悉算術表達式的語法分析與中間代碼生成原理。二、 實驗內(nèi)容(1)設計語法制導翻譯生成表達式的四元式的算法;(2)編寫代碼并上機調(diào)試運行通過。輸入算術表達式;輸出語法分析結(jié)果;相應的四元式序列。(3)設計LL(1)分析法或LR(0)分析法的屬性翻譯文法,并根據(jù)這些屬性翻譯文法,使用擴展的語法分析器實現(xiàn)語法制導翻譯。三、 實驗原理及基本步驟算術表達式文法:G(E): E à
2、 E 0 T | T T à T 1 F | FF à i | (E)文法變換:G(E) E à T 0 T T à F 1 FF à i | (E)屬性翻譯文法:E à T 0 “push(SYN, w)” T “QUAT” T à F 1 “push(SYN, w)” F “QUAT”F à i “push(SEM, entry(w)” | (E)其中:push(SYN, w) 當前單詞w入算符棧SYN;push(SEM, entry(w) 當前w在符號表中的入口值壓入語義棧SEM; QUAT 生成四元式函數(shù)
3、iT = newtemp; iiQTj =( SYNk, SEMs-1, SEMs, T); j+; iiipop( SYN, _ ); pop( SEM, _ ); pop( SEM, _ ); push( SEM, T );遞歸下降子程序:數(shù)據(jù)結(jié)構(gòu):SYN 算符棧;SEM 語義棧;四、 數(shù)據(jù)結(jié)構(gòu)設計 使用遞歸的結(jié)構(gòu)進行四元式的設計,同時,運用堆棧結(jié)構(gòu)將四元式的輸出序列打印出來while ( expi='+' | expi='-')syn+i_syn=expi; /push(SYN,w)i+; /read(w)T();quat();while ( expi=&
4、#39;*' | expi='/')syn+i_syn=expi; /push(SYN,w)i+; /read(w)F();quat();void quat()strcpy(qtj,"(, , , )"); /QTj:=(SYNk,SEMs-1,SEMs,temp);qtj1=syni_syn;qtj3=semi_sem-1;qtj5=semi_sem;qtj7=temp;j+;i_syn-; /pop(SYN);i_sem-; /pop(SEM);i_sem-; /pop(SEM);sem+i_sem=temp; /push(SEM,temp);
5、temp+;五、 關鍵代碼分析(帶注釋)及運行結(jié)果#include <iostream>#include "string.h"#include "stdio.h"using namespace std;char syn10; /文法符號棧int i_syn;char sem10; /運算對象棧int i_sem;char exp50; /算術表達式區(qū)int i;char qt3015; /四元式區(qū)int j=0;char temp='q' /臨時變量,取值為r-zint E();int T();int F();void qua
6、t(); /生成四元式函數(shù)int main(int argc, char* argv)printf("please input your expression:"); scanf("%s",exp); /輸入四元式i=0; /read(w) E();if (expi='0')for (i=0;i<j;i+) /輸出四元式序列printf("%sn",qti);elseprintf("err");return 0;int E()T();while ( expi='+' | exp
7、i='-')syn+i_syn=expi; /push(SYN,w)i+; /read(w)T();quat();return 1;int T()F();while ( expi='*' | expi='/')syn+i_syn=expi; /push(SYN,w)i+; /read(w)F();quat();return 1;int F()if ( expi='(')i+; /read(w)E();if ( expi!=')')printf("err");return 0;else if (e
8、xpi>='a' && expi<='p')|(expi>='0' && expi<='9')sem+i_sem=expi; /push(SEM,w)elseprintf("err");return 0;i+; /read(w)return 1;void quat()strcpy(qtj,"( , , , )"); /QTj:=(SYNk,SEMs-1,SEMs,temp);qtj1=syni_syn;qtj3=semi_sem-1;q
9、tj5=semi_sem;qtj7=temp;j+;i_syn-; /pop(SYN);i_sem-; /pop(SEM);i_sem-; /pop(SEM);sem+i_sem=temp; /push(SEM,temp); temp+;六、 總結(jié)與分析我們知道,定義一種語言除了要求定義語法外,還要求定義語義,即對語言的各種語法單位賦予具體的意義。語義分析的任務是首先對每種語法單位進行靜態(tài)的語義審查,然后分析其含義,并用另一種語言形式,即比源語言更加接近于目標語言的一種中間代碼來進行描述這種語言。因此,中間代碼就顯得十分重要,它關系著整個程序語言的正確編譯與否,同時也是進行下一步編譯的重要先決
10、條件。七、 實驗思考題(1)自頂向下法(推導法)從開始符號出發(fā),采用推導運算,試圖自頂向下構(gòu)造語法樹。 自底向上法(歸約法) 從給定的符號串出發(fā),采用歸約運算,試圖自底向上構(gòu)造語法樹。(2)遞歸下降子程序法:遞歸子程序法屬于自頂向下語法分析方法。故又名遞歸下降法。要求文法是LL(1)文法。 LL(1)分析法:LL(1)分析法是指從左到右掃描(第一個 L) 、最左推導(第二個 L)和只查看一個當前符號(括號中的 1)之意;LL(1)分析法又稱預測分析法,屬于自頂向下確定性語法分析方法。要求文法是LL(1)文法。(3)相同點:都要求文法是LL(1)文法;都是自頂向下的分析方法;都通過分析下個字符來判斷該進入哪個狀態(tài)或者調(diào)用哪個函數(shù)。 不同點:LL(1)分析法先建立起預測分析表,通過對分析棧的不斷操作(出棧,入棧)來進行;遞歸下降子程序法是通過函數(shù)間的函數(shù)調(diào)用來實現(xiàn)不同狀態(tài)間的轉(zhuǎn)換,并簡化了代碼。(4)語法制導翻譯是在語法分析過程中,隨著分析(推導或歸約)的逐步進展,每識別出一個語法結(jié)構(gòu),根據(jù)文法的每個規(guī)則所對應的語義子程序進行翻譯的方法;核心技術是構(gòu)造屬性翻譯文法。(5)假定:SEM(m)- 語義棧(屬性傳遞、賦值場所);QTq 四元式區(qū);G(E):E -> T | E+TGEQ(+) | E-TGEQ(-) T ->
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小屋說課課件
- 全國高考數(shù)學卷文科卷1試題及答案
- 小學生課件手勢舞
- 小學生警鐘長鳴課件
- 小學生英語環(huán)保繪本課件
- 32 必修2 第六單元 第27講 基因突變和基因重組
- 拆除工程拆除工程驗收及移交協(xié)議范本
- 《欠條保管與還款計劃調(diào)整合同》
- 知識產(chǎn)權授權合同催告函范本
- 廠房物業(yè)環(huán)境監(jiān)測與污染控制委托合同模板
- 管理學基礎(第3版)全套教學課件
- 兒科護理學(高職)全套教學課件
- 干眼門診建設計劃書
- 【混合式教學模式探究文獻綜述2600字】
- 養(yǎng)老護理員四級理論試題及答案
- 脊柱內(nèi)鏡技術
- 采購詢價單模板
- 心理測量課件-常見量表介紹與應用
- 軍人申請病退評殘醫(yī)學鑒定審查表
- 隆鼻術后護理查房
- 關于進境食用水生動物指定監(jiān)管場地名單
評論
0/150
提交評論