(完整word版)LR0分析器實驗報告_第1頁
(完整word版)LR0分析器實驗報告_第2頁
(完整word版)LR0分析器實驗報告_第3頁
(完整word版)LR0分析器實驗報告_第4頁
(完整word版)LR0分析器實驗報告_第5頁
免費預(yù)覽已結(jié)束,剩余6頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、YEUYANG-EN UNIVERSITY 仰恩大3編譯原理課程設(shè)計性實驗報告課程題目:LR(0)分析法姓 名: 鐘繼文 專業(yè)班級:計算機科學(xué)與技術(shù)(1)班指導(dǎo)老師:孫長圣老師學(xué) 號:110920120019報告日期:2015年6月7日編譯原理語法分析實驗報告工實驗內(nèi)容利用C語言編寫一個程序,對字符串進行語法分析,了解掌握實驗的原理及方法, 要求該文法為LR (0)文法。:、實驗?zāi)康腖R(K)分析方法是1965年Knuth提出的,括號中的K表示向右查看輸入串符號的個數(shù)。對于大多數(shù)用無二義性上下文無關(guān)文法描述的語言都可以用相應(yīng)的LR分析器進行識別,而且這種方法還具有分析速度快,能準(zhǔn)確、及時地指出

2、出錯位置。它的主要缺 點是對于一個實用語言文法的分析器的構(gòu)造工作量相當(dāng)大,K愈大構(gòu)造愈復(fù)雜,實現(xiàn)相當(dāng)困難。LR分析法是一種自底向上分析方法。 它的分析過程是一種規(guī)范歸約過程, 規(guī)范歸約 是規(guī)范推導(dǎo)的逆過程。 規(guī)范推導(dǎo)是最右推導(dǎo), 規(guī)范歸約是其逆過程, 則是最左歸約。 LR 分析法的可歸約串是當(dāng)前句型的句柄,即最左直接短語。對于大多數(shù)用無二義性上下文無關(guān)文法描述的語言都可以用相應(yīng)的LR分析器進行識別,而且這種方法還具有分析速度快,能準(zhǔn)確、及時地指出出錯位置。本實驗通過設(shè)計、調(diào)試一個簡單的的LR分析器,實現(xiàn)對詞法分析程序所提供的單詞序列進行語法檢查和結(jié)構(gòu)分析,進一步掌握常用的語法分析方法。、實驗功

3、能通過定義的文法 G, G是一個LR (0)文法,輸入源碼,能夠基本判別出該源碼是否 是正確的。如果是正確的則接收,反之,如果是錯誤的則顯示錯誤。四、實驗步驟1 .類ALGOLF的文法<program> -> <Block><program> -><Compound Statement><Block> -> <Block head> ; <Compound Tail><Block head> ->begin<Block head> -><Block h

4、ead>d<Compound Tail> ->s;end<Compound Tail> ->s;<Compound Tail><Compound Statement> -> begin <Compound Tail>用小寫字母表示終結(jié)符,大寫字母表示非終結(jié)符b:begin d:d s:s e:endP:<Program>B:<Block>S:<Compound Statement>H:<Block head>T:<Compound Tail>則文法為:

5、2 P->B5H->H;d3 P->S6T->se4 B->H;T7T->s;T5 H->bd8S->bT2 .拓廣后為G',增加產(chǎn)生式P'->p1 P'->P2 P->B3 P->S4 B->H;T5 H->bd6 H->H;d7 T->se8 T->s;T9 S->bT3 .項目集規(guī)范族:P -> PP-> BP-> SB-> - H;TH-> bdH-> - H;dT-> seT-> s;TP'->

6、;P P->B P->S B->H - ;TH->b dH->H - ;dT->s - eT->s - ;TB->H; TH->bd H->H; dT->se-T->s; TB->H;T -H->H;d T->s;T S-> bT S->b T S->bT 4 .LR (0)的分析表(s表不移進,r表不歸約)狀A(yù)CTIONGOTO態(tài)bdse;#PBSHT0S1212341acc2r2r2r2r2r2r23r3r3r3r3r3r34S55S7S86r4r4r4r4r4r47r6r6r6r6

7、r6r68S9S109r7r7r7r7r7r710S81111r8r8r8r8r8r812S14S81313r9r9r9r9r9r914r5r5r5r5r5r56.部分代碼界面(為了便于客戶體驗)int menu()int n;printf("=n");printf(" 歡迎使用n");printf("1.顯示文法信息n");printf("2.符號審判定n");printf("3.退出 n");printf("n");printf("=n");print

8、f("請選擇你要執(zhí)行的內(nèi)容:n");scanf("%d",&n);getchar();return n;在main程序中可以直接調(diào)用void main()intt=1,n;char ch;while(t)n=menu();分析過程的實現(xiàn)void ActionTable(int sta, char symb,int col) /statu 用于狀態(tài)棧,sym用于符號棧if(sta = 1 && col = 5)sta1 col5中存放 ACC 即表/示所輸入的源碼是該文法的語法。printf("t 接收 n");

9、IsAccept = 1; /IsAccept為 void 函數(shù),如果/源碼判斷成功,則顯示接收,/將IsAccept賦值為1,方便退出return;/ActionTable是 void 類型的if(actsta.stcol != 0)/存放移進操作/如果進行源碼判斷時,要進行移進操作,則直接將進行相應(yīng)的棧操作printf("t 移進 n");sta+sta_Index = actsta.stcol;symbol+mark_Index = symb;exp_top +;else if(actsta.recol != 0) /存放歸約操作printf("t 歸約 n

10、");Reduce(sta, symb, col); /Reduce 為 void 函數(shù),用來對進行歸標(biāo)準(zhǔn)輸入輸出函數(shù)scnaf,printf關(guān)于字符數(shù)組的函數(shù)定義/else printf("t 錯誤 n");getchar(); / 使用到的頭文件#include<stdio.h> /#include<string.h> /約的項進行相應(yīng)操作,使用棧來進行 處理。從stdio流中讀字符用實驗結(jié)果(截圖)請選擇你要執(zhí)行的內(nèi)容;請選擇你要執(zhí)行的內(nèi)容.rlXX 乂乂竄:乂乂冬玉乂乂多乂算玉算該文法為:0P->BP->SH >H

11、 id®T-se m- S->hT睛選擇你要執(zhí)行的內(nèi)容:;esett步驟汪武源研必原通號盤尾?d; sell10趣鬻析過程一00129121494觸5045804589945e3291符號棧«1) ItJbd ItH ttH; «H;s HH;se ItH; I ttB ItF剩余輸入串川;等7d;sel ;sett ;seltefl$進斗進進約約約收 歸3勺源科露吁程一有短0甘0126012144Ld04ttHR45廿H;剩余輸入串bd;esett d;esett;esenr esetteseltis五、實驗總結(jié)通過這次LR(0)分析器的實驗,實現(xiàn)對詞法分析程序所提供的單詞序列進行語法檢查和結(jié)構(gòu)分析,進一步掌握了 LR語法分析的方法。對于LR (0) 方法有了更深刻的了解,不蛋蛋只是紙上談兵,實驗

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論