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
 |