⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 list.h

📁 该程序是一个MiniPascal语言的编译器
💻 H
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -