- 1、本文档共58页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
访问链 引入访问链的目的:访问非局部数据 如果过程p在声明时嵌套在过程q的声明中,那么p的活动记录中的访问链指向最上层(必威体育精装版)的q的活动记录。 从栈顶活动记录开始,访问链形成了一个链路,嵌套深度逐一递减。 设深度为np的过程p访问变量x,而变量x在深度为nq的过程中声明,那么 从当前活动记录出发,沿访问链前进np-nq次找到活动记录(其中的x就是要找的变量位置) x相对于该活动记录的偏移量在编译时刻已知 np和-nq在编译时刻已知; Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 访问链的例子P270 图7-11 用来查找非局部数据的访问链 sort活动记录 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 访问链的处理(明确调用过程与声明嵌套深度的关系) 当过程q调用过程p时,P访问链如何设置?把p的声明嵌套深度np与nq的关系分为大于,等于,小于三种情况考虑 p的声明嵌套深度大于q,p必然在q中直接定义,否则不满足作用域规则,那么p的访问链指向当前活动记录(即父亲直接调用孩子) 递归调用:p=q 。p的活动记录的访问链等于q当前记录的访问链(即自身等于自身) p的声明嵌套深度小于q的深度:此时必然有过程r,p直接在r中定义,而q嵌套在r中。此时应让p的访问链指向r的活动记录。(即q是p的侄子系的,r是p的父亲) r p q ... Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 7.3.6 过程型参数的访问链 有些语言允许过程作为参数,如:c语言 例:tiny编译器中语义分析程序analyze.c的transverse函数声明如下: static void traverse( TreeNode * t, void (* preProc) (TreeNode *), void (* postProc) (TreeNode *) ) 构建符号表前序遍历语法树traverse(syntaxTree,insertNode,nullProc); 类型检查时后序遍历语法树traverse(syntaxTree,nullProc,checkNode); Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 7.3.6 过程型参数的访问链 当一个过程p作为参数传递给另一个过程q,并且q随后调用了这个参数,有可能q并不知道p在程序中出现的上下文 后果:不知道如何设置p的访问链 解决办法: 在传递过程指针参数时,过程型参数中不仅包含过程的代码指针(IP),还包括正确的访问链(AL)。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 7.3.6 过程型参数的访问链 图7-12 使用函数参数的ML程序的概要 f是一个函数参数 对f的引用 d被用作函数参数 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 7.3.6 过程型参数的访问链 因为d在c中定义 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 7.3.8 显示表(display) 用访问链访问数据时,如果嵌套深度大,则访问的效率差。 显示表:使用数组d为每个嵌套深度保留一个指针 指针d[i]指向栈中最高的对应于嵌套深度为i的的活动记录。 如果程序p中访问嵌套深度为i的过程q中变量x,那么d[i]直接指向相应的q活动记录; 显示表的维护 调用过程p时,
您可能关注的文档
- 《58同城渠道黄页事业部产品介绍.ppt
- 《5S+PROJECT英文PPT+43页.ppt
- 《5任务五建立MDI窗体完善系统界面.ppt
- 《5光的衍射作业.ppt
- 《5.外存储设备.ppt
- 《5关系数据库管理系统的组成及其标准语言.ppt
- 《5分振幅干涉等倾ok.ppt
- 《5天津理工大学安全管理之企业安全管理制度.ppt
- 《5教学设计531评估.ppt
- 《5控制职能.ppt
- 吉安县公开招聘专职文明实践员笔试备考试题及答案解析.docx
- 2025重庆枫叶国际学校招聘教师笔试备考试题及答案解析.docx
- 游机队电玩自制联网教程-tplink.pdf
- 2025重庆新华出版集团招聘1人笔试模拟试题及答案解析.docx
- 2025宜宾高新丽雅城市产业发展有限公司公开招聘笔试模拟试题及答案解析.docx
- 2025云南保山市龙陵县勐糯镇人民政府招聘合同制专职消防员1人笔试模拟试题及答案解析.docx
- 11.1生活中常见的盐 九年级化学人教版下册.pptx
- 6.1法律保护下的婚姻 高二政治《法律与生活》课件(统编版选择性必修2)(新版).pptx
- 文昌市中小学教师校园招聘29人笔试模拟试题及答案解析.docx
- 10.1.5 常见的酸和碱(第5课时)课件-九年级化学人教版下册.pptx
文档评论(0)