zoukankan      html  css  js  c++  java
  • 1223 递归

    #include<stdio.h>
    char curr;
    char LL1[1000];
    int N=-1;

    void fanyi(){

    N++;
    if(LL1[N] == ' '){
    N++;
    }else{
    curr = LL1[N];
    }
    }

    void panduan1(){
    panduan2();
    char1();
    }

    void zifu(){
    if(curr == '('){
    fanyi();
    panduan1();
    if(curr == ')'){
    fanyi();

    }else{
    printf("%d %c之后的文法有错! ",N,curr);
    }
    }else{
    while(1){
    if(curr >= 'a' && curr<='z' || curr >= 'A' && curr <= 'Z' || curr >= '0' && curr <= '9'){
    fanyi();
    }else{
    break;
    }
    }
    }
    }

    void char2(){
    if(curr == '*'){
    fanyi();
    zifu();
    panduan2();
    }else if(curr == '/'){
    fanyi();
    zifu();
    panduan2();
    }else if(LL1[N+1] == '#' || LL1[N+1] == '+' || LL1[N+1] == '/' || LL1[N+1] == '*' || LL1[N+1] == '-'){
    if(LL1[N] != '(' && LL1[N] != ')')
    printf("%d %c之后的文法有错! ",N,curr);
    }
    }

    void panduan2(){
    zifu();
    char2();
    }

    void char1(){
    if(curr == '+'){
    fanyi();
    panduan2();
    char1();
    }
    else if(curr == '-'){
    fanyi();
    panduan2();
    char1();
    }else if(LL1[N+1] == '#' || LL1[N+1] == '+' || LL1[N+1] == '/' || LL1[N+1] == '*' || LL1[N+1] == '-'){
    if(LL1[N] != '(' && LL1[N] != ')')
    printf("%d %c之后的文法有错! ",N,curr);
    }
    }


    main()
    { char ch;
    int i=0;
    printf("请输入需要分析的curr语法:(以#结束) ");
    do{
    scanf("%c",&ch);
    LL1[i] = ch;
    i++;
    }while(ch != '#');
    fanyi();
    panduan1();
    if(curr == '#')
    printf("成功! ");
    else{
    printf("文法有误!! ");
    printf("%d %c之后的文法有错! ",N,curr);
    }

    }

  • 相关阅读:
    查看linux系统cup及内存信息
    caffe tutorial
    vector 初始化方法
    c++ 常用函数头文件
    caffe——全连接层inner_product_layer
    c++ 将vector转化为数组
    基于 Ubuntu 搭建 RoCE 实践环境
    基于QEMU使用 u-boot 拉取 Linux 内核
    Linux 网桥(Bridge)实践环境搭建
    使用 qemu 模拟器运行 aosp(基于 x86-64 Linux 内核)
  • 原文地址:https://www.cnblogs.com/wangjunjie123/p/5089333.html
Copyright © 2011-2022 走看看