實驗三 遞歸下降分析法


實驗三遞歸下降分析程序實驗

專業 商軟2班   姓名 藍海鵬  學號 201506110171

一、        實驗目的

     編制一個使用遞歸下降分析法實現的語法分析程序。

 

二、        實驗內容和要求

     輸入:正規式

     輸出:判斷該正規式是否正確。

 

三、        實驗方法、步驟及結果測試

  1. 1.      源程序名:171-藍海鵬.c

可執行程序名:171藍海鵬.exe

  1. 2.      原理分析及流程圖

 

  1. 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 }
  1. 4.      運行結果及分析

                       

四、        實驗總結

通過這個遞歸下降分析程序,使我懂得了編譯器在編譯時候的過程。雖然我做出來了這個程序,但是C語言文法的遞歸下降分析程序有點難度,需要我在以后的時間去慢慢完成。我會在接下來的時間里慢慢去完成C語言文法的遞歸下降分析程序的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM