- 1、本文档共169页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理教程04语义分析和中间代码生成
布尔表达式的翻译过程 : 1.画表达式的翻译图; 2.写出每个布尔变量或关系表达式的2个四元式 (四元式未完成,未填转移目标result); 3.待整个表达式的四元式写完,回填转移目标。 控制语句的翻译过程 : 1.画语句的代码结构图; 2.根据代码结构图,写四元式; (四元式未完成,未填转移目标result) 3.翻译过程(即扫描语句过程)中,伺机回填转移目标。 (4) 有一语法制导翻译如下所示: S→bAb {print1} A→(B {print2} A→a {print3} B→Aa) {print4} 若输入序列为b(((aa)a)a)b,且采用自下而上的分析方法,则输出序列为 。 a. b. c. d. 4.2 何谓“语法制导翻译”?试给出用语法制导翻译生成中间代码的要点,并用一简例予以说明。 4.3 令S.val为文法G[S]生成的二进制数的值,例如对输入串101.101,则S.val=5.625。按照语法制导翻译方法的思想,给出计算S.val的相应的语义规则,G[S]如下: ?? G[S]: S→L.L∣L L→LB∣B B→0∣1 4.4 下面的文法生成变量的类型说明: D→id L L→,id L∣:T T→integer∣real 试构造一个翻译方案,仅使用综合属性,把每个标识符的类型填入符号表中(对所用到的过程,仅说明功能即可,不必具体写出)。 4.5 写出翻译过程调用语句的语义子程序。在所生成的四元式序列中,要求在转子指令之前的参数四元式par按反序出现(与实现参数的顺序相反)。此时,在翻译过程调用语句时,是否需要语义变量(队列)queue? 4.6 设某语言的while语句的语法形式为 S→ while E do S(1) 其语义解释如图4–18所示。 (1) 写出适合语法制导翻译的产生式; (2) 写出每个产生式对应的语义动作。 图4–18 习题4.6的语句结构图 4.7 改写4.4.2节中布尔表达式的语义子程序,使得i(1)rop i(2)不按通常方式翻译为下面的相继两个四元式: (jrop, i(1), i(2), 0) (j , _ , _ , 0 ) 而是翻译成如下的一个四元式: (jnrop, i(1), i(2), 0) 使得当i(1)rop i(2)为假时发生转移,而为真时并不发生转移(即顺序执行下一个四元式),从而产生效率较高的四元式代码。 4.8 按照4.5.3节的三种基本控制结构的文法将下面的语句翻译成四元式序列: while (AC∧BD) { if (A≥1) C=C+1; else while (A≤D) A=A+2; } 4.9 按照4.5.3节的三种基本控制结构的文法将下面的语句翻译成四元式序列: while (a∨b) if(xy) while(c∧d) k=k+1; else if(mn∧kq) m=k; else while(m≠k) m=m+1; 4.10 已知源程序如下: prod=0; i=1; while (i≤20) { prod=prod+a[i]*b[i]; i=i+1; } 试按语法制导翻译法将上述源程序翻译成四元式序列(设A是数组a的起始地址,B是数组b的起始地址;机器按字节编址,每个数组元素占四个字节)。 4.11 给出文法G[S]: S→SaA∣A ? A→AbB∣B ? B→cSd∣e (1) 请证实AacAbcBaAdbed是文法G[S]的一个句型; (2) 请写出该句型的所有短语、素短语以及句柄; (3) 为文法G[S]的每个产生式写出相应的翻译子程序,使句型AacAbcBaAdbed经该翻译方案后,输出为131042521430。 注意:由(7)计算出的是数组元素A[I,J]的地址,即为I×列数长度(即d2=20)+J,而此处数组A的行、列下界值为1,即实际上多计算了一行一列,故应减去,则实际A[I,J]对应的地址是: A+(20?1)*I+J?1=A+20I+J?21 最后得到的赋值句X=A[I,J]的四元
您可能关注的文档
- 绩效管理模式11.27.ppt
- 绪论、第二章一节.ppt
- 绪论与第一章半导体器件的基本方程.ppt
- 维修电工填空(书).doc
- 绘本 森林.ppt
- 继续教育《特殊教育导论》(远程教育)答案,仅供参考.doc
- 维系良好的特许关系.ppt
- 绵阳东辰国际学校八年级上数学期末复习纲要.doc
- 绪论2014.2.24.ppt
- 维多利亚花园塔吊安装方案.doc
- 2024年湖南省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年江西省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年安徽省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年福建省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年广东省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年河北省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年河南省高考英语试卷(含答案解析)+听力音频.docx
- 2024年湖北省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年湖南省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年江苏省高考英语试卷(含答案解析)+听力音频+听力原文.docx
文档评论(0)