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

📄 commstruct.h

📁 这是用VC6.0开发的集词法分析、语法分析、语义分析为一体的一个程序
💻 H
字号:
#ifndef __CommStruct_HeaderFile_hth_
#define __CommStruct_HeaderFile_hth_

//token串结点结构定义
typedef struct __tokenode
{
	unsigned char keycode;			//种别码
	unsigned int strId;				//自身值:符号表的入口地址
	__tokenode *next;				//
}*PTokenNode,TokenNode;

//符号表中类型枚举定义
typedef enum __symbol_type
{
	Identifier,						//标识符
	Char,							//字符常数
	Real,							//数字常数-实型
	Integer,						//数字常数-整型
	Bool							//Bool型
}SType;

//符号表中种类枚举定义
typedef enum __symbol_kind
{
	Simple,							//简单变量
	Array,							//数组
	Const,							//常量
}SKind;

//符号子表结构定义
typedef struct __symbol_subtable
{
	struct __name
	{
		unsigned int headp;			//字符串表中首地址
		unsigned char length;		//在字符串中的长度
	}name;							//
	SType type;						//标识符或常数类型
	SKind kind;						//标识符或常数种类
	double val;						//数字常数值
	BYTE *addr;						//标识符入口地址
}SSubTable,*PSSubTable;

//符号表结构定义
typedef struct __symbol_table
{
	PSSubTable sSubTable;			//符号子表
	unsigned int intSubTableSize;	//符号子表长度
	unsigned int intSubTableLen;	//符号子表已用空间
	char *stringTable;				//字符串表
	unsigned int intTableSize;		//字符串表长度
	unsigned int intTableLen;		//字符串表已用空间
}STable,*PSTable;

//错误结构定义
typedef struct __error_
{
	unsigned int intRows;
	unsigned int intCols;
	char *description;
	__error_ *next;
}ErrorNode,*PErrorNode;

//文法符号类型枚举
typedef enum grammar_type_
{
	Terminal,						//终结符
	Nonterminal,					//非终结符
	Other							//结束占位符:可用于表示表达式结束
}GType;

//文法符号结构定义
typedef struct grammar_symbol_
{
	GType sType;					//符号类型
	union __grammar_symbol_value_	//符号自身值
	{
		double dValue;				//非终结符,运算结果
		PTokenNode pToken;			//终结符,须token字
	}value;							//符号自身值
	char word;						//产生式中的符号表示
	grammar_symbol_ *next;		//链表指针

}*PGSymbol,GSymbol;

//四元式操作符类型枚举
typedef enum __op_enum_
{
	OPJump=0,							//无条件跳转
	OPJumpLarger=1,						//大于时跳转
	OPJumpLE=2,							//大于等于时跳转
	OPJumpNZero=3,						//不等于零时跳转
	OPJumpEqual=17,						//等于时跳转
	OPJumpUEqual=18,					//不等于时跳转
	OPJumpSmaller=4,					//小于时跳转
	OPjumpSE=5,							//小于等于时跳转
	OPLarger=6,							//大于
	OPSmaller=7,						//小于
	OPEqual=8,							//等于
	OPEvaluate=9,						//赋值
	OPUnequal=10,						//不等于
	OPPlus=11,							//加
	OPMinus=12,							//减
	OPMultiply=13,						//乘
	OPDivide=14,						//除
	OPProgram=15,						//程序开始标识
	OPSys=16							//程序结束标识
}EOP;

//四元式结构预定义
typedef struct four_symbol_ *PFSymbol,FSymbol;

typedef enum __ag_enum_
{
	ST=0,							//临时变量
	PT=1,							//token字
	PF=2							//下一个四元式入口
}EAGType;

//四元式操作符和运算结果数据类型定义
typedef struct ag_struct_
{
	char *des;							//用于打印四元式的描述
	EAGType type;						//四元式操作符入口类型
	union __ag_union_
	{
		double value;					//临时变量
		PTokenNode token;				//token字
		PFSymbol fSymbol;				//下一个四元式入口
	}value;								//四元式操作符入口
}*PFSAG,FSAG;

//四元式结构定义
struct four_symbol_
{
	unsigned long no;				//编号
	EOP op;							//操作符
	PFSAG ag1;						//运算对象一
	PFSAG ag2;						//运算对象二
	PFSAG result;					//运算结果
	four_symbol_ *next;			//链表节点指针
};

//文法产生式结构定义
typedef struct grammar_production_symbol_
{
	GType sType;					//符号类型
	char word;						//符号表示
}*PGProduction,GProduction;

//标识符最大长度为10
#define MAXIDLEN 10					

//定义NULL
#define NULL 0

//定义每行最大字符数
#define MAXLINE 250

//定义关键字的个数
#define KEYWORDCOUNT 60

#endif

⌨️ 快捷键说明

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