zoukankan      html  css  js  c++  java
  • 递归下降分析法

    #include<stdio.h>
    char curr;
    char LL1[1000];
    int N=0;
    
    void scaner();
    
    int digital(){     
    
         if(curr >= '0' && curr <= '9')
         {
         return 1;
         }
         else {
         return 0;
         }
    
    }
    
    int english(){                   
       if(curr >= 'a' && curr<='z' || curr >= 'A' && curr <= 'Z')
       {
        return 1;
       }
      else 
          return 0;
    
    }
    int yuansuanf(){
      if(curr=='+'||curr=='-'||curr=='*'||curr=='/')
      {
      return 1;
      }
     
      else{
          return 0;
      }
    
    }
    int  end(){
        if(curr!='#'){
        return 1;    
        }
      else 
          return 0;
    }
    
    
    int check(){
          
         if(digital()==1){
              scaner();
              if(end()==1){
                  if(yuansuanf()==1){
                      
                           return 1;
                  }
                  else if(yuansuanf()==0){
                            return 0;
                  
                  }
              }
              else if(end()==0){
              return 1;
              }
         
         }
    
           
             return 0;
        
    
    
    }
     
    void checking(){
       int number;
     qq:   scaner();
        if(digital()==1){
        while(curr!='#'){
          number=check();
          if(number==1){
             goto qq;
          }
          else if(number==0){
          
           break;     
          }
        }
        }
    
    
    if(number==1){
    
    printf("无错误
    ");
    }
    else 
    printf("%c错误
    ",curr);
    
    
    }
    
    
    
    void main()
    {    char ch;
        int i=0;
        printf("请输入语法:(以#结束)
    ");
        do{
            scanf("%c",&ch);
            LL1[i] = ch;
            i++;
        }while(ch != '#');
        scaner();
        checking();
        
    
    }
    
    void scaner(){   
        N++;
        if(LL1[N] == ' '){
            N++;
        }else
        {
            curr = LL1[N];
        }
    }
    

      

  • 相关阅读:
    初学Listener
    初学filter
    Servlet开发
    伪随机数生成
    枚举类
    LeetCode74——Search a 2D Matrix
    STL——lower_bound()
    LeetCode198——house robber(不懂dp)
    LeetCode171——Excel Sheet Column Number
    参数传递的三种方式
  • 原文地址:https://www.cnblogs.com/caishun/p/5089567.html
Copyright © 2011-2022 走看看