• 编译原理 语法分析器


    当一个文法满足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;
            }
        }
    
    }
    

      

  • 相关阅读:
    【转】算法的时间复杂度
    FFT 物理意义(转)
    【转】FIR学习1
    【转】DFT DTFT DFS FFT的关系
    【转】TCL中的数组
    【转】setup time和hold time的周期问题(slack)
    【转】TCL语法简介
    【转】亚稳态分析
    ubuntu下Samba服务器搭建
    第一次生成uImage出现的问题解决
  • 原文地址:https://www.cnblogs.com/bruce27/p/5574729.html
Copyright © 2020-2023  润新知