• 1216递归下降语法分析程序


    #include<stdio.h>  
    #include<string>
    #define N 20  
    char str[N];  
    int i=0;  
    int k=0;
    void E();          
    void X();            
    void T();           
    void Y();          
    void F();             
    main()  
    {  
        int m;    
        strcpy(str,"");
        while(str[0]!='#')
        {
            printf("请输入算数表达式:<以#号结束,输入#退出>
    "); 
            for(m=0;m<N;m++)
            {
                scanf("%c",&str[m]);
                if(str[m]=='#')
                    break;
            }   
            str[m+1]='';
            E();  
            if(k==0)
            {
                printf("正确语句!
    ");   
            }
            i=0;  
            k=0;
        }  
    }  
    void E()  
    {  
        T();  
        X();
    }  
    void X()  
    {  
        if(str[i]=='+'||str[i]=='-')  
        {  
            i++;  
            T();  
            X();  
        }   
    }  
    void T()  
    {  
        F();  
        Y();  
    }  
    void Y()  
    {
        if(str[i]=='*'||str[i]=='/')  
        {  
            i++;  
            F();  
            Y();  
        }  
    }  
    void F()  
    {  
        if(str[i]=='i')  
        {  
            i++;  
        }  
        else if (str[i]=='(')  
        {      
            i++;  
            E();  
            if(str[i]==')')  
            {  
                i++;   
            }else{
                if(k==0)
                {
                    printf("
    分析失败!
    ");  
                    k=1;
                }
            }  
        }   
        else{ 
            if(k==0)
            {
                printf("分析失败!
    "); 
                k=1;
            }
        }  
     }
  • 相关阅读:
    http返回码
    WCF 超时
    MVC异步
    熔断设计模式
    JAVA学习图
    java io模型
    keep alive 长连接
    Java异常处理 误区
    架构的本质
    Repository模式
  • 原文地址:https://www.cnblogs.com/jinyechutao11/p/5092435.html
Copyright © 2020-2023  润新知