




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄1.緒論11.1概述11.2設(shè)計(jì)目的11.3設(shè)計(jì)題目及要求12.背景知識(shí)22.1語(yǔ)法制導(dǎo)翻譯方法22.2屬性文法22.3幾種常見(jiàn)的中間語(yǔ)言32.4四元式的簡(jiǎn)介33.設(shè)計(jì)過(guò)程43.1設(shè)計(jì)思路43.2實(shí)現(xiàn)54.上機(jī)調(diào)試運(yùn)行54.1代碼調(diào)試界面及結(jié)果64.2執(zhí)行及結(jié)果65.注意事項(xiàng)76.總結(jié)8參考文獻(xiàn)9附錄101. 緒論1.1概述“編譯原理”是一門研究設(shè)計(jì)和構(gòu)造編譯程序原理課程,是計(jì)算機(jī)各專業(yè)的一門重要的專業(yè)課。編譯原理這門課程蘊(yùn)含著計(jì)算機(jī)學(xué)科中解決問(wèn)題的思路和解決問(wèn)題的方法,對(duì)應(yīng)用軟件和系統(tǒng)軟件的設(shè)計(jì)與開(kāi)發(fā)有一定的啟發(fā)和指導(dǎo)作用?!熬幾g原理”是一門實(shí)踐性很強(qiáng)的課程,要掌握這門課程中的思想,就必
2、須要把所學(xué)到的知識(shí)應(yīng)用于實(shí)踐當(dāng)中。而課程設(shè)計(jì)是將理論與實(shí)踐相互聯(lián)系的一種重要方式。1.2設(shè)計(jì)目的課程設(shè)計(jì)是對(duì)學(xué)生的一種全面綜合素質(zhì)訓(xùn)練,是與課堂聽(tīng)講、自學(xué)和練習(xí)相輔相成的必不可少的一個(gè)教學(xué)環(huán)節(jié)。通常,設(shè)計(jì)題中的問(wèn)題比平時(shí)的練習(xí)題要復(fù)雜很多,但也更接近實(shí)際。編譯原理這門課程安排的課程設(shè)計(jì)的目的是旨在要求學(xué)生進(jìn)一步鞏固課堂上所學(xué)的理論知識(shí),深化理解和靈活掌握教學(xué)內(nèi)容,選擇合適的數(shù)據(jù)邏輯結(jié)構(gòu)解決問(wèn)題,然后編制算法和程序完成設(shè)計(jì)要求,從而進(jìn)一步培養(yǎng)學(xué)生獨(dú)立思考問(wèn)題、分析問(wèn)題、解決實(shí)際問(wèn)題的能力。1.3設(shè)計(jì)題目及要求基于這個(gè)學(xué)期所學(xué)習(xí)的內(nèi)容以及自己所掌握到的知識(shí),本次我所要設(shè)計(jì)的題目是賦值語(yǔ)句的四元式生
3、成。要求: (1)設(shè)計(jì)語(yǔ)法制導(dǎo)生成賦值語(yǔ)句的四元式的算法;(2)編寫(xiě)代碼并上機(jī)調(diào)試運(yùn)行通過(guò);(3)輸入一賦值語(yǔ)句;(4)輸出相應(yīng)的表達(dá)式的四元式;2.背景知識(shí)2.1語(yǔ)法制導(dǎo)翻譯方法 語(yǔ)法制導(dǎo)翻譯的方法就是為每個(gè)產(chǎn)生式配上一個(gè)翻譯子程序(稱語(yǔ)義動(dòng)作或語(yǔ)義子程序),并在語(yǔ)法分析的同時(shí)執(zhí)行這些子程序。語(yǔ)義動(dòng)作是為產(chǎn)生式賦予具體意義的手段,它一方面指出了一個(gè)產(chǎn)生式所產(chǎn)生的符號(hào)串的意義,另一方面又按照這種意義規(guī)定了生成某種中間代碼應(yīng)做哪些基本動(dòng)作。在語(yǔ)法分析的過(guò)程中,當(dāng)一個(gè)產(chǎn)生式獲得匹配(對(duì)于自頂向下分析)或用于規(guī)約(對(duì)于自底向上分析)時(shí),此產(chǎn)生式相應(yīng)的語(yǔ)義子程序就進(jìn)入工作,完成既定的翻譯任務(wù)。語(yǔ)法制導(dǎo)
4、翻譯分為自底向上語(yǔ)法制導(dǎo)翻譯和自頂向下語(yǔ)法制導(dǎo)翻譯。2.2屬性文法屬性文法是編譯技術(shù)中用來(lái)說(shuō)明程序語(yǔ)言語(yǔ)義的工具,也是當(dāng)前實(shí)際應(yīng)用中比較流行的一種語(yǔ)義描述方法。屬性是指與文法符號(hào)的類型和值等有關(guān)的一些信息,在編譯中用屬性描述處理對(duì)象的特征。屬性文法是一種適用于定義語(yǔ)義的特殊文法,即在語(yǔ)言的文法中增加了屬性的文法,它將文法符號(hào)的語(yǔ)義以“屬性”的形式附加到各個(gè)文法的符號(hào)上,再根據(jù)產(chǎn)生式所包含的含義,給出每個(gè)文法符號(hào)屬性的求值規(guī)則,從而形成一種帶有語(yǔ)義屬性的上下文無(wú)關(guān)文法,即屬性文法。屬性文法也是一種翻譯文法,屬性有助于更詳細(xì)的指定文法中的代碼生成動(dòng)作。2.3幾種常見(jiàn)的中間語(yǔ)言 (1)抽象語(yǔ)法樹(shù)(2
5、)逆波蘭表示法(3)三地址代碼在編譯程序中,三地址代碼語(yǔ)言的具體實(shí)現(xiàn)通常有三種表示方法:四元式、三元式和間接三元式。2.4四元式的簡(jiǎn)介四元式是具有四個(gè)域的記錄(即結(jié)構(gòu)體)結(jié)構(gòu),這四個(gè)域?yàn)椋海╫p,arg1,arg2,result)其中,op為運(yùn)算符,arg1、arg2及result為指針,他們可指向有關(guān)名字在符號(hào)表中的登記項(xiàng)或一臨時(shí)變量(也可空缺)。常用的三地址語(yǔ)句與相應(yīng)的四元式對(duì)應(yīng)如下:X=y op z 對(duì)應(yīng)(op,y,z,x)X=-y 對(duì)應(yīng)(uminus,y,_,x)X=y 對(duì)應(yīng)(=,y,_,x)Par x1 對(duì)應(yīng)(par,x1,_,_)Call p 對(duì)應(yīng)(call,_,_,p)Goto
6、L 對(duì)應(yīng)(j,_,_,L)If x rop y goto L 對(duì)應(yīng)(jrop,x,y,L)注意規(guī)則: 如果op是一個(gè)算術(shù)或邏輯運(yùn)算符,則result總是一個(gè)新引進(jìn)的臨時(shí)變量,它用來(lái)存放運(yùn)算結(jié)果。四元式出現(xiàn)的順序與表達(dá)式計(jì)值的順序是一致的,四元式之間的聯(lián)系是通過(guò)臨時(shí)變量實(shí)現(xiàn)的。四元式由于其表示更接近程序設(shè)計(jì)的習(xí)慣而成為一種普遍采用的中間代碼形式。3.設(shè)計(jì)過(guò)程3.1設(shè)計(jì)思路(1)定義部分:定義常量、變量、數(shù)據(jù)結(jié)構(gòu)。 (2)初始化:設(shè)立算符優(yōu)先分析表、初始化變量空間(包括堆棧、結(jié)構(gòu)體、數(shù)組、臨時(shí)變量等(3)控制部分:從鍵盤(pán)輸入一個(gè)表達(dá)式符號(hào)串; (4)利用算符優(yōu)先分析算法進(jìn)行表達(dá)式處理:根據(jù)算符優(yōu)先
7、分析表對(duì)表達(dá)式符號(hào)串進(jìn)行堆棧(或其他)操作,輸出分析結(jié)果,如果遇到錯(cuò)誤則顯示錯(cuò)誤信息。3.2實(shí)現(xiàn)本設(shè)計(jì)主要通過(guò)C語(yǔ)言來(lái)實(shí)現(xiàn)。C語(yǔ)言的語(yǔ)法結(jié)構(gòu)類型很多,從實(shí)習(xí)的角度可分為以下六類:1 明語(yǔ)句。如各種數(shù)據(jù)類型說(shuō)明(整型、實(shí)型、布爾型、字符型、復(fù)型、雙精度型、枚舉、子界、數(shù)組、集合、文件、記錄、指針等),各種數(shù)據(jù)空間特性說(shuō)明(如公用語(yǔ)句,共名語(yǔ)句,等價(jià)語(yǔ)句等),初值語(yǔ)句。實(shí)習(xí)重點(diǎn)是內(nèi)存空間的分配方法。2 序結(jié)構(gòu)語(yǔ)句。典型代表是各類表達(dá)式(如算術(shù)表達(dá)式、布爾表達(dá)式、字符表達(dá)式、位表達(dá))及相應(yīng)的賦值語(yǔ)句。實(shí)習(xí)重點(diǎn)是算術(shù)表達(dá)式的翻譯方法。3 制結(jié)構(gòu)語(yǔ)句。常見(jiàn)的有轉(zhuǎn)移語(yǔ)句、條件語(yǔ)句和各種分叉語(yǔ)句。實(shí)習(xí)重點(diǎn)是
8、拉鏈返填的方法。 4 子程序結(jié)構(gòu)。指子程序、函數(shù)、過(guò)程這類結(jié)構(gòu)的定義和調(diào)用。實(shí)習(xí)重點(diǎn)是啞實(shí)結(jié)合的方法。5 環(huán)結(jié)構(gòu)。如計(jì)數(shù)循環(huán)、條件循環(huán)等。實(shí)習(xí)重點(diǎn)是循環(huán)化簡(jiǎn)的方法。6 式語(yǔ)句。主要指輸入輸出語(yǔ)句的格式加工。4.上機(jī)調(diào)試運(yùn)行 在VC+中c語(yǔ)言環(huán)境下調(diào)試運(yùn)行4.1代碼調(diào)試界面及結(jié)果4.2執(zhí)行及結(jié)果輸入一語(yǔ)句:a=(b+c)*2-3)/d對(duì)應(yīng)的輸出應(yīng)該為:(1)(+,b,c,A)(2)(*,2,A,B)(3)(-,3,B,C)(4)(/,C,d,D)(5)(=,C,_,a)圖如下所示:5.注意事項(xiàng)(1)表達(dá)式中允許使用運(yùn)算符(+-*/)、分割符(括號(hào))、字符i,結(jié)束符#; (2)如果遇到錯(cuò)誤的表達(dá)式
9、,應(yīng)輸出錯(cuò)誤提示信息(該信息越詳細(xì)越好); (3)測(cè)試用的表達(dá)式事先放在文本文件中,一行存放一個(gè)表達(dá)式,同時(shí)以分號(hào)分割。同時(shí)將預(yù)期的輸出結(jié)果寫(xiě)在另一個(gè)文本文件中,以便和輸出進(jìn)行對(duì)照6.總結(jié)實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),當(dāng)然也是檢驗(yàn)學(xué)習(xí)成果的標(biāo)準(zhǔn)。在經(jīng)過(guò)一段時(shí)間的學(xué)習(xí)之后,我們需要了解自己的所學(xué)應(yīng)該如何應(yīng)用在實(shí)踐中,因?yàn)槿魏沃R(shí)都源于實(shí)踐,歸于實(shí)踐,所以要將所學(xué)的知識(shí)在實(shí)踐中來(lái)檢驗(yàn)。在做設(shè)計(jì)寫(xiě)論文期間,我遇到了好多問(wèn)題,比如:程序總是出現(xiàn)錯(cuò)誤,執(zhí)行不了等等。但是在周圍同學(xué)的幫助下,這些問(wèn)題都得到了解決。由于對(duì)知識(shí)的不了解,許多地方不是很懂,需要通過(guò)其他同學(xué)和老師的指點(diǎn)才能明白。感謝周圍同學(xué)的大力幫助
10、還有老師的諄諄教導(dǎo),才使我完成此次的結(jié)課論文。通過(guò)這次的設(shè)計(jì),我得到了許多寶貴的經(jīng)驗(yàn)。經(jīng)驗(yàn)如下:思想上,學(xué)會(huì)了用堅(jiān)持不懈的精神去解決問(wèn)題,很多事情看起來(lái)很簡(jiǎn)單,但實(shí)際做起來(lái)會(huì)發(fā)現(xiàn)有許多很困難。中間有許多你想不到的東西。學(xué)習(xí)上,使自已在大學(xué)所以的知識(shí)在這次得到實(shí)踐,學(xué)到一些書(shū)本上無(wú)法學(xué)到的經(jīng)驗(yàn),對(duì)編譯原理有了進(jìn)一步的認(rèn)識(shí)。同時(shí),也明白了知識(shí)是需要實(shí)踐的,很多你能說(shuō)出來(lái)的東西,但是在實(shí)際應(yīng)用的時(shí)候,并不是那么順利。所以以后,我們要注重理論與實(shí)踐的結(jié)合。 這次設(shè)計(jì)考察了我們這一學(xué)期的知識(shí),熟練的話可以很容易的做出來(lái),不熟練的需要翻書(shū)擦能得到解決,在這次四元式的設(shè)計(jì)中,充分應(yīng)用了老師上課所講的知識(shí),是
11、我對(duì)此有了更深的了解。并且通過(guò)此次設(shè)計(jì),對(duì)之前掌握不太好的現(xiàn)在也能熟練運(yùn)用了。參考文獻(xiàn)【1】編譯原理教程(第四版)主編:胡元義【M】西安電子科技大學(xué)出版社【2】編譯原理作者:胡倫俊、徐蘭芳、駱婷【M】電子工業(yè)出版社附錄#include #include #define MAX 100 void SET_Mul_Div(int i,int m); void SET_Add_Sub(int j,int m); void print(); int m=0;int count=0;char tempvar=A;int temp;char stringMAX; /用于存放表達(dá)式 int main() i
12、nt pMAX; char ch; int c=-1,q=0; printf(請(qǐng)輸入賦值語(yǔ)句:n); while(ch = getchar()!=n) stringm+=ch; if(ch=|ch=+|ch=-|ch=*|ch=/) count+; else if(ch=() p+c=m-1; else if(ch=) q=m-1; SET_Mul_Div(pc,q); /從左括號(hào)處理到又括號(hào) SET_Add_Sub(pc,q); temp=(int)tempvar-1; tempvar=(char)temp; stringpc=stringm-1=tempvar; c-; temp=(int
13、)tempvar+1; tempvar=(char)temp; /*調(diào)用生成四元式的函數(shù)*/ print(); /*判斷是否成功*/ if(count=0) printf(Successful!n); else printf(Wrong!); printf(n); system(pause); void SET_Mul_Div(int i,int m) /處理乘除運(yùn)算 for(i+;i=m-1;i+) if(stringi=*|stringi=/) printf(%c %c %c %c)n,stringi,stringi-1,stringi+1, tempvar); stringi-1=str
14、ingi=stringi+1=tempvar; count-; temp=(int)tempvar+1; tempvar=(char)temp; void SET_Add_Sub(int j,int m) /處理加減運(yùn)算 j+; for(;j=m-1;j+) if(stringj=+|stringj=-) printf(%c %c %c %c)n,stringj,stringj-1,stringj+1,tempvar); stringj-1=stringj=stringj+1=tempvar; count-; temp=(int)tempvar+1; tempvar=(char)temp; /
15、*打印*/ void print() int i; for(i=0;i=m-1;i+)/處理乘除運(yùn)算 if(stringi=*|stringi=/) printf(%c %c %c %c)n,stringi,stringi-1,stringi+1,tempvar); stringi-1=stringi=stringi+1=tempvar; count-; temp=(int)tempvar+1; tempvar=(char)temp; int j; for(j=0;j=m-1;j+)/處理加減運(yùn)算 if(stringj=+|stringj=-) printf(%c %c %c %c)n,stringj,stringj-1,stringj+1,tempvar); stringj-1=stringj=st
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《水循環(huán)的原理與意義:初中地理教學(xué)教案》
- 2022學(xué)年上海進(jìn)才中學(xué)高一(下)期中歷史試題及答案
- 詩(shī)歌鑒賞技巧與方法:高一語(yǔ)文詩(shī)歌教學(xué)教案
- 書(shū)包蘋(píng)果250字(9篇)
- 八面山公司團(tuán)建活動(dòng)方案
- 公交公司清明節(jié)活動(dòng)方案
- 公交愛(ài)心活動(dòng)方案
- 公眾互動(dòng)展覽活動(dòng)方案
- 公眾微信推廣活動(dòng)方案
- 公共機(jī)構(gòu)節(jié)能活動(dòng)方案
- 福建省福州市2023?2024學(xué)年高一下冊(cè)期末考數(shù)學(xué)試卷附解析
- 2024年中國(guó)鐵路成都局集團(tuán)有限公司招聘考試《鐵路基本常識(shí)》真題庫(kù)及答案
- 生態(tài)草場(chǎng)使用權(quán)轉(zhuǎn)讓協(xié)議
- 糧食熏蒸作業(yè)管理制度
- 醫(yī)院醫(yī)保獎(jiǎng)懲管理制度
- 2025年中級(jí)經(jīng)濟(jì)師之中級(jí)經(jīng)濟(jì)師金融專業(yè)題庫(kù)練習(xí)試卷A卷附答案
- Python數(shù)據(jù)科學(xué)與機(jī)器學(xué)習(xí)結(jié)合試題及答案
- 2025-2030中國(guó)EHS管理軟件行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 海鮮水產(chǎn)電商商業(yè)計(jì)劃書(shū)
- 高考數(shù)學(xué)基本技能試題及答案
- 建筑工程項(xiàng)目的整體策劃與實(shí)施試題及答案
評(píng)論
0/150
提交評(píng)論