毛片在线视频观看,一级日韩免费大片,在线网站黄色,澳门在线高清一级毛片

薈聚奇文、博采眾長、見賢思齊
當(dāng)前位置:公文素材庫 > 計劃總結(jié) > 工作總結(jié) > 編譯原理課設(shè)總結(jié)

編譯原理課設(shè)總結(jié)

網(wǎng)站:公文素材庫 | 時間:2019-05-29 21:39:32 | 移動端:編譯原理課設(shè)總結(jié)

編譯原理課設(shè)總結(jié)

董楠楠1006010101

經(jīng)過一個星期的編譯原理課程設(shè)計,在老師的指導(dǎo)以及小組同學(xué)的互相幫助

下順利完成該課程設(shè)計。通過該課程設(shè)計,收獲很多。

此次課設(shè),我們小組用的是java語言,在課設(shè)過程中,用到了以前開發(fā)過程中所沒有的探索過的很多新方法,最直接的影響就是讓我對java語言的認(rèn)識與理解更近一層。并且掌握了什么是編譯程序,編譯程序工作的基本過程及其各階段的基本任務(wù),對課本上的知識有了更深的理解。

因為本實驗用了java語言編寫,個人覺得相比C語言模塊更加清晰明了。在該詞法分析程序中,我們用了java中的split方法對輸入串進(jìn)行分割,簡單易懂。其次,在字符匹配過程中,引進(jìn)了正則表達(dá)式,讓輸入串與之匹配,極大地縮減程序的繁瑣性。同時,java的面對對象的性質(zhì)在程序中得到充分的體現(xiàn),在代碼的編寫過程中,將各種判定封裝為函數(shù),主函數(shù)通過調(diào)用這些封裝函數(shù)完成功能,摒棄了C語言結(jié)構(gòu)化的繁瑣,使整個處理函數(shù)清晰可讀。在測試多個用例時,發(fā)現(xiàn)程序的很多小錯誤,但最后都能夠一一解決,尤其在這個過程中,我也充分體會到了團(tuán)隊合作的力量。此次課設(shè)更加深了對java語言的認(rèn)識,并熟悉了java語言中正則表達(dá)式的用法。

通過該課程設(shè)計,全面系統(tǒng)的理解了編譯原理程序構(gòu)造的一般原理和基本實現(xiàn)方法。能夠把學(xué)過的計算機編譯原理的知識強化,并通過自己設(shè)計的程序表現(xiàn)出來,加深了對理論知識的理解,同時也激發(fā)了學(xué)習(xí)的積極性。課程設(shè)計中的第二個程序?qū)唵伪磉_(dá)式文法構(gòu)造算符優(yōu)先分析器比較復(fù)雜,在調(diào)試時出現(xiàn)了很多問題,經(jīng)過大量的修改和一遍又一遍地調(diào)試,最后把錯誤全都改正沒有做到根據(jù)文法得到相應(yīng)的算符優(yōu)先表,而是在程序中直接給出,這是程序的一個小缺陷。

擴展閱讀:編譯原理課設(shè)報告

北華航天工業(yè)學(xué)院

《編譯原理》課程設(shè)計

課程設(shè)計題目:編譯程序構(gòu)造作者所在系部:計算機科學(xué)與工程系作者所在專業(yè):計算機科學(xué)與技術(shù)作者所在班級:作者學(xué)號:作者姓名:指導(dǎo)教師姓名:完成時間:

201*年6月18日

課程設(shè)計任務(wù)書

課題名稱指導(dǎo)教師孫紅艷《編譯原理》課程設(shè)計完成時間李肖麗201*.6.20B07513職稱副教授學(xué)生姓名總體設(shè)計要求班級總體設(shè)計要求:課程設(shè)計內(nèi)容共給定1個題目,每個學(xué)生按照課程設(shè)計要求,在規(guī)定的兩周時間內(nèi)獨立完成。題目:編譯程序構(gòu)造涉及內(nèi)容:詞法分析、語法分析、語義分析生成中間代碼工作內(nèi)容及時間進(jìn)度安排第一周:星期一:設(shè)計動員,布置課程設(shè)計任務(wù),查閱資料,制定方案,進(jìn)行程序方案設(shè)計。第一周:星期二星期五:編寫和調(diào)試程序第二周:星期一星期三:編寫和調(diào)試程序第二周:星期四:整理,撰寫設(shè)計報告。第二周:星期五:驗收,提交設(shè)計報告,評定成績。畢業(yè)設(shè)計成果1、課程設(shè)計報告書一份2、源程序清單一份3、成果使用說明書一份

摘要

編譯原理是計算機科學(xué)與技術(shù)專業(yè)一門重要的專業(yè)課,它具有很強的理論性與實踐性,目的是系統(tǒng)地向?qū)W生介紹編譯系統(tǒng)的結(jié)構(gòu)、工作原理以及編譯程序各組成部分的設(shè)計原理和實現(xiàn)技術(shù),在計算機本科教學(xué)中占有十分重要的地位。計算機語言之所以能由單一的機器語言發(fā)展到現(xiàn)今的數(shù)千種高級語言,就是因為有了編譯技術(shù)。編譯技術(shù)是計算機科學(xué)中發(fā)展得最迅速、最成熟的一個分支,它集中體現(xiàn)了計算機發(fā)展的成果與精華。

本課設(shè)是詞法分析、語法分析、語義分析的綜合,主要是鍛煉學(xué)生的邏輯思維能力,進(jìn)一步理解編譯原理的方法和步驟。

關(guān)鍵詞:詞法分析語法分析語義分析

目錄

第1章課程設(shè)計目的....................................................1第2章課程設(shè)計內(nèi)容....................................................1第3章設(shè)計方案介紹....................................................2

3.1模塊劃分及模塊調(diào)用..............................................2第4章程序源代碼......................................................2第5章程序測試數(shù)據(jù)和結(jié)果.............................................14第6章課程設(shè)計總結(jié)...................................................17參考文獻(xiàn)...............................................................18

第1章課程設(shè)計目的

《編譯原理》課程設(shè)計是編譯原理課程必不可少的一個環(huán)節(jié),通過課程設(shè)計,加深對編譯原理的教學(xué)內(nèi)容的了解,以及實現(xiàn)編譯原理各部分知識的融合。進(jìn)而提高學(xué)生分析問題、解決問題,從而運用所學(xué)知識解決實際問題的能力。

第2章課程設(shè)計內(nèi)容

1.題目:編譯程序構(gòu)造

2.內(nèi)容:涉及詞法分析、自下而上語法分析程序的實現(xiàn):SLR(1)分析器的實現(xiàn)以及生成中間代碼。

3.具體要求

根據(jù)LR分析算法構(gòu)造SLR(1)分析程序,并完成語法分析動作(當(dāng)需要一個單詞時,調(diào)用詞法分析程序獲。,同時完成語義分析生成四元式輸出。要求程序具有通用性,改變文法時只需改變程序的數(shù)據(jù)初值,無需改變程序主體;

要求完成一條說明語句、一條算數(shù)表達(dá)式和賦值語句的翻譯,生成中間代碼。構(gòu)造其用于SLR(1)分析的識別活前綴的DFA以及action表和goto表。然后編程實現(xiàn)。(關(guān)于詞法分析部分只需識別出與此文法相關(guān)的單詞即可(+,*,(,),id,=))。

4.程序設(shè)計提示:

(1)分析棧設(shè)計時可以用一個棧完成,也可以設(shè)計三個棧:一個符號棧,一個狀態(tài)棧,一個語義棧,則歸約時,則需要在符號棧中退掉n個符號,在狀態(tài)棧中退掉n個符號(n為產(chǎn)生式符號個數(shù)),語義棧中退掉n個符號對應(yīng)的語義;

(2)終結(jié)符表和非終結(jié)符表的組織和預(yù)測分析程序中相同(將符號對應(yīng)到一個數(shù)字,表示在分析表中對應(yīng)的下標(biāo))。

(3)action表中的錯誤處理:簡化的錯誤處理:當(dāng)查找action表出現(xiàn)空白時,則當(dāng)前單詞無法移進(jìn)和規(guī)約,可簡單的認(rèn)為當(dāng)前單詞為多余的單詞,則拋棄當(dāng)前單詞,讀下一單詞繼續(xù)分析。

5.程序擴展要求

有能力的同學(xué)可將編譯程序擴展布爾表達(dá)式的分析和四元式生成,布爾表達(dá)式的翻譯參見教材(胡元義《編譯原理教程》)104105頁。

1

第3章設(shè)計方案介紹

3.1模塊劃分及模塊調(diào)用

本系統(tǒng)總體是三個模塊,一個是詞法分析模塊;一個是語法分析模塊;一個是語義分析模塊。

其中詞法分析作為語法分析的子程序調(diào)用。模塊調(diào)用如圖3-1所示:

詞法分析器analyse()語法分析器scan()

圖3-1模塊調(diào)用圖

第4章程序源代碼

程序源代碼如下:#include#include#include#include#include#include#includeintLetter(charch){if(isalpha(ch))return1;return0;}

intDigit(charch){if(ch>47&&ch

intfuhaobiao2[100];charsiyuanshi[100][100];#defineMAXSIZE1024typedefstruct{

intstate[MAXSIZE];charsign[MAXSIZE];charmean[MAXSIZE][100];inttop;}SeqStack;

SeqStack*Init_SeqStack(){SeqStack*s=newSeqStack;if(!s){cout=MAXSIZE){coutstate[s->top]=a;s->sign[s->top]=b;strcpy(s->mean[s->top],c);

}}

//出棧

voidPop_SeqStack(SeqStack*s){

if(Empty_SeqStack(s))cout

7,-1,-1,-1,8,-1,-1,-1,4,5,6,-1,-1,9,-1,-1,-1,100,-1,-1,-1,-1,-1,-1,102,10,-1,102,102,-1,-1,-1,-1,-1,-1,104,104,-1,104,104,-1,-1,-1,-1,-1,-1,106,106,-1,106,106,-1,-1,-1,-1,7,-1,-1,-1,8,-1,-1,-1,13,5,6,7,-1,-1,-1,8,-1,-1,-1,-1,12,6,7,-1,-1,-1,8,-1,-1,-1,-1,-1,11,-1,-1,103,103,-1,103,103,-1,-1,-1,-1,-1,-1,101,10,-1,101,101,-1,-1,-1,-1,-1,-1,9,-1,-1,14,-1,-1,-1,-1,-1,-1,-1,105,105,-1,105,105,-1,-1,-1,-1};SeqStack*A=Init_SeqStack();

Push_SeqStack(A,0,"#","_");//將初態(tài)和"#"壓入棧中Acoutfilename;

ifstreaminstuf(filename,ios::in);

cout

cout

while(1){i1=0;if(a==""||a=="")//濾去空格{instuf.get(a);while(a==""||a==""){instuf.get(a);}continue;}

elseif(Letter(a)||a=="_"){intflag=0;while(Letter(a)||a=="_"||Digit(a)){token[i1]=a;//將當(dāng)前讀入的字符送入token數(shù)組i1++;instuf.get(a);f1=1;}//查表是否已存在該標(biāo)志符for(l=0;l

strcpy(string,token);for(i1=0;i1

{cout

Push_SeqStack(A,analysis_table[A->state[n1]][n2],VN[s],r);

//入棧規(guī)約狀態(tài)

break;}case1:{

cout

if(NT[n2]==VN[s])break;}cout

}

intn1=A->top,n2;for(n2=0;n2

break;}cout

cout

F.PALCE=P;}

狀態(tài)ACTIONGOTOid=+*();#ETF0S11S22S7S63453S9S84r210r2r25r4r4r4r46S7S611457r6r6r6r68acc9S7S612510S7S61311S9S1412r1S10r1r113r3r3r3r314r5r5r5r5測試源文件如下圖5-1所示:

圖5-1測試源文件

程序執(zhí)行結(jié)果如下圖5-2、5-3所示:

15

圖5-2

圖5-3

16

第6章課程設(shè)計總結(jié)

通過這次課程設(shè)計,我對編譯分析的整個過程有了更進(jìn)一步的認(rèn)識,加深了對編譯原理所學(xué)內(nèi)容的理解和掌握,并且實現(xiàn)了編譯原理各部分知識的融合,進(jìn)而提高了自己思考問題、分析問題,從而運用所學(xué)知識解決實際問題的能力。另外,我對編譯程序的各個階段的實現(xiàn)過程也有了更加深刻的理解。

課程設(shè)計既能鍛煉我們的動手能力,又能加深我們對所學(xué)知識的理解。理論與實踐相結(jié)合的學(xué)習(xí)方式讓我們在享受興趣的同時又使我們受益匪淺。本次程序設(shè)計采用C++語言實現(xiàn),在編寫分析程序的過程中,我們首先應(yīng)該從整體上把握程序的設(shè)計思想,確定其實現(xiàn)結(jié)構(gòu),對每個函數(shù)的具體功能建立明確的概念,然后再進(jìn)行代碼的編寫。通過自己的努力,我最終成功完成了這次課程設(shè)計。

最后,我衷心感謝在課程設(shè)計過程中給予我細(xì)心指導(dǎo)與幫助的老師和同學(xué)。通過本次課程設(shè)計,我明白,在遇到問題時,首先要自己尋求解決方法,培養(yǎng)自己的獨立思考能力;如果憑借自我能力無法解決,可以通過查閱書籍或者利用網(wǎng)絡(luò)搜索相關(guān)信息以解決問題,培養(yǎng)自己的自學(xué)能力;抑或請教同學(xué)和老師,培養(yǎng)自己的溝通合作能力。正是在解決這些問題的過程中,我學(xué)習(xí)到了課本之外的實用而寶貴的編程經(jīng)驗,還提升了自己各方面的能力,取得了一定的進(jìn)步!

17

參考文獻(xiàn)

[1]嚴(yán)蔚敏,吳偉國.數(shù)據(jù)結(jié)構(gòu).北京:清華大學(xué)出版社,201*

[2]陳火旺,劉春林等.程序設(shè)計語言編譯原理(第3版).北京:國防工業(yè)出版社,

201*

[3]呂映芝,張素琴,蔣維杜編著.編譯原理.北京:清華大學(xué)出版社,1998[4]胡倫駿,徐蘭芳,劉建農(nóng)編著.編譯原理.北京:電子工業(yè)出版社,201*[5]胡元義.編譯原理教程(第二版).西安:西安電子科技大學(xué)出版社,201*

18

評語指導(dǎo)教師評語及課設(shè)成績課程設(shè)計成績:_________________指導(dǎo)教師:_________________日期:________年____月____日19

友情提示:本文中關(guān)于《編譯原理課設(shè)總結(jié)》給出的范例僅供您參考拓展思維使用,編譯原理課設(shè)總結(jié):該篇文章建議您自主創(chuàng)作。

來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。


編譯原理課設(shè)總結(jié)》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請保留原作者信息,謝謝!
鏈接地址:http://m.seogis.com/gongwen/743450.html