zoukankan      html  css  js  c++  java
  • 0106递归下降语意分析

    #include<stdio.h>
    #include<string.h>
    int i,j=1;
    char N[100];
    
    void A();
    void A1();
    void B();
    void B1();
    void C();
    
    
    void A()
    {
    B();
    A1();
    }
    void B()
    {
    C();
    B1();
    }
    void A1()
    {
    if(N[i]=='+'||N[i]=='-')
    {
    i++;
    B();
    A1();
    }
    else if(N[i]=='#'||N[i]==')')
    {
    i++;
    }
    }
    void B1()
    {
    if(N[i]=='*'||N[i]=='/')
    {
    i++;
    C();
    B1();
    }
    else if(N[i]=='#'||N[i]==')')
    {
    i++;
    }
    
    }
    void C()
    {
    int d;
    if((N[i]<='z'&&N[i]>='a')||(N[i]<='Z'&&N[i]>='A'))
    {
    if((N[i++]<='z'&&N[i++]>='a')||(N[i++]<='Z'&&N[i++]>='A'))
    i++;
    else 
    {
    printf("\n分析失败!\n");
    j=0;
    }
    }
    if(N[i]<='9'&&N[i]>='0')
    {
    if(N[i++]<='9'&&N[i++]>='0')
    i++;
    else 
    {
    printf("\n分析失败!\n");
    j=0;
    }
    }
    else if(N[i]=='(')
    {
    A();
    if(N[i]==')')
    {
    i++;
    }
    else
    { 
    printf("\n分析失败!\n");
    exit (0);
    }
    }
    else
    { 
    printf("\n分析失败!\n");
    exit (0);
    }
    }
    int main()
    {
    int len,d;
    start:printf("请输入表达式:\n");
    scanf("%s",N);
    len=strlen(N);
    N[len]='#';
    N[len+1]='\0';
    E();
    if(J==1)
    {
    printf("是否为正确的表达式\n");
    }
    printf("是否重试?重试输入1:");
    scanf("%d",&d);
    if(d=1)
    goto start;
    return 0;
  • 相关阅读:
    开启 clr enabled
    索引查看
    nginx 安装
    mysql中int(10)与int(11)有什么区别吗?
    1.安卓开发基础1~6笔记
    Vue项目搭建基础之Vue-cli模版测试
    alert执行顺序
    介绍call和apply
    a链接易混淆与form表单简易验证用法详解
    js正则知识点
  • 原文地址:https://www.cnblogs.com/whitestar/p/5106300.html
Copyright © 2011-2022 走看看