- 1、本文档共104页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二维数组A 每维的下界:low1、low2、...、lowk 每维的长度:n1、n2、...、nk 存储方式:按行存放 数组元素A[i1,i2,...,ik]的位置: ( (…( (i1?n2+i2)?n3+i3 )…)?nk+ik )?w + base - ( (…( (low1?n2+low2)?n3+low3 )…)?nk+lowk )?w S属性定义 S?L:=E E?E1+E2 E?(E1) E?L L?id | id [ Elist ] Elist?Elist1 , E | E 属性及函数设计 L 综合属性L.place和L.offset 简单变量: L.offset=null L.place=符号表入口指针 数组元素(下标变量): L.offset=计算公式第一项,指存放VARPART (可变项)的临时变量的整数码 L.place=计算公式第二项,指存放CONSPART(不变项)的 临时变量的整数码 E 综合属性E.place,保存E值的变量在符号表中的位置 Elist 综合属性Elist.array,ndim,place Elist.array:数组名在符号表中的位置 Elist.ndim:目前已经识别出的下标表达式的个数 Elist.place:保存递推公式中em值的临时变量在符号表中的位置 函数 limit(array, j):返回array指向的数组第j维的长度 invariant(array):返回array指向的数组的地址计算公式中的不变项 S属性定义翻译方案 S?L:=E L?id 举例 已知: 设A为一个10?20的数组,即 n1=10,n2=20; 并设域宽 w=4; 数组的第一个元素为A[1,1], 则有 low1=1,low2=1 所以: (low1?n2+low2)?w = (1?20+1)?4 = 84 问题: 将赋值语句 x:=A[y,z] 翻译为三地址代码。 赋值语句 x:=A[y,z]的分析树 利用翻译方案翻译布尔表达式 ab or cd and ef 例: if ab or cd and ef then A1 else A2; while ab do A3 产生式S?→goto L的语义动作: { 查找符号表; IF L在符号表中且定义否栏为已 THEN GEN(J,-,-,P) ELSE IF L不在符号表中 THEN BEGIN 把L填入表中; 置定义否为未,地址栏为NXQ; GEN(J,-,-,0) END ELSE BEGIN Q:=L的地址栏中的编号; 置地址栏编号为NXQ; GEN(J,-,-,Q) END } 带标号语句的产生式: S→label S label → i: label → i: 对应的语义动作: 1. 若i所指的标识符(假定为L)不在符号表中,则把它填入,置类型为标号,定义否为已,地址为nextquad ; 2. 若L已在符号表中但类型不为标号或定义否为已,则报告出错; 3. 若L已在符号表中,则把标号未改为已,然后,把地址栏中的链头(记为q)取出,同时把nextquad填在其中,最后,执行BACKPATCH(q,nextquad )。 7.5.3 CASE语句的翻译 语句结构 case E of C1: S1; C2: S2; … Cn-1: Sn-1; otherwise: Sn end 翻译法(一): T:=E L1: if T?C1 goto L2 S1的代码 goto next L2: if T?C2 goto L3 S2的代码 goto next L3: … Ln-1: if T?Cn-1 goto Ln Sn-1的代码 goto next Ln: Sn的代码 next: 改进: 翻译法(二): 计算E并放入T中 goto test L1: 关于S1的中间码 goto next … Ln-1: 关于Sn-1的中间码 goto next Ln: 关于Sn的中间码 goto next test: if T=C1 goto L1 if T=C2 goto L2 … if T=Cn-1 goto Ln-1 goto
您可能关注的文档
- 综合运用多种题型.ppt
- 综合语与分析语——吴莉莉.ppt
- 综合问题解决模式——DOE实验设计整合实战应用.ppt
- 综述论文的撰写方法与技巧.ppt
- 综合部年中会汇报材料.ppt
- 综述辉煌的历史征程.ppt
- 绿地四部房地产品鉴会策划方案.ppt
- 绿地普陀项目策划方案.ppt
- 绿城房地产集团有限公司-产品说明会物业服务设想(36页).ppt
- 绿城百合天地杭州招商策划方案.ppt
- 2024-2025学年贵州省遵义市求是高级中学高三下学期第二次模拟考试(语文试题文)试题含解析.doc
- 2024-2025学年广东省潮州市重点中学高三第二学期3月高考诊断性测试语文试题含解析.doc
- 2024-2025学年甘肃省陇东中学高三下学期适应性考试语文试题含解析.doc
- 2024-2025学年广东省“十二校”高三下学期期中考试(语文试题理)试题含解析.doc
- 2024-2025学年甘肃省武夷市民勤县第一中学高三下学期期末模拟卷(一)语文试题含解析.doc
- 2024-2025学年广东省深圳市龙文教育高三5月月考(语文试题理)试题含解析.doc
- 2024-2025学年贵州省铜仁一中高三第二学期期末考试语文试题试卷含解析.doc
- 2024-2025学年广州顺德区高三第一次诊断性考试语文试题试卷含解析.doc
- 2024-2025学年贵阳市高考二轮语文试题原创押题密卷(一)含解析.doc
- 2024-2025学年河北省保定市曲阳县一中高三教学质量检测试题(一模)语文试题试卷含解析.doc
文档评论(0)