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

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

    void T();
    void E();
    void F();
    void e();
    void t();
    void error();
    void scaner();

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

    }

    void scaner(){ //用于读取源函数的下一个字符

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

    void E(){
    T();
    e();
    }
    void T(){
    F();
    t();
    }

    void e(){
    if(curr == '+'){
    scaner();
    T();
    e();
    }
    else if(curr == '-'){
    scaner();
    T();
    e();
    }else if(LL1[N+1] == '#' || LL1[N+1] == '+' || LL1[N+1] == '/' || LL1[N+1] == '*' || LL1[N+1] == '-'){
    if(LL1[N] != '(' && LL1[N] != ')')
    error();
    }
    }

    void t(){
    if(curr == '*'){
    scaner();
    F();
    T();
    }else if(curr == '/'){
    scaner();
    F();
    T();
    }else if(LL1[N+1] == '#' || LL1[N+1] == '+' || LL1[N+1] == '/' || LL1[N+1] == '*' || LL1[N+1] == '-'){
    if(LL1[N] != '(' && LL1[N] != ')')
    error();
    }
    }
    //LIE ZHI HUA TI GONG TAI MA
    void F(){
    if(curr == '('){
    scaner();
    E();
    if(curr == ')'){
    scaner();
    // printf("111111");
    }else{
    error();
    }
    }else{
    //判断是否是函数或者是数字
    //error();
    while(1){
    if(curr >= 'a' && curr<='z' || curr >= 'A' && curr <= 'Z' || curr >= '0' && curr <= '9'){
    scaner();
    }else{
    break;
    }
    }
    }
    }

    void error(){
    printf("%d %c之后的文法有错! ",N,curr);
    }

  • 相关阅读:
    centos服务器上线第二个django项目方法。
    centos7服务器部署django项目。
    C# 修饰符
    PLSQL 12 安装、连接Oracle
    GAC 解释&路径
    WebService 创建、发布、调用
    区域性名称和标识符
    关键字
    运算符 &(与运算)、|(或运算)、^(异或运算)
    ASCII,Unicode,UTF-8,GBK 区别
  • 原文地址:https://www.cnblogs.com/chenkaiqi/p/5089238.html
Copyright © 2011-2022 走看看