//****************************************************************** // // AUTHOR : ZhaoTiger // // FUNCTION : 通用SQL解析器头文件,定义所有常量 // // TIME : 2003.10.08 // // HISTORY : 从胡泊的公式解析器改造而来 // Datetime Action Author Reason // ----------------------------------------------------------------- // 2003.10.08 Creation ZhaoTiger // //****************************************************************** #ifndef __SQL_INTREPRETER_DEFINE_H__ #define __SQL_INTREPRETER_DEFINE_H__ //#ifdef _SUN #if defined(_SUN) || defined(_LINUX) #define FALSE 0 #define TRUE 1 #endif #ifdef _WINDOWS32 #define FALSE 0 #define TRUE 1 #endif namespace SQL_ANALYSER { #define KEYWORD_NUM 21 //关键字个数 #define MAX_CONSTANT_STRING_LEN 1024 //本解释器能处理的代码中字符串的最大长度 #define MAX_CONSTANT_BINARY_LEN 2048 //本解释器能处理的代码中二进制的最大长度 #define MAX_IDEN_NUM 1024 //域名序列的最大个数 #define MAX_IDEN_VALUE_NUM 1024 //域值序列的最大个数 #define MAX_ORDERBY_NUM 10 //ORDER BY子句后域名序列的最大个数 #define MAX_SYMBOL_LEN 64 //本解释器能处理的代码中标识符的最大长度 #define MAX_WHERE_CODE_LEN 10000 //WHERE子句逆波兰结构最大长度 #define MAX_ERRMSG_LEN 200 //最大的出错信息长度 // 定义SQL类型 #define SQL_TYPE_DELETE 0 #define SQL_TYPE_INSERT 1 #define SQL_TYPE_UPDATE 2 #define SQL_TYPE_SELECT 3 /*运算符和特殊符号*/ #define NOT_SYMBOL 100 // ! 不用 #define ADD_SYMBOL 101 // + #define SUB_SYMBOL 102 // - #define MUL_SYMBOL 103 // * #define DIV_SYMBOL 104 // / #define MOD_SYMBOL 105 // % #define XOR_SYMBOL 106 // ^ #define ANB_SYMBOL 107 // & #define ORB_SYMBOL 108 // | #define GRT_SYMBOL 111 // > #define GEQ_SYMBOL 112 // >= #define LSS_SYMBOL 113 // < #define LEQ_SYMBOL 114 // <= #define EQU_SYMBOL 115 // = #define NEQ_SYMBOL 116 // != #define LEFT_LARGE_BRACKET 121 // { 不用 #define RIGHT_LARGE_BRACKET 122 // } 不用 #define LEFT_MID_BRACKET 123 // [ 不用 #define RIGHT_MID_BRACKET 124 // ] 不用 #define LEFT_LITTLE_BRACKET 125 // ( #define RIGHT_LITTLE_BRACKET 126 // ) #define SEMICOLON 129 // ; 不用 #define COMMA 130 // , #define POINT 131 // . #define NOB_SYMBOL 132 // ~ 不用 #define COLON 133 // : #define DATABASE_MASK 141 // @ 不用 #define END_OF_PROGRAM 151 // 字符串结束标志,表示代码结束 #define UNRECOGNIZED_TOKEN 152 // 不认识的字符 /*保留字*/ #define KEY_DELETE 0 // DELETE #define KEY_INSERT 1 // INSERT #define KEY_UPDATE 2 // UPDATE #define KEY_SELECT 3 // SELECT #define KEY_FROM 4 // FROM #define KEY_WHERE 5 // WHERE #define KEY_SET 6 // SET #define KEY_ORDER 7 // ORDER #define KEY_BY 8 // BY #define KEY_VALUES 9 // VALUES #define KEY_AND 10 // AND #define KEY_NOT 11 // NOT #define KEY_OR 12 // OR #define KEY_LIKE 13 // LIKE #define KEY_IN 14 // IN #define KEY_TIMESTR 15 // TIMESTR #define KEY_TIMEINT 16 // TIMEINT #define KEY_NULL 20 // NULL #define KEY_RTDBKEY 21 // RTDBKEY #define KEY_MEASRTDBKEY 22 // MEASRTDBKEY #define KEY_APPRTDBKEY 23 // APPRTDBKEY /*词法分析程序返回的单词的种类*/ #define IDENTIFIER 1000 //标识符 #define INTEGER_VALUE 1001 //整型数 包括长整型 #define REAL_VALUE 1002 //实型数 #define STRING_VALUE 1003 //字符串 #define BINARY_VALUE 1004 //二进制数 // 定义WHERE子句逆波兰结构内容的标识code_type #define CODE_TYPE_IDENTIFIER 0 // 标识符,等同于域名称 #define CODE_TYPE_OPERATOR 1 // 运算符 #define CODE_TYPE_CONSTANT 2 // 常量值 // 定义语法分析阶段所有的数据类型,包括常量以及处理表达式时需要用到的数据类型 #define INTPRE_DATATYPE_INT 0 //包括长整型 #define INTPRE_DATATYPE_REAL 1 #define INTPRE_DATATYPE_STRING 2 // #define INTPRE_DATATYPE_BINARY 3 // #define INTPRE_DATATYPE_KEYID 4 #define INTPRE_DATATYPE_DATETIME 7 #define INTPRE_DATATYPE_BOOL 10 #define INTPRE_DATATYPE_NULL 11 #define INTPRE_DATATYPE_RTDBKEY 16 #define INTPRE_DATATYPE_MEASRTDBKEY 17 #define INTPRE_DATATYPE_APPRTDBKEY 18 #define INTPRE_DATATYPE_UNKNOWN 100 // 定义语法分析输出的所有操作符类型,也就是在逆波兰序列中的操作项 #define OPERATOR_CODE_ADD 0 // + 加 #define OPERATOR_CODE_SUB 1 // - 减 #define OPERATOR_CODE_MUL 2 // * 乘 #define OPERATOR_CODE_DIV 3 // / 浮点除 #define OPERATOR_CODE_IDV 4 // / 整除取商 #define OPERATOR_CODE_MOD 5 // % 整除取余 #define OPERATOR_CODE_ANB 6 // & 按位与 #define OPERATOR_CODE_ORB 7 // | 按位或 #define OPERATOR_CODE_XOR 8 // ^ 按位异或 #define OPERATOR_CODE_EQU 9 // = 等于 #define OPERATOR_CODE_NEQ 10 // != 不等于 #define OPERATOR_CODE_GRT 11 // > 大于 #define OPERATOR_CODE_GEQ 12 // >= 大于等于 #define OPERATOR_CODE_LSS 13 // < 小于 #define OPERATOR_CODE_LEQ 14 // <= 小于等于 #define OPERATOR_CODE_LKE 15 // LIKE 字符串匹配 #define OPERATOR_CODE_POS 16 // + 单目运算符正号 #define OPERATOR_CODE_NEG 17 // - 单目运算符负号 #define OPERATOR_CODE_AND 18 // AND 与 #define OPERATOR_CODE_ORR 19 // OR 或 #define OPERATOR_CODE_NOT 20 // NOT 非 } #endif