sync up, see ChangeLog for details

This commit is contained in:
brianb
2004-02-06 02:34:20 +00:00
parent ede5601bf2
commit a74094c667
15 changed files with 539 additions and 200 deletions

View File

@@ -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()

View File

@@ -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; }

View File

@@ -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; }