src/common/lex.yy.cc

00001 /* A lexical scanner generated by flex*/
00002 
00003 /* Scanner skeleton version:
00004  * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
00005  */
00006 
00007 #define FLEX_SCANNER
00008 #define YY_FLEX_MAJOR_VERSION 2
00009 #define YY_FLEX_MINOR_VERSION 5
00010 
00011 #include <stdio.h>
00012 #include <unistd.h>
00013 
00014 
00015 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
00016 #ifdef c_plusplus
00017 #ifndef __cplusplus
00018 #define __cplusplus
00019 #endif
00020 #endif
00021 
00022 
00023 #ifdef __cplusplus
00024 
00025 #include <stdlib.h>
00026 
00027 /* Use prototypes in function declarations. */
00028 #define YY_USE_PROTOS
00029 
00030 /* The "const" storage-class-modifier is valid. */
00031 #define YY_USE_CONST
00032 
00033 #else   /* ! __cplusplus */
00034 
00035 #if __STDC__
00036 
00037 #define YY_USE_PROTOS
00038 #define YY_USE_CONST
00039 
00040 #endif  /* __STDC__ */
00041 #endif  /* ! __cplusplus */
00042 
00043 #ifdef __TURBOC__
00044  #pragma warn -rch
00045  #pragma warn -use
00046 #include <io.h>
00047 #include <stdlib.h>
00048 #define YY_USE_CONST
00049 #define YY_USE_PROTOS
00050 #endif
00051 
00052 #ifdef YY_USE_CONST
00053 #define yyconst const
00054 #else
00055 #define yyconst
00056 #endif
00057 
00058 
00059 #ifdef YY_USE_PROTOS
00060 #define YY_PROTO(proto) proto
00061 #else
00062 #define YY_PROTO(proto) ()
00063 #endif
00064 
00065 /* Returned upon end-of-file. */
00066 #define YY_NULL 0
00067 
00068 /* Promotes a possibly negative, possibly signed char to an unsigned
00069  * integer for use as an array index.  If the signed char is negative,
00070  * we want to instead treat it as an 8-bit unsigned char, hence the
00071  * double cast.
00072  */
00073 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
00074 
00075 /* Enter a start condition.  This macro really ought to take a parameter,
00076  * but we do it the disgusting crufty way forced on us by the ()-less
00077  * definition of BEGIN.
00078  */
00079 #define BEGIN yy_start = 1 + 2 *
00080 
00081 /* Translate the current start state into a value that can be later handed
00082  * to BEGIN to return to the state.  The YYSTATE alias is for lex
00083  * compatibility.
00084  */
00085 #define YY_START ((yy_start - 1) / 2)
00086 #define YYSTATE YY_START
00087 
00088 /* Action number for EOF rule of a given start state. */
00089 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
00090 
00091 /* Special action meaning "start processing a new file". */
00092 #define YY_NEW_FILE yyrestart( yyin )
00093 
00094 #define YY_END_OF_BUFFER_CHAR 0
00095 
00096 /* Size of default input buffer. */
00097 #define YY_BUF_SIZE 16384
00098 
00099 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00100 
00101 extern int yyleng;
00102 extern FILE *yyin, *yyout;
00103 
00104 #define EOB_ACT_CONTINUE_SCAN 0
00105 #define EOB_ACT_END_OF_FILE 1
00106 #define EOB_ACT_LAST_MATCH 2
00107 
00108 /* The funky do-while in the following #define is used to turn the definition
00109  * int a single C statement (which needs a semi-colon terminator).  This
00110  * avoids problems with code like:
00111  *
00112  *      if ( condition_holds )
00113  *              yyless( 5 );
00114  *      else
00115  *              do_something_else();
00116  *
00117  * Prior to using the do-while the compiler would get upset at the
00118  * "else" because it interpreted the "if" statement as being all
00119  * done when it reached the ';' after the yyless() call.
00120  */
00121 
00122 /* Return all but the first 'n' matched characters back to the input stream. */
00123 
00124 #define yyless(n) \
00125         do \
00126                 { \
00127                 /* Undo effects of setting up yytext. */ \
00128                 *yy_cp = yy_hold_char; \
00129                 YY_RESTORE_YY_MORE_OFFSET \
00130                 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
00131                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
00132                 } \
00133         while ( 0 )
00134 
00135 #define unput(c) yyunput( c, yytext_ptr )
00136 
00137 /* Some routines like yy_flex_realloc() are emitted as static but are
00138    not called by all lexers. This generates warnings in some compilers,
00139    notably GCC. Arrange to suppress these. */
00140 #ifdef __GNUC__
00141 #define YY_MAY_BE_UNUSED __attribute__((unused))
00142 #else
00143 #define YY_MAY_BE_UNUSED
00144 #endif
00145 
00146 /* The following is because we cannot portably get our hands on size_t
00147  * (without autoconf's help, which isn't available because we want
00148  * flex-generated scanners to compile on their own).
00149  */
00150 typedef unsigned int yy_size_t;
00151 
00152 
00153 struct yy_buffer_state
00154         {
00155         FILE *yy_input_file;
00156 
00157         char *yy_ch_buf;                /* input buffer */
00158         char *yy_buf_pos;               /* current position in input buffer */
00159 
00160         /* Size of input buffer in bytes, not including room for EOB
00161          * characters.
00162          */
00163         yy_size_t yy_buf_size;
00164 
00165         /* Number of characters read into yy_ch_buf, not including EOB
00166          * characters.
00167          */
00168         int yy_n_chars;
00169 
00170         /* Whether we "own" the buffer - i.e., we know we created it,
00171          * and can realloc() it to grow it, and should free() it to
00172          * delete it.
00173          */
00174         int yy_is_our_buffer;
00175 
00176         /* Whether this is an "interactive" input source; if so, and
00177          * if we're using stdio for input, then we want to use getc()
00178          * instead of fread(), to make sure we stop fetching input after
00179          * each newline.
00180          */
00181         int yy_is_interactive;
00182 
00183         /* Whether we're considered to be at the beginning of a line.
00184          * If so, '^' rules will be active on the next match, otherwise
00185          * not.
00186          */
00187         int yy_at_bol;
00188 
00189         /* Whether to try to fill the input buffer when we reach the
00190          * end of it.
00191          */
00192         int yy_fill_buffer;
00193 
00194         int yy_buffer_status;
00195 #define YY_BUFFER_NEW 0
00196 #define YY_BUFFER_NORMAL 1
00197         /* When an EOF's been seen but there's still some text to process
00198          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
00199          * shouldn't try reading from the input source any more.  We might
00200          * still have a bunch of tokens to match, though, because of
00201          * possible backing-up.
00202          *
00203          * When we actually see the EOF, we change the status to "new"
00204          * (via yyrestart()), so that the user can continue scanning by
00205          * just pointing yyin at a new input file.
00206          */
00207 #define YY_BUFFER_EOF_PENDING 2
00208         };
00209 
00210 static YY_BUFFER_STATE yy_current_buffer = 0;
00211 
00212 /* We provide macros for accessing buffer states in case in the
00213  * future we want to put the buffer states in a more general
00214  * "scanner state".
00215  */
00216 #define YY_CURRENT_BUFFER yy_current_buffer
00217 
00218 
00219 /* yy_hold_char holds the character lost when yytext is formed. */
00220 static char yy_hold_char;
00221 
00222 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
00223 
00224 
00225 int yyleng;
00226 
00227 /* Points to current character in buffer. */
00228 static char *yy_c_buf_p = (char *) 0;
00229 static int yy_init = 1;         /* whether we need to initialize */
00230 static int yy_start = 0;        /* start state number */
00231 
00232 /* Flag which is used to allow yywrap()'s to do buffer switches
00233  * instead of setting up a fresh yyin.  A bit of a hack ...
00234  */
00235 static int yy_did_buffer_switch_on_eof;
00236 
00237 void yyrestart YY_PROTO(( FILE *input_file ));
00238 
00239 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
00240 void yy_load_buffer_state YY_PROTO(( void ));
00241 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
00242 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
00243 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
00244 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
00245 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
00246 
00247 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
00248 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
00249 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
00250 
00251 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
00252 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) YY_MAY_BE_UNUSED;
00253 static void yy_flex_free YY_PROTO(( void * ));
00254 
00255 #define yy_new_buffer yy_create_buffer
00256 
00257 #define yy_set_interactive(is_interactive) \
00258         { \
00259         if ( ! yy_current_buffer ) \
00260                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
00261         yy_current_buffer->yy_is_interactive = is_interactive; \
00262         }
00263 
00264 #define yy_set_bol(at_bol) \
00265         { \
00266         if ( ! yy_current_buffer ) \
00267                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
00268         yy_current_buffer->yy_at_bol = at_bol; \
00269         }
00270 
00271 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
00272 
00273 
00274 #define yywrap() 1
00275 #define YY_SKIP_YYWRAP
00276 typedef unsigned char YY_CHAR;
00277 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
00278 typedef int yy_state_type;
00279 extern char *yytext;
00280 #define yytext_ptr yytext
00281 
00282 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
00283 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
00284 static int yy_get_next_buffer YY_PROTO(( void ));
00285 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
00286 
00287 /* Done after the current pattern has been matched and before the
00288  * corresponding action - sets up yytext.
00289  */
00290 #define YY_DO_BEFORE_ACTION \
00291         yytext_ptr = yy_bp; \
00292         yyleng = (int) (yy_cp - yy_bp); \
00293         yy_hold_char = *yy_cp; \
00294         *yy_cp = '\0'; \
00295         yy_c_buf_p = yy_cp;
00296 
00297 #define YY_NUM_RULES 15
00298 #define YY_END_OF_BUFFER 16
00299 static yyconst short int yy_accept[44] =
00300     {   0,
00301         0,    0,   16,   14,   12,   13,   14,   10,    1,   14,
00302        14,   14,   14,    0,   11,   11,    0,    4,    1,    0,
00303         9,    0,    0,    0,    0,    3,    0,    0,    4,    1,
00304         0,    8,    6,    7,    0,    3,    0,    2,    5,    2,
00305         2,    2,    0
00306     } ;
00307 
00308 static yyconst int yy_ec[256] =
00309     {   0,
00310         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
00311         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00312         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00313         1,    2,    1,    1,    1,    1,    4,    1,    1,    1,
00314         1,    5,    6,    1,    7,    8,    9,   10,   10,   10,
00315        10,   10,   10,   10,   10,   10,   10,    1,    1,    1,
00316         1,    1,    1,    1,   11,   11,   11,   11,   11,   11,
00317        11,   11,   12,   11,   11,   11,   11,   11,   11,   13,
00318        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
00319         1,    1,    1,   14,    1,    1,   11,   11,   15,   11,
00320 
00321        16,   11,   17,   11,   18,   11,   11,   19,   11,   20,
00322        21,   11,   22,   23,   24,   25,   11,   11,   11,   11,
00323        11,   11,    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         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
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 
00332         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00333         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00334         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00335         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00336         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00337         1,    1,    1,    1,    1
00338     } ;
00339 
00340 static yyconst int yy_meta[26] =
00341     {   0,
00342         1,    1,    2,    1,    1,    1,    1,    1,    1,    3,
00343         3,    3,    3,    1,    3,    3,    3,    3,    3,    3,
00344         3,    3,    3,    3,    3
00345     } ;
00346 
00347 static yyconst short int yy_base[46] =
00348     {   0,
00349         0,    0,   84,   67,   66,   85,   65,   64,   18,   15,
00350        14,   16,   20,   33,    0,   37,   31,   35,   38,   49,
00351        85,   55,   61,   57,   53,   65,   42,   43,   47,   52,
00352        60,   85,   85,   85,   49,   62,   63,   54,   85,   51,
00353        43,   23,   85,   26,   70
00354     } ;
00355 
00356 static yyconst short int yy_def[46] =
00357     {   0,
00358        43,    1,   43,   43,   43,   43,   44,   43,   45,   43,
00359        43,   43,   43,   43,   44,   44,   43,   43,   45,   43,
00360        43,   43,   43,   43,   43,   43,   43,   43,   43,   45,
00361        20,   43,   43,   43,   43,   43,   43,   43,   43,   43,
00362        43,   43,    0,   43,   43
00363     } ;
00364 
00365 static yyconst short int yy_nxt[111] =
00366     {   0,
00367         4,    5,    6,    7,    8,    8,    8,    4,    8,    9,
00368         4,    4,   10,    8,   11,    4,    4,    4,   12,    4,
00369         4,    4,    4,   13,    4,   18,   21,   19,   15,   14,
00370        14,   14,   42,   20,   22,   14,   23,   24,   26,   26,
00371        27,   25,   26,   26,   29,   18,   28,   30,   38,   38,
00372        28,   27,   41,   31,   26,   26,   29,   37,   27,   18,
00373        42,   30,   37,   41,   28,   38,   38,   31,   40,   40,
00374        17,   36,   17,   39,   36,   35,   34,   33,   32,   14,
00375        16,   14,   14,   43,    3,   43,   43,   43,   43,   43,
00376        43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
00377 
00378        43,   43,   43,   43,   43,   43,   43,   43,   43,   43
00379     } ;
00380 
00381 static yyconst short int yy_chk[111] =
00382     {   0,
00383         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00384         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00385         1,    1,    1,    1,    1,    9,   10,    9,   44,   11,
00386        10,   12,   42,    9,   11,   13,   12,   13,   14,   14,
00387        17,   13,   16,   16,   18,   19,   17,   19,   28,   28,
00388        18,   27,   41,   19,   20,   20,   29,   27,   20,   30,
00389        40,   30,   29,   38,   20,   31,   31,   30,   37,   37,
00390        45,   36,   45,   35,   26,   25,   24,   23,   22,    8,
00391         7,    5,    4,    3,   43,   43,   43,   43,   43,   43,
00392        43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
00393 
00394        43,   43,   43,   43,   43,   43,   43,   43,   43,   43
00395     } ;
00396 
00397 static yy_state_type yy_last_accepting_state;
00398 static char *yy_last_accepting_cpos;
00399 
00400 /* The intent behind this definition is that it'll catch
00401  * any uses of REJECT which flex missed.
00402  */
00403 #define REJECT reject_used_but_not_detected
00404 #define yymore() yymore_used_but_not_detected
00405 #define YY_MORE_ADJ 0
00406 #define YY_RESTORE_YY_MORE_OFFSET
00407 char *yytext;
00408 #line 1 "feature_parse.l"
00409 #define INITIAL 0
00410 #line 2 "feature_parse.l"
00411 #include <stdlib.h>
00412 #include <string.h>
00413 #include <math.h>
00414 #include "open_prospect.h"
00415 #include "feature_parse.tab.h"
00416 
00417 #line 418 "lex.yy.c"
00418 
00419 /* Macros after this point can all be overridden by user definitions in
00420  * section 1.
00421  */
00422 
00423 #ifndef YY_SKIP_YYWRAP
00424 #ifdef __cplusplus
00425 extern "C" int yywrap YY_PROTO(( void ));
00426 #else
00427 extern int yywrap YY_PROTO(( void ));
00428 #endif
00429 #endif
00430 
00431 #ifndef YY_NO_UNPUT
00432 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
00433 #endif
00434 
00435 #ifndef yytext_ptr
00436 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
00437 #endif
00438 
00439 #ifdef YY_NEED_STRLEN
00440 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
00441 #endif
00442 
00443 #ifndef YY_NO_INPUT
00444 #ifdef __cplusplus
00445 static int yyinput YY_PROTO(( void ));
00446 #else
00447 static int input YY_PROTO(( void ));
00448 #endif
00449 #endif
00450 
00451 #if YY_STACK_USED
00452 static int yy_start_stack_ptr = 0;
00453 static int yy_start_stack_depth = 0;
00454 static int *yy_start_stack = 0;
00455 #ifndef YY_NO_PUSH_STATE
00456 static void yy_push_state YY_PROTO(( int new_state ));
00457 #endif
00458 #ifndef YY_NO_POP_STATE
00459 static void yy_pop_state YY_PROTO(( void ));
00460 #endif
00461 #ifndef YY_NO_TOP_STATE
00462 static int yy_top_state YY_PROTO(( void ));
00463 #endif
00464 
00465 #else
00466 #define YY_NO_PUSH_STATE 1
00467 #define YY_NO_POP_STATE 1
00468 #define YY_NO_TOP_STATE 1
00469 #endif
00470 
00471 #ifdef YY_MALLOC_DECL
00472 YY_MALLOC_DECL
00473 #else
00474 #if __STDC__
00475 #ifndef __cplusplus
00476 #include <stdlib.h>
00477 #endif
00478 #else
00479 /* Just try to get by without declaring the routines.  This will fail
00480  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
00481  * or sizeof(void*) != sizeof(int).
00482  */
00483 #endif
00484 #endif
00485 
00486 /* Amount of stuff to slurp up with each read. */
00487 #ifndef YY_READ_BUF_SIZE
00488 #define YY_READ_BUF_SIZE 8192
00489 #endif
00490 
00491 /* Copy whatever the last rule matched to the standard output. */
00492 
00493 #ifndef ECHO
00494 /* This used to be an fputs(), but since the string might contain NUL's,
00495  * we now use fwrite().
00496  */
00497 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
00498 #endif
00499 
00500 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
00501  * is returned in "result".
00502  */
00503 #ifndef YY_INPUT
00504 #define YY_INPUT(buf,result,max_size) \
00505         if ( yy_current_buffer->yy_is_interactive ) \
00506                 { \
00507                 int c = '*', n; \
00508                 for ( n = 0; n < max_size && \
00509                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
00510                         buf[n] = (char) c; \
00511                 if ( c == '\n' ) \
00512                         buf[n++] = (char) c; \
00513                 if ( c == EOF && ferror( yyin ) ) \
00514                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
00515                 result = n; \
00516                 } \
00517         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
00518                   && ferror( yyin ) ) \
00519                 YY_FATAL_ERROR( "input in flex scanner failed" );
00520 #endif
00521 
00522 /* No semi-colon after return; correct usage is to write "yyterminate();" -
00523  * we don't want an extra ';' after the "return" because that will cause
00524  * some compilers to complain about unreachable statements.
00525  */
00526 #ifndef yyterminate
00527 #define yyterminate() return YY_NULL
00528 #endif
00529 
00530 /* Number of entries by which start-condition stack grows. */
00531 #ifndef YY_START_STACK_INCR
00532 #define YY_START_STACK_INCR 25
00533 #endif
00534 
00535 /* Report a fatal error. */
00536 #ifndef YY_FATAL_ERROR
00537 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
00538 #endif
00539 
00540 /* Default declaration of generated scanner - a define so the user can
00541  * easily add parameters.
00542  */
00543 #ifndef YY_DECL
00544 #define YY_DECL int yylex YY_PROTO(( void ))
00545 #endif
00546 
00547 /* Code executed at the beginning of each rule, after yytext and yyleng
00548  * have been set up.
00549  */
00550 #ifndef YY_USER_ACTION
00551 #define YY_USER_ACTION
00552 #endif
00553 
00554 /* Code executed at the end of each rule. */
00555 #ifndef YY_BREAK
00556 #define YY_BREAK break;
00557 #endif
00558 
00559 #define YY_RULE_SETUP \
00560         YY_USER_ACTION
00561 
00562 YY_DECL
00563         {
00564         register yy_state_type yy_current_state;
00565         register char *yy_cp = NULL, *yy_bp = NULL;
00566         register int yy_act;
00567 
00568 #line 15 "feature_parse.l"
00569 
00570 
00571 #line 572 "lex.yy.c"
00572 
00573         if ( yy_init )
00574                 {
00575                 yy_init = 0;
00576 
00577 #ifdef YY_USER_INIT
00578                 YY_USER_INIT;
00579 #endif
00580 
00581                 if ( ! yy_start )
00582                         yy_start = 1;   /* first start state */
00583 
00584                 if ( ! yyin )
00585                         yyin = stdin;
00586 
00587                 if ( ! yyout )
00588                         yyout = stdout;
00589 
00590                 if ( ! yy_current_buffer )
00591                         yy_current_buffer =
00592                                 yy_create_buffer( yyin, YY_BUF_SIZE );
00593 
00594                 yy_load_buffer_state();
00595                 }
00596 
00597         while ( 1 )             /* loops until end-of-file is reached */
00598                 {
00599                 yy_cp = yy_c_buf_p;
00600 
00601                 /* Support of yytext. */
00602                 *yy_cp = yy_hold_char;
00603 
00604                 /* yy_bp points to the position in yy_ch_buf of the start of
00605                  * the current run.
00606                  */
00607                 yy_bp = yy_cp;
00608 
00609                 yy_current_state = yy_start;
00610 yy_match:
00611                 do
00612                         {
00613                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
00614                         if ( yy_accept[yy_current_state] )
00615                                 {
00616                                 yy_last_accepting_state = yy_current_state;
00617                                 yy_last_accepting_cpos = yy_cp;
00618                                 }
00619                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
00620                                 {
00621                                 yy_current_state = (int) yy_def[yy_current_state];
00622                                 if ( yy_current_state >= 44 )
00623                                         yy_c = yy_meta[(unsigned int) yy_c];
00624                                 }
00625                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
00626                         ++yy_cp;
00627                         }
00628                 while ( yy_base[yy_current_state] != 85 );
00629 
00630 yy_find_action:
00631                 yy_act = yy_accept[yy_current_state];
00632                 if ( yy_act == 0 )
00633                         { /* have to back up */
00634                         yy_cp = yy_last_accepting_cpos;
00635                         yy_current_state = yy_last_accepting_state;
00636                         yy_act = yy_accept[yy_current_state];
00637                         }
00638 
00639                 YY_DO_BEFORE_ACTION;
00640 
00641 
00642 do_action:      /* This label is used only to access EOF actions. */
00643 
00644 
00645                 switch ( yy_act )
00646         { /* beginning of action switch */
00647                         case 0: /* must back up */
00648                         /* undo the effects of YY_DO_BEFORE_ACTION */
00649                         *yy_cp = yy_hold_char;
00650                         yy_cp = yy_last_accepting_cpos;
00651                         yy_current_state = yy_last_accepting_state;
00652                         goto yy_find_action;
00653 
00654 case 1:
00655 YY_RULE_SETUP
00656 #line 17 "feature_parse.l"
00657 { yylval.dval = atof((char *)yytext); 
00658                                                   //printf("num: %s\n", yytext );
00659                                               return FL_NUM; 
00660                         }
00661         YY_BREAK
00662 case 2:
00663 YY_RULE_SETUP
00664 #line 22 "feature_parse.l"
00665 { 
00666                                                         yylval.dval = atof((char *)yytext); 
00667                                                         //printf("num: %s \t %lg\n", yytext, yylval.dval );
00668                                                 return FL_NUM; 
00669                         }
00670         YY_BREAK
00671 case 3:
00672 YY_RULE_SETUP
00673 #line 28 "feature_parse.l"
00674 { 
00675                                                         yylval.dval = atof((char *)yytext); 
00676                                                         //printf("num: %s \t %lg\n", yytext, yylval.dval );
00677                                                 return FL_NUM; 
00678                         }
00679         YY_BREAK
00680 case 4:
00681 YY_RULE_SETUP
00682 #line 34 "feature_parse.l"
00683 { 
00684                                                         yylval.dval = atof((char *)yytext); 
00685                                                         //printf("num: %s \t %lg\n", yytext, yylval.dval );
00686                                                 return FL_NUM; 
00687                         }
00688         YY_BREAK
00689 case 5:
00690 YY_RULE_SETUP
00691 #line 40 "feature_parse.l"
00692 { return FL_SQRT; }
00693         YY_BREAK
00694 case 6:
00695 YY_RULE_SETUP
00696 #line 41 "feature_parse.l"
00697 { return FL_LOG;  }
00698         YY_BREAK
00699 case 7:
00700 YY_RULE_SETUP
00701 #line 42 "feature_parse.l"
00702 { return FL_SIN;  }
00703         YY_BREAK
00704 case 8:
00705 YY_RULE_SETUP
00706 #line 43 "feature_parse.l"
00707 { return FL_COS;  }
00708         YY_BREAK
00709 case 9:
00710 YY_RULE_SETUP
00711 #line 45 "feature_parse.l"
00712 {       yylval.dval = M_PI;
00713                                                         return FL_NUM;
00714                                                 }
00715         YY_BREAK
00716 case 10:
00717 YY_RULE_SETUP
00718 #line 49 "feature_parse.l"
00719 { 
00720                                                         //printf("op: %c\n", yytext[0]); 
00721                                                         return yytext[0]; 
00722                                            }
00723         YY_BREAK
00724 case 11:
00725 YY_RULE_SETUP
00726 #line 55 "feature_parse.l"
00727 {       
00728                                                         char *tmp = strdup( &yytext[1] );
00729                                                         yylval.ival = ThreadFeatureParse::GetFeatureID( tmp );
00730                                                         //printf("Thread_feature %s: %lf\n", yytext, yylval.dval);
00731                                                         free(tmp);
00732                                                         return FL_GET;
00733                                                 }
00734         YY_BREAK
00735 case 12:
00736 YY_RULE_SETUP
00737 #line 63 "feature_parse.l"
00738 ;
00739         YY_BREAK
00740 case 13:
00741 YY_RULE_SETUP
00742 #line 66 "feature_parse.l"
00743 { return yytext[0]; }
00744         YY_BREAK
00745 case 14:
00746 YY_RULE_SETUP
00747 #line 68 "feature_parse.l"
00748 {       
00749                                                         //printf("char: %c\n", yytext[0]); 
00750                                                         return yytext[0]; 
00751                         }
00752         YY_BREAK
00753 case 15:
00754 YY_RULE_SETUP
00755 #line 72 "feature_parse.l"
00756 ECHO;
00757         YY_BREAK
00758 #line 759 "lex.yy.c"
00759 case YY_STATE_EOF(INITIAL):
00760         yyterminate();
00761 
00762         case YY_END_OF_BUFFER:
00763                 {
00764                 /* Amount of text matched not including the EOB char. */
00765                 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
00766 
00767                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
00768                 *yy_cp = yy_hold_char;
00769                 YY_RESTORE_YY_MORE_OFFSET
00770 
00771                 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
00772                         {
00773                         /* We're scanning a new file or input source.  It's
00774                          * possible that this happened because the user
00775                          * just pointed yyin at a new source and called
00776                          * yylex().  If so, then we have to assure
00777                          * consistency between yy_current_buffer and our
00778                          * globals.  Here is the right place to do so, because
00779                          * this is the first action (other than possibly a
00780                          * back-up) that will match for the new input source.
00781                          */
00782                         yy_n_chars = yy_current_buffer->yy_n_chars;
00783                         yy_current_buffer->yy_input_file = yyin;
00784                         yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
00785                         }
00786 
00787                 /* Note that here we test for yy_c_buf_p "<=" to the position
00788                  * of the first EOB in the buffer, since yy_c_buf_p will
00789                  * already have been incremented past the NUL character
00790                  * (since all states make transitions on EOB to the
00791                  * end-of-buffer state).  Contrast this with the test
00792                  * in input().
00793                  */
00794                 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
00795                         { /* This was really a NUL. */
00796                         yy_state_type yy_next_state;
00797 
00798                         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
00799 
00800                         yy_current_state = yy_get_previous_state();
00801 
00802                         /* Okay, we're now positioned to make the NUL
00803                          * transition.  We couldn't have
00804                          * yy_get_previous_state() go ahead and do it
00805                          * for us because it doesn't know how to deal
00806                          * with the possibility of jamming (and we don't
00807                          * want to build jamming into it because then it
00808                          * will run more slowly).
00809                          */
00810 
00811                         yy_next_state = yy_try_NUL_trans( yy_current_state );
00812 
00813                         yy_bp = yytext_ptr + YY_MORE_ADJ;
00814 
00815                         if ( yy_next_state )
00816                                 {
00817                                 /* Consume the NUL. */
00818                                 yy_cp = ++yy_c_buf_p;
00819                                 yy_current_state = yy_next_state;
00820                                 goto yy_match;
00821                                 }
00822 
00823                         else
00824                                 {
00825                                 yy_cp = yy_c_buf_p;
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                                         /* Note: because we've taken care in
00839                                          * yy_get_next_buffer() to have set up
00840                                          * yytext, we can now set up
00841                                          * yy_c_buf_p so that if some total
00842                                          * hoser (like flex itself) wants to
00843                                          * call the scanner after we return the
00844                                          * YY_NULL, it'll still work - another
00845                                          * YY_NULL will get returned.
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->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         } /* end of action switch */
00888                 } /* end of scanning one token */
00889         } /* end of yylex */
00890 
00891 
00892 /* yy_get_next_buffer - try to read in a new buffer
00893  *
00894  * Returns a code representing an action:
00895  *      EOB_ACT_LAST_MATCH -
00896  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
00897  *      EOB_ACT_END_OF_FILE - end of file
00898  */
00899 
00900 static int yy_get_next_buffer()
00901         {
00902         register char *dest = yy_current_buffer->yy_ch_buf;
00903         register char *source = yytext_ptr;
00904         register int number_to_move, i;
00905         int ret_val;
00906 
00907         if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
00908                 YY_FATAL_ERROR(
00909                 "fatal flex scanner internal error--end of buffer missed" );
00910 
00911         if ( yy_current_buffer->yy_fill_buffer == 0 )
00912                 { /* Don't try to fill the buffer, so this is an EOF. */
00913                 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
00914                         {
00915                         /* We matched a single character, the EOB, so
00916                          * treat this as a final EOF.
00917                          */
00918                         return EOB_ACT_END_OF_FILE;
00919                         }
00920 
00921                 else
00922                         {
00923                         /* We matched some text prior to the EOB, first
00924                          * process it.
00925                          */
00926                         return EOB_ACT_LAST_MATCH;
00927                         }
00928                 }
00929 
00930         /* Try to read more data. */
00931 
00932         /* First move last chars to start of buffer. */
00933         number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
00934 
00935         for ( i = 0; i < number_to_move; ++i )
00936                 *(dest++) = *(source++);
00937 
00938         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
00939                 /* don't do the read, it's not guaranteed to return an EOF,
00940                  * just force an EOF
00941                  */
00942                 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
00943 
00944         else
00945                 {
00946                 int num_to_read =
00947                         yy_current_buffer->yy_buf_size - number_to_move - 1;
00948 
00949                 while ( num_to_read <= 0 )
00950                         { /* Not enough room in the buffer - grow it. */
00951 #ifdef YY_USES_REJECT
00952                         YY_FATAL_ERROR(
00953 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
00954 #else
00955 
00956                         /* just a shorter name for the current buffer */
00957                         YY_BUFFER_STATE b = yy_current_buffer;
00958 
00959                         int yy_c_buf_p_offset =
00960                                 (int) (yy_c_buf_p - b->yy_ch_buf);
00961 
00962                         if ( b->yy_is_our_buffer )
00963                                 {
00964                                 int new_size = b->yy_buf_size * 2;
00965 
00966                                 if ( new_size <= 0 )
00967                                         b->yy_buf_size += b->yy_buf_size / 8;
00968                                 else
00969                                         b->yy_buf_size *= 2;
00970 
00971                                 b->yy_ch_buf = (char *)
00972                                         /* Include room in for 2 EOB chars. */
00973                                         yy_flex_realloc( (void *) b->yy_ch_buf,
00974                                                          b->yy_buf_size + 2 );
00975                                 }
00976                         else
00977                                 /* Can't grow it, we don't own it. */
00978                                 b->yy_ch_buf = 0;
00979 
00980                         if ( ! b->yy_ch_buf )
00981                                 YY_FATAL_ERROR(
00982                                 "fatal error - scanner input buffer overflow" );
00983 
00984                         yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
00985 
00986                         num_to_read = yy_current_buffer->yy_buf_size -
00987                                                 number_to_move - 1;
00988 #endif
00989                         }
00990 
00991                 if ( num_to_read > YY_READ_BUF_SIZE )
00992                         num_to_read = YY_READ_BUF_SIZE;
00993 
00994                 /* Read in more data. */
00995                 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
00996                         yy_n_chars, num_to_read );
00997 
00998                 yy_current_buffer->yy_n_chars = yy_n_chars;
00999                 }
01000 
01001         if ( yy_n_chars == 0 )
01002                 {
01003                 if ( number_to_move == YY_MORE_ADJ )
01004                         {
01005                         ret_val = EOB_ACT_END_OF_FILE;
01006                         yyrestart( yyin );
01007                         }
01008 
01009                 else
01010                         {
01011                         ret_val = EOB_ACT_LAST_MATCH;
01012                         yy_current_buffer->yy_buffer_status =
01013                                 YY_BUFFER_EOF_PENDING;
01014                         }
01015                 }
01016 
01017         else
01018                 ret_val = EOB_ACT_CONTINUE_SCAN;
01019 
01020         yy_n_chars += number_to_move;
01021         yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
01022         yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
01023 
01024         yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
01025 
01026         return ret_val;
01027         }
01028 
01029 
01030 /* yy_get_previous_state - get the state just before the EOB char was reached */
01031 
01032 static yy_state_type yy_get_previous_state()
01033         {
01034         register yy_state_type yy_current_state;
01035         register char *yy_cp;
01036 
01037         yy_current_state = yy_start;
01038 
01039         for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
01040                 {
01041                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
01042                 if ( yy_accept[yy_current_state] )
01043                         {
01044                         yy_last_accepting_state = yy_current_state;
01045                         yy_last_accepting_cpos = yy_cp;
01046                         }
01047                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01048                         {
01049                         yy_current_state = (int) yy_def[yy_current_state];
01050                         if ( yy_current_state >= 44 )
01051                                 yy_c = yy_meta[(unsigned int) yy_c];
01052                         }
01053                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01054                 }
01055 
01056         return yy_current_state;
01057         }
01058 
01059 
01060 /* yy_try_NUL_trans - try to make a transition on the NUL character
01061  *
01062  * synopsis
01063  *      next_state = yy_try_NUL_trans( current_state );
01064  */
01065 
01066 #ifdef YY_USE_PROTOS
01067 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
01068 #else
01069 static yy_state_type yy_try_NUL_trans( yy_current_state )
01070 yy_state_type yy_current_state;
01071 #endif
01072         {
01073         register int yy_is_jam;
01074         register char *yy_cp = yy_c_buf_p;
01075 
01076         register YY_CHAR yy_c = 1;
01077         if ( yy_accept[yy_current_state] )
01078                 {
01079                 yy_last_accepting_state = yy_current_state;
01080                 yy_last_accepting_cpos = yy_cp;
01081                 }
01082         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01083                 {
01084                 yy_current_state = (int) yy_def[yy_current_state];
01085                 if ( yy_current_state >= 44 )
01086                         yy_c = yy_meta[(unsigned int) yy_c];
01087                 }
01088         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01089         yy_is_jam = (yy_current_state == 43);
01090 
01091         return yy_is_jam ? 0 : yy_current_state;
01092         }
01093 
01094 
01095 #ifndef YY_NO_UNPUT
01096 #ifdef YY_USE_PROTOS
01097 static void yyunput( int c, register char *yy_bp )
01098 #else
01099 static void yyunput( c, yy_bp )
01100 int c;
01101 register char *yy_bp;
01102 #endif
01103         {
01104         register char *yy_cp = yy_c_buf_p;
01105 
01106         /* undo effects of setting up yytext */
01107         *yy_cp = yy_hold_char;
01108 
01109         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
01110                 { /* need to shift things up to make room */
01111                 /* +2 for EOB chars. */
01112                 register int number_to_move = yy_n_chars + 2;
01113                 register char *dest = &yy_current_buffer->yy_ch_buf[
01114                                         yy_current_buffer->yy_buf_size + 2];
01115                 register char *source =
01116                                 &yy_current_buffer->yy_ch_buf[number_to_move];
01117 
01118                 while ( source > yy_current_buffer->yy_ch_buf )
01119                         *--dest = *--source;
01120 
01121                 yy_cp += (int) (dest - source);
01122                 yy_bp += (int) (dest - source);
01123                 yy_current_buffer->yy_n_chars =
01124                         yy_n_chars = yy_current_buffer->yy_buf_size;
01125 
01126                 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
01127                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
01128                 }
01129 
01130         *--yy_cp = (char) c;
01131 
01132 
01133         yytext_ptr = yy_bp;
01134         yy_hold_char = *yy_cp;
01135         yy_c_buf_p = yy_cp;
01136         }
01137 #endif  /* ifndef YY_NO_UNPUT */
01138 
01139 
01140 #ifndef YY_NO_INPUT
01141 #ifdef __cplusplus
01142 static int yyinput()
01143 #else
01144 static int input()
01145 #endif
01146         {
01147         int c;
01148 
01149         *yy_c_buf_p = yy_hold_char;
01150 
01151         if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
01152                 {
01153                 /* yy_c_buf_p now points to the character we want to return.
01154                  * If this occurs *before* the EOB characters, then it's a
01155                  * valid NUL; if not, then we've hit the end of the buffer.
01156                  */
01157                 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
01158                         /* This was really a NUL. */
01159                         *yy_c_buf_p = '\0';
01160 
01161                 else
01162                         { /* need more input */
01163                         int offset = yy_c_buf_p - yytext_ptr;
01164                         ++yy_c_buf_p;
01165 
01166                         switch ( yy_get_next_buffer() )
01167                                 {
01168                                 case EOB_ACT_LAST_MATCH:
01169                                         /* This happens because yy_g_n_b()
01170                                          * sees that we've accumulated a
01171                                          * token and flags that we need to
01172                                          * try matching the token before
01173                                          * proceeding.  But for input(),
01174                                          * there's no matching to consider.
01175                                          * So convert the EOB_ACT_LAST_MATCH
01176                                          * to EOB_ACT_END_OF_FILE.
01177                                          */
01178 
01179                                         /* Reset buffer status. */
01180                                         yyrestart( yyin );
01181 
01182                                         /* fall through */
01183 
01184                                 case EOB_ACT_END_OF_FILE:
01185                                         {
01186                                         if ( yywrap() )
01187                                                 return EOF;
01188 
01189                                         if ( ! yy_did_buffer_switch_on_eof )
01190                                                 YY_NEW_FILE;
01191 #ifdef __cplusplus
01192                                         return yyinput();
01193 #else
01194                                         return input();
01195 #endif
01196                                         }
01197 
01198                                 case EOB_ACT_CONTINUE_SCAN:
01199                                         yy_c_buf_p = yytext_ptr + offset;
01200                                         break;
01201                                 }
01202                         }
01203                 }
01204 
01205         c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
01206         *yy_c_buf_p = '\0';     /* preserve yytext */
01207         yy_hold_char = *++yy_c_buf_p;
01208 
01209 
01210         return c;
01211         }
01212 #endif /* YY_NO_INPUT */
01213 
01214 #ifdef YY_USE_PROTOS
01215 void yyrestart( FILE *input_file )
01216 #else
01217 void yyrestart( input_file )
01218 FILE *input_file;
01219 #endif
01220         {
01221         if ( ! yy_current_buffer )
01222                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
01223 
01224         yy_init_buffer( yy_current_buffer, input_file );
01225         yy_load_buffer_state();
01226         }
01227 
01228 
01229 #ifdef YY_USE_PROTOS
01230 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
01231 #else
01232 void yy_switch_to_buffer( new_buffer )
01233 YY_BUFFER_STATE new_buffer;
01234 #endif
01235         {
01236         if ( yy_current_buffer == new_buffer )
01237                 return;
01238 
01239         if ( yy_current_buffer )
01240                 {
01241                 /* Flush out information for old buffer. */
01242                 *yy_c_buf_p = yy_hold_char;
01243                 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
01244                 yy_current_buffer->yy_n_chars = yy_n_chars;
01245                 }
01246 
01247         yy_current_buffer = new_buffer;
01248         yy_load_buffer_state();
01249 
01250         /* We don't actually know whether we did this switch during
01251          * EOF (yywrap()) processing, but the only time this flag
01252          * is looked at is after yywrap() is called, so it's safe
01253          * to go ahead and always set it.
01254          */
01255         yy_did_buffer_switch_on_eof = 1;
01256         }
01257 
01258 
01259 #ifdef YY_USE_PROTOS
01260 void yy_load_buffer_state( void )
01261 #else
01262 void yy_load_buffer_state()
01263 #endif
01264         {
01265         yy_n_chars = yy_current_buffer->yy_n_chars;
01266         yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
01267         yyin = yy_current_buffer->yy_input_file;
01268         yy_hold_char = *yy_c_buf_p;
01269         }
01270 
01271 
01272 #ifdef YY_USE_PROTOS
01273 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
01274 #else
01275 YY_BUFFER_STATE yy_create_buffer( file, size )
01276 FILE *file;
01277 int size;
01278 #endif
01279         {
01280         YY_BUFFER_STATE b;
01281 
01282         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
01283         if ( ! b )
01284                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
01285 
01286         b->yy_buf_size = size;
01287 
01288         /* yy_ch_buf has to be 2 characters longer than the size given because
01289          * we need to put in 2 end-of-buffer characters.
01290          */
01291         b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
01292         if ( ! b->yy_ch_buf )
01293                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
01294 
01295         b->yy_is_our_buffer = 1;
01296 
01297         yy_init_buffer( b, file );
01298 
01299         return b;
01300         }
01301 
01302 
01303 #ifdef YY_USE_PROTOS
01304 void yy_delete_buffer( YY_BUFFER_STATE b )
01305 #else
01306 void yy_delete_buffer( b )
01307 YY_BUFFER_STATE b;
01308 #endif
01309         {
01310         if ( ! b )
01311                 return;
01312 
01313         if ( b == yy_current_buffer )
01314                 yy_current_buffer = (YY_BUFFER_STATE) 0;
01315 
01316         if ( b->yy_is_our_buffer )
01317                 yy_flex_free( (void *) b->yy_ch_buf );
01318 
01319         yy_flex_free( (void *) b );
01320         }
01321 
01322 
01323 
01324 #ifdef YY_USE_PROTOS
01325 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
01326 #else
01327 void yy_init_buffer( b, file )
01328 YY_BUFFER_STATE b;
01329 FILE *file;
01330 #endif
01331 
01332 
01333         {
01334         yy_flush_buffer( b );
01335 
01336         b->yy_input_file = file;
01337         b->yy_fill_buffer = 1;
01338 
01339 #if YY_ALWAYS_INTERACTIVE
01340         b->yy_is_interactive = 1;
01341 #else
01342 #if YY_NEVER_INTERACTIVE
01343         b->yy_is_interactive = 0;
01344 #else
01345         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
01346 #endif
01347 #endif
01348         }
01349 
01350 
01351 #ifdef YY_USE_PROTOS
01352 void yy_flush_buffer( YY_BUFFER_STATE b )
01353 #else
01354 void yy_flush_buffer( b )
01355 YY_BUFFER_STATE b;
01356 #endif
01357 
01358         {
01359         if ( ! b )
01360                 return;
01361 
01362         b->yy_n_chars = 0;
01363 
01364         /* We always need two end-of-buffer characters.  The first causes
01365          * a transition to the end-of-buffer state.  The second causes
01366          * a jam in that state.
01367          */
01368         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
01369         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
01370 
01371         b->yy_buf_pos = &b->yy_ch_buf[0];
01372 
01373         b->yy_at_bol = 1;
01374         b->yy_buffer_status = YY_BUFFER_NEW;
01375 
01376         if ( b == yy_current_buffer )
01377                 yy_load_buffer_state();
01378         }
01379 
01380 
01381 #ifndef YY_NO_SCAN_BUFFER
01382 #ifdef YY_USE_PROTOS
01383 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
01384 #else
01385 YY_BUFFER_STATE yy_scan_buffer( base, size )
01386 char *base;
01387 yy_size_t size;
01388 #endif
01389         {
01390         YY_BUFFER_STATE b;
01391 
01392         if ( size < 2 ||
01393              base[size-2] != YY_END_OF_BUFFER_CHAR ||
01394              base[size-1] != YY_END_OF_BUFFER_CHAR )
01395                 /* They forgot to leave room for the EOB's. */
01396                 return 0;
01397 
01398         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
01399         if ( ! b )
01400                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
01401 
01402         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
01403         b->yy_buf_pos = b->yy_ch_buf = base;
01404         b->yy_is_our_buffer = 0;
01405         b->yy_input_file = 0;
01406         b->yy_n_chars = b->yy_buf_size;
01407         b->yy_is_interactive = 0;
01408         b->yy_at_bol = 1;
01409         b->yy_fill_buffer = 0;
01410         b->yy_buffer_status = YY_BUFFER_NEW;
01411 
01412         yy_switch_to_buffer( b );
01413 
01414         return b;
01415         }
01416 #endif
01417 
01418 
01419 #ifndef YY_NO_SCAN_STRING
01420 #ifdef YY_USE_PROTOS
01421 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
01422 #else
01423 YY_BUFFER_STATE yy_scan_string( yy_str )
01424 yyconst char *yy_str;
01425 #endif
01426         {
01427         int len;
01428         for ( len = 0; yy_str[len]; ++len )
01429                 ;
01430 
01431         return yy_scan_bytes( yy_str, len );
01432         }
01433 #endif
01434 
01435 
01436 #ifndef YY_NO_SCAN_BYTES
01437 #ifdef YY_USE_PROTOS
01438 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
01439 #else
01440 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
01441 yyconst char *bytes;
01442 int len;
01443 #endif
01444         {
01445         YY_BUFFER_STATE b;
01446         char *buf;
01447         yy_size_t n;
01448         int i;
01449 
01450         /* Get memory for full buffer, including space for trailing EOB's. */
01451         n = len + 2;
01452         buf = (char *) yy_flex_alloc( n );
01453         if ( ! buf )
01454                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
01455 
01456         for ( i = 0; i < len; ++i )
01457                 buf[i] = bytes[i];
01458 
01459         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
01460 
01461         b = yy_scan_buffer( buf, n );
01462         if ( ! b )
01463                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
01464 
01465         /* It's okay to grow etc. this buffer, and we should throw it
01466          * away when we're done.
01467          */
01468         b->yy_is_our_buffer = 1;
01469 
01470         return b;
01471         }
01472 #endif
01473 
01474 
01475 #ifndef YY_NO_PUSH_STATE
01476 #ifdef YY_USE_PROTOS
01477 static void yy_push_state( int new_state )
01478 #else
01479 static void yy_push_state( new_state )
01480 int new_state;
01481 #endif
01482         {
01483         if ( yy_start_stack_ptr >= yy_start_stack_depth )
01484                 {
01485                 yy_size_t new_size;
01486 
01487                 yy_start_stack_depth += YY_START_STACK_INCR;
01488                 new_size = yy_start_stack_depth * sizeof( int );
01489 
01490                 if ( ! yy_start_stack )
01491                         yy_start_stack = (int *) yy_flex_alloc( new_size );
01492 
01493                 else
01494                         yy_start_stack = (int *) yy_flex_realloc(
01495                                         (void *) yy_start_stack, new_size );
01496 
01497                 if ( ! yy_start_stack )
01498                         YY_FATAL_ERROR(
01499                         "out of memory expanding start-condition stack" );
01500                 }
01501 
01502         yy_start_stack[yy_start_stack_ptr++] = YY_START;
01503 
01504         BEGIN(new_state);
01505         }
01506 #endif
01507 
01508 
01509 #ifndef YY_NO_POP_STATE
01510 static void yy_pop_state()
01511         {
01512         if ( --yy_start_stack_ptr < 0 )
01513                 YY_FATAL_ERROR( "start-condition stack underflow" );
01514 
01515         BEGIN(yy_start_stack[yy_start_stack_ptr]);
01516         }
01517 #endif
01518 
01519 
01520 #ifndef YY_NO_TOP_STATE
01521 static int yy_top_state()
01522         {
01523         return yy_start_stack[yy_start_stack_ptr - 1];
01524         }
01525 #endif
01526 
01527 #ifndef YY_EXIT_FAILURE
01528 #define YY_EXIT_FAILURE 2
01529 #endif
01530 
01531 #ifdef YY_USE_PROTOS
01532 static void yy_fatal_error( yyconst char msg[] )
01533 #else
01534 static void yy_fatal_error( msg )
01535 char msg[];
01536 #endif
01537         {
01538         (void) fprintf( stderr, "%s\n", msg );
01539         exit( YY_EXIT_FAILURE );
01540         }
01541 
01542 
01543 
01544 /* Redefine yyless() so it works in section 3 code. */
01545 
01546 #undef yyless
01547 #define yyless(n) \
01548         do \
01549                 { \
01550                 /* Undo effects of setting up yytext. */ \
01551                 yytext[yyleng] = yy_hold_char; \
01552                 yy_c_buf_p = yytext + n; \
01553                 yy_hold_char = *yy_c_buf_p; \
01554                 *yy_c_buf_p = '\0'; \
01555                 yyleng = n; \
01556                 } \
01557         while ( 0 )
01558 
01559 
01560 /* Internal utility routines. */
01561 
01562 #ifndef yytext_ptr
01563 #ifdef YY_USE_PROTOS
01564 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
01565 #else
01566 static void yy_flex_strncpy( s1, s2, n )
01567 char *s1;
01568 yyconst char *s2;
01569 int n;
01570 #endif
01571         {
01572         register int i;
01573         for ( i = 0; i < n; ++i )
01574                 s1[i] = s2[i];
01575         }
01576 #endif
01577 
01578 #ifdef YY_NEED_STRLEN
01579 #ifdef YY_USE_PROTOS
01580 static int yy_flex_strlen( yyconst char *s )
01581 #else
01582 static int yy_flex_strlen( s )
01583 yyconst char *s;
01584 #endif
01585         {
01586         register int n;
01587         for ( n = 0; s[n]; ++n )
01588                 ;
01589 
01590         return n;
01591         }
01592 #endif
01593 
01594 
01595 #ifdef YY_USE_PROTOS
01596 static void *yy_flex_alloc( yy_size_t size )
01597 #else
01598 static void *yy_flex_alloc( size )
01599 yy_size_t size;
01600 #endif
01601         {
01602         return (void *) malloc( size );
01603         }
01604 
01605 #ifdef YY_USE_PROTOS
01606 static void *yy_flex_realloc( void *ptr, yy_size_t size )
01607 #else
01608 static void *yy_flex_realloc( ptr, size )
01609 void *ptr;
01610 yy_size_t size;
01611 #endif
01612         {
01613         /* The cast to (char *) in the following accommodates both
01614          * implementations that use char* generic pointers, and those
01615          * that use void* generic pointers.  It works with the latter
01616          * because both ANSI C and C++ allow castless assignment from
01617          * any pointer type to void*, and deal with argument conversions
01618          * as though doing an assignment.
01619          */
01620         return (void *) realloc( (char *) ptr, size );
01621         }
01622 
01623 #ifdef YY_USE_PROTOS
01624 static void yy_flex_free( void *ptr )
01625 #else
01626 static void yy_flex_free( ptr )
01627 void *ptr;
01628 #endif
01629         {
01630         free( ptr );
01631         }
01632 
01633 #if YY_MAIN
01634 int main()
01635         {
01636         yylex();
01637         return 0;
01638         }
01639 #endif
01640 #line 72 "feature_parse.l"
01641 

Generated on Wed Apr 11 16:50:49 2007 for open_prospect by  doxygen 1.4.6