recuranalyser.h

来自「1.1 引言 1.1.1 设计目的 本次课程设计是在完成一个学期的编译原理」· C头文件 代码 · 共 71 行

H
71
字号
/******************************************************************************
*所属模块名:递归下降分析器
*
*功能:定义本模块所需数据类型和全局变量
*       
*开始时间: 2004.10.29      
*
*修改时间:
*     
*完成时间: 2004.10.29
*
*      
*      
*       

*******************************************************************************/


typedef struct variable_item{
	char* vname;		//变量名首址(动态分配内存)
	int plevel;			//变量所在过程的层次
	int relposition;	//变量在其过程中的相对位置(即第几个变量)
}vitem;


typedef struct variable_table{
	vitem table[50];	//变量表
	int first;			//正确填入的标记指针
	int last;			//未说明的变量"倒填"时的标记指针
}vtable;

typedef struct procedure_item{
	char* pname;		//过程名首址(动态分配内存)
	int paranum;		//参数个数
	int variablenum;	//变量个数(包括参数)
	int firstinvtable;	//第一个变量在变量表中的位置(下标)
	int plevel;			//过程嵌套深度
	int outposition;	//直接外过程在过程表中的位置(下标)
	int quaterposition;	//本过程第一条四元式地址
}pitem;

typedef struct procedure_table{
	pitem table[20];	//过程名表项数组
	int pointer;		//指针
}ptable;

typedef struct stack_item{
	int index;			//过程所在过程名表的表项
	struct stack_item* next;
}stack_item;

typedef struct stack{	//过程栈
	stack_item* base;
	stack_item* top;
}stack;

typedef struct Operand		//结构体:操作数
{
	char *name;				//单词符号名首址(动态分配内存)
	int type;				//变量:0;常数:1;临时变量:2。
	int offset;				//变量:该过程第几个变量;常数:常数值;临时变量:第几个临时变量。
	int rlevel;				//相对层差=使用变量的过程层数-定义变量的过程层数。
}Operand;

typedef struct Quatype		//结构体:四元式
{
	int strOperator;		//操作码(编码代替)
	Operand opr1;			//第一操作数
	Operand opr2;			//第二操作数
	Operand opr3;			//第三操作数
}Quatype;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?