热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

访问链和符号表

在编程语言中分为支持嵌套过程(如Pascal)和不支持嵌套过程(如C)支持过程嵌套声明的语言:一个过程除了使

在编程语言中分为支持嵌套过程(如Pascal)和不支持嵌套过程(如C)

支持过程嵌套声明的语言:一个过程除了使用自身定义的局部数据和全局定义的数据以外,还可以使用外围过程中声明的对象
不支持嵌套声明的语言:过程中要么是使用局部数据,要么是使用全局数据

符号表特别是对于“使用外围过程中声明的对象”有很大的帮助的。

全局变量被分配在静态存储区,使用静态确定的地址可以访问他们
其他变量是局部变量,通过栈顶指针指针访问

静态作用域规则:只要过程a的声明嵌套在过程a的声明中,过程b就可以放额外你过程a中声明的对象
可以在相互嵌套的过程的活动记录间建立一种称为访问链指针,使其可访问(外层可直接访问内层,内层访问外层用访问链)

访问链一般在控制链上面

符号表
为每个作用域(程序块)建立一个独立的符号表,符号表与编译时是对应的,一个过程的非局部名字的信息可以通过扫描过程的符号表而得到(找非局部变量)

标识符。当在某一层的声明语句中识别出一个标识符(id的定义性出现)时,以此标识符相应于本层的符号表,如果查到,则报错“id重复”
当在执行语句的时候扫视到标识符,本层差不多就通过符号表去外层找


推荐阅读
author-avatar
dfdzgf_542
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有