實驗三遞歸下降分析程序實驗
專業 商軟2班 姓名 藍海鵬 學號 201506110171
一、 實驗目的
編制一個使用遞歸下降分析法實現的語法分析程序。
二、 實驗內容和要求
輸入:正規式
輸出:判斷該正規式是否正確。
三、 實驗方法、步驟及結果測試
- 1. 源程序名:171-藍海鵬.c
可執行程序名:171藍海鵬.exe
- 2. 原理分析及流程圖
- 3. 主要程序段:
1 #include<stdio.h> 2 #include<string.h> 3 char Token[30];//存儲輸入的字符 4 char sym;//記錄下一個字符 5 char s;//輸入字符的傳遞 6 static int p=0 ;//下一個字符的下標 7 void S(); 8 void T(); 9 void U(); 10 void scaner();//下一個字符 11 void error();//錯誤結束 12 main() 13 { 14 int i=-1; 15 printf("Please input :\n"); 16 do 17 { 18 scanf("%c",&s);i++; 19 20 Token[i]=s; 21 }while(Token[i]!='#'); 22 scaner(); 23 S(); 24 if(sym=='#') 25 printf("Success!\n"); 26 else 27 printf("fail!\n"); 28 } 29 30 void scaner() 31 { 32 sym=Token[p]; 33 p++; 34 } 35 void error() 36 { 37 printf("error!"); 38 } 39 void S() 40 { 41 if(sym=='a'||sym=='^')//如果是a或者是^ 42 scaner(); 43 else if(sym=='(') 44 { 45 scaner(); 46 T(); 47 if(sym==')') 48 scaner(); 49 else 50 error(); 51 } 52 } 53 void T() 54 { 55 S(); 56 U(); 57 } 58 59 void U() 60 { 61 if(sym==',') 62 { 63 scaner(); 64 S(); 65 U(); 66 } 67 else if(sym!=')') 68 error(); 69 }
- 4. 運行結果及分析
四、 實驗總結
通過這個遞歸下降分析程序,使我懂得了編譯器在編譯時候的過程。雖然我做出來了這個程序,但是C語言文法的遞歸下降分析程序有點難度,需要我在以后的時間去慢慢完成。我會在接下來的時間里慢慢去完成C語言文法的遞歸下降分析程序的。