翻译文法应用举例_第1页
翻译文法应用举例_第2页
翻译文法应用举例_第3页
翻译文法应用举例_第4页
翻译文法应用举例_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

翻译文法应用举例,表达式计算,一、表达式计算的翻译文法,EE1+TE.val=E1.val+T.val;EE1-TE.val=E1.val-T.val;ETE.val=T.val;TT1*FT.val=T1.val*F.val;TT1/FT.val=T1.val/F.val;TFT.val=F.val;FnumF.val=value(num);FIF.val=value(addr(i);F(E)F.val=E.val;,1+2+3语法树,1,2,3,特点:左部符号的属性由右部符号的属性计算,于语法树中由下向上传递。,如此属性,称为综合属性。,LR分析计算1+2+3,分析栈待读入符号串动作1+2+3#i(1)1+2+3#移进F(1)1+2+3#FiF.val=value(i);T(1)1+2+3#TFT.val=f.val;E(1)1+2+3#ETE.val=T.val;E(1)+i(2)1+2+3#移进E(1)+F(2)1+2+3#FiF.val=value(i);E(1)+T(2)1+2+3#TFT.val=F.val;E(3)1+2+3#EE1+TE.val=E1.val+T.val;E(3)+i(3)1+2+3#移进E(3)+F(3)1+2+3#FiF.val=value(i);E(3)+T(3)1+2+3#TFT.val=F.val;E(6)1+2+3#EE1+TE.val=E1.val+T.val;分析计算结束,适合LL分析的翻译文法,ET1E21E.p=T.v;2E.v=E.v;E+T3E143E1.p=E.p+T.v;4E.v=E1.v;E-T5E165E1.p=E.p-T.v;6E.v=E1.v;E77E.v=E.p;TF8T98T.p=F.v;9T.v=T.v;,T*F10T11110T1.p=T.p*F.v;11T.v=T1.v;T/F12T11312T1.p=T.p/F.v;13T.v=T1.v;T1414T.v=T.p;Fi1515F.val=value(i);F(E)11616F.v=E.v;,1+2+3语法树,1,2,3,特点,E、T有两个属性,E、T、F及i有一个属性E、T、F及i的属性由下向上传递,因此是综合属性E、T的属性p由左向右传递或由左向右及由上向下计算而得,如此属性称为继承属性E、T的属性val则由继承属性及其文法树下属之(综合)属性计算而得,亦为综合属性,LL分析计算1+2+3,分析栈待读入符号串动作#E1+2+3#2E1T1+2+3#ET1E2#2E19T8F1+2+3#TF8T9#2E19T815i1+2+3#Fi15#2E19T8F(1)1+2+3#F.v=value(i)#2E19T(1,?)1+2+3#T.p=F.v;#2E19141+2+3#T14#2E19T(1,1)1+2+3#T.v=T.p;#2E1T(1)1+2+3#T.v=T.v;#2E(1,?)1+2+3#E.p=T.v;#24E3T+1+2+3#E+T3E4#24E39T8F1+2+3#TF8T9#24E39T815i1+2+3#Fi15#24E39T8F(2)1+2+3#F.v=value(i);#24E39T(2,?)1+2+3#T.p=F.v;#24E39141+2+3#T14,分析栈待读入符号串动作#24E39141+2+3#T14#24E39T(2,2)1+2+3#T.v=T.p;#24E3T(2)1+2+3#T.v=T.v;#24EE(3,?)1+2+3#E1.p=E.p+T.v;#244E3T+1+2+3#E+T3E4#244E39T8F1+2+3#TF8T9#244E39T815i1+2+3#Fi15#244E39T8F(3)1+2+3#F.v=value(i);#244E39TT(3,?)1+2+3#T.p=F.v;#244E39141+2+3#T14#244E39T(3,3)1+2+3#T.v=T.p;#244E3T(3)1+2+3#T.v=T.v;#244EE(6,?)1+2+3#E1.p=E.p+T.v;#24471+2+3#E7#244E(6,6)1+2+3#E.v=E.p;#24E(3,6)1+2+3#E.v=E1.v;#2E(1,6)1+2+3#E.v=E1.v;#E(6)1+2+3#E.v=E.v;结束,修改为适应递下降分析的文翻译文法:ET1+T2T1.val+=T2.val|-T2T1.val-=T2.valE.val=T1.valTF1*F2F1.val+=F2.val|/F2F1.val/=F2.valT.val=F1.valFiF.val=value(addr(i)FnumF.val=value(num)F(E)F.val=E.val,表达式计算的递归下降分析,每一个文法符号具有一个属性(类型可设为双精度实数),每个分析子程序返回其属性(双精度实数),于动作部分完成属性计算。E的分析算法如下:doubleE()doublex=T();/即得T1.valwhile(Token=+|Token=-)intt=Token;nextToken();/取下一单词if(t=+)x+=T();elsex-=T();returnx;,编程作业,利用递归下降分析完成表达式计算利用LL(1)分析完成表达式计算利用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论