编译器笔记44-运行存储分配-符号表
2020-03-10 本文已影响0人
衣忌破
符号表
符号表的组织:为每个作用域(程序块)建立一个独立的符号表
例.png根据符号表进行数据访问
根据符号表进行数据访问.png 根据符号表进行数据访问.png标识符的基本处理方法
当在某一层的声明语句中识别出一个标识符(id的定义性出现) 时,以此标识符查相应于本层的符号表
- 如果查到,则报错并发出诊断信息“id重复声明”
- 否则,在符号表中加入新登记项,将标识符及有关信息填入
当在可执行语句部分扫视到标识符时 (id的应用性出现)
- 首先在该层符号表中查找该id,如果找不到,则到直接外层符号表中去查,如此等等,一旦找到,则在表中取出有关信息并作相应处理。
- 如果查遍所有外层符号表均未找到该id,则报错并发出诊断信息"id" 未声明
符号表的建立
- 嵌套过程声明语句的文法
- 在允许嵌套过程声明的语言中,局部于每个过程的名字可以使用第6章介绍的方法分配相对地址;当看到嵌套的过程p时,应暂时挂起对外围过程q声明语句的处理
嵌套过程声明语句的SDT
嵌套过程声明语句的SDT.png 例1.png 例2.png 例3.png 例4.png 例5.png 例6.png问:为什么符号表中过程(sort readarray exchang...)指针不占空间?
答:过程指针不进offset栈,在“方法区”。