00001 #line 2 "bif_lex.cc"
00002
00003
00004
00005
00006
00007
00008 #define FLEX_SCANNER
00009 #define YY_FLEX_MAJOR_VERSION 2
00010 #define YY_FLEX_MINOR_VERSION 5
00011
00012 #include <stdio.h>
00013 #include <unistd.h>
00014
00015
00016
00017 #ifdef c_plusplus
00018 #ifndef __cplusplus
00019 #define __cplusplus
00020 #endif
00021 #endif
00022
00023
00024 #ifdef __cplusplus
00025
00026 #include <stdlib.h>
00027
00028
00029 #define YY_USE_PROTOS
00030
00031
00032 #define YY_USE_CONST
00033
00034 #else
00035
00036 #if __STDC__
00037
00038 #define YY_USE_PROTOS
00039 #define YY_USE_CONST
00040
00041 #endif
00042 #endif
00043
00044 #ifdef __TURBOC__
00045 #pragma warn -rch
00046 #pragma warn -use
00047 #include <io.h>
00048 #include <stdlib.h>
00049 #define YY_USE_CONST
00050 #define YY_USE_PROTOS
00051 #endif
00052
00053 #ifdef YY_USE_CONST
00054 #define yyconst const
00055 #else
00056 #define yyconst
00057 #endif
00058
00059
00060 #ifdef YY_USE_PROTOS
00061 #define YY_PROTO(proto) proto
00062 #else
00063 #define YY_PROTO(proto) ()
00064 #endif
00065
00066
00067 #define YY_NULL 0
00068
00069
00070
00071
00072
00073
00074 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
00075
00076
00077
00078
00079
00080 #define BEGIN yy_start = 1 + 2 *
00081
00082
00083
00084
00085
00086 #define YY_START ((yy_start - 1) / 2)
00087 #define YYSTATE YY_START
00088
00089
00090 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
00091
00092
00093 #define YY_NEW_FILE yyrestart( yyin )
00094
00095 #define YY_END_OF_BUFFER_CHAR 0
00096
00097
00098 #define YY_BUF_SIZE 16384
00099
00100 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00101
00102 extern int yyleng;
00103 extern FILE *yyin, *yyout;
00104
00105 #define EOB_ACT_CONTINUE_SCAN 0
00106 #define EOB_ACT_END_OF_FILE 1
00107 #define EOB_ACT_LAST_MATCH 2
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125 #define yyless(n) \
00126 do \
00127 { \
00128 \
00129 *yy_cp = yy_hold_char; \
00130 YY_RESTORE_YY_MORE_OFFSET \
00131 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
00132 YY_DO_BEFORE_ACTION; \
00133 } \
00134 while ( 0 )
00135
00136 #define unput(c) yyunput( c, yytext_ptr )
00137
00138
00139
00140
00141
00142 typedef unsigned int yy_size_t;
00143
00144
00145 struct yy_buffer_state
00146 {
00147 FILE *yy_input_file;
00148
00149 char *yy_ch_buf;
00150 char *yy_buf_pos;
00151
00152
00153
00154
00155 yy_size_t yy_buf_size;
00156
00157
00158
00159
00160 int yy_n_chars;
00161
00162
00163
00164
00165
00166 int yy_is_our_buffer;
00167
00168
00169
00170
00171
00172
00173 int yy_is_interactive;
00174
00175
00176
00177
00178
00179 int yy_at_bol;
00180
00181
00182
00183
00184 int yy_fill_buffer;
00185
00186 int yy_buffer_status;
00187 #define YY_BUFFER_NEW 0
00188 #define YY_BUFFER_NORMAL 1
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199 #define YY_BUFFER_EOF_PENDING 2
00200 };
00201
00202 static YY_BUFFER_STATE yy_current_buffer = 0;
00203
00204
00205
00206
00207
00208 #define YY_CURRENT_BUFFER yy_current_buffer
00209
00210
00211
00212 static char yy_hold_char;
00213
00214 static int yy_n_chars;
00215
00216
00217 int yyleng;
00218
00219
00220 static char *yy_c_buf_p = (char *) 0;
00221 static int yy_init = 1;
00222 static int yy_start = 0;
00223
00224
00225
00226
00227 static int yy_did_buffer_switch_on_eof;
00228
00229 void yyrestart YY_PROTO(( FILE *input_file ));
00230
00231 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
00232 void yy_load_buffer_state YY_PROTO(( void ));
00233 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
00234 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
00235 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
00236 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
00237 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
00238
00239 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
00240 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
00241 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
00242
00243 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
00244 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
00245 static void yy_flex_free YY_PROTO(( void * ));
00246
00247 #define yy_new_buffer yy_create_buffer
00248
00249 #define yy_set_interactive(is_interactive) \
00250 { \
00251 if ( ! yy_current_buffer ) \
00252 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
00253 yy_current_buffer->yy_is_interactive = is_interactive; \
00254 }
00255
00256 #define yy_set_bol(at_bol) \
00257 { \
00258 if ( ! yy_current_buffer ) \
00259 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
00260 yy_current_buffer->yy_at_bol = at_bol; \
00261 }
00262
00263 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
00264
00265 typedef unsigned char YY_CHAR;
00266 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
00267 typedef int yy_state_type;
00268 extern char *yytext;
00269 #define yytext_ptr yytext
00270
00271 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
00272 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
00273 static int yy_get_next_buffer YY_PROTO(( void ));
00274 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
00275
00276
00277
00278
00279 #define YY_DO_BEFORE_ACTION \
00280 yytext_ptr = yy_bp; \
00281 yyleng = (int) (yy_cp - yy_bp); \
00282 yy_hold_char = *yy_cp; \
00283 *yy_cp = '\0'; \
00284 yy_c_buf_p = yy_cp;
00285
00286 #define YY_NUM_RULES 30
00287 #define YY_END_OF_BUFFER 31
00288 static yyconst short int yy_accept[96] =
00289 { 0,
00290 0, 0, 31, 29, 3, 2, 29, 1, 29, 29,
00291 4, 29, 29, 26, 25, 24, 26, 26, 26, 26,
00292 3, 0, 28, 0, 1, 0, 9, 10, 5, 6,
00293 27, 0, 0, 0, 0, 0, 0, 26, 26, 26,
00294 26, 26, 26, 0, 0, 7, 8, 27, 11, 0,
00295 0, 0, 0, 0, 26, 26, 26, 26, 26, 0,
00296 0, 0, 0, 0, 0, 26, 16, 26, 26, 26,
00297 17, 0, 0, 22, 0, 0, 0, 15, 14, 26,
00298 26, 19, 18, 21, 0, 0, 26, 26, 23, 20,
00299 26, 26, 12, 13, 0
00300
00301 } ;
00302
00303 static yyconst int yy_ec[256] =
00304 { 0,
00305 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
00306 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00307 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00308 1, 2, 1, 4, 5, 1, 6, 7, 1, 8,
00309 9, 1, 1, 10, 1, 11, 1, 12, 12, 12,
00310 12, 12, 12, 12, 12, 13, 13, 10, 10, 1,
00311 10, 1, 1, 14, 15, 16, 17, 16, 18, 19,
00312 20, 21, 22, 23, 23, 23, 23, 23, 24, 25,
00313 23, 26, 27, 28, 29, 23, 30, 23, 23, 23,
00314 1, 31, 1, 1, 23, 1, 16, 16, 32, 16,
00315
00316 33, 34, 23, 23, 35, 23, 23, 23, 36, 37,
00317 38, 23, 23, 39, 40, 41, 42, 43, 44, 45,
00318 23, 23, 46, 1, 47, 1, 1, 1, 1, 1,
00319 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00320 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00321 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00322 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00323 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00324 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00325 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00326
00327 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00328 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00329 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00330 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00331 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00332 1, 1, 1, 1, 1
00333 } ;
00334
00335 static yyconst int yy_meta[48] =
00336 { 0,
00337 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
00338 1, 3, 3, 1, 4, 4, 4, 4, 4, 4,
00339 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
00340 1, 4, 4, 4, 4, 4, 4, 4, 4, 4,
00341 4, 4, 4, 4, 4, 1, 1
00342 } ;
00343
00344 static yyconst short int yy_base[101] =
00345 { 0,
00346 0, 0, 145, 146, 142, 146, 44, 0, 43, 0,
00347 146, 132, 35, 0, 0, 0, 104, 18, 99, 107,
00348 137, 50, 146, 46, 0, 10, 146, 146, 146, 146,
00349 0, 127, 111, 112, 106, 102, 98, 0, 81, 75,
00350 83, 78, 70, 55, 88, 146, 146, 0, 146, 93,
00351 93, 84, 95, 87, 68, 66, 62, 66, 58, 0,
00352 52, 82, 74, 77, 65, 47, 0, 46, 44, 49,
00353 146, 69, 68, 146, 66, 60, 59, 0, 0, 41,
00354 33, 146, 146, 146, 59, 58, 33, 37, 146, 146,
00355 31, 25, 0, 0, 146, 122, 126, 58, 128, 130
00356
00357 } ;
00358
00359 static yyconst short int yy_def[101] =
00360 { 0,
00361 95, 1, 95, 95, 95, 95, 96, 97, 95, 98,
00362 95, 95, 95, 99, 99, 99, 99, 99, 99, 99,
00363 95, 96, 95, 96, 97, 95, 95, 95, 95, 95,
00364 100, 95, 95, 95, 95, 95, 95, 99, 99, 99,
00365 99, 99, 99, 96, 96, 95, 95, 100, 95, 95,
00366 95, 95, 95, 95, 99, 99, 99, 99, 99, 45,
00367 95, 95, 95, 95, 95, 99, 99, 99, 99, 99,
00368 95, 95, 95, 95, 95, 95, 95, 99, 99, 99,
00369 99, 95, 95, 95, 95, 95, 99, 99, 95, 95,
00370 99, 99, 99, 99, 0, 95, 95, 95, 95, 95
00371
00372 } ;
00373
00374 static yyconst short int yy_nxt[194] =
00375 { 0,
00376 4, 5, 6, 7, 8, 9, 10, 4, 4, 11,
00377 12, 4, 4, 13, 14, 14, 14, 14, 15, 14,
00378 14, 14, 14, 14, 14, 14, 14, 16, 14, 14,
00379 4, 17, 18, 19, 14, 14, 14, 14, 20, 14,
00380 14, 14, 14, 14, 14, 4, 4, 23, 26, 33,
00381 27, 28, 34, 23, 40, 46, 47, 44, 23, 35,
00382 41, 31, 36, 94, 37, 71, 44, 93, 72, 92,
00383 91, 90, 89, 88, 24, 87, 86, 85, 73, 84,
00384 24, 83, 82, 81, 80, 24, 79, 78, 29, 30,
00385 45, 23, 77, 76, 75, 74, 70, 69, 68, 60,
00386
00387 60, 67, 60, 60, 60, 60, 60, 66, 65, 64,
00388 63, 62, 61, 59, 58, 57, 56, 55, 24, 60,
00389 60, 60, 22, 54, 22, 22, 25, 53, 25, 25,
00390 38, 38, 48, 48, 52, 51, 50, 49, 21, 43,
00391 42, 39, 32, 21, 95, 3, 95, 95, 95, 95,
00392 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
00393 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
00394 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
00395 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
00396 95, 95, 95
00397
00398 } ;
00399
00400 static yyconst short int yy_chk[194] =
00401 { 0,
00402 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00403 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00404 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00405 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00406 1, 1, 1, 1, 1, 1, 1, 7, 9, 13,
00407 9, 9, 13, 22, 18, 26, 26, 24, 44, 13,
00408 18, 98, 13, 92, 13, 61, 44, 91, 61, 88,
00409 87, 86, 85, 81, 7, 80, 77, 76, 61, 75,
00410 22, 73, 72, 70, 69, 44, 68, 66, 9, 9,
00411 24, 45, 65, 64, 63, 62, 59, 58, 57, 45,
00412
00413 45, 56, 45, 45, 45, 45, 45, 55, 54, 53,
00414 52, 51, 50, 43, 42, 41, 40, 39, 45, 45,
00415 45, 45, 96, 37, 96, 96, 97, 36, 97, 97,
00416 99, 99, 100, 100, 35, 34, 33, 32, 21, 20,
00417 19, 17, 12, 5, 3, 95, 95, 95, 95, 95,
00418 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
00419 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
00420 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
00421 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
00422 95, 95, 95
00423
00424 } ;
00425
00426 static yy_state_type yy_last_accepting_state;
00427 static char *yy_last_accepting_cpos;
00428
00429
00430
00431
00432 #define REJECT reject_used_but_not_detected
00433 #define yymore() yymore_used_but_not_detected
00434 #define YY_MORE_ADJ 0
00435 #define YY_RESTORE_YY_MORE_OFFSET
00436 char *yytext;
00437 #line 1 "./builtin-func.l"
00438 #define INITIAL 0
00439 #line 2 "./builtin-func.l"
00440
00441
00442 #include <string.h>
00443 #include "bif_arg.h"
00444 #include "bif_parse.h"
00445
00446 char* copy_string(const char* s)
00447 {
00448 char* c = new char[strlen(s)+1];
00449 strcpy(c, s);
00450 return c;
00451 }
00452
00453 int line_number = 1;
00454
00455 extern int in_c_code;
00456
00457 int check_c_mode(int t)
00458 {
00459 if ( ! in_c_code )
00460 return t;
00461
00462 yylval.str = copy_string(yytext);
00463 return TOK_C_TOKEN;
00464 }
00465 #line 466 "bif_lex.cc"
00466
00467
00468
00469
00470
00471 #ifndef YY_SKIP_YYWRAP
00472 #ifdef __cplusplus
00473 extern "C" int yywrap YY_PROTO(( void ));
00474 #else
00475 extern int yywrap YY_PROTO(( void ));
00476 #endif
00477 #endif
00478
00479 #ifndef YY_NO_UNPUT
00480 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
00481 #endif
00482
00483 #ifndef yytext_ptr
00484 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
00485 #endif
00486
00487 #ifdef YY_NEED_STRLEN
00488 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
00489 #endif
00490
00491 #ifndef YY_NO_INPUT
00492 #ifdef __cplusplus
00493 static int yyinput YY_PROTO(( void ));
00494 #else
00495 static int input YY_PROTO(( void ));
00496 #endif
00497 #endif
00498
00499 #if YY_STACK_USED
00500 static int yy_start_stack_ptr = 0;
00501 static int yy_start_stack_depth = 0;
00502 static int *yy_start_stack = 0;
00503 #ifndef YY_NO_PUSH_STATE
00504 static void yy_push_state YY_PROTO(( int new_state ));
00505 #endif
00506 #ifndef YY_NO_POP_STATE
00507 static void yy_pop_state YY_PROTO(( void ));
00508 #endif
00509 #ifndef YY_NO_TOP_STATE
00510 static int yy_top_state YY_PROTO(( void ));
00511 #endif
00512
00513 #else
00514 #define YY_NO_PUSH_STATE 1
00515 #define YY_NO_POP_STATE 1
00516 #define YY_NO_TOP_STATE 1
00517 #endif
00518
00519 #ifdef YY_MALLOC_DECL
00520 YY_MALLOC_DECL
00521 #else
00522 #if __STDC__
00523 #ifndef __cplusplus
00524 #include <stdlib.h>
00525 #endif
00526 #else
00527
00528
00529
00530
00531 #endif
00532 #endif
00533
00534
00535 #ifndef YY_READ_BUF_SIZE
00536 #define YY_READ_BUF_SIZE 8192
00537 #endif
00538
00539
00540
00541 #ifndef ECHO
00542
00543
00544
00545 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
00546 #endif
00547
00548
00549
00550
00551 #ifndef YY_INPUT
00552 #define YY_INPUT(buf,result,max_size) \
00553 if ( yy_current_buffer->yy_is_interactive ) \
00554 { \
00555 int c = '*', n; \
00556 for ( n = 0; n < max_size && \
00557 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
00558 buf[n] = (char) c; \
00559 if ( c == '\n' ) \
00560 buf[n++] = (char) c; \
00561 if ( c == EOF && ferror( yyin ) ) \
00562 YY_FATAL_ERROR( "input in flex scanner failed" ); \
00563 result = n; \
00564 } \
00565 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
00566 && ferror( yyin ) ) \
00567 YY_FATAL_ERROR( "input in flex scanner failed" );
00568 #endif
00569
00570
00571
00572
00573
00574 #ifndef yyterminate
00575 #define yyterminate() return YY_NULL
00576 #endif
00577
00578
00579 #ifndef YY_START_STACK_INCR
00580 #define YY_START_STACK_INCR 25
00581 #endif
00582
00583
00584 #ifndef YY_FATAL_ERROR
00585 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
00586 #endif
00587
00588
00589
00590
00591 #ifndef YY_DECL
00592 #define YY_DECL int yylex YY_PROTO(( void ))
00593 #endif
00594
00595
00596
00597
00598 #ifndef YY_USER_ACTION
00599 #define YY_USER_ACTION
00600 #endif
00601
00602
00603 #ifndef YY_BREAK
00604 #define YY_BREAK break;
00605 #endif
00606
00607 #define YY_RULE_SETUP \
00608 YY_USER_ACTION
00609
00610 YY_DECL
00611 {
00612 register yy_state_type yy_current_state;
00613 register char *yy_cp = NULL, *yy_bp = NULL;
00614 register int yy_act;
00615
00616 #line 33 "./builtin-func.l"
00617
00618
00619 #line 620 "bif_lex.cc"
00620
00621 if ( yy_init )
00622 {
00623 yy_init = 0;
00624
00625 #ifdef YY_USER_INIT
00626 YY_USER_INIT;
00627 #endif
00628
00629 if ( ! yy_start )
00630 yy_start = 1;
00631
00632 if ( ! yyin )
00633 yyin = stdin;
00634
00635 if ( ! yyout )
00636 yyout = stdout;
00637
00638 if ( ! yy_current_buffer )
00639 yy_current_buffer =
00640 yy_create_buffer( yyin, YY_BUF_SIZE );
00641
00642 yy_load_buffer_state();
00643 }
00644
00645 while ( 1 )
00646 {
00647 yy_cp = yy_c_buf_p;
00648
00649
00650 *yy_cp = yy_hold_char;
00651
00652
00653
00654
00655 yy_bp = yy_cp;
00656
00657 yy_current_state = yy_start;
00658 yy_match:
00659 do
00660 {
00661 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
00662 if ( yy_accept[yy_current_state] )
00663 {
00664 yy_last_accepting_state = yy_current_state;
00665 yy_last_accepting_cpos = yy_cp;
00666 }
00667 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
00668 {
00669 yy_current_state = (int) yy_def[yy_current_state];
00670 if ( yy_current_state >= 96 )
00671 yy_c = yy_meta[(unsigned int) yy_c];
00672 }
00673 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
00674 ++yy_cp;
00675 }
00676 while ( yy_base[yy_current_state] != 146 );
00677
00678 yy_find_action:
00679 yy_act = yy_accept[yy_current_state];
00680 if ( yy_act == 0 )
00681 {
00682 yy_cp = yy_last_accepting_cpos;
00683 yy_current_state = yy_last_accepting_state;
00684 yy_act = yy_accept[yy_current_state];
00685 }
00686
00687 YY_DO_BEFORE_ACTION;
00688
00689
00690 do_action:
00691
00692
00693 switch ( yy_act )
00694 {
00695 case 0:
00696
00697 *yy_cp = yy_hold_char;
00698 yy_cp = yy_last_accepting_cpos;
00699 yy_current_state = yy_last_accepting_state;
00700 goto yy_find_action;
00701
00702 case 1:
00703 YY_RULE_SETUP
00704 #line 35 "./builtin-func.l"
00705 {
00706 yylval.str = copy_string(yytext);
00707 return TOK_COMMENT;
00708 }
00709 YY_BREAK
00710 case 2:
00711 YY_RULE_SETUP
00712 #line 40 "./builtin-func.l"
00713 {
00714 ++line_number;
00715 return TOK_LF;
00716 }
00717 YY_BREAK
00718 case 3:
00719 YY_RULE_SETUP
00720 #line 45 "./builtin-func.l"
00721 {
00722 yylval.str = copy_string(yytext);
00723 return TOK_WS;
00724 }
00725 YY_BREAK
00726 case 4:
00727 YY_RULE_SETUP
00728 #line 50 "./builtin-func.l"
00729 return check_c_mode(yytext[0]);
00730 YY_BREAK
00731 case 5:
00732 YY_RULE_SETUP
00733 #line 52 "./builtin-func.l"
00734 return TOK_LPB;
00735 YY_BREAK
00736 case 6:
00737 YY_RULE_SETUP
00738 #line 53 "./builtin-func.l"
00739 return TOK_RPB;
00740 YY_BREAK
00741 case 7:
00742 YY_RULE_SETUP
00743 #line 54 "./builtin-func.l"
00744 return TOK_LPPB;
00745 YY_BREAK
00746 case 8:
00747 YY_RULE_SETUP
00748 #line 55 "./builtin-func.l"
00749 return TOK_RPPB;
00750 YY_BREAK
00751 case 9:
00752 YY_RULE_SETUP
00753 #line 57 "./builtin-func.l"
00754 return check_c_mode(TOK_LPP);
00755 YY_BREAK
00756 case 10:
00757 YY_RULE_SETUP
00758 #line 58 "./builtin-func.l"
00759 return check_c_mode(TOK_RPP);
00760 YY_BREAK
00761 case 11:
00762 YY_RULE_SETUP
00763 #line 59 "./builtin-func.l"
00764 return check_c_mode(TOK_VAR_ARG);
00765 YY_BREAK
00766 case 12:
00767 YY_RULE_SETUP
00768 #line 60 "./builtin-func.l"
00769 return check_c_mode(TOK_FUNCTION);
00770 YY_BREAK
00771 case 13:
00772 YY_RULE_SETUP
00773 #line 61 "./builtin-func.l"
00774 return check_c_mode(TOK_REWRITER);
00775 YY_BREAK
00776 case 14:
00777 YY_RULE_SETUP
00778 #line 62 "./builtin-func.l"
00779 return check_c_mode(TOK_EVENT);
00780 YY_BREAK
00781 case 15:
00782 YY_RULE_SETUP
00783 #line 63 "./builtin-func.l"
00784 return check_c_mode(TOK_CONST);
00785 YY_BREAK
00786 case 16:
00787 YY_RULE_SETUP
00788 #line 64 "./builtin-func.l"
00789 return check_c_mode(TOK_ENUM);
00790 YY_BREAK
00791 case 17:
00792 YY_RULE_SETUP
00793 #line 66 "./builtin-func.l"
00794 return TOK_ARG;
00795 YY_BREAK
00796 case 18:
00797 YY_RULE_SETUP
00798 #line 67 "./builtin-func.l"
00799 return TOK_ARGS;
00800 YY_BREAK
00801 case 19:
00802 YY_RULE_SETUP
00803 #line 68 "./builtin-func.l"
00804 return TOK_ARGC;
00805 YY_BREAK
00806 case 20:
00807 YY_RULE_SETUP
00808 #line 70 "./builtin-func.l"
00809 return TOK_WRITE;
00810 YY_BREAK
00811 case 21:
00812 YY_RULE_SETUP
00813 #line 71 "./builtin-func.l"
00814 return TOK_PUSH;
00815 YY_BREAK
00816 case 22:
00817 YY_RULE_SETUP
00818 #line 72 "./builtin-func.l"
00819 return TOK_EOF;
00820 YY_BREAK
00821 case 23:
00822 YY_RULE_SETUP
00823 #line 73 "./builtin-func.l"
00824 return TOK_TRACE;
00825 YY_BREAK
00826 case 24:
00827 YY_RULE_SETUP
00828 #line 75 "./builtin-func.l"
00829 yylval.val = 1; return TOK_BOOL;
00830 YY_BREAK
00831 case 25:
00832 YY_RULE_SETUP
00833 #line 76 "./builtin-func.l"
00834 yylval.val = 0; return TOK_BOOL;
00835 YY_BREAK
00836 case 26:
00837 YY_RULE_SETUP
00838 #line 78 "./builtin-func.l"
00839 {
00840 yylval.str = copy_string(yytext);
00841 return TOK_ID;
00842 }
00843 YY_BREAK
00844 case 27:
00845 YY_RULE_SETUP
00846 #line 83 "./builtin-func.l"
00847 {
00848 int t = check_c_mode(TOK_ATTR);
00849
00850 if ( t == TOK_ATTR )
00851 {
00852 yylval.str = copy_string(yytext);
00853 return TOK_ATTR;
00854 }
00855 else
00856 return t;
00857 }
00858 YY_BREAK
00859 case 28:
00860 YY_RULE_SETUP
00861 #line 95 "./builtin-func.l"
00862 {
00863 yylval.str = copy_string(yytext);
00864 return TOK_CSTR;
00865 }
00866 YY_BREAK
00867 case 29:
00868 YY_RULE_SETUP
00869 #line 100 "./builtin-func.l"
00870 {
00871 yylval.val = yytext[0];
00872 return TOK_ATOM;
00873 }
00874 YY_BREAK
00875 case 30:
00876 YY_RULE_SETUP
00877 #line 104 "./builtin-func.l"
00878 ECHO;
00879 YY_BREAK
00880 #line 881 "bif_lex.cc"
00881 case YY_STATE_EOF(INITIAL):
00882 yyterminate();
00883
00884 case YY_END_OF_BUFFER:
00885 {
00886
00887 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
00888
00889
00890 *yy_cp = yy_hold_char;
00891 YY_RESTORE_YY_MORE_OFFSET
00892
00893 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
00894 {
00895
00896
00897
00898
00899
00900
00901
00902
00903
00904 yy_n_chars = yy_current_buffer->yy_n_chars;
00905 yy_current_buffer->yy_input_file = yyin;
00906 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
00907 }
00908
00909
00910
00911
00912
00913
00914
00915
00916 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
00917 {
00918 yy_state_type yy_next_state;
00919
00920 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
00921
00922 yy_current_state = yy_get_previous_state();
00923
00924
00925
00926
00927
00928
00929
00930
00931
00932
00933 yy_next_state = yy_try_NUL_trans( yy_current_state );
00934
00935 yy_bp = yytext_ptr + YY_MORE_ADJ;
00936
00937 if ( yy_next_state )
00938 {
00939
00940 yy_cp = ++yy_c_buf_p;
00941 yy_current_state = yy_next_state;
00942 goto yy_match;
00943 }
00944
00945 else
00946 {
00947 yy_cp = yy_c_buf_p;
00948 goto yy_find_action;
00949 }
00950 }
00951
00952 else switch ( yy_get_next_buffer() )
00953 {
00954 case EOB_ACT_END_OF_FILE:
00955 {
00956 yy_did_buffer_switch_on_eof = 0;
00957
00958 if ( yywrap() )
00959 {
00960
00961
00962
00963
00964
00965
00966
00967
00968
00969 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
00970
00971 yy_act = YY_STATE_EOF(YY_START);
00972 goto do_action;
00973 }
00974
00975 else
00976 {
00977 if ( ! yy_did_buffer_switch_on_eof )
00978 YY_NEW_FILE;
00979 }
00980 break;
00981 }
00982
00983 case EOB_ACT_CONTINUE_SCAN:
00984 yy_c_buf_p =
00985 yytext_ptr + yy_amount_of_matched_text;
00986
00987 yy_current_state = yy_get_previous_state();
00988
00989 yy_cp = yy_c_buf_p;
00990 yy_bp = yytext_ptr + YY_MORE_ADJ;
00991 goto yy_match;
00992
00993 case EOB_ACT_LAST_MATCH:
00994 yy_c_buf_p =
00995 &yy_current_buffer->yy_ch_buf[yy_n_chars];
00996
00997 yy_current_state = yy_get_previous_state();
00998
00999 yy_cp = yy_c_buf_p;
01000 yy_bp = yytext_ptr + YY_MORE_ADJ;
01001 goto yy_find_action;
01002 }
01003 break;
01004 }
01005
01006 default:
01007 YY_FATAL_ERROR(
01008 "fatal flex scanner internal error--no action found" );
01009 }
01010 }
01011 }
01012
01013
01014
01015
01016
01017
01018
01019
01020
01021
01022 static int yy_get_next_buffer()
01023 {
01024 register char *dest = yy_current_buffer->yy_ch_buf;
01025 register char *source = yytext_ptr;
01026 register int number_to_move, i;
01027 int ret_val;
01028
01029 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
01030 YY_FATAL_ERROR(
01031 "fatal flex scanner internal error--end of buffer missed" );
01032
01033 if ( yy_current_buffer->yy_fill_buffer == 0 )
01034 {
01035 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
01036 {
01037
01038
01039
01040 return EOB_ACT_END_OF_FILE;
01041 }
01042
01043 else
01044 {
01045
01046
01047
01048 return EOB_ACT_LAST_MATCH;
01049 }
01050 }
01051
01052
01053
01054
01055 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
01056
01057 for ( i = 0; i < number_to_move; ++i )
01058 *(dest++) = *(source++);
01059
01060 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
01061
01062
01063
01064 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
01065
01066 else
01067 {
01068 int num_to_read =
01069 yy_current_buffer->yy_buf_size - number_to_move - 1;
01070
01071 while ( num_to_read <= 0 )
01072 {
01073 #ifdef YY_USES_REJECT
01074 YY_FATAL_ERROR(
01075 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
01076 #else
01077
01078
01079 YY_BUFFER_STATE b = yy_current_buffer;
01080
01081 int yy_c_buf_p_offset =
01082 (int) (yy_c_buf_p - b->yy_ch_buf);
01083
01084 if ( b->yy_is_our_buffer )
01085 {
01086 int new_size = b->yy_buf_size * 2;
01087
01088 if ( new_size <= 0 )
01089 b->yy_buf_size += b->yy_buf_size / 8;
01090 else
01091 b->yy_buf_size *= 2;
01092
01093 b->yy_ch_buf = (char *)
01094
01095 yy_flex_realloc( (void *) b->yy_ch_buf,
01096 b->yy_buf_size + 2 );
01097 }
01098 else
01099
01100 b->yy_ch_buf = 0;
01101
01102 if ( ! b->yy_ch_buf )
01103 YY_FATAL_ERROR(
01104 "fatal error - scanner input buffer overflow" );
01105
01106 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
01107
01108 num_to_read = yy_current_buffer->yy_buf_size -
01109 number_to_move - 1;
01110 #endif
01111 }
01112
01113 if ( num_to_read > YY_READ_BUF_SIZE )
01114 num_to_read = YY_READ_BUF_SIZE;
01115
01116
01117 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
01118 yy_n_chars, num_to_read );
01119
01120 yy_current_buffer->yy_n_chars = yy_n_chars;
01121 }
01122
01123 if ( yy_n_chars == 0 )
01124 {
01125 if ( number_to_move == YY_MORE_ADJ )
01126 {
01127 ret_val = EOB_ACT_END_OF_FILE;
01128 yyrestart( yyin );
01129 }
01130
01131 else
01132 {
01133 ret_val = EOB_ACT_LAST_MATCH;
01134 yy_current_buffer->yy_buffer_status =
01135 YY_BUFFER_EOF_PENDING;
01136 }
01137 }
01138
01139 else
01140 ret_val = EOB_ACT_CONTINUE_SCAN;
01141
01142 yy_n_chars += number_to_move;
01143 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
01144 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
01145
01146 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
01147
01148 return ret_val;
01149 }
01150
01151
01152
01153
01154 static yy_state_type yy_get_previous_state()
01155 {
01156 register yy_state_type yy_current_state;
01157 register char *yy_cp;
01158
01159 yy_current_state = yy_start;
01160
01161 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
01162 {
01163 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
01164 if ( yy_accept[yy_current_state] )
01165 {
01166 yy_last_accepting_state = yy_current_state;
01167 yy_last_accepting_cpos = yy_cp;
01168 }
01169 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01170 {
01171 yy_current_state = (int) yy_def[yy_current_state];
01172 if ( yy_current_state >= 96 )
01173 yy_c = yy_meta[(unsigned int) yy_c];
01174 }
01175 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01176 }
01177
01178 return yy_current_state;
01179 }
01180
01181
01182
01183
01184
01185
01186
01187
01188 #ifdef YY_USE_PROTOS
01189 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
01190 #else
01191 static yy_state_type yy_try_NUL_trans( yy_current_state )
01192 yy_state_type yy_current_state;
01193 #endif
01194 {
01195 register int yy_is_jam;
01196 register char *yy_cp = yy_c_buf_p;
01197
01198 register YY_CHAR yy_c = 1;
01199 if ( yy_accept[yy_current_state] )
01200 {
01201 yy_last_accepting_state = yy_current_state;
01202 yy_last_accepting_cpos = yy_cp;
01203 }
01204 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01205 {
01206 yy_current_state = (int) yy_def[yy_current_state];
01207 if ( yy_current_state >= 96 )
01208 yy_c = yy_meta[(unsigned int) yy_c];
01209 }
01210 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01211 yy_is_jam = (yy_current_state == 95);
01212
01213 return yy_is_jam ? 0 : yy_current_state;
01214 }
01215
01216
01217 #ifndef YY_NO_UNPUT
01218 #ifdef YY_USE_PROTOS
01219 static void yyunput( int c, register char *yy_bp )
01220 #else
01221 static void yyunput( c, yy_bp )
01222 int c;
01223 register char *yy_bp;
01224 #endif
01225 {
01226 register char *yy_cp = yy_c_buf_p;
01227
01228
01229 *yy_cp = yy_hold_char;
01230
01231 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
01232 {
01233
01234 register int number_to_move = yy_n_chars + 2;
01235 register char *dest = &yy_current_buffer->yy_ch_buf[
01236 yy_current_buffer->yy_buf_size + 2];
01237 register char *source =
01238 &yy_current_buffer->yy_ch_buf[number_to_move];
01239
01240 while ( source > yy_current_buffer->yy_ch_buf )
01241 *--dest = *--source;
01242
01243 yy_cp += (int) (dest - source);
01244 yy_bp += (int) (dest - source);
01245 yy_current_buffer->yy_n_chars =
01246 yy_n_chars = yy_current_buffer->yy_buf_size;
01247
01248 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
01249 YY_FATAL_ERROR( "flex scanner push-back overflow" );
01250 }
01251
01252 *--yy_cp = (char) c;
01253
01254
01255 yytext_ptr = yy_bp;
01256 yy_hold_char = *yy_cp;
01257 yy_c_buf_p = yy_cp;
01258 }
01259 #endif
01260
01261
01262 #ifndef YY_NO_INPUT
01263 #ifdef __cplusplus
01264 static int yyinput()
01265 #else
01266 static int input()
01267 #endif
01268 {
01269 int c;
01270
01271 *yy_c_buf_p = yy_hold_char;
01272
01273 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
01274 {
01275
01276
01277
01278
01279 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
01280
01281 *yy_c_buf_p = '\0';
01282
01283 else
01284 {
01285 int offset = yy_c_buf_p - yytext_ptr;
01286 ++yy_c_buf_p;
01287
01288 switch ( yy_get_next_buffer() )
01289 {
01290 case EOB_ACT_LAST_MATCH:
01291
01292
01293
01294
01295
01296
01297
01298
01299
01300
01301
01302 yyrestart( yyin );
01303
01304
01305
01306 case EOB_ACT_END_OF_FILE:
01307 {
01308 if ( yywrap() )
01309 return EOF;
01310
01311 if ( ! yy_did_buffer_switch_on_eof )
01312 YY_NEW_FILE;
01313 #ifdef __cplusplus
01314 return yyinput();
01315 #else
01316 return input();
01317 #endif
01318 }
01319
01320 case EOB_ACT_CONTINUE_SCAN:
01321 yy_c_buf_p = yytext_ptr + offset;
01322 break;
01323 }
01324 }
01325 }
01326
01327 c = *(unsigned char *) yy_c_buf_p;
01328 *yy_c_buf_p = '\0';
01329 yy_hold_char = *++yy_c_buf_p;
01330
01331
01332 return c;
01333 }
01334 #endif
01335
01336 #ifdef YY_USE_PROTOS
01337 void yyrestart( FILE *input_file )
01338 #else
01339 void yyrestart( input_file )
01340 FILE *input_file;
01341 #endif
01342 {
01343 if ( ! yy_current_buffer )
01344 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
01345
01346 yy_init_buffer( yy_current_buffer, input_file );
01347 yy_load_buffer_state();
01348 }
01349
01350
01351 #ifdef YY_USE_PROTOS
01352 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
01353 #else
01354 void yy_switch_to_buffer( new_buffer )
01355 YY_BUFFER_STATE new_buffer;
01356 #endif
01357 {
01358 if ( yy_current_buffer == new_buffer )
01359 return;
01360
01361 if ( yy_current_buffer )
01362 {
01363
01364 *yy_c_buf_p = yy_hold_char;
01365 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
01366 yy_current_buffer->yy_n_chars = yy_n_chars;
01367 }
01368
01369 yy_current_buffer = new_buffer;
01370 yy_load_buffer_state();
01371
01372
01373
01374
01375
01376
01377 yy_did_buffer_switch_on_eof = 1;
01378 }
01379
01380
01381 #ifdef YY_USE_PROTOS
01382 void yy_load_buffer_state( void )
01383 #else
01384 void yy_load_buffer_state()
01385 #endif
01386 {
01387 yy_n_chars = yy_current_buffer->yy_n_chars;
01388 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
01389 yyin = yy_current_buffer->yy_input_file;
01390 yy_hold_char = *yy_c_buf_p;
01391 }
01392
01393
01394 #ifdef YY_USE_PROTOS
01395 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
01396 #else
01397 YY_BUFFER_STATE yy_create_buffer( file, size )
01398 FILE *file;
01399 int size;
01400 #endif
01401 {
01402 YY_BUFFER_STATE b;
01403
01404 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
01405 if ( ! b )
01406 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
01407
01408 b->yy_buf_size = size;
01409
01410
01411
01412
01413 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
01414 if ( ! b->yy_ch_buf )
01415 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
01416
01417 b->yy_is_our_buffer = 1;
01418
01419 yy_init_buffer( b, file );
01420
01421 return b;
01422 }
01423
01424
01425 #ifdef YY_USE_PROTOS
01426 void yy_delete_buffer( YY_BUFFER_STATE b )
01427 #else
01428 void yy_delete_buffer( b )
01429 YY_BUFFER_STATE b;
01430 #endif
01431 {
01432 if ( ! b )
01433 return;
01434
01435 if ( b == yy_current_buffer )
01436 yy_current_buffer = (YY_BUFFER_STATE) 0;
01437
01438 if ( b->yy_is_our_buffer )
01439 yy_flex_free( (void *) b->yy_ch_buf );
01440
01441 yy_flex_free( (void *) b );
01442 }
01443
01444
01445
01446 #ifdef YY_USE_PROTOS
01447 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
01448 #else
01449 void yy_init_buffer( b, file )
01450 YY_BUFFER_STATE b;
01451 FILE *file;
01452 #endif
01453
01454
01455 {
01456 yy_flush_buffer( b );
01457
01458 b->yy_input_file = file;
01459 b->yy_fill_buffer = 1;
01460
01461 #if YY_ALWAYS_INTERACTIVE
01462 b->yy_is_interactive = 1;
01463 #else
01464 #if YY_NEVER_INTERACTIVE
01465 b->yy_is_interactive = 0;
01466 #else
01467 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
01468 #endif
01469 #endif
01470 }
01471
01472
01473 #ifdef YY_USE_PROTOS
01474 void yy_flush_buffer( YY_BUFFER_STATE b )
01475 #else
01476 void yy_flush_buffer( b )
01477 YY_BUFFER_STATE b;
01478 #endif
01479
01480 {
01481 if ( ! b )
01482 return;
01483
01484 b->yy_n_chars = 0;
01485
01486
01487
01488
01489
01490 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
01491 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
01492
01493 b->yy_buf_pos = &b->yy_ch_buf[0];
01494
01495 b->yy_at_bol = 1;
01496 b->yy_buffer_status = YY_BUFFER_NEW;
01497
01498 if ( b == yy_current_buffer )
01499 yy_load_buffer_state();
01500 }
01501
01502
01503 #ifndef YY_NO_SCAN_BUFFER
01504 #ifdef YY_USE_PROTOS
01505 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
01506 #else
01507 YY_BUFFER_STATE yy_scan_buffer( base, size )
01508 char *base;
01509 yy_size_t size;
01510 #endif
01511 {
01512 YY_BUFFER_STATE b;
01513
01514 if ( size < 2 ||
01515 base[size-2] != YY_END_OF_BUFFER_CHAR ||
01516 base[size-1] != YY_END_OF_BUFFER_CHAR )
01517
01518 return 0;
01519
01520 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
01521