作用
- 用来存放有关符号的属性信息,用于静态语义检查和产生中间代码
- 语义检查:是否先声明后使用,或是否重复声明
- 类型检查
- 作用域管理
- 目标代码生成节点,是对付符号进行地址分配的依据
属性
- 符号名
- 类别
- 类型
- 作用域
- 其他
- 内情向量、结构成员信息、函数形参
操作
- 创建符号表:编译开始或进入新的作用域
- 插入表项:遇到新的标识符声明
- 查询表项:引用标识符
- 修改表项:获得新的语义信息
- 删除表项:不再需要一个标识符
- 删除符号表:退出一个作用域
作用域与可见性
- 所有作用域共用一个全局符号表
- 每个作用域有自己独立的符号表
可见性规则
- 在程序中任何一点,只有在该点的开作用域中声明的变量是可见的
- 如果一个变量在多个开作用域中被声明,则最近的一个声明作为引用的解释
- 当前声明的变量处于当前的作用域