- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1 1 图9.26表示编译程序扫描进入第2层分程序后单表结构的符 号表情况: 图9.27表示编译程序扫描进入第3层分程序后单表结构的符 号表情况: 图9.28表示编译程序扫描进入第4层分程序后单表结构的符 号表情况: 符号表在编译全过程的地位和重要作用 登录源程序中定义的标识符的所有属性。 对源程序中标识符的定义和引用,进行上下文合法性检查。 作为语义处理及代码生成的依据。 符号的作用域关系到标识符的生存期,符号的可视性关系 到标识的可引用性。两者密切相关,但又不完全相同。 标识符的数据类型通过类型声明来定义(默认除外)。而 标识符的存储类别不但取决于存储类别声明,而且还取决 于该标识符声明在程序构造中的位置。 【本章小结】 符号表总体组织的选择应考虑语言文本的复杂性(包括词法 结构、语法结构的复杂性),还应考虑到对于编译系统在 时间效率和空间效率方面的要求。 符号表中属性域的构造原则上是定长的。对于复杂属性可采 用索引扩展方式构造。 采用复合属性域组织,提高了符号表的空间效率,但增加了 表处理的复杂度。 采用单表结构时,下推链域的构造用来处理解决分程序构造 中同名标识符声明的可视性规则,采用分表结构不存在下 推问题。分表结构很适合基于对象的语言的编译系统。 第9章 作业题 P229: 2. 3. Subscrip1并不关系到数组的内情向量,而仅关系到该数组分配存储时的空间尺寸。在C语言中可以定义如下一个数组: type array[ ][subscrip2]…[subscripn] 例如,int abc[3][4][2]的排列和各种指针所指向的位置,如图9.14所示: 对于C语言中一个一般形式定义的数组: type array[s1][s2]…[sn] array 指针值addr 目标长l1 array[0] 指针值addr 目标长l2 array[0][0] 指针值addr 目标长l3 … … … array[0][0]…[0] 指针值addr 目标长ln 其中:addr是数组分配的地址,则有 lk=sk*sk+1*…sn*sizeof(type) k=1,2,…,n 而array[0][0]…[0]是该数组的第1个元素 有关指针值的计算是: array[i1]=array[0]+i1 array[i1][i2]=array[0][0]+(i1*s2+i2) array[i1][i2][i3]=array[0][0][0]+((i1*s2+i2)*s3+i3) … array[i1][i2]…[ik]=array[0]…[0]+(…(i1*s2+i2)*s3…+ik) (k=1,2,…,n-1) 数组元素的地址计算: array[i1][i2]…[in]= array[0]…[0]+(…(i1*s2+i2)*s3…+in)*sizof(type) 在等长属性值域的组织中,讨论了用成员链来组织C语言的结构量符号。也可以用成员的索引结构来构造结构量。 用成员的索引结构来构造结构量,这时结构标志符号在符 号表项中设一个指向成员索引区的指针,索引区包含两 种属性信息:该结构的空间尺寸、成员索引信息 上述结构例子struct tag1的不等长索引结构可用图9.15所 示的组织 在一个符号表中若有若干个用位信息表示的属性时,可把 他们组织到一起,甚至可用一个整型数来表达这样的几 个位信息属性。这种组织与上述合并不同的是各属性有 各自的表项中的位置 例如,有下列的一些符号属性: ①该变量符号是否已初始化 ②该符号是否是结构成员 ③该符号是否是标号 ④该符号是否是保留字 这些属性都可用1个信息位表示,在符号表中可以把它们 组织在一个整型字段中作为一个属性域,而其中相应的 信息位置表示上述相应的属性,我们称这种域为复合属 性域,如图9.16所示: 在程序语言的结构中,分程序的分层结构允许同名标识符具有的生存期发生重叠。 为实现这种同名标识符的语义功能,符号表中需要设立下 推链域的组织 下推链域的组织要求在进入一个内层结构并发生重名标识 符定义时,需把当前符号表中外层的该符号表项下推到 下推链中而在符号表被下推的表项处建立内层的同名识 符的表项 例如,设有一个程序(C语言程序)如图9.17所示: 五.下推链域的组织 当逐个退出分程序时,下推链被逐次回推
您可能关注的文档
最近下载
- 资料员工作内容.docx VIP
- P气瓶充装证考试题库及答案.doc VIP
- 上海市杨浦区2023-2024学年七年级下学期期中英语试卷 .docx VIP
- 2025年高考真题解析课件:2025年全国新高考二卷英语读后续写(课件).pptx VIP
- 贵阳市中心城区控制性详细规划(总则)——乌当组团.pdf VIP
- 图书出版合同(合同范本)7篇.docx VIP
- (正式版)D-L∕T 1770-2017 抽水蓄能电站输水系统充排水技术规程.docx VIP
- 《结构全寿命维护》课程教学大纲(本科).docx VIP
- SI、PI协同的EMI分析—打印版.pdf
- Unit2 Travelling Around Discovering Useful Structures 课件-2024-2025学年高中英语人教版(2019)必修第一册.pptx VIP
原创力文档


文档评论(0)