zoukankan      html  css  js  c++  java
  • 1230递归下降语法分析程序设计


    #include<stdio.h>
    #include<string.h>
    int i,t=1;
    char a[100];

    void E();
    void E1();
    void T();
    void T1();
    void F();


    void E()
    {
    T();
    E1();
    }
    void T()
    {
    F();
    T1();
    }
    void E1()
    {
    if(a[i]=='+'||a[i]=='-')
    {
    i++;
    T();
    E1();
    }
    else if(a[i]=='#'||a[i]==')')
    {
    i++;
    }
    }
    void T1()
    {
    if(a[i]=='*'||a[i]=='/')
    {
    i++;
    F();
    T1();
    }
    else if(a[i]=='#'||a[i]==')')
    {
    i++;
    }

    }
    void F()
    {
    int d;
    if((a[i]<='z'&&a[i]>='a')||(a[i]<='Z'&&a[i]>='A'))
    {
    if((a[i++]<='z'&&a[i++]>='a')||(a[i++]<='Z'&&a[i++]>='A'))
    i++;
    else 
    {
    printf(" 分析失败! ");
    t=0;
    }
    }
    if(a[i]<='9'&&a[i]>='0')
    {
    if(a[i++]<='9'&&a[i++]>='0')
    i++;
    else 
    {
    printf(" 分析失败! ");
    t=0;
    }
    }
    else if(a[i]=='(')
    {
    E();
    if(a[i]==')')
    {
    i++;
    }
    else

    printf(" 分析失败! ");
    exit (0);
    }
    }
    else

    printf(" 分析失败! ");
    exit (0);
    }
    }
    int main()
    {
    int len,d;
    start:printf("请输入表达式: ");
    scanf("%s",a);
    len=strlen(a);
    a[len]='#';
    a[len+1]='';
    E();
    if(t==1)
    {
    printf("是正确的表达式 ");
    }
    printf("是否重试?重试输入1:");
    scanf("%d",&d);
    if(d=1)
    goto start;
    return 0;
    }

  • 相关阅读:
    79.Word Search
    78.Subsets
    77.Combinations
    75.Sort Colors
    74.Search a 2D Matrix
    73.Set Matrix Zeroes
    71.Simplify Path
    64.Minimum Path Sum
    63.Unique Paths II
    Docker 拉取 oracle 11g镜像配置
  • 原文地址:https://www.cnblogs.com/950525kxj/p/5092289.html
Copyright © 2011-2022 走看看