#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";
}
}
}
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";
}
}
}