版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
編譯原理實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)一
一、實(shí)驗(yàn)名稱:詞法分析器的設(shè)計(jì)二、實(shí)驗(yàn)?zāi)康模?,詞法分析器能夠識(shí)別簡(jiǎn)單語(yǔ)言的單詞符號(hào)2識(shí)別出并輸出簡(jiǎn)單語(yǔ)言的基本字.標(biāo)示符.無(wú)符號(hào)整數(shù).運(yùn)算符.和界符三、實(shí)驗(yàn)要求:給出一個(gè)簡(jiǎn)單語(yǔ)言單詞符號(hào)的種別編碼詞法分析四、實(shí)驗(yàn)原理:1、詞法分析程序的算法思算法的基本任務(wù)是從字符串表示的源程序中識(shí)別出具有獨(dú)立意義的單詞符號(hào)基本思想是根據(jù)掃描到單詞符號(hào)的第一個(gè)字符的種類,拼出相應(yīng)的單詞符號(hào)2、程序流程(1)主程(2)掃描子程輸入要分析的語(yǔ)判斷讀入字符是否為#調(diào)用掃描、分析程輸出單詞符號(hào)二元結(jié)束
Token清Get當(dāng)前字符=標(biāo)示符 常數(shù) 表中查找 結(jié)束 Erro(基本字 用戶標(biāo)示符輸出二元結(jié)束3、各種單詞符號(hào)對(duì)應(yīng)的種別碼單詞符號(hào) 種別碼 助記符 內(nèi)碼值while 1 while -if 2 if -else 3 else -switch 4 switch -case 5 case -標(biāo)識(shí)符 6 id id位置常數(shù) 7 num num位置+ 8 + -
- 9 - -* 10 * -<= 11 relop LE< 11 relop LT== 11 relop EQ= 12 = -; 13 ; -五、實(shí)驗(yàn)內(nèi)容:1、實(shí)驗(yàn)分析編寫程序時(shí),先定義幾個(gè)全局變量a[token[(均為字符串?dāng)?shù)),c,s(char型(int型,a[]用來(lái)存放輸入的字符串token[另一個(gè)則用來(lái)幫助識(shí)別單詞符號(hào)s在分析的字符。字符串輸入之后,逐個(gè)分析輸入字符,判斷其是否‘#析完畢,結(jié)束分析程序,若否則通過(guò)intdigit(charc字符還是算術(shù),分別為用以判斷數(shù)字或字符的情況,算術(shù)符的判斷可以在switch還要通過(guò)函數(shù)intlookup(chartoken[]來(lái)判斷標(biāo)識(shí)符和保留字2實(shí)驗(yàn)詞法分析器源程序:#include<#include<#include<inti,j,kcharc,s,a[20],token[20]={'0'}intletter(chars) if((s>=97)&&(s<=122))return(1) elsereturn(0)}intdigit(chars)
j=0 get() while(s!='#'){memset(token,0,20) switch(s { case'a' case'b': case'c' case'd' case'e' case'f' case'g' case'h' case'i' case'j' case'k' case'l' case'm' case'n' case'o' case'p' case'q' case'r' case's' case't' case'u' case'v'
首先通過(guò)關(guān)系圖法構(gòu)造出終結(jié)符間的左右優(yōu)先函數(shù)f(a),g(a)通過(guò)左右優(yōu)先函數(shù)比較當(dāng)前讀入終結(jié)符與前一個(gè)讀入終結(jié)符間的優(yōu)先關(guān)系分析后適時(shí)的以四元式形式輸出相關(guān)的符號(hào)。2、通過(guò)優(yōu)先函數(shù)關(guān)系圖構(gòu)造優(yōu)先函數(shù)優(yōu)先函數(shù) + * i ( )f 4 6 6 2 6g 3 5 7 7 2優(yōu)先函數(shù)關(guān)系圖g+ g+ g* g g( ff* fi f( 四、實(shí)驗(yàn)內(nèi)容:1、實(shí)驗(yàn)分本實(shí)驗(yàn)所用文法是G[E]:E->E+E|E-E|E*E|E/E|(E)E->0|1|2|3|……|9根據(jù)此文法編寫程序時(shí),算術(shù)表達(dá)式的求解過(guò)程需要用到算術(shù)符號(hào)的優(yōu)先判斷,定義兩個(gè)字符串?dāng)?shù)組optr[]opnd[]用來(lái)模擬棧存放算術(shù)符和操作數(shù),用a[來(lái)存放表達(dá)式字符串過(guò)函數(shù)intf(charc)和intg(charc)判斷運(yùn)算符之間的優(yōu)先關(guān)系操作。流程圖如下:
輸入算數(shù)表達(dá)式,#初始化loptr[1]=#用get()取一個(gè)待分析字符Optr[1和s判斷S是否為運(yùn)算存入opnd[] get()其他情況error Floptrj]<g(s Floptr[j]=g(s Floptr[j]>g(s當(dāng)前字符棧optr 棧頂元素出棧結(jié)2,實(shí)驗(yàn)程序源代碼#include<chara[21],optr[10],op,s;intopnd[10],i,j,k,x1,x2,x3intoperand(chars{if((s>=48)&&(s<=57))return1elsereturn0}intf(chars
心得體會(huì):通過(guò)本次
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程投標(biāo)擔(dān)保合同模板
- 合同模板全書模板
- 船舶緊急救援合同模板
- 原木噴漆設(shè)備轉(zhuǎn)讓合同模板
- 餐飲合伙創(chuàng)業(yè)合同模板
- 首飾成品進(jìn)貨合同模板
- 礦山爆破勞務(wù)合同模板
- 合同模板是幾號(hào)字體
- 零售門店 服務(wù) 合同模板
- 酒店保潔合同模板
- 北京市建筑施工起重機(jī)械設(shè)備管理的若干規(guī)定
- 新建時(shí)速200公里客貨共線鐵路設(shè)計(jì)暫行規(guī)定
- 實(shí)行特殊工時(shí)工作制實(shí)施方案
- 微波測(cè)量概述及信號(hào)源測(cè)量技術(shù):4微波頻譜分析儀工作原理第四章
- 數(shù)控加工市級(jí)技能大師工作室的申報(bào)報(bào)告
- 現(xiàn)金工資領(lǐng)取單
- ED密封及其配合ED圈尺寸
- 人教版小學(xué)數(shù)學(xué)二年級(jí)上冊(cè)《長(zhǎng)度單位認(rèn)識(shí)米尺及米》PPT
- 三級(jí)醫(yī)院臨床重點(diǎn)??平ㄔO(shè)情況自評(píng)表
- 蘇教版五年級(jí)上冊(cè)數(shù)學(xué)多邊形的面積整理與練習(xí)教學(xué)設(shè)計(jì)
- KET詞匯拼寫題學(xué)生版
評(píng)論
0/150
提交評(píng)論