• 编译原理 语法分析器


    当一个文法满足LL(1)条件时,我们就可以为它构造一个不带回溯的自上而下分析程序,这个分析程序是由一组递归过程组成的,每个过程对应文法的一个非终结符。这样的一个分析程序成为递归下降分析器。

    例:一个支持 +,*,(,) 的简单文法为(用$表示空字符):

    E -> TE' 

    E -> +TE' | $

    T -> FT'

    T' -> *FT' | $

    F -> (E) | i

    《编译原理》 第三版(陈火旺)P74:

    #include "iostream"
    #include "cstdio"
    #include "cstring"
    
    using namespace std;
    
    char a[100];
    int len;
    int p;
    char sym;
    bool ok;
    
    void E();
    void E2();
    void T();
    void T2();
    void F();
    
    void init()
    {
        len = strlen(a);
        ok=true;
        p=0;
    }
    void getNext()
    {
        sym = a[p++];
    }
    
    int main()
    {
        freopen("in.txt","r",stdin);
    
        while(cin>>a)
        {
            init();
            getNext();
            E();
            cout<<a<<endl;
            if(ok)cout<<"Success"<<endl;
            else cout<<"Error"<<endl;
        }
    
        return 0;
    }
    
    void E()
    {
        T();
        E2();
    }
    
    void E2()
    {
        if(sym=='+')
        {
            getNext();
            T();
            E2();
        }
    }
    
    void T()
    {
        F();
        T2();
    }
    
    void T2()
    {
        if(sym=='*')
        {
            getNext();
            F();
            T2();
        }
    }
    
    void F()
    {
        if( sym=='i' )
        {
            getNext();
        }
        else
        {
            if(sym=='(')
            {
                getNext();
                E();
                if(sym==')')
                {
                    getNext();
                }
                else
                {
                    ok = false;
                    return;
                }
            }
            else
            {
                ok = false;
                return;
            }
        }
    
    }
    

      

  • 相关阅读:
    [译]The Python Tutorial#4. More Control Flow Tools
    Python基础-函数参数
    Python进阶-继承中的MRO与super
    Python基础-类
    [译]The Python Tutorial#6. Modules
    Python基础-包与模块
    Python基础-类变量和实例变量
    Python进阶
    iphonex适配
    web前端安全
  • 原文地址:https://www.cnblogs.com/bruce27/p/5574729.html
Copyright © 2020-2023  润新知