递归下降分析程序构造

#include  < iostream >
using   namespace  std;
char  A[ 100 ];     // 用于存放符号串
int  i = 0 ;         // 扫描指针
char  sym;         // 用于保存当前要判断的字符
bool  flag = 0 ;     // 用于判断该输入是否匹配
void  E();    //  E
void  EE();   //  E'
void  T();    //  T
void  TT();   //  T'
void  F();    //  F
void  advance();         // 从字符串数组中读入一个字符
void  main( )
{
    cout
<< " \n多读入的结束字符为#\n\n "
    cin
>> A;    
    cout
<< " \n***************************************\n\n "
    sym
= A[ 0 ];
    E();
    
if (sym != ' # ' ){
        
if (flag == 1 )
        {
            cout
<< " \n该输入串不匹配\n\n " ;        
        }
        
else
        {
            cout
<< " \n该输入串匹配\n\n " ;            
        }
    }
}
void  E()
{
    T();
    EE();
}
void  EE()
{
    
if (sym == ' + ' )
    {
        advance();
        T();
        EE();
    }
    
}
void  T()
{
    F();
    TT();
}
void  TT()
{
    
if (sym == ' * ' )
    {
        advance();
        F();
        TT();
    }
    
}
void  F()
{
    
if (sym == ' i ' )
        advance();
    
else
    {
        
if (sym == ' ( ' )
        {
            advance();
            E();
            
if (sym == ' ) ' )
                advance();
            
else
                flag
= 1 ;
        }
        
else
            flag
= 1 ;
    }
    
}
void  advance()
{
    i
++ ;
    sym
= A[i];
    
if (sym == ' # ' )
    {
        
if (flag == 1 )
        {
            cout
<< " \n该输入串不匹配\n\n " ;        
        }
        
else
        {
            cout
<< " \n该输入串匹配\n\n " ;            
        }
    }
    
}

转载于:https://www.cnblogs.com/DonePuzzle/archive/2008/05/10/1191346.html

你可能感兴趣的:(递归下降分析程序构造)