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

📄 complier.h

📁 1.1 引言 1.1.1 设计目的 本次课程设计是在完成一个学期的编译原理课程之后
💻 H
字号:
/******************************************************************************
*所属模块名:递归下降分析器
*
*功能:定义本模块所需数据类型和全局变量
*       
*开始时间: 2004.10.29      
*
*修改时间:
*     
*完成时间: 2004.12.1
*
*作者: 邸晓峰,胡彬,宋如强      
*      
*       

*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include <stack>
#include <queue>
#include <ctype.h>
using namespace std;

#define true	1
#define false	0

typedef struct Duatype{
	char* value;			//单词符号名首址(动态分配内存)
	int index;				//相应编号
	struct Duatype* next;	//指向下一项的指针
}Duatype;

typedef struct DuaDualist{
	Duatype* head;
	Duatype* tail;
}DuaDualist;

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 my_stack{	//过程栈
	stack_item* base;
	stack_item* top;
}my_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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -