56 lines
1.1 KiB
C
56 lines
1.1 KiB
C
#ifndef parser_h__
|
|
#define parser_h__
|
|
|
|
|
|
// c语言语义分析
|
|
|
|
// 变量类型
|
|
typedef enum {
|
|
VTYPE_VOID = 0 ,
|
|
VTYPE_CHAR = 1 ,
|
|
VTYPE_SHORT = 2 ,
|
|
VTYPE_INT = 3 ,
|
|
VTYPE_PTR = 4 ,
|
|
VTYPE_FUNC = 5 ,
|
|
}variable_type_def;
|
|
|
|
// 语句类型
|
|
typedef enum {
|
|
STYPE_NONE = 0,// 代码文件
|
|
STYPE_TYPEDEF = 1 ,// 类型定义 typedef
|
|
STYPE_VDECLARE = 2 ,// 变量声明
|
|
STYPE_FDECLARE = 3 ,// 函数声明
|
|
STYPE_STRUCT = 4 ,// 结构体语句
|
|
STYPE_ENUM = 5 ,// 枚举语句
|
|
STYPE_UNION = 6 ,// 联合体语句
|
|
STYPE_FDEF = 7 ,// 函数定义
|
|
STYPE_PARLIST = 8 ,// 参数列表
|
|
STYPE_BLOCK = 9,// 代码块
|
|
}sentence_type_def;
|
|
|
|
// 属性类型 可以组合
|
|
typedef enum {
|
|
ATYPE_VOID = 0 ,// 无属性
|
|
ATYPE_STATIC = 1 ,// 静态
|
|
ATYPE_CONST = 2 ,//只读
|
|
ATYPE_EXTERN = 4 ,// 外部
|
|
ATYPE_UNSIGNED = 8,// 无符号
|
|
}attr_def;
|
|
|
|
|
|
struct token_def;
|
|
|
|
typedef struct _par_node {
|
|
int sentence_type;
|
|
int attr_type;
|
|
token_def* token_list;
|
|
int token_len;
|
|
struct _par_node* next;
|
|
struct _par_node* chid;
|
|
char name[1024];
|
|
}par_node_def;
|
|
|
|
|
|
|
|
#endif
|