back to topotato report
topotato coverage report
Current view: top level - lib - command_lex.c (source / functions) Hit Total Coverage
Test: test_pim_cbsr.py::PIMCandidateBSRTest Lines: 208 471 44.2 %
Date: 2023-02-16 02:09:14 Functions: 15 42 35.7 %

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

Generated by: LCOV version v1.16-topotato