📄 parse.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 + -