实验三、语法分析程序实验

实验三、语法分析程序实验

专业:商业软件   姓名:邹汉辉  学号:201508030045

一、 实验目的

   1.通过设计,编制,调试一个递归下降语法分析程序

   2.实现对词法分析程序所提供的单词序列进行语法检查和结构的分析。

二、 实验内容和要求

 输入:正规式

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

 

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

 

  1.   源程序名:递归下降分析程序.c

    可执行程序名:递归下降分析程序.exe

  2. 原理分析及流程图
  3. 主要程序段及其解释:

 

 1 #include<stdio.h>    
 2 #include<string> 
 3 char str[50]; 
 4 int index=0; 
 5 void E();                //E->TX; 
 6 void X();                //X->+TX | e 
 7 void T();                //T->FY 
 8 void Y();                //Y->*FY | e 
 9 void F();                //F->(E) | i 
10 
11 int main()                /*递归分析*/
12 { 
13     int len; 
14     int m; 
15     printf("请输入要测试的次数:"); 
16     scanf("%d",&m); 
17     while(m--) 
18     { 
19         printf("请输入字符串(长度<50>):\n"); 
20         scanf("%s",str);
21         len=strlen(str);
22         //str[len]='#';
23         str[len+1]='\0'; 
24         E(); 
25         printf("%s为合法符号串!\n",str); 
26         strcpy(str,""); 
27         index=0;
28     } return 0; 
29 } 
30 
31 void E() 
32 {     T();    X();}
33 void X() 
34 { 
35     if(str[index]=='+')
36     {     index++; 
37         T(); 
38         X(); 
39     } } 
40 void T() 
41 {     F();     Y(); } 
42 void Y() 
43 {     if(str[index]=='*') { 
44         index++; 
45         F(); 
46         Y(); 
47     } } 
48 void F() 
49 { 
50     if(str[index]=='i')
51     {    index++; } 
52     else if (str[index]=='(') 
53     { 
54         index++; 
55         E(); 
56         if(str[index]==')') 
57         {     index++; }else
58         { 
59             printf("\n非法的符号串!\n");
60             exit (0); 
61         }     } 
62     else
63     {
64         printf("非法的符号串!\n"); 
65         exit(0); 
66     } 
67 }

 4.运行结果及分析

 

 

 

 四、 实验总结

 通过这次的实验,对于递归又有了新的认识。

 

 

posted on 2016-12-18 16:58  paosons  阅读(900)  评论(0编辑  收藏  举报

导航