文档介绍:.编译原理语法分析实验报告软工082班兰洁2一、实验内容二、实验目的三、实验要求四、程序流程图?主函数;?scanner();?irparser()函数?yucu()/*语句串分析*/?statement()/*语句分析函数*/?expression()/*表达式分析函数*/?term()/*项分析函数*/?factor()/*因子分析函数*/五、程序代码六、测试用例七、输出结果八、实验心得...一、实验内容:编写为一上下文无关文法构造其递归下降语法分析程序,并对任给的一个输入串进行语法分析检查。程序要求能对输入串进行递归下降语法分析,能判别程序是否符合已知的语法规则,如果不符合(编译出错),则输出错误信息。二、实验目的:构造文法的语法分析程序,要求采用递归下降语法分析方法对输入的字符串进行语法分析,实现对词法分析程序所提供的单词序列的语法检查和结构分析,进一步掌握递归下降的语法分析方法。三、实验要求:利用C语言编制递归下降分析程序,并对Training语言进行语法分析。。用扩充的表示如下:<程序>-->function<语句串>endfunc<语句串>--><语句>{;<语句>}<语句>?<赋值语句><赋值语句>?ID?<表达式><表达式>?<项>{+<项>|-<项>}<项>?<因子>{*<因子>|/<因子>}<因子>?ID|NUM|(<表达式>)备注:实验当中我对程序进行了扩展,增加了程序识别if条件判断语句,“#”结束,如果是文法正确的句子,则输出成功信息,打印“ess”,否则输出“error”。四、程序流程图主函数:...Scanner()函数:irparser()函数yucu()/*语句串分析*/...statement()/*语句分析函数*/expression()/*表达式分析函数*/...term()/*项分析函数*/...factor()/*因子分析函数*/五、程序代码:递归下降分析文法:<程序>-->function<语句串>endfunc<语句串>--><语句>{;<语句>}<语句>?<赋值语句>|<if条件语句>|<while循环语句><赋值语句>?<表达式><表达式>?<项>{+<项>|-<项>}<项>?<因子>{*<因子>|/<因子>}<因子>?ID|NUM|(<表达式>)<if条件语句>?(<表达式>)|(ID)|(NUM)?<语句>...<while条件循环语句>?(<表达式>)|(ID)|(NUM)?<语句>备注:红色字体部分为我对代码实现功能的主要修改与扩展部分。/*语法分析源代码*/#include<>#include<>charprog[80],token[8];charch;intsyn,p,m=0,n,sum,kk=0;char*rwtab[6]={unction,if, hen,while,do,endfunc};voidyucu();voidexpression();voidstatement();voidfactor();voidterm();voidirparser();voidscaner(){for(n=0;n<8;n++)token[n]=NULL;while(ch==''||ch=='\n')ch=prog[p++];m=0;if((ch<='z'&&ch>='a')||(ch<='Z'&&ch>='A')){while((ch<='z'&&ch>='a')||(ch<='Z'&&ch>='A')||(ch<='9'&&ch>='0')){token[m++]=ch;ch=prog[p++];}syn=10;for(n=0;n<6;n++)if(strcmp(token,rwtab[n])==0)syn=n+1;{...break;}token[m++]='\0';}elseif(ch<='9'&&ch>='0'){sum=0;while(ch<='9'&&ch>='0'){sum=sum*10+ch-'0';ch=prog[p++];}syn=11;}elseswitch(ch){case'<':m=0;token[m++]=ch;{ch=prog[p++];if(ch=='='){syn=22;token[m+1]=ch;}else{syn=20;ch=prog[--p];}break;case'>':m=0;token[m++]=ch;ch=prog[p++];if(ch=='='){syn=24;token[m++]=ch;}else{syn=23;p--;}...break;case'=':m=0;token[m++]=ch;ch=prog[