编译原理——符号表

符号表的组织与查找

编译原理——符号表_第1张图片
编译原理——符号表_第2张图片
编译原理——符号表_第3张图片
编译原理——符号表_第4张图片
编译原理——符号表_第5张图片
间接的方式存储是名字中存储的是指针
编译原理——符号表_第6张图片
编译原理——符号表_第7张图片
为了合理的使用空间,大部分情况是用的分成M个子表的方式

符号表的整理和查找

编译原理——符号表_第8张图片
编译原理——符号表_第9张图片
编译原理——符号表_第10张图片
编译原理——符号表_第11张图片

符号表的内容

编译原理——符号表_第12张图片
编译原理——符号表_第13张图片
编译原理——符号表_第14张图片
编译原理——符号表_第15张图片
tx 指向符号表下一个插入的位置
name 名字标识符 (是主栏目,查找的时候都是根据名字来索引)
kind 名字种类,可以是常量,变量,类型过程
lev 名字所在程序体的静态层次,规定主程序的层次为1,主程序中定义层次为2,以此类推
typ 名字类型,整形,字符型,布尔型,数组,对于没有类型的名字填入notype
normal 是布尔量,表示变量是否为变量形参名,当名字是变量形参填入false其他情况填入true或者不填(因为变量形参需要传地址,所以用这个栏目进行标记)
ref 当名字为数组变量或者数组变量名时,ref指向该数组在数组信息表中的位置
当名字为过程名时,ref指向该过程在程序体表中的位置;
其他情况ref为0

adr/val/size: 这三个使用同一个存储空间,不同名字选用不同参数在这里插入图片描述

link:
在这里插入图片描述

编译原理——符号表_第16张图片
bx指向他下一个空闲的位置

lastpar:
是个指针
在这里插入图片描述
last:
在这里插入图片描述
psize:
在这里插入图片描述
vsize:
在这里插入图片描述
编译原理——符号表_第17张图片
编译原理——符号表_第18张图片
ax指向表格下一个填入位置
多维数组的存储是把他看做是一维数组,每一维度用一行进行存储
编译原理——符号表_第19张图片
编译原理——符号表_第20张图片

符号表的使用

编译原理——符号表_第21张图片
编译原理——符号表_第22张图片
编译原理——符号表_第23张图片
编译原理——符号表_第24张图片
编译原理——符号表_第25张图片
编译原理——符号表_第26张图片
编译原理——符号表_第27张图片
编译原理——符号表_第28张图片
编译原理——符号表_第29张图片
编译原理——符号表_第30张图片
编译原理——符号表_第31张图片

你可能感兴趣的:(编译原理)