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

    #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(" True! ");
        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(" Error! ");
                exit(0);
            }
        }
        else
        {
            printf(" Error! "); exit(0); } }

      结果如下:

     
     
  • 相关阅读:
    Java实现单链表的各种操作
    LintCode #452 删除链表中的元素
    前两天做项目遇到了sqlserver最大连接数 Max Pool Size 的问题
    Redis的应用场景
    说一说MVC的Authentication过滤(四)
    MVC中的下载文件及上传
    Python之高级特性
    说一说MVC的MenuCard(五)
    说一说MVC的CSRF(三)
    说一说MVC的控制器(二)
  • 原文地址:https://www.cnblogs.com/linfa/p/5093912.html
Copyright © 2011-2022 走看看