递归下降分析法

实验三 递归下降分析法

 

实验三递归下降分析程序实验

专业 商软2班   姓名 李文辉  学号 201506110168

一、        实验目的

     编制一个使用递归下降分析法实现的语法分析程序。

二、        实验内容和要求

     输入:正规式

     输出:判断该正规式是否正确。

三、        实验方法、步骤及结果测试

  1. 1.      源程序名:168-李文辉.c

可执行程序名:168李文辉.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 :
");    
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!
");    
26     else        
27         printf("fail!
");
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语言文法的递归下降分析程序的。

原文地址:https://www.cnblogs.com/168-hui/p/6212156.html