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
							 |