00001 #line 2 "dbcompare_expression_scanner.cc"
00002
00003 #line 4 "dbcompare_expression_scanner.cc"
00004
00005 #define YY_INT_ALIGNED short int
00006
00007
00008
00009 #define FLEX_SCANNER
00010 #define YY_FLEX_MAJOR_VERSION 2
00011 #define YY_FLEX_MINOR_VERSION 5
00012 #define YY_FLEX_SUBMINOR_VERSION 33
00013 #if YY_FLEX_SUBMINOR_VERSION > 0
00014 #define FLEX_BETA
00015 #endif
00016
00017
00018
00019
00020
00021
00022
00023 #define yyFlexLexer CoconutDBCompareExpressionFlexLexer
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef FLEXINT_H
00034 #define FLEXINT_H
00035
00036
00037
00038 #if __STDC_VERSION__ >= 199901L
00039
00040
00041
00042
00043 #ifndef __STDC_LIMIT_MACROS
00044 #define __STDC_LIMIT_MACROS 1
00045 #endif
00046
00047 #include <inttypes.h>
00048 typedef int8_t flex_int8_t;
00049 typedef uint8_t flex_uint8_t;
00050 typedef int16_t flex_int16_t;
00051 typedef uint16_t flex_uint16_t;
00052 typedef int32_t flex_int32_t;
00053 typedef uint32_t flex_uint32_t;
00054 #else
00055 typedef signed char flex_int8_t;
00056 typedef short int flex_int16_t;
00057 typedef int flex_int32_t;
00058 typedef unsigned char flex_uint8_t;
00059 typedef unsigned short int flex_uint16_t;
00060 typedef unsigned int flex_uint32_t;
00061 #endif
00062
00063
00064 #ifndef INT8_MIN
00065 #define INT8_MIN (-128)
00066 #endif
00067 #ifndef INT16_MIN
00068 #define INT16_MIN (-32767-1)
00069 #endif
00070 #ifndef INT32_MIN
00071 #define INT32_MIN (-2147483647-1)
00072 #endif
00073 #ifndef INT8_MAX
00074 #define INT8_MAX (127)
00075 #endif
00076 #ifndef INT16_MAX
00077 #define INT16_MAX (32767)
00078 #endif
00079 #ifndef INT32_MAX
00080 #define INT32_MAX (2147483647)
00081 #endif
00082 #ifndef UINT8_MAX
00083 #define UINT8_MAX (255U)
00084 #endif
00085 #ifndef UINT16_MAX
00086 #define UINT16_MAX (65535U)
00087 #endif
00088 #ifndef UINT32_MAX
00089 #define UINT32_MAX (4294967295U)
00090 #endif
00091
00092 #endif
00093
00094
00095 #include <iostream>
00096 #include <errno.h>
00097 #include <cstdlib>
00098 #include <cstring>
00099
00100
00101 #ifdef __cplusplus
00102
00103
00104 #define YY_USE_CONST
00105
00106 #else
00107
00108 #if __STDC__
00109
00110 #define YY_USE_CONST
00111
00112 #endif
00113 #endif
00114
00115 #ifdef YY_USE_CONST
00116 #define yyconst const
00117 #else
00118 #define yyconst
00119 #endif
00120
00121
00122 #define YY_NULL 0
00123
00124
00125
00126
00127
00128
00129 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
00130
00131
00132
00133
00134
00135 #define BEGIN (yy_start) = 1 + 2 *
00136
00137
00138
00139
00140
00141 #define YY_START (((yy_start) - 1) / 2)
00142 #define YYSTATE YY_START
00143
00144
00145 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
00146
00147
00148 #define YY_NEW_FILE yyrestart( yyin )
00149
00150 #define YY_END_OF_BUFFER_CHAR 0
00151
00152
00153 #ifndef YY_BUF_SIZE
00154 #define YY_BUF_SIZE 16384
00155 #endif
00156
00157
00158
00159 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
00160
00161 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
00162 #define YY_TYPEDEF_YY_BUFFER_STATE
00163 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00164 #endif
00165
00166 extern int yyleng;
00167
00168 #define EOB_ACT_CONTINUE_SCAN 0
00169 #define EOB_ACT_END_OF_FILE 1
00170 #define EOB_ACT_LAST_MATCH 2
00171
00172 #define YY_LESS_LINENO(n)
00173
00174
00175 #define yyless(n) \
00176 do \
00177 { \
00178 \
00179 int yyless_macro_arg = (n); \
00180 YY_LESS_LINENO(yyless_macro_arg);\
00181 *yy_cp = (yy_hold_char); \
00182 YY_RESTORE_YY_MORE_OFFSET \
00183 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
00184 YY_DO_BEFORE_ACTION; \
00185 } \
00186 while ( 0 )
00187
00188 #define unput(c) yyunput( c, (yytext_ptr) )
00189
00190
00191
00192
00193
00194
00195 #ifndef YY_TYPEDEF_YY_SIZE_T
00196 #define YY_TYPEDEF_YY_SIZE_T
00197 typedef unsigned int yy_size_t;
00198 #endif
00199
00200 #ifndef YY_STRUCT_YY_BUFFER_STATE
00201 #define YY_STRUCT_YY_BUFFER_STATE
00202 struct yy_buffer_state
00203 {
00204
00205 std::istream* yy_input_file;
00206
00207 char *yy_ch_buf;
00208 char *yy_buf_pos;
00209
00210
00211
00212
00213 yy_size_t yy_buf_size;
00214
00215
00216
00217
00218 int yy_n_chars;
00219
00220
00221
00222
00223
00224 int yy_is_our_buffer;
00225
00226
00227
00228
00229
00230
00231 int yy_is_interactive;
00232
00233
00234
00235
00236
00237 int yy_at_bol;
00238
00239 int yy_bs_lineno;
00240 int yy_bs_column;
00242
00243
00244
00245 int yy_fill_buffer;
00246
00247 int yy_buffer_status;
00248
00249 #define YY_BUFFER_NEW 0
00250 #define YY_BUFFER_NORMAL 1
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261 #define YY_BUFFER_EOF_PENDING 2
00262
00263 };
00264 #endif
00265
00266
00267
00268
00269
00270
00271
00272 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
00273 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
00274 : NULL)
00275
00276
00277
00278
00279 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
00280
00281 void *CoconutDBCompareExpressionalloc (yy_size_t );
00282 void *CoconutDBCompareExpressionrealloc (void *,yy_size_t );
00283 void CoconutDBCompareExpressionfree (void * );
00284
00285 #define yy_new_buffer yy_create_buffer
00286
00287 #define yy_set_interactive(is_interactive) \
00288 { \
00289 if ( ! YY_CURRENT_BUFFER ){ \
00290 yyensure_buffer_stack (); \
00291 YY_CURRENT_BUFFER_LVALUE = \
00292 yy_create_buffer( yyin, YY_BUF_SIZE ); \
00293 } \
00294 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
00295 }
00296
00297 #define yy_set_bol(at_bol) \
00298 { \
00299 if ( ! YY_CURRENT_BUFFER ){\
00300 yyensure_buffer_stack (); \
00301 YY_CURRENT_BUFFER_LVALUE = \
00302 yy_create_buffer( yyin, YY_BUF_SIZE ); \
00303 } \
00304 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
00305 }
00306
00307 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
00308
00309 #define yywrap(n) 1
00310 #define YY_SKIP_YYWRAP
00311
00312 typedef unsigned char YY_CHAR;
00313
00314 #define yytext_ptr yytext
00315
00316 #include <FlexLexer.h>
00317 int yyFlexLexer::yylex()
00318 {
00319 LexerError( "yyFlexLexer::yylex invoked but %option yyclass used" );
00320 return 0;
00321 }
00322
00323 #define YY_DECL int dbcompare_expression_scanner::yylex()
00324
00325
00326
00327
00328 #define YY_DO_BEFORE_ACTION \
00329 (yytext_ptr) = yy_bp; \
00330 yyleng = (size_t) (yy_cp - yy_bp); \
00331 (yy_hold_char) = *yy_cp; \
00332 *yy_cp = '\0'; \
00333 (yy_c_buf_p) = yy_cp;
00334
00335 #define YY_NUM_RULES 17
00336 #define YY_END_OF_BUFFER 18
00337
00338
00339 struct yy_trans_info
00340 {
00341 flex_int32_t yy_verify;
00342 flex_int32_t yy_nxt;
00343 };
00344 static yyconst flex_int16_t yy_accept[28] =
00345 { 0,
00346 13, 13, 18, 15, 16, 13, 11, 15, 14, 2,
00347 8, 15, 7, 1, 12, 13, 4, 9, 2, 6,
00348 3, 5, 0, 1, 10, 1, 0
00349 } ;
00350
00351 static yyconst flex_int32_t yy_ec[256] =
00352 { 0,
00353 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
00354 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00355 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00356 1, 3, 4, 1, 1, 1, 1, 5, 1, 6,
00357 6, 1, 7, 1, 7, 7, 1, 8, 8, 8,
00358 8, 8, 8, 8, 8, 8, 8, 1, 1, 9,
00359 10, 11, 1, 1, 12, 12, 12, 12, 12, 12,
00360 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
00361 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
00362 1, 1, 1, 1, 1, 1, 12, 12, 12, 12,
00363
00364 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
00365 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
00366 12, 12, 1, 13, 1, 1, 1, 1, 1, 1,
00367 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00368 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00369 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00370 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00371 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00372 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00373 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00374
00375 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00376 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00377 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00378 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00379 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00380 1, 1, 1, 1, 1
00381 } ;
00382
00383 static yyconst flex_int32_t yy_meta[14] =
00384 { 0,
00385 1, 1, 2, 1, 1, 1, 3, 4, 1, 1,
00386 1, 4, 1
00387 } ;
00388
00389 static yyconst flex_int16_t yy_base[31] =
00390 { 0,
00391 0, 0, 32, 33, 33, 28, 20, 24, 33, 0,
00392 18, 17, 16, 22, 11, 20, 33, 33, 0, 33,
00393 33, 33, 19, 17, 33, 14, 33, 11, 14, 17
00394 } ;
00395
00396 static yyconst flex_int16_t yy_def[31] =
00397 { 0,
00398 27, 1, 27, 27, 27, 27, 27, 27, 27, 28,
00399 27, 27, 27, 29, 27, 27, 27, 27, 28, 27,
00400 27, 27, 30, 29, 27, 30, 0, 27, 27, 27
00401 } ;
00402
00403 static yyconst flex_int16_t yy_nxt[47] =
00404 { 0,
00405 4, 5, 6, 7, 8, 9, 10, 10, 11, 12,
00406 13, 14, 15, 19, 19, 24, 23, 24, 26, 23,
00407 26, 23, 16, 25, 23, 22, 21, 20, 18, 17,
00408 16, 27, 3, 27, 27, 27, 27, 27, 27, 27,
00409 27, 27, 27, 27, 27, 27
00410 } ;
00411
00412 static yyconst flex_int16_t yy_chk[47] =
00413 { 0,
00414 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00415 1, 1, 1, 28, 28, 29, 26, 29, 30, 24,
00416 30, 23, 16, 15, 14, 13, 12, 11, 8, 7,
00417 6, 3, 27, 27, 27, 27, 27, 27, 27, 27,
00418 27, 27, 27, 27, 27, 27
00419 } ;
00420
00421
00422
00423
00424 #define REJECT reject_used_but_not_detected
00425 #define yymore() yymore_used_but_not_detected
00426 #define YY_MORE_ADJ 0
00427 #define YY_RESTORE_YY_MORE_OFFSET
00428 #line 1 "dbcompare_expression_scanner.l"
00429 #line 2 "dbcompare_expression_scanner.l"
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452 #line 37 "dbcompare_expression_scanner.l"
00453
00454
00455
00456
00457
00458
00459 #include "dbcompare_expression_scanner.hh"
00460 typedef coco_api_internal::dbcompare_expression_parser::token token;
00461 using coco_api_internal::dbcompare_expression_scanner;
00462
00463 #include <coconut_config.h>
00464 #include <cstdlib>
00465 #line 466 "dbcompare_expression_scanner.cc"
00466
00467 #define INITIAL 0
00468
00469 #ifndef YY_NO_UNISTD_H
00470
00471
00472
00473
00474 #include <unistd.h>
00475 #endif
00476
00477 #ifndef YY_EXTRA_TYPE
00478 #define YY_EXTRA_TYPE void *
00479 #endif
00480
00481 #ifndef yytext_ptr
00482 static void yy_flex_strncpy (char *,yyconst char *,int );
00483 #endif
00484
00485 #ifdef YY_NEED_STRLEN
00486 static int yy_flex_strlen (yyconst char * );
00487 #endif
00488
00489 #ifndef YY_NO_INPUT
00490
00491 #endif
00492
00493
00494 #ifndef YY_READ_BUF_SIZE
00495 #define YY_READ_BUF_SIZE 8192
00496 #endif
00497
00498
00499 #ifndef ECHO
00500 #define ECHO LexerOutput( yytext, yyleng )
00501 #endif
00502
00503
00504
00505
00506 #ifndef YY_INPUT
00507 #define YY_INPUT(buf,result,max_size) \
00508 \
00509 if ( (result = LexerInput( (char *) buf, max_size )) < 0 ) \
00510 YY_FATAL_ERROR( "input in flex scanner failed" );
00511
00512 #endif
00513
00514
00515
00516
00517
00518 #ifndef yyterminate
00519 #define yyterminate() return YY_NULL
00520 #endif
00521
00522
00523 #ifndef YY_START_STACK_INCR
00524 #define YY_START_STACK_INCR 25
00525 #endif
00526
00527
00528 #ifndef YY_FATAL_ERROR
00529 #define YY_FATAL_ERROR(msg) LexerError( msg )
00530 #endif
00531
00532
00533
00534
00535
00536
00537 #ifndef YY_DECL
00538 #define YY_DECL_IS_OURS 1
00539 #define YY_DECL int yyFlexLexer::yylex()
00540 #endif
00541
00542
00543
00544
00545 #ifndef YY_USER_ACTION
00546 #define YY_USER_ACTION
00547 #endif
00548
00549
00550 #ifndef YY_BREAK
00551 #define YY_BREAK break;
00552 #endif
00553
00554 #define YY_RULE_SETUP \
00555 YY_USER_ACTION
00556
00559 YY_DECL
00560 {
00561 register yy_state_type yy_current_state;
00562 register char *yy_cp, *yy_bp;
00563 register int yy_act;
00564
00565 #line 51 "dbcompare_expression_scanner.l"
00566
00567
00568 #line 569 "dbcompare_expression_scanner.cc"
00569
00570 if ( !(yy_init) )
00571 {
00572 (yy_init) = 1;
00573
00574 #ifdef YY_USER_INIT
00575 YY_USER_INIT;
00576 #endif
00577
00578 if ( ! (yy_start) )
00579 (yy_start) = 1;
00580
00581 if ( ! yyin )
00582 yyin = & std::cin;
00583
00584 if ( ! yyout )
00585 yyout = & std::cout;
00586
00587 if ( ! YY_CURRENT_BUFFER ) {
00588 yyensure_buffer_stack ();
00589 YY_CURRENT_BUFFER_LVALUE =
00590 yy_create_buffer( yyin, YY_BUF_SIZE );
00591 }
00592
00593 yy_load_buffer_state( );
00594 }
00595
00596 while ( 1 )
00597 {
00598 yy_cp = (yy_c_buf_p);
00599
00600
00601 *yy_cp = (yy_hold_char);
00602
00603
00604
00605
00606 yy_bp = yy_cp;
00607
00608 yy_current_state = (yy_start);
00609 yy_match:
00610 do
00611 {
00612 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
00613 if ( yy_accept[yy_current_state] )
00614 {
00615 (yy_last_accepting_state) = yy_current_state;
00616 (yy_last_accepting_cpos) = yy_cp;
00617 }
00618 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
00619 {
00620 yy_current_state = (int) yy_def[yy_current_state];
00621 if ( yy_current_state >= 28 )
00622 yy_c = yy_meta[(unsigned int) yy_c];
00623 }
00624 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
00625 ++yy_cp;
00626 }
00627 while ( yy_current_state != 27 );
00628 yy_cp = (yy_last_accepting_cpos);
00629 yy_current_state = (yy_last_accepting_state);
00630
00631 yy_find_action:
00632 yy_act = yy_accept[yy_current_state];
00633
00634 YY_DO_BEFORE_ACTION;
00635
00636 do_action:
00637
00638 switch ( yy_act )
00639 {
00640 case 0:
00641
00642 *yy_cp = (yy_hold_char);
00643 yy_cp = (yy_last_accepting_cpos);
00644 yy_current_state = (yy_last_accepting_state);
00645 goto yy_find_action;
00646
00647 case 1:
00648 YY_RULE_SETUP
00649 #line 53 "dbcompare_expression_scanner.l"
00650 { yylval->varname = new std::string(YYText()); return token::VARNAME; }
00651 YY_BREAK
00652 case 2:
00653 YY_RULE_SETUP
00654 #line 54 "dbcompare_expression_scanner.l"
00655 {
00656 char *endp;
00657 yylval->value = std::strtod(YYText(), &endp);
00658 if (*endp) {
00659 if (errormsg.empty())
00660 errormsg = "syntax error in expression (invalid value)";
00661 return token::SCAN_ERROR;
00662 }
00663 return token::FLOAT;
00664 }
00665 YY_BREAK
00666 case 3:
00667 YY_RULE_SETUP
00668 #line 64 "dbcompare_expression_scanner.l"
00669 { return token::OP_EQ; }
00670 YY_BREAK
00671 case 4:
00672 YY_RULE_SETUP
00673 #line 65 "dbcompare_expression_scanner.l"
00674 { return token::OP_NE; }
00675 YY_BREAK
00676 case 5:
00677 YY_RULE_SETUP
00678 #line 66 "dbcompare_expression_scanner.l"
00679 { return token::OP_GE; }
00680 YY_BREAK
00681 case 6:
00682 YY_RULE_SETUP
00683 #line 67 "dbcompare_expression_scanner.l"
00684 { return token::OP_LE; }
00685 YY_BREAK
00686 case 7:
00687 YY_RULE_SETUP
00688 #line 68 "dbcompare_expression_scanner.l"
00689 { return token::OP_GT; }
00690 YY_BREAK
00691 case 8:
00692 YY_RULE_SETUP
00693 #line 69 "dbcompare_expression_scanner.l"
00694 { return token::OP_LT; }
00695 YY_BREAK
00696 case 9:
00697 YY_RULE_SETUP
00698 #line 70 "dbcompare_expression_scanner.l"
00699 { return token::OP_AND; }
00700 YY_BREAK
00701 case 10:
00702 YY_RULE_SETUP
00703 #line 71 "dbcompare_expression_scanner.l"
00704 { return token::OP_OR; }
00705 YY_BREAK
00706 case 11:
00707 YY_RULE_SETUP
00708 #line 72 "dbcompare_expression_scanner.l"
00709 { return token::OP_NOT; }
00710 YY_BREAK
00711 case 12:
00712 YY_RULE_SETUP
00713 #line 73 "dbcompare_expression_scanner.l"
00714 { return token::OP_ABS; }
00715 YY_BREAK
00716 case 13:
00717 YY_RULE_SETUP
00718 #line 74 "dbcompare_expression_scanner.l"
00719 { }
00720 YY_BREAK
00721 case 14:
00722 YY_RULE_SETUP
00723 #line 75 "dbcompare_expression_scanner.l"
00724 {
00725 if (errormsg.empty())
00726 errormsg = "no parentheses allowed, expression must be in DNF";
00727 return token::SCAN_ERROR;
00728 }
00729 YY_BREAK
00730 case 15:
00731 YY_RULE_SETUP
00732 #line 80 "dbcompare_expression_scanner.l"
00733 {
00734 if (errormsg.empty()) {
00735 errormsg = "unexpected character `";
00736 errormsg += YYText();
00737 errormsg += "\' in expression";
00738 }
00739 return token::SCAN_ERROR;
00740 }
00741 YY_BREAK
00742 case 16:
00743
00744 YY_RULE_SETUP
00745 #line 88 "dbcompare_expression_scanner.l"
00746 {
00747 if (errormsg.empty())
00748 errormsg = "unexpected newline in expression";
00749 return token::SCAN_ERROR;
00750 }
00751 YY_BREAK
00752 case 17:
00753 YY_RULE_SETUP
00754 #line 93 "dbcompare_expression_scanner.l"
00755 YY_FATAL_ERROR( "flex scanner jammed" );
00756 YY_BREAK
00757 #line 758 "dbcompare_expression_scanner.cc"
00758 case YY_STATE_EOF(INITIAL):
00759 yyterminate();
00760
00761 case YY_END_OF_BUFFER:
00762 {
00763
00764 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
00765
00766
00767 *yy_cp = (yy_hold_char);
00768 YY_RESTORE_YY_MORE_OFFSET
00769
00770 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
00771 {
00772
00773
00774
00775
00776
00777
00778
00779
00780
00781 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
00782 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
00783 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
00784 }
00785
00786
00787
00788
00789
00790
00791
00792
00793 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
00794 {
00795 yy_state_type yy_next_state;
00796
00797 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
00798
00799 yy_current_state = yy_get_previous_state( );
00800
00801
00802
00803
00804
00805
00806
00807
00808
00809
00810 yy_next_state = yy_try_NUL_trans( yy_current_state );
00811
00812 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
00813
00814 if ( yy_next_state )
00815 {
00816
00817 yy_cp = ++(yy_c_buf_p);
00818 yy_current_state = yy_next_state;
00819 goto yy_match;
00820 }
00821
00822 else
00823 {
00824 yy_cp = (yy_last_accepting_cpos);
00825 yy_current_state = (yy_last_accepting_state);
00826 goto yy_find_action;
00827 }
00828 }
00829
00830 else switch ( yy_get_next_buffer( ) )
00831 {
00832 case EOB_ACT_END_OF_FILE:
00833 {
00834 (yy_did_buffer_switch_on_eof) = 0;
00835
00836 if ( yywrap( ) )
00837 {
00838
00839
00840
00841
00842
00843
00844
00845
00846
00847 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
00848
00849 yy_act = YY_STATE_EOF(YY_START);
00850 goto do_action;
00851 }
00852
00853 else
00854 {
00855 if ( ! (yy_did_buffer_switch_on_eof) )
00856 YY_NEW_FILE;
00857 }
00858 break;
00859 }
00860
00861 case EOB_ACT_CONTINUE_SCAN:
00862 (yy_c_buf_p) =
00863 (yytext_ptr) + yy_amount_of_matched_text;
00864
00865 yy_current_state = yy_get_previous_state( );
00866
00867 yy_cp = (yy_c_buf_p);
00868 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
00869 goto yy_match;
00870
00871 case EOB_ACT_LAST_MATCH:
00872 (yy_c_buf_p) =
00873 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
00874
00875 yy_current_state = yy_get_previous_state( );
00876
00877 yy_cp = (yy_c_buf_p);
00878 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
00879 goto yy_find_action;
00880 }
00881 break;
00882 }
00883
00884 default:
00885 YY_FATAL_ERROR(
00886 "fatal flex scanner internal error--no action found" );
00887 }
00888 }
00889 }
00890
00891 yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout )
00892 {
00893 yyin = arg_yyin;
00894 yyout = arg_yyout;
00895 yy_c_buf_p = 0;
00896 yy_init = 0;
00897 yy_start = 0;
00898 yy_flex_debug = 0;
00899 yylineno = 1;
00900
00901 yy_did_buffer_switch_on_eof = 0;
00902
00903 yy_looking_for_trail_begin = 0;
00904 yy_more_flag = 0;
00905 yy_more_len = 0;
00906 yy_more_offset = yy_prev_more_offset = 0;
00907
00908 yy_start_stack_ptr = yy_start_stack_depth = 0;
00909 yy_start_stack = NULL;
00910
00911 (yy_buffer_stack) = 0;
00912 (yy_buffer_stack_top) = 0;
00913 (yy_buffer_stack_max) = 0;
00914
00915 yy_state_buf = 0;
00916
00917 }
00918
00919 yyFlexLexer::~yyFlexLexer()
00920 {
00921 delete [] yy_state_buf;
00922 CoconutDBCompareExpressionfree(yy_start_stack );
00923 yy_delete_buffer( YY_CURRENT_BUFFER );
00924 }
00925
00926 void yyFlexLexer::switch_streams( std::istream* new_in, std::ostream* new_out )
00927 {
00928 if ( new_in )
00929 {
00930 yy_delete_buffer( YY_CURRENT_BUFFER );
00931 yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE ) );
00932 }
00933
00934 if ( new_out )
00935 yyout = new_out;
00936 }
00937
00938 #ifdef YY_INTERACTIVE
00939 int yyFlexLexer::LexerInput( char* buf, int )
00940 #else
00941 int yyFlexLexer::LexerInput( char* buf, int max_size )
00942 #endif
00943 {
00944 if ( yyin->eof() || yyin->fail() )
00945 return 0;
00946
00947 #ifdef YY_INTERACTIVE
00948 yyin->get( buf[0] );
00949
00950 if ( yyin->eof() )
00951 return 0;
00952
00953 if ( yyin->bad() )
00954 return -1;
00955
00956 return 1;
00957
00958 #else
00959 (void) yyin->read( buf, max_size );
00960
00961 if ( yyin->bad() )
00962 return -1;
00963 else
00964 return yyin->gcount();
00965 #endif
00966 }
00967
00968 void yyFlexLexer::LexerOutput( const char* buf, int size )
00969 {
00970 (void) yyout->write( buf, size );
00971 }
00972
00973
00974
00975
00976
00977
00978
00979
00980 int yyFlexLexer::yy_get_next_buffer()
00981 {
00982 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
00983 register char *source = (yytext_ptr);
00984 register int number_to_move, i;
00985 int ret_val;
00986
00987 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
00988 YY_FATAL_ERROR(
00989 "fatal flex scanner internal error--end of buffer missed" );
00990
00991 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
00992 {
00993 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
00994 {
00995
00996
00997
00998 return EOB_ACT_END_OF_FILE;
00999 }
01000
01001 else
01002 {
01003
01004
01005
01006 return EOB_ACT_LAST_MATCH;
01007 }
01008 }
01009
01010
01011
01012
01013 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
01014
01015 for ( i = 0; i < number_to_move; ++i )
01016 *(dest++) = *(source++);
01017
01018 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
01019
01020
01021
01022 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
01023
01024 else
01025 {
01026 int num_to_read =
01027 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
01028
01029 while ( num_to_read <= 0 )
01030 {
01031
01032
01033 YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
01034
01035 int yy_c_buf_p_offset =
01036 (int) ((yy_c_buf_p) - b->yy_ch_buf);
01037
01038 if ( b->yy_is_our_buffer )
01039 {
01040 int new_size = b->yy_buf_size * 2;
01041
01042 if ( new_size <= 0 )
01043 b->yy_buf_size += b->yy_buf_size / 8;
01044 else
01045 b->yy_buf_size *= 2;
01046
01047 b->yy_ch_buf = (char *)
01048
01049 CoconutDBCompareExpressionrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
01050 }
01051 else
01052
01053 b->yy_ch_buf = 0;
01054
01055 if ( ! b->yy_ch_buf )
01056 YY_FATAL_ERROR(
01057 "fatal error - scanner input buffer overflow" );
01058
01059 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
01060
01061 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
01062 number_to_move - 1;
01063
01064 }
01065
01066 if ( num_to_read > YY_READ_BUF_SIZE )
01067 num_to_read = YY_READ_BUF_SIZE;
01068
01069
01070 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
01071 (yy_n_chars), num_to_read );
01072
01073 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
01074 }
01075
01076 if ( (yy_n_chars) == 0 )
01077 {
01078 if ( number_to_move == YY_MORE_ADJ )
01079 {
01080 ret_val = EOB_ACT_END_OF_FILE;
01081 yyrestart( yyin );
01082 }
01083
01084 else
01085 {
01086 ret_val = EOB_ACT_LAST_MATCH;
01087 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
01088 YY_BUFFER_EOF_PENDING;
01089 }
01090 }
01091
01092 else
01093 ret_val = EOB_ACT_CONTINUE_SCAN;
01094
01095 (yy_n_chars) += number_to_move;
01096 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
01097 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
01098
01099 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
01100
01101 return ret_val;
01102 }
01103
01104
01105
01106 yy_state_type yyFlexLexer::yy_get_previous_state()
01107 {
01108 register yy_state_type yy_current_state;
01109 register char *yy_cp;
01110
01111 yy_current_state = (yy_start);
01112
01113 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
01114 {
01115 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
01116 if ( yy_accept[yy_current_state] )
01117 {
01118 (yy_last_accepting_state) = yy_current_state;
01119 (yy_last_accepting_cpos) = yy_cp;
01120 }
01121 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01122 {
01123 yy_current_state = (int) yy_def[yy_current_state];
01124 if ( yy_current_state >= 28 )
01125 yy_c = yy_meta[(unsigned int) yy_c];
01126 }
01127 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01128 }
01129
01130 return yy_current_state;
01131 }
01132
01133
01134
01135
01136
01137
01138 yy_state_type yyFlexLexer::yy_try_NUL_trans( yy_state_type yy_current_state )
01139 {
01140 register int yy_is_jam;
01141 register char *yy_cp = (yy_c_buf_p);
01142
01143 register YY_CHAR yy_c = 1;
01144 if ( yy_accept[yy_current_state] )
01145 {
01146 (yy_last_accepting_state) = yy_current_state;
01147 (yy_last_accepting_cpos) = yy_cp;
01148 }
01149 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01150 {
01151 yy_current_state = (int) yy_def[yy_current_state];
01152 if ( yy_current_state >= 28 )
01153 yy_c = yy_meta[(unsigned int) yy_c];
01154 }
01155 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01156 yy_is_jam = (yy_current_state == 27);
01157
01158 return yy_is_jam ? 0 : yy_current_state;
01159 }
01160
01161 void yyFlexLexer::yyunput( int c, register char* yy_bp)
01162 {
01163 register char *yy_cp;
01164
01165 yy_cp = (yy_c_buf_p);
01166
01167
01168 *yy_cp = (yy_hold_char);
01169
01170 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
01171 {
01172
01173 register int number_to_move = (yy_n_chars) + 2;
01174 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
01175 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
01176 register char *source =
01177 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
01178
01179 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
01180 *--dest = *--source;
01181
01182 yy_cp += (int) (dest - source);
01183 yy_bp += (int) (dest - source);
01184 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
01185 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
01186
01187 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
01188 YY_FATAL_ERROR( "flex scanner push-back overflow" );
01189 }
01190
01191 *--yy_cp = (char) c;
01192
01193 (yytext_ptr) = yy_bp;
01194 (yy_hold_char) = *yy_cp;
01195 (yy_c_buf_p) = yy_cp;
01196 }
01197
01198 int yyFlexLexer::yyinput()
01199 {
01200 int c;
01201
01202 *(yy_c_buf_p) = (yy_hold_char);
01203
01204 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
01205 {
01206
01207
01208
01209
01210 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
01211
01212 *(yy_c_buf_p) = '\0';
01213
01214 else
01215 {
01216 int offset = (yy_c_buf_p) - (yytext_ptr);
01217 ++(yy_c_buf_p);
01218
01219 switch ( yy_get_next_buffer( ) )
01220 {
01221 case EOB_ACT_LAST_MATCH:
01222
01223
01224
01225
01226
01227
01228
01229
01230
01231
01232
01233 yyrestart( yyin );
01234
01235
01236
01237 case EOB_ACT_END_OF_FILE:
01238 {
01239 if ( yywrap( ) )
01240 return EOF;
01241
01242 if ( ! (yy_did_buffer_switch_on_eof) )
01243 YY_NEW_FILE;
01244 #ifdef __cplusplus
01245 return yyinput();
01246 #else
01247 return input();
01248 #endif
01249 }
01250
01251 case EOB_ACT_CONTINUE_SCAN:
01252 (yy_c_buf_p) = (yytext_ptr) + offset;
01253 break;
01254 }
01255 }
01256 }
01257
01258 c = *(unsigned char *) (yy_c_buf_p);
01259 *(yy_c_buf_p) = '\0';
01260 (yy_hold_char) = *++(yy_c_buf_p);
01261
01262 return c;
01263 }
01264
01270 void yyFlexLexer::yyrestart( std::istream* input_file )
01271 {
01272
01273 if ( ! YY_CURRENT_BUFFER ){
01274 yyensure_buffer_stack ();
01275 YY_CURRENT_BUFFER_LVALUE =
01276 yy_create_buffer( yyin, YY_BUF_SIZE );
01277 }
01278
01279 yy_init_buffer( YY_CURRENT_BUFFER, input_file );
01280 yy_load_buffer_state( );
01281 }
01282
01287 void yyFlexLexer::yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
01288 {
01289
01290
01291
01292
01293
01294
01295 yyensure_buffer_stack ();
01296 if ( YY_CURRENT_BUFFER == new_buffer )
01297 return;
01298
01299 if ( YY_CURRENT_BUFFER )
01300 {
01301
01302 *(yy_c_buf_p) = (yy_hold_char);
01303 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
01304 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
01305 }
01306
01307 YY_CURRENT_BUFFER_LVALUE = new_buffer;
01308 yy_load_buffer_state( );
01309
01310
01311
01312
01313
01314
01315 (yy_did_buffer_switch_on_eof) = 1;
01316 }
01317
01318 void yyFlexLexer::yy_load_buffer_state()
01319 {
01320 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
01321 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
01322 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
01323 (yy_hold_char) = *(yy_c_buf_p);
01324 }
01325
01332 YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size )
01333 {
01334 YY_BUFFER_STATE b;
01335
01336 b = (YY_BUFFER_STATE) CoconutDBCompareExpressionalloc(sizeof( struct yy_buffer_state ) );
01337 if ( ! b )
01338 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
01339
01340 b->yy_buf_size = size;
01341
01342
01343
01344
01345 b->yy_ch_buf = (char *) CoconutDBCompareExpressionalloc(b->yy_buf_size + 2 );
01346 if ( ! b->yy_ch_buf )
01347 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
01348
01349 b->yy_is_our_buffer = 1;
01350
01351 yy_init_buffer( b, file );
01352
01353 return b;
01354 }
01355
01360 void yyFlexLexer::yy_delete_buffer( YY_BUFFER_STATE b )
01361 {
01362
01363 if ( ! b )
01364 return;
01365
01366 if ( b == YY_CURRENT_BUFFER )
01367 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
01368
01369 if ( b->yy_is_our_buffer )
01370 CoconutDBCompareExpressionfree((void *) b->yy_ch_buf );
01371
01372 CoconutDBCompareExpressionfree((void *) b );
01373 }
01374
01375
01376
01377
01378
01379 void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream* file )
01380
01381 {
01382 int oerrno = errno;
01383
01384 yy_flush_buffer( b );
01385
01386 b->yy_input_file = file;
01387 b->yy_fill_buffer = 1;
01388
01389
01390
01391
01392
01393 if (b != YY_CURRENT_BUFFER){
01394 b->yy_bs_lineno = 1;
01395 b->yy_bs_column = 0;
01396 }
01397
01398 b->yy_is_interactive = 0;
01399 errno = oerrno;
01400 }
01401
01406 void yyFlexLexer::yy_flush_buffer( YY_BUFFER_STATE b )
01407 {
01408 if ( ! b )
01409 return;
01410
01411 b->yy_n_chars = 0;
01412
01413
01414
01415
01416
01417 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
01418 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
01419
01420 b->yy_buf_pos = &b->yy_ch_buf[0];
01421
01422 b->yy_at_bol = 1;
01423 b->yy_buffer_status = YY_BUFFER_NEW;
01424
01425 if ( b == YY_CURRENT_BUFFER )
01426 yy_load_buffer_state( );
01427 }
01428
01435 void yyFlexLexer::yypush_buffer_state (YY_BUFFER_STATE new_buffer)
01436 {
01437 if (new_buffer == NULL)
01438 return;
01439
01440 yyensure_buffer_stack();
01441
01442
01443 if ( YY_CURRENT_BUFFER )
01444 {
01445
01446 *(yy_c_buf_p) = (yy_hold_char);
01447 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
01448 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
01449 }
01450
01451
01452 if (YY_CURRENT_BUFFER)
01453 (yy_buffer_stack_top)++;
01454 YY_CURRENT_BUFFER_LVALUE = new_buffer;
01455
01456
01457 yy_load_buffer_state( );
01458 (yy_did_buffer_switch_on_eof) = 1;
01459 }
01460
01465 void yyFlexLexer::yypop_buffer_state (void)
01466 {
01467 if (!YY_CURRENT_BUFFER)
01468 return;
01469
01470 yy_delete_buffer(YY_CURRENT_BUFFER );
01471 YY_CURRENT_BUFFER_LVALUE = NULL;
01472 if ((yy_buffer_stack_top) > 0)
01473 --(yy_buffer_stack_top);
01474
01475 if (YY_CURRENT_BUFFER) {
01476 yy_load_buffer_state( );
01477 (yy_did_buffer_switch_on_eof) = 1;
01478 }
01479 }
01480
01481
01482
01483
01484 void yyFlexLexer::yyensure_buffer_stack(void)
01485 {
01486 int num_to_alloc;
01487
01488 if (!(yy_buffer_stack)) {
01489
01490
01491
01492
01493
01494 num_to_alloc = 1;
01495 (yy_buffer_stack) = (struct yy_buffer_state**)CoconutDBCompareExpressionalloc
01496 (num_to_alloc * sizeof(struct yy_buffer_state*)
01497 );
01498
01499 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
01500
01501 (yy_buffer_stack_max) = num_to_alloc;
01502 (yy_buffer_stack_top) = 0;
01503 return;
01504 }
01505
01506 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
01507
01508
01509 int grow_size = 8 ;
01510
01511 num_to_alloc = (yy_buffer_stack_max) + grow_size;
01512 (yy_buffer_stack) = (struct yy_buffer_state**)CoconutDBCompareExpressionrealloc
01513 ((yy_buffer_stack),
01514 num_to_alloc * sizeof(struct yy_buffer_state*)
01515 );
01516
01517
01518 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
01519 (yy_buffer_stack_max) = num_to_alloc;
01520 }
01521 }
01522
01523 void yyFlexLexer::yy_push_state( int new_state )
01524 {
01525 if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
01526 {
01527 yy_size_t new_size;
01528
01529 (yy_start_stack_depth) += YY_START_STACK_INCR;
01530 new_size = (yy_start_stack_depth) * sizeof( int );
01531
01532 if ( ! (yy_start_stack) )
01533 (yy_start_stack) = (int *) CoconutDBCompareExpressionalloc(new_size );
01534
01535 else
01536 (yy_start_stack) = (int *) CoconutDBCompareExpressionrealloc((void *) (yy_start_stack),new_size );
01537
01538 if ( ! (yy_start_stack) )
01539 YY_FATAL_ERROR(
01540 "out of memory expanding start-condition stack" );
01541 }
01542
01543 (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
01544
01545 BEGIN(new_state);
01546 }
01547
01548 void yyFlexLexer::yy_pop_state()
01549 {
01550 if ( --(yy_start_stack_ptr) < 0 )
01551 YY_FATAL_ERROR( "start-condition stack underflow" );
01552
01553 BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
01554 }
01555
01556 int yyFlexLexer::yy_top_state()
01557 {
01558 return (yy_start_stack)[(yy_start_stack_ptr) - 1];
01559 }
01560
01561 #ifndef YY_EXIT_FAILURE
01562 #define YY_EXIT_FAILURE 2
01563 #endif
01564
01565 void yyFlexLexer::LexerError( yyconst char msg[] )
01566 {
01567 std::cerr << msg << std::endl;
01568 exit( YY_EXIT_FAILURE );
01569 }
01570
01571
01572
01573 #undef yyless
01574 #define yyless(n) \
01575 do \
01576 { \
01577 \
01578 int yyless_macro_arg = (n); \
01579 YY_LESS_LINENO(yyless_macro_arg);\
01580 yytext[yyleng] = (yy_hold_char); \
01581 (yy_c_buf_p) = yytext + yyless_macro_arg; \
01582 (yy_hold_char) = *(yy_c_buf_p); \
01583 *(yy_c_buf_p) = '\0'; \
01584 yyleng = yyless_macro_arg; \
01585 } \
01586 while ( 0 )
01587
01588
01589
01590
01591
01592
01593
01594 #ifndef yytext_ptr
01595 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
01596 {
01597 register int i;
01598 for ( i = 0; i < n; ++i )
01599 s1[i] = s2[i];
01600 }
01601 #endif
01602
01603 #ifdef YY_NEED_STRLEN
01604 static int yy_flex_strlen (yyconst char * s )
01605 {
01606 register int n;
01607 for ( n = 0; s[n]; ++n )
01608 ;
01609
01610 return n;
01611 }
01612 #endif
01613
01614 void *CoconutDBCompareExpressionalloc (yy_size_t size )
01615 {
01616 return (void *) malloc( size );
01617 }
01618
01619 void *CoconutDBCompareExpressionrealloc (void * ptr, yy_size_t size )
01620 {
01621
01622
01623
01624
01625
01626
01627
01628 return (void *) realloc( (char *) ptr, size );
01629 }
01630
01631 void CoconutDBCompareExpressionfree (void * ptr )
01632 {
01633 free( (char *) ptr );
01634 }
01635
01636 #define YYTABLES_NAME "yytables"
01637
01638 #line 93 "dbcompare_expression_scanner.l"