zoukankan      html  css  js  c++  java
  • 编译原理 语法分析器

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

      

  • 相关阅读:
    ListView 分页显示(转载+修改)下
    ListView 分页显示(转载+修改)上
    Android_开发片段(Part 1)
    JSCH执行linux命令
    linux运行wkhtmltopdf
    Apache HttpClient
    JDK自带的URLConnection
    java poi读取excel
    CXF webservice完整例子
    Oracle 常用初始化命令
  • 原文地址:https://www.cnblogs.com/bruce27/p/5574729.html
Copyright © 2011-2022 走看看