LCOV - code coverage report
Current view: top level - bin/default/third_party/heimdal/lib/hx509 - sel-lex.lex.c (source / functions) Hit Total Coverage
Test: coverage report for master 2f515e9b Lines: 0 479 0.0 %
Date: 2024-04-21 15:09:00 Functions: 0 37 0.0 %

          Line data    Source code
       1             : 
       2             : #define  YY_INT_ALIGNED short int
       3             : 
       4             : /* A lexical scanner generated by flex */
       5             : 
       6             : #define FLEX_SCANNER
       7             : #define YY_FLEX_MAJOR_VERSION 2
       8             : #define YY_FLEX_MINOR_VERSION 6
       9             : #define YY_FLEX_SUBMINOR_VERSION 4
      10             : #if YY_FLEX_SUBMINOR_VERSION > 0
      11             : #define FLEX_BETA
      12             : #endif
      13             : 
      14             : /* First, we deal with  platform-specific or compiler-specific issues. */
      15             : 
      16             : /* begin standard C headers. */
      17             : #include <stdio.h>
      18             : #include <string.h>
      19             : #include <errno.h>
      20             : #include <stdlib.h>
      21             : 
      22             : /* end standard C headers. */
      23             : 
      24             : /* flex integer type definitions */
      25             : 
      26             : #ifndef FLEXINT_H
      27             : #define FLEXINT_H
      28             : 
      29             : /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
      30             : 
      31             : #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
      32             : 
      33             : /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
      34             :  * if you want the limit (max/min) macros for int types. 
      35             :  */
      36             : #ifndef __STDC_LIMIT_MACROS
      37             : #define __STDC_LIMIT_MACROS 1
      38             : #endif
      39             : 
      40             : #include <inttypes.h>
      41             : typedef int8_t flex_int8_t;
      42             : typedef uint8_t flex_uint8_t;
      43             : typedef int16_t flex_int16_t;
      44             : typedef uint16_t flex_uint16_t;
      45             : typedef int32_t flex_int32_t;
      46             : typedef uint32_t flex_uint32_t;
      47             : #else
      48             : typedef signed char flex_int8_t;
      49             : typedef short int flex_int16_t;
      50             : typedef int flex_int32_t;
      51             : typedef unsigned char flex_uint8_t; 
      52             : typedef unsigned short int flex_uint16_t;
      53             : typedef unsigned int flex_uint32_t;
      54             : 
      55             : /* Limits of integral types. */
      56             : #ifndef INT8_MIN
      57             : #define INT8_MIN               (-128)
      58             : #endif
      59             : #ifndef INT16_MIN
      60             : #define INT16_MIN              (-32767-1)
      61             : #endif
      62             : #ifndef INT32_MIN
      63             : #define INT32_MIN              (-2147483647-1)
      64             : #endif
      65             : #ifndef INT8_MAX
      66             : #define INT8_MAX               (127)
      67             : #endif
      68             : #ifndef INT16_MAX
      69             : #define INT16_MAX              (32767)
      70             : #endif
      71             : #ifndef INT32_MAX
      72             : #define INT32_MAX              (2147483647)
      73             : #endif
      74             : #ifndef UINT8_MAX
      75             : #define UINT8_MAX              (255U)
      76             : #endif
      77             : #ifndef UINT16_MAX
      78             : #define UINT16_MAX             (65535U)
      79             : #endif
      80             : #ifndef UINT32_MAX
      81             : #define UINT32_MAX             (4294967295U)
      82             : #endif
      83             : 
      84             : #ifndef SIZE_MAX
      85             : #define SIZE_MAX               (~(size_t)0)
      86             : #endif
      87             : 
      88             : #endif /* ! C99 */
      89             : 
      90             : #endif /* ! FLEXINT_H */
      91             : 
      92             : /* begin standard C++ headers. */
      93             : 
      94             : /* TODO: this is always defined, so inline it */
      95             : #define yyconst const
      96             : 
      97             : #if defined(__GNUC__) && __GNUC__ >= 3
      98             : #define yynoreturn __attribute__((__noreturn__))
      99             : #else
     100             : #define yynoreturn
     101             : #endif
     102             : 
     103             : /* Returned upon end-of-file. */
     104             : #define YY_NULL 0
     105             : 
     106             : /* Promotes a possibly negative, possibly signed char to an
     107             :  *   integer in range [0..255] for use as an array index.
     108             :  */
     109             : #define YY_SC_TO_UI(c) ((YY_CHAR) (c))
     110             : 
     111             : /* Enter a start condition.  This macro really ought to take a parameter,
     112             :  * but we do it the disgusting crufty way forced on us by the ()-less
     113             :  * definition of BEGIN.
     114             :  */
     115             : #define BEGIN (yy_start) = 1 + 2 *
     116             : /* Translate the current start state into a value that can be later handed
     117             :  * to BEGIN to return to the state.  The YYSTATE alias is for lex
     118             :  * compatibility.
     119             :  */
     120             : #define YY_START (((yy_start) - 1) / 2)
     121             : #define YYSTATE YY_START
     122             : /* Action number for EOF rule of a given start state. */
     123             : #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
     124             : /* Special action meaning "start processing a new file". */
     125             : #define YY_NEW_FILE yyrestart( yyin  )
     126             : #define YY_END_OF_BUFFER_CHAR 0
     127             : 
     128             : /* Size of default input buffer. */
     129             : #ifndef YY_BUF_SIZE
     130             : #ifdef __ia64__
     131             : /* On IA-64, the buffer size is 16k, not 8k.
     132             :  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
     133             :  * Ditto for the __ia64__ case accordingly.
     134             :  */
     135             : #define YY_BUF_SIZE 32768
     136             : #else
     137             : #define YY_BUF_SIZE 16384
     138             : #endif /* __ia64__ */
     139             : #endif
     140             : 
     141             : /* The state buf must be large enough to hold one state per character in the main buffer.
     142             :  */
     143             : #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
     144             : 
     145             : #ifndef YY_TYPEDEF_YY_BUFFER_STATE
     146             : #define YY_TYPEDEF_YY_BUFFER_STATE
     147             : typedef struct yy_buffer_state *YY_BUFFER_STATE;
     148             : #endif
     149             : 
     150             : #ifndef YY_TYPEDEF_YY_SIZE_T
     151             : #define YY_TYPEDEF_YY_SIZE_T
     152             : typedef size_t yy_size_t;
     153             : #endif
     154             : 
     155             : extern int yyleng;
     156             : 
     157             : extern FILE *yyin, *yyout;
     158             : 
     159             : #define EOB_ACT_CONTINUE_SCAN 0
     160             : #define EOB_ACT_END_OF_FILE 1
     161             : #define EOB_ACT_LAST_MATCH 2
     162             :     
     163             :     #define YY_LESS_LINENO(n)
     164             :     #define YY_LINENO_REWIND_TO(ptr)
     165             :     
     166             : /* Return all but the first "n" matched characters back to the input stream. */
     167             : #define yyless(n) \
     168             :         do \
     169             :                 { \
     170             :                 /* Undo effects of setting up yytext. */ \
     171             :         int yyless_macro_arg = (n); \
     172             :         YY_LESS_LINENO(yyless_macro_arg);\
     173             :                 *yy_cp = (yy_hold_char); \
     174             :                 YY_RESTORE_YY_MORE_OFFSET \
     175             :                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
     176             :                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
     177             :                 } \
     178             :         while ( 0 )
     179             : #define unput(c) yyunput( c, (yytext_ptr)  )
     180             : 
     181             : #ifndef YY_STRUCT_YY_BUFFER_STATE
     182             : #define YY_STRUCT_YY_BUFFER_STATE
     183             : struct yy_buffer_state
     184             :         {
     185             :         FILE *yy_input_file;
     186             : 
     187             :         char *yy_ch_buf;                /* input buffer */
     188             :         char *yy_buf_pos;               /* current position in input buffer */
     189             : 
     190             :         /* Size of input buffer in bytes, not including room for EOB
     191             :          * characters.
     192             :          */
     193             :         int yy_buf_size;
     194             : 
     195             :         /* Number of characters read into yy_ch_buf, not including EOB
     196             :          * characters.
     197             :          */
     198             :         int yy_n_chars;
     199             : 
     200             :         /* Whether we "own" the buffer - i.e., we know we created it,
     201             :          * and can realloc() it to grow it, and should free() it to
     202             :          * delete it.
     203             :          */
     204             :         int yy_is_our_buffer;
     205             : 
     206             :         /* Whether this is an "interactive" input source; if so, and
     207             :          * if we're using stdio for input, then we want to use getc()
     208             :          * instead of fread(), to make sure we stop fetching input after
     209             :          * each newline.
     210             :          */
     211             :         int yy_is_interactive;
     212             : 
     213             :         /* Whether we're considered to be at the beginning of a line.
     214             :          * If so, '^' rules will be active on the next match, otherwise
     215             :          * not.
     216             :          */
     217             :         int yy_at_bol;
     218             : 
     219             :     int yy_bs_lineno; /**< The line count. */
     220             :     int yy_bs_column; /**< The column count. */
     221             : 
     222             :         /* Whether to try to fill the input buffer when we reach the
     223             :          * end of it.
     224             :          */
     225             :         int yy_fill_buffer;
     226             : 
     227             :         int yy_buffer_status;
     228             : 
     229             : #define YY_BUFFER_NEW 0
     230             : #define YY_BUFFER_NORMAL 1
     231             :         /* When an EOF's been seen but there's still some text to process
     232             :          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
     233             :          * shouldn't try reading from the input source any more.  We might
     234             :          * still have a bunch of tokens to match, though, because of
     235             :          * possible backing-up.
     236             :          *
     237             :          * When we actually see the EOF, we change the status to "new"
     238             :          * (via yyrestart()), so that the user can continue scanning by
     239             :          * just pointing yyin at a new input file.
     240             :          */
     241             : #define YY_BUFFER_EOF_PENDING 2
     242             : 
     243             :         };
     244             : #endif /* !YY_STRUCT_YY_BUFFER_STATE */
     245             : 
     246             : /* Stack of input buffers. */
     247             : static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
     248             : static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
     249             : static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
     250             : 
     251             : /* We provide macros for accessing buffer states in case in the
     252             :  * future we want to put the buffer states in a more general
     253             :  * "scanner state".
     254             :  *
     255             :  * Returns the top of the stack, or NULL.
     256             :  */
     257             : #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
     258             :                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
     259             :                           : NULL)
     260             : /* Same as previous macro, but useful when we know that the buffer stack is not
     261             :  * NULL or when we need an lvalue. For internal use only.
     262             :  */
     263             : #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
     264             : 
     265             : /* yy_hold_char holds the character lost when yytext is formed. */
     266             : static char yy_hold_char;
     267             : static int yy_n_chars;          /* number of characters read into yy_ch_buf */
     268             : int yyleng;
     269             : 
     270             : /* Points to current character in buffer. */
     271             : static char *yy_c_buf_p = NULL;
     272             : static int yy_init = 0;         /* whether we need to initialize */
     273             : static int yy_start = 0;        /* start state number */
     274             : 
     275             : /* Flag which is used to allow yywrap()'s to do buffer switches
     276             :  * instead of setting up a fresh yyin.  A bit of a hack ...
     277             :  */
     278             : static int yy_did_buffer_switch_on_eof;
     279             : 
     280             : void yyrestart ( FILE *input_file  );
     281             : void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );
     282             : YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );
     283             : void yy_delete_buffer ( YY_BUFFER_STATE b  );
     284             : void yy_flush_buffer ( YY_BUFFER_STATE b  );
     285             : void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );
     286             : void yypop_buffer_state ( void );
     287             : 
     288             : static void yyensure_buffer_stack ( void );
     289             : static void yy_load_buffer_state ( void );
     290             : static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file  );
     291             : #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
     292             : 
     293             : YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );
     294             : YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );
     295             : YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );
     296             : 
     297             : void *yyalloc ( yy_size_t  );
     298             : void *yyrealloc ( void *, yy_size_t  );
     299             : void yyfree ( void *  );
     300             : 
     301             : #define yy_new_buffer yy_create_buffer
     302             : #define yy_set_interactive(is_interactive) \
     303             :         { \
     304             :         if ( ! YY_CURRENT_BUFFER ){ \
     305             :         yyensure_buffer_stack (); \
     306             :                 YY_CURRENT_BUFFER_LVALUE =    \
     307             :             yy_create_buffer( yyin, YY_BUF_SIZE ); \
     308             :         } \
     309             :         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
     310             :         }
     311             : #define yy_set_bol(at_bol) \
     312             :         { \
     313             :         if ( ! YY_CURRENT_BUFFER ){\
     314             :         yyensure_buffer_stack (); \
     315             :                 YY_CURRENT_BUFFER_LVALUE =    \
     316             :             yy_create_buffer( yyin, YY_BUF_SIZE ); \
     317             :         } \
     318             :         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
     319             :         }
     320             : #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
     321             : 
     322             : /* Begin user sect3 */
     323             : typedef flex_uint8_t YY_CHAR;
     324             : 
     325             : FILE *yyin = NULL, *yyout = NULL;
     326             : 
     327             : typedef int yy_state_type;
     328             : 
     329             : extern int yylineno;
     330             : int yylineno = 1;
     331             : 
     332             : extern char *yytext;
     333             : #ifdef yytext_ptr
     334             : #undef yytext_ptr
     335             : #endif
     336             : #define yytext_ptr yytext
     337             : 
     338             : static yy_state_type yy_get_previous_state ( void );
     339             : static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );
     340             : static int yy_get_next_buffer ( void );
     341             : static void yynoreturn yy_fatal_error ( const char* msg  );
     342             : 
     343             : /* Done after the current pattern has been matched and before the
     344             :  * corresponding action - sets up yytext.
     345             :  */
     346             : #define YY_DO_BEFORE_ACTION \
     347             :         (yytext_ptr) = yy_bp; \
     348             :         yyleng = (int) (yy_cp - yy_bp); \
     349             :         (yy_hold_char) = *yy_cp; \
     350             :         *yy_cp = '\0'; \
     351             :         (yy_c_buf_p) = yy_cp;
     352             : #define YY_NUM_RULES 12
     353             : #define YY_END_OF_BUFFER 13
     354             : /* This struct is not used in this scanner,
     355             :    but its presence is necessary. */
     356             : struct yy_trans_info
     357             :         {
     358             :         flex_int32_t yy_verify;
     359             :         flex_int32_t yy_nxt;
     360             :         };
     361             : static const flex_int16_t yy_accept[36] =
     362             :     {   0,
     363             :         0,    0,   13,   12,   11,    9,   10,    8,    7,    7,
     364             :         7,    7,    7,    7,    7,    7,    7,    5,    4,    7,
     365             :         7,    3,    7,    7,    7,    7,    7,    1,    2,    7,
     366             :         7,    7,    7,    6,    0
     367             :     } ;
     368             : 
     369             : static const YY_CHAR yy_ec[256] =
     370             :     {   0,
     371             :         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
     372             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     373             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     374             :         1,    2,    4,    5,    1,    1,    4,    1,    1,    4,
     375             :         4,    1,    1,    4,    6,    4,    1,    6,    6,    6,
     376             :         6,    6,    6,    6,    6,    6,    6,    1,    1,    1,
     377             :         4,    1,    1,    1,    7,    8,    9,   10,   11,   12,
     378             :         8,   13,   14,    8,    8,   15,   16,   17,   18,    8,
     379             :         8,   19,   20,   21,   22,    8,    8,    8,    8,    8,
     380             :         1,    1,    1,    1,    6,    1,    8,    8,    8,    8,
     381             : 
     382             :         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
     383             :         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
     384             :         8,    8,    4,    1,    4,    1,    1,    1,    1,    1,
     385             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     386             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     387             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     388             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     389             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     390             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     391             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     392             : 
     393             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     394             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     395             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     396             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     397             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     398             :         1,    1,    1,    1,    1
     399             :     } ;
     400             : 
     401             : static const YY_CHAR yy_meta[23] =
     402             :     {   0,
     403             :         1,    1,    1,    1,    1,    2,    2,    2,    2,    2,
     404             :         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
     405             :         2,    2
     406             :     } ;
     407             : 
     408             : static const flex_int16_t yy_base[37] =
     409             :     {   0,
     410             :         0,    0,   43,   44,   44,   44,   44,   44,   25,    0,
     411             :        34,   23,   20,   16,    0,   28,   22,    0,    0,   22,
     412             :        12,    0,   13,   17,   20,   19,   13,    0,    0,   21,
     413             :         6,   17,   12,    0,   44,   22
     414             :     } ;
     415             : 
     416             : static const flex_int16_t yy_def[37] =
     417             :     {   0,
     418             :        35,    1,   35,   35,   35,   35,   35,   35,   36,   36,
     419             :        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
     420             :        36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
     421             :        36,   36,   36,   36,    0,   35
     422             :     } ;
     423             : 
     424             : static const flex_int16_t yy_nxt[67] =
     425             :     {   0,
     426             :         4,    5,    6,    7,    8,    4,    9,   10,   10,   10,
     427             :        10,   11,   10,   12,   10,   10,   10,   13,   10,   10,
     428             :        14,   10,   20,   15,   34,   33,   32,   31,   30,   29,
     429             :        28,   27,   26,   25,   21,   24,   23,   22,   19,   18,
     430             :        17,   16,   35,    3,   35,   35,   35,   35,   35,   35,
     431             :        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
     432             :        35,   35,   35,   35,   35,   35
     433             :     } ;
     434             : 
     435             : static const flex_int16_t yy_chk[67] =
     436             :     {   0,
     437             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     438             :         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     439             :         1,    1,   14,   36,   33,   32,   31,   30,   27,   26,
     440             :        25,   24,   23,   21,   14,   20,   17,   16,   13,   12,
     441             :        11,    9,    3,   35,   35,   35,   35,   35,   35,   35,
     442             :        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
     443             :        35,   35,   35,   35,   35,   35
     444             :     } ;
     445             : 
     446             : static yy_state_type yy_last_accepting_state;
     447             : static char *yy_last_accepting_cpos;
     448             : 
     449             : extern int yy_flex_debug;
     450             : int yy_flex_debug = 0;
     451             : 
     452             : /* The intent behind this definition is that it'll catch
     453             :  * any uses of REJECT which flex missed.
     454             :  */
     455             : #define REJECT reject_used_but_not_detected
     456             : #define yymore() yymore_used_but_not_detected
     457             : #define YY_MORE_ADJ 0
     458             : #define YY_RESTORE_YY_MORE_OFFSET
     459             : char *yytext;
     460             : /*
     461             :  * Copyright (c) 2004 - 2017 Kungliga Tekniska Högskolan
     462             :  * (Royal Institute of Technology, Stockholm, Sweden).
     463             :  * All rights reserved.
     464             :  *
     465             :  * Redistribution and use in source and binary forms, with or without
     466             :  * modification, are permitted provided that the following conditions
     467             :  * are met:
     468             :  *
     469             :  * 1. Redistributions of source code must retain the above copyright
     470             :  *    notice, this list of conditions and the following disclaimer.
     471             :  *
     472             :  * 2. Redistributions in binary form must reproduce the above copyright
     473             :  *    notice, this list of conditions and the following disclaimer in the
     474             :  *    documentation and/or other materials provided with the distribution.
     475             :  *
     476             :  * 3. Neither the name of the Institute nor the names of its contributors
     477             :  *    may be used to endorse or promote products derived from this software
     478             :  *    without specific prior written permission.
     479             :  *
     480             :  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
     481             :  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     482             :  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     483             :  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
     484             :  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     485             :  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     486             :  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     487             :  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     488             :  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     489             :  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     490             :  * SUCH DAMAGE.
     491             :  */
     492             : 
     493             : /* $Id$ */
     494             : 
     495             : #ifdef __GNUC__
     496             : #pragma GCC diagnostic ignored "-Wunused-function"
     497             : #endif
     498             : 
     499             : #ifdef HAVE_CONFIG_H
     500             : #include <config.h>
     501             : #endif
     502             : 
     503             : #undef ECHO
     504             : 
     505             : #include <stdio.h>
     506             : #include <string.h>
     507             : #include <stdarg.h>
     508             : #include <stdlib.h>
     509             : #include "sel.h"
     510             : #include "sel-gram.h"
     511             : unsigned lineno = 1;
     512             : 
     513             : static char * handle_string(void);
     514             : static int lex_input(char *, int);
     515             : 
     516             : struct hx_expr_input _hx509_expr_input;
     517             : 
     518             : #ifndef YY_NULL
     519             : #define YY_NULL 0
     520             : #endif
     521             : 
     522             : #define YY_NO_UNPUT 1
     523             : 
     524             : #undef YY_INPUT
     525             : #define YY_INPUT(buf,res,maxsize) (res = lex_input(buf, maxsize))
     526             : 
     527             : #undef ECHO
     528             : 
     529             : #define INITIAL 0
     530             : 
     531             : #ifndef YY_NO_UNISTD_H
     532             : /* Special case for "unistd.h", since it is non-ANSI. We include it way
     533             :  * down here because we want the user's section 1 to have been scanned first.
     534             :  * The user has a chance to override it with an option.
     535             :  */
     536             : #include <unistd.h>
     537             : #endif
     538             : 
     539             : #ifndef YY_EXTRA_TYPE
     540             : #define YY_EXTRA_TYPE void *
     541             : #endif
     542             : 
     543             : static int yy_init_globals ( void );
     544             : 
     545             : /* Accessor methods to globals.
     546             :    These are made visible to non-reentrant scanners for convenience. */
     547             : 
     548             : int yylex_destroy ( void );
     549             : 
     550             : int yyget_debug ( void );
     551             : 
     552             : void yyset_debug ( int debug_flag  );
     553             : 
     554             : YY_EXTRA_TYPE yyget_extra ( void );
     555             : 
     556             : void yyset_extra ( YY_EXTRA_TYPE user_defined  );
     557             : 
     558             : FILE *yyget_in ( void );
     559             : 
     560             : void yyset_in  ( FILE * _in_str  );
     561             : 
     562             : FILE *yyget_out ( void );
     563             : 
     564             : void yyset_out  ( FILE * _out_str  );
     565             : 
     566             :                         int yyget_leng ( void );
     567             : 
     568             : char *yyget_text ( void );
     569             : 
     570             : int yyget_lineno ( void );
     571             : 
     572             : void yyset_lineno ( int _line_number  );
     573             : 
     574             : /* Macros after this point can all be overridden by user definitions in
     575             :  * section 1.
     576             :  */
     577             : 
     578             : #ifndef YY_SKIP_YYWRAP
     579             : #ifdef __cplusplus
     580             : extern "C" int yywrap ( void );
     581             : #else
     582             : extern int yywrap ( void );
     583             : #endif
     584             : #endif
     585             : 
     586             : #ifndef YY_NO_UNPUT
     587             :     
     588             :     static void yyunput ( int c, char *buf_ptr  );
     589             :     
     590             : #endif
     591             : 
     592             : #ifndef yytext_ptr
     593             : static void yy_flex_strncpy ( char *, const char *, int );
     594             : #endif
     595             : 
     596             : #ifdef YY_NEED_STRLEN
     597             : static int yy_flex_strlen ( const char * );
     598             : #endif
     599             : 
     600             : #ifndef YY_NO_INPUT
     601             : #ifdef __cplusplus
     602             : static int yyinput ( void );
     603             : #else
     604             : static int input ( void );
     605             : #endif
     606             : 
     607             : #endif
     608             : 
     609             : /* Amount of stuff to slurp up with each read. */
     610             : #ifndef YY_READ_BUF_SIZE
     611             : #ifdef __ia64__
     612             : /* On IA-64, the buffer size is 16k, not 8k */
     613             : #define YY_READ_BUF_SIZE 16384
     614             : #else
     615             : #define YY_READ_BUF_SIZE 8192
     616             : #endif /* __ia64__ */
     617             : #endif
     618             : 
     619             : /* Copy whatever the last rule matched to the standard output. */
     620             : #ifndef ECHO
     621             : /* This used to be an fputs(), but since the string might contain NUL's,
     622             :  * we now use fwrite().
     623             :  */
     624             : #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
     625             : #endif
     626             : 
     627             : /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
     628             :  * is returned in "result".
     629             :  */
     630             : #ifndef YY_INPUT
     631             : #define YY_INPUT(buf,result,max_size) \
     632             :         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
     633             :                 { \
     634             :                 int c = '*'; \
     635             :                 int n; \
     636             :                 for ( n = 0; n < max_size && \
     637             :                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
     638             :                         buf[n] = (char) c; \
     639             :                 if ( c == '\n' ) \
     640             :                         buf[n++] = (char) c; \
     641             :                 if ( c == EOF && ferror( yyin ) ) \
     642             :                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
     643             :                 result = n; \
     644             :                 } \
     645             :         else \
     646             :                 { \
     647             :                 errno=0; \
     648             :                 while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
     649             :                         { \
     650             :                         if( errno != EINTR) \
     651             :                                 { \
     652             :                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
     653             :                                 break; \
     654             :                                 } \
     655             :                         errno=0; \
     656             :                         clearerr(yyin); \
     657             :                         } \
     658             :                 }\
     659             : \
     660             : 
     661             : #endif
     662             : 
     663             : /* No semi-colon after return; correct usage is to write "yyterminate();" -
     664             :  * we don't want an extra ';' after the "return" because that will cause
     665             :  * some compilers to complain about unreachable statements.
     666             :  */
     667             : #ifndef yyterminate
     668             : #define yyterminate() return YY_NULL
     669             : #endif
     670             : 
     671             : /* Number of entries by which start-condition stack grows. */
     672             : #ifndef YY_START_STACK_INCR
     673             : #define YY_START_STACK_INCR 25
     674             : #endif
     675             : 
     676             : /* Report a fatal error. */
     677             : #ifndef YY_FATAL_ERROR
     678             : #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
     679             : #endif
     680             : 
     681             : /* end tables serialization structures and prototypes */
     682             : 
     683             : /* Default declaration of generated scanner - a define so the user can
     684             :  * easily add parameters.
     685             :  */
     686             : #ifndef YY_DECL
     687             : #define YY_DECL_IS_OURS 1
     688             : 
     689             : extern int yylex (void);
     690             : 
     691             : #define YY_DECL int yylex (void)
     692             : #endif /* !YY_DECL */
     693             : 
     694             : /* Code executed at the beginning of each rule, after yytext and yyleng
     695             :  * have been set up.
     696             :  */
     697             : #ifndef YY_USER_ACTION
     698             : #define YY_USER_ACTION
     699             : #endif
     700             : 
     701             : /* Code executed at the end of each rule. */
     702             : #ifndef YY_BREAK
     703             : #define YY_BREAK /*LINTED*/break;
     704             : #endif
     705             : 
     706             : #define YY_RULE_SETUP \
     707             :         YY_USER_ACTION
     708             : 
     709             : /** The main scanner function which does all the work.
     710             :  */
     711           0 : YY_DECL
     712             : {
     713           0 :         yy_state_type yy_current_state;
     714           0 :         char *yy_cp, *yy_bp;
     715           0 :         int yy_act;
     716             :     
     717           0 :         if ( !(yy_init) )
     718             :                 {
     719           0 :                 (yy_init) = 1;
     720             : 
     721             : #ifdef YY_USER_INIT
     722             :                 YY_USER_INIT;
     723             : #endif
     724             : 
     725           0 :                 if ( ! (yy_start) )
     726           0 :                         (yy_start) = 1; /* first start state */
     727             : 
     728           0 :                 if ( ! yyin )
     729           0 :                         yyin = stdin;
     730             : 
     731           0 :                 if ( ! yyout )
     732           0 :                         yyout = stdout;
     733             : 
     734           0 :                 if ( ! YY_CURRENT_BUFFER ) {
     735           0 :                         yyensure_buffer_stack ();
     736           0 :                         YY_CURRENT_BUFFER_LVALUE =
     737           0 :                                 yy_create_buffer( yyin, YY_BUF_SIZE );
     738             :                 }
     739             : 
     740           0 :                 yy_load_buffer_state(  );
     741             :                 }
     742             : 
     743             :         {
     744             : 
     745           0 :         while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
     746             :                 {
     747           0 :                 yy_cp = (yy_c_buf_p);
     748             : 
     749             :                 /* Support of yytext. */
     750           0 :                 *yy_cp = (yy_hold_char);
     751             : 
     752             :                 /* yy_bp points to the position in yy_ch_buf of the start of
     753             :                  * the current run.
     754             :                  */
     755           0 :                 yy_bp = yy_cp;
     756             : 
     757           0 :                 yy_current_state = (yy_start);
     758           0 : yy_match:
     759           0 :                 do
     760             :                         {
     761           0 :                         YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
     762           0 :                         if ( yy_accept[yy_current_state] )
     763             :                                 {
     764           0 :                                 (yy_last_accepting_state) = yy_current_state;
     765           0 :                                 (yy_last_accepting_cpos) = yy_cp;
     766             :                                 }
     767           0 :                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
     768             :                                 {
     769           0 :                                 yy_current_state = (int) yy_def[yy_current_state];
     770           0 :                                 if ( yy_current_state >= 36 )
     771           0 :                                         yy_c = yy_meta[yy_c];
     772             :                                 }
     773           0 :                         yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
     774           0 :                         ++yy_cp;
     775             :                         }
     776           0 :                 while ( yy_base[yy_current_state] != 44 );
     777             : 
     778           0 : yy_find_action:
     779           0 :                 yy_act = yy_accept[yy_current_state];
     780           0 :                 if ( yy_act == 0 )
     781             :                         { /* have to back up */
     782           0 :                         yy_cp = (yy_last_accepting_cpos);
     783           0 :                         yy_current_state = (yy_last_accepting_state);
     784           0 :                         yy_act = yy_accept[yy_current_state];
     785             :                         }
     786             : 
     787           0 :                 YY_DO_BEFORE_ACTION;
     788             : 
     789           0 : do_action:      /* This label is used only to access EOF actions. */
     790             : 
     791           0 :                 switch ( yy_act )
     792             :         { /* beginning of action switch */
     793           0 :                         case 0: /* must back up */
     794             :                         /* undo the effects of YY_DO_BEFORE_ACTION */
     795           0 :                         *yy_cp = (yy_hold_char);
     796           0 :                         yy_cp = (yy_last_accepting_cpos);
     797           0 :                         yy_current_state = (yy_last_accepting_state);
     798           0 :                         goto yy_find_action;
     799             : 
     800           0 : case 1:
     801             : YY_RULE_SETUP
     802           0 : { return kw_TRUE; }
     803           0 :         YY_BREAK
     804           0 : case 2:
     805             : YY_RULE_SETUP
     806           0 : { return kw_FALSE; }
     807           0 :         YY_BREAK
     808           0 : case 3:
     809             : YY_RULE_SETUP
     810           0 : { return kw_AND; }
     811           0 :         YY_BREAK
     812           0 : case 4:
     813             : YY_RULE_SETUP
     814           0 : { return kw_OR; }
     815           0 :         YY_BREAK
     816           0 : case 5:
     817             : YY_RULE_SETUP
     818           0 : { return kw_IN; }
     819           0 :         YY_BREAK
     820           0 : case 6:
     821             : YY_RULE_SETUP
     822           0 : { return kw_TAILMATCH; }
     823           0 :         YY_BREAK
     824           0 : case 7:
     825             : YY_RULE_SETUP
     826             : {
     827           0 :                           yylval.string = strdup ((const char *)yytext);
     828           0 :                           return IDENTIFIER;
     829             :                         }
     830           0 :         YY_BREAK
     831           0 : case 8:
     832             : YY_RULE_SETUP
     833           0 : { yylval.string = handle_string(); return STRING; }
     834           0 :         YY_BREAK
     835           0 : case 9:
     836             : /* rule 9 can match eol */
     837             : YY_RULE_SETUP
     838           0 : { ++lineno; }
     839           0 :         YY_BREAK
     840           0 : case 10:
     841             : YY_RULE_SETUP
     842           0 : { return *yytext; }
     843             :         YY_BREAK
     844           0 : case 11:
     845             : YY_RULE_SETUP
     846             : ;
     847           0 :         YY_BREAK
     848           0 : case 12:
     849             : YY_RULE_SETUP
     850           0 : ECHO;
     851           0 :         YY_BREAK
     852           0 : case YY_STATE_EOF(INITIAL):
     853           0 :         yyterminate();
     854             : 
     855           0 :         case YY_END_OF_BUFFER:
     856             :                 {
     857             :                 /* Amount of text matched not including the EOB char. */
     858           0 :                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
     859             : 
     860             :                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
     861           0 :                 *yy_cp = (yy_hold_char);
     862             :                 YY_RESTORE_YY_MORE_OFFSET
     863             : 
     864           0 :                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
     865             :                         {
     866             :                         /* We're scanning a new file or input source.  It's
     867             :                          * possible that this happened because the user
     868             :                          * just pointed yyin at a new source and called
     869             :                          * yylex().  If so, then we have to assure
     870             :                          * consistency between YY_CURRENT_BUFFER and our
     871             :                          * globals.  Here is the right place to do so, because
     872             :                          * this is the first action (other than possibly a
     873             :                          * back-up) that will match for the new input source.
     874             :                          */
     875           0 :                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
     876           0 :                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
     877           0 :                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
     878             :                         }
     879             : 
     880             :                 /* Note that here we test for yy_c_buf_p "<=" to the position
     881             :                  * of the first EOB in the buffer, since yy_c_buf_p will
     882             :                  * already have been incremented past the NUL character
     883             :                  * (since all states make transitions on EOB to the
     884             :                  * end-of-buffer state).  Contrast this with the test
     885             :                  * in input().
     886             :                  */
     887           0 :                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
     888             :                         { /* This was really a NUL. */
     889           0 :                         yy_state_type yy_next_state;
     890             : 
     891           0 :                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
     892             : 
     893           0 :                         yy_current_state = yy_get_previous_state(  );
     894             : 
     895             :                         /* Okay, we're now positioned to make the NUL
     896             :                          * transition.  We couldn't have
     897             :                          * yy_get_previous_state() go ahead and do it
     898             :                          * for us because it doesn't know how to deal
     899             :                          * with the possibility of jamming (and we don't
     900             :                          * want to build jamming into it because then it
     901             :                          * will run more slowly).
     902             :                          */
     903             : 
     904           0 :                         yy_next_state = yy_try_NUL_trans( yy_current_state );
     905             : 
     906           0 :                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
     907             : 
     908           0 :                         if ( yy_next_state )
     909             :                                 {
     910             :                                 /* Consume the NUL. */
     911           0 :                                 yy_cp = ++(yy_c_buf_p);
     912           0 :                                 yy_current_state = yy_next_state;
     913           0 :                                 goto yy_match;
     914             :                                 }
     915             : 
     916             :                         else
     917             :                                 {
     918           0 :                                 yy_cp = (yy_c_buf_p);
     919           0 :                                 goto yy_find_action;
     920             :                                 }
     921             :                         }
     922             : 
     923           0 :                 else switch ( yy_get_next_buffer(  ) )
     924             :                         {
     925           0 :                         case EOB_ACT_END_OF_FILE:
     926             :                                 {
     927           0 :                                 (yy_did_buffer_switch_on_eof) = 0;
     928             : 
     929           0 :                                 if ( yywrap(  ) )
     930             :                                         {
     931             :                                         /* Note: because we've taken care in
     932             :                                          * yy_get_next_buffer() to have set up
     933             :                                          * yytext, we can now set up
     934             :                                          * yy_c_buf_p so that if some total
     935             :                                          * hoser (like flex itself) wants to
     936             :                                          * call the scanner after we return the
     937             :                                          * YY_NULL, it'll still work - another
     938             :                                          * YY_NULL will get returned.
     939             :                                          */
     940           0 :                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
     941             : 
     942           0 :                                         yy_act = YY_STATE_EOF(YY_START);
     943           0 :                                         goto do_action;
     944             :                                         }
     945             : 
     946             :                                 else
     947             :                                         {
     948           0 :                                         if ( ! (yy_did_buffer_switch_on_eof) )
     949           0 :                                                 YY_NEW_FILE;
     950             :                                         }
     951           0 :                                 break;
     952             :                                 }
     953             : 
     954           0 :                         case EOB_ACT_CONTINUE_SCAN:
     955           0 :                                 (yy_c_buf_p) =
     956           0 :                                         (yytext_ptr) + yy_amount_of_matched_text;
     957             : 
     958           0 :                                 yy_current_state = yy_get_previous_state(  );
     959             : 
     960           0 :                                 yy_cp = (yy_c_buf_p);
     961           0 :                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
     962           0 :                                 goto yy_match;
     963             : 
     964           0 :                         case EOB_ACT_LAST_MATCH:
     965           0 :                                 (yy_c_buf_p) =
     966           0 :                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
     967             : 
     968           0 :                                 yy_current_state = yy_get_previous_state(  );
     969             : 
     970           0 :                                 yy_cp = (yy_c_buf_p);
     971           0 :                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
     972           0 :                                 goto yy_find_action;
     973             :                         }
     974           0 :                 break;
     975             :                 }
     976             : 
     977           0 :         default:
     978           0 :                 YY_FATAL_ERROR(
     979             :                         "fatal flex scanner internal error--no action found" );
     980             :         } /* end of action switch */
     981             :                 } /* end of scanning one token */
     982             :         } /* end of user's declarations */
     983             : } /* end of yylex */
     984             : 
     985             : /* yy_get_next_buffer - try to read in a new buffer
     986             :  *
     987             :  * Returns a code representing an action:
     988             :  *      EOB_ACT_LAST_MATCH -
     989             :  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
     990             :  *      EOB_ACT_END_OF_FILE - end of file
     991             :  */
     992           0 : static int yy_get_next_buffer (void)
     993             : {
     994           0 :         char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
     995           0 :         char *source = (yytext_ptr);
     996           0 :         int number_to_move, i;
     997           0 :         int ret_val;
     998             : 
     999           0 :         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
    1000           0 :                 YY_FATAL_ERROR(
    1001             :                 "fatal flex scanner internal error--end of buffer missed" );
    1002             : 
    1003           0 :         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
    1004             :                 { /* Don't try to fill the buffer, so this is an EOF. */
    1005           0 :                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
    1006             :                         {
    1007             :                         /* We matched a single character, the EOB, so
    1008             :                          * treat this as a final EOF.
    1009             :                          */
    1010           0 :                         return EOB_ACT_END_OF_FILE;
    1011             :                         }
    1012             : 
    1013             :                 else
    1014             :                         {
    1015             :                         /* We matched some text prior to the EOB, first
    1016             :                          * process it.
    1017             :                          */
    1018           0 :                         return EOB_ACT_LAST_MATCH;
    1019             :                         }
    1020             :                 }
    1021             : 
    1022             :         /* Try to read more data. */
    1023             : 
    1024             :         /* First move last chars to start of buffer. */
    1025           0 :         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
    1026             : 
    1027           0 :         for ( i = 0; i < number_to_move; ++i )
    1028           0 :                 *(dest++) = *(source++);
    1029             : 
    1030           0 :         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
    1031             :                 /* don't do the read, it's not guaranteed to return an EOF,
    1032             :                  * just force an EOF
    1033             :                  */
    1034           0 :                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
    1035             : 
    1036             :         else
    1037             :                 {
    1038           0 :                         int num_to_read =
    1039           0 :                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
    1040             : 
    1041           0 :                 while ( num_to_read <= 0 )
    1042             :                         { /* Not enough room in the buffer - grow it. */
    1043             : 
    1044             :                         /* just a shorter name for the current buffer */
    1045           0 :                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
    1046             : 
    1047           0 :                         int yy_c_buf_p_offset =
    1048           0 :                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
    1049             : 
    1050           0 :                         if ( b->yy_is_our_buffer )
    1051             :                                 {
    1052           0 :                                 int new_size = b->yy_buf_size * 2;
    1053             : 
    1054           0 :                                 if ( new_size <= 0 )
    1055           0 :                                         b->yy_buf_size += b->yy_buf_size / 8;
    1056             :                                 else
    1057           0 :                                         b->yy_buf_size *= 2;
    1058             : 
    1059           0 :                                 b->yy_ch_buf = (char *)
    1060             :                                         /* Include room in for 2 EOB chars. */
    1061           0 :                                         yyrealloc( (void *) b->yy_ch_buf,
    1062           0 :                                                          (yy_size_t) (b->yy_buf_size + 2)  );
    1063             :                                 }
    1064             :                         else
    1065             :                                 /* Can't grow it, we don't own it. */
    1066           0 :                                 b->yy_ch_buf = NULL;
    1067             : 
    1068           0 :                         if ( ! b->yy_ch_buf )
    1069           0 :                                 YY_FATAL_ERROR(
    1070             :                                 "fatal error - scanner input buffer overflow" );
    1071             : 
    1072           0 :                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
    1073             : 
    1074           0 :                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
    1075             :                                                 number_to_move - 1;
    1076             : 
    1077             :                         }
    1078             : 
    1079           0 :                 if ( num_to_read > YY_READ_BUF_SIZE )
    1080           0 :                         num_to_read = YY_READ_BUF_SIZE;
    1081             : 
    1082             :                 /* Read in more data. */
    1083           0 :                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
    1084             :                         (yy_n_chars), num_to_read );
    1085             : 
    1086           0 :                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
    1087             :                 }
    1088             : 
    1089           0 :         if ( (yy_n_chars) == 0 )
    1090             :                 {
    1091           0 :                 if ( number_to_move == YY_MORE_ADJ )
    1092             :                         {
    1093           0 :                         ret_val = EOB_ACT_END_OF_FILE;
    1094           0 :                         yyrestart( yyin  );
    1095             :                         }
    1096             : 
    1097             :                 else
    1098             :                         {
    1099           0 :                         ret_val = EOB_ACT_LAST_MATCH;
    1100           0 :                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
    1101             :                                 YY_BUFFER_EOF_PENDING;
    1102             :                         }
    1103             :                 }
    1104             : 
    1105             :         else
    1106           0 :                 ret_val = EOB_ACT_CONTINUE_SCAN;
    1107             : 
    1108           0 :         if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
    1109             :                 /* Extend the array by 50%, plus the number we really need. */
    1110           0 :                 int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
    1111           0 :                 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
    1112           0 :                         (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );
    1113           0 :                 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
    1114           0 :                         YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
    1115             :                 /* "- 2" to take care of EOB's */
    1116           0 :                 YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
    1117             :         }
    1118             : 
    1119           0 :         (yy_n_chars) += number_to_move;
    1120           0 :         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
    1121           0 :         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
    1122             : 
    1123           0 :         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
    1124             : 
    1125           0 :         return ret_val;
    1126             : }
    1127             : 
    1128             : /* yy_get_previous_state - get the state just before the EOB char was reached */
    1129             : 
    1130           0 :     static yy_state_type yy_get_previous_state (void)
    1131             : {
    1132           0 :         yy_state_type yy_current_state;
    1133           0 :         char *yy_cp;
    1134             :     
    1135           0 :         yy_current_state = (yy_start);
    1136             : 
    1137           0 :         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
    1138             :                 {
    1139           0 :                 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
    1140           0 :                 if ( yy_accept[yy_current_state] )
    1141             :                         {
    1142           0 :                         (yy_last_accepting_state) = yy_current_state;
    1143           0 :                         (yy_last_accepting_cpos) = yy_cp;
    1144             :                         }
    1145           0 :                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
    1146             :                         {
    1147           0 :                         yy_current_state = (int) yy_def[yy_current_state];
    1148           0 :                         if ( yy_current_state >= 36 )
    1149           0 :                                 yy_c = yy_meta[yy_c];
    1150             :                         }
    1151           0 :                 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
    1152             :                 }
    1153             : 
    1154           0 :         return yy_current_state;
    1155             : }
    1156             : 
    1157             : /* yy_try_NUL_trans - try to make a transition on the NUL character
    1158             :  *
    1159             :  * synopsis
    1160             :  *      next_state = yy_try_NUL_trans( current_state );
    1161             :  */
    1162           0 :     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
    1163             : {
    1164           0 :         int yy_is_jam;
    1165           0 :         char *yy_cp = (yy_c_buf_p);
    1166             : 
    1167           0 :         YY_CHAR yy_c = 1;
    1168           0 :         if ( yy_accept[yy_current_state] )
    1169             :                 {
    1170           0 :                 (yy_last_accepting_state) = yy_current_state;
    1171           0 :                 (yy_last_accepting_cpos) = yy_cp;
    1172             :                 }
    1173           0 :         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
    1174             :                 {
    1175           0 :                 yy_current_state = (int) yy_def[yy_current_state];
    1176           0 :                 if ( yy_current_state >= 36 )
    1177           0 :                         yy_c = yy_meta[yy_c];
    1178             :                 }
    1179           0 :         yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
    1180           0 :         yy_is_jam = (yy_current_state == 35);
    1181             : 
    1182           0 :                 return yy_is_jam ? 0 : yy_current_state;
    1183             : }
    1184             : 
    1185             : #ifndef YY_NO_UNPUT
    1186             : 
    1187             :     static void yyunput (int c, char * yy_bp )
    1188             : {
    1189             :         char *yy_cp;
    1190             :     
    1191             :     yy_cp = (yy_c_buf_p);
    1192             : 
    1193             :         /* undo effects of setting up yytext */
    1194             :         *yy_cp = (yy_hold_char);
    1195             : 
    1196             :         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
    1197             :                 { /* need to shift things up to make room */
    1198             :                 /* +2 for EOB chars. */
    1199             :                 int number_to_move = (yy_n_chars) + 2;
    1200             :                 char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
    1201             :                                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
    1202             :                 char *source =
    1203             :                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
    1204             : 
    1205             :                 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
    1206             :                         *--dest = *--source;
    1207             : 
    1208             :                 yy_cp += (int) (dest - source);
    1209             :                 yy_bp += (int) (dest - source);
    1210             :                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
    1211             :                         (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
    1212             : 
    1213             :                 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
    1214             :                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
    1215             :                 }
    1216             : 
    1217             :         *--yy_cp = (char) c;
    1218             : 
    1219             :         (yytext_ptr) = yy_bp;
    1220             :         (yy_hold_char) = *yy_cp;
    1221             :         (yy_c_buf_p) = yy_cp;
    1222             : }
    1223             : 
    1224             : #endif
    1225             : 
    1226             : #ifndef YY_NO_INPUT
    1227             : #ifdef __cplusplus
    1228             :     static int yyinput (void)
    1229             : #else
    1230           0 :     static int input  (void)
    1231             : #endif
    1232             : 
    1233             : {
    1234           0 :         int c;
    1235             :     
    1236           0 :         *(yy_c_buf_p) = (yy_hold_char);
    1237             : 
    1238           0 :         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
    1239             :                 {
    1240             :                 /* yy_c_buf_p now points to the character we want to return.
    1241             :                  * If this occurs *before* the EOB characters, then it's a
    1242             :                  * valid NUL; if not, then we've hit the end of the buffer.
    1243             :                  */
    1244           0 :                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
    1245             :                         /* This was really a NUL. */
    1246           0 :                         *(yy_c_buf_p) = '\0';
    1247             : 
    1248             :                 else
    1249             :                         { /* need more input */
    1250           0 :                         int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
    1251           0 :                         ++(yy_c_buf_p);
    1252             : 
    1253           0 :                         switch ( yy_get_next_buffer(  ) )
    1254             :                                 {
    1255           0 :                                 case EOB_ACT_LAST_MATCH:
    1256             :                                         /* This happens because yy_g_n_b()
    1257             :                                          * sees that we've accumulated a
    1258             :                                          * token and flags that we need to
    1259             :                                          * try matching the token before
    1260             :                                          * proceeding.  But for input(),
    1261             :                                          * there's no matching to consider.
    1262             :                                          * So convert the EOB_ACT_LAST_MATCH
    1263             :                                          * to EOB_ACT_END_OF_FILE.
    1264             :                                          */
    1265             : 
    1266             :                                         /* Reset buffer status. */
    1267           0 :                                         yyrestart( yyin );
    1268             : 
    1269             :                                         /*FALLTHROUGH*/
    1270             : 
    1271           0 :                                 case EOB_ACT_END_OF_FILE:
    1272             :                                         {
    1273           0 :                                         if ( yywrap(  ) )
    1274           0 :                                                 return 0;
    1275             : 
    1276           0 :                                         if ( ! (yy_did_buffer_switch_on_eof) )
    1277           0 :                                                 YY_NEW_FILE;
    1278             : #ifdef __cplusplus
    1279             :                                         return yyinput();
    1280             : #else
    1281           0 :                                         return input();
    1282             : #endif
    1283             :                                         }
    1284             : 
    1285           0 :                                 case EOB_ACT_CONTINUE_SCAN:
    1286           0 :                                         (yy_c_buf_p) = (yytext_ptr) + offset;
    1287           0 :                                         break;
    1288             :                                 }
    1289             :                         }
    1290             :                 }
    1291             : 
    1292           0 :         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
    1293           0 :         *(yy_c_buf_p) = '\0';   /* preserve yytext */
    1294           0 :         (yy_hold_char) = *++(yy_c_buf_p);
    1295             : 
    1296           0 :         return c;
    1297             : }
    1298             : #endif  /* ifndef YY_NO_INPUT */
    1299             : 
    1300             : /** Immediately switch to a different input stream.
    1301             :  * @param input_file A readable stream.
    1302             :  * 
    1303             :  * @note This function does not reset the start condition to @c INITIAL .
    1304             :  */
    1305           0 :     void yyrestart  (FILE * input_file )
    1306             : {
    1307             :     
    1308           0 :         if ( ! YY_CURRENT_BUFFER ){
    1309           0 :         yyensure_buffer_stack ();
    1310           0 :                 YY_CURRENT_BUFFER_LVALUE =
    1311           0 :             yy_create_buffer( yyin, YY_BUF_SIZE );
    1312             :         }
    1313             : 
    1314           0 :         yy_init_buffer( YY_CURRENT_BUFFER, input_file );
    1315           0 :         yy_load_buffer_state(  );
    1316           0 : }
    1317             : 
    1318             : /** Switch to a different input buffer.
    1319             :  * @param new_buffer The new input buffer.
    1320             :  * 
    1321             :  */
    1322           0 :     void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
    1323             : {
    1324             :     
    1325             :         /* TODO. We should be able to replace this entire function body
    1326             :          * with
    1327             :          *              yypop_buffer_state();
    1328             :          *              yypush_buffer_state(new_buffer);
    1329             :      */
    1330           0 :         yyensure_buffer_stack ();
    1331           0 :         if ( YY_CURRENT_BUFFER == new_buffer )
    1332           0 :                 return;
    1333             : 
    1334           0 :         if ( YY_CURRENT_BUFFER )
    1335             :                 {
    1336             :                 /* Flush out information for old buffer. */
    1337           0 :                 *(yy_c_buf_p) = (yy_hold_char);
    1338           0 :                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
    1339           0 :                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
    1340             :                 }
    1341             : 
    1342           0 :         YY_CURRENT_BUFFER_LVALUE = new_buffer;
    1343           0 :         yy_load_buffer_state(  );
    1344             : 
    1345             :         /* We don't actually know whether we did this switch during
    1346             :          * EOF (yywrap()) processing, but the only time this flag
    1347             :          * is looked at is after yywrap() is called, so it's safe
    1348             :          * to go ahead and always set it.
    1349             :          */
    1350           0 :         (yy_did_buffer_switch_on_eof) = 1;
    1351             : }
    1352             : 
    1353           0 : static void yy_load_buffer_state  (void)
    1354             : {
    1355           0 :         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
    1356           0 :         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
    1357           0 :         yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
    1358           0 :         (yy_hold_char) = *(yy_c_buf_p);
    1359           0 : }
    1360             : 
    1361             : /** Allocate and initialize an input buffer state.
    1362             :  * @param file A readable stream.
    1363             :  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
    1364             :  * 
    1365             :  * @return the allocated buffer state.
    1366             :  */
    1367           0 :     YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
    1368             : {
    1369           0 :         YY_BUFFER_STATE b;
    1370             :     
    1371           0 :         b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
    1372           0 :         if ( ! b )
    1373           0 :                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
    1374             : 
    1375           0 :         b->yy_buf_size = size;
    1376             : 
    1377             :         /* yy_ch_buf has to be 2 characters longer than the size given because
    1378             :          * we need to put in 2 end-of-buffer characters.
    1379             :          */
    1380           0 :         b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );
    1381           0 :         if ( ! b->yy_ch_buf )
    1382           0 :                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
    1383             : 
    1384           0 :         b->yy_is_our_buffer = 1;
    1385             : 
    1386           0 :         yy_init_buffer( b, file );
    1387             : 
    1388           0 :         return b;
    1389             : }
    1390             : 
    1391             : /** Destroy the buffer.
    1392             :  * @param b a buffer created with yy_create_buffer()
    1393             :  * 
    1394             :  */
    1395           0 :     void yy_delete_buffer (YY_BUFFER_STATE  b )
    1396             : {
    1397             :     
    1398           0 :         if ( ! b )
    1399           0 :                 return;
    1400             : 
    1401           0 :         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
    1402           0 :                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
    1403             : 
    1404           0 :         if ( b->yy_is_our_buffer )
    1405           0 :                 yyfree( (void *) b->yy_ch_buf  );
    1406             : 
    1407           0 :         yyfree( (void *) b  );
    1408             : }
    1409             : 
    1410             : /* Initializes or reinitializes a buffer.
    1411             :  * This function is sometimes called more than once on the same buffer,
    1412             :  * such as during a yyrestart() or at EOF.
    1413             :  */
    1414           0 :     static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
    1415             : 
    1416             : {
    1417           0 :         int oerrno = errno;
    1418             :     
    1419           0 :         yy_flush_buffer( b );
    1420             : 
    1421           0 :         b->yy_input_file = file;
    1422           0 :         b->yy_fill_buffer = 1;
    1423             : 
    1424             :     /* If b is the current buffer, then yy_init_buffer was _probably_
    1425             :      * called from yyrestart() or through yy_get_next_buffer.
    1426             :      * In that case, we don't want to reset the lineno or column.
    1427             :      */
    1428           0 :     if (b != YY_CURRENT_BUFFER){
    1429           0 :         b->yy_bs_lineno = 1;
    1430           0 :         b->yy_bs_column = 0;
    1431             :     }
    1432             : 
    1433           0 :         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
    1434             :     
    1435           0 :         errno = oerrno;
    1436           0 : }
    1437             : 
    1438             : /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
    1439             :  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
    1440             :  * 
    1441             :  */
    1442           0 :     void yy_flush_buffer (YY_BUFFER_STATE  b )
    1443             : {
    1444           0 :         if ( ! b )
    1445           0 :                 return;
    1446             : 
    1447           0 :         b->yy_n_chars = 0;
    1448             : 
    1449             :         /* We always need two end-of-buffer characters.  The first causes
    1450             :          * a transition to the end-of-buffer state.  The second causes
    1451             :          * a jam in that state.
    1452             :          */
    1453           0 :         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
    1454           0 :         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
    1455             : 
    1456           0 :         b->yy_buf_pos = &b->yy_ch_buf[0];
    1457             : 
    1458           0 :         b->yy_at_bol = 1;
    1459           0 :         b->yy_buffer_status = YY_BUFFER_NEW;
    1460             : 
    1461           0 :         if ( b == YY_CURRENT_BUFFER )
    1462           0 :                 yy_load_buffer_state(  );
    1463             : }
    1464             : 
    1465             : /** Pushes the new state onto the stack. The new state becomes
    1466             :  *  the current state. This function will allocate the stack
    1467             :  *  if necessary.
    1468             :  *  @param new_buffer The new state.
    1469             :  *  
    1470             :  */
    1471           0 : void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
    1472             : {
    1473           0 :         if (new_buffer == NULL)
    1474           0 :                 return;
    1475             : 
    1476           0 :         yyensure_buffer_stack();
    1477             : 
    1478             :         /* This block is copied from yy_switch_to_buffer. */
    1479           0 :         if ( YY_CURRENT_BUFFER )
    1480             :                 {
    1481             :                 /* Flush out information for old buffer. */
    1482           0 :                 *(yy_c_buf_p) = (yy_hold_char);
    1483           0 :                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
    1484           0 :                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
    1485             :                 }
    1486             : 
    1487             :         /* Only push if top exists. Otherwise, replace top. */
    1488           0 :         if (YY_CURRENT_BUFFER)
    1489           0 :                 (yy_buffer_stack_top)++;
    1490           0 :         YY_CURRENT_BUFFER_LVALUE = new_buffer;
    1491             : 
    1492             :         /* copied from yy_switch_to_buffer. */
    1493           0 :         yy_load_buffer_state(  );
    1494           0 :         (yy_did_buffer_switch_on_eof) = 1;
    1495             : }
    1496             : 
    1497             : /** Removes and deletes the top of the stack, if present.
    1498             :  *  The next element becomes the new top.
    1499             :  *  
    1500             :  */
    1501           0 : void yypop_buffer_state (void)
    1502             : {
    1503           0 :         if (!YY_CURRENT_BUFFER)
    1504           0 :                 return;
    1505             : 
    1506           0 :         yy_delete_buffer(YY_CURRENT_BUFFER );
    1507           0 :         YY_CURRENT_BUFFER_LVALUE = NULL;
    1508           0 :         if ((yy_buffer_stack_top) > 0)
    1509           0 :                 --(yy_buffer_stack_top);
    1510             : 
    1511           0 :         if (YY_CURRENT_BUFFER) {
    1512           0 :                 yy_load_buffer_state(  );
    1513           0 :                 (yy_did_buffer_switch_on_eof) = 1;
    1514             :         }
    1515             : }
    1516             : 
    1517             : /* Allocates the stack if it does not exist.
    1518             :  *  Guarantees space for at least one push.
    1519             :  */
    1520           0 : static void yyensure_buffer_stack (void)
    1521             : {
    1522           0 :         yy_size_t num_to_alloc;
    1523             :     
    1524           0 :         if (!(yy_buffer_stack)) {
    1525             : 
    1526             :                 /* First allocation is just for 2 elements, since we don't know if this
    1527             :                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
    1528             :                  * immediate realloc on the next call.
    1529             :          */
    1530           0 :       num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
    1531           0 :                 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
    1532             :                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
    1533             :                                                                 );
    1534           0 :                 if ( ! (yy_buffer_stack) )
    1535           0 :                         YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
    1536             : 
    1537           0 :                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
    1538             : 
    1539           0 :                 (yy_buffer_stack_max) = num_to_alloc;
    1540           0 :                 (yy_buffer_stack_top) = 0;
    1541           0 :                 return;
    1542             :         }
    1543             : 
    1544           0 :         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
    1545             : 
    1546             :                 /* Increase the buffer to prepare for a possible push. */
    1547           0 :                 yy_size_t grow_size = 8 /* arbitrary grow size */;
    1548             : 
    1549           0 :                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
    1550           0 :                 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
    1551             :                                                                 ((yy_buffer_stack),
    1552             :                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
    1553             :                                                                 );
    1554           0 :                 if ( ! (yy_buffer_stack) )
    1555           0 :                         YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
    1556             : 
    1557             :                 /* zero only the new slots.*/
    1558           0 :                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
    1559           0 :                 (yy_buffer_stack_max) = num_to_alloc;
    1560             :         }
    1561             : }
    1562             : 
    1563             : /** Setup the input buffer state to scan directly from a user-specified character buffer.
    1564             :  * @param base the character buffer
    1565             :  * @param size the size in bytes of the character buffer
    1566             :  * 
    1567             :  * @return the newly allocated buffer state object.
    1568             :  */
    1569           0 : YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
    1570             : {
    1571           0 :         YY_BUFFER_STATE b;
    1572             :     
    1573           0 :         if ( size < 2 ||
    1574           0 :              base[size-2] != YY_END_OF_BUFFER_CHAR ||
    1575           0 :              base[size-1] != YY_END_OF_BUFFER_CHAR )
    1576             :                 /* They forgot to leave room for the EOB's. */
    1577           0 :                 return NULL;
    1578             : 
    1579           0 :         b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
    1580           0 :         if ( ! b )
    1581           0 :                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
    1582             : 
    1583           0 :         b->yy_buf_size = (int) (size - 2);   /* "- 2" to take care of EOB's */
    1584           0 :         b->yy_buf_pos = b->yy_ch_buf = base;
    1585           0 :         b->yy_is_our_buffer = 0;
    1586           0 :         b->yy_input_file = NULL;
    1587           0 :         b->yy_n_chars = b->yy_buf_size;
    1588           0 :         b->yy_is_interactive = 0;
    1589           0 :         b->yy_at_bol = 1;
    1590           0 :         b->yy_fill_buffer = 0;
    1591           0 :         b->yy_buffer_status = YY_BUFFER_NEW;
    1592             : 
    1593           0 :         yy_switch_to_buffer( b  );
    1594             : 
    1595           0 :         return b;
    1596             : }
    1597             : 
    1598             : /** Setup the input buffer state to scan a string. The next call to yylex() will
    1599             :  * scan from a @e copy of @a str.
    1600             :  * @param yystr a NUL-terminated string to scan
    1601             :  * 
    1602             :  * @return the newly allocated buffer state object.
    1603             :  * @note If you want to scan bytes that may contain NUL values, then use
    1604             :  *       yy_scan_bytes() instead.
    1605             :  */
    1606           0 : YY_BUFFER_STATE yy_scan_string (const char * yystr )
    1607             : {
    1608             :     
    1609           0 :         return yy_scan_bytes( yystr, (int) strlen(yystr) );
    1610             : }
    1611             : 
    1612             : /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
    1613             :  * scan from a @e copy of @a bytes.
    1614             :  * @param yybytes the byte buffer to scan
    1615             :  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
    1616             :  * 
    1617             :  * @return the newly allocated buffer state object.
    1618             :  */
    1619           0 : YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
    1620             : {
    1621           0 :         YY_BUFFER_STATE b;
    1622           0 :         char *buf;
    1623           0 :         yy_size_t n;
    1624           0 :         int i;
    1625             :     
    1626             :         /* Get memory for full buffer, including space for trailing EOB's. */
    1627           0 :         n = (yy_size_t) (_yybytes_len + 2);
    1628           0 :         buf = (char *) yyalloc( n  );
    1629           0 :         if ( ! buf )
    1630           0 :                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
    1631             : 
    1632           0 :         for ( i = 0; i < _yybytes_len; ++i )
    1633           0 :                 buf[i] = yybytes[i];
    1634             : 
    1635           0 :         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
    1636             : 
    1637           0 :         b = yy_scan_buffer( buf, n );
    1638           0 :         if ( ! b )
    1639           0 :                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
    1640             : 
    1641             :         /* It's okay to grow etc. this buffer, and we should throw it
    1642             :          * away when we're done.
    1643             :          */
    1644           0 :         b->yy_is_our_buffer = 1;
    1645             : 
    1646           0 :         return b;
    1647             : }
    1648             : 
    1649             : #ifndef YY_EXIT_FAILURE
    1650             : #define YY_EXIT_FAILURE 2
    1651             : #endif
    1652             : 
    1653           0 : static void yynoreturn yy_fatal_error (const char* msg )
    1654             : {
    1655           0 :                         fprintf( stderr, "%s\n", msg );
    1656           0 :         exit( YY_EXIT_FAILURE );
    1657             : }
    1658             : 
    1659             : /* Redefine yyless() so it works in section 3 code. */
    1660             : 
    1661             : #undef yyless
    1662             : #define yyless(n) \
    1663             :         do \
    1664             :                 { \
    1665             :                 /* Undo effects of setting up yytext. */ \
    1666             :         int yyless_macro_arg = (n); \
    1667             :         YY_LESS_LINENO(yyless_macro_arg);\
    1668             :                 yytext[yyleng] = (yy_hold_char); \
    1669             :                 (yy_c_buf_p) = yytext + yyless_macro_arg; \
    1670             :                 (yy_hold_char) = *(yy_c_buf_p); \
    1671             :                 *(yy_c_buf_p) = '\0'; \
    1672             :                 yyleng = yyless_macro_arg; \
    1673             :                 } \
    1674             :         while ( 0 )
    1675             : 
    1676             : /* Accessor  methods (get/set functions) to struct members. */
    1677             : 
    1678             : /** Get the current line number.
    1679             :  * 
    1680             :  */
    1681           0 : int yyget_lineno  (void)
    1682             : {
    1683             :     
    1684           0 :     return yylineno;
    1685             : }
    1686             : 
    1687             : /** Get the input stream.
    1688             :  * 
    1689             :  */
    1690           0 : FILE *yyget_in  (void)
    1691             : {
    1692           0 :         return yyin;
    1693             : }
    1694             : 
    1695             : /** Get the output stream.
    1696             :  * 
    1697             :  */
    1698           0 : FILE *yyget_out  (void)
    1699             : {
    1700           0 :         return yyout;
    1701             : }
    1702             : 
    1703             : /** Get the length of the current token.
    1704             :  * 
    1705             :  */
    1706           0 : int yyget_leng  (void)
    1707             : {
    1708           0 :         return yyleng;
    1709             : }
    1710             : 
    1711             : /** Get the current token.
    1712             :  * 
    1713             :  */
    1714             : 
    1715           0 : char *yyget_text  (void)
    1716             : {
    1717           0 :         return yytext;
    1718             : }
    1719             : 
    1720             : /** Set the current line number.
    1721             :  * @param _line_number line number
    1722             :  * 
    1723             :  */
    1724           0 : void yyset_lineno (int  _line_number )
    1725             : {
    1726             :     
    1727           0 :     yylineno = _line_number;
    1728           0 : }
    1729             : 
    1730             : /** Set the input stream. This does not discard the current
    1731             :  * input buffer.
    1732             :  * @param _in_str A readable stream.
    1733             :  * 
    1734             :  * @see yy_switch_to_buffer
    1735             :  */
    1736           0 : void yyset_in (FILE *  _in_str )
    1737             : {
    1738           0 :         yyin = _in_str ;
    1739           0 : }
    1740             : 
    1741           0 : void yyset_out (FILE *  _out_str )
    1742             : {
    1743           0 :         yyout = _out_str ;
    1744           0 : }
    1745             : 
    1746           0 : int yyget_debug  (void)
    1747             : {
    1748           0 :         return yy_flex_debug;
    1749             : }
    1750             : 
    1751           0 : void yyset_debug (int  _bdebug )
    1752             : {
    1753           0 :         yy_flex_debug = _bdebug ;
    1754           0 : }
    1755             : 
    1756           0 : static int yy_init_globals (void)
    1757             : {
    1758             :         /* Initialization is the same as for the non-reentrant scanner.
    1759             :      * This function is called from yylex_destroy(), so don't allocate here.
    1760             :      */
    1761             : 
    1762           0 :     (yy_buffer_stack) = NULL;
    1763           0 :     (yy_buffer_stack_top) = 0;
    1764           0 :     (yy_buffer_stack_max) = 0;
    1765           0 :     (yy_c_buf_p) = NULL;
    1766           0 :     (yy_init) = 0;
    1767           0 :     (yy_start) = 0;
    1768             : 
    1769             : /* Defined in main.c */
    1770             : #ifdef YY_STDINIT
    1771             :     yyin = stdin;
    1772             :     yyout = stdout;
    1773             : #else
    1774           0 :     yyin = NULL;
    1775           0 :     yyout = NULL;
    1776             : #endif
    1777             : 
    1778             :     /* For future reference: Set errno on error, since we are called by
    1779             :      * yylex_init()
    1780             :      */
    1781           0 :     return 0;
    1782             : }
    1783             : 
    1784             : /* yylex_destroy is for both reentrant and non-reentrant scanners. */
    1785           0 : int yylex_destroy  (void)
    1786             : {
    1787             :     
    1788             :     /* Pop the buffer stack, destroying each element. */
    1789           0 :         while(YY_CURRENT_BUFFER){
    1790           0 :                 yy_delete_buffer( YY_CURRENT_BUFFER  );
    1791           0 :                 YY_CURRENT_BUFFER_LVALUE = NULL;
    1792           0 :                 yypop_buffer_state();
    1793             :         }
    1794             : 
    1795             :         /* Destroy the stack itself. */
    1796           0 :         yyfree((yy_buffer_stack) );
    1797           0 :         (yy_buffer_stack) = NULL;
    1798             : 
    1799             :     /* Reset the globals. This is important in a non-reentrant scanner so the next time
    1800             :      * yylex() is called, initialization will occur. */
    1801           0 :     yy_init_globals( );
    1802             : 
    1803           0 :     return 0;
    1804             : }
    1805             : 
    1806             : /*
    1807             :  * Internal utility routines.
    1808             :  */
    1809             : 
    1810             : #ifndef yytext_ptr
    1811             : static void yy_flex_strncpy (char* s1, const char * s2, int n )
    1812             : {
    1813             :                 
    1814             :         int i;
    1815             :         for ( i = 0; i < n; ++i )
    1816             :                 s1[i] = s2[i];
    1817             : }
    1818             : #endif
    1819             : 
    1820             : #ifdef YY_NEED_STRLEN
    1821             : static int yy_flex_strlen (const char * s )
    1822             : {
    1823             :         int n;
    1824             :         for ( n = 0; s[n]; ++n )
    1825             :                 ;
    1826             : 
    1827             :         return n;
    1828             : }
    1829             : #endif
    1830             : 
    1831           0 : void *yyalloc (yy_size_t  size )
    1832             : {
    1833           0 :                         return malloc(size);
    1834             : }
    1835             : 
    1836           0 : void *yyrealloc  (void * ptr, yy_size_t  size )
    1837             : {
    1838             :                 
    1839             :         /* The cast to (char *) in the following accommodates both
    1840             :          * implementations that use char* generic pointers, and those
    1841             :          * that use void* generic pointers.  It works with the latter
    1842             :          * because both ANSI C and C++ allow castless assignment from
    1843             :          * any pointer type to void*, and deal with argument conversions
    1844             :          * as though doing an assignment.
    1845             :          */
    1846           0 :         return realloc(ptr, size);
    1847             : }
    1848             : 
    1849           0 : void yyfree (void * ptr )
    1850             : {
    1851           0 :                         free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
    1852           0 : }
    1853             : 
    1854             : #define YYTABLES_NAME "yytables"
    1855             : 
    1856             : static char *
    1857           0 : handle_string(void)
    1858             : {
    1859           0 :     char x[1024];
    1860           0 :     int i = 0;
    1861           0 :     int c;
    1862           0 :     int quote = 0;
    1863           0 :     while((c = input()) != EOF){
    1864           0 :         if(quote) {
    1865           0 :             x[i++] = '\\';
    1866           0 :             x[i++] = c;
    1867           0 :             quote = 0;
    1868           0 :             continue;
    1869             :         }
    1870           0 :         if(c == '\n'){
    1871           0 :             _hx509_sel_yyerror("unterminated string");
    1872           0 :             lineno++;
    1873           0 :             break;
    1874             :         }
    1875           0 :         if(c == '\\'){
    1876           0 :             quote++;
    1877           0 :             continue;
    1878             :         }
    1879           0 :         if(c == '\"')
    1880           0 :             break;
    1881           0 :         x[i++] = c;
    1882             :     }
    1883           0 :     x[i] = '\0';
    1884           0 :     return strdup(x);
    1885             : }
    1886             : 
    1887             : #if !defined(yywrap)
    1888             : #define yywrap  _hx509_sel_yywrap
    1889             : #endif
    1890             : 
    1891             : int
    1892           0 : yywrap ()
    1893             : {
    1894           0 :      return 1;
    1895             : }
    1896             : 
    1897             : static int
    1898           0 : lex_input(char *buf, int max_size)
    1899             : {
    1900           0 :     int n;
    1901             : 
    1902           0 :     n = _hx509_expr_input.length - _hx509_expr_input.offset;
    1903           0 :     if (max_size < n)
    1904           0 :         n = max_size;
    1905           0 :     if (n <= 0)
    1906           0 :         return YY_NULL;
    1907             : 
    1908           0 :     memcpy(buf, _hx509_expr_input.buf + _hx509_expr_input.offset, n);
    1909           0 :     _hx509_expr_input.offset += n;
    1910             : 
    1911           0 :     return n;
    1912             : }
    1913             : 

Generated by: LCOV version 1.14