//Parser2- Example of Recursive Descent Parser //Program Limitation: Tokens must be separated with space(s) //Program by Barimani--Date 9/22/2009 #include #include #include using namespace std; #define B_ERR "..Initial BEGIN is missing\n****Rejected****\n"; #define E_ERR "..Expected to see END\n****Rejected****\n"; #define EC_ERR "..Characters after END\n****Rejected****\n"; #define EQ_ERR "..Expect to see an Equal\n****Rejected****\n"; #define EXP_ERR "..Expect to see an Expression\n****Rejected****\n"; #define root " -> Begin End\n"; #define stree1 " -> Id = \n"; #define stree2 " -> empty\n"; //#define etree " -> Id \n"; //#define exptree1 " -> + Id \n"; //#define exptree2 " -> - Id \n"; //#define exptree3 " -> empty\n"; ifstream f1; void gettoken(char* token) { if (!f1.eof()) f1>>token; int l= strlen(token); for (int i=0; i< l; i++) token[i]= toupper(token[i]); } void E(char* token) { if(strcmp(token,"E") != 0) { cout<