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

📄 types.h

📁 简单C编译器生成的目标代码是8086的汇编代码(16位)
💻 H
字号:
/* 一些数据结构的定义 */
#ifndef _TYPES_H
#define _TYPES_H

/* 一个语法树结点最多的子结点个数 */
#define MAXCHILDREN 2

/* Token类型 */
typedef int TokenType;	
/* AddrK只用来生成汇编代码时使用,是一个计算过的结点,
结点attr.value保存的是临时变量的偏移 */
typedef enum {StmtK, ExpK, AddrK} NodeKind;
typedef enum {AssignK, InputK, OutputK, ReturnK} StmtKind;
typedef enum {OpK, ConstK, IdK} ExpKind;

/* 数据类型 */
typedef enum {VoidT, IntT} ExpType;

/* 符号表中的结点 */
typedef struct node
{
	char name[255];/*MAXTOKENLEN];*/
	ExpType eType;
	struct node* next;
} TableNode;

/* 语法数中的结点 */
typedef struct treeNode
{ 
	struct treeNode* child[MAXCHILDREN];	/* 子结点 */
	struct treeNode* sibling;	/* 兄弟结点 */
	int lineno;	/* C语句中的行号,用来输出出错信息 */
	NodeKind nodekind;	/* 结点类型 */
	union 
	{ 
		StmtKind stmt; 
		ExpKind exp; 
	} kind;	/* 标志是语句还是表达式 */
	union
	{ 
		TokenType op;
		int val;
		char* name;
	} attr;	/* 属性值 */
	ExpType type; /* 数据类型 */
} TreeNode;

#endif	// _TYPES_H

⌨️ 快捷键说明

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