⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yaccer.y

📁 uClinux下用的数据库
💻 Y
📖 第 1 页 / 共 2 页
字号:
				memFreeToken($1);				memFreeToken($3);				parseCleanQuery(curQuery);				return(-1);			}			memFreeToken($1);			memFreeToken($3);		}	| table_list ',' ident		{			if (parseAddTable($3, NULL,curQuery) < 0)			{				memFreeToken($3);				parseCleanQuery(curQuery);				return(-1);			}			memFreeToken($3);		}	| table_list ',' ident table_alias ident		{			if (parseAddTable($3, $5, curQuery) < 0)			{				memFreeToken($3);				memFreeToken($5);				parseCleanQuery(curQuery);				return(-1);			}			memFreeToken($3);			memFreeToken($5);		}	;table_alias	: /* NULL */	| AS	| EQ	;where_clause	: /* NULL */	| WHERE cond_list	;cond_list	: cond_list cond_cont cond_field cond_op cond_literal		{ 			if ( parseAddCondition((mIdent_t *)$3,(long)$4,				(mVal_t *)$5, (long)$2, curQuery) < 0)			{				parseCleanQuery(curQuery);				return(-1);			}		} 	| cond_list cond_cont cond_field BETWEEN literal AND literal		{			parseAddBetween((mIdent_t *)$3, (mVal_t *)$5,				(mVal_t *)$7, (long)$2,curQuery);		}	| cond_list cond_cont sub_cond		{ 			parseAddSubCond((long)$2, curQuery); 		}	| cond_field cond_op cond_literal		{ 			if ( parseAddCondition((mIdent_t *)$1,(long)$2,				(mVal_t *)$3, NO_BOOL, curQuery) < 0)			{				parseCleanQuery(curQuery);				return(-1);			}		}	| cond_field BETWEEN literal AND literal		{			parseAddBetween((mIdent_t *)$1, (mVal_t*)$3,				(mVal_t *)$5, NO_BOOL,curQuery);		}	| sub_cond		{ 				parseAddSubCond(NO_BOOL, curQuery); 		}	;sub_cond	: '(' 	  	{			parsePushCondition(curQuery);		}	   cond_list ')'	;cond_field	: qual_ident		{ $$ = $1; }	| qual_sysvar		{ $$ = $1; }	;cond_cont	: AND		{ $$ = (char *)AND_BOOL; }	| OR		{ $$ = (char *)OR_BOOL; }	;cond_op	: EQ		{ $$ = (char *)EQ_OP; }	| NE		{ $$ = (char *)NE_OP; }	| LT		{ $$ = (char *)LT_OP; }	| LE		{ $$ = (char *)LE_OP; }	| GT		{ $$ = (char *)GT_OP; }	| GE		{ $$ = (char *)GE_OP; }	| LIKE		{ $$ = (char *)LIKE_OP; }	| RLIKE		{ $$ = (char *)RLIKE_OP; }	| CLIKE		{ $$ = (char *)CLIKE_OP; }	| SLIKE		{ $$ = (char *)SLIKE_OP; }	| NOT LIKE		{ $$ = (char *)NOT_LIKE_OP; }	| NOT RLIKE		{ $$ = (char *)NOT_RLIKE_OP; }	| NOT CLIKE		{ $$ = (char *)NOT_CLIKE_OP; }	| NOT SLIKE		{ $$ = (char *)NOT_SLIKE_OP; }	;order_clause	: 	| ORDER BY order_list	;order_list	: order_list ',' order_ident order_dir		{ 			parseAddOrder((mIdent_t *)$3,(long) $4, curQuery); 		}	| order_ident order_dir		{ 			parseAddOrder((mIdent_t *)$1,(long) $2, curQuery); 		}	;order_dir	: ASC		{ $$ = (char *) ASC; }	| DESC		{ $$ = (char *) DESC; }	| /* NULL */		{ $$ = (char *) ASC; }	;limit_clause	:		{ 			curQuery->rowLimit = 0; 		}	| LIMIT literal		{ 				parseSetRowLimit((mVal_t *)$2, curQuery); 		}	;offset_clause	:		{ 			curQuery->rowOffset = 0; 		}	| OFFSET literal		{ 				parseSetRowOffset((mVal_t *)$2, curQuery); 		}	;into_clause	: 		{			parseSetTargetTable(NULL,curQuery);}	| INTO ident		{ 			parseSetTargetTable($2, curQuery); 			/* memFreeToken($2); */		}	;/*** Drop : delete entire table*/drop	: MSQL_DROP drop_types	;drop_types	: TABLE ident		{			curQuery->command = DROP_TABLE;			if (parseAddTable($2,NULL,curQuery) < 0)			{				memFreeToken($2);				parseCleanQuery(curQuery);				return(-1);			}			memFreeToken($2);		}	| INDEX ident FROM ident		{			curQuery->command = DROP_INDEX;			if (parseAddIndex($2, $4, 0, 0, curQuery) < 0)			{				memFreeToken($2);				memFreeToken($4);				parseCleanQuery(curQuery);				return(-1);			}			memFreeToken($2);			memFreeToken($4);		}	| SEQUENCE FROM ident		{			curQuery->command = DROP_SEQUENCE;			parseAddSequence($3,0,0, curQuery);			memFreeToken($3);		}	;/*** Insert : add new data to table*/insert	: MSQL_INSERT INTO ident opt_field_spec 		{			curQuery->command = MSQL_INSERT;			if (parseAddTable($3,NULL,curQuery) < 0)			{				memFreeToken($3);				parseCleanQuery(curQuery);				return(-1);			}			if ($4)				utilExpandTableFields(globalServer,$3,curQuery);			memFreeToken($3);			parseSetInsertOffset(0);		}	  VALUES '(' values ')' opt_bulk_insert	;opt_field_spec	: /* NULL */		{			mIdent_t	*tmp;			tmp = parseCreateIdent(NULL,"*", curQuery);			parseAddField((mIdent_t *)tmp,0,0,0,0,curQuery);			$$ = (char *) 1;		}	| '(' fields ')'		{			$$ = (char *) 0;		}	;fields	: fields ',' qual_ident		{ 			parseAddField((mIdent_t *)$3,0,0,0,0,curQuery);		}	| qual_ident		{ 			parseAddField((mIdent_t *)$1,0,0,0,0,curQuery); 		}	;values	: values ',' literal		{ 			parseAddInsertValue((mVal_t *)$3,curQuery);		 }	|  literal		{ 			parseAddInsertValue((mVal_t *)$1, curQuery); 		}	;opt_bulk_insert	: /* NULL */	| ',' '(' 		{			parseSetInsertOffset(0);		}	  values ')'		{		}	  opt_bulk_insert	;/*** Update : replace a table entry*/update	: MSQL_UPDATE ident SET update_list where_clause		{			curQuery->command = MSQL_UPDATE;			if (parseAddTable((char *)$2,NULL,curQuery) < 0)			{				memFreeToken($2);				parseCleanQuery(curQuery);				return(-1);			}			memFreeToken($2);		}	;update_list	: update_list ',' qual_ident EQ literal		{ 				parseAddField((mIdent_t *)$3,0,0,0,0,curQuery);		  	parseAddFieldValue((mVal_t *)$5,curQuery); 		}	| qual_ident EQ update_value		{ 				parseAddField((mIdent_t *)$1,0,0,0,0,curQuery);		  	parseAddFieldValue((mVal_t *) $3, curQuery); 		}	;update_value	: literal		{ $$ = $1; }	| qual_sysvar		{ $$ = $1; }	;/*** Delete : conditionally delete table entries (or all entries)*/delete	: MSQL_DELETE  FROM ident where_clause 		{			curQuery->command = MSQL_DELETE;			if (parseAddTable($3,NULL,curQuery) < 0)			{				memFreeToken($3);				parseCleanQuery(curQuery);				return(-1);			}			memFreeToken($3);		}	;/*** Common definitions*/literal	: MSQL_TEXT		{			$$ = (char *)parseCreateValue((u_char*)$1,CHAR_TYPE,				yytoklen);			if (yytoklen < NAME_LEN)				memFreeToken($1);			else				free($1);                        if ($$ == NULL)                        {                                parseCleanQuery(curQuery);                                return(-1);                        }		}	| NUM		{			$$ = (char *)parseCreateValue((u_char*)$1,INT_TYPE,0);			memFreeToken($1);                        if ($$ == NULL)                        {                                parseCleanQuery(curQuery);                                return(-1);                        }		}	| REAL_NUM		{			$$ = (char *)parseCreateValue((u_char*)$1,REAL_TYPE,0);			memFreeToken($1);                        if ($$ == NULL)                        {                                parseCleanQuery(curQuery);                                return(-1);                        }		}	| NULLSYM		{			$$ = (char *)parseCreateValue((u_char*)"null",				NULL_TYPE,0);		}	;cond_literal	: literal		{			$$ = $1;		}	| qual_ident		{			$$ = (char *)parseCreateValue((u_char *)$1,				IDENT_TYPE,0);		}	| qual_sysvar		{			$$ = (char *)parseCreateValue((u_char *)$1,				SYSVAR_TYPE,0);		}	;order_ident	: qual_ident		{ $$ = $1; }	| qual_sysvar		{ $$ = $1; }	;qual_ident	: ident		{ 			$$ = (char *)parseCreateIdent(NULL,$1,curQuery); 			memFreeToken($1);			if ($$ == NULL)			{				parseCleanQuery(curQuery);				return(-1);			}		}	| ident '.' ident		{ 			$$ = (char *)parseCreateIdent($1,$3,curQuery); 			memFreeToken($1);			memFreeToken($3);			if ($$ == NULL)			{				parseCleanQuery(curQuery);				return(-1);			}		}	;qual_sysvar	: SYS_VAR		{ 			$$ = (char *)parseCreateIdent(NULL,$1,curQuery); 			memFreeToken($1);			if ($$ == NULL)			{				parseCleanQuery(curQuery);				return(-1);			}		}	| ident '.' SYS_VAR		{ 			$$ = (char *)parseCreateIdent($1,$3, curQuery); 			memFreeToken($1);			memFreeToken($3);			if ($$ == NULL)			{				parseCleanQuery(curQuery);				return(-1);			}		}	;ident	: IDENT 			{ 			$$ = $1; 		}	| keyword		{			$$ = memMallocToken($1, strlen($1));		}	;keyword	: MSQL_CREATE	{ $$ = yytext; }	| MSQL_DROP	{ $$ = yytext; }	| MSQL_INSERT	{ $$ = yytext; }	| MSQL_DELETE	{ $$ = yytext; }	| MSQL_SELECT	{ $$ = yytext; }	| MSQL_UPDATE	{ $$ = yytext; }	| ALL		{ $$ = yytext; }	| DISTINCT	{ $$ = yytext; }	| AS		{ $$ = yytext; }	| WHERE		{ $$ = yytext; }	| ORDER		{ $$ = yytext; }	| FROM		{ $$ = yytext; }	| INTO		{ $$ = yytext; }	| TABLE		{ $$ = yytext; }	| BY		{ $$ = yytext; }	| ASC		{ $$ = yytext; }	| DESC		{ $$ = yytext; }	| LIKE		{ $$ = yytext; }	| RLIKE		{ $$ = yytext; }	| CLIKE		{ $$ = yytext; }	| SLIKE		{ $$ = yytext; }	| AND		{ $$ = yytext; }	| OR		{ $$ = yytext; }	| VALUES	{ $$ = yytext; }	| SET		{ $$ = yytext; }	| NOT		{ $$ = yytext; }	| PRIMARY	{ $$ = yytext; }	| KEY		{ $$ = yytext; }	| INDEX		{ $$ = yytext; }	| UNIQUE	{ $$ = yytext; }	| ON		{ $$ = yytext; }	| MSQL_INT	{ $$ = yytext; }	| MSQL_INT8	{ $$ = yytext; }	| MSQL_INT16	{ $$ = yytext; }	| MSQL_INT32	{ $$ = yytext; }	| MSQL_INT64	{ $$ = yytext; }	| MSQL_UINT	{ $$ = yytext; }	| MSQL_UINT8	{ $$ = yytext; }	| MSQL_UINT16	{ $$ = yytext; }	| MSQL_UINT32	{ $$ = yytext; }	| MSQL_UINT64	{ $$ = yytext; }	| MSQL_BOOL	{ $$ = yytext; }	| MSQL_CHAR	{ $$ = yytext; }	| MSQL_REAL	{ $$ = yytext; }	| MSQL_DATE	{ $$ = yytext; }	| MSQL_MONEY	{ $$ = yytext; }	| MSQL_TIME	{ $$ = yytext; }	| MSQL_IPV4	{ $$ = yytext; }	| MSQL_CIDR4	{ $$ = yytext; }	| MSQL_CIDR6	{ $$ = yytext; }	| LIMIT		{ $$ = yytext; }	| OFFSET	{ $$ = yytext; }	| SEQUENCE	{ $$ = yytext; }	| VALUE		{ $$ = yytext; }	| STEP		{ $$ = yytext; }	;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -