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

    #include<stdio.h>
    #include<string>
    char str[10];   //记录要分析的字符串
    int x=0;        //记录第一个字符
    
    void E();           
    void X();           
    void T();           
    void Y(); 
    void F(); 
    
    int main()
    {
        int len;
        printf("请输入算数表达式:");
        scanf("%s",str);
        len=strlen(str);
        str[len]='#';
        str[len+1]='';
        E();
        printf("
    是正确的表达式!");
        strcpy(str,"");
        x=0;
        return 0;
    }
    
    void E()
    {
        T();
        X();
    }
    
    void X()
    {
        if(str[x]=='+'||str[x]=='-')
        {
            x++;
            T();
            X();
        } 
    }
    
    void T()
    {
        F();
        Y();
    }
    
    void Y()
    {
        if(str[x]=='*'||str[x]=='/')
        {
            x++;
            F();
            Y();
        }
    }
    
    void F()
    {
        if(str[x]>='a'&&str[x]<='z')
        {
            x++;
        }
        else if(str[x]>=0&&str[x]<=9)
        {
            x++;
        }
        else if (str[x]=='(')
        {     
            x++;
            E();
            if(str[x]==')')
            {
                x++; 
            }
            else
            {
                printf("
    有语法错误!");
                exit(0);
            }
        } 
        else
        {
            printf("
    有语法错误!"); 
            exit(0);
        }
     }
  • 相关阅读:
    python中 __new__和__init__
    生成器
    边缘与轮廓
    霍夫变换
    高级滤波
    基本形态学滤波
    基本图形的绘制(基于skimage)
    图像的自动阈值分割
    图像的简单滤波
    直方图与均衡化
  • 原文地址:https://www.cnblogs.com/babys8023/p/5091792.html
Copyright © 2011-2022 走看看