#include
#include
#include
#include
/*
Grammer used is:-
E -> TE'
E'-> +TE'| e
T -> FT'
T'->*FT' | e
F -> (E) | id
*/
class Rec_parser
{
char input[20];
int i;
public:
Rec_parser()
{i=0;
printf("Enter the input string::");
gets(input);
E();
if(input[i]=='$')
printf("\ninput string accepted");
getch();
}
void E()
{
T();
EPRIME();
}
void EPRIME()
{
if(input[i]=='+')
{
advance();
T();
EPRIME();
}
}
void T()
{
F();
TPRIME();
}
void TPRIME()
{
if(input[i]=='*')
{
advance();
F();
TPRIME();
}
}
void F()
{
if(input[i]=='(')
{
advance();
E();
if(input[i]==')')
{
advance();
}
else
ERROR();
}
else
{
if(input[i]=='i')
advance();
else
ERROR();
}
}
void advance()
{
i++;
}
void ERROR()
{
printf("ERROR...!!!!!");
getch();
exit(0);
}
};
void main()
{
clrscr();
Rec_parser r;
getch();
}
Read more: http://feeds.dzone.com/~r/dzone/snippets/~3/dqJ1gHHwlFU/11033