版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、v1.0可編輯可修改編譯原理實(shí)驗(yàn)報告題目:算符優(yōu)先分析法分析器學(xué)院計算機(jī)科學(xué)與技術(shù)專業(yè)xxxxxxxxxxxxxxxx學(xué)號xxxxxxxxxxxx姓名寧劍指導(dǎo)教師xxxx2015年xx月xx日算符優(yōu)先分析法分析器、實(shí)驗(yàn)?zāi)康? .理解自底向上優(yōu)先分析,比較和自頂向下優(yōu)先分析的不同。2 .理解算符優(yōu)先分析的特點(diǎn),體會其和簡單優(yōu)先分析方法的不同3 .加深對編譯器語法分析的理解。二、實(shí)驗(yàn)原理1 .自底向上優(yōu)先分析方法,也稱移進(jìn)-歸約分析,粗略地說它的思想是對輸入符號用自左向右進(jìn)行掃描,并將輸入符號逐個移入一個后進(jìn)先出棧,邊移入邊分析,一旦棧頂符號用形成某個句型的句柄或可歸約用時,就將該產(chǎn)生式的左部非終
2、極符代替相應(yīng)的右邊文法符號用。2 .算符優(yōu)先分析法的基本思想首先確定算符(確切地說是終結(jié)符)之間的優(yōu)先關(guān)系和結(jié)合性質(zhì),然后借助這種關(guān)系,比較相鄰算符之間的優(yōu)先級來確定句型的可歸約用,并進(jìn)行歸約。注意:算符優(yōu)先分析過程是自下而上的歸約過程,但它的可歸約用未必是句柄,也就是說,算符優(yōu)先分析過程不是一種規(guī)范歸約。3 .終結(jié)符號間優(yōu)先關(guān)系的確定,用FIRSTVT?口LASTVT#算。4 .最左素短語所謂素短語是指這樣一個短語,它至少含有一個終結(jié)符,并且除它自身之外不再含有其它素短語。最左素短語是指處于句型最左邊的那個素短語。最左素短語是算符優(yōu)先分析算法的可歸約用05 .計算得到所給文法的算符優(yōu)先矩陣+
3、11()TT><<<n>>.A<V>+1><<>>1>>>><<<<>>>>耳<<<6.算符優(yōu)先分析的基本過程初值卜.=1,即口皿叮,當(dāng)埔人沖讀人SCk VtT地7<& Vr除去丑QSG+lZHSM歸妁為Nki=j+1Sk)=H三、實(shí)驗(yàn)要求使用算符優(yōu)先分析算法分析下面的文法:E'一#E#E+T|TT-T*F|FF一PAF|P4(E)|i其中i可以看作是一個終結(jié)符,無需作詞法分析。具體要求如下:1 .如果輸入
4、符號用為正確句子,顯示分析步驟,包括分析棧中的內(nèi)容、優(yōu)先關(guān)系、輸入符號用的變化情況;2 .如果輸入符號用不是正確句子,則指示出錯位置。四、實(shí)驗(yàn)結(jié)果(程序)及分析#include<>#include<cstring>#include<iostream>#include<iomanip>#defineMAX100usingnamespacestd;charSMAX;charshuruMAX,yuMAX;voidscanner();intpanyouxian(charx);voidshengyuchuan();intk;charyouxian77=
5、39;>','<','<','<','<','>','>','>','>','<','<','<','>','>','>','>','<','<','<','>',
6、39;>','>','>','>',$,$,'>','>','<','<','<','<','<','=','$','>','>','>',$,$,'>','>','<','<',
7、'<','<','<','$','=',;/優(yōu)先關(guān)系表,其中為大于,為小于,=為等于,$為空格intmain()intl,j;cout<<"請輸入一個字符串:";(shuru,MAX);/將輸入的字符串存到數(shù)組剩余輸入用移cout<<”步驟棧優(yōu)先關(guān)系當(dāng)前符號進(jìn)或歸約"<<endl;k=0;Sk='#';Sk+1='0'l=strlen(shuru);/求輸入字符串的長度for(j=0;j<l;j
8、+)yuj=shuruj;yuj='0'scanner。;return0;voidscanner。/掃描分析輸入申inti,j,l,h1,l1,h2,l2,h3,l3,y1,y2,r1,r2;intstep=0;/分析步驟數(shù)chara;/存放正在分析的字符charp1,Q,p2;l=strlen(shuru);/算出輸入用長度for(i=0;i<l;i+)a=shurui;if(Sk='+'|Sk='*'|Sk='A'|Sk='i'|Sk='('|Sk=')'|Sk='
9、#')j=k;elsej=k-1;h1=panyouxian(Sj);/從優(yōu)先關(guān)系表中查出Sj和a的優(yōu)先關(guān)系if(a='+'|a='*'|a='A'|a='i'|a='('|a=')'|a='#')l1=panyouxian(a);else/如果句子含有不是終結(jié)符集合里的其它字符,不合法(cout<<"錯誤!不合法的句子!"<<endl;break;)p1=youxianh1l1;if(p1='>')(loop
10、:Q=Sj;if(Sj-1='+'|Sj-1=*,|Sj-1='A'|Sj-1='i,|Sj-1='('|Sj-1=')'|Sj-1='#')j=j-1;elsej=j-2;h2=panyouxian(Sj);l2=panyouxian(Q);p1=youxianh2l2;if(p1='<')/Sj+1-k歸約為Fk=j+1;shengyuchuan();step+;cout<<left<<"("<<step<<set
11、w(6)<<")"<<setw(10)<<S<<setw(10)<<p1<<setw(10)<<a<<setw(5)<<right<<yu<<setw(15)<<"歸約"<<endl;i-;Sk='F'r1=strlen(S);for(r2=k+1;r2<r2;r2+)Sr2='0'/多個字符歸約,把棧頂后面的舍棄y1=strlen(yu);for(y2=0;y2
12、<y1;y2+)yuy1-y2=yuy1-y2-1;yu0='i'elsegotoloop;elseif(p1='<')/移進(jìn)如果上一步是不歸約,剩余的字符串減少一個(shengyuchuan();shurul='0'step=step+1;cout<<left<<"("<<step<<setw(6)<<")"<<setw(10)<<S<<setw(10)<<p1<<setw(
13、10)<<a<<setw(5)<<right<<yu<<setw(15)<<"移近"<<endl;k=k+1;Sk=a;else(if(p1='=')(h3=panyouxian(Sj);l3=panyouxian('#');p2=youxianh3l3;if(p2='=')(shengyuchuan();step+;cout<<left<<"("<<step<<setw(6)
14、<<")"<<setw(10)<<S<<setw(10)<<p1<<setw(10)<<a<<setw(5)<<right<<yu<<setw(15)<<"接受"<<endl;cout<<"合法的句子!"<<endl;break;elsek=k+1;Sk=a;elsecout<<"出錯!"<<endl;break;
15、voidshengyuchuan()inti,j;i=strlen(yu);for(j=0;j<i;j+)yuj=yuj+1;yui-1='0'intpanyouxian(charx)intm;switch(x)case'+':m=0;break;case'*':m=1;break;case'A':m=2;break;case'i':m=3;break;case'(':m=4;break;case')':m=5;break;case'#':m=6;break;r
16、eturnm;14輸入的程序界面如圖:H中aMN«tl>-<B.*43MUB»j二蠹".陽=r»A/,UH圖5國|司U芭.ttnMm4-i*I.咄(I上,I!-飛d產(chǎn)一ll:J“HE:l»l-rLal-!iMi.I:c.'i.ri1,IJfe:»-l>.l.IEJI輸入一個正確的句子,結(jié)果如下:x一,字符串二士*士*<1+上)#1棧優(yōu)撫關(guān)系當(dāng)前苻號果膾輸入串C1)年<iC2>41<+<3>UF<+C4>(IJ+<iC5>ftF+L<<£+iJ#EGKF+F<菁C7>#r*F*<<QMJ»F+F*<4iC9)UF+F*(i<+nitC1B)ttRMfP(+Cll>ftF*F*<F*<<.12>AF+FMF+i<>C13
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度特種運(yùn)輸服務(wù)買賣合同安全與時效承諾
- 2025版彩禮退還與婚姻解除條件及財產(chǎn)分割協(xié)議書范本3篇
- 基于2025年度規(guī)劃的文化園區(qū)停車場建設(shè)與運(yùn)營合同3篇
- 二零二五年豪華別墅買賣合同與預(yù)售協(xié)議3篇
- 二零二五年度影視角色選拔拍攝合同
- 2025年度手機(jī)通信門店承包經(jīng)營協(xié)議4篇
- 2025年度新能源產(chǎn)業(yè)合作開發(fā)項(xiàng)目能源合作協(xié)議合同范本
- 2025版商業(yè)綜合體停車位共享租賃協(xié)議2篇
- 2025年液壓營接件項(xiàng)目可行性研究報告-20250102-105648
- 2020-2025年中國煤炭運(yùn)輸行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y戰(zhàn)略研究報告
- 職業(yè)衛(wèi)生培訓(xùn)課件
- 柴油墊資合同模板
- 湖北省五市州2023-2024學(xué)年高一下學(xué)期期末聯(lián)考數(shù)學(xué)試題
- 城市作戰(zhàn)案例研究報告
- 【正版授權(quán)】 ISO 12803:1997 EN Representative sampling of plutonium nitrate solutions for determination of plutonium concentration
- 道德經(jīng)全文及注釋
- 2024中考考前地理沖刺卷及答案(含答題卡)
- 多子女贍養(yǎng)老人協(xié)議書范文
- 彩票市場銷售計劃書
- 骨科抗菌藥物應(yīng)用分析報告
- 支付行業(yè)反洗錢與反恐怖融資
評論
0/150
提交評論