LCOV - code coverage report
Current view: top level - libgfs2 - lexer.c (source / functions) Coverage Total Hit
Test: gfs2-utils.info Lines: 46.2 % 463 214
Test Date: 2024-03-07 16:24:06 Functions: 43.9 % 41 18

            Line data    Source code
       1              : #line 1 "lexer.c"
       2              : 
       3              : #line 3 "lexer.c"
       4              : 
       5              : #define  YY_INT_ALIGNED short int
       6              : 
       7              : /* A lexical scanner generated by flex */
       8              : 
       9              : /* %not-for-header */
      10              : /* %if-c-only */
      11              : /* %if-not-reentrant */
      12              : /* %endif */
      13              : /* %endif */
      14              : /* %ok-for-header */
      15              : 
      16              : #define FLEX_SCANNER
      17              : #define YY_FLEX_MAJOR_VERSION 2
      18              : #define YY_FLEX_MINOR_VERSION 6
      19              : #define YY_FLEX_SUBMINOR_VERSION 4
      20              : #if YY_FLEX_SUBMINOR_VERSION > 0
      21              : #define FLEX_BETA
      22              : #endif
      23              : 
      24              : /* %if-c++-only */
      25              : /* %endif */
      26              : 
      27              : /* %if-c-only */
      28              : 
      29              : /* %endif */
      30              : 
      31              : #ifdef yyget_lval
      32              : #define yyget_lval_ALREADY_DEFINED
      33              : #else
      34              : #define yyget_lval yyget_lval
      35              : #endif
      36              : 
      37              : #ifdef yyset_lval
      38              : #define yyset_lval_ALREADY_DEFINED
      39              : #else
      40              : #define yyset_lval yyset_lval
      41              : #endif
      42              : 
      43              : /* %if-c-only */
      44              : 
      45              : /* %endif */
      46              : 
      47              : /* First, we deal with  platform-specific or compiler-specific issues. */
      48              : 
      49              : /* begin standard C headers. */
      50              : /* %if-c-only */
      51              : #include <stdio.h>
      52              : #include <string.h>
      53              : #include <errno.h>
      54              : #include <stdlib.h>
      55              : /* %endif */
      56              : 
      57              : /* %if-tables-serialization */
      58              : /* %endif */
      59              : /* end standard C headers. */
      60              : 
      61              : /* %if-c-or-c++ */
      62              : /* flex integer type definitions */
      63              : 
      64              : #ifndef FLEXINT_H
      65              : #define FLEXINT_H
      66              : 
      67              : /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
      68              : 
      69              : #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
      70              : 
      71              : /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
      72              :  * if you want the limit (max/min) macros for int types. 
      73              :  */
      74              : #ifndef __STDC_LIMIT_MACROS
      75              : #define __STDC_LIMIT_MACROS 1
      76              : #endif
      77              : 
      78              : #include <inttypes.h>
      79              : typedef int8_t flex_int8_t;
      80              : typedef uint8_t flex_uint8_t;
      81              : typedef int16_t flex_int16_t;
      82              : typedef uint16_t flex_uint16_t;
      83              : typedef int32_t flex_int32_t;
      84              : typedef uint32_t flex_uint32_t;
      85              : #else
      86              : typedef signed char flex_int8_t;
      87              : typedef short int flex_int16_t;
      88              : typedef int flex_int32_t;
      89              : typedef unsigned char flex_uint8_t; 
      90              : typedef unsigned short int flex_uint16_t;
      91              : typedef unsigned int flex_uint32_t;
      92              : 
      93              : /* Limits of integral types. */
      94              : #ifndef INT8_MIN
      95              : #define INT8_MIN               (-128)
      96              : #endif
      97              : #ifndef INT16_MIN
      98              : #define INT16_MIN              (-32767-1)
      99              : #endif
     100              : #ifndef INT32_MIN
     101              : #define INT32_MIN              (-2147483647-1)
     102              : #endif
     103              : #ifndef INT8_MAX
     104              : #define INT8_MAX               (127)
     105              : #endif
     106              : #ifndef INT16_MAX
     107              : #define INT16_MAX              (32767)
     108              : #endif
     109              : #ifndef INT32_MAX
     110              : #define INT32_MAX              (2147483647)
     111              : #endif
     112              : #ifndef UINT8_MAX
     113              : #define UINT8_MAX              (255U)
     114              : #endif
     115              : #ifndef UINT16_MAX
     116              : #define UINT16_MAX             (65535U)
     117              : #endif
     118              : #ifndef UINT32_MAX
     119              : #define UINT32_MAX             (4294967295U)
     120              : #endif
     121              : 
     122              : #ifndef SIZE_MAX
     123              : #define SIZE_MAX               (~(size_t)0)
     124              : #endif
     125              : 
     126              : #endif /* ! C99 */
     127              : 
     128              : #endif /* ! FLEXINT_H */
     129              : 
     130              : /* %endif */
     131              : 
     132              : /* begin standard C++ headers. */
     133              : /* %if-c++-only */
     134              : /* %endif */
     135              : 
     136              : /* TODO: this is always defined, so inline it */
     137              : #define yyconst const
     138              : 
     139              : #if defined(__GNUC__) && __GNUC__ >= 3
     140              : #define yynoreturn __attribute__((__noreturn__))
     141              : #else
     142              : #define yynoreturn
     143              : #endif
     144              : 
     145              : /* %not-for-header */
     146              : /* Returned upon end-of-file. */
     147              : #define YY_NULL 0
     148              : /* %ok-for-header */
     149              : 
     150              : /* %not-for-header */
     151              : /* Promotes a possibly negative, possibly signed char to an
     152              :  *   integer in range [0..255] for use as an array index.
     153              :  */
     154              : #define YY_SC_TO_UI(c) ((YY_CHAR) (c))
     155              : /* %ok-for-header */
     156              : 
     157              : /* %if-reentrant */
     158              : 
     159              : /* An opaque pointer. */
     160              : #ifndef YY_TYPEDEF_YY_SCANNER_T
     161              : #define YY_TYPEDEF_YY_SCANNER_T
     162              : typedef void* yyscan_t;
     163              : #endif
     164              : 
     165              : /* For convenience, these vars (plus the bison vars far below)
     166              :    are macros in the reentrant scanner. */
     167              : #define yyin yyg->yyin_r
     168              : #define yyout yyg->yyout_r
     169              : #define yyextra yyg->yyextra_r
     170              : #define yyleng yyg->yyleng_r
     171              : #define yytext yyg->yytext_r
     172              : #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
     173              : #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
     174              : #define yy_flex_debug yyg->yy_flex_debug_r
     175              : 
     176              : /* %endif */
     177              : 
     178              : /* %if-not-reentrant */
     179              : /* %endif */
     180              : 
     181              : /* Enter a start condition.  This macro really ought to take a parameter,
     182              :  * but we do it the disgusting crufty way forced on us by the ()-less
     183              :  * definition of BEGIN.
     184              :  */
     185              : #define BEGIN yyg->yy_start = 1 + 2 *
     186              : /* Translate the current start state into a value that can be later handed
     187              :  * to BEGIN to return to the state.  The YYSTATE alias is for lex
     188              :  * compatibility.
     189              :  */
     190              : #define YY_START ((yyg->yy_start - 1) / 2)
     191              : #define YYSTATE YY_START
     192              : /* Action number for EOF rule of a given start state. */
     193              : #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
     194              : /* Special action meaning "start processing a new file". */
     195              : #define YY_NEW_FILE yyrestart( yyin , yyscanner )
     196              : #define YY_END_OF_BUFFER_CHAR 0
     197              : 
     198              : /* Size of default input buffer. */
     199              : #ifndef YY_BUF_SIZE
     200              : #ifdef __ia64__
     201              : /* On IA-64, the buffer size is 16k, not 8k.
     202              :  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
     203              :  * Ditto for the __ia64__ case accordingly.
     204              :  */
     205              : #define YY_BUF_SIZE 32768
     206              : #else
     207              : #define YY_BUF_SIZE 16384
     208              : #endif /* __ia64__ */
     209              : #endif
     210              : 
     211              : /* The state buf must be large enough to hold one state per character in the main buffer.
     212              :  */
     213              : #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
     214              : 
     215              : #ifndef YY_TYPEDEF_YY_BUFFER_STATE
     216              : #define YY_TYPEDEF_YY_BUFFER_STATE
     217              : typedef struct yy_buffer_state *YY_BUFFER_STATE;
     218              : #endif
     219              : 
     220              : #ifndef YY_TYPEDEF_YY_SIZE_T
     221              : #define YY_TYPEDEF_YY_SIZE_T
     222              : typedef size_t yy_size_t;
     223              : #endif
     224              : 
     225              : /* %if-not-reentrant */
     226              : /* %endif */
     227              : 
     228              : /* %if-c-only */
     229              : /* %if-not-reentrant */
     230              : /* %endif */
     231              : /* %endif */
     232              : 
     233              : #define EOB_ACT_CONTINUE_SCAN 0
     234              : #define EOB_ACT_END_OF_FILE 1
     235              : #define EOB_ACT_LAST_MATCH 2
     236              :     
     237              :     #define YY_LESS_LINENO(n)
     238              :     #define YY_LINENO_REWIND_TO(ptr)
     239              :     
     240              : /* Return all but the first "n" matched characters back to the input stream. */
     241              : #define yyless(n) \
     242              :         do \
     243              :                 { \
     244              :                 /* Undo effects of setting up yytext. */ \
     245              :         int yyless_macro_arg = (n); \
     246              :         YY_LESS_LINENO(yyless_macro_arg);\
     247              :                 *yy_cp = yyg->yy_hold_char; \
     248              :                 YY_RESTORE_YY_MORE_OFFSET \
     249              :                 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
     250              :                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
     251              :                 } \
     252              :         while ( 0 )
     253              : #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
     254              : 
     255              : #ifndef YY_STRUCT_YY_BUFFER_STATE
     256              : #define YY_STRUCT_YY_BUFFER_STATE
     257              : struct yy_buffer_state
     258              :         {
     259              : /* %if-c-only */
     260              :         FILE *yy_input_file;
     261              : /* %endif */
     262              : 
     263              : /* %if-c++-only */
     264              : /* %endif */
     265              : 
     266              :         char *yy_ch_buf;                /* input buffer */
     267              :         char *yy_buf_pos;               /* current position in input buffer */
     268              : 
     269              :         /* Size of input buffer in bytes, not including room for EOB
     270              :          * characters.
     271              :          */
     272              :         int yy_buf_size;
     273              : 
     274              :         /* Number of characters read into yy_ch_buf, not including EOB
     275              :          * characters.
     276              :          */
     277              :         int yy_n_chars;
     278              : 
     279              :         /* Whether we "own" the buffer - i.e., we know we created it,
     280              :          * and can realloc() it to grow it, and should free() it to
     281              :          * delete it.
     282              :          */
     283              :         int yy_is_our_buffer;
     284              : 
     285              :         /* Whether this is an "interactive" input source; if so, and
     286              :          * if we're using stdio for input, then we want to use getc()
     287              :          * instead of fread(), to make sure we stop fetching input after
     288              :          * each newline.
     289              :          */
     290              :         int yy_is_interactive;
     291              : 
     292              :         /* Whether we're considered to be at the beginning of a line.
     293              :          * If so, '^' rules will be active on the next match, otherwise
     294              :          * not.
     295              :          */
     296              :         int yy_at_bol;
     297              : 
     298              :     int yy_bs_lineno; /**< The line count. */
     299              :     int yy_bs_column; /**< The column count. */
     300              : 
     301              :         /* Whether to try to fill the input buffer when we reach the
     302              :          * end of it.
     303              :          */
     304              :         int yy_fill_buffer;
     305              : 
     306              :         int yy_buffer_status;
     307              : 
     308              : #define YY_BUFFER_NEW 0
     309              : #define YY_BUFFER_NORMAL 1
     310              :         /* When an EOF's been seen but there's still some text to process
     311              :          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
     312              :          * shouldn't try reading from the input source any more.  We might
     313              :          * still have a bunch of tokens to match, though, because of
     314              :          * possible backing-up.
     315              :          *
     316              :          * When we actually see the EOF, we change the status to "new"
     317              :          * (via yyrestart()), so that the user can continue scanning by
     318              :          * just pointing yyin at a new input file.
     319              :          */
     320              : #define YY_BUFFER_EOF_PENDING 2
     321              : 
     322              :         };
     323              : #endif /* !YY_STRUCT_YY_BUFFER_STATE */
     324              : 
     325              : /* %if-c-only Standard (non-C++) definition */
     326              : /* %not-for-header */
     327              : /* %if-not-reentrant */
     328              : /* %endif */
     329              : /* %ok-for-header */
     330              : 
     331              : /* %endif */
     332              : 
     333              : /* We provide macros for accessing buffer states in case in the
     334              :  * future we want to put the buffer states in a more general
     335              :  * "scanner state".
     336              :  *
     337              :  * Returns the top of the stack, or NULL.
     338              :  */
     339              : #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
     340              :                           ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
     341              :                           : NULL)
     342              : /* Same as previous macro, but useful when we know that the buffer stack is not
     343              :  * NULL or when we need an lvalue. For internal use only.
     344              :  */
     345              : #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
     346              : 
     347              : /* %if-c-only Standard (non-C++) definition */
     348              : 
     349              : /* %if-not-reentrant */
     350              : /* %not-for-header */
     351              : /* %ok-for-header */
     352              : 
     353              : /* %endif */
     354              : 
     355              : void yyrestart ( FILE *input_file , yyscan_t yyscanner );
     356              : void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
     357              : YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
     358              : void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
     359              : void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
     360              : void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
     361              : void yypop_buffer_state ( yyscan_t yyscanner );
     362              : 
     363              : static void yyensure_buffer_stack ( yyscan_t yyscanner );
     364              : static void yy_load_buffer_state ( yyscan_t yyscanner );
     365              : static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner );
     366              : #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner)
     367              : 
     368              : YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
     369              : YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
     370              : YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
     371              : 
     372              : /* %endif */
     373              : 
     374              : void *yyalloc ( yy_size_t , yyscan_t yyscanner );
     375              : void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
     376              : void yyfree ( void * , yyscan_t yyscanner );
     377              : 
     378              : #define yy_new_buffer yy_create_buffer
     379              : #define yy_set_interactive(is_interactive) \
     380              :         { \
     381              :         if ( ! YY_CURRENT_BUFFER ){ \
     382              :         yyensure_buffer_stack (yyscanner); \
     383              :                 YY_CURRENT_BUFFER_LVALUE =    \
     384              :             yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
     385              :         } \
     386              :         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
     387              :         }
     388              : #define yy_set_bol(at_bol) \
     389              :         { \
     390              :         if ( ! YY_CURRENT_BUFFER ){\
     391              :         yyensure_buffer_stack (yyscanner); \
     392              :                 YY_CURRENT_BUFFER_LVALUE =    \
     393              :             yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
     394              :         } \
     395              :         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
     396              :         }
     397              : #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
     398              : 
     399              : /* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
     400              : /* Begin user sect3 */
     401              : 
     402              : #define yywrap(yyscanner) (/*CONSTCOND*/1)
     403              : #define YY_SKIP_YYWRAP
     404              : 
     405              : #define FLEX_DEBUG
     406              : typedef flex_uint8_t YY_CHAR;
     407              : 
     408              : typedef int yy_state_type;
     409              : 
     410              : #define yytext_ptr yytext_r
     411              : 
     412              : /* %% [1.5] DFA */
     413              : 
     414              : /* %if-c-only Standard (non-C++) definition */
     415              : 
     416              : static yy_state_type yy_get_previous_state ( yyscan_t yyscanner );
     417              : static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  , yyscan_t yyscanner);
     418              : static int yy_get_next_buffer ( yyscan_t yyscanner );
     419              : static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
     420              : 
     421              : /* %endif */
     422              : 
     423              : /* Done after the current pattern has been matched and before the
     424              :  * corresponding action - sets up yytext.
     425              :  */
     426              : #define YY_DO_BEFORE_ACTION \
     427              :         yyg->yytext_ptr = yy_bp; \
     428              : /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
     429              :         yyleng = (int) (yy_cp - yy_bp); \
     430              :         yyg->yy_hold_char = *yy_cp; \
     431              :         *yy_cp = '\0'; \
     432              : /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
     433              :         yyg->yy_c_buf_p = yy_cp;
     434              : /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
     435              : #define YY_NUM_RULES 20
     436              : #define YY_END_OF_BUFFER 21
     437              : /* This struct is not used in this scanner,
     438              :    but its presence is necessary. */
     439              : struct yy_trans_info
     440              :         {
     441              :         flex_int32_t yy_verify;
     442              :         flex_int32_t yy_nxt;
     443              :         };
     444              : static const flex_int16_t yy_accept[57] =
     445              :     {   0,
     446              :         0,    0,   21,   19,   18,   17,   19,   19,   19,    5,
     447              :        19,   19,   14,   14,    6,    7,   15,    3,    4,   15,
     448              :        15,    1,    2,   18,    0,   16,    0,   12,    0,    0,
     449              :         0,   13,   13,   14,   14,    0,    0,   15,   15,   15,
     450              :        15,    0,   11,    0,   12,    0,    0,   14,    9,    8,
     451              :        15,   11,   13,   15,   10,    0
     452              :     } ;
     453              : 
     454              : static const YY_CHAR yy_ec[256] =
     455              :     {   0,
     456              :         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
     457              :         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
     458              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     459              :         1,    2,    1,    1,    4,    1,    1,    1,    5,    1,
     460              :         1,    1,    6,    7,    8,    9,   10,   11,   12,   12,
     461              :        12,   12,   12,   12,   12,   12,   12,   13,   14,    1,
     462              :         1,    1,    1,    1,   15,   15,   15,   15,   15,   15,
     463              :        16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
     464              :        16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
     465              :        17,   18,   19,    1,   16,    1,   20,   15,   15,   15,
     466              : 
     467              :        21,   15,   22,   16,   16,   16,   16,   16,   16,   16,
     468              :        16,   16,   16,   16,   23,   24,   16,   16,   16,   25,
     469              :        16,   16,   26,    1,   27,    1,    1,    1,    1,    1,
     470              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     471              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     472              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     473              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     474              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     475              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     476              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     477              : 
     478              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     479              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     480              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     481              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     482              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     483              :         1,    1,    1,    1,    1
     484              :     } ;
     485              : 
     486              : static const YY_CHAR yy_meta[28] =
     487              :     {   0,
     488              :         1,    1,    1,    1,    1,    1,    1,    1,    2,    1,
     489              :         3,    3,    1,    1,    3,    2,    1,    1,    1,    3,
     490              :         3,    2,    2,    2,    2,    1,    1
     491              :     } ;
     492              : 
     493              : static const flex_int16_t yy_base[64] =
     494              :     {   0,
     495              :         0,    0,   98,   99,   95,   99,   93,   23,   23,   99,
     496              :        18,   85,   25,   27,   99,   99,    0,   99,   99,   73,
     497              :        19,   99,   99,   91,   89,   99,   27,   99,   37,   39,
     498              :        35,   37,   40,   42,   47,   88,    0,    0,   51,   48,
     499              :        51,   51,   99,   55,   56,    0,   67,    0,    0,    0,
     500              :        44,   58,    0,   45,    0,   99,   76,   79,   81,   84,
     501              :        87,   62,   61
     502              :     } ;
     503              : 
     504              : static const flex_int16_t yy_def[64] =
     505              :     {   0,
     506              :        56,    1,   56,   56,   56,   56,   57,   58,   56,   56,
     507              :        56,   56,   56,   56,   56,   56,   59,   56,   56,   59,
     508              :        59,   56,   56,   56,   57,   56,   58,   56,   60,   58,
     509              :        56,   56,   56,   56,   56,   61,   62,   59,   59,   59,
     510              :        59,   60,   56,   60,   58,   63,   61,   62,   59,   59,
     511              :        59,   60,   63,   59,   59,    0,   56,   56,   56,   56,
     512              :        56,   56,   56
     513              :     } ;
     514              : 
     515              : static const flex_int16_t yy_nxt[127] =
     516              :     {   0,
     517              :         4,    5,    6,    7,    8,    9,   10,   11,    4,   12,
     518              :        13,   14,   15,   16,   17,   17,   18,    4,   19,   17,
     519              :        17,   20,   21,   17,   17,   22,   23,   28,   34,   35,
     520              :        31,   28,   29,   32,   33,   35,   35,   35,   35,   40,
     521              :        30,   43,   41,   45,   30,   32,   33,   33,   33,   37,
     522              :        33,   33,   35,   35,   44,   43,   30,   35,   35,   52,
     523              :        28,   46,   43,   53,   48,   55,   37,   54,   44,   26,
     524              :        51,   50,   44,   30,   49,   44,   25,   25,   25,   27,
     525              :        27,   27,   38,   38,   42,   42,   42,   47,   47,   47,
     526              :        26,   26,   24,   39,   36,   26,   24,   56,    3,   56,
     527              : 
     528              :        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
     529              :        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
     530              :        56,   56,   56,   56,   56,   56
     531              :     } ;
     532              : 
     533              : static const flex_int16_t yy_chk[127] =
     534              :     {   0,
     535              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     536              :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     537              :         1,    1,    1,    1,    1,    1,    1,    8,   11,   11,
     538              :         9,   27,    8,    9,    9,   13,   13,   14,   14,   21,
     539              :         8,   29,   21,   30,   27,   31,   31,   32,   32,   13,
     540              :        33,   33,   34,   34,   29,   42,   30,   35,   35,   44,
     541              :        45,   32,   52,   63,   62,   54,   34,   51,   42,   47,
     542              :        41,   40,   44,   45,   39,   52,   57,   57,   57,   58,
     543              :        58,   58,   59,   59,   60,   60,   60,   61,   61,   61,
     544              :        36,   25,   24,   20,   12,    7,    5,    3,   56,   56,
     545              : 
     546              :        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
     547              :        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
     548              :        56,   56,   56,   56,   56,   56
     549              :     } ;
     550              : 
     551              : static const flex_int16_t yy_rule_linenum[20] =
     552              :     {   0,
     553              :        43,   46,   49,   52,   55,   58,   61,   64,   67,   70,
     554              :        73,   77,   81,   84,   87,   90,   97,  101,  102
     555              :     } ;
     556              : 
     557              : /* The intent behind this definition is that it'll catch
     558              :  * any uses of REJECT which flex missed.
     559              :  */
     560              : #define REJECT reject_used_but_not_detected
     561              : #define yymore() yymore_used_but_not_detected
     562              : #define YY_MORE_ADJ 0
     563              : #define YY_RESTORE_YY_MORE_OFFSET
     564              : #line 1 "lexer.l"
     565              : #line 2 "lexer.l"
     566              : #include "lang.h"
     567              : #include "parser.h"
     568              : 
     569              : #define EXTRA ((struct lgfs2_lang_state *)yyextra)
     570              : 
     571              : #define P(token, type, text) do {\
     572              :         *(yylval) = ast_new(type, text);\
     573              :         if (*(yylval) == NULL) {\
     574              :                 EXTRA->ls_errnum = errno;\
     575              :                 return 1;\
     576              :         }\
     577              :         return (TOK_##token);\
     578              : } while(0)
     579              : 
     580              : #define COLNUM EXTRA->ls_colnum
     581              : #define YY_USER_ACTION COLNUM += yyleng;
     582              : 
     583              : #line 583 "lexer.c"
     584              : #define YY_NO_INPUT 1
     585              : #line 585 "lexer.c"
     586              : 
     587              : #define INITIAL 0
     588              : 
     589              : #ifndef YY_NO_UNISTD_H
     590              : /* Special case for "unistd.h", since it is non-ANSI. We include it way
     591              :  * down here because we want the user's section 1 to have been scanned first.
     592              :  * The user has a chance to override it with an option.
     593              :  */
     594              : /* %if-c-only */
     595              : #include <unistd.h>
     596              : /* %endif */
     597              : /* %if-c++-only */
     598              : /* %endif */
     599              : #endif
     600              : 
     601              : #define YY_EXTRA_TYPE struct lgfs2_lang_state *
     602              : 
     603              : /* %if-c-only Reentrant structure and macros (non-C++). */
     604              : /* %if-reentrant */
     605              : 
     606              : /* Holds the entire state of the reentrant scanner. */
     607              : struct yyguts_t
     608              :     {
     609              : 
     610              :     /* User-defined. Not touched by flex. */
     611              :     YY_EXTRA_TYPE yyextra_r;
     612              : 
     613              :     /* The rest are the same as the globals declared in the non-reentrant scanner. */
     614              :     FILE *yyin_r, *yyout_r;
     615              :     size_t yy_buffer_stack_top; /**< index of top of stack. */
     616              :     size_t yy_buffer_stack_max; /**< capacity of stack. */
     617              :     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
     618              :     char yy_hold_char;
     619              :     int yy_n_chars;
     620              :     int yyleng_r;
     621              :     char *yy_c_buf_p;
     622              :     int yy_init;
     623              :     int yy_start;
     624              :     int yy_did_buffer_switch_on_eof;
     625              :     int yy_start_stack_ptr;
     626              :     int yy_start_stack_depth;
     627              :     int *yy_start_stack;
     628              :     yy_state_type yy_last_accepting_state;
     629              :     char* yy_last_accepting_cpos;
     630              : 
     631              :     int yylineno_r;
     632              :     int yy_flex_debug_r;
     633              : 
     634              :     char *yytext_r;
     635              :     int yy_more_flag;
     636              :     int yy_more_len;
     637              : 
     638              :     YYSTYPE * yylval_r;
     639              : 
     640              :     }; /* end struct yyguts_t */
     641              : 
     642              : /* %if-c-only */
     643              : 
     644              : static int yy_init_globals ( yyscan_t yyscanner );
     645              : 
     646              : /* %endif */
     647              : 
     648              : /* %if-reentrant */
     649              : 
     650              :     /* This must go here because YYSTYPE and YYLTYPE are included
     651              :      * from bison output in section 1.*/
     652              :     #    define yylval yyg->yylval_r
     653              :     
     654              : int yylex_init (yyscan_t* scanner);
     655              : 
     656              : int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
     657              : 
     658              : /* %endif */
     659              : 
     660              : /* %endif End reentrant structures and macros. */
     661              : 
     662              : /* Accessor methods to globals.
     663              :    These are made visible to non-reentrant scanners for convenience. */
     664              : 
     665              : int yylex_destroy ( yyscan_t yyscanner );
     666              : 
     667              : int yyget_debug ( yyscan_t yyscanner );
     668              : 
     669              : void yyset_debug ( int debug_flag , yyscan_t yyscanner );
     670              : 
     671              : YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
     672              : 
     673              : void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
     674              : 
     675              : FILE *yyget_in ( yyscan_t yyscanner );
     676              : 
     677              : void yyset_in  ( FILE * _in_str , yyscan_t yyscanner );
     678              : 
     679              : FILE *yyget_out ( yyscan_t yyscanner );
     680              : 
     681              : void yyset_out  ( FILE * _out_str , yyscan_t yyscanner );
     682              : 
     683              :                         int yyget_leng ( yyscan_t yyscanner );
     684              : 
     685              : char *yyget_text ( yyscan_t yyscanner );
     686              : 
     687              : int yyget_lineno ( yyscan_t yyscanner );
     688              : 
     689              : void yyset_lineno ( int _line_number , yyscan_t yyscanner );
     690              : 
     691              : int yyget_column  ( yyscan_t yyscanner );
     692              : 
     693              : void yyset_column ( int _column_no , yyscan_t yyscanner );
     694              : 
     695              : /* %if-bison-bridge */
     696              : 
     697              : YYSTYPE * yyget_lval ( yyscan_t yyscanner );
     698              : 
     699              : void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
     700              : 
     701              : /* %endif */
     702              : 
     703              : /* Macros after this point can all be overridden by user definitions in
     704              :  * section 1.
     705              :  */
     706              : 
     707              : #ifndef YY_SKIP_YYWRAP
     708              : #ifdef __cplusplus
     709              : extern "C" int yywrap ( yyscan_t yyscanner );
     710              : #else
     711              : extern int yywrap ( yyscan_t yyscanner );
     712              : #endif
     713              : #endif
     714              : 
     715              : /* %not-for-header */
     716              : #ifndef YY_NO_UNPUT
     717              :     
     718              : #endif
     719              : /* %ok-for-header */
     720              : 
     721              : /* %endif */
     722              : 
     723              : #ifndef yytext_ptr
     724              : static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
     725              : #endif
     726              : 
     727              : #ifdef YY_NEED_STRLEN
     728              : static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
     729              : #endif
     730              : 
     731              : #ifndef YY_NO_INPUT
     732              : /* %if-c-only Standard (non-C++) definition */
     733              : /* %not-for-header */
     734              : #ifdef __cplusplus
     735              : static int yyinput ( yyscan_t yyscanner );
     736              : #else
     737              : static int input ( yyscan_t yyscanner );
     738              : #endif
     739              : /* %ok-for-header */
     740              : 
     741              : /* %endif */
     742              : #endif
     743              : 
     744              : /* %if-c-only */
     745              : 
     746              : /* %endif */
     747              : 
     748              : /* Amount of stuff to slurp up with each read. */
     749              : #ifndef YY_READ_BUF_SIZE
     750              : #ifdef __ia64__
     751              : /* On IA-64, the buffer size is 16k, not 8k */
     752              : #define YY_READ_BUF_SIZE 16384
     753              : #else
     754              : #define YY_READ_BUF_SIZE 8192
     755              : #endif /* __ia64__ */
     756              : #endif
     757              : 
     758              : /* Copy whatever the last rule matched to the standard output. */
     759              : #ifndef ECHO
     760              : /* %if-c-only Standard (non-C++) definition */
     761              : /* This used to be an fputs(), but since the string might contain NUL's,
     762              :  * we now use fwrite().
     763              :  */
     764              : #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
     765              : /* %endif */
     766              : /* %if-c++-only C++ definition */
     767              : /* %endif */
     768              : #endif
     769              : 
     770              : /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
     771              :  * is returned in "result".
     772              :  */
     773              : #ifndef YY_INPUT
     774              : #define YY_INPUT(buf,result,max_size) \
     775              : /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
     776              :         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
     777              :                 { \
     778              :                 int c = '*'; \
     779              :                 int n; \
     780              :                 for ( n = 0; n < max_size && \
     781              :                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
     782              :                         buf[n] = (char) c; \
     783              :                 if ( c == '\n' ) \
     784              :                         buf[n++] = (char) c; \
     785              :                 if ( c == EOF && ferror( yyin ) ) \
     786              :                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
     787              :                 result = n; \
     788              :                 } \
     789              :         else \
     790              :                 { \
     791              :                 errno=0; \
     792              :                 while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
     793              :                         { \
     794              :                         if( errno != EINTR) \
     795              :                                 { \
     796              :                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
     797              :                                 break; \
     798              :                                 } \
     799              :                         errno=0; \
     800              :                         clearerr(yyin); \
     801              :                         } \
     802              :                 }\
     803              : \
     804              : /* %if-c++-only C++ definition \ */\
     805              : /* %endif */
     806              : 
     807              : #endif
     808              : 
     809              : /* No semi-colon after return; correct usage is to write "yyterminate();" -
     810              :  * we don't want an extra ';' after the "return" because that will cause
     811              :  * some compilers to complain about unreachable statements.
     812              :  */
     813              : #ifndef yyterminate
     814              : #define yyterminate() return YY_NULL
     815              : #endif
     816              : 
     817              : /* Number of entries by which start-condition stack grows. */
     818              : #ifndef YY_START_STACK_INCR
     819              : #define YY_START_STACK_INCR 25
     820              : #endif
     821              : 
     822              : /* Report a fatal error. */
     823              : #ifndef YY_FATAL_ERROR
     824              : /* %if-c-only */
     825              : #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
     826              : /* %endif */
     827              : /* %if-c++-only */
     828              : /* %endif */
     829              : #endif
     830              : 
     831              : /* %if-tables-serialization structures and prototypes */
     832              : /* %not-for-header */
     833              : /* %ok-for-header */
     834              : 
     835              : /* %not-for-header */
     836              : /* %tables-yydmap generated elements */
     837              : /* %endif */
     838              : /* end tables serialization structures and prototypes */
     839              : 
     840              : /* %ok-for-header */
     841              : 
     842              : /* Default declaration of generated scanner - a define so the user can
     843              :  * easily add parameters.
     844              :  */
     845              : #ifndef YY_DECL
     846              : #define YY_DECL_IS_OURS 1
     847              : /* %if-c-only Standard (non-C++) definition */
     848              : 
     849              : extern int yylex \
     850              :                (YYSTYPE * yylval_param , yyscan_t yyscanner);
     851              : 
     852              : #define YY_DECL int yylex \
     853              :                (YYSTYPE * yylval_param , yyscan_t yyscanner)
     854              : /* %endif */
     855              : /* %if-c++-only C++ definition */
     856              : /* %endif */
     857              : #endif /* !YY_DECL */
     858              : 
     859              : /* Code executed at the beginning of each rule, after yytext and yyleng
     860              :  * have been set up.
     861              :  */
     862              : #ifndef YY_USER_ACTION
     863              : #define YY_USER_ACTION
     864              : #endif
     865              : 
     866              : /* Code executed at the end of each rule. */
     867              : #ifndef YY_BREAK
     868              : #define YY_BREAK /*LINTED*/break;
     869              : #endif
     870              : 
     871              : /* %% [6.0] YY_RULE_SETUP definition goes here */
     872              : #define YY_RULE_SETUP \
     873              :         YY_USER_ACTION
     874              : 
     875              : /* %not-for-header */
     876              : /** The main scanner function which does all the work.
     877           64 :  */
     878              : YY_DECL
     879              : {
     880              :         yy_state_type yy_current_state;
     881              :         char *yy_cp, *yy_bp;
     882           64 :         int yy_act;
     883              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     884           64 : 
     885              :     yylval = yylval_param;
     886           64 : 
     887              :         if ( !yyg->yy_init )
     888            8 :                 {
     889              :                 yyg->yy_init = 1;
     890              : 
     891              : #ifdef YY_USER_INIT
     892              :                 YY_USER_INIT;
     893              : #endif
     894            8 : 
     895            8 :                 if ( ! yyg->yy_start )
     896              :                         yyg->yy_start = 1;   /* first start state */
     897            8 : 
     898              :                 if ( ! yyin )
     899            0 : /* %if-c-only */
     900              :                         yyin = stdin;
     901              : /* %endif */
     902              : /* %if-c++-only */
     903              : /* %endif */
     904            8 : 
     905              :                 if ( ! yyout )
     906            8 : /* %if-c-only */
     907              :                         yyout = stdout;
     908              : /* %endif */
     909              : /* %if-c++-only */
     910              : /* %endif */
     911            8 : 
     912            8 :                 if ( ! YY_CURRENT_BUFFER ) {
     913            8 :                         yyensure_buffer_stack (yyscanner);
     914            8 :                         YY_CURRENT_BUFFER_LVALUE =
     915              :                                 yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
     916              :                 }
     917            8 : 
     918              :                 yy_load_buffer_state( yyscanner );
     919              :                 }
     920              : 
     921              :         {
     922              : /* %% [7.0] user's declarations go here */
     923              : #line 41 "lexer.l"
     924              : 
     925              : 
     926              : #line 926 "lexer.c"
     927              : 
     928              :         while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
     929              :                 {
     930          112 : /* %% [8.0] yymore()-related code goes here */
     931              :                 yy_cp = yyg->yy_c_buf_p;
     932              : 
     933          112 :                 /* Support of yytext. */
     934              :                 *yy_cp = yyg->yy_hold_char;
     935              : 
     936              :                 /* yy_bp points to the position in yy_ch_buf of the start of
     937              :                  * the current run.
     938          112 :                  */
     939              :                 yy_bp = yy_cp;
     940              : 
     941          112 : /* %% [9.0] code to set up and find next match goes here */
     942            8 :                 yy_current_state = yyg->yy_start;
     943              : yy_match:
     944              :                 do
     945          314 :                         {
     946          314 :                         YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
     947              :                         if ( yy_accept[yy_current_state] )
     948          193 :                                 {
     949          193 :                                 yyg->yy_last_accepting_state = yy_current_state;
     950              :                                 yyg->yy_last_accepting_cpos = yy_cp;
     951          499 :                                 }
     952              :                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
     953          185 :                                 {
     954          185 :                                 yy_current_state = (int) yy_def[yy_current_state];
     955           98 :                                 if ( yy_current_state >= 57 )
     956              :                                         yy_c = yy_meta[yy_c];
     957          314 :                                 }
     958          314 :                         yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
     959              :                         ++yy_cp;
     960          314 :                         }
     961              :                 while ( yy_base[yy_current_state] != 99 );
     962          120 : 
     963              : yy_find_action:
     964          120 : /* %% [10.0] code to find the action number goes here */
     965          120 :                 yy_act = yy_accept[yy_current_state];
     966              :                 if ( yy_act == 0 )
     967           87 :                         { /* have to back up */
     968           87 :                         yy_cp = yyg->yy_last_accepting_cpos;
     969           87 :                         yy_current_state = yyg->yy_last_accepting_state;
     970              :                         yy_act = yy_accept[yy_current_state];
     971              :                         }
     972          120 : 
     973              :                 YY_DO_BEFORE_ACTION;
     974              : 
     975              : /* %% [11.0] code for yylineno update goes here */
     976          128 : 
     977              : do_action:      /* This label is used only to access EOF actions. */
     978              : 
     979          128 : /* %% [12.0] debug code goes here */
     980              :                 if ( yy_flex_debug )
     981            0 :                         {
     982            0 :                         if ( yy_act == 0 )
     983            0 :                                 fprintf( stderr, "--scanner backing up\n" );
     984            0 :                         else if ( yy_act < 20 )
     985            0 :                                 fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
     986            0 :                                          (long)yy_rule_linenum[yy_act], yytext );
     987            0 :                         else if ( yy_act == 20 )
     988              :                                 fprintf( stderr, "--accepting default rule (\"%s\")\n",
     989            0 :                                          yytext );
     990            0 :                         else if ( yy_act == 21 )
     991              :                                 fprintf( stderr, "--(end of buffer or a NUL)\n" );
     992            0 :                         else
     993              :                                 fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
     994              :                         }
     995          128 : 
     996              :                 switch ( yy_act )
     997              :         { /* beginning of action switch */
     998            0 : /* %% [13.0] actions go here */
     999              :                         case 0: /* must back up */
    1000            0 :                         /* undo the effects of YY_DO_BEFORE_ACTION */
    1001            0 :                         *yy_cp = yyg->yy_hold_char;
    1002            0 :                         yy_cp = yyg->yy_last_accepting_cpos;
    1003            0 :                         yy_current_state = yyg->yy_last_accepting_state;
    1004              :                         goto yy_find_action;
    1005            8 : 
    1006            8 : case 1:
    1007              : YY_RULE_SETUP
    1008              : #line 43 "lexer.l"
    1009              : {
    1010              :                         return TOK_LBRACE;
    1011              :                         }
    1012              :         YY_BREAK
    1013              : case 2:
    1014              : YY_RULE_SETUP
    1015              : #line 46 "lexer.l"
    1016              : {
    1017              :                         return TOK_RBRACE;
    1018              :                         }
    1019              :         YY_BREAK
    1020              : case 3:
    1021              : YY_RULE_SETUP
    1022              : #line 49 "lexer.l"
    1023              : {
    1024              :                         return TOK_LBRACKET;
    1025              :                         }
    1026              :         YY_BREAK
    1027              : case 4:
    1028              : YY_RULE_SETUP
    1029              : #line 52 "lexer.l"
    1030              : {
    1031              :                         P(RBRACKET, AST_EX_SUBSCRIPT, "[ ]");
    1032              :                         }
    1033              :         YY_BREAK
    1034              : case 5:
    1035              : YY_RULE_SETUP
    1036              : #line 55 "lexer.l"
    1037              : {
    1038              :                         return TOK_COMMA;
    1039              :                         }
    1040              :         YY_BREAK
    1041              : case 6:
    1042              : YY_RULE_SETUP
    1043              : #line 58 "lexer.l"
    1044              : {
    1045              :                         P(COLON, AST_EX_FIELDSPEC, yytext);
    1046              :                         }
    1047              :         YY_BREAK
    1048              : case 7:
    1049              : YY_RULE_SETUP
    1050              : #line 61 "lexer.l"
    1051              : {
    1052              :                         return TOK_SEMI;
    1053              :                         }
    1054              :         YY_BREAK
    1055              : case 8:
    1056              : YY_RULE_SETUP
    1057              : #line 64 "lexer.l"
    1058              : {
    1059              :                         P(SET, AST_ST_SET, yytext);
    1060              :                         }
    1061              :         YY_BREAK
    1062              : case 9:
    1063              : YY_RULE_SETUP
    1064              : #line 67 "lexer.l"
    1065              : {
    1066              :                         P(GET, AST_ST_GET, yytext);
    1067              :                         }
    1068              :         YY_BREAK
    1069              : case 10:
    1070              : YY_RULE_SETUP
    1071              : #line 70 "lexer.l"
    1072              : {
    1073              :                         P(STATE, AST_KW_STATE, yytext);
    1074              :                         }
    1075              :         YY_BREAK
    1076              : case 11:
    1077              : /* rule 11 can match eol */
    1078              : YY_RULE_SETUP
    1079              : #line 73 "lexer.l"
    1080              : {
    1081              :                         yytext[yyleng-1] = '\0';
    1082              :                         P(PATH, AST_EX_PATH, yytext + 1);
    1083              :                         }
    1084              :         YY_BREAK
    1085              : case 12:
    1086              : /* rule 12 can match eol */
    1087              : YY_RULE_SETUP
    1088              : #line 77 "lexer.l"
    1089              : {
    1090              :                         yytext[yyleng-1] = '\0';
    1091              :                         P(STRING, AST_EX_STRING, yytext + 1);
    1092              :                         }
    1093              :         YY_BREAK
    1094              : case 13:
    1095              : YY_RULE_SETUP
    1096              : #line 81 "lexer.l"
    1097              : {
    1098              :                         P(OFFSET, AST_EX_OFFSET, yytext);
    1099              :                         }
    1100              :         YY_BREAK
    1101              : case 14:
    1102              : YY_RULE_SETUP
    1103              : #line 84 "lexer.l"
    1104              : {
    1105              :                         P(NUMBER, AST_EX_NUMBER, yytext);
    1106              :                         }
    1107              :         YY_BREAK
    1108              : case 15:
    1109              : YY_RULE_SETUP
    1110              : #line 87 "lexer.l"
    1111              : {
    1112              :                         P(ID, AST_EX_ID, yytext);
    1113              :                         }
    1114              :         YY_BREAK
    1115              : case 16:
    1116              : /* rule 16 can match eol */
    1117              : YY_RULE_SETUP
    1118              : #line 90 "lexer.l"
    1119              : {
    1120              :                         COLNUM = 0;
    1121              :                         EXTRA->ls_linenum++;
    1122              :                         }
    1123              :         YY_BREAK
    1124              : case YY_STATE_EOF(INITIAL):
    1125              : #line 94 "lexer.l"
    1126              : {
    1127              :                         return 0;
    1128              :                         }
    1129              :         YY_BREAK
    1130              : case 17:
    1131              : /* rule 17 can match eol */
    1132              : YY_RULE_SETUP
    1133              : #line 97 "lexer.l"
    1134              : {
    1135              :                         COLNUM = 0;
    1136              :                         EXTRA->ls_linenum++;
    1137              :                         }
    1138              :         YY_BREAK
    1139              : case 18:
    1140              : YY_RULE_SETUP
    1141              : #line 101 "lexer.l"
    1142              : ;
    1143              :         YY_BREAK
    1144              : case 19:
    1145              : YY_RULE_SETUP
    1146              : #line 102 "lexer.l"
    1147              : {
    1148              :                         printf("Unexpected character '%s' on line %d column %d\n",
    1149              :                                yytext, yylineno, COLNUM);
    1150              :                         return 1;
    1151              :                         }
    1152              :         YY_BREAK
    1153              : case 20:
    1154              : YY_RULE_SETUP
    1155              : #line 108 "lexer.l"
    1156              : ECHO;
    1157              :         YY_BREAK
    1158              : #line 1158 "lexer.c"
    1159           16 : 
    1160              :         case YY_END_OF_BUFFER:
    1161              :                 {
    1162           16 :                 /* Amount of text matched not including the EOB char. */
    1163              :                 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
    1164              : 
    1165           16 :                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
    1166              :                 *yy_cp = yyg->yy_hold_char;
    1167              :                 YY_RESTORE_YY_MORE_OFFSET
    1168           16 : 
    1169              :                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
    1170              :                         {
    1171              :                         /* We're scanning a new file or input source.  It's
    1172              :                          * possible that this happened because the user
    1173              :                          * just pointed yyin at a new source and called
    1174              :                          * yylex().  If so, then we have to assure
    1175              :                          * consistency between YY_CURRENT_BUFFER and our
    1176              :                          * globals.  Here is the right place to do so, because
    1177              :                          * this is the first action (other than possibly a
    1178              :                          * back-up) that will match for the new input source.
    1179            8 :                          */
    1180              :                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
    1181            8 : /* %if-c-only */
    1182              :                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
    1183              : /* %endif */
    1184              : /* %if-c++-only */
    1185            8 : /* %endif */
    1186              :                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
    1187              :                         }
    1188              : 
    1189              :                 /* Note that here we test for yy_c_buf_p "<=" to the position
    1190              :                  * of the first EOB in the buffer, since yy_c_buf_p will
    1191              :                  * already have been incremented past the NUL character
    1192              :                  * (since all states make transitions on EOB to the
    1193              :                  * end-of-buffer state).  Contrast this with the test
    1194              :                  * in input().
    1195           16 :                  */
    1196              :                 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
    1197              :                         { /* This was really a NUL. */
    1198              :                         yy_state_type yy_next_state;
    1199            0 : 
    1200              :                         yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
    1201            0 : 
    1202              :                         yy_current_state = yy_get_previous_state( yyscanner );
    1203              : 
    1204              :                         /* Okay, we're now positioned to make the NUL
    1205              :                          * transition.  We couldn't have
    1206              :                          * yy_get_previous_state() go ahead and do it
    1207              :                          * for us because it doesn't know how to deal
    1208              :                          * with the possibility of jamming (and we don't
    1209              :                          * want to build jamming into it because then it
    1210              :                          * will run more slowly).
    1211              :                          */
    1212            0 : 
    1213              :                         yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
    1214            0 : 
    1215              :                         yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
    1216            0 : 
    1217              :                         if ( yy_next_state )
    1218              :                                 {
    1219            0 :                                 /* Consume the NUL. */
    1220            0 :                                 yy_cp = ++yyg->yy_c_buf_p;
    1221            0 :                                 yy_current_state = yy_next_state;
    1222              :                                 goto yy_match;
    1223              :                                 }
    1224              : 
    1225              :                         else
    1226              :                                 {
    1227            0 : /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
    1228            0 :                                 yy_cp = yyg->yy_c_buf_p;
    1229              :                                 goto yy_find_action;
    1230              :                                 }
    1231              :                         }
    1232           16 : 
    1233              :                 else switch ( yy_get_next_buffer( yyscanner ) )
    1234            8 :                         {
    1235              :                         case EOB_ACT_END_OF_FILE:
    1236            8 :                                 {
    1237              :                                 yyg->yy_did_buffer_switch_on_eof = 0;
    1238              : 
    1239              :                                 if ( yywrap( yyscanner ) )
    1240              :                                         {
    1241              :                                         /* Note: because we've taken care in
    1242              :                                          * yy_get_next_buffer() to have set up
    1243              :                                          * yytext, we can now set up
    1244              :                                          * yy_c_buf_p so that if some total
    1245              :                                          * hoser (like flex itself) wants to
    1246              :                                          * call the scanner after we return the
    1247              :                                          * YY_NULL, it'll still work - another
    1248              :                                          * YY_NULL will get returned.
    1249            8 :                                          */
    1250              :                                         yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
    1251            8 : 
    1252            8 :                                         yy_act = YY_STATE_EOF(YY_START);
    1253              :                                         goto do_action;
    1254              :                                         }
    1255              : 
    1256              :                                 else
    1257              :                                         {
    1258              :                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
    1259              :                                                 YY_NEW_FILE;
    1260              :                                         }
    1261              :                                 break;
    1262              :                                 }
    1263            8 : 
    1264            8 :                         case EOB_ACT_CONTINUE_SCAN:
    1265            8 :                                 yyg->yy_c_buf_p =
    1266              :                                         yyg->yytext_ptr + yy_amount_of_matched_text;
    1267            8 : 
    1268              :                                 yy_current_state = yy_get_previous_state( yyscanner );
    1269            8 : 
    1270            8 :                                 yy_cp = yyg->yy_c_buf_p;
    1271            8 :                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
    1272              :                                 goto yy_match;
    1273            0 : 
    1274            0 :                         case EOB_ACT_LAST_MATCH:
    1275            0 :                                 yyg->yy_c_buf_p =
    1276              :                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
    1277            0 : 
    1278              :                                 yy_current_state = yy_get_previous_state( yyscanner );
    1279            0 : 
    1280            0 :                                 yy_cp = yyg->yy_c_buf_p;
    1281            0 :                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
    1282              :                                 goto yy_find_action;
    1283            0 :                         }
    1284              :                 break;
    1285              :                 }
    1286            0 : 
    1287            0 :         default:
    1288              :                 YY_FATAL_ERROR(
    1289              :                         "fatal flex scanner internal error--no action found" );
    1290              :         } /* end of action switch */
    1291              :                 } /* end of scanning one token */
    1292              :         } /* end of user's declarations */
    1293              : } /* end of yylex */
    1294              : /* %ok-for-header */
    1295              : 
    1296              : /* %if-c++-only */
    1297              : /* %not-for-header */
    1298              : /* %ok-for-header */
    1299              : 
    1300              : /* %endif */
    1301              : 
    1302              : /* yy_get_next_buffer - try to read in a new buffer
    1303              :  *
    1304              :  * Returns a code representing an action:
    1305              :  *      EOB_ACT_LAST_MATCH -
    1306              :  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
    1307              :  *      EOB_ACT_END_OF_FILE - end of file
    1308              :  */
    1309           16 : /* %if-c-only */
    1310              : static int yy_get_next_buffer (yyscan_t yyscanner)
    1311              : /* %endif */
    1312              : /* %if-c++-only */
    1313              : /* %endif */
    1314           16 : {
    1315           16 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    1316           16 :         char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
    1317              :         char *source = yyg->yytext_ptr;
    1318              :         int number_to_move, i;
    1319              :         int ret_val;
    1320           16 : 
    1321            0 :         if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
    1322              :                 YY_FATAL_ERROR(
    1323              :                 "fatal flex scanner internal error--end of buffer missed" );
    1324           16 : 
    1325              :         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
    1326            0 :                 { /* Don't try to fill the buffer, so this is an EOF. */
    1327              :                 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
    1328              :                         {
    1329              :                         /* We matched a single character, the EOB, so
    1330              :                          * treat this as a final EOF.
    1331            0 :                          */
    1332              :                         return EOB_ACT_END_OF_FILE;
    1333              :                         }
    1334              : 
    1335              :                 else
    1336              :                         {
    1337              :                         /* We matched some text prior to the EOB, first
    1338              :                          * process it.
    1339            0 :                          */
    1340              :                         return EOB_ACT_LAST_MATCH;
    1341              :                         }
    1342              :                 }
    1343              : 
    1344              :         /* Try to read more data. */
    1345              : 
    1346           16 :         /* First move last chars to start of buffer. */
    1347              :         number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1);
    1348           16 : 
    1349            0 :         for ( i = 0; i < number_to_move; ++i )
    1350              :                 *(dest++) = *(source++);
    1351           16 : 
    1352              :         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
    1353              :                 /* don't do the read, it's not guaranteed to return an EOF,
    1354              :                  * just force an EOF
    1355            0 :                  */
    1356              :                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
    1357              : 
    1358              :         else
    1359           16 :                 {
    1360           16 :                         int num_to_read =
    1361              :                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
    1362           16 : 
    1363              :                 while ( num_to_read <= 0 )
    1364              :                         { /* Not enough room in the buffer - grow it. */
    1365              : 
    1366            0 :                         /* just a shorter name for the current buffer */
    1367              :                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
    1368            0 : 
    1369            0 :                         int yy_c_buf_p_offset =
    1370              :                                 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
    1371            0 : 
    1372              :                         if ( b->yy_is_our_buffer )
    1373            0 :                                 {
    1374              :                                 int new_size = b->yy_buf_size * 2;
    1375            0 : 
    1376            0 :                                 if ( new_size <= 0 )
    1377              :                                         b->yy_buf_size += b->yy_buf_size / 8;
    1378            0 :                                 else
    1379              :                                         b->yy_buf_size *= 2;
    1380            0 : 
    1381              :                                 b->yy_ch_buf = (char *)
    1382            0 :                                         /* Include room in for 2 EOB chars. */
    1383            0 :                                         yyrealloc( (void *) b->yy_ch_buf,
    1384              :                                                          (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
    1385              :                                 }
    1386              :                         else
    1387            0 :                                 /* Can't grow it, we don't own it. */
    1388              :                                 b->yy_ch_buf = NULL;
    1389            0 : 
    1390            0 :                         if ( ! b->yy_ch_buf )
    1391              :                                 YY_FATAL_ERROR(
    1392              :                                 "fatal error - scanner input buffer overflow" );
    1393            0 : 
    1394              :                         yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
    1395            0 : 
    1396              :                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
    1397              :                                                 number_to_move - 1;
    1398              : 
    1399              :                         }
    1400           16 : 
    1401           16 :                 if ( num_to_read > YY_READ_BUF_SIZE )
    1402              :                         num_to_read = YY_READ_BUF_SIZE;
    1403              : 
    1404           16 :                 /* Read in more data. */
    1405              :                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
    1406              :                         yyg->yy_n_chars, num_to_read );
    1407           16 : 
    1408              :                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
    1409              :                 }
    1410           16 : 
    1411              :         if ( yyg->yy_n_chars == 0 )
    1412            8 :                 {
    1413              :                 if ( number_to_move == YY_MORE_ADJ )
    1414            8 :                         {
    1415            8 :                         ret_val = EOB_ACT_END_OF_FILE;
    1416              :                         yyrestart( yyin  , yyscanner);
    1417              :                         }
    1418              : 
    1419              :                 else
    1420            0 :                         {
    1421            0 :                         ret_val = EOB_ACT_LAST_MATCH;
    1422              :                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
    1423              :                                 YY_BUFFER_EOF_PENDING;
    1424              :                         }
    1425              :                 }
    1426              : 
    1427            8 :         else
    1428              :                 ret_val = EOB_ACT_CONTINUE_SCAN;
    1429           16 : 
    1430              :         if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
    1431            0 :                 /* Extend the array by 50%, plus the number we really need. */
    1432            0 :                 int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
    1433            0 :                 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
    1434            0 :                         (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner );
    1435            0 :                 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
    1436              :                         YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
    1437            0 :                 /* "- 2" to take care of EOB's */
    1438              :                 YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
    1439              :         }
    1440           16 : 
    1441           16 :         yyg->yy_n_chars += number_to_move;
    1442           16 :         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
    1443              :         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
    1444           16 : 
    1445              :         yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
    1446           16 : 
    1447              :         return ret_val;
    1448              : }
    1449              : 
    1450              : /* yy_get_previous_state - get the state just before the EOB char was reached */
    1451              : 
    1452              : /* %if-c-only */
    1453            8 : /* %not-for-header */
    1454              :     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
    1455              : /* %endif */
    1456              : /* %if-c++-only */
    1457              : /* %endif */
    1458              : {
    1459              :         yy_state_type yy_current_state;
    1460            8 :         char *yy_cp;
    1461              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    1462              : 
    1463            8 : /* %% [15.0] code to get the start state into yy_current_state goes here */
    1464              :         yy_current_state = yyg->yy_start;
    1465            8 : 
    1466              :         for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
    1467              :                 {
    1468            0 : /* %% [16.0] code to find the next state goes here */
    1469            0 :                 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
    1470              :                 if ( yy_accept[yy_current_state] )
    1471            0 :                         {
    1472            0 :                         yyg->yy_last_accepting_state = yy_current_state;
    1473              :                         yyg->yy_last_accepting_cpos = yy_cp;
    1474            0 :                         }
    1475              :                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
    1476            0 :                         {
    1477            0 :                         yy_current_state = (int) yy_def[yy_current_state];
    1478            0 :                         if ( yy_current_state >= 57 )
    1479              :                                 yy_c = yy_meta[yy_c];
    1480            0 :                         }
    1481              :                 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
    1482              :                 }
    1483            8 : 
    1484              :         return yy_current_state;
    1485              : }
    1486              : 
    1487              : /* yy_try_NUL_trans - try to make a transition on the NUL character
    1488              :  *
    1489              :  * synopsis
    1490              :  *      next_state = yy_try_NUL_trans( current_state );
    1491              :  */
    1492            0 : /* %if-c-only */
    1493              :     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
    1494              : /* %endif */
    1495              : /* %if-c++-only */
    1496              : /* %endif */
    1497              : {
    1498            0 :         int yy_is_jam;
    1499              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
    1500            0 : /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
    1501              :         char *yy_cp = yyg->yy_c_buf_p;
    1502            0 : 
    1503            0 :         YY_CHAR yy_c = 1;
    1504              :         if ( yy_accept[yy_current_state] )
    1505            0 :                 {
    1506            0 :                 yyg->yy_last_accepting_state = yy_current_state;
    1507              :                 yyg->yy_last_accepting_cpos = yy_cp;
    1508            0 :                 }
    1509              :         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
    1510            0 :                 {
    1511            0 :                 yy_current_state = (int) yy_def[yy_current_state];
    1512            0 :                 if ( yy_current_state >= 57 )
    1513              :                         yy_c = yy_meta[yy_c];
    1514            0 :                 }
    1515            0 :         yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
    1516              :         yy_is_jam = (yy_current_state == 56);
    1517              : 
    1518            0 :         (void)yyg;
    1519              :         return yy_is_jam ? 0 : yy_current_state;
    1520              : }
    1521              : 
    1522              : #ifndef YY_NO_UNPUT
    1523              : /* %if-c-only */
    1524              : 
    1525              : /* %endif */
    1526              : #endif
    1527              : 
    1528              : /* %if-c-only */
    1529              : #ifndef YY_NO_INPUT
    1530              : #ifdef __cplusplus
    1531              :     static int yyinput (yyscan_t yyscanner)
    1532              : #else
    1533              :     static int input  (yyscan_t yyscanner)
    1534              : #endif
    1535              : 
    1536              : /* %endif */
    1537              : /* %if-c++-only */
    1538              : /* %endif */
    1539              : {
    1540              :         int c;
    1541              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    1542              : 
    1543              :         *yyg->yy_c_buf_p = yyg->yy_hold_char;
    1544              : 
    1545              :         if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
    1546              :                 {
    1547              :                 /* yy_c_buf_p now points to the character we want to return.
    1548              :                  * If this occurs *before* the EOB characters, then it's a
    1549              :                  * valid NUL; if not, then we've hit the end of the buffer.
    1550              :                  */
    1551              :                 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
    1552              :                         /* This was really a NUL. */
    1553              :                         *yyg->yy_c_buf_p = '\0';
    1554              : 
    1555              :                 else
    1556              :                         { /* need more input */
    1557              :                         int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr);
    1558              :                         ++yyg->yy_c_buf_p;
    1559              : 
    1560              :                         switch ( yy_get_next_buffer( yyscanner ) )
    1561              :                                 {
    1562              :                                 case EOB_ACT_LAST_MATCH:
    1563              :                                         /* This happens because yy_g_n_b()
    1564              :                                          * sees that we've accumulated a
    1565              :                                          * token and flags that we need to
    1566              :                                          * try matching the token before
    1567              :                                          * proceeding.  But for input(),
    1568              :                                          * there's no matching to consider.
    1569              :                                          * So convert the EOB_ACT_LAST_MATCH
    1570              :                                          * to EOB_ACT_END_OF_FILE.
    1571              :                                          */
    1572              : 
    1573              :                                         /* Reset buffer status. */
    1574              :                                         yyrestart( yyin , yyscanner);
    1575              : 
    1576              :                                         /*FALLTHROUGH*/
    1577              : 
    1578              :                                 case EOB_ACT_END_OF_FILE:
    1579              :                                         {
    1580              :                                         if ( yywrap( yyscanner ) )
    1581              :                                                 return 0;
    1582              : 
    1583              :                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
    1584              :                                                 YY_NEW_FILE;
    1585              : #ifdef __cplusplus
    1586              :                                         return yyinput(yyscanner);
    1587              : #else
    1588              :                                         return input(yyscanner);
    1589              : #endif
    1590              :                                         }
    1591              : 
    1592              :                                 case EOB_ACT_CONTINUE_SCAN:
    1593              :                                         yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
    1594              :                                         break;
    1595              :                                 }
    1596              :                         }
    1597              :                 }
    1598              : 
    1599              :         c = *(unsigned char *) yyg->yy_c_buf_p;      /* cast for 8-bit char's */
    1600              :         *yyg->yy_c_buf_p = '\0';     /* preserve yytext */
    1601              :         yyg->yy_hold_char = *++yyg->yy_c_buf_p;
    1602              : 
    1603              : /* %% [19.0] update BOL and yylineno */
    1604              : 
    1605              :         return c;
    1606              : }
    1607              : /* %if-c-only */
    1608              : #endif  /* ifndef YY_NO_INPUT */
    1609              : /* %endif */
    1610              : 
    1611              : /** Immediately switch to a different input stream.
    1612              :  * @param input_file A readable stream.
    1613              :  * @param yyscanner The scanner object.
    1614              :  * @note This function does not reset the start condition to @c INITIAL .
    1615              :  */
    1616            8 : /* %if-c-only */
    1617              :     void yyrestart  (FILE * input_file , yyscan_t yyscanner)
    1618              : /* %endif */
    1619              : /* %if-c++-only */
    1620              : /* %endif */
    1621            8 : {
    1622              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    1623            8 : 
    1624            0 :         if ( ! YY_CURRENT_BUFFER ){
    1625            0 :         yyensure_buffer_stack (yyscanner);
    1626            0 :                 YY_CURRENT_BUFFER_LVALUE =
    1627              :             yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
    1628              :         }
    1629            8 : 
    1630            8 :         yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner);
    1631            8 :         yy_load_buffer_state( yyscanner );
    1632              : }
    1633              : 
    1634              : /* %if-c++-only */
    1635              : /* %endif */
    1636              : 
    1637              : /** Switch to a different input buffer.
    1638              :  * @param new_buffer The new input buffer.
    1639              :  * @param yyscanner The scanner object.
    1640              :  */
    1641            0 : /* %if-c-only */
    1642              :     void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
    1643              : /* %endif */
    1644              : /* %if-c++-only */
    1645              : /* %endif */
    1646            0 : {
    1647              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    1648              : 
    1649              :         /* TODO. We should be able to replace this entire function body
    1650              :          * with
    1651              :          *              yypop_buffer_state();
    1652              :          *              yypush_buffer_state(new_buffer);
    1653            0 :      */
    1654            0 :         yyensure_buffer_stack (yyscanner);
    1655            0 :         if ( YY_CURRENT_BUFFER == new_buffer )
    1656              :                 return;
    1657            0 : 
    1658              :         if ( YY_CURRENT_BUFFER )
    1659              :                 {
    1660            0 :                 /* Flush out information for old buffer. */
    1661            0 :                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
    1662            0 :                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
    1663              :                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
    1664              :                 }
    1665            0 : 
    1666            0 :         YY_CURRENT_BUFFER_LVALUE = new_buffer;
    1667              :         yy_load_buffer_state( yyscanner );
    1668              : 
    1669              :         /* We don't actually know whether we did this switch during
    1670              :          * EOF (yywrap()) processing, but the only time this flag
    1671              :          * is looked at is after yywrap() is called, so it's safe
    1672              :          * to go ahead and always set it.
    1673            0 :          */
    1674              :         yyg->yy_did_buffer_switch_on_eof = 1;
    1675              : }
    1676              : 
    1677           24 : /* %if-c-only */
    1678              : static void yy_load_buffer_state  (yyscan_t yyscanner)
    1679              : /* %endif */
    1680              : /* %if-c++-only */
    1681              : /* %endif */
    1682           24 : {
    1683           24 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    1684           24 :         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
    1685              :         yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
    1686           24 : /* %if-c-only */
    1687              :         yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
    1688              : /* %endif */
    1689              : /* %if-c++-only */
    1690           24 : /* %endif */
    1691           24 :         yyg->yy_hold_char = *yyg->yy_c_buf_p;
    1692              : }
    1693              : 
    1694              : /** Allocate and initialize an input buffer state.
    1695              :  * @param file A readable stream.
    1696              :  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
    1697              :  * @param yyscanner The scanner object.
    1698              :  * @return the allocated buffer state.
    1699              :  */
    1700            8 : /* %if-c-only */
    1701              :     YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
    1702              : /* %endif */
    1703              : /* %if-c++-only */
    1704              : /* %endif */
    1705              : {
    1706              :         YY_BUFFER_STATE b;
    1707            8 :     
    1708            8 :         b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
    1709            0 :         if ( ! b )
    1710              :                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
    1711            8 : 
    1712              :         b->yy_buf_size = size;
    1713              : 
    1714              :         /* yy_ch_buf has to be 2 characters longer than the size given because
    1715              :          * we need to put in 2 end-of-buffer characters.
    1716            8 :          */
    1717            8 :         b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
    1718            0 :         if ( ! b->yy_ch_buf )
    1719              :                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
    1720            8 : 
    1721              :         b->yy_is_our_buffer = 1;
    1722            8 : 
    1723              :         yy_init_buffer( b, file , yyscanner);
    1724            8 : 
    1725              :         return b;
    1726              : }
    1727              : 
    1728              : /* %if-c++-only */
    1729              : /* %endif */
    1730              : 
    1731              : /** Destroy the buffer.
    1732              :  * @param b a buffer created with yy_create_buffer()
    1733              :  * @param yyscanner The scanner object.
    1734              :  */
    1735            8 : /* %if-c-only */
    1736              :     void yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
    1737              : /* %endif */
    1738              : /* %if-c++-only */
    1739              : /* %endif */
    1740            8 : {
    1741              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    1742            8 : 
    1743            0 :         if ( ! b )
    1744              :                 return;
    1745            8 : 
    1746            8 :         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
    1747              :                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
    1748            8 : 
    1749            8 :         if ( b->yy_is_our_buffer )
    1750              :                 yyfree( (void *) b->yy_ch_buf , yyscanner );
    1751            8 : 
    1752              :         yyfree( (void *) b , yyscanner );
    1753              : }
    1754              : 
    1755              : /* Initializes or reinitializes a buffer.
    1756              :  * This function is sometimes called more than once on the same buffer,
    1757              :  * such as during a yyrestart() or at EOF.
    1758              :  */
    1759           16 : /* %if-c-only */
    1760              :     static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
    1761              : /* %endif */
    1762              : /* %if-c++-only */
    1763              : /* %endif */
    1764              : 
    1765           16 : {
    1766           16 :         int oerrno = errno;
    1767              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    1768           16 : 
    1769              :         yy_flush_buffer( b , yyscanner);
    1770              : 
    1771           16 : /* %if-c-only */
    1772              :         b->yy_input_file = file;
    1773              : /* %endif */
    1774              : /* %if-c++-only */
    1775           16 : /* %endif */
    1776              :         b->yy_fill_buffer = 1;
    1777              : 
    1778              :     /* If b is the current buffer, then yy_init_buffer was _probably_
    1779              :      * called from yyrestart() or through yy_get_next_buffer.
    1780              :      * In that case, we don't want to reset the lineno or column.
    1781           16 :      */
    1782            8 :     if (b != YY_CURRENT_BUFFER){
    1783            8 :         b->yy_bs_lineno = 1;
    1784              :         b->yy_bs_column = 0;
    1785              :     }
    1786              : 
    1787              : /* %if-c-only */
    1788           16 : 
    1789              :         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
    1790              :     
    1791              : /* %endif */
    1792              : /* %if-c++-only */
    1793           16 : /* %endif */
    1794           16 :         errno = oerrno;
    1795              : }
    1796              : 
    1797              : /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
    1798              :  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
    1799              :  * @param yyscanner The scanner object.
    1800              :  */
    1801           16 : /* %if-c-only */
    1802              :     void yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
    1803              : /* %endif */
    1804              : /* %if-c++-only */
    1805              : /* %endif */
    1806           16 : {
    1807           16 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    1808            0 :         if ( ! b )
    1809              :                 return;
    1810           16 : 
    1811              :         b->yy_n_chars = 0;
    1812              : 
    1813              :         /* We always need two end-of-buffer characters.  The first causes
    1814              :          * a transition to the end-of-buffer state.  The second causes
    1815              :          * a jam in that state.
    1816           16 :          */
    1817           16 :         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
    1818              :         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
    1819           16 : 
    1820              :         b->yy_buf_pos = &b->yy_ch_buf[0];
    1821           16 : 
    1822           16 :         b->yy_at_bol = 1;
    1823              :         b->yy_buffer_status = YY_BUFFER_NEW;
    1824           16 : 
    1825            8 :         if ( b == YY_CURRENT_BUFFER )
    1826              :                 yy_load_buffer_state( yyscanner );
    1827              : }
    1828              : 
    1829              : /* %if-c-or-c++ */
    1830              : /** Pushes the new state onto the stack. The new state becomes
    1831              :  *  the current state. This function will allocate the stack
    1832              :  *  if necessary.
    1833              :  *  @param new_buffer The new state.
    1834              :  *  @param yyscanner The scanner object.
    1835              :  */
    1836            0 : /* %if-c-only */
    1837              : void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
    1838              : /* %endif */
    1839              : /* %if-c++-only */
    1840              : /* %endif */
    1841            0 : {
    1842            0 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    1843            0 :         if (new_buffer == NULL)
    1844              :                 return;
    1845            0 : 
    1846              :         yyensure_buffer_stack(yyscanner);
    1847              : 
    1848            0 :         /* This block is copied from yy_switch_to_buffer. */
    1849              :         if ( YY_CURRENT_BUFFER )
    1850              :                 {
    1851            0 :                 /* Flush out information for old buffer. */
    1852            0 :                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
    1853            0 :                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
    1854              :                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
    1855              :                 }
    1856              : 
    1857            0 :         /* Only push if top exists. Otherwise, replace top. */
    1858            0 :         if (YY_CURRENT_BUFFER)
    1859            0 :                 yyg->yy_buffer_stack_top++;
    1860              :         YY_CURRENT_BUFFER_LVALUE = new_buffer;
    1861              : 
    1862            0 :         /* copied from yy_switch_to_buffer. */
    1863            0 :         yy_load_buffer_state( yyscanner );
    1864              :         yyg->yy_did_buffer_switch_on_eof = 1;
    1865              : }
    1866              : /* %endif */
    1867              : 
    1868              : /* %if-c-or-c++ */
    1869              : /** Removes and deletes the top of the stack, if present.
    1870              :  *  The next element becomes the new top.
    1871              :  *  @param yyscanner The scanner object.
    1872              :  */
    1873            8 : /* %if-c-only */
    1874              : void yypop_buffer_state (yyscan_t yyscanner)
    1875              : /* %endif */
    1876              : /* %if-c++-only */
    1877              : /* %endif */
    1878            8 : {
    1879            8 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    1880            8 :         if (!YY_CURRENT_BUFFER)
    1881              :                 return;
    1882            0 : 
    1883            0 :         yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner);
    1884            0 :         YY_CURRENT_BUFFER_LVALUE = NULL;
    1885            0 :         if (yyg->yy_buffer_stack_top > 0)
    1886              :                 --yyg->yy_buffer_stack_top;
    1887            0 : 
    1888            0 :         if (YY_CURRENT_BUFFER) {
    1889            0 :                 yy_load_buffer_state( yyscanner );
    1890              :                 yyg->yy_did_buffer_switch_on_eof = 1;
    1891              :         }
    1892              : }
    1893              : /* %endif */
    1894              : 
    1895              : /* %if-c-or-c++ */
    1896              : /* Allocates the stack if it does not exist.
    1897              :  *  Guarantees space for at least one push.
    1898              :  */
    1899            8 : /* %if-c-only */
    1900              : static void yyensure_buffer_stack (yyscan_t yyscanner)
    1901              : /* %endif */
    1902              : /* %if-c++-only */
    1903              : /* %endif */
    1904              : {
    1905            8 :         yy_size_t num_to_alloc;
    1906              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    1907            8 : 
    1908              :         if (!yyg->yy_buffer_stack) {
    1909              : 
    1910              :                 /* First allocation is just for 2 elements, since we don't know if this
    1911              :                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
    1912              :                  * immediate realloc on the next call.
    1913            8 :          */
    1914            8 :       num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
    1915              :                 yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
    1916              :                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
    1917            8 :                                                                 , yyscanner);
    1918            0 :                 if ( ! yyg->yy_buffer_stack )
    1919              :                         YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
    1920            8 : 
    1921              :                 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
    1922            8 : 
    1923            8 :                 yyg->yy_buffer_stack_max = num_to_alloc;
    1924            8 :                 yyg->yy_buffer_stack_top = 0;
    1925              :                 return;
    1926              :         }
    1927            0 : 
    1928              :         if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
    1929              : 
    1930            0 :                 /* Increase the buffer to prepare for a possible push. */
    1931              :                 yy_size_t grow_size = 8 /* arbitrary grow size */;
    1932            0 : 
    1933            0 :                 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
    1934            0 :                 yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
    1935              :                                                                 (yyg->yy_buffer_stack,
    1936              :                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
    1937            0 :                                                                 , yyscanner);
    1938            0 :                 if ( ! yyg->yy_buffer_stack )
    1939              :                         YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
    1940              : 
    1941            0 :                 /* zero only the new slots.*/
    1942            0 :                 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
    1943              :                 yyg->yy_buffer_stack_max = num_to_alloc;
    1944              :         }
    1945              : }
    1946              : /* %endif */
    1947              : 
    1948              : /* %if-c-only */
    1949              : /** Setup the input buffer state to scan directly from a user-specified character buffer.
    1950              :  * @param base the character buffer
    1951              :  * @param size the size in bytes of the character buffer
    1952              :  * @param yyscanner The scanner object.
    1953              :  * @return the newly allocated buffer state object.
    1954            0 :  */
    1955              : YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
    1956              : {
    1957              :         YY_BUFFER_STATE b;
    1958            0 :     
    1959            0 :         if ( size < 2 ||
    1960            0 :              base[size-2] != YY_END_OF_BUFFER_CHAR ||
    1961              :              base[size-1] != YY_END_OF_BUFFER_CHAR )
    1962            0 :                 /* They forgot to leave room for the EOB's. */
    1963              :                 return NULL;
    1964            0 : 
    1965            0 :         b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
    1966            0 :         if ( ! b )
    1967              :                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
    1968            0 : 
    1969            0 :         b->yy_buf_size = (int) (size - 2);   /* "- 2" to take care of EOB's */
    1970            0 :         b->yy_buf_pos = b->yy_ch_buf = base;
    1971            0 :         b->yy_is_our_buffer = 0;
    1972            0 :         b->yy_input_file = NULL;
    1973            0 :         b->yy_n_chars = b->yy_buf_size;
    1974            0 :         b->yy_is_interactive = 0;
    1975            0 :         b->yy_at_bol = 1;
    1976            0 :         b->yy_fill_buffer = 0;
    1977              :         b->yy_buffer_status = YY_BUFFER_NEW;
    1978            0 : 
    1979              :         yy_switch_to_buffer( b , yyscanner );
    1980            0 : 
    1981              :         return b;
    1982              : }
    1983              : /* %endif */
    1984              : 
    1985              : /* %if-c-only */
    1986              : /** Setup the input buffer state to scan a string. The next call to yylex() will
    1987              :  * scan from a @e copy of @a str.
    1988              :  * @param yystr a NUL-terminated string to scan
    1989              :  * @param yyscanner The scanner object.
    1990              :  * @return the newly allocated buffer state object.
    1991              :  * @note If you want to scan bytes that may contain NUL values, then use
    1992              :  *       yy_scan_bytes() instead.
    1993            0 :  */
    1994              : YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner)
    1995              : {
    1996            0 :     
    1997              :         return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner);
    1998              : }
    1999              : /* %endif */
    2000              : 
    2001              : /* %if-c-only */
    2002              : /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
    2003              :  * scan from a @e copy of @a bytes.
    2004              :  * @param yybytes the byte buffer to scan
    2005              :  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
    2006              :  * @param yyscanner The scanner object.
    2007              :  * @return the newly allocated buffer state object.
    2008            0 :  */
    2009              : YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
    2010              : {
    2011              :         YY_BUFFER_STATE b;
    2012              :         char *buf;
    2013              :         yy_size_t n;
    2014              :         int i;
    2015              :     
    2016            0 :         /* Get memory for full buffer, including space for trailing EOB's. */
    2017            0 :         n = (yy_size_t) (_yybytes_len + 2);
    2018            0 :         buf = (char *) yyalloc( n , yyscanner );
    2019            0 :         if ( ! buf )
    2020              :                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
    2021            0 : 
    2022            0 :         for ( i = 0; i < _yybytes_len; ++i )
    2023              :                 buf[i] = yybytes[i];
    2024            0 : 
    2025              :         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
    2026            0 : 
    2027            0 :         b = yy_scan_buffer( buf, n , yyscanner);
    2028            0 :         if ( ! b )
    2029              :                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
    2030              : 
    2031              :         /* It's okay to grow etc. this buffer, and we should throw it
    2032              :          * away when we're done.
    2033            0 :          */
    2034              :         b->yy_is_our_buffer = 1;
    2035            0 : 
    2036              :         return b;
    2037              : }
    2038              : /* %endif */
    2039              : 
    2040              : #ifndef YY_EXIT_FAILURE
    2041              : #define YY_EXIT_FAILURE 2
    2042              : #endif
    2043              : 
    2044            0 : /* %if-c-only */
    2045              : static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner)
    2046            0 : {
    2047              :         struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2048            0 :         (void)yyg;
    2049            0 :         fprintf( stderr, "%s\n", msg );
    2050              :         exit( YY_EXIT_FAILURE );
    2051              : }
    2052              : /* %endif */
    2053              : /* %if-c++-only */
    2054              : /* %endif */
    2055              : 
    2056              : /* Redefine yyless() so it works in section 3 code. */
    2057              : 
    2058              : #undef yyless
    2059              : #define yyless(n) \
    2060              :         do \
    2061              :                 { \
    2062              :                 /* Undo effects of setting up yytext. */ \
    2063              :         int yyless_macro_arg = (n); \
    2064              :         YY_LESS_LINENO(yyless_macro_arg);\
    2065              :                 yytext[yyleng] = yyg->yy_hold_char; \
    2066              :                 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
    2067              :                 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
    2068              :                 *yyg->yy_c_buf_p = '\0'; \
    2069              :                 yyleng = yyless_macro_arg; \
    2070              :                 } \
    2071              :         while ( 0 )
    2072              : 
    2073              : /* Accessor  methods (get/set functions) to struct members. */
    2074              : 
    2075              : /* %if-c-only */
    2076              : /* %if-reentrant */
    2077              : 
    2078              : /** Get the user-defined data for this scanner.
    2079              :  * @param yyscanner The scanner object.
    2080            0 :  */
    2081              : YY_EXTRA_TYPE yyget_extra  (yyscan_t yyscanner)
    2082            0 : {
    2083            0 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2084              :     return yyextra;
    2085              : }
    2086              : 
    2087              : /* %endif */
    2088              : 
    2089              : /** Get the current line number.
    2090              :  * @param yyscanner The scanner object.
    2091            0 :  */
    2092              : int yyget_lineno  (yyscan_t yyscanner)
    2093            0 : {
    2094              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2095            0 : 
    2096            0 :         if (! YY_CURRENT_BUFFER)
    2097              :             return 0;
    2098            0 :     
    2099              :     return yylineno;
    2100              : }
    2101              : 
    2102              : /** Get the current column number.
    2103              :  * @param yyscanner The scanner object.
    2104            0 :  */
    2105              : int yyget_column  (yyscan_t yyscanner)
    2106            0 : {
    2107              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2108            0 : 
    2109            0 :         if (! YY_CURRENT_BUFFER)
    2110              :             return 0;
    2111            0 :     
    2112              :     return yycolumn;
    2113              : }
    2114              : 
    2115              : /** Get the input stream.
    2116              :  * @param yyscanner The scanner object.
    2117            0 :  */
    2118              : FILE *yyget_in  (yyscan_t yyscanner)
    2119            0 : {
    2120            0 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2121              :     return yyin;
    2122              : }
    2123              : 
    2124              : /** Get the output stream.
    2125              :  * @param yyscanner The scanner object.
    2126            0 :  */
    2127              : FILE *yyget_out  (yyscan_t yyscanner)
    2128            0 : {
    2129            0 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2130              :     return yyout;
    2131              : }
    2132              : 
    2133              : /** Get the length of the current token.
    2134              :  * @param yyscanner The scanner object.
    2135            0 :  */
    2136              : int yyget_leng  (yyscan_t yyscanner)
    2137            0 : {
    2138            0 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2139              :     return yyleng;
    2140              : }
    2141              : 
    2142              : /** Get the current token.
    2143              :  * @param yyscanner The scanner object.
    2144              :  */
    2145            0 : 
    2146              : char *yyget_text  (yyscan_t yyscanner)
    2147            0 : {
    2148            0 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2149              :     return yytext;
    2150              : }
    2151              : 
    2152              : /* %if-reentrant */
    2153              : 
    2154              : /** Set the user-defined data. This data is never touched by the scanner.
    2155              :  * @param user_defined The data to be associated with this scanner.
    2156              :  * @param yyscanner The scanner object.
    2157           16 :  */
    2158              : void yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
    2159           16 : {
    2160           16 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2161           16 :     yyextra = user_defined ;
    2162              : }
    2163              : 
    2164              : /* %endif */
    2165              : 
    2166              : /** Set the current line number.
    2167              :  * @param _line_number line number
    2168              :  * @param yyscanner The scanner object.
    2169            0 :  */
    2170              : void yyset_lineno (int  _line_number , yyscan_t yyscanner)
    2171            0 : {
    2172              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2173              : 
    2174            0 :         /* lineno is only valid if an input buffer exists. */
    2175            0 :         if (! YY_CURRENT_BUFFER )
    2176              :            YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
    2177            0 :     
    2178            0 :     yylineno = _line_number;
    2179              : }
    2180              : 
    2181              : /** Set the current column.
    2182              :  * @param _column_no column number
    2183              :  * @param yyscanner The scanner object.
    2184            0 :  */
    2185              : void yyset_column (int  _column_no , yyscan_t yyscanner)
    2186            0 : {
    2187              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2188              : 
    2189            0 :         /* column is only valid if an input buffer exists. */
    2190            0 :         if (! YY_CURRENT_BUFFER )
    2191              :            YY_FATAL_ERROR( "yyset_column called with no buffer" );
    2192            0 :     
    2193            0 :     yycolumn = _column_no;
    2194              : }
    2195              : 
    2196              : /** Set the input stream. This does not discard the current
    2197              :  * input buffer.
    2198              :  * @param _in_str A readable stream.
    2199              :  * @param yyscanner The scanner object.
    2200              :  * @see yy_switch_to_buffer
    2201            8 :  */
    2202              : void yyset_in (FILE *  _in_str , yyscan_t yyscanner)
    2203            8 : {
    2204            8 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2205            8 :     yyin = _in_str ;
    2206              : }
    2207            0 : 
    2208              : void yyset_out (FILE *  _out_str , yyscan_t yyscanner)
    2209            0 : {
    2210            0 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2211            0 :     yyout = _out_str ;
    2212              : }
    2213            0 : 
    2214              : int yyget_debug  (yyscan_t yyscanner)
    2215            0 : {
    2216            0 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2217              :     return yy_flex_debug;
    2218              : }
    2219            0 : 
    2220              : void yyset_debug (int  _bdebug , yyscan_t yyscanner)
    2221            0 : {
    2222            0 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2223            0 :     yy_flex_debug = _bdebug ;
    2224              : }
    2225              : 
    2226              : /* %endif */
    2227              : 
    2228              : /* %if-reentrant */
    2229              : /* Accessor methods for yylval and yylloc */
    2230              : 
    2231              : /* %if-bison-bridge */
    2232            0 : 
    2233              : YYSTYPE * yyget_lval  (yyscan_t yyscanner)
    2234            0 : {
    2235            0 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2236              :     return yylval;
    2237              : }
    2238            0 : 
    2239              : void yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
    2240            0 : {
    2241            0 :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2242            0 :     yylval = yylval_param;
    2243              : }
    2244              : 
    2245              : /* %endif */
    2246              : 
    2247              : /* User-visible API */
    2248              : 
    2249              : /* yylex_init is special because it creates the scanner itself, so it is
    2250              :  * the ONLY reentrant function that doesn't take the scanner as the last argument.
    2251              :  * That's why we explicitly handle the declaration, instead of using our macros.
    2252            0 :  */
    2253              : int yylex_init(yyscan_t* ptr_yy_globals)
    2254            0 : {
    2255            0 :     if (ptr_yy_globals == NULL){
    2256            0 :         errno = EINVAL;
    2257              :         return 1;
    2258              :     }
    2259            0 : 
    2260              :     *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
    2261            0 : 
    2262            0 :     if (*ptr_yy_globals == NULL){
    2263            0 :         errno = ENOMEM;
    2264              :         return 1;
    2265              :     }
    2266              : 
    2267            0 :     /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
    2268              :     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
    2269            0 : 
    2270              :     return yy_init_globals ( *ptr_yy_globals );
    2271              : }
    2272              : 
    2273              : /* yylex_init_extra has the same functionality as yylex_init, but follows the
    2274              :  * convention of taking the scanner as the last argument. Note however, that
    2275              :  * this is a *pointer* to a scanner, as it will be allocated by this call (and
    2276              :  * is the reason, too, why this function also must handle its own declaration).
    2277              :  * The user defined value in the first argument will be available to yyalloc in
    2278              :  * the yyextra field.
    2279            8 :  */
    2280              : int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals )
    2281              : {
    2282              :     struct yyguts_t dummy_yyguts;
    2283            8 : 
    2284              :     yyset_extra (yy_user_defined, &dummy_yyguts);
    2285            8 : 
    2286            0 :     if (ptr_yy_globals == NULL){
    2287            0 :         errno = EINVAL;
    2288              :         return 1;
    2289              :     }
    2290            8 : 
    2291              :     *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
    2292            8 : 
    2293            0 :     if (*ptr_yy_globals == NULL){
    2294            0 :         errno = ENOMEM;
    2295              :         return 1;
    2296              :     }
    2297              : 
    2298              :     /* By setting to 0xAA, we expose bugs in
    2299            8 :     yy_init_globals. Leave at 0x00 for releases. */
    2300              :     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
    2301            8 : 
    2302              :     yyset_extra (yy_user_defined, *ptr_yy_globals);
    2303            8 : 
    2304              :     return yy_init_globals ( *ptr_yy_globals );
    2305              : }
    2306              : 
    2307              : /* %endif if-c-only */
    2308              : 
    2309           16 : /* %if-c-only */
    2310              : static int yy_init_globals (yyscan_t yyscanner)
    2311           16 : {
    2312              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2313              :     /* Initialization is the same as for the non-reentrant scanner.
    2314              :      * This function is called from yylex_destroy(), so don't allocate here.
    2315              :      */
    2316           16 : 
    2317           16 :     yyg->yy_buffer_stack = NULL;
    2318           16 :     yyg->yy_buffer_stack_top = 0;
    2319           16 :     yyg->yy_buffer_stack_max = 0;
    2320           16 :     yyg->yy_c_buf_p = NULL;
    2321           16 :     yyg->yy_init = 0;
    2322              :     yyg->yy_start = 0;
    2323           16 : 
    2324           16 :     yyg->yy_start_stack_ptr = 0;
    2325           16 :     yyg->yy_start_stack_depth = 0;
    2326              :     yyg->yy_start_stack =  NULL;
    2327              : 
    2328              : /* Defined in main.c */
    2329              : #ifdef YY_STDINIT
    2330              :     yyin = stdin;
    2331              :     yyout = stdout;
    2332           16 : #else
    2333           16 :     yyin = NULL;
    2334              :     yyout = NULL;
    2335              : #endif
    2336              : 
    2337              :     /* For future reference: Set errno on error, since we are called by
    2338              :      * yylex_init()
    2339           16 :      */
    2340              :     return 0;
    2341              : }
    2342              : /* %endif */
    2343              : 
    2344              : /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
    2345            8 : /* yylex_destroy is for both reentrant and non-reentrant scanners. */
    2346              : int yylex_destroy  (yyscan_t yyscanner)
    2347            8 : {
    2348              :     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2349              : 
    2350           16 :     /* Pop the buffer stack, destroying each element. */
    2351            8 :         while(YY_CURRENT_BUFFER){
    2352            8 :                 yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner );
    2353            8 :                 YY_CURRENT_BUFFER_LVALUE = NULL;
    2354              :                 yypop_buffer_state(yyscanner);
    2355              :         }
    2356              : 
    2357            8 :         /* Destroy the stack itself. */
    2358            8 :         yyfree(yyg->yy_buffer_stack , yyscanner);
    2359              :         yyg->yy_buffer_stack = NULL;
    2360              : 
    2361            8 :     /* Destroy the start condition stack. */
    2362            8 :         yyfree( yyg->yy_start_stack , yyscanner );
    2363              :         yyg->yy_start_stack = NULL;
    2364              : 
    2365              :     /* Reset the globals. This is important in a non-reentrant scanner so the next time
    2366            8 :      * yylex() is called, initialization will occur. */
    2367              :     yy_init_globals( yyscanner);
    2368              : 
    2369              : /* %if-reentrant */
    2370            8 :     /* Destroy the main struct (reentrant only). */
    2371            8 :     yyfree ( yyscanner , yyscanner );
    2372              :     yyscanner = NULL;
    2373            8 : /* %endif */
    2374              :     return 0;
    2375              : }
    2376              : /* %endif */
    2377              : 
    2378              : /*
    2379              :  * Internal utility routines.
    2380              :  */
    2381              : 
    2382              : #ifndef yytext_ptr
    2383              : static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner)
    2384              : {
    2385              :         struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2386              :         (void)yyg;
    2387              : 
    2388              :         int i;
    2389              :         for ( i = 0; i < n; ++i )
    2390              :                 s1[i] = s2[i];
    2391              : }
    2392              : #endif
    2393              : 
    2394              : #ifdef YY_NEED_STRLEN
    2395              : static int yy_flex_strlen (const char * s , yyscan_t yyscanner)
    2396              : {
    2397              :         int n;
    2398              :         for ( n = 0; s[n]; ++n )
    2399              :                 ;
    2400              : 
    2401              :         return n;
    2402              : }
    2403              : #endif
    2404           32 : 
    2405              : void *yyalloc (yy_size_t  size , yyscan_t yyscanner)
    2406           32 : {
    2407              :         struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2408           32 :         (void)yyg;
    2409              :         return malloc(size);
    2410              : }
    2411            0 : 
    2412              : void *yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
    2413            0 : {
    2414              :         struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2415              :         (void)yyg;
    2416              : 
    2417              :         /* The cast to (char *) in the following accommodates both
    2418              :          * implementations that use char* generic pointers, and those
    2419              :          * that use void* generic pointers.  It works with the latter
    2420              :          * because both ANSI C and C++ allow castless assignment from
    2421              :          * any pointer type to void*, and deal with argument conversions
    2422              :          * as though doing an assignment.
    2423            0 :          */
    2424              :         return realloc(ptr, size);
    2425              : }
    2426           40 : 
    2427              : void yyfree (void * ptr , yyscan_t yyscanner)
    2428           40 : {
    2429              :         struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    2430           40 :         (void)yyg;
    2431           40 :         free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
    2432              : }
    2433              : 
    2434              : /* %if-tables-serialization definitions */
    2435              : /* %define-yytables   The name for this specific scanner's tables. */
    2436              : #define YYTABLES_NAME "yytables"
    2437              : /* %endif */
    2438              : 
    2439              : /* %ok-for-header */
    2440              : 
    2441              : #line 108 "lexer.l"
    2442              : 
    2443              : 
        

Generated by: LCOV version 2.0-1