SlideShare a Scribd company logo
1 of 20
第9章

符号表


      1
§ 9.1   符号表的作用
§ 9.2   符号的主要属性
§ 9.3   符号表的组织
§ 9.4   分程序结构符号表的管理



                      2
§ 9.1

符号表的
 作用

        3
1. 收集符号属性
     在编译程序中符号表用来存放
语言程序中出现的有关标识符的属性信
息,符号表中所登记的信息在编译的不
同阶段都要用到。




                     4
2. 上下文语义的合法性检查的依据
     在语义分析中,符号表所登记
的内容将用于语义检查(如检查一个
名字的使用和原先的说明是否一致)
和产生中间代码。




                     5
3. 作为目标代码生成阶段地址分配的依
据
     在目标代码生成阶段,当对符
号名进行地址分配时,符号表是地址
分配的依据。




                      6
§ 9.2

 符号的
主要属性

        7
1.   符号名;
2.   符号的类型;
3.   符号的存储类别;
4.   符号的作用域及可视性;
5.   符号变量的存储分配信息;
6.   符号的其它属性 :数组内情向量
                 记录结构型
     的成员信息
                 函数及过程 8
     的形参
§ 9.3

符号表
的组织

        9
符号表的一般组织形式

      名字    信息
表项
1
表项
2
      ……    ……

……
表项
n
                  10
符号表的总体组织

第一种:把属性种类完全相同的那
些符号组织在一起,构造出表项是
分别为等长的多个符号表。




                  11
第二种 : 把所有语言中的符号都组
织在一张符号表中。组成一张包括
了所有属性的庞大的符号表。




                    12
第三种:折衷方式是根据符号属性
相似程度分类组织成若干张表,每
张表中记录的符号都有比较多的相
同属性。




                  13
符号表项的排列

    符号表作为一个多元组,表中
元组的排列组织是构造符号表的重要成
分。在编译程序的整个工作过程中,符
号表被频繁地用来建立表项,找查表项
,填充和引用表项的属性。因此表项的
排列组织对该系统运行的效率起着十分
重要的作用。
    在编译程序中,符号表项的组
织传统上采用三种构造方法。即线性法   14

,二分法及散列法。
1. 线性组织:符号表中的表项按它的
  符号被扫描到的先后顺序建立。
2. 排序组织及二分法:符号表中的表
  项按其符号的字符代码串的值的大小
  从大到小 ( 或从小到大 ) 排列的。关
  于排序表的表项建立及查找,通常采
  用 “ 二分法 ” 。
3. 散列组织:散列表中的表项位置是
  由对表项的符号值进行某种函数操作
  ( 杂凑 ) 所得到的函数值来确定的。    15
三种方法的比较
   线性法
    简单直观,易于实现
    低效,平均查找次数: E=n/2
    适合于表项不多的表
   二分法
    高效,平均查找次数上界: E<=log2n+1
    插入时需要保持表项的有序性
    适合于比较固定的表
   杂凑法
    平均查找次数与表的填满程度密切相关
    要求有足够长的定长存储空间
                               16
    特别适合大容量的表
§ 9.4
分程序结构
 符号表
 的管理

         17
符号表中分程序结构层次的管理

      对于具有分程序型结构的语言
程序,不同层次分程序中定义的标识符
号具有不同的作用域和不同的可视性规
则。
      通常对于具有分程序结构的语
言可用两种方式组织它们的符号表:
 1. 对每个分程序建立一个独立的分表
结 构的符号表;
 2. 把各分程序符号组织在一张单表结   18


构的符号表中 。
分表结构的组织管理

   其基本思想是,每当编译程序
扫描到一个分程序结构开始时,为该分
程序建立一张符号表,在该分程序中定
义的标识符,都被登录在该符号表中。
而当编译程序扫描到一个分程序的结束
时,编译程序释放为该分程序所建立的
符号表。这种符号表的分表结构与源程
序的分程序层次结构一一对应。
                    19
单表结构的组织管理

     其基本思想是,所有分程序中
定义的标识符都集中在单张符号表中。
为了实现分程序构造中标识符的作用域
和可视性规则的要求 , 在符号表中可设
立一个属性域用来登录符号所在分程序
的层次。
      进入分程序时,层次要增加
一层。在退出一个分程序时,层次降低
一层,且需要把符号表中,所有在退出
的分程序中登录的符号项清除。        20

More Related Content

Viewers also liked

Missing-Value Handling in Dynamic Model Estimation using IMPL
Missing-Value Handling in Dynamic Model Estimation using IMPL Missing-Value Handling in Dynamic Model Estimation using IMPL
Missing-Value Handling in Dynamic Model Estimation using IMPL
Alkis Vazacopoulos
 
คู่มือการเขียนแผนธุรกิจ2
คู่มือการเขียนแผนธุรกิจ2คู่มือการเขียนแผนธุรกิจ2
คู่มือการเขียนแผนธุรกิจ2
Mobile_Clinic
 
SFM Lesson 1
SFM Lesson 1SFM Lesson 1
SFM Lesson 1
TonyC445
 

Viewers also liked (13)

顔の印象を一気に変えるアイブロウ(眉毛)における4つのパターン 先生:宇城 ゆかり
顔の印象を一気に変えるアイブロウ(眉毛)における4つのパターン 先生:宇城 ゆかり顔の印象を一気に変えるアイブロウ(眉毛)における4つのパターン 先生:宇城 ゆかり
顔の印象を一気に変えるアイブロウ(眉毛)における4つのパターン 先生:宇城 ゆかり
 
【再放送】サービスのベストプラクティス【スタートアップ学部・基礎科目】
【再放送】サービスのベストプラクティス【スタートアップ学部・基礎科目】【再放送】サービスのベストプラクティス【スタートアップ学部・基礎科目】
【再放送】サービスのベストプラクティス【スタートアップ学部・基礎科目】
 
Missing-Value Handling in Dynamic Model Estimation using IMPL
Missing-Value Handling in Dynamic Model Estimation using IMPL Missing-Value Handling in Dynamic Model Estimation using IMPL
Missing-Value Handling in Dynamic Model Estimation using IMPL
 
Basisbedrijfsmodel Terreinbeheer
Basisbedrijfsmodel TerreinbeheerBasisbedrijfsmodel Terreinbeheer
Basisbedrijfsmodel Terreinbeheer
 
Victim's Rights
Victim's RightsVictim's Rights
Victim's Rights
 
คู่มือการเขียนแผนธุรกิจ2
คู่มือการเขียนแผนธุรกิจ2คู่มือการเขียนแผนธุรกิจ2
คู่มือการเขียนแผนธุรกิจ2
 
SFM Lesson 1
SFM Lesson 1SFM Lesson 1
SFM Lesson 1
 
Sales Pipeline...Evolve What and How You Sell
Sales Pipeline...Evolve What and How You SellSales Pipeline...Evolve What and How You Sell
Sales Pipeline...Evolve What and How You Sell
 
【再放送】新米リーダーに贈る!マネジメントの基礎知識
【再放送】新米リーダーに贈る!マネジメントの基礎知識【再放送】新米リーダーに贈る!マネジメントの基礎知識
【再放送】新米リーダーに贈る!マネジメントの基礎知識
 
Catalunya- Papers-139
Catalunya- Papers-139Catalunya- Papers-139
Catalunya- Papers-139
 
Fox 13 fieldexperience
Fox 13 fieldexperience Fox 13 fieldexperience
Fox 13 fieldexperience
 
Jan Newsletter
Jan NewsletterJan Newsletter
Jan Newsletter
 
Gestor de proyecto educativo tic editable
Gestor de proyecto educativo tic editableGestor de proyecto educativo tic editable
Gestor de proyecto educativo tic editable
 

More from tjpucompiler (11)

第6章 自底向上的lr分析法
第6章 自底向上的lr分析法第6章 自底向上的lr分析法
第6章 自底向上的lr分析法
 
第11章 目标代码生成
第11章 目标代码生成第11章 目标代码生成
第11章 目标代码生成
 
第10章 代码优化
第10章 代码优化第10章 代码优化
第10章 代码优化
 
第8章 运行时的存储管理
第8章 运行时的存储管理第8章 运行时的存储管理
第8章 运行时的存储管理
 
第7章 语法制导翻译和中间代码生成
第7章 语法制导翻译和中间代码生成第7章 语法制导翻译和中间代码生成
第7章 语法制导翻译和中间代码生成
 
第6章 自底向上的lr分析法
第6章 自底向上的lr分析法第6章 自底向上的lr分析法
第6章 自底向上的lr分析法
 
第5章 自底向上的语法分析
第5章 自底向上的语法分析第5章 自底向上的语法分析
第5章 自底向上的语法分析
 
第2章 文法和语言
第2章 文法和语言第2章 文法和语言
第2章 文法和语言
 
第3章 词法分析
第3章 词法分析第3章 词法分析
第3章 词法分析
 
第4章 自顶向下的语法分析
第4章 自顶向下的语法分析第4章 自顶向下的语法分析
第4章 自顶向下的语法分析
 
第1章 概论
第1章 概论第1章 概论
第1章 概论
 

第9章 符号表