實驗二-自下而上分析-實驗報告_第1頁
實驗二-自下而上分析-實驗報告_第2頁
實驗二-自下而上分析-實驗報告_第3頁
實驗二-自下而上分析-實驗報告_第4頁
實驗二-自下而上分析-實驗報告_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

實驗二語法分析-自下而上分析實驗的目的利用vc++6.0生成調試遞歸下降分析程序,以便對任意輸入的符號串進行分析。本次實驗的目的主要是加深對遞歸下降分析法的理解。二、語法分析器按照c++語言的語法規(guī)則檢查詞法分析輸出的記號流是否符合這些規(guī)則,并根據這些規(guī)則所體現出的語言中的各種語法結構的層次性。把規(guī)則寫入到vc++6.0的文件中,可以生成樹狀的層次結構。三、實驗環(huán)境vc++6.0四、分析結果五、源程序實現#include<stdio.h>#include<malloc.h>#include<string>structstack{stack*top;charvalue;};charpop(stack*pst){chare;if(pst->top==pst){printf("Thestackisnull.");return0;}else{e=pst->top->value;pst->top--;returne;}}voidpush(stack*pst,chare){pst->top++;pst->top->value=e;}voidprintstack(stack*pst){stack*printtemp=pst;while(printtemp<=(pst->top)){printf("%c",printtemp->value);printtemp++;}}voidprintstring(stack*pst){stack*printtemp=(pst->top);while(printtemp>=pst){printf("%c",printtemp->value);printtemp--;}}voidprintSLR(int&number,stack*status,stack*grammar,stack*string){printf("%d",number);printstack(status);printf("");printstack(grammar);printf("");printstring(string);printf("");number++;}intmain(){stack*string=(stack*)malloc(40);string->top=string;string->top->value='#';stack*status=(stack*)malloc(40);status->top=status;status->top->value='0';stack*grammar=(stack*)malloc(40);grammar->top=grammar;grammar->top->value='#';FILE*fp;fp=fopen("C:\\wj.txt","a+");charfilestring[10][20]={'\0'};charstr[10]={'\0'};intstringnumber=0;intnumber=0;while(!feof(fp)){fgets(filestring[stringnumber],23,fp);if(filestring[stringnumber][0]!='\n')stringnumber++;}for(inti=0;i<=(stringnumber-1);i++){for(intj=strlen(filestring[i])-3;j>=0;j--)if(filestring[i][j]!='\n')push(string,filestring[i][j]);printf("此次分析的字符串為:%s\n",filestring[i]);printf("步驟狀態(tài)棧符號棧輸入串ACTION\n");printSLR(number,status,grammar,string);printf("移進\n");while(string->top->value!='#'){charch=pop(string);if(ch=='i'){push(grammar,ch);if(status->top->value=='0'){push(status,'5');printSLR(number,status,grammar,string);printf("歸約\n");pop(status);pop(grammar);push(status,'3');push(grammar,'F');printSLR(number,status,grammar,string);printf("歸約\n");pop(status);pop(grammar);push(status,'2');push(grammar,'T');printSLR(number,status,grammar,string);printf("歸約\n");if(string->top->value=='+'||string->top->value=='-'){pop(status);pop(grammar);push(status,'1');push(grammar,'E');printSLR(number,status,grammar,string);printf("移進\n");}}elseif(status->top->value=='6'){push(status,'5');printSLR(number,status,grammar,string);printf("歸約\n");pop(status);pop(grammar);push(status,'3');push(grammar,'F');printSLR(number,status,grammar,string);printf("歸約\n");pop(status);pop(grammar);push(status,'9');push(grammar,'T');printSLR(number,status,grammar,string);printf("歸約\n");if(string->top->value=='+'||string->top->value=='-'){pop(status);pop(status);pop(grammar);pop(grammar);printSLR(number,status,grammar,string);printf("移進\n");}}elseif(status->top->value=='7'){push(status,'5');printSLR(number,status,grammar,string);printf("歸約\n");pop(status);pop(grammar);push(status,'(');push(status,'1');push(status,'0');push(status,')');push(grammar,'F');printSLR(number,status,grammar,string);printf("歸約\n");pop(status);pop(status);pop(status);pop(status);pop(status);pop(grammar);pop(grammar);printSLR(number,status,grammar,string);printf("移進\n");if(string->top->value=='+'||string->top->value=='-'){pop(status);pop(grammar);push(status,'1');push(grammar,'E');printSLR(number,status,grammar,string);printf("移進\n");}}elseprintf("Thereissomethingwrongneari.");}elseif(ch=='+'||ch=='-'){if(status->top->value=='1'||status->top->value=='8')push(status,'6');elseprintf("Thereissomethingwrongnear+or-\n");push(grammar,ch);printSLR(number,status,grammar,string);printf("移進\n");}elseif(ch=='*'|

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論