版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言小型分析器實(shí)驗(yàn)報(bào)告一、實(shí)驗(yàn)內(nèi)容與要求內(nèi)容:選擇部分C語(yǔ)言的語(yǔ)法成分,設(shè)計(jì)其詞法分析程序、語(yǔ)法語(yǔ)義分析程序。要求:1、選擇部分C語(yǔ)言的語(yǔ)法成分,設(shè)計(jì)其詞法分析程序、語(yǔ)法語(yǔ)義分析程序。2、設(shè)計(jì)并實(shí)現(xiàn)含多條簡(jiǎn)單賦值語(yǔ)句的語(yǔ)法分析程序,要求有一定的出錯(cuò)提示與恢復(fù)功能。3、設(shè)計(jì)并實(shí)現(xiàn)將簡(jiǎn)單賦值語(yǔ)句翻譯成四元式的語(yǔ)法語(yǔ)義分析程序,要求有一定的出錯(cuò)提示和恢復(fù)功能。二、設(shè)計(jì)方案1、 待分析的簡(jiǎn)化C語(yǔ)言的詞法說(shuō)明:詞法分析程序所輸出的單詞符號(hào)通常表示成如下的二元式:(單詞種別,單詞自身的值)1. 單詞種別單詞種別表示單詞的種類(lèi),它是語(yǔ)法分析需要的信息,一個(gè)語(yǔ)言的單詞符號(hào)如何劃分種類(lèi),分成幾個(gè)種類(lèi),怎樣編碼
2、,它主要取決于處理上的方便,通常的方法是讓每種單詞對(duì)應(yīng)一個(gè)整數(shù)碼,其目的是最大限度地把各個(gè)單詞區(qū)別開(kāi)來(lái)?;咀挚蓪⑵淙w視為一種,也可以一字一種。采用一字一種的分法處理起來(lái)較為方便。標(biāo)識(shí)符一般統(tǒng)歸為一種。常數(shù)可統(tǒng)歸為一種,也可以按類(lèi)型(整型、實(shí)型、布爾型等)分種。運(yùn)算符和界符可采用一符一種的分法,也可以統(tǒng)一為一種。2. 單詞自身的值單詞自身的值是編譯中其他階段所需要的信息??梢圆捎靡韵聝煞N方法來(lái)確定它的值。 如果一個(gè)種別碼對(duì)應(yīng)一個(gè)單詞符號(hào),則種別碼可以代表單詞自身。如果一個(gè)種別碼對(duì)應(yīng)多個(gè)單詞符號(hào),則單詞自身值是單詞符號(hào)的機(jī)內(nèi)碼。 2、單詞符號(hào)的種別編碼方案:表1單詞種別碼單詞符號(hào)種別碼單詞符號(hào)
3、種別碼單詞符號(hào)種別碼main1-23;34int2*2435char3/25=37else5)27=38for628=39while729!=40Letter(letter|digit)*103001000Digitdigit*2031ERROR-1=21,32+22:333、待分析的簡(jiǎn)化C語(yǔ)言的語(yǔ)法規(guī)則說(shuō)明:程序 main()語(yǔ)句塊語(yǔ)句塊語(yǔ)句串語(yǔ)句串語(yǔ)句;語(yǔ)句語(yǔ)句賦值語(yǔ)句|條件語(yǔ)句|循環(huán)語(yǔ)句賦值語(yǔ)句 ID =表達(dá)式條件語(yǔ)句 if條件語(yǔ)句塊循環(huán)語(yǔ)句 while條件語(yǔ)句塊條件(表達(dá)式關(guān)系符表達(dá)式)表達(dá)式項(xiàng)+項(xiàng)|-項(xiàng)項(xiàng)因子*因子|/因子因子 ID | NUM |(表達(dá)式)關(guān)系符|4、所采用的語(yǔ)法分
4、析方法的算法思想和主要步驟:算法思想:語(yǔ)法分析程序是在詞法分析的基礎(chǔ)上,根據(jù)語(yǔ)法規(guī)則,從單詞符號(hào)串中識(shí)別出各種語(yǔ)法成分,同時(shí)進(jìn)行語(yǔ)法檢查,檢查各種語(yǔ)法成分在語(yǔ)法結(jié)構(gòu)上的正確性。遞歸下降分析法是確定的自上而下分析法,這種分析法要求文法是(1)文法。它的基本思想是,對(duì)文法中的每個(gè)非終結(jié)符編寫(xiě)一個(gè)函數(shù)(或子程序),每個(gè)函數(shù)(或子程序)的功能是識(shí)別由該非終結(jié)符所表示的語(yǔ)法成分。由于描述語(yǔ)言的文法常常是遞歸定義的,因此相應(yīng)的這組函數(shù)(或子程序)必然以相互遞歸的方式進(jìn)行調(diào)用,所以將此種分析法稱為遞歸下降分析法。主要步驟:這次的綜合實(shí)驗(yàn)用的是自上向下分析方法中的遞歸下降分析法,步驟如下:構(gòu)造遞歸下降分析程序
5、時(shí),每個(gè)函數(shù)名是相應(yīng)的非終結(jié)符,函數(shù)體則是根據(jù)規(guī)則右部符號(hào)串的結(jié)構(gòu)編寫(xiě)。(1)當(dāng)遇到終結(jié)符a時(shí),則編寫(xiě)語(yǔ)句if(當(dāng)前讀來(lái)的輸入符號(hào)a)讀下一個(gè)輸入符號(hào)。(2)當(dāng)遇到非終結(jié)符A時(shí),則編寫(xiě)語(yǔ)句調(diào)用A()。(3)當(dāng)遇到A規(guī)則時(shí),則編寫(xiě)語(yǔ)句if(當(dāng)前讀來(lái)的輸入符號(hào)FOLLOW(A))eror()。(4)當(dāng)某個(gè)非終結(jié)符的規(guī)則有多個(gè)侯選式時(shí),按LL(1)文法的條件能唯一地選擇一個(gè)侯選式進(jìn)行推導(dǎo)。5、完成語(yǔ)法制導(dǎo)翻譯所用的翻譯模式:本程序采用遞歸下降語(yǔ)法制導(dǎo)的翻譯模式。6、程序的主要算法思想和主要函數(shù)的算法思想及流程:詞法分析程序的主要算法思想算法的基本任務(wù)是從字符串表示的源程序中識(shí)別出具有獨(dú)立意義的單詞符
6、號(hào),其基本思想是根據(jù)掃描到的單詞符號(hào)的第一個(gè)字符的種類(lèi),拼出相應(yīng)的單詞符號(hào)。置初值調(diào)用掃描子程序是否輸入串結(jié)束輸出單詞二元組結(jié)束圖1 詞法分析主程序示意圖掃描子程序的算法思想變量初始化 否是其他符號(hào)運(yùn)算符,界符等符號(hào)字母數(shù)字否是返回忽略空格是否文件結(jié)束 是否關(guān)鍵字Syn為對(duì)應(yīng)關(guān)鍵字的單詞種別碼對(duì)不同符號(hào)給出相應(yīng)的syn值拼字符串拼數(shù)Syn=10Syn=11報(bào)錯(cuò)返回圖2 詞法分析程序流程語(yǔ)法分析程序的算法思想主程序示意圖如圖3所示。置初值調(diào)用scaner讀下一個(gè)單詞符號(hào)調(diào)用lrparser結(jié)束圖3 語(yǔ)法分析主程序示意圖遞歸下降分析程序示意圖如圖4所示。是否否否是lrparser調(diào)用scaner調(diào)
7、用語(yǔ)句塊分析函數(shù)是否單詞串main()源程序是否結(jié)束打印分析成功出錯(cuò)處理圖4遞歸下降分析程序示意圖語(yǔ)句塊分析過(guò)程示意圖如圖5所示。是否是否調(diào)用scaner調(diào)用語(yǔ)句串分析過(guò)程是否是否出錯(cuò)處理出口圖5語(yǔ)句塊分析示意圖語(yǔ)句串分析過(guò)程示意圖如圖6所示。否是調(diào)用statement函數(shù) 調(diào)用scaner調(diào)用statement函數(shù)是否;出錯(cuò)處理否圖6語(yǔ)句串分析示意圖statement (語(yǔ)句) 函數(shù)流程如圖7所示;expression(表達(dá)式)分析過(guò)程如圖8所示;term(項(xiàng))分析過(guò)程如圖9所示;condition(條件)分析過(guò)程如圖10所示;factor(因子)分析過(guò)程如圖11所示。是是是是否否否是否標(biāo)識(shí)
8、符否調(diào)用scaner是否=調(diào)用scaner調(diào)用expression調(diào)用scaner調(diào)用condition調(diào)用語(yǔ)句塊出錯(cuò)處理調(diào)用scaner調(diào)用condition調(diào)用語(yǔ)句塊是否ifififfifififif標(biāo)識(shí)符是否while圖7 statement函數(shù)流程調(diào)用term調(diào)用factor調(diào)用ffactor否是是否*、/調(diào)用scaner調(diào)用factor出錯(cuò)處理否是是否+、-調(diào)用scaner調(diào)用term出錯(cuò)處理圖8 expression分析過(guò)程示意圖 圖9 term分析過(guò)程示意圖否是調(diào)用expression是否邏輯運(yùn)算符調(diào)用scaner調(diào)用expression出錯(cuò)處理圖10 condition分析過(guò)程
9、示意圖否是否是是否否是是否數(shù)字調(diào)用scaner調(diào)用expression出錯(cuò)處理是否標(biāo)識(shí)符是否(是否)調(diào)用scaner調(diào)用scaner圖11 factor分析過(guò)程示意圖語(yǔ)義分析算法思想設(shè)置語(yǔ)義過(guò)程int gen(op,arg1,arg2,result)該函數(shù)是將四元式(op,arg1,arg2,result)送到四元式表中。char *newtemp( )該函數(shù)回送一個(gè)新的臨時(shí)變量名,臨時(shí)變量名產(chǎn)生的順序?yàn)門(mén)1,T2,.int merg(p1,p2)該函數(shù)將以p1和p2為頭指針的兩條鏈合并為一,合并后的鏈?zhǔn)诪榉祷刂?。int bp(p,t)該函數(shù)的功能是把p所鏈接的每個(gè)四元式的第四區(qū)段都填為t。置
10、初值調(diào)用scaner調(diào)用lrparser打印四元式列表結(jié)束圖12 語(yǔ)義分析主程序示意圖三、測(cè)試實(shí)例1、 測(cè)試實(shí)例: main() x=12; y=4; z=(x+y)*3/x;2、測(cè)試結(jié)果:(1,main)(26,()(27,)(30,)(10,x)(21,=)(20,12)(34,;)(10,y)(21,=)(20,4)(34,;)(10,z)(21,=)(26,()(10,x)(22,+)(10,y)(27,)(24,*)(20,3)(25,/)(10,x)(34,;)(31,)(1000, )輸入程序的四元組如下所示:(1):(=,12,x)(2):(=,4,y)(3):(+,x,y,T1)(4):(*,T1,3,T2)(5):(/,T2,x,T3)(6
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年化療藥物供應(yīng)合同
- 2025年宇宙探索擔(dān)保協(xié)議
- 2025年商鋪抵押借款轉(zhuǎn)換托管協(xié)議
- 2025年度木地板施工與室內(nèi)裝修一體化合同4篇
- 2025年壁球館特許經(jīng)營(yíng)合同
- 2025年體育館用水合同
- 二零二五版水資源合理化利用建議書(shū)范本3篇
- 2024云南公務(wù)員考試行測(cè)真題(行政執(zhí)法類(lèi))
- 2025版委托代理企業(yè)交稅及稅收籌劃與申報(bào)合同6篇
- 2024經(jīng)濟(jì)合同范本
- 城市微電網(wǎng)建設(shè)實(shí)施方案
- 企業(yè)文化融入中華傳統(tǒng)文化的實(shí)施方案
- 9.1增強(qiáng)安全意識(shí) 教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)
- 《化工設(shè)備機(jī)械基礎(chǔ)(第8版)》全套教學(xué)課件
- 人教版八年級(jí)數(shù)學(xué)下冊(cè)舉一反三專題17.6勾股定理章末八大題型總結(jié)(培優(yōu)篇)(學(xué)生版+解析)
- 2024屆上海高考語(yǔ)文課內(nèi)古詩(shī)文背誦默寫(xiě)篇目(精校版)
- DL-T5024-2020電力工程地基處理技術(shù)規(guī)程
- 初中數(shù)學(xué)要背誦記憶知識(shí)點(diǎn)(概念+公式)
- 駕照體檢表完整版本
- 農(nóng)產(chǎn)品農(nóng)藥殘留檢測(cè)及風(fēng)險(xiǎn)評(píng)估
- 農(nóng)村高中思想政治課時(shí)政教育研究的中期報(bào)告
評(píng)論
0/150
提交評(píng)論