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

    文法G[E]

    E –> E + T | T

    T –> T + F | F

    F –> i | (E)

    消除左递归

    E –> TE’

    E’-> +TE’

    E’-> ε

    T –> FT’

    T’–> *FT’

    T’-> ε

    F -> i|(E)

    编码实现

    #include<iostream>

    using namespace std;

    void E();

    void E1();

    void T();

    void T1();

    void F();

    char ReadToken();

    bool Match(char a);

    void IsSuccess();

    char token;

    int cur = 0; // 当前字符索引

    char *str = "i+i*i+(i*i)#"; // 语句

    void main()

    {

        ReadToken();

       if(!Match('#'))

          E();

    }

    void E()

    {

       T();

       E1();

    }

    void T()

    {

       F();

       T1();

    }

    void E1()

    {

       if(Match('+'))

       {

          ReadToken();

          IsSuccess();

          T();

          E1();

       }

    }

    void T1()

    {

       if(Match('*'))

       {

          ReadToken();

          IsSuccess();

          F();

          T1();

       }

    }

    void F()

    {

       if(Match('('))

       {

          ReadToken();

          IsSuccess();

          E();

          if(Match(')'))

          {

            ReadToken();

            IsSuccess();

          }

          else

          {

            cout << "error" << endl;

          }

       }

       else if(Match('i'))

       {

          ReadToken();

          IsSuccess();

       }

       else if(Match('#'))

       {

          cout << "success" << endl;

       }

       else

       {

           cout << "error" << endl;

       }

    }

    char ReadToken()

    {

       return token = str[cur++];

    }

    bool Match(char ch)

    {

       if(token == ch)

          return true;

       return false;

    }

    void IsSuccess()

    {

       if(Match('#'))

       {

          cout << "success!" << endl;

          exit(0);

       }

    }

  • 相关阅读:
    springboot之静态资源放行的方法(记录)
    FastDFS之图片上传
    FastDFS安装部署
    Docker安装MySQL5.7.25
    123qwe
    Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释
    jQuery可见性过滤选择器
    jQuery属性过滤选择器
    jQuery内容过滤选择器
    jQuery子元素过滤选择器
  • 原文地址:https://www.cnblogs.com/CPFlying/p/1721913.html
Copyright © 2011-2022 走看看