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
 |