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
 | 
