实验二:自顶向下的语法分析:递归下降法1、实验目的:编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。2、实验要求:文法(教材199页)(1)把词法分析作为语法分析的子程序实现(5分)(2)独立的语法分析程序(4分)(3)输入串以‘#’结束,输出成功(success)或出错(error)、指出出错位置(行、列以及错误类型)#includeiostream#includefstream#includestring#includestdlib.h#defineMAX1024usingnamespacestd;stringDataType[]={int,bool,char,void};stringKeyWords[]={if,else,do,while,for,break,in,continue,goto,switch,case,default,foreach,try,catch,finally,throw,return};stringOperator[]={+,-,*,/,%,&&,||,,,=,=,==,!=,^,&,|,~,,,=,+=,-=,*=,/=,%=,&=,|=,^=,=,=};charSeperator[]={'','.','(',')','[',']',';','{','}',',','?',':'};structIdentity{stringvalue;inttype;};ifstreaminFile(D:\\output.txt);introw=1;IdentityID[10000];intnWord=0;voidExpression(){stringword;intsyn;inFilewordsyn;if(syn==71){stringtmp1;inttmp2;inFiletmp1tmp2;if(tmp2!=199){if(tmp2=30&&tmp271){inFiletmp1tmp2;if(tmp2==71){inFiletmp1tmp2;if(tmp2!=199)couterroroccursinrowrow,miss\;\!endl;}elsecouterroroccursinrowrow,missidentity!endl;}elsecouterroroccursinrowrow,missoperator!endl;}}}intlook(stringvalue){inti;for(i=0;inWord;i++)if(ID[i].value==value)returni;return-1;}voidGrammerAnalyse(){stringword;intsyn;inti;while(!inFile.eof()){i=0;inFilewordsyn;if(word==#)row++;else{if(syn0&&syn10){stringtmp1;inttmp2;inFiletmp1tmp2;if(tmp2==71){intindex=look(tmp1);//ID[index].type=syn;inFiletmp1tmp2;if(tmp2!=199){if(tmp1===){Expression();}elsecouterroroccursinrowrow,miss\;\!endl;}}elsecouterroroccursinrowrow,missidentity!endl;}elseif(syn==71){inFilewordsyn;if(word===){Expression();}elsecouterroroccursinrowrow,miss\=\!endl;}}}inFile.close();}intmain(){GrammerAnalyse();return0;}