mirror of
https://github.com/mdbtools/mdbtools.git
synced 2026-03-10 00:20:54 +08:00
sync up, see ChangeLog for details
This commit is contained in:
245
src/sql/lexer.c
245
src/sql/lexer.c
@@ -1,7 +1,7 @@
|
||||
/* A lexical scanner generated by flex */
|
||||
|
||||
/* Scanner skeleton version:
|
||||
* $Header: /Users/brian/cvs/mdbtools/mdbtools/src/sql/Attic/lexer.c,v 1.6 2003/01/20 16:04:31 brianb Exp $
|
||||
* $Header: /Users/brian/cvs/mdbtools/mdbtools/src/sql/Attic/lexer.c,v 1.7 2004/02/06 02:34:22 brianb Exp $
|
||||
*/
|
||||
|
||||
#define FLEX_SCANNER
|
||||
@@ -282,20 +282,20 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
|
||||
*yy_cp = '\0'; \
|
||||
yy_c_buf_p = yy_cp;
|
||||
|
||||
#define YY_NUM_RULES 24
|
||||
#define YY_END_OF_BUFFER 25
|
||||
static yyconst short int yy_accept[95] =
|
||||
#define YY_NUM_RULES 25
|
||||
#define YY_END_OF_BUFFER 26
|
||||
static yyconst short int yy_accept[97] =
|
||||
{ 0,
|
||||
21, 21, 25, 23, 17, 24, 23, 23, 22, 23,
|
||||
21, 23, 23, 19, 19, 19, 19, 19, 19, 19,
|
||||
19, 19, 19, 19, 23, 0, 0, 20, 0, 22,
|
||||
0, 22, 22, 21, 14, 15, 19, 19, 19, 19,
|
||||
19, 19, 19, 19, 19, 12, 19, 19, 5, 19,
|
||||
0, 18, 0, 21, 21, 11, 19, 19, 19, 19,
|
||||
19, 19, 13, 19, 19, 19, 19, 19, 19, 2,
|
||||
16, 6, 19, 19, 19, 19, 19, 19, 19, 9,
|
||||
7, 19, 19, 19, 1, 8, 3, 19, 19, 10,
|
||||
19, 19, 4, 0
|
||||
22, 22, 26, 24, 18, 25, 24, 24, 23, 24,
|
||||
22, 24, 24, 20, 20, 20, 20, 20, 20, 20,
|
||||
20, 20, 20, 20, 20, 24, 0, 0, 21, 0,
|
||||
23, 0, 23, 23, 22, 15, 16, 20, 20, 20,
|
||||
20, 20, 20, 20, 14, 20, 20, 12, 20, 20,
|
||||
5, 20, 0, 19, 0, 22, 22, 11, 20, 20,
|
||||
20, 20, 20, 20, 13, 20, 20, 20, 20, 20,
|
||||
20, 2, 17, 6, 20, 20, 20, 20, 20, 20,
|
||||
20, 9, 7, 20, 20, 20, 1, 8, 3, 20,
|
||||
20, 10, 20, 20, 4, 0
|
||||
|
||||
} ;
|
||||
|
||||
@@ -339,112 +339,116 @@ static yyconst int yy_meta[36] =
|
||||
8, 8, 8, 8, 1
|
||||
} ;
|
||||
|
||||
static yyconst short int yy_base[101] =
|
||||
static yyconst short int yy_base[103] =
|
||||
{ 0,
|
||||
0, 0, 158, 285, 285, 285, 0, 149, 29, 31,
|
||||
36, 132, 115, 41, 43, 45, 52, 51, 24, 39,
|
||||
53, 46, 62, 64, 81, 113, 90, 75, 86, 87,
|
||||
90, 95, 101, 0, 285, 285, 65, 0, 94, 91,
|
||||
85, 100, 103, 105, 102, 113, 115, 123, 118, 124,
|
||||
75, 285, 54, 53, 140, 126, 132, 135, 143, 138,
|
||||
144, 146, 149, 151, 156, 157, 159, 164, 166, 165,
|
||||
172, 173, 180, 179, 181, 188, 187, 189, 190, 195,
|
||||
196, 201, 207, 208, 210, 215, 217, 218, 220, 223,
|
||||
228, 225, 230, 285, 50, 258, 263, 267, 273, 276
|
||||
0, 0, 177, 289, 289, 289, 0, 156, 29, 31,
|
||||
36, 126, 111, 41, 43, 45, 52, 51, 39, 24,
|
||||
44, 58, 59, 69, 67, 75, 114, 92, 75, 88,
|
||||
83, 91, 96, 102, 0, 289, 289, 86, 0, 95,
|
||||
92, 97, 103, 106, 105, 112, 118, 120, 121, 129,
|
||||
128, 131, 73, 289, 55, 54, 122, 134, 136, 139,
|
||||
147, 142, 148, 150, 153, 155, 160, 161, 163, 168,
|
||||
170, 169, 176, 177, 184, 183, 185, 192, 191, 193,
|
||||
194, 199, 200, 205, 211, 212, 214, 219, 221, 222,
|
||||
224, 227, 232, 229, 234, 289, 50, 262, 267, 271,
|
||||
|
||||
277, 280
|
||||
} ;
|
||||
|
||||
static yyconst short int yy_def[101] =
|
||||
static yyconst short int yy_def[103] =
|
||||
{ 0,
|
||||
94, 1, 94, 94, 94, 94, 95, 96, 97, 97,
|
||||
97, 94, 94, 98, 98, 98, 98, 17, 17, 17,
|
||||
17, 17, 17, 17, 11, 99, 96, 96, 94, 11,
|
||||
11, 11, 11, 11, 94, 94, 17, 100, 17, 17,
|
||||
96, 1, 96, 96, 96, 96, 97, 98, 99, 99,
|
||||
99, 96, 96, 100, 100, 100, 100, 17, 17, 17,
|
||||
17, 17, 17, 17, 17, 11, 101, 98, 98, 96,
|
||||
11, 11, 11, 11, 11, 96, 96, 17, 102, 17,
|
||||
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
|
||||
99, 94, 94, 94, 11, 17, 17, 17, 17, 17,
|
||||
17, 17, 101, 96, 96, 96, 11, 17, 17, 17,
|
||||
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
|
||||
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
|
||||
17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
|
||||
17, 17, 17, 0, 94, 94, 94, 94, 94, 94
|
||||
17, 17, 17, 17, 17, 0, 96, 96, 96, 96,
|
||||
|
||||
96, 96
|
||||
} ;
|
||||
|
||||
static yyconst short int yy_nxt[321] =
|
||||
static yyconst short int yy_nxt[325] =
|
||||
{ 0,
|
||||
4, 5, 6, 5, 7, 8, 4, 4, 4, 9,
|
||||
10, 11, 12, 4, 13, 4, 14, 15, 16, 17,
|
||||
15, 18, 15, 15, 15, 15, 19, 15, 20, 21,
|
||||
15, 22, 23, 24, 25, 29, 29, 94, 94, 31,
|
||||
32, 94, 94, 94, 37, 33, 31, 34, 44, 32,
|
||||
30, 31, 30, 31, 30, 31, 38, 26, 38, 37,
|
||||
38, 30, 31, 37, 54, 54, 47, 38, 45, 39,
|
||||
37, 37, 41, 37, 40, 37, 42, 37, 48, 52,
|
||||
28, 43, 37, 46, 37, 37, 37, 50, 37, 37,
|
||||
30, 49, 30, 53, 53, 28, 30, 54, 30, 30,
|
||||
15, 18, 15, 15, 19, 15, 20, 15, 21, 22,
|
||||
15, 23, 24, 25, 26, 30, 30, 96, 96, 32,
|
||||
33, 96, 96, 96, 38, 34, 32, 35, 46, 33,
|
||||
31, 32, 31, 32, 31, 32, 39, 27, 39, 38,
|
||||
39, 31, 32, 38, 38, 56, 56, 39, 38, 40,
|
||||
45, 38, 42, 47, 41, 38, 43, 54, 38, 49,
|
||||
29, 44, 38, 38, 31, 50, 31, 38, 48, 38,
|
||||
52, 38, 31, 38, 31, 55, 55, 29, 51, 56,
|
||||
|
||||
94, 30, 53, 53, 30, 37, 55, 29, 29, 37,
|
||||
30, 37, 32, 56, 37, 37, 58, 52, 37, 57,
|
||||
37, 32, 37, 37, 37, 37, 37, 37, 36, 37,
|
||||
61, 59, 60, 37, 63, 37, 62, 37, 37, 37,
|
||||
65, 64, 37, 37, 66, 35, 37, 37, 37, 30,
|
||||
37, 55, 37, 68, 28, 37, 37, 94, 37, 37,
|
||||
67, 69, 37, 37, 71, 70, 37, 37, 37, 37,
|
||||
37, 73, 94, 37, 94, 37, 37, 37, 72, 76,
|
||||
37, 37, 74, 37, 37, 37, 37, 75, 37, 37,
|
||||
37, 94, 37, 37, 77, 78, 37, 37, 79, 80,
|
||||
31, 96, 31, 55, 55, 31, 38, 57, 30, 30,
|
||||
38, 31, 38, 33, 58, 38, 38, 38, 54, 38,
|
||||
59, 38, 33, 38, 37, 38, 38, 38, 60, 38,
|
||||
38, 31, 38, 57, 61, 62, 38, 63, 38, 36,
|
||||
38, 38, 38, 64, 38, 38, 67, 66, 38, 38,
|
||||
65, 68, 38, 38, 38, 38, 38, 70, 38, 38,
|
||||
38, 29, 38, 38, 69, 71, 38, 38, 73, 72,
|
||||
38, 38, 38, 38, 38, 75, 96, 38, 96, 38,
|
||||
38, 38, 74, 78, 38, 38, 76, 38, 38, 38,
|
||||
38, 77, 38, 38, 38, 96, 38, 38, 79, 80,
|
||||
|
||||
37, 81, 94, 37, 37, 37, 82, 37, 37, 37,
|
||||
37, 83, 37, 37, 37, 37, 37, 84, 94, 37,
|
||||
37, 37, 85, 94, 88, 37, 86, 37, 37, 94,
|
||||
37, 37, 37, 87, 37, 37, 89, 37, 90, 37,
|
||||
91, 37, 37, 37, 37, 37, 92, 37, 37, 37,
|
||||
37, 94, 37, 94, 37, 94, 94, 93, 27, 94,
|
||||
27, 27, 27, 27, 27, 27, 30, 30, 30, 94,
|
||||
30, 37, 37, 37, 37, 51, 94, 94, 51, 51,
|
||||
51, 38, 38, 38, 3, 94, 94, 94, 94, 94,
|
||||
94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
|
||||
38, 38, 81, 82, 38, 83, 96, 38, 38, 38,
|
||||
84, 38, 38, 38, 38, 85, 38, 38, 38, 38,
|
||||
38, 86, 96, 38, 38, 38, 87, 96, 90, 38,
|
||||
88, 38, 38, 96, 38, 38, 38, 89, 38, 38,
|
||||
91, 38, 92, 38, 93, 38, 38, 38, 38, 38,
|
||||
94, 38, 38, 38, 38, 96, 38, 96, 38, 96,
|
||||
96, 95, 28, 96, 28, 28, 28, 28, 28, 28,
|
||||
31, 31, 31, 96, 31, 38, 38, 38, 38, 53,
|
||||
96, 96, 53, 53, 53, 39, 39, 39, 3, 96,
|
||||
96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
|
||||
|
||||
94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
|
||||
94, 94, 94, 94, 94, 94, 94, 94, 94, 94
|
||||
96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
|
||||
96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
|
||||
96, 96, 96, 96
|
||||
} ;
|
||||
|
||||
static yyconst short int yy_chk[321] =
|
||||
static yyconst short int yy_chk[325] =
|
||||
{ 0,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 9, 9, 10, 10, 9,
|
||||
9, 10, 11, 11, 19, 11, 11, 11, 19, 9,
|
||||
14, 14, 15, 15, 16, 16, 14, 95, 15, 20,
|
||||
16, 17, 17, 20, 54, 53, 22, 17, 20, 14,
|
||||
22, 18, 17, 21, 16, 18, 17, 21, 23, 51,
|
||||
28, 18, 23, 21, 24, 37, 23, 24, 24, 37,
|
||||
25, 23, 25, 29, 29, 27, 30, 29, 30, 31,
|
||||
9, 10, 11, 11, 20, 11, 11, 11, 20, 9,
|
||||
14, 14, 15, 15, 16, 16, 14, 97, 15, 19,
|
||||
16, 17, 17, 19, 21, 56, 55, 17, 21, 14,
|
||||
19, 18, 17, 21, 16, 18, 17, 53, 22, 23,
|
||||
29, 18, 22, 23, 26, 24, 26, 25, 22, 24,
|
||||
25, 25, 31, 24, 31, 30, 30, 28, 24, 30,
|
||||
|
||||
31, 31, 32, 32, 32, 41, 32, 33, 33, 41,
|
||||
33, 40, 33, 39, 39, 40, 41, 26, 39, 40,
|
||||
42, 33, 45, 43, 42, 44, 45, 43, 13, 44,
|
||||
44, 42, 43, 46, 45, 47, 44, 46, 49, 47,
|
||||
48, 47, 49, 48, 50, 12, 56, 48, 50, 55,
|
||||
56, 55, 57, 58, 8, 58, 57, 3, 60, 58,
|
||||
57, 59, 60, 59, 61, 60, 62, 59, 61, 63,
|
||||
62, 64, 0, 63, 0, 64, 65, 66, 62, 67,
|
||||
65, 66, 65, 67, 68, 70, 69, 66, 68, 70,
|
||||
69, 0, 71, 72, 68, 69, 71, 72, 73, 74,
|
||||
32, 32, 32, 33, 33, 33, 38, 33, 34, 34,
|
||||
38, 34, 41, 34, 40, 40, 41, 42, 27, 40,
|
||||
41, 42, 34, 43, 13, 45, 44, 43, 42, 45,
|
||||
44, 57, 46, 57, 43, 44, 46, 46, 47, 12,
|
||||
48, 49, 47, 46, 48, 49, 50, 49, 51, 50,
|
||||
47, 52, 51, 50, 58, 52, 59, 60, 58, 60,
|
||||
59, 8, 62, 60, 59, 61, 62, 61, 63, 62,
|
||||
64, 61, 63, 65, 64, 66, 3, 65, 0, 66,
|
||||
67, 68, 64, 69, 67, 68, 67, 69, 70, 72,
|
||||
71, 68, 70, 72, 71, 0, 73, 74, 70, 71,
|
||||
|
||||
73, 75, 0, 74, 73, 75, 76, 77, 76, 78,
|
||||
79, 77, 76, 78, 79, 80, 81, 78, 0, 80,
|
||||
81, 82, 79, 0, 83, 82, 80, 83, 84, 0,
|
||||
85, 83, 84, 82, 85, 86, 84, 87, 88, 86,
|
||||
89, 87, 88, 90, 89, 92, 91, 90, 91, 92,
|
||||
93, 0, 91, 0, 93, 0, 0, 92, 96, 0,
|
||||
96, 96, 96, 96, 96, 96, 97, 97, 97, 0,
|
||||
97, 98, 98, 98, 98, 99, 0, 0, 99, 99,
|
||||
99, 100, 100, 100, 94, 94, 94, 94, 94, 94,
|
||||
94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
|
||||
73, 74, 75, 76, 75, 77, 0, 76, 75, 77,
|
||||
78, 79, 78, 80, 81, 79, 78, 80, 81, 82,
|
||||
83, 80, 0, 82, 83, 84, 81, 0, 85, 84,
|
||||
82, 85, 86, 0, 87, 85, 86, 84, 87, 88,
|
||||
86, 89, 90, 88, 91, 89, 90, 92, 91, 94,
|
||||
93, 92, 93, 94, 95, 0, 93, 0, 95, 0,
|
||||
0, 94, 98, 0, 98, 98, 98, 98, 98, 98,
|
||||
99, 99, 99, 0, 99, 100, 100, 100, 100, 101,
|
||||
0, 0, 101, 101, 101, 102, 102, 102, 96, 96,
|
||||
96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
|
||||
|
||||
94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
|
||||
94, 94, 94, 94, 94, 94, 94, 94, 94, 94
|
||||
96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
|
||||
96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
|
||||
96, 96, 96, 96
|
||||
} ;
|
||||
|
||||
static yy_state_type yy_last_accepting_state;
|
||||
@@ -483,7 +487,7 @@ char *yytext;
|
||||
#include "mdbsql.h"
|
||||
#include "parser.h"
|
||||
|
||||
#line 487 "lexer.c"
|
||||
#line 491 "lexer.c"
|
||||
|
||||
/* Macros after this point can all be overridden by user definitions in
|
||||
* section 1.
|
||||
@@ -636,7 +640,7 @@ YY_DECL
|
||||
|
||||
#line 26 "lexer.l"
|
||||
|
||||
#line 640 "lexer.c"
|
||||
#line 644 "lexer.c"
|
||||
|
||||
if ( yy_init )
|
||||
{
|
||||
@@ -687,13 +691,13 @@ yy_match:
|
||||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 95 )
|
||||
if ( yy_current_state >= 97 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
|
||||
++yy_cp;
|
||||
}
|
||||
while ( yy_base[yy_current_state] != 285 );
|
||||
while ( yy_base[yy_current_state] != 289 );
|
||||
|
||||
yy_find_action:
|
||||
yy_act = yy_accept[yy_current_state];
|
||||
@@ -787,65 +791,70 @@ YY_RULE_SETUP
|
||||
case 14:
|
||||
YY_RULE_SETUP
|
||||
#line 40 "lexer.l"
|
||||
{ return LTEQ; }
|
||||
{ return IS; }
|
||||
YY_BREAK
|
||||
case 15:
|
||||
YY_RULE_SETUP
|
||||
#line 41 "lexer.l"
|
||||
{ return GTEQ; }
|
||||
{ return LTEQ; }
|
||||
YY_BREAK
|
||||
case 16:
|
||||
YY_RULE_SETUP
|
||||
#line 42 "lexer.l"
|
||||
{ return LIKE; }
|
||||
{ return GTEQ; }
|
||||
YY_BREAK
|
||||
case 17:
|
||||
YY_RULE_SETUP
|
||||
#line 43 "lexer.l"
|
||||
;
|
||||
{ return LIKE; }
|
||||
YY_BREAK
|
||||
case 18:
|
||||
YY_RULE_SETUP
|
||||
#line 44 "lexer.l"
|
||||
;
|
||||
YY_BREAK
|
||||
case 19:
|
||||
YY_RULE_SETUP
|
||||
#line 45 "lexer.l"
|
||||
{
|
||||
yylval.name = strdup(&yytext[1]);
|
||||
yylval.name[strlen(yylval.name)-1]='\0';
|
||||
return IDENT;
|
||||
}
|
||||
YY_BREAK
|
||||
case 19:
|
||||
YY_RULE_SETUP
|
||||
#line 49 "lexer.l"
|
||||
{ yylval.name = strdup(yytext); return NAME; }
|
||||
YY_BREAK
|
||||
case 20:
|
||||
YY_RULE_SETUP
|
||||
#line 51 "lexer.l"
|
||||
{ yylval.name = strdup(yytext); return STRING; }
|
||||
#line 50 "lexer.l"
|
||||
{ yylval.name = strdup(yytext); return NAME; }
|
||||
YY_BREAK
|
||||
case 21:
|
||||
YY_RULE_SETUP
|
||||
#line 52 "lexer.l"
|
||||
{ yylval.name = strdup(yytext); return STRING; }
|
||||
YY_BREAK
|
||||
case 22:
|
||||
YY_RULE_SETUP
|
||||
#line 53 "lexer.l"
|
||||
{
|
||||
yylval.name = strdup(yytext); return NUMBER;
|
||||
}
|
||||
YY_BREAK
|
||||
case 22:
|
||||
YY_RULE_SETUP
|
||||
#line 55 "lexer.l"
|
||||
{ yylval.name = strdup(yytext); return PATH; }
|
||||
YY_BREAK
|
||||
case 23:
|
||||
YY_RULE_SETUP
|
||||
#line 56 "lexer.l"
|
||||
{ return yytext[0]; }
|
||||
{ yylval.name = strdup(yytext); return PATH; }
|
||||
YY_BREAK
|
||||
case 24:
|
||||
YY_RULE_SETUP
|
||||
#line 57 "lexer.l"
|
||||
{ return yytext[0]; }
|
||||
YY_BREAK
|
||||
case 25:
|
||||
YY_RULE_SETUP
|
||||
#line 58 "lexer.l"
|
||||
ECHO;
|
||||
YY_BREAK
|
||||
#line 849 "lexer.c"
|
||||
#line 858 "lexer.c"
|
||||
case YY_STATE_EOF(INITIAL):
|
||||
yyterminate();
|
||||
|
||||
@@ -1137,7 +1146,7 @@ static yy_state_type yy_get_previous_state()
|
||||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 95 )
|
||||
if ( yy_current_state >= 97 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
|
||||
@@ -1172,11 +1181,11 @@ yy_state_type yy_current_state;
|
||||
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
|
||||
{
|
||||
yy_current_state = (int) yy_def[yy_current_state];
|
||||
if ( yy_current_state >= 95 )
|
||||
if ( yy_current_state >= 97 )
|
||||
yy_c = yy_meta[(unsigned int) yy_c];
|
||||
}
|
||||
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
|
||||
yy_is_jam = (yy_current_state == 94);
|
||||
yy_is_jam = (yy_current_state == 96);
|
||||
|
||||
return yy_is_jam ? 0 : yy_current_state;
|
||||
}
|
||||
@@ -1726,7 +1735,7 @@ int main()
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#line 57 "lexer.l"
|
||||
#line 58 "lexer.l"
|
||||
|
||||
|
||||
int yywrap()
|
||||
|
||||
@@ -37,6 +37,7 @@ describe { return DESCRIBE; }
|
||||
and { return AND; }
|
||||
or { return OR; }
|
||||
not { return NOT; }
|
||||
is { return IS; }
|
||||
(<=) { return LTEQ; }
|
||||
(>=) { return GTEQ; }
|
||||
like { return LIKE; }
|
||||
|
||||
@@ -43,11 +43,12 @@ static MdbSQL *g_sql;
|
||||
%token <name> IDENT NAME PATH STRING NUMBER
|
||||
%token SELECT FROM WHERE CONNECT DISCONNECT TO LIST TABLES WHERE AND OR NOT
|
||||
%token DESCRIBE TABLE
|
||||
%token LTEQ GTEQ LIKE
|
||||
%token LTEQ GTEQ LIKE IS NULL
|
||||
|
||||
%type <name> database
|
||||
%type <name> constant
|
||||
%type <ival> operator
|
||||
%type <ival> nulloperator
|
||||
|
||||
%%
|
||||
|
||||
@@ -98,6 +99,10 @@ sarg:
|
||||
free($1);
|
||||
free($3);
|
||||
}
|
||||
| NAME nulloperator {
|
||||
mdb_sql_add_sarg(_mdb_sql(NULL), $1, $2, NULL);
|
||||
free($1);
|
||||
}
|
||||
;
|
||||
|
||||
operator:
|
||||
@@ -108,6 +113,12 @@ operator:
|
||||
| GTEQ { $$ = MDB_GTEQ; }
|
||||
| LIKE { $$ = MDB_LIKE; }
|
||||
;
|
||||
|
||||
nulloperator:
|
||||
IS NULL { $$ = MDB_ISNULL; }
|
||||
| IS NOT NULL { $$ = MDB_NOTNULL; }
|
||||
;
|
||||
|
||||
constant:
|
||||
NUMBER { $$ = $1; }
|
||||
| STRING { $$ = $1; }
|
||||
|
||||
Reference in New Issue
Block a user