符号表的数据结构

  • 编译器包含两种类型的符号表:全局符号表和作用域符号表。
  • 全局符号表可以由所有过程和作用域符号表访问。
名称和符号表的范围按层次结构排列, 如下所示:
int value=http://www.srcmini.com/10; void sum_num(){int num_1; int num_2; {int num_3; int num_4; }int num_5; {int_num 6; int_num 7; }}Void sum_id{int id_1; int id_2; {int id_3; int id_4; }int num_5; }

【符号表的数据结构】上面的语法可以用符号表的分层数据结构表示:
符号表的数据结构

文章图片
全局符号表包含一个全局变量和两个过程名称。 sum_num表中提到的名称不适用于sum_id及其子表。
符号表的数据结构层次结构存储在语义分析器中。如果要在符号表中搜索名称, 则可以使用以下算法进行搜索:
  • 首先, 在当前符号表中搜索符号。
  • 如果找到该名称, 则搜索完成, 否则将在父代的符号表中搜索该名称, 直到,
  • 找到名称或搜索全局符号。

    推荐阅读