类型检查与激活记录全解析
1. 类型检查环境
在类型检查中,环境起着关键作用。环境分为类型环境和值环境。以下是相关的结构体定义:
typedef struct E_enventry_ *E_enventry;
struct E_enventry_ {
enum {E_varEntry, E_funEntry} kind;
union {
struct {Ty_ty ty;} var;
struct {Ty_tyList formals; Ty_ty result;} fun;
} u;
};
E_enventry E_VarEntry(Ty_ty ty);
E_enventry E_FunEntry(Ty_tyList formals, Ty_ty result);
S_table E_base_tenv(void); /* Ty_ ty environment */
S_table E_base_venv(void); /* E_ enventry environment */
变量会映射到一个 VarEntry
来表明其类型,而函数则会映射到一个 FunEntry
,其中包含形式参数的类型和函数返回的结果类型。
环境类型 | 描述 |
---|---|
类型环境 | 从符号到类型的映射 |