list.h
来自「该程序是一个MiniPascal语言的编译器」· C头文件 代码 · 共 53 行
H
53 行
#ifndef _LIST_H
#define _LIST_H
#define SIZE 256
//----------------------------------------------------------------------------------------------//
// 符号表声明头文件
//---------------------------------------------------------------------------------------------//
//变量表
struct var_list{
var_list* next;
int type; //integer:bool:const:new type
char name[SIZE];//
int offset; //相对于活动记录的存取连的偏移量(relative address,from 0)
int ConstVal; //必要吗?
int typeofconst; //仅仅标记const常量是1:int 0:bool
};
//过程表
struct proc_list{
proc_list* father;//父过程
proc_list* child[SIZE];//子过程
var_list* next;//过程中的变量表
char name[SIZE];
int offset; //相对于初始p的偏移,便于跳转或者procal,在目标代码文件中
int VarLength; //非形式参数的变量总长度,编译,在过程开始时的参数值ProcedureX(VarLength...)
int ParamLength;//参数总长度,过程结束时参数:EndProc(ParamLength)
int numofparam;//参数个数
int level; //过程的深度
int numofchild;//子过程的个数
int NewType[SIZE];//NewType[i]=newtype在typelist中的序号
int numofnewtype;
};
//域表,域中每一个元素为一个表项
struct field_table{
char name[SIZE];
int type;//元素的类型,在typelist中的序号
int offset;
field_table* next;
};
//类型表
struct type_list{
int type;//类型
char name[SIZE];
int upper;
int lower;
int bandwidth;
int typeofelement;
int bandwidthOfelement;
field_table* fieldlist;
};
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?