📜  用于符号表的DS

📅  最后修改于: 2020-12-06 07:35:50             🧑  作者: Mango

符号表的数据结构

  • 编译器包含两种类型的符号表:全局符号表和作用域符号表。
  • 全局符号表可以由所有过程和作用域符号表访问。

名称和符号表的范围按层次结构排列,如下所示:

int value=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及其子表。

  • 首先,在当前符号表中搜索符号。
  • 如果找到名称,则搜索完成,否则将在父代的符号表中搜索名称,直到,
  • 找到名称或搜索全局符号。