![編譯原理實(shí)驗(yàn)報告1_第1頁](http://file4.renrendoc.com/view/3faafc046bcc58add5c0d4c27fb69b5d/3faafc046bcc58add5c0d4c27fb69b5d1.gif)
![編譯原理實(shí)驗(yàn)報告1_第2頁](http://file4.renrendoc.com/view/3faafc046bcc58add5c0d4c27fb69b5d/3faafc046bcc58add5c0d4c27fb69b5d2.gif)
![編譯原理實(shí)驗(yàn)報告1_第3頁](http://file4.renrendoc.com/view/3faafc046bcc58add5c0d4c27fb69b5d/3faafc046bcc58add5c0d4c27fb69b5d3.gif)
![編譯原理實(shí)驗(yàn)報告1_第4頁](http://file4.renrendoc.com/view/3faafc046bcc58add5c0d4c27fb69b5d/3faafc046bcc58add5c0d4c27fb69b5d4.gif)
![編譯原理實(shí)驗(yàn)報告1_第5頁](http://file4.renrendoc.com/view/3faafc046bcc58add5c0d4c27fb69b5d/3faafc046bcc58add5c0d4c27fb69b5d5.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、編譯原理實(shí)驗(yàn)報告103091337 李璐03091339 宗婷婷一、上機(jī)題目:實(shí)現(xiàn)一個簡單語言(CPL)的編譯器(解釋器)二、功能要求:接 收以CPL編寫的程序,對其進(jìn)行詞法分析、語法分析、語法制導(dǎo)翻譯等,然后能夠正確的執(zhí)行程序。三、試驗(yàn)?zāi)康?加深編譯原理基礎(chǔ)知識的理解:詞法分析、語法分析、語法制導(dǎo)翻譯等.加深相關(guān)基礎(chǔ)知識的理解:數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)等3.提高編程能力.鍛煉獨(dú)立思考和解決問題的能力四、題目說明1.數(shù)據(jù)類型:整型變量(常量),布爾變量(常量)取值范圍?, 2, -1, 0, 1, 2, ?, true, false)2、運(yùn)算表達(dá)式:簡單的代數(shù)運(yùn)算,布爾運(yùn)算3、程序語句:賦值表達(dá)式,
2、順序語句,if-else語句,while語句五、環(huán)境配置1. 安裝 Parser Generator Visual C+;2.分別配置 Parser Generator Visual C+;3.使用 Parser Generator 創(chuàng)建一個工程編寫1文件my lexer. 1:編譯 mylexer. 1, 生成 mylexer. h 與 mylexer. c:4.使用 VC+創(chuàng)建 Win32 Console Application 工程并配置該項(xiàng)目:執(zhí)行標(biāo)識符數(shù)字識別器;加入mylexer. h與mylexer. c,編譯工程;注意:每次修改1文件后,需要重新編譯1文件,再重新編譯VC工程六
3、、設(shè)計思路及過程9 *設(shè)計流程:YACC預(yù)定義文法BNF遞歸文法擴(kuò)展實(shí)現(xiàn)函數(shù)?詞法分析LEX的此法分析部分主要利用有限狀態(tài)機(jī)進(jìn)行單詞的識別,在分析該部分之前,首先 應(yīng)該對YACC的預(yù)定義文法進(jìn)行解釋。在YACC中用舟union擴(kuò)充了 yystype的內(nèi)容,使其可 以處理char型,int型,node型,其中Node即為定義的樹形結(jié)點(diǎn),其定義如下: typedef enum TYPE_CONTENT, TYPE.INDEX, TYPE_OP NodeEnum;/* 操作符 */ typedef struct int name; /*操作符名稱*/ int num; /*操作元個數(shù)*/struct
4、 NodeTag * node Cl; /* 操作元地址可擴(kuò)展 */ OpNode;typedef struct NodeTag NodeEnum type; /*樹結(jié)點(diǎn)類型*/* Union必須是最后一個成員*/ union int content; /* 內(nèi)容*/ int index; /* 索引 */OpNode op; /*操作符對象*/); Node;extern int Var26;結(jié)點(diǎn)可以是三種類型(CONTENT, INDEX, OP)。結(jié)點(diǎn)如果是操作符對象(OpNode)的話,結(jié) 點(diǎn)可繼續(xù)遞歸結(jié)點(diǎn)。操作符結(jié)點(diǎn)包括了名稱,個數(shù)和子結(jié)點(diǎn)三個要素,其中子結(jié)點(diǎn)可以為 多個。在YACC
5、定義的文法中將與INTEGER,與VARIABLE綁定,表示對lex返回的值自動進(jìn) 行類型轉(zhuǎn)換。? YACC的語法分析和語義制導(dǎo)在YACC中首先定義了與函數(shù)相關(guān)的文法和與運(yùn)算相關(guān)的文法,其中函數(shù)定義的文法 中可以處理if-else, if, while, print, x二exp;類型,在與運(yùn)算相關(guān)的文法中可以處理+, 一, *, /,二,| |運(yùn)算。在語義制導(dǎo)翻譯部分主要目的是在內(nèi)存建立一顆語法樹來 實(shí)現(xiàn)剛才所說的函數(shù)。擴(kuò)展了 set_index,set_value兩個賦值語句,其操作實(shí)質(zhì)是在內(nèi)存 空間分配index和value的兩種樹結(jié)點(diǎn)。opr這個擴(kuò)展函數(shù)很重要,而且使用了動態(tài)參數(shù), 主
6、要考慮操作符的操作元個數(shù)是可變的,這個也與頭文件“struct NodeTag * nodel;” 的定義思想一致。opr主要在內(nèi)存空間中分配操作符相關(guān)的樹結(jié)點(diǎn)。Set_index, set_value, opr從概念上是完全一致的,目的就是在內(nèi)存中構(gòu)造一顆可以遞歸 的語法樹。程序代碼my lexer. 1文件如下:%(#include #include #include void yyerror(char *);%)%; return WHILE; return IF; return ELSE;return PRINT; yylval.iValue = 0; )return INTEGER;
7、 return INTEGER; La_z yylval. slndex = *yytext - a ; return VARIABLE; 0-9+yylval. iValue = atoi(yytext); yylval. iValue = 1;return INTEGER; -()=+*/%;). return *yytext;return GE; return LE; return EQ; return NE; return NE; return AND; return OR; return NOT;tn+ ; /*去除空格,回車*/ .%printf(int yywrap(void)
8、return 1; myparser. y文件如下:%(#include rtinclude #include include /*屬性操作類型*/Node *opr(int name, int num, );Node *set_index(int value); Node *set_content(int value);void freeNode(Node *p); int exeNode(Node *p); int yylexeNode(void); void yyerror(char *s);int Var26; /* 變量數(shù)組 */ %)%union int iValue; /* 變量值 */ char sIndex; /* 變量數(shù)組索引 */ Node*nPtr; /*結(jié)點(diǎn)地址*/ %token VARIABLE %token INTEGER %token WHILE IF PRINT %nonassoc IFX %nonassoc ELSE%left AND OR
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能農(nóng)業(yè)技術(shù)合作開發(fā)合同(2篇)
- 2025年太原城市職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年哈爾濱職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年廈門興才職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 情緒心理學(xué)應(yīng)用研究-深度研究
- 模特經(jīng)紀(jì)公司國際化策略-深度研究
- 2025年度電視劇拍攝聘用一線影視演員合同
- 2025年度空調(diào)設(shè)備安裝與環(huán)保認(rèn)證服務(wù)合同
- 二零二五年度各類合同:教育培訓(xùn)機(jī)構(gòu)招生訂金協(xié)議
- 2025年度二零二五年度家族財富傳承父母贈與子女房產(chǎn)合同
- 2025江蘇太倉水務(wù)集團(tuán)招聘18人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024-2025學(xué)年人教新版高二(上)英語寒假作業(yè)(五)
- 江蘇省泰州市靖江市2024屆九年級下學(xué)期中考一模數(shù)學(xué)試卷(含答案)
- 沐足店長合同范例
- 《旅游資料翻譯》課件
- 2024年安徽省中考數(shù)學(xué)試卷含答案
- 2024年湖南省公務(wù)員錄用考試《行測》真題及答案解析
- 微項(xiàng)目 探討如何利用工業(yè)廢氣中的二氧化碳合成甲醇-2025年高考化學(xué)選擇性必修第一冊(魯科版)
- 避暑旅游目的地評價指標(biāo)、閾值和評價等級表、人體舒適度、度假氣候指數(shù)和旅游氣候指數(shù)計算方法
- 允許一切發(fā)生:過不緊繃松弛的人生
- 教科版六年級科學(xué)下冊 (廚房里的物質(zhì)與變化)教學(xué)課件
評論
0/150
提交評論