




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、編譯原理課程設(shè)計,詞法分析,語法分析,小型編譯器,實驗報告編譯原理語法分析上機實驗讀書工程報告黑龍江大學(xué)“編譯原理課程設(shè)計”讀書報告學(xué)院年級專業(yè)學(xué)號姓名報告日期成績計算機科學(xué)技術(shù)學(xué)院2013計算機科學(xué)與技術(shù)0 2015年7月3日s黑龍江大學(xué)計算機科學(xué)技術(shù)學(xué)院e1、開發(fā)環(huán)境簡介 0此次編譯原理課程設(shè)計的編譯器的實現(xiàn)是基于vc+6.0編譯環(huán)境下實現(xiàn)的。0對于vc+6.0,它是microsoft公司推出的開發(fā)win32環(huán)境程序,面向?qū)ο蟮目梢暬删幊滔到y(tǒng)。它不僅具有程序框架自動生成、 靈活方便的類管理、代碼編寫和界面設(shè)計集成交互操作、可開發(fā) 多種程序等優(yōu)點。回vc+6.0不僅是一個c+編譯器,而且
2、是一個基于windows操 作系統(tǒng)的可視化集成開發(fā)環(huán)境。visual c+6.0明顯縮短程式編輯、編譯及連結(jié)花費的時間,在大型軟件計劃上尤其顯著。0二、基本理論闡述.當(dāng)前理論什么是編譯程序0語言翻譯程序把一種語言(稱作源語言)書寫的程序翻譯成另一種語言(稱作目標(biāo)語言)的等價程序。刖2 高級語言程序的處理過程0 3編譯過程囹 三、小型編譯器系統(tǒng)架構(gòu)(最重要)01) .w法分析: 0詞法分析是編譯過程的第一個階段。這個階段的任務(wù)是從左到右一個字符一個字符地讀入源程序,對構(gòu)成源程序的字符流進(jìn)行 掃描和分解,從而識別出一個個單詞(也稱單詞符號或符號)。這 里所謂的單詞是指邏輯上緊密相連的一組字符,這些
3、字符具有集 體含義。比如標(biāo)識符是由字母字符開頭,后跟字母、數(shù)字字符的 字符序列組成的一種單詞。保留字(關(guān)鍵字或基本字)是一種單 詞,此外還有算符.界符等等。13 2) 語法分析:0語法分析是編譯過程的第二過程。語法分析的任務(wù)是在詞法分析的基礎(chǔ)上將單詞序列分解成各類語法短語;如“程序”、“語句”、“表達(dá)式”等。一般這種語法短語,也稱語法單位,可表示成語 法樹。0詞法分析和語法分析本質(zhì)上都是對源程序的結(jié)構(gòu)進(jìn)行分析。但詞法分析的0任務(wù)僅對源程序進(jìn)行線性掃描即可完成,比如識別標(biāo)識符,因為標(biāo)識符的結(jié)構(gòu)是字母打頭的字母和數(shù)字串,這只要順序掃描輸入流,遇到既不是字母又不是數(shù)字字符時,將前面所發(fā)現(xiàn)的所有 字母
4、和數(shù)字組合在一起而構(gòu)成單詞標(biāo)識符。但這種線性掃描則不 能用于識別遞歸定義的語法成分,比如就不能用此辦法去匹配表 達(dá)式中的括號。囹目前,已存在許多語法分析的方法。但就產(chǎn)生語法樹的方向而 言,可大致把他們分為自底向上和自頂向下兩大類。03)中間代碼生成:忸在進(jìn)行了上述的語法分析和語義分析階段的工作之后,有的編 譯程序?qū)⒃闯绦蜃兂梢环N內(nèi)部表示形式,這種內(nèi)部表示形式叫做 中間語言或中間代碼。所謂“中間代碼”是一種結(jié)構(gòu)簡單.含義 明確的記號系統(tǒng)可以設(shè)計為多種多樣的形式,重要的設(shè)計原則為 兩點:一是容易生成;二是容易將它翻譯成目標(biāo)代碼。很多編譯 程序采用了一種近似“三地址指令,的“四元式”中間代碼,這 種
5、四元式的形式為:(運算符,運算對象1,運算對象2,結(jié)果);刖4)目標(biāo)代碼生成:s這一階段的任務(wù)是把中間代碼變換成特定機器上的絕對指令代碼或可重定位的指令或匯編指令代碼。這是編譯的最后階段,它 的工作與硬件系統(tǒng)結(jié)構(gòu)和指令含義有關(guān),這個階段的工作很復(fù)雜, 涉及到硬件系統(tǒng)功能部件的應(yīng)用、機器指令的選擇、各種數(shù)據(jù)類 型變量的存儲空間分配以及寄存器和后援寄存器的調(diào)度等。0此外,本程序不涉及語義分析,代碼優(yōu)化等代碼優(yōu)化階段。0本次課程設(shè)計設(shè)計出的小型編譯器,適用范圍比較小,局限性較高,綜合度不算強。語言不是很嚴(yán)謹(jǐn),有待改進(jìn)。第一部分:語法分析程序;(1) 功能介紹輸入ll (1)文法的字符串,ll (1)
6、程序可以分析其匹配過程。輸入一個字符串,算符優(yōu)先程序可以分析其規(guī)約移進(jìn)的過程。0 (2)相關(guān)理論忸語法分析對輸入串的處理(進(jìn)棧與出棧,歸約和接受)是獨立 于語法分析之外單獨的一部分,但是其只能分析有限的輸入串, 無法完全任意識別。相關(guān)理論0將表達(dá)式文法的預(yù)測分析表用二維數(shù)組儲存,然后當(dāng)分析符號 串依次掃描符號串中的字符,進(jìn)行匹配輸出即可。忸(3)程序流程圖(3 ll模擬程序?qū)崿F(xiàn)流程:篇二:編譯原理課程設(shè)計c詞法掃描器及語法分析器實現(xiàn)s編譯原理課程設(shè)計報告0課題名稱:c 詞法掃描器及語法分析器實現(xiàn)忸提交文檔學(xué)生姓名:提交文檔學(xué)生學(xué)號:刖同組成員名單:指導(dǎo)教師姓名:金軍0指導(dǎo)教師評閱成績:指導(dǎo)教師
7、評閱意見: 0提交報告時間:2014年6月xx日錄 2 1課程設(shè)計目標(biāo)32分析與設(shè)計132程序結(jié)構(gòu)程序代碼實現(xiàn)8代構(gòu)83.2.1globals.h 8322scan.c103.2.3parser.c173.4util.c 293.5test.cpp .3604測試結(jié)果370 4.1.給出標(biāo)準(zhǔn)測試程序的詞法和語法分析結(jié)果:3704.1.1詞法分析結(jié)果374.1.2 語法分析結(jié)果40 42修改代碼后的結(jié)果:(來自:www.xiel寫論文網(wǎng):編譯原理課程設(shè)計,詞法分析,語法分析,小型編譯器驗告)4104.2.1修改41s 5. 本課程設(shè)計我的獨創(chuàng)工作 436總結(jié)43 01課程設(shè)計目標(biāo)忸學(xué)生在學(xué)習(xí)編譯
8、原理課程過程中,結(jié)合各章節(jié)的構(gòu)造編譯 程序的基本理論,要求用c或c+語言描述及上機調(diào)試,實現(xiàn)一 個c-minus小編譯程序(包括詞法分析,語法分析等重要子程 序),使學(xué)生將理論與實際應(yīng)用結(jié)合起來,受到軟件設(shè)計等開發(fā)過 程的全面訓(xùn)練,從而提高學(xué)生軟件開發(fā)的能力。0要求: 0 (1)設(shè)計詞法分析器 0設(shè)計各單詞的狀態(tài)轉(zhuǎn)換圖,并為不同的單詞設(shè)計種別碼。將詞法分析器設(shè)計成供語法分析器調(diào)用的子程序。功能包括:0 a.具備預(yù)處理功能。將不翻譯的注釋等符號先濾掉,只保留要翻譯的符號串,即要求設(shè)計0 一個供詞法分析調(diào)用的預(yù)處理子程序;b.能夠拼出語言中的個單詞;返回(種別碼,屬性值)。(2)語法分析0要求用學(xué)
9、習(xí)過的自底向上或自頂向下的分析方法等,實現(xiàn)對表達(dá)式、各種說明語句、控制語句進(jìn)行語法分析。若語法正確,則 用語法制導(dǎo)翻譯法進(jìn)行語義翻譯;生成并打印出語法樹;若語法 錯誤,要求指出出錯性質(zhì)和出錯位置(行號)。刖2分析與設(shè)計0 2.1程序結(jié)構(gòu)囹 本程序采用c+語言以面向?qū)ο蟮乃枷刖帉?,程序分為兩部? 詞法分析(scanner)和語法分析(parser)。0掃描程序執(zhí)行詞法分析,并將字符序列收集到token中,并將每一行的token打印出來。?0實現(xiàn)方法:scanner:手工實現(xiàn)parser:遞歸下降?囹系統(tǒng)總圖:0程序流程:0在程序中,詞法分析獲取所有token,并將獲取的token存儲在 sca
10、nner對象的 0 tokenstring中。然后parser類的語法分析程序就根據(jù) tokenstring中的token進(jìn)行語法 分析,生成語法樹,最后打印 語法樹。同時,這也是程序的流程。刖?囹掃描器:c慣用的詞法01> 語言的關(guān)鍵字:else if int return void while囹2、專用符號:+* /=!= = ;,()/*/3、其他標(biāo)記是id和num,通過下列正則表達(dá)式定義:id = letter letter* num = digit digit* letter = a|.|z|a|.|zdigit = 0|.|9篇三:編譯原理課程設(shè)計詞法分析器和語法分析器編譯原
11、理課程設(shè)計報告院系專業(yè)年級學(xué)號姓名2013年12月 8日刖課程設(shè)計一:手工設(shè)計c語言的詞法分析器0 一、設(shè)計內(nèi)容 忸手工設(shè)計c語言的詞法分析器,結(jié)合狀態(tài)轉(zhuǎn)換圖的原理完成對c 語言源程序的基本單詞的分析及提取,并設(shè)計相應(yīng)的數(shù)據(jù)結(jié)構(gòu)保ii存提取出來的單詞。以及對c語言中的保留字的處理策略,實現(xiàn) 一個完整的c語言的詞法分析器的編寫。0二.設(shè)計目的忸通過本實驗的設(shè)計更具體的理解詞法分析器的工作機制。同時 更理解c語言的結(jié)構(gòu)體系。從而更深刻的透析編譯原理過程。a三、設(shè)計平臺0(1) intel(r) core(tm) i3-2310m cpu 2.10ghz 2.10ghz0 (2)內(nèi)存4g0 2軟件環(huán)
12、境刖(1) window8 professor0 (2) visual c+6.0 開發(fā)軟件 囹3、開發(fā)語言:c語言。0四、需求分析: 0詞法分析程序又稱詞法分析器或詞法掃描器??梢詥为殲橐粋€程序;也可以作為整個編譯程序的一個子程序,當(dāng)需要一個單詞 時,就調(diào)用此法分析子程序返回一個單詞,這里,作為子程序 囹詞法分析器的結(jié)構(gòu): 刖狀態(tài)轉(zhuǎn)換圖的程序?qū)崿F(xiàn)0為便于程序?qū)崿F(xiàn),假設(shè)每個單詞間都有界符或運算符或空格隔開,并引入下面的全局變量及子程序:0 1) ch存放最新讀進(jìn)的源程序字符囹2) strtoken存放構(gòu)成單詞符號的字符串s 3)buffer字符緩沖區(qū)s 4) struct keytype存放保
13、留字的符號和種別五、概要設(shè)計保留字表的設(shè)計結(jié)構(gòu):基本功能狀態(tài)轉(zhuǎn)換:六.詳細(xì)設(shè)計0 1. getchar 讀一個字符到ch中0 2. getbc讀一個非空白字符到ch中 0 3. concat把char中字符連接到strtoken之后刖4. letter判斷char中字符是否為字母 0 5. digit判斷ch中字符是否為數(shù)字囹6. reserve用strtoken中的字符串查找保留字表,并返回保留字種別碼,若返回0零,則非保留字 13 7. retract把char中字符回送到緩沖區(qū) 0源程序:is#include stdio.h m #include stdlib.h 刖 #include
14、conio.h 0 #include string.h 忸 #define n 47 0 char ch='0' /保留字個數(shù)存放最新讀進(jìn)的源程序 字符0 字符緩沖區(qū)char strtoken20=0; /存放構(gòu)成單詞符號的字符串 char buffer257=0;忸 struct keytype 0 char keyname256;囹 int value;0keyn=$id/o/$int/l/auto/2/break3,case/4/charf constp6pcontinuep7hdefault»8bdo,9*double/10/else,ll/e
15、num/12/extern/13/float/14/ for/15/goto/16/if,17/int/18/long/19/register/20/return/21,short/22/signed/23/sizeof/24/static/25/struct,26,switch,27,typedef,28,union,29,unsigned,30, void/31/volatile32/while/33/=/34/+/35/-36/*37/38/%39/l,40/;/41/(/42/)/43/?,44/clear/45/#/46;刖讀一個字符到ch中/*保留字結(jié)構(gòu)*/s int i;子過程*
16、/ void getchar()m if(strlen(buffer)o)刖0 else忸囹void getbc() 讀一個非空白字符到ch中囹int i;0 while(strlen(buffer)0i=0; ch=bufferi; for(;i256;i+)bufferi=bufferi+l; if(ch!=''&&ch!='n'&&ch!='0&# 39;) break;囹ch二'0'ch=buffero;
17、 for(i=0;i256;i+) bufferi=bufferi+l;0町0 void concat() 把 ch 連接到 strtoken 之后 ?lchartemp2;s temp0=ch;0 templ='0'0 strcat(strtoken,temp);0 0 bool letter() 判斷ch是否為字母s if(ch='a'&&ch二'z'| |ch二'a'&&ch='z&
18、amp;#39;)0 else囹0 bool digit()囹 else121 int reserve() 用strtoken中的字符查找保留字表,并返回保留 字種別碼,若返回0,則非保留字int i;0for(i=o;in;i+) 囹pll0 void retract() 把ch中的字符回送到緩沖區(qū)0 int i;刖 if (ch!二'0')s 0 ch='0'町0 /*詞法分析器*/0 keytype returnword()0 strcpy(strtokenao);0 int c;s keytype tempkey;囹 getbc();囹if(ch='a'&&ch='z' | |ch='a' ;&&ch二'
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZTSS 0002-2024 同山燒酒評價規(guī)范
- T-ZJSEIA 007-2024 產(chǎn)品碳足跡評價技術(shù)規(guī)范光伏組件
- 二零二五年度健康產(chǎn)業(yè)商家入駐戰(zhàn)略合作協(xié)議
- 2025年度離婚財產(chǎn)分割與子女財產(chǎn)繼承協(xié)議
- 二零二五年度個人之間房產(chǎn)交易保密協(xié)議
- 二零二五年度按揭房屋借款協(xié)議書(公積金貸款)
- 2025年度籃球運動員轉(zhuǎn)會合同解除條件
- 二零二五年度超市租賃合同書:超市租賃及綠色環(huán)保產(chǎn)品合作協(xié)議
- 二零二五年度智能交通投資暗股協(xié)議
- 2025年度職業(yè)電競選手私教訓(xùn)練協(xié)議
- 血液透析并發(fā)糖尿病足護(hù)理查房課件
- 超市消防應(yīng)急疏散預(yù)案
- 當(dāng)代藝術(shù)博覽會的學(xué)術(shù)性建構(gòu)歷程與問題
- 寺廟線上運營策劃方案
- 《Unit2Myfavoriteseason》教學(xué)設(shè)計課件
- 七年級上冊生物期末測試卷(含答案)
- 路基分層-表格-
- 離婚協(xié)議書電子版下載
- 中醫(yī)藥膳學(xué)124張課件
- 汽車法規(guī)第一章
- Kappa測試數(shù)據(jù)分析報告
評論
0/150
提交評論