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

📄 parse.h

📁 一个c语言的编译器的源代码
💻 H
字号:

#ifndef PARSE_H_
#define PARSE_H_

#define MAXCHILDREN 5   // Max children of a treenode

// Node kind
typedef enum {
	DECLAR,OP,RELOP,CSTMT,STMT,REFER,CALL,PARAM,EXP,NUM
} Kind;

// Declaration kind
typedef enum {
	VAR_DECLAR_LIST,VAR_DECLAR,FUNC_DECLAR,FUNC_DEFINE,ARRAY_DECLAR
} DeclarKind;

// Statement kind
typedef enum {
	IF_STMT,WHILE_STMT,RETURN_STMT
} StmtKind;

// Expression kind
typedef enum {
	ASSIGN_EXP,SIMPLE_EXP
} ExpKind;

// Child kind
typedef union {
	DeclarKind declarK; // main kind == declaration
    StmtKind stmtK;     // main kind == statement
    ExpKind expK;       // main kind == expression
} ChildKind;

// Data type
typedef enum {
	BOOLEAN_TYPE,INTEGER_TYPE,VOID_TYPE,ERROR_TYPE
} Type;

// Symbol type
typedef enum {
	VAR_SYMBOL,FUNC_DECLAR_SYMBOL,FUNC_DEFINE_SYMBOL,ARRAY_SYMBOL,
	ARRAYADDR_SYMBOL,ERROR_SYMBOL
} SymbolType;

// Syntax tree's node
struct bucketlist;
typedef struct treenode{
	Kind kind;
	ChildKind childkind;
	TokenType tokenT;

	//attribute
	string name;
	Type type;
	int arraynum;

	//used only in compound statement and function definition
	bucketlist * pBucketList;

	treenode *pChild[5];
	treenode *pNext;
	treenode *pPrev; //used only when in argument-list
	int lineno;
} TreeNode;

TreeNode *parse();

#endif

⌨️ 快捷键说明

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