• 1217 递归下降语法分析程序设计


      1 #include<stdio.h>
      2 
      3 #include<string>
      4 
      5 char str[10];   //记录要分析的字符串
      6 
      7 int x=0;        //记录第一个字符
      8 
      9   
     10 
     11 void E();           
     12 
     13 void X();           
     14 
     15 void T();           
     16 
     17 void Y(); 
     18 
     19 void F(); 
     20 
     21   
     22 
     23 int main()
     24 
     25 {
     26 
     27     int len;
     28 
     29     printf("请输入算数表达式:");
     30 
     31     scanf("%s",str);
     32 
     33     len=strlen(str);
     34 
     35     str[len]='#';
     36 
     37     str[len+1]='';
     38 
     39     E();
     40 
     41     printf("
    是正确表达式!
    ");
     42 
     43     strcpy(str,"");
     44 
     45     x=0;
     46 
     47     return 0;
     48 
     49 }
     50 
     51   
     52 
     53 void E()
     54 
     55 {
     56 
     57     T();
     58 
     59     X();
     60 
     61 }
     62 
     63   
     64 
     65 void X()
     66 
     67 {
     68 
     69     if(str[x]=='+'||str[x]=='-')
     70 
     71     {
     72 
     73         x++;
     74 
     75         T();
     76 
     77         X();
     78 
     79     } 
     80 
     81 }
     82 
     83   
     84 
     85 void T()
     86 
     87 {
     88 
     89     F();
     90 
     91     Y();
     92 
     93 }
     94 
     95   
     96 
     97 void Y()
     98 
     99 {
    100 
    101     if(str[x]=='*'||str[x]=='/')
    102 
    103     {
    104 
    105         x++;
    106 
    107         F();
    108 
    109         Y();
    110 
    111     }
    112 
    113 }
    114 
    115   
    116 
    117 void F()
    118 
    119 {
    120 
    121     if(str[x]>='a'&&str[x]<='z')
    122 
    123     {
    124 
    125         x++;
    126 
    127     }
    128 
    129     else if(str[x]>=0&&str[x]<=9)
    130 
    131     {
    132 
    133         x++;
    134 
    135     }
    136 
    137     else if (str[x]=='(')
    138 
    139     {     
    140 
    141         x++;
    142 
    143         E();
    144 
    145         if(str[x]==')')
    146 
    147         {
    148 
    149             x++; 
    150 
    151         }
    152 
    153         else
    154 
    155         {
    156 
    157             printf("
    有语法错误!
    ");
    158 
    159             exit(0);
    160 
    161         }
    162 
    163     } 
    164 
    165     else
    166 
    167     {
    168 
    169         printf("
    有语法错误!
    "); exit(0); } }
  • 相关阅读:
    关于PowerShell调用Linq的一组实验
    PowerShell创建参考窗口
    Python切图脚本
    11->8
    用Python演奏音乐
    关于Haskell计算斐波那契数列的思考
    傅立叶变换与小波分析
    堆排序(python实现)
    二进制数据表示方式
    oracle数据插入/查询乱码
  • 原文地址:https://www.cnblogs.com/peivxuan/p/5097762.html
Copyright © 2020-2023  润新知