我是靠谱客的博主 粗犷烧鹅,最近开发中收集的这篇文章主要介绍递归下降语法分析程序设计,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

实验目的】
       练习构造递归下降语法分析程序的方法,熟悉上下文无关文法的使用,加深对课堂教学的理解;提高语法分析方法的实践能力
【实验要求】
    利用某一高级程序设计语言构造语法分析程序  
【具体要求】对于给定的文法G[E]
              E->TE’
             E’->+TE’ | ε
            T->FT’
            T’->*F T’| ε
            F->(E) | i
     采用递归下降语法分析法编写语法分析程序,该语法分析程序判断输入的字符串是否符合上述文法,并能够输出相应的结果(是语法成分或不是语法成分)。
 
[cpp] view plain copy
  1. #include<stdio.h>  
  2. /*  
  3.     实验名称:实验3  递归下降语法分析程序设计  
  4.     学号:  
  5.     姓名:niu91(859222829)  
  6.     班级:  
  7. */  
  8. #include<string>  
  9. char str[10];  
  10. int index=0;  
  11. void E();           //E->TX;  
  12. void X();           //X->+TX | e  
  13. void T();           //T->FY  
  14. void Y();           //Y->*FY | e  
  15. void F();           //F->(E) | i  
  16. int main()  
  17. {  
  18.     int len;  
  19.     int m;  
  20.     printf("请输入要测试的次数:");  
  21.     scanf("%d",&m);  
  22.     while(m--)  
  23.     {  
  24.         printf("请输入算数表达式:");  
  25.         scanf("%s",str);  
  26.         len=strlen(str);  
  27.         str[len]='#';  
  28.         str[len+1]='';  
  29.         E();  
  30.         printf("正确语句!n");  
  31.         strcpy(str,"");  
  32.         index=0;  
  33.     }  
  34.     return 0;  
  35. }  
  36. void E()  
  37. {  
  38.     T();  
  39.     X();  
  40. }  
  41. void X()  
  42. {  
  43.     if(str[index]=='+')  
  44.     {  
  45.         index++;  
  46.         T();  
  47.         X();  
  48.     }   
  49. }  
  50. void T()  
  51. {  
  52.     F();  
  53.     Y();  
  54. }  
  55. void Y()  
  56. {  
  57.     if(str[index]=='*')  
  58.     {  
  59.         index++;  
  60.         F();  
  61.         Y();  
  62.     }  
  63. }  
  64. void F()  
  65. {  
  66.     if(str[index]=='i')  
  67.     {  
  68.         index++;  
  69.     }  
  70.     else if (str[index]=='(')  
  71.     {      
  72.         index++;  
  73.         E();  
  74.         if(str[index]==')')  
  75.         {  
  76.             index++;   
  77.         }else{  
  78.             printf("n分析失败!n");  
  79.             exit (0);  
  80.         }  
  81.     }   
  82.     else{  
  83.         printf("分析失败!n");   
  84.         exit(0);  
  85.     }  
  86.  }  

 


最后

以上就是粗犷烧鹅为你收集整理的递归下降语法分析程序设计的全部内容,希望文章能够帮你解决递归下降语法分析程序设计所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部