编译原理实验2__代滦码参考.docVIP

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

PAGE  PAGE 10 实验五、六 语法分析程序设计 [实验目的]: 了解语法分析的主要任务。 熟悉编译程序的编制。 [实验内容]:根据某文法,构造一基本递归下降语法分析程序。给出分析过程中所用的产生式序列。 [实验要求]: 构造一个小语言的文法,例如,Pascal语言子集的文法,考虑其中的算术表达式文法: G[表达式]: G[E]: 表达式→表达式+项|表达式-项|项 E→E+T|T 项→项*因式|项/因式|因式 T→T*F|F 因式→标识符|无符号整数|(表达式) F→i|(E) 设计语法树的输出形式,例如: 产生式 …… 编写递归下降语法分析程序 实现基本的递归下降分析器,能够分析任给的符号串是否为该文法所定义的合法算术表达式。实验报告中要说明分析使用的方法。 生成并输出分析过程中所用的产生式序列: 1 产生式1 2 产生式2 …… [实验步骤]: 写出一个小语言的算术表达式文法。 写出该小语言的算术表达式等价的LL(1)文法。例如: G[E]: 其中 E→TG G为E’ E→+TG|^ ^为ε T→FS S为T’ T→*FS|^ F→i|(E) 编写递归下降语法分析程序。 调试运行程序。 结果分析。 撰写实验报告。 [实验报告]:注意:由于此实验有一定的难度,自由组织3位同学一组,一组同学仅需上交一份报告。报告上需要写明3位同学的学号和姓名。 写出实现的算法。 #include stdio.h #includedos.h #includestdlib.h #includestring.h char a[50] ,b[50],d[200],e[10]; char ch; int n1,i1=0,flag=1,n=5; int total=0; int E(); int E1(); int T(); int G(); int S(); 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(Please input character string(length50,end of #):\n); do{ scanf(%c,ch); a[j]=ch; j++; }while(ch!=#); n1=j; ch=b[0]=a[0]; printf(步骤\t文法\t分析串\t\t分析字符\t剩余串\n); f=E1(); if (f==0) return; if (ch==#) { printf(\nAccept! Right Expression!\n\n); p=0; x=d[p]; while(x!=#) { printf(%c,x);p=p+1;x=d[p]; } } else { printf(\nError!!!\n); printf(回车返回\n); getchar();getchar(); return; } printf(\n); printf(回车返回\n); getchar(); getchar(); } int E1() { 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; p

文档评论(0)

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

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

1亿VIP精品文档

相关文档