#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
