Advertisement

关于编译器设计中的符号表与中间代码生成的研究

阅读量:

编译器设计-符号表-中间代码生成

Compiler Design - Symbol Table

Compiler - Intermediate Code Generation

一.Compiler Design - Symbol Table

符号表是编译器为了记录变量名、函数名、对象、类、接口等各类实体的出现信息而建立和维护的关键数据结构。该结构不仅在编译器的分析阶段发挥作用,同时也适用于综合阶段。
根据所采用的编程语言不同,符号表可实现以下功能:

将所有实体名称以结构化的方式统一存储于一个位置。

验证变量是否已经被声明。

进行类型检查时,确认源代码中的赋值与表达式在语义层面是否合理。

识别名称的作用域(即作用域解析)。

符号表本质上可以表现为线性表或哈希表的形式。对于每个名称,它会维护如下格式的信息条目:

<symbol name, type, attribute>

例如,若需要存储如下变量声明的信息:

static int interest;

则应记录如下的条目:

<interest, int, static>

attribute字段包含与该名称相关的附加信息。

实施Implementation

当编译器处理的数据量较小时,可以将符号表设计为无序列表,这种实现方式较为简单且易于编码,但仅适用于规模较小的情况。符号表的实现方式包括以下几种:

全部评论 (0)

还没有任何评论哟~