编译原理——符号表
符号表的组织与查找
间接的方式存储是名字中存储的是指针
为了合理的使用空间,大部分情况是用的分成M个子表的方式
符号表的整理和查找
符号表的内容
tx 指向符号表下一个插入的位置
name 名字标识符 (是主栏目,查找的时候都是根据名字来索引)
kind 名字种类,可以是常量,变量,类型过程
lev 名字所在程序体的静态层次,规定主程序的层次为1,主程序中定义层次为2,以此类推
typ 名字类型,整形,字符型,布尔型,数组,对于没有类型的名字填入notype
normal 是布尔量,表示变量是否为变量形参名,当名字是变量形参填入false其他情况填入true或者不填(因为变量形参需要传地址,所以用这个栏目进行标记)
ref 当名字为数组变量或者数组变量名时,ref指向该数组在数组信息表中的位置
当名字为过程名时,ref指向该过程在程序体表中的位置;
其他情况ref为0
adr/val/size: 这三个使用同一个存储空间,不同名字选用不同参数
link:
bx指向他下一个空闲的位置
lastpar:
是个指针
last:
psize:
vsize:
ax指向表格下一个填入位置
多维数组的存储是把他看做是一维数组,每一维度用一行进行存储
符号表的使用
版权声明:本文为weixin_44972129原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。