实验二递归下降语法分析程序设计..docxVIP

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二递归下降语法分析程序设计.

实验二 递归下降语法分析程序设计[实验目的]:了解语法分析的主要任务。熟悉编译程序的编制。[实验内容]:根据某文法,构造一基本递归下降语法分析程序。给出分析过程中所用的产生式序列。[实验要求]:构造一个小语言的文法,例如,Pascal语言子集的文法,考虑其中的算术表达式文法:G[表达式]:G[E]:表达式→表达式+项|表达式-项|项 E→E+T|T项→项*因式|项/因式|因式 T→T*F|F因式→标识符|无符号整数|(表达式) F→i|(E)设计语法树的输出形式,例如:产生式……编写递归下降语法分析程序实现基本的递归下降分析器,能够分析任给的符号串是否为该文法所定义的合法算术表达式。实验报告中要说明分析使用的方法。生成并输出分析过程中所用的产生式序列:1 产生式12 产生式2……[实验步骤]:写出一个小语言的算术表达式文法。写出该小语言的算术表达式等价的LL(1)文法。例如: G[E]: 其中E→TG G为E’E→+TG|^ ^为εT→FS S为T’T→*FS|^ F→i|(E)编写递归下降语法分析程序。调试运行程序。结果分析。撰写实验报告。[实验报告]:每位同学撰写一份试验报告,并提交电子版。源程序。画出流程图。实验设计过程中出现的问题及解决的方法。实验设计过程中的体会。给出程序清单。给出测试结果。实验报告命名规则:个人:2013-14(1)医智(1)1107505101蔡菲菲实验二交各班课代表汇总后,由课代表打包后,发送至老师的邮箱班级命名规则:2013-14医智(1)实验二截止日期:第14周周五晚11点30分测试的结果举例源代码:#include stdio.h#include dos.h#include stdlib.h#include string.hchar a[50],b[50],d[200],e[10],ch;/*数组a存输入串,数组d存推导式*/int n1,i1=0,flag=1,n=5; /*flag=1处理非终结符,flag=0处理终结符*/ int total=0; /*步骤计数器*/int E(),E1(),T();int G();/*E’*/int S();/*T’*/int F();void input();void input1();void output();void main() /*递归分析*/{int f,p,j=0;char x;d[0]=E;d[1]==;d[2]=;d[3]=T;d[4]=G;d[5]=#;printf(请输入字符串(长度50,以#号结束)\n);do{scanf(%c,ch);a[j]=ch;j++;}while(ch!=#);n1=j;/* n1输入串实际长度 */ch=b[0]=a[0];printf(步骤\t文法\t分析串\t\t分析字符\t剩余串\n);f=E1();{system(pause);}if (f==0)return; /*有语法错误,失败退出*/if (ch==#){printf(accept\n); /*输入串是文法的句子*/p=0;x=d[p];while(x!=#){ printf(%c,x);p=p+1;x=d[p]; /*输出推导式*/}}else{ printf(error\n);printf(回车返回\n);getchar();getchar();return;}printf(\n);printf(回车返回\n);getchar();getchar();}int E1()/* 有语法错误函数返回值为0,否则为1*/ { int f,t;printf(%d\tE--TG\t,total);total++;flag=1;input();input1();f=T();if (f==0)return(0);t=G();if (t==0)return(0);else return(1);}int E(){ int f,t;printf(%d\tE--TG\t,total);total++;e[0]=E;e[1]==;e[2]=;e[3]=T;e[4]=G;e[5]=#;output();flag=1;input();input1();f=T();if (f==0)return(0);t=G();if (t==0)return(0);elsereturn(1);}int T(){ int f,t;printf(%d\tT--FS\t,total); total++;e[0]=T;e[1]==;e[2]=;e[3]=F;e[4]=S;e[5]=#;output();flag=1;input();input1();f=F();if

文档评论(0)

sfkl + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档