编译原理答案剖析.ppt

  1. 1、本文档共689页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
case 104: label=label-1; templabel=ntab2[label].tc; ntab2[label].tc=ntab2[label].fc; ntab2[label].fc=templabel; ssp=ssp-2; sp1=sp1-2; label++; n1.sy1=tempsy; break; /*E-not E*/ case 105: backpatch(ntab2[label-1].tc,nxq); label=label-1; ssp=ssp-2; sp1=sp1-2; label++; n1.sy1=EA; break; /*EA-E(1)and*/ case 106: label=label-2; ntab2[label].tc=ntab2[label+1].tc; ntab2[label].fc=merg(ntab2[label].fc,ntab2[label+1].fc); ssp=ssp-2; sp1=sp1-2; label++; n1.sy1=tempsy; break; /*E-EA E(2)*/ case 107: backpatch(ntab2[label-1].fc,nxq); label=label-1; ssp=ssp-2; sp1=sp1-2; label++; n1.sy1=EO; break; case 108: label=label-2; ntab2[label].fc=ntab2[label+1].fc; ntab2[label].tc=merg(ntab2[label].tc,ntab2[label+1].tc); ssp=ssp-2; sp1=sp1-2; label++; n1.sy1=tempsy; break; } lrparse2(num); } if (lr1==ACC) return 1; } /***************测试字符是否为表达式中的值(不包括″; ″)**************/ test(int value) { switch (value) { case intconst: case ident: case plus: case times: case becomes: case lparent: case rparent: case rop: case op_and: case op_or: case op_not: return 1; default: return 0; } } /*******************************************/ lrparse( ) { int i1=0; int num=0; /*指向表达式缓冲区*/ if (test(n.sy1)) { if(stack[sp].sy1==sy_while) sign=2; else { if (stack[sp].sy1==sy_if) sign=3; else sign=1; } do { ibuf[i1].sy1=n.sy1; ibuf[i1].pos=n.pos; readnu( ); i1++; }while(test(n.sy1)); /*把表达式放入缓冲区*/ ibuf[i1].sy1=jinghao; pbuf--; /*指针后退1,需要吗?*/ sstack[0].sy1=jinghao; ssp=0; /*符号栈底的初始化*/ if (sign==1) { sp1=0; stack1[sp1]=0; /*状态栈1的栈底初始化*/ num=2; /*指向:=*/ n1.sy1=ibuf[num].sy1; n1.pos=ibuf[num].pos; lrparse1(num); /*处理赋值语句*/ n.sy1=a; /*当前文法符号置为a(赋值语句)*/ } if ((sign==2)||(sign==3)) { pointmark++; labelmark[pointmark].nxq1=nxq

文档评论(0)

558411 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档