符号表

2 篇文章 0 订阅
1 篇文章 0 订阅

符号表的组织

1、符号表的形式
符号表的每一项包含两栏:名字栏和信息栏

名字(NAME)信息(INFORMATION)

名字栏:主栏,关键字栏目;
信息栏:记录不同属性,分为若干子栏目。
由于不同名字的种属不同,不同种属的信息不同,因此可根据名字的种属建立多张符号表。如变量表,常量表等。
2、符号表的操作
主要有5类一般操作,对不同的符号表可能还会有具体操作
(1)填入名字 (2)查找名字
(3)访问信息(4)填写修改信息
(5)删除
操作的时机:定义或使用变量时。
3、符号表的组织方式
根据栏目的长度:
安排为固定长度:需满足栏目可能的最大长度,造成资源浪费;
间接方式:符号表中只存入指针,符号表中本应填入的信息存入一片可长可短的单元中,利用指针访问它,会造成效率下降。

4、符号表的存放:
(1)每一项置于一片固定长度的连续存储单元中
(2)划分为若干字表。(只划分栏目)

符号表的整理和查找

1、线性查找(自适应线性表)
2、二分查找(二叉树):利用名字大小排序。
3、Hash:名字到项目编号的映射。

利用符号表分析名字的作用范围

FORTRAN语言作用域分析
程序结构:并行结构,模块结构,各个模块独立,不允许嵌套递归。
各个模块是独立的,因此各变量作用域就是其所处的程序段。
符号表的组织:
一遍扫描:局部变量名登记在一端*(可以重用)*,全局变量名在另一端。每次扫描结束一个程序段,将局部变量删除,在其位置上建立新的局部变量。表满时将局部变量区清零。
多遍扫描:将局部变量表保存在外部,供后续遍使用。用一数组记录各局部区开始的位置。

Pascal语言作用域分析:
程序结构:嵌套结构,过程结构,允许嵌套,递归定义。
作用域遵循最近作用域原则:一个名字的作用域是包含名字的说明的最小过程;
内层过程可以引用外层过程说明过的名字。
符号表的组织:
栈符号表:name,information,previous(同一过程域中前一个名字的下标,最后一个为0)
display栈: level(指向正在处理的最内层过程起始位置),每一过程起始地址。

符号表的内容

信息栏的内容:类型,种属,大小(存储单元长度),相对数(地址)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值