![算符優(yōu)先分析器設計實驗報告--寧劍_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/11/7a0f9996-15be-435b-a968-1254c4324f4c/7a0f9996-15be-435b-a968-1254c4324f4c1.gif)
![算符優(yōu)先分析器設計實驗報告--寧劍_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/11/7a0f9996-15be-435b-a968-1254c4324f4c/7a0f9996-15be-435b-a968-1254c4324f4c2.gif)
![算符優(yōu)先分析器設計實驗報告--寧劍_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/11/7a0f9996-15be-435b-a968-1254c4324f4c/7a0f9996-15be-435b-a968-1254c4324f4c3.gif)
![算符優(yōu)先分析器設計實驗報告--寧劍_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/11/7a0f9996-15be-435b-a968-1254c4324f4c/7a0f9996-15be-435b-a968-1254c4324f4c4.gif)
![算符優(yōu)先分析器設計實驗報告--寧劍_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/11/7a0f9996-15be-435b-a968-1254c4324f4c/7a0f9996-15be-435b-a968-1254c4324f4c5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、裝訂線 編譯原理實驗報告 題目: 算符優(yōu)先分析法分析器 學 院 計算機科學與技術 專 業(yè) xxxxxxxxxxxxxxxx 學 號 xxxxxxxxxxxx 姓 名 寧劍 指導教師 xxxx 2015年xx月xx日算符優(yōu)先分析法分析器一、實驗目的 1.理解自底向上優(yōu)先分析,比較和自頂向下優(yōu)先分析的不同。2.理解算符優(yōu)先分析的特點,體會其和簡單優(yōu)先分析方法的不同。3.加深對編譯器語法分析的理解。二、實驗原理 1.自底向上優(yōu)先分析方法,也稱移進-歸約分析,粗略地說它的思想是對輸入符號串自左向右進行掃描,并將輸入符號逐個移入一個后進先出棧,邊移入邊分析,一旦棧頂符號串形成某個句型
2、的句柄或可歸約串時,就將該產(chǎn)生式的左部非終極符代替相應的右邊文法符號串。2.算符優(yōu)先分析法的基本思想首先確定算符(確切地說是終結符)之間的優(yōu)先關系和結合性質(zhì),然后借助這種關系,比較相鄰算符之間的優(yōu)先級來確定句型的可歸約串,并進行歸約。注意:算符優(yōu)先分析過程是自下而上的歸約過程,但它的可歸約串未必是句柄,也就是說,算符優(yōu)先分析過程不是一種規(guī)范歸約。3.終結符號間優(yōu)先關系的確定,用FIRSTVT和LASTVT計算。4.最左素短語所謂素短語是指這樣一個短語,它至少含有一個終結符,并且除它自身之外不再含有其它素短語。最左素短語是指處于句型最左邊的那個素短語。最左素短語是算符優(yōu)先分析算法的可歸約串。5.
3、計算得到所給文法的算符優(yōu)先矩陣6.算符優(yōu)先分析的基本過程三、實驗要求使用算符優(yōu)先分析算法分析下面的文法:E#E#EE+T|TTT*F|FFPF|PP(E)|i其中i可以看作是一個終結符,無需作詞法分析。具體要求如下:1.如果輸入符號串為正確句子,顯示分析步驟,包括分析棧中的內(nèi)容、優(yōu)先關系、輸入符號串的變化情況;2.如果輸入符號串不是正確句子,則指示出錯位置。四、實驗結果(程序)及分析#include <stdio.h>#include <cstring>#include <iostream> #include <iomanip>#define M
4、AX 100using namespace std;char SMAX; char shuruMAX,yuMAX; void scanner(); int panyouxian(char x); void shengyuchuan(); int k; char youxian77= '>','<','<','<','<','>','>','>','>','<','<
5、;','<','>','>', '>','>','<','<','<','>','>', '>','>','>','$','$','>','>', '<','<','<
6、39;,'<','<','=','$', '>','>','>','$','$','>','>', '<','<','<','<','<','$','=', ; /優(yōu)先關系表,其中>為大于,<為小于,=為等于,$為空格int m
7、ain() int l,j; cout<<"請輸入一個字符串:" cin.get(shuru,MAX); /將輸入的字符串存到數(shù)組cout<<"步驟 棧 優(yōu)先關系 當前符號 剩余輸入串 移進或歸約"<<endl;k=0; Sk='#' Sk+1='0' l=strlen(shuru); /求輸入字符串的長度for(j=0;j<l;j+) yuj=shuruj; yuj='0' scanner(); return 0;void scanner() /掃描分析輸入串 i
8、nt i,j,l,h1,l1,h2,l2,h3,l3,y1,y2,r1,r2; int step=0;/分析步驟數(shù)char a; /存放正在分析的字符char p1,Q,p2; l=strlen(shuru); /算出輸入串長度for(i=0;i<l;i+) a=shurui; if(Sk='+'|Sk='*'|Sk=''|Sk='i'|Sk='('|Sk=')'|Sk='#') j=k; else j=k-1; h1=panyouxian(Sj);/ 從優(yōu)先關系表中查出Sj和
9、a的優(yōu)先關系if(a='+'|a='*'|a=''|a='i'|a='('|a=')'|a='#') l1=panyouxian(a); else /如果句子含有不是終結符集合里的其它字符,不合法 cout<<"錯誤!不合法的句子!"<<endl; break; p1=youxianh1l1; if(p1='>') loop: Q=Sj; if(Sj-1='+'|Sj-1='*'|Sj-
10、1=''|Sj-1='i'|Sj-1='('|Sj-1=')'|Sj-1='#') j=j-1; else j=j-2; h2=panyouxian(Sj); l2=panyouxian(Q); p1=youxianh2l2; if(p1='<') /Sj+1Sk歸約為F k=j+1; shengyuchuan(); step+; cout<<left<<"("<<step<<setw(6)<<")&qu
11、ot;<<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<y1;y2+) yuy1-
12、y2=yuy1-y2-1; yu0='i' else goto loop; else if(p1='<') /移進如果上一步是不歸約,剩余的字符串減少一個 shengyuchuan(); shurul='0' step=step+1; cout<<left<<"("<<step<<setw(6)<<")"<<setw(10)<<S<<setw(10)<<p1<<setw(10)<
13、;<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(
14、6)<<")"<<setw(10)<<S<<setw(10)<<p1<<setw(10)<<a<<setw(5)<<right<<yu<<setw(15)<<"接受"<<endl; cout<<"合法的句子!"<<endl; break; else k=k+1; Sk=a; else cout<<"出錯!"<<endl;break; void shengyuchuan() int i,j; i=strlen(yu); for(j=0;j<i;j+) yuj=yuj+1; yui-1='0' int panyouxian(char x) int m; switch(x) case'+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 礦井防雷檢測基礎施工方案
- 奇偶層層鋁模施工方案
- 經(jīng)濟學研究挑戰(zhàn)與突破
- 2023年關于消防通知四篇
- 湘教版數(shù)學八年級上冊2.5《全等三角形的判定(ASA)》聽評課記錄
- 2025年專業(yè)級腳手架租賃與定期檢查合同范本
- 2025年度海洋生物資源運輸保險協(xié)議(2025年度)
- 部編人教版歷史九年級上冊第20課《第一次工業(yè)革命》聽課評課記錄
- 人教版數(shù)學七年級下冊第56課時《9.3一元一次不等式組(一)》聽評課記錄
- 2025年度戶外招牌安全檢測與維修服務合同
- 烤煙生產(chǎn)沿革
- GB 1886.227-2016食品安全國家標準食品添加劑嗎啉脂肪酸鹽果蠟
- 毛澤東思想課件-第七章 毛澤東思想的活的靈魂
- 公共關系效果的評估課件
- 建筑施工安全員理論考核試題與答案
- 高速公路用地勘測定界及放線定樁技術標書
- 建筑工程節(jié)后復工自查表
- 華萊士標準化體系
- 快捷smt全自動物料倉儲方案
- keysight眼圖和抖動噪聲基礎知識與測量方法
- 鍋爐補給水陰陽混床操作步序表
評論
0/150
提交評論