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


    消除左递归后的文法是:

    E→TE'

    E'→+TE'|-TE'|ε

    T→FT'

    T'→*FT'|/FT'|ε

    F→(E)|i

     
    #include<stdio.h>  
    #include<string>  
    char str[10];  
    int index=0;  
    void E();          
    void X();            
    void T();           
    void Y();          
    void F();             
    int main()  
    {  
        int len;  
        int m;  
        printf("请输入要测试的次数:");  
        scanf("%d",&m);  
        while(m--)  
        {  
            printf("请输入算数表达式:");  
            scanf("%s",str);  
            len=strlen(str);  
            str[len]='#';  
            str[len+1]='';  
            E();  
            printf("正确语句!
    ");  
            strcpy(str,"");  
            index=0;  
        }  
        return 0;  
    }  
    void E()  
    {  
        T();  
        X();  
    }  
    void X()  
    {  
        if(str[index]=='+'||str[index]=='-')  
        {  
            index++;  
            T();  
            X();  
        }   
    }  
    void T()  
    {  
        F();  
        Y();  
    }  
    void Y()  
    {  
        if(str[index]=='*'||str[index]=='/')  
        {  
            index++;  
            F();  
            Y();  
        }  
    }  
    void F()  
    {  
        if(str[index]=='i')  
        {  
            index++;  
        }  
        else if (str[index]=='(')  
        {      
            index++;  
            E();  
            if(str[index]==')')  
            {  
                index++;   
            }else{  
                printf("
    分析失败!
    ");  
                exit (0);  
            }  
        }   
        else{  
            printf("分析失败!
    ");   
            exit(0);  
        }  
     } 

      

  • 相关阅读:
    npm 安装Vue环境时报错
    WinSCP与SecureCRT
    LeetCode100---Same Tree
    LeetCode404---Sum of Left Leaves
    LeetCode283---Move Zeroes
    LeetCode344---Reverse String
    Java多线程一
    Java知识点总结
    Java泛型
    深入浅出设计模式学习笔记四:单例模式
  • 原文地址:https://www.cnblogs.com/caicaihong/p/5051582.html
Copyright © 2020-2023  润新知