- 编译器包含两种类型的符号表:全局符号表和作用域符号表。
- 全局符号表可以由所有过程和作用域符号表访问。
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及其子表。
符号表的数据结构层次结构存储在语义分析器中。如果要在符号表中搜索名称, 则可以使用以下算法进行搜索:
- 首先, 在当前符号表中搜索符号。
- 如果找到该名称, 则搜索完成, 否则将在父代的符号表中搜索该名称, 直到,
- 找到名称或搜索全局符号。