Blame server/util_expr_scan.c

Packit 90a5c9
#line 2 "util_expr_scan.c"
Packit 90a5c9
Packit 90a5c9
#line 4 "util_expr_scan.c"
Packit 90a5c9
Packit 90a5c9
#define  YY_INT_ALIGNED short int
Packit 90a5c9
Packit 90a5c9
/* A lexical scanner generated by flex */
Packit 90a5c9
Packit 90a5c9
#define FLEX_SCANNER
Packit 90a5c9
#define YY_FLEX_MAJOR_VERSION 2
Packit 90a5c9
#define YY_FLEX_MINOR_VERSION 5
Packit 90a5c9
#define YY_FLEX_SUBMINOR_VERSION 35
Packit 90a5c9
#if YY_FLEX_SUBMINOR_VERSION > 0
Packit 90a5c9
#define FLEX_BETA
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* First, we deal with  platform-specific or compiler-specific issues. */
Packit 90a5c9
Packit 90a5c9
/* begin standard C headers. */
Packit 90a5c9
#include <stdio.h>
Packit 90a5c9
#include <string.h>
Packit 90a5c9
#include <errno.h>
Packit 90a5c9
#include <stdlib.h>
Packit 90a5c9
Packit 90a5c9
/* end standard C headers. */
Packit 90a5c9
Packit 90a5c9
/* flex integer type definitions */
Packit 90a5c9
Packit 90a5c9
#ifndef FLEXINT_H
Packit 90a5c9
#define FLEXINT_H
Packit 90a5c9
Packit 90a5c9
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
Packit 90a5c9
Packit 90a5c9
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
Packit 90a5c9
Packit 90a5c9
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
Packit 90a5c9
 * if you want the limit (max/min) macros for int types. 
Packit 90a5c9
 */
Packit 90a5c9
#ifndef __STDC_LIMIT_MACROS
Packit 90a5c9
#define __STDC_LIMIT_MACROS 1
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#include <inttypes.h>
Packit 90a5c9
typedef int8_t flex_int8_t;
Packit 90a5c9
typedef uint8_t flex_uint8_t;
Packit 90a5c9
typedef int16_t flex_int16_t;
Packit 90a5c9
typedef uint16_t flex_uint16_t;
Packit 90a5c9
typedef int32_t flex_int32_t;
Packit 90a5c9
typedef uint32_t flex_uint32_t;
Packit 90a5c9
#else
Packit 90a5c9
typedef signed char flex_int8_t;
Packit 90a5c9
typedef short int flex_int16_t;
Packit 90a5c9
typedef int flex_int32_t;
Packit 90a5c9
typedef unsigned char flex_uint8_t; 
Packit 90a5c9
typedef unsigned short int flex_uint16_t;
Packit 90a5c9
typedef unsigned int flex_uint32_t;
Packit 90a5c9
Packit 90a5c9
/* Limits of integral types. */
Packit 90a5c9
#ifndef INT8_MIN
Packit 90a5c9
#define INT8_MIN               (-128)
Packit 90a5c9
#endif
Packit 90a5c9
#ifndef INT16_MIN
Packit 90a5c9
#define INT16_MIN              (-32767-1)
Packit 90a5c9
#endif
Packit 90a5c9
#ifndef INT32_MIN
Packit 90a5c9
#define INT32_MIN              (-2147483647-1)
Packit 90a5c9
#endif
Packit 90a5c9
#ifndef INT8_MAX
Packit 90a5c9
#define INT8_MAX               (127)
Packit 90a5c9
#endif
Packit 90a5c9
#ifndef INT16_MAX
Packit 90a5c9
#define INT16_MAX              (32767)
Packit 90a5c9
#endif
Packit 90a5c9
#ifndef INT32_MAX
Packit 90a5c9
#define INT32_MAX              (2147483647)
Packit 90a5c9
#endif
Packit 90a5c9
#ifndef UINT8_MAX
Packit 90a5c9
#define UINT8_MAX              (255U)
Packit 90a5c9
#endif
Packit 90a5c9
#ifndef UINT16_MAX
Packit 90a5c9
#define UINT16_MAX             (65535U)
Packit 90a5c9
#endif
Packit 90a5c9
#ifndef UINT32_MAX
Packit 90a5c9
#define UINT32_MAX             (4294967295U)
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#endif /* ! C99 */
Packit 90a5c9
Packit 90a5c9
#endif /* ! FLEXINT_H */
Packit 90a5c9
Packit 90a5c9
#ifdef __cplusplus
Packit 90a5c9
Packit 90a5c9
/* The "const" storage-class-modifier is valid. */
Packit 90a5c9
#define YY_USE_CONST
Packit 90a5c9
Packit 90a5c9
#else	/* ! __cplusplus */
Packit 90a5c9
Packit 90a5c9
/* C99 requires __STDC__ to be defined as 1. */
Packit 90a5c9
#if defined (__STDC__)
Packit 90a5c9
Packit 90a5c9
#define YY_USE_CONST
Packit 90a5c9
Packit 90a5c9
#endif	/* defined (__STDC__) */
Packit 90a5c9
#endif	/* ! __cplusplus */
Packit 90a5c9
Packit 90a5c9
#ifdef YY_USE_CONST
Packit 90a5c9
#define yyconst const
Packit 90a5c9
#else
Packit 90a5c9
#define yyconst
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* Returned upon end-of-file. */
Packit 90a5c9
#define YY_NULL 0
Packit 90a5c9
Packit 90a5c9
/* Promotes a possibly negative, possibly signed char to an unsigned
Packit 90a5c9
 * integer for use as an array index.  If the signed char is negative,
Packit 90a5c9
 * we want to instead treat it as an 8-bit unsigned char, hence the
Packit 90a5c9
 * double cast.
Packit 90a5c9
 */
Packit 90a5c9
#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
Packit 90a5c9
Packit 90a5c9
/* An opaque pointer. */
Packit 90a5c9
#ifndef YY_TYPEDEF_YY_SCANNER_T
Packit 90a5c9
#define YY_TYPEDEF_YY_SCANNER_T
Packit 90a5c9
typedef void* yyscan_t;
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* For convenience, these vars (plus the bison vars far below)
Packit 90a5c9
   are macros in the reentrant scanner. */
Packit 90a5c9
#define yyin yyg->yyin_r
Packit 90a5c9
#define yyout yyg->yyout_r
Packit 90a5c9
#define yyextra yyg->yyextra_r
Packit 90a5c9
#define yyleng yyg->yyleng_r
Packit 90a5c9
#define yytext yyg->yytext_r
Packit 90a5c9
#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
Packit 90a5c9
#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
Packit 90a5c9
#define yy_flex_debug yyg->yy_flex_debug_r
Packit 90a5c9
Packit 90a5c9
/* Enter a start condition.  This macro really ought to take a parameter,
Packit 90a5c9
 * but we do it the disgusting crufty way forced on us by the ()-less
Packit 90a5c9
 * definition of BEGIN.
Packit 90a5c9
 */
Packit 90a5c9
#define BEGIN yyg->yy_start = 1 + 2 *
Packit 90a5c9
Packit 90a5c9
/* Translate the current start state into a value that can be later handed
Packit 90a5c9
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
Packit 90a5c9
 * compatibility.
Packit 90a5c9
 */
Packit 90a5c9
#define YY_START ((yyg->yy_start - 1) / 2)
Packit 90a5c9
#define YYSTATE YY_START
Packit 90a5c9
Packit 90a5c9
/* Action number for EOF rule of a given start state. */
Packit 90a5c9
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
Packit 90a5c9
Packit 90a5c9
/* Special action meaning "start processing a new file". */
Packit 90a5c9
#define YY_NEW_FILE ap_expr_yyrestart(yyin ,yyscanner )
Packit 90a5c9
Packit 90a5c9
#define YY_END_OF_BUFFER_CHAR 0
Packit 90a5c9
Packit 90a5c9
/* Size of default input buffer. */
Packit 90a5c9
#ifndef YY_BUF_SIZE
Packit 90a5c9
#ifdef __ia64__
Packit 90a5c9
/* On IA-64, the buffer size is 16k, not 8k.
Packit 90a5c9
 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
Packit 90a5c9
 * Ditto for the __ia64__ case accordingly.
Packit 90a5c9
 */
Packit 90a5c9
#define YY_BUF_SIZE 32768
Packit 90a5c9
#else
Packit 90a5c9
#define YY_BUF_SIZE 16384
Packit 90a5c9
#endif /* __ia64__ */
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* The state buf must be large enough to hold one state per character in the main buffer.
Packit 90a5c9
 */
Packit 90a5c9
#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
Packit 90a5c9
Packit 90a5c9
#ifndef YY_TYPEDEF_YY_BUFFER_STATE
Packit 90a5c9
#define YY_TYPEDEF_YY_BUFFER_STATE
Packit 90a5c9
typedef struct yy_buffer_state *YY_BUFFER_STATE;
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#define EOB_ACT_CONTINUE_SCAN 0
Packit 90a5c9
#define EOB_ACT_END_OF_FILE 1
Packit 90a5c9
#define EOB_ACT_LAST_MATCH 2
Packit 90a5c9
Packit 90a5c9
    #define YY_LESS_LINENO(n)
Packit 90a5c9
    
Packit 90a5c9
/* Return all but the first "n" matched characters back to the input stream. */
Packit 90a5c9
#define yyless(n) \
Packit 90a5c9
	do \
Packit 90a5c9
		{ \
Packit 90a5c9
		/* Undo effects of setting up yytext. */ \
Packit 90a5c9
        int yyless_macro_arg = (n); \
Packit 90a5c9
        YY_LESS_LINENO(yyless_macro_arg);\
Packit 90a5c9
		*yy_cp = yyg->yy_hold_char; \
Packit 90a5c9
		YY_RESTORE_YY_MORE_OFFSET \
Packit 90a5c9
		yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
Packit 90a5c9
		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
Packit 90a5c9
		} \
Packit 90a5c9
	while ( 0 )
Packit 90a5c9
Packit 90a5c9
#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
Packit 90a5c9
Packit 90a5c9
#ifndef YY_TYPEDEF_YY_SIZE_T
Packit 90a5c9
#define YY_TYPEDEF_YY_SIZE_T
Packit 90a5c9
typedef size_t yy_size_t;
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#ifndef YY_STRUCT_YY_BUFFER_STATE
Packit 90a5c9
#define YY_STRUCT_YY_BUFFER_STATE
Packit 90a5c9
struct yy_buffer_state
Packit 90a5c9
	{
Packit 90a5c9
	FILE *yy_input_file;
Packit 90a5c9
Packit 90a5c9
	char *yy_ch_buf;		/* input buffer */
Packit 90a5c9
	char *yy_buf_pos;		/* current position in input buffer */
Packit 90a5c9
Packit 90a5c9
	/* Size of input buffer in bytes, not including room for EOB
Packit 90a5c9
	 * characters.
Packit 90a5c9
	 */
Packit 90a5c9
	yy_size_t yy_buf_size;
Packit 90a5c9
Packit 90a5c9
	/* Number of characters read into yy_ch_buf, not including EOB
Packit 90a5c9
	 * characters.
Packit 90a5c9
	 */
Packit 90a5c9
	int yy_n_chars;
Packit 90a5c9
Packit 90a5c9
	/* Whether we "own" the buffer - i.e., we know we created it,
Packit 90a5c9
	 * and can realloc() it to grow it, and should free() it to
Packit 90a5c9
	 * delete it.
Packit 90a5c9
	 */
Packit 90a5c9
	int yy_is_our_buffer;
Packit 90a5c9
Packit 90a5c9
	/* Whether this is an "interactive" input source; if so, and
Packit 90a5c9
	 * if we're using stdio for input, then we want to use getc()
Packit 90a5c9
	 * instead of fread(), to make sure we stop fetching input after
Packit 90a5c9
	 * each newline.
Packit 90a5c9
	 */
Packit 90a5c9
	int yy_is_interactive;
Packit 90a5c9
Packit 90a5c9
	/* Whether we're considered to be at the beginning of a line.
Packit 90a5c9
	 * If so, '^' rules will be active on the next match, otherwise
Packit 90a5c9
	 * not.
Packit 90a5c9
	 */
Packit 90a5c9
	int yy_at_bol;
Packit 90a5c9
Packit 90a5c9
    int yy_bs_lineno; /**< The line count. */
Packit 90a5c9
    int yy_bs_column; /**< The column count. */
Packit 90a5c9
    
Packit 90a5c9
	/* Whether to try to fill the input buffer when we reach the
Packit 90a5c9
	 * end of it.
Packit 90a5c9
	 */
Packit 90a5c9
	int yy_fill_buffer;
Packit 90a5c9
Packit 90a5c9
	int yy_buffer_status;
Packit 90a5c9
Packit 90a5c9
#define YY_BUFFER_NEW 0
Packit 90a5c9
#define YY_BUFFER_NORMAL 1
Packit 90a5c9
	/* When an EOF's been seen but there's still some text to process
Packit 90a5c9
	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
Packit 90a5c9
	 * shouldn't try reading from the input source any more.  We might
Packit 90a5c9
	 * still have a bunch of tokens to match, though, because of
Packit 90a5c9
	 * possible backing-up.
Packit 90a5c9
	 *
Packit 90a5c9
	 * When we actually see the EOF, we change the status to "new"
Packit 90a5c9
	 * (via ap_expr_yyrestart()), so that the user can continue scanning by
Packit 90a5c9
	 * just pointing yyin at a new input file.
Packit 90a5c9
	 */
Packit 90a5c9
#define YY_BUFFER_EOF_PENDING 2
Packit 90a5c9
Packit 90a5c9
	};
Packit 90a5c9
#endif /* !YY_STRUCT_YY_BUFFER_STATE */
Packit 90a5c9
Packit 90a5c9
/* We provide macros for accessing buffer states in case in the
Packit 90a5c9
 * future we want to put the buffer states in a more general
Packit 90a5c9
 * "scanner state".
Packit 90a5c9
 *
Packit 90a5c9
 * Returns the top of the stack, or NULL.
Packit 90a5c9
 */
Packit 90a5c9
#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
Packit 90a5c9
                          ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
Packit 90a5c9
                          : NULL)
Packit 90a5c9
Packit 90a5c9
/* Same as previous macro, but useful when we know that the buffer stack is not
Packit 90a5c9
 * NULL or when we need an lvalue. For internal use only.
Packit 90a5c9
 */
Packit 90a5c9
#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
Packit 90a5c9
Packit 90a5c9
void ap_expr_yyrestart (FILE *input_file ,yyscan_t yyscanner );
Packit 90a5c9
void ap_expr_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
Packit 90a5c9
YY_BUFFER_STATE ap_expr_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
Packit 90a5c9
void ap_expr_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
Packit 90a5c9
void ap_expr_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
Packit 90a5c9
void ap_expr_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
Packit 90a5c9
void ap_expr_yypop_buffer_state (yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
static void ap_expr_yyensure_buffer_stack (yyscan_t yyscanner );
Packit 90a5c9
static void ap_expr_yy_load_buffer_state (yyscan_t yyscanner );
Packit 90a5c9
static void ap_expr_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
#define YY_FLUSH_BUFFER ap_expr_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
Packit 90a5c9
Packit 90a5c9
YY_BUFFER_STATE ap_expr_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
Packit 90a5c9
YY_BUFFER_STATE ap_expr_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
Packit 90a5c9
YY_BUFFER_STATE ap_expr_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
void *ap_expr_yyalloc (yy_size_t ,yyscan_t yyscanner );
Packit 90a5c9
void *ap_expr_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
Packit 90a5c9
void ap_expr_yyfree (void * ,yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
#define yy_new_buffer ap_expr_yy_create_buffer
Packit 90a5c9
Packit 90a5c9
#define yy_set_interactive(is_interactive) \
Packit 90a5c9
	{ \
Packit 90a5c9
	if ( ! YY_CURRENT_BUFFER ){ \
Packit 90a5c9
        ap_expr_yyensure_buffer_stack (yyscanner); \
Packit 90a5c9
		YY_CURRENT_BUFFER_LVALUE =    \
Packit 90a5c9
            ap_expr_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
Packit 90a5c9
	} \
Packit 90a5c9
	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
Packit 90a5c9
	}
Packit 90a5c9
Packit 90a5c9
#define yy_set_bol(at_bol) \
Packit 90a5c9
	{ \
Packit 90a5c9
	if ( ! YY_CURRENT_BUFFER ){\
Packit 90a5c9
        ap_expr_yyensure_buffer_stack (yyscanner); \
Packit 90a5c9
		YY_CURRENT_BUFFER_LVALUE =    \
Packit 90a5c9
            ap_expr_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
Packit 90a5c9
	} \
Packit 90a5c9
	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
Packit 90a5c9
	}
Packit 90a5c9
Packit 90a5c9
#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
Packit 90a5c9
Packit 90a5c9
/* Begin user sect3 */
Packit 90a5c9
Packit 90a5c9
#define ap_expr_yywrap(n) 1
Packit 90a5c9
#define YY_SKIP_YYWRAP
Packit 90a5c9
Packit 90a5c9
typedef unsigned char YY_CHAR;
Packit 90a5c9
Packit 90a5c9
typedef int yy_state_type;
Packit 90a5c9
Packit 90a5c9
#define yytext_ptr yytext_r
Packit 90a5c9
Packit 90a5c9
static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
Packit 90a5c9
static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
Packit 90a5c9
static int yy_get_next_buffer (yyscan_t yyscanner );
Packit 90a5c9
static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
/* Done after the current pattern has been matched and before the
Packit 90a5c9
 * corresponding action - sets up yytext.
Packit 90a5c9
 */
Packit 90a5c9
#define YY_DO_BEFORE_ACTION \
Packit 90a5c9
	yyg->yytext_ptr = yy_bp; \
Packit 90a5c9
	yyleng = (size_t) (yy_cp - yy_bp); \
Packit 90a5c9
	yyg->yy_hold_char = *yy_cp; \
Packit 90a5c9
	*yy_cp = '\0'; \
Packit 90a5c9
	yyg->yy_c_buf_p = yy_cp;
Packit 90a5c9
Packit 90a5c9
#define YY_NUM_RULES 67
Packit 90a5c9
#define YY_END_OF_BUFFER 68
Packit 90a5c9
/* This struct is not used in this scanner,
Packit 90a5c9
   but its presence is necessary. */
Packit 90a5c9
struct yy_trans_info
Packit 90a5c9
	{
Packit 90a5c9
	flex_int32_t yy_verify;
Packit 90a5c9
	flex_int32_t yy_nxt;
Packit 90a5c9
	};
Packit 90a5c9
static yyconst flex_int16_t yy_accept[124] =
Packit 90a5c9
    {   0,
Packit 90a5c9
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
Packit 90a5c9
        0,    0,   68,   66,    1,   43,    2,   66,   66,   66,
Packit 90a5c9
       65,   66,   44,   26,   63,   32,   30,   34,   64,   64,
Packit 90a5c9
       64,   64,   64,   64,   64,   64,   64,   64,   64,   66,
Packit 90a5c9
       14,    4,    3,   17,   17,   67,   17,   23,    4,   22,
Packit 90a5c9
       20,   21,   67,   16,   16,   24,   27,   29,   28,    1,
Packit 90a5c9
       31,   37,   19,   18,   39,   63,   59,   59,   59,   59,
Packit 90a5c9
       59,   59,   33,   30,   36,   35,   64,   64,   57,   64,
Packit 90a5c9
       55,   54,   58,   53,   52,   25,   25,   56,   64,   40,
Packit 90a5c9
       64,   41,   14,   13,   15,   12,    5,    6,   10,   11,
Packit 90a5c9
Packit 90a5c9
        7,    8,    9,   20,   60,   46,   48,   50,   45,   49,
Packit 90a5c9
       51,   47,   38,   64,   42,   64,    5,    6,   64,   61,
Packit 90a5c9
        5,   62,    0
Packit 90a5c9
    } ;
Packit 90a5c9
Packit 90a5c9
static yyconst flex_int32_t yy_ec[256] =
Packit 90a5c9
    {   0,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    2,    4,    5,    6,    7,    8,    9,    5,   10,
Packit 90a5c9
       10,    1,    1,   11,   12,   13,   14,   15,   15,   15,
Packit 90a5c9
       15,   15,   15,   15,   15,   16,   16,   17,    6,   18,
Packit 90a5c9
       19,   20,    6,    1,   21,   21,   21,   21,   21,   21,
Packit 90a5c9
       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
Packit 90a5c9
       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
Packit 90a5c9
        1,   22,    1,    6,   23,    1,   24,   25,   21,   26,
Packit 90a5c9
Packit 90a5c9
       27,   28,   29,   21,   30,   21,   21,   31,   32,   33,
Packit 90a5c9
       34,   21,   35,   36,   37,   38,   39,   21,   21,   21,
Packit 90a5c9
       21,   21,   40,   41,   42,   43,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1
Packit 90a5c9
    } ;
Packit 90a5c9
Packit 90a5c9
static yyconst flex_int32_t yy_meta[44] =
Packit 90a5c9
    {   0,
Packit 90a5c9
        1,    1,    2,    1,    2,    1,    2,    2,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    3,    3,    1,    1,    1,    1,
Packit 90a5c9
        3,    2,    3,    3,    3,    3,    3,    3,    3,    3,
Packit 90a5c9
        3,    3,    3,    3,    3,    3,    3,    3,    3,    1,
Packit 90a5c9
        1,    2,    1
Packit 90a5c9
    } ;
Packit 90a5c9
Packit 90a5c9
static yyconst flex_int16_t yy_base[133] =
Packit 90a5c9
    {   0,
Packit 90a5c9
        0,    0,   41,   47,   89,    0,  130,  136,    0,    0,
Packit 90a5c9
      147,  146,  175,  275,   54,   28,  275,   43,  134,  164,
Packit 90a5c9
      275,  164,  275,  275,   45,  152,   32,  151,    0,  136,
Packit 90a5c9
      133,  143,   26,  133,   35,  194,   38,  129,  128,  122,
Packit 90a5c9
        0,  275,  275,   51,  122,  221,  275,  275,  275,  275,
Packit 90a5c9
        0,  275,  275,   61,  121,  275,  275,  275,  275,   76,
Packit 90a5c9
      275,  275,  275,  275,  275,   65,    0,  125,   47,  126,
Packit 90a5c9
      107,  130,  275,  275,  275,  275,    0,  130,    0,  124,
Packit 90a5c9
        0,    0,    0,    0,    0,  275,    0,    0,  104,    0,
Packit 90a5c9
      101,  275,    0,  275,  275,  275,   71,  131,  275,  275,
Packit 90a5c9
Packit 90a5c9
      275,  275,  275,    0,    0,    0,    0,    0,    0,    0,
Packit 90a5c9
        0,    0,    0,   99,    0,   61,  133,  135,   57,    0,
Packit 90a5c9
      138,    0,  275,  259,  262,  265,   79,   67,  268,  271,
Packit 90a5c9
       65,   42
Packit 90a5c9
    } ;
Packit 90a5c9
Packit 90a5c9
static yyconst flex_int16_t yy_def[133] =
Packit 90a5c9
    {   0,
Packit 90a5c9
      123,    1,  124,  124,  123,    5,  124,  124,  125,  125,
Packit 90a5c9
      126,  126,  123,  123,  123,  123,  123,  123,  123,  123,
Packit 90a5c9
      123,  127,  123,  123,  123,  123,  123,  123,  128,  128,
Packit 90a5c9
      128,  128,  128,  128,  128,  128,  128,  128,  128,  123,
Packit 90a5c9
      129,  123,  123,  123,  123,  130,  123,  123,  123,  123,
Packit 90a5c9
      131,  123,  123,  123,  123,  123,  123,  123,  123,  123,
Packit 90a5c9
      123,  123,  123,  123,  123,  123,  132,  132,  132,  132,
Packit 90a5c9
      132,  132,  123,  123,  123,  123,  128,  128,  128,  128,
Packit 90a5c9
      128,  128,  128,  128,  128,  123,  128,  128,  128,  128,
Packit 90a5c9
      128,  123,  129,  123,  123,  123,  123,  123,  123,  123,
Packit 90a5c9
Packit 90a5c9
      123,  123,  123,  131,  132,  132,  132,  132,  132,  132,
Packit 90a5c9
      132,  132,  128,  128,  128,  128,  123,  123,  128,  128,
Packit 90a5c9
      123,  128,    0,  123,  123,  123,  123,  123,  123,  123,
Packit 90a5c9
      123,  123
Packit 90a5c9
    } ;
Packit 90a5c9
Packit 90a5c9
static yyconst flex_int16_t yy_nxt[319] =
Packit 90a5c9
    {   0,
Packit 90a5c9
       14,   15,   15,   16,   17,   14,   18,   19,   20,   21,
Packit 90a5c9
       21,   22,   23,   24,   25,   25,   21,   26,   27,   28,
Packit 90a5c9
       29,   14,   14,   30,   29,   29,   31,   32,   33,   34,
Packit 90a5c9
       35,   36,   37,   38,   29,   29,   29,   39,   29,   21,
Packit 90a5c9
       40,   21,   14,   42,  105,   43,   61,   44,   45,   42,
Packit 90a5c9
       74,   43,   81,   44,   45,   60,   60,   63,   63,   66,
Packit 90a5c9
       66,   84,   46,   82,   88,   94,   94,  104,   46,   77,
Packit 90a5c9
       62,   89,   85,  107,   75,   94,   94,   60,   60,   66,
Packit 90a5c9
       66,   67,   47,  122,  108,  117,  118,  120,   47,   48,
Packit 90a5c9
       48,   49,   48,   48,   48,   48,   48,   48,   48,   48,
Packit 90a5c9
Packit 90a5c9
       48,   48,   48,   48,   48,   50,   48,   48,   48,   51,
Packit 90a5c9
       48,   48,   51,   51,   51,   51,   51,   51,   51,   51,
Packit 90a5c9
       51,   51,   51,   51,   51,   51,   51,   51,   48,   48,
Packit 90a5c9
       52,   48,   42,  110,   53,  119,   54,   55,   42,  116,
Packit 90a5c9
       53,  115,   54,   55,  111,  118,  118,  121,  118,  118,
Packit 90a5c9
      118,   46,  118,  118,  114,  113,  112,   46,  109,  106,
Packit 90a5c9
       95,   95,   92,   91,   90,   83,   80,   79,   78,   76,
Packit 90a5c9
       73,   56,   65,   64,  123,   59,   59,   56,   66,   66,
Packit 90a5c9
      123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
Packit 90a5c9
       68,  123,   69,   70,   71,  123,   72,   86,   86,   86,
Packit 90a5c9
Packit 90a5c9
       86,   86,  123,  123,   86,   86,   86,   86,  123,  123,
Packit 90a5c9
       86,  123,  123,  123,  123,  123,   87,  123,  123,  123,
Packit 90a5c9
      123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
Packit 90a5c9
      123,  123,  123,  123,   86,   97,   98,  123,  123,  123,
Packit 90a5c9
      123,  123,  123,  123,  123,   99,  123,  123,  100,  123,
Packit 90a5c9
      123,  123,  123,  101,  123,  123,  102,  123,  103,   41,
Packit 90a5c9
       41,   41,   57,   57,   57,   58,   58,   58,   93,  123,
Packit 90a5c9
       93,   96,   96,   96,   13,  123,  123,  123,  123,  123,
Packit 90a5c9
      123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
Packit 90a5c9
      123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
Packit 90a5c9
Packit 90a5c9
      123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
Packit 90a5c9
      123,  123,  123,  123,  123,  123,  123,  123
Packit 90a5c9
    } ;
Packit 90a5c9
Packit 90a5c9
static yyconst flex_int16_t yy_chk[319] =
Packit 90a5c9
    {   0,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Packit 90a5c9
        1,    1,    1,    3,  132,    3,   16,    3,    3,    4,
Packit 90a5c9
       27,    4,   33,    4,    4,   15,   15,   18,   18,   25,
Packit 90a5c9
       25,   35,    3,   33,   37,   44,   44,  131,    4,  128,
Packit 90a5c9
       16,   37,   35,   69,   27,   54,   54,   60,   60,   66,
Packit 90a5c9
       66,  127,    3,  119,   69,   97,   97,  116,    4,    5,
Packit 90a5c9
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
Packit 90a5c9
Packit 90a5c9
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
Packit 90a5c9
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
Packit 90a5c9
        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
Packit 90a5c9
        5,    5,    7,   71,    7,  114,    7,    7,    8,   91,
Packit 90a5c9
        8,   89,    8,    8,   71,   98,   98,  117,  117,  118,
Packit 90a5c9
      118,    7,  121,  121,   80,   78,   72,    8,   70,   68,
Packit 90a5c9
       55,   45,   40,   39,   38,   34,   32,   31,   30,   28,
Packit 90a5c9
       26,    7,   20,   19,   13,   12,   11,    8,   22,   22,
Packit 90a5c9
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
Packit 90a5c9
       22,    0,   22,   22,   22,    0,   22,   36,   36,   36,
Packit 90a5c9
Packit 90a5c9
       36,   36,    0,    0,   36,   36,   36,   36,    0,    0,
Packit 90a5c9
       36,    0,    0,    0,    0,    0,   36,    0,    0,    0,
Packit 90a5c9
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
Packit 90a5c9
        0,    0,    0,    0,   36,   46,   46,    0,    0,    0,
Packit 90a5c9
        0,    0,    0,    0,    0,   46,    0,    0,   46,    0,
Packit 90a5c9
        0,    0,    0,   46,    0,    0,   46,    0,   46,  124,
Packit 90a5c9
      124,  124,  125,  125,  125,  126,  126,  126,  129,    0,
Packit 90a5c9
      129,  130,  130,  130,  123,  123,  123,  123,  123,  123,
Packit 90a5c9
      123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
Packit 90a5c9
      123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
Packit 90a5c9
Packit 90a5c9
      123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
Packit 90a5c9
      123,  123,  123,  123,  123,  123,  123,  123
Packit 90a5c9
    } ;
Packit 90a5c9
Packit 90a5c9
/* The intent behind this definition is that it'll catch
Packit 90a5c9
 * any uses of REJECT which flex missed.
Packit 90a5c9
 */
Packit 90a5c9
#define REJECT reject_used_but_not_detected
Packit 90a5c9
#define yymore() yymore_used_but_not_detected
Packit 90a5c9
#define YY_MORE_ADJ 0
Packit 90a5c9
#define YY_RESTORE_YY_MORE_OFFSET
Packit 90a5c9
#line 1 "util_expr_scan.l"
Packit 90a5c9
/* Licensed to the Apache Software Foundation (ASF) under one or more
Packit 90a5c9
 * contributor license agreements.  See the NOTICE file distributed with
Packit 90a5c9
 * this work for additional information regarding copyright ownership.
Packit 90a5c9
 * The ASF licenses this file to You under the Apache License, Version 2.0
Packit 90a5c9
 * (the "License"); you may not use this file except in compliance with
Packit 90a5c9
 * the License.  You may obtain a copy of the License at
Packit 90a5c9
 *
Packit 90a5c9
 *     http://www.apache.org/licenses/LICENSE-2.0
Packit 90a5c9
 *
Packit 90a5c9
 * Unless required by applicable law or agreed to in writing, software
Packit 90a5c9
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit 90a5c9
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit 90a5c9
 * See the License for the specific language governing permissions and
Packit 90a5c9
 * limitations under the License.
Packit 90a5c9
 */
Packit 90a5c9
/*
Packit 90a5c9
 *  ap_expr_scan.l, based on ssl_expr_scan.l from mod_ssl
Packit 90a5c9
 */
Packit 90a5c9
/*  _________________________________________________________________
Packit 90a5c9
**
Packit 90a5c9
**  Expression Scanner
Packit 90a5c9
**  _________________________________________________________________
Packit 90a5c9
*/
Packit 90a5c9
#define YY_NO_INPUT 1
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
#line 43 "util_expr_scan.l"
Packit 90a5c9
#include "util_expr_private.h"
Packit 90a5c9
#include "util_expr_parse.h"
Packit 90a5c9
Packit 90a5c9
#undef  YY_INPUT
Packit 90a5c9
#define YY_INPUT(buf,result,max_size)                       \
Packit 90a5c9
{                                                           \
Packit 90a5c9
    if ((result = MIN(max_size, yyextra->inputbuf           \
Packit 90a5c9
                              + yyextra->inputlen           \
Packit 90a5c9
                              - yyextra->inputptr)) <= 0)   \
Packit 90a5c9
    {                                                       \
Packit 90a5c9
        result = YY_NULL;                                   \
Packit 90a5c9
    }                                                       \
Packit 90a5c9
    else {                                                  \
Packit 90a5c9
        memcpy(buf, yyextra->inputptr, result);             \
Packit 90a5c9
        yyextra->inputptr += result;                        \
Packit 90a5c9
    }                                                       \
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
#define YY_EXTRA_TYPE ap_expr_parse_ctx_t*
Packit 90a5c9
Packit 90a5c9
#define PERROR(msg) do { yyextra->error2 = msg ; return T_ERROR; } while (0)
Packit 90a5c9
Packit 90a5c9
#define str_ptr     (yyextra->scan_ptr)
Packit 90a5c9
#define str_buf     (yyextra->scan_buf)
Packit 90a5c9
#define str_del     (yyextra->scan_del)
Packit 90a5c9
Packit 90a5c9
#define STR_APPEND(c) do {                          \
Packit 90a5c9
        *str_ptr++ = (c);                           \
Packit 90a5c9
        if (str_ptr >= str_buf + sizeof(str_buf))   \
Packit 90a5c9
            PERROR("String too long");              \
Packit 90a5c9
    } while (0)
Packit 90a5c9
Packit 90a5c9
#line 615 "util_expr_scan.c"
Packit 90a5c9
Packit 90a5c9
#define INITIAL 0
Packit 90a5c9
#define str 1
Packit 90a5c9
#define var 2
Packit 90a5c9
#define vararg 3
Packit 90a5c9
#define regex 4
Packit 90a5c9
#define regex_flags 5
Packit 90a5c9
Packit 90a5c9
#ifndef YY_NO_UNISTD_H
Packit 90a5c9
/* Special case for "unistd.h", since it is non-ANSI. We include it way
Packit 90a5c9
 * down here because we want the user's section 1 to have been scanned first.
Packit 90a5c9
 * The user has a chance to override it with an option.
Packit 90a5c9
 */
Packit 90a5c9
#include <unistd.h>
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#ifndef YY_EXTRA_TYPE
Packit 90a5c9
#define YY_EXTRA_TYPE void *
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* Holds the entire state of the reentrant scanner. */
Packit 90a5c9
struct yyguts_t
Packit 90a5c9
    {
Packit 90a5c9
Packit 90a5c9
    /* User-defined. Not touched by flex. */
Packit 90a5c9
    YY_EXTRA_TYPE yyextra_r;
Packit 90a5c9
Packit 90a5c9
    /* The rest are the same as the globals declared in the non-reentrant scanner. */
Packit 90a5c9
    FILE *yyin_r, *yyout_r;
Packit 90a5c9
    size_t yy_buffer_stack_top; /**< index of top of stack. */
Packit 90a5c9
    size_t yy_buffer_stack_max; /**< capacity of stack. */
Packit 90a5c9
    YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
Packit 90a5c9
    char yy_hold_char;
Packit 90a5c9
    int yy_n_chars;
Packit 90a5c9
    int yyleng_r;
Packit 90a5c9
    char *yy_c_buf_p;
Packit 90a5c9
    int yy_init;
Packit 90a5c9
    int yy_start;
Packit 90a5c9
    int yy_did_buffer_switch_on_eof;
Packit 90a5c9
    int yy_start_stack_ptr;
Packit 90a5c9
    int yy_start_stack_depth;
Packit 90a5c9
    int *yy_start_stack;
Packit 90a5c9
    yy_state_type yy_last_accepting_state;
Packit 90a5c9
    char* yy_last_accepting_cpos;
Packit 90a5c9
Packit 90a5c9
    int yylineno_r;
Packit 90a5c9
    int yy_flex_debug_r;
Packit 90a5c9
Packit 90a5c9
    char *yytext_r;
Packit 90a5c9
    int yy_more_flag;
Packit 90a5c9
    int yy_more_len;
Packit 90a5c9
Packit 90a5c9
    YYSTYPE * yylval_r;
Packit 90a5c9
Packit 90a5c9
    }; /* end struct yyguts_t */
Packit 90a5c9
Packit 90a5c9
static int yy_init_globals (yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
    /* This must go here because YYSTYPE and YYLTYPE are included
Packit 90a5c9
     * from bison output in section 1.*/
Packit 90a5c9
    #    define yylval yyg->yylval_r
Packit 90a5c9
    
Packit 90a5c9
int ap_expr_yylex_init (yyscan_t* scanner);
Packit 90a5c9
Packit 90a5c9
int ap_expr_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
Packit 90a5c9
Packit 90a5c9
/* Accessor methods to globals.
Packit 90a5c9
   These are made visible to non-reentrant scanners for convenience. */
Packit 90a5c9
Packit 90a5c9
int ap_expr_yylex_destroy (yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
int ap_expr_yyget_debug (yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
void ap_expr_yyset_debug (int debug_flag ,yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
YY_EXTRA_TYPE ap_expr_yyget_extra (yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
void ap_expr_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
FILE *ap_expr_yyget_in (yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
void ap_expr_yyset_in  (FILE * in_str ,yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
FILE *ap_expr_yyget_out (yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
void ap_expr_yyset_out  (FILE * out_str ,yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
int ap_expr_yyget_leng (yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
char *ap_expr_yyget_text (yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
int ap_expr_yyget_lineno (yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
void ap_expr_yyset_lineno (int line_number ,yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
YYSTYPE * ap_expr_yyget_lval (yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
void ap_expr_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
Packit 90a5c9
Packit 90a5c9
/* Macros after this point can all be overridden by user definitions in
Packit 90a5c9
 * section 1.
Packit 90a5c9
 */
Packit 90a5c9
Packit 90a5c9
#ifndef YY_SKIP_YYWRAP
Packit 90a5c9
#ifdef __cplusplus
Packit 90a5c9
extern "C" int ap_expr_yywrap (yyscan_t yyscanner );
Packit 90a5c9
#else
Packit 90a5c9
extern int ap_expr_yywrap (yyscan_t yyscanner );
Packit 90a5c9
#endif
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#ifndef yytext_ptr
Packit 90a5c9
static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#ifdef YY_NEED_STRLEN
Packit 90a5c9
static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#ifndef YY_NO_INPUT
Packit 90a5c9
Packit 90a5c9
#ifdef __cplusplus
Packit 90a5c9
static int yyinput (yyscan_t yyscanner );
Packit 90a5c9
#else
Packit 90a5c9
static int input (yyscan_t yyscanner );
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
    static void yy_push_state (int new_state ,yyscan_t yyscanner);
Packit 90a5c9
    
Packit 90a5c9
    static void yy_pop_state (yyscan_t yyscanner );
Packit 90a5c9
    
Packit 90a5c9
/* Amount of stuff to slurp up with each read. */
Packit 90a5c9
#ifndef YY_READ_BUF_SIZE
Packit 90a5c9
#ifdef __ia64__
Packit 90a5c9
/* On IA-64, the buffer size is 16k, not 8k */
Packit 90a5c9
#define YY_READ_BUF_SIZE 16384
Packit 90a5c9
#else
Packit 90a5c9
#define YY_READ_BUF_SIZE 8192
Packit 90a5c9
#endif /* __ia64__ */
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* Copy whatever the last rule matched to the standard output. */
Packit 90a5c9
#ifndef ECHO
Packit 90a5c9
/* This used to be an fputs(), but since the string might contain NUL's,
Packit 90a5c9
 * we now use fwrite().
Packit 90a5c9
 */
Packit 90a5c9
#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
Packit 90a5c9
 * is returned in "result".
Packit 90a5c9
 */
Packit 90a5c9
#ifndef YY_INPUT
Packit 90a5c9
#define YY_INPUT(buf,result,max_size) \
Packit 90a5c9
	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
Packit 90a5c9
		{ \
Packit 90a5c9
		int c = '*'; \
Packit 90a5c9
		size_t n; \
Packit 90a5c9
		for ( n = 0; n < max_size && \
Packit 90a5c9
			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
Packit 90a5c9
			buf[n] = (char) c; \
Packit 90a5c9
		if ( c == '\n' ) \
Packit 90a5c9
			buf[n++] = (char) c; \
Packit 90a5c9
		if ( c == EOF && ferror( yyin ) ) \
Packit 90a5c9
			YY_FATAL_ERROR( "input in flex scanner failed" ); \
Packit 90a5c9
		result = n; \
Packit 90a5c9
		} \
Packit 90a5c9
	else \
Packit 90a5c9
		{ \
Packit 90a5c9
		errno=0; \
Packit 90a5c9
		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
Packit 90a5c9
			{ \
Packit 90a5c9
			if( errno != EINTR) \
Packit 90a5c9
				{ \
Packit 90a5c9
				YY_FATAL_ERROR( "input in flex scanner failed" ); \
Packit 90a5c9
				break; \
Packit 90a5c9
				} \
Packit 90a5c9
			errno=0; \
Packit 90a5c9
			clearerr(yyin); \
Packit 90a5c9
			} \
Packit 90a5c9
		}\
Packit 90a5c9
\
Packit 90a5c9
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* No semi-colon after return; correct usage is to write "yyterminate();" -
Packit 90a5c9
 * we don't want an extra ';' after the "return" because that will cause
Packit 90a5c9
 * some compilers to complain about unreachable statements.
Packit 90a5c9
 */
Packit 90a5c9
#ifndef yyterminate
Packit 90a5c9
#define yyterminate() return YY_NULL
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* Number of entries by which start-condition stack grows. */
Packit 90a5c9
#ifndef YY_START_STACK_INCR
Packit 90a5c9
#define YY_START_STACK_INCR 25
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* Report a fatal error. */
Packit 90a5c9
#ifndef YY_FATAL_ERROR
Packit 90a5c9
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* end tables serialization structures and prototypes */
Packit 90a5c9
Packit 90a5c9
/* Default declaration of generated scanner - a define so the user can
Packit 90a5c9
 * easily add parameters.
Packit 90a5c9
 */
Packit 90a5c9
#ifndef YY_DECL
Packit 90a5c9
#define YY_DECL_IS_OURS 1
Packit 90a5c9
Packit 90a5c9
extern int ap_expr_yylex \
Packit 90a5c9
               (YYSTYPE * yylval_param ,yyscan_t yyscanner);
Packit 90a5c9
Packit 90a5c9
#define YY_DECL int ap_expr_yylex \
Packit 90a5c9
               (YYSTYPE * yylval_param , yyscan_t yyscanner)
Packit 90a5c9
#endif /* !YY_DECL */
Packit 90a5c9
Packit 90a5c9
/* Code executed at the beginning of each rule, after yytext and yyleng
Packit 90a5c9
 * have been set up.
Packit 90a5c9
 */
Packit 90a5c9
#ifndef YY_USER_ACTION
Packit 90a5c9
#define YY_USER_ACTION
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* Code executed at the end of each rule. */
Packit 90a5c9
#ifndef YY_BREAK
Packit 90a5c9
#define YY_BREAK break;
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#define YY_RULE_SETUP \
Packit 90a5c9
	YY_USER_ACTION
Packit 90a5c9
Packit 90a5c9
/** The main scanner function which does all the work.
Packit 90a5c9
 */
Packit 90a5c9
YY_DECL
Packit 90a5c9
{
Packit 90a5c9
	register yy_state_type yy_current_state;
Packit 90a5c9
	register char *yy_cp, *yy_bp;
Packit 90a5c9
	register int yy_act;
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
Packit 90a5c9
#line 78 "util_expr_scan.l"
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
  char  regex_buf[MAX_STRING_LEN];
Packit 90a5c9
  char *regex_ptr = NULL;
Packit 90a5c9
  char  regex_del = '\0';
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
 /*
Packit 90a5c9
  * Set initial state for string expressions
Packit 90a5c9
  */
Packit 90a5c9
  if (yyextra->at_start) {
Packit 90a5c9
    yyextra->at_start = 0;
Packit 90a5c9
    if (yyextra->flags & AP_EXPR_FLAG_STRING_RESULT) {
Packit 90a5c9
        BEGIN(str);
Packit 90a5c9
        return T_EXPR_STRING;
Packit 90a5c9
    }
Packit 90a5c9
    else {
Packit 90a5c9
        return T_EXPR_BOOL;
Packit 90a5c9
    }
Packit 90a5c9
  }
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
 /*
Packit 90a5c9
  * Whitespaces
Packit 90a5c9
  */
Packit 90a5c9
#line 886 "util_expr_scan.c"
Packit 90a5c9
Packit 90a5c9
    yylval = yylval_param;
Packit 90a5c9
Packit 90a5c9
	if ( !yyg->yy_init )
Packit 90a5c9
		{
Packit 90a5c9
		yyg->yy_init = 1;
Packit 90a5c9
Packit 90a5c9
#ifdef YY_USER_INIT
Packit 90a5c9
		YY_USER_INIT;
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
		if ( ! yyg->yy_start )
Packit 90a5c9
			yyg->yy_start = 1;	/* first start state */
Packit 90a5c9
Packit 90a5c9
		if ( ! yyin )
Packit 90a5c9
			yyin = stdin;
Packit 90a5c9
Packit 90a5c9
		if ( ! yyout )
Packit 90a5c9
			yyout = stdout;
Packit 90a5c9
Packit 90a5c9
		if ( ! YY_CURRENT_BUFFER ) {
Packit 90a5c9
			ap_expr_yyensure_buffer_stack (yyscanner);
Packit 90a5c9
			YY_CURRENT_BUFFER_LVALUE =
Packit 90a5c9
				ap_expr_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
Packit 90a5c9
		}
Packit 90a5c9
Packit 90a5c9
		ap_expr_yy_load_buffer_state(yyscanner );
Packit 90a5c9
		}
Packit 90a5c9
Packit 90a5c9
	while ( 1 )		/* loops until end-of-file is reached */
Packit 90a5c9
		{
Packit 90a5c9
		yy_cp = yyg->yy_c_buf_p;
Packit 90a5c9
Packit 90a5c9
		/* Support of yytext. */
Packit 90a5c9
		*yy_cp = yyg->yy_hold_char;
Packit 90a5c9
Packit 90a5c9
		/* yy_bp points to the position in yy_ch_buf of the start of
Packit 90a5c9
		 * the current run.
Packit 90a5c9
		 */
Packit 90a5c9
		yy_bp = yy_cp;
Packit 90a5c9
Packit 90a5c9
		yy_current_state = yyg->yy_start;
Packit 90a5c9
yy_match:
Packit 90a5c9
		do
Packit 90a5c9
			{
Packit 90a5c9
			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
Packit 90a5c9
			if ( yy_accept[yy_current_state] )
Packit 90a5c9
				{
Packit 90a5c9
				yyg->yy_last_accepting_state = yy_current_state;
Packit 90a5c9
				yyg->yy_last_accepting_cpos = yy_cp;
Packit 90a5c9
				}
Packit 90a5c9
			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
Packit 90a5c9
				{
Packit 90a5c9
				yy_current_state = (int) yy_def[yy_current_state];
Packit 90a5c9
				if ( yy_current_state >= 124 )
Packit 90a5c9
					yy_c = yy_meta[(unsigned int) yy_c];
Packit 90a5c9
				}
Packit 90a5c9
			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
Packit 90a5c9
			++yy_cp;
Packit 90a5c9
			}
Packit 90a5c9
		while ( yy_current_state != 123 );
Packit 90a5c9
		yy_cp = yyg->yy_last_accepting_cpos;
Packit 90a5c9
		yy_current_state = yyg->yy_last_accepting_state;
Packit 90a5c9
Packit 90a5c9
yy_find_action:
Packit 90a5c9
		yy_act = yy_accept[yy_current_state];
Packit 90a5c9
Packit 90a5c9
		YY_DO_BEFORE_ACTION;
Packit 90a5c9
Packit 90a5c9
do_action:	/* This label is used only to access EOF actions. */
Packit 90a5c9
Packit 90a5c9
		switch ( yy_act )
Packit 90a5c9
	{ /* beginning of action switch */
Packit 90a5c9
			case 0: /* must back up */
Packit 90a5c9
			/* undo the effects of YY_DO_BEFORE_ACTION */
Packit 90a5c9
			*yy_cp = yyg->yy_hold_char;
Packit 90a5c9
			yy_cp = yyg->yy_last_accepting_cpos;
Packit 90a5c9
			yy_current_state = yyg->yy_last_accepting_state;
Packit 90a5c9
			goto yy_find_action;
Packit 90a5c9
Packit 90a5c9
case 1:
Packit 90a5c9
/* rule 1 can match eol */
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 103 "util_expr_scan.l"
Packit 90a5c9
{ 
Packit 90a5c9
    /* NOP */
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
/*
Packit 90a5c9
  * strings ("..." and '...')
Packit 90a5c9
  */
Packit 90a5c9
case 2:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 110 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    str_ptr = str_buf;
Packit 90a5c9
    str_del = yytext[0];
Packit 90a5c9
    BEGIN(str);
Packit 90a5c9
    return T_STR_BEGIN;
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 3:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 116 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    if (yytext[0] == str_del) {
Packit 90a5c9
        if (YY_START == var) {
Packit 90a5c9
            PERROR("Unterminated variable in string");
Packit 90a5c9
        }
Packit 90a5c9
        else if (str_ptr == str_buf) {
Packit 90a5c9
            BEGIN(INITIAL);
Packit 90a5c9
            return T_STR_END;
Packit 90a5c9
        }
Packit 90a5c9
        else {
Packit 90a5c9
            /* return what we have so far and scan delimiter again */
Packit 90a5c9
            *str_ptr = '\0';
Packit 90a5c9
            yylval->cpVal = apr_pstrdup(yyextra->pool, str_buf);
Packit 90a5c9
            yyless(0);
Packit 90a5c9
            str_ptr = str_buf;
Packit 90a5c9
            return T_STRING;
Packit 90a5c9
        }
Packit 90a5c9
    }
Packit 90a5c9
    else {
Packit 90a5c9
        STR_APPEND(yytext[0]);
Packit 90a5c9
    }
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 4:
Packit 90a5c9
/* rule 4 can match eol */
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 138 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    PERROR("Unterminated string or variable");
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case YY_STATE_EOF(var):
Packit 90a5c9
case YY_STATE_EOF(vararg):
Packit 90a5c9
#line 141 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    PERROR("Unterminated string or variable");
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case YY_STATE_EOF(str):
Packit 90a5c9
#line 144 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    if (!(yyextra->flags & AP_EXPR_FLAG_STRING_RESULT)) {
Packit 90a5c9
        PERROR("Unterminated string or variable");
Packit 90a5c9
    }
Packit 90a5c9
    else {
Packit 90a5c9
        *str_ptr = '\0';
Packit 90a5c9
        yylval->cpVal = apr_pstrdup(yyextra->pool, str_buf);
Packit 90a5c9
        str_ptr = str_buf;
Packit 90a5c9
        BEGIN(INITIAL);
Packit 90a5c9
        return T_STRING;
Packit 90a5c9
    }
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 5:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 157 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    int result;
Packit 90a5c9
Packit 90a5c9
    (void)sscanf(yytext+1, "%o", &result);
Packit 90a5c9
    if (result > 0xff) {
Packit 90a5c9
        PERROR("Escape sequence out of bound");
Packit 90a5c9
    }
Packit 90a5c9
    else {
Packit 90a5c9
        STR_APPEND(result);
Packit 90a5c9
    }
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 6:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 168 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    PERROR("Bad escape sequence");
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 7:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 171 "util_expr_scan.l"
Packit 90a5c9
{ STR_APPEND('\n'); }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 8:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 172 "util_expr_scan.l"
Packit 90a5c9
{ STR_APPEND('\r'); }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 9:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 173 "util_expr_scan.l"
Packit 90a5c9
{ STR_APPEND('\t'); }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 10:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 174 "util_expr_scan.l"
Packit 90a5c9
{ STR_APPEND('\b'); }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 11:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 175 "util_expr_scan.l"
Packit 90a5c9
{ STR_APPEND('\f'); }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 12:
Packit 90a5c9
/* rule 12 can match eol */
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 176 "util_expr_scan.l"
Packit 90a5c9
{ STR_APPEND(yytext[1]); }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
/* regexp backref inside string/arg */
Packit 90a5c9
case 13:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 179 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    if (str_ptr != str_buf) {
Packit 90a5c9
        /* return what we have so far and scan '$x' again */
Packit 90a5c9
        *str_ptr = '\0';
Packit 90a5c9
        yylval->cpVal = apr_pstrdup(yyextra->pool, str_buf);
Packit 90a5c9
        str_ptr = str_buf;
Packit 90a5c9
        yyless(0);
Packit 90a5c9
        return T_STRING;
Packit 90a5c9
    }
Packit 90a5c9
    else {
Packit 90a5c9
        yylval->num = yytext[1] - '0';
Packit 90a5c9
        return T_REGEX_BACKREF;
Packit 90a5c9
    }
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 14:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 194 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    char *cp = yytext;
Packit 90a5c9
    while (*cp != '\0') {
Packit 90a5c9
        STR_APPEND(*cp);
Packit 90a5c9
        cp++;
Packit 90a5c9
    }
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
/* variable inside string/arg */
Packit 90a5c9
case 15:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 203 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    if (str_ptr != str_buf) {
Packit 90a5c9
        /* return what we have so far and scan '%{' again */
Packit 90a5c9
        *str_ptr = '\0';
Packit 90a5c9
        yylval->cpVal = apr_pstrdup(yyextra->pool, str_buf);
Packit 90a5c9
        yyless(0);
Packit 90a5c9
        str_ptr = str_buf;
Packit 90a5c9
        return T_STRING;
Packit 90a5c9
    }
Packit 90a5c9
    else {
Packit 90a5c9
        yy_push_state(var, yyscanner);
Packit 90a5c9
        return T_VAR_BEGIN;
Packit 90a5c9
    }
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 16:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 218 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
     STR_APPEND(yytext[0]);
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 17:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 222 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
     STR_APPEND(yytext[0]);
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 18:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 226 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    yy_push_state(var, yyscanner);
Packit 90a5c9
    return T_VAR_BEGIN;
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 19:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 231 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    yylval->num = yytext[1] - '0';
Packit 90a5c9
    return T_REGEX_BACKREF;
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
/*
Packit 90a5c9
  * fixed name variable expansion %{XXX} and function call in %{func:arg} syntax
Packit 90a5c9
  */
Packit 90a5c9
case 20:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 239 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    yylval->cpVal = apr_pstrdup(yyextra->pool, yytext);
Packit 90a5c9
    return T_ID;
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 21:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 244 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    yy_pop_state(yyscanner);
Packit 90a5c9
    return T_VAR_END;
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 22:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 249 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    BEGIN(vararg);
Packit 90a5c9
    return yytext[0];
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 23:
Packit 90a5c9
/* rule 23 can match eol */
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 254 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    char *msg = apr_psprintf(yyextra->pool,
Packit 90a5c9
                             "Invalid character in variable name '%c'", yytext[0]);
Packit 90a5c9
    PERROR(msg);
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 24:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 260 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    if (str_ptr != str_buf) {
Packit 90a5c9
        /* return what we have so far and scan '}' again */
Packit 90a5c9
        *str_ptr = '\0';
Packit 90a5c9
        yylval->cpVal = apr_pstrdup(yyextra->pool, str_buf);
Packit 90a5c9
        str_ptr = str_buf;
Packit 90a5c9
        yyless(0);
Packit 90a5c9
        return T_STRING;
Packit 90a5c9
    }
Packit 90a5c9
    else {
Packit 90a5c9
        yy_pop_state(yyscanner);
Packit 90a5c9
        return T_VAR_END;
Packit 90a5c9
    }
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
/*
Packit 90a5c9
  * Regular Expression
Packit 90a5c9
  */
Packit 90a5c9
case 25:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 278 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    regex_del = yytext[1];
Packit 90a5c9
    regex_ptr = regex_buf;
Packit 90a5c9
    BEGIN(regex);
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 26:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 283 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    regex_del = yytext[0];
Packit 90a5c9
    regex_ptr = regex_buf;
Packit 90a5c9
    BEGIN(regex);
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 27:
Packit 90a5c9
/* rule 27 can match eol */
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 288 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    if (yytext[0] == regex_del) {
Packit 90a5c9
        *regex_ptr = '\0';
Packit 90a5c9
        BEGIN(regex_flags);
Packit 90a5c9
    }
Packit 90a5c9
    else {
Packit 90a5c9
        *regex_ptr++ = yytext[0];
Packit 90a5c9
        if (regex_ptr >= regex_buf + sizeof(regex_buf))
Packit 90a5c9
            PERROR("Regexp too long");
Packit 90a5c9
    }
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 28:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 299 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    yylval->cpVal = apr_pstrdup(yyextra->pool, regex_buf);
Packit 90a5c9
    BEGIN(INITIAL);
Packit 90a5c9
    return T_REGEX_I;
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 29:
Packit 90a5c9
/* rule 29 can match eol */
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 304 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    yylval->cpVal = apr_pstrdup(yyextra->pool, regex_buf);
Packit 90a5c9
    yyless(0);
Packit 90a5c9
    BEGIN(INITIAL);
Packit 90a5c9
    return T_REGEX;
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case YY_STATE_EOF(regex_flags):
Packit 90a5c9
#line 310 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    yylval->cpVal = apr_pstrdup(yyextra->pool, regex_buf);
Packit 90a5c9
    BEGIN(INITIAL);
Packit 90a5c9
    return T_REGEX;
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
/*
Packit 90a5c9
  * Operators
Packit 90a5c9
  */
Packit 90a5c9
case 30:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 319 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_STR_EQ; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 31:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 320 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_STR_NE; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 32:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 321 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_STR_LT; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 33:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 322 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_STR_LE; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 34:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 323 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_STR_GT; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 35:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 324 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_STR_GE; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 36:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 325 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_REG; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 37:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 326 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_NRE; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 38:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 327 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_AND; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 39:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 328 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_AND; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 40:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 329 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_OR; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 41:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 330 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_OR; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 42:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 331 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_NOT; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 43:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 332 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_NOT; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 44:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 333 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_CONCAT; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 45:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 334 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_IN; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 46:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 335 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_EQ; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 47:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 336 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_NE; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 48:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 337 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_GE; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 49:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 338 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_LE; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 50:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 339 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_GT; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 51:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 340 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_LT; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
/* for compatibility with ssl_expr */
Packit 90a5c9
case 52:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 343 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_LT; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 53:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 344 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_LE; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 54:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 345 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_GT; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 55:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 346 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_GE; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 56:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 347 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_NE; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 57:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 348 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_EQ; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 58:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 349 "util_expr_scan.l"
Packit 90a5c9
{ return T_OP_IN; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 59:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 351 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    yylval->cpVal = apr_pstrdup(yyextra->pool, yytext + 1);
Packit 90a5c9
    return T_OP_UNARY;
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 60:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 356 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    yylval->cpVal = apr_pstrdup(yyextra->pool, yytext + 1);
Packit 90a5c9
    return T_OP_BINARY;
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
/*
Packit 90a5c9
  * Specials
Packit 90a5c9
  */
Packit 90a5c9
case 61:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 364 "util_expr_scan.l"
Packit 90a5c9
{ return T_TRUE; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 62:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 365 "util_expr_scan.l"
Packit 90a5c9
{ return T_FALSE; }
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
/*
Packit 90a5c9
  * Digits
Packit 90a5c9
  */
Packit 90a5c9
case 63:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 370 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    yylval->cpVal = apr_pstrdup(yyextra->pool, yytext);
Packit 90a5c9
    return T_DIGIT;
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
/*
Packit 90a5c9
  * Identifiers
Packit 90a5c9
  */
Packit 90a5c9
case 64:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 378 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    yylval->cpVal = apr_pstrdup(yyextra->pool, yytext);
Packit 90a5c9
    return T_ID;
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
/*
Packit 90a5c9
  * These are parts of the grammar and are returned as is
Packit 90a5c9
  */
Packit 90a5c9
case 65:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 386 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    return yytext[0];
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
/*
Packit 90a5c9
  * Anything else is an error
Packit 90a5c9
  */
Packit 90a5c9
case 66:
Packit 90a5c9
/* rule 66 can match eol */
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 393 "util_expr_scan.l"
Packit 90a5c9
{
Packit 90a5c9
    char *msg = apr_psprintf(yyextra->pool, "Parse error near '%c'", yytext[0]);
Packit 90a5c9
    PERROR(msg);
Packit 90a5c9
}
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
case 67:
Packit 90a5c9
YY_RULE_SETUP
Packit 90a5c9
#line 398 "util_expr_scan.l"
Packit 90a5c9
YY_FATAL_ERROR( "flex scanner jammed" );
Packit 90a5c9
	YY_BREAK
Packit 90a5c9
#line 1523 "util_expr_scan.c"
Packit 90a5c9
case YY_STATE_EOF(INITIAL):
Packit 90a5c9
case YY_STATE_EOF(regex):
Packit 90a5c9
	yyterminate();
Packit 90a5c9
Packit 90a5c9
	case YY_END_OF_BUFFER:
Packit 90a5c9
		{
Packit 90a5c9
		/* Amount of text matched not including the EOB char. */
Packit 90a5c9
		int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
Packit 90a5c9
Packit 90a5c9
		/* Undo the effects of YY_DO_BEFORE_ACTION. */
Packit 90a5c9
		*yy_cp = yyg->yy_hold_char;
Packit 90a5c9
		YY_RESTORE_YY_MORE_OFFSET
Packit 90a5c9
Packit 90a5c9
		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
Packit 90a5c9
			{
Packit 90a5c9
			/* We're scanning a new file or input source.  It's
Packit 90a5c9
			 * possible that this happened because the user
Packit 90a5c9
			 * just pointed yyin at a new source and called
Packit 90a5c9
			 * ap_expr_yylex().  If so, then we have to assure
Packit 90a5c9
			 * consistency between YY_CURRENT_BUFFER and our
Packit 90a5c9
			 * globals.  Here is the right place to do so, because
Packit 90a5c9
			 * this is the first action (other than possibly a
Packit 90a5c9
			 * back-up) that will match for the new input source.
Packit 90a5c9
			 */
Packit 90a5c9
			yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
Packit 90a5c9
			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
Packit 90a5c9
			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
Packit 90a5c9
			}
Packit 90a5c9
Packit 90a5c9
		/* Note that here we test for yy_c_buf_p "<=" to the position
Packit 90a5c9
		 * of the first EOB in the buffer, since yy_c_buf_p will
Packit 90a5c9
		 * already have been incremented past the NUL character
Packit 90a5c9
		 * (since all states make transitions on EOB to the
Packit 90a5c9
		 * end-of-buffer state).  Contrast this with the test
Packit 90a5c9
		 * in input().
Packit 90a5c9
		 */
Packit 90a5c9
		if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
Packit 90a5c9
			{ /* This was really a NUL. */
Packit 90a5c9
			yy_state_type yy_next_state;
Packit 90a5c9
Packit 90a5c9
			yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
Packit 90a5c9
Packit 90a5c9
			yy_current_state = yy_get_previous_state( yyscanner );
Packit 90a5c9
Packit 90a5c9
			/* Okay, we're now positioned to make the NUL
Packit 90a5c9
			 * transition.  We couldn't have
Packit 90a5c9
			 * yy_get_previous_state() go ahead and do it
Packit 90a5c9
			 * for us because it doesn't know how to deal
Packit 90a5c9
			 * with the possibility of jamming (and we don't
Packit 90a5c9
			 * want to build jamming into it because then it
Packit 90a5c9
			 * will run more slowly).
Packit 90a5c9
			 */
Packit 90a5c9
Packit 90a5c9
			yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
Packit 90a5c9
Packit 90a5c9
			yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
Packit 90a5c9
Packit 90a5c9
			if ( yy_next_state )
Packit 90a5c9
				{
Packit 90a5c9
				/* Consume the NUL. */
Packit 90a5c9
				yy_cp = ++yyg->yy_c_buf_p;
Packit 90a5c9
				yy_current_state = yy_next_state;
Packit 90a5c9
				goto yy_match;
Packit 90a5c9
				}
Packit 90a5c9
Packit 90a5c9
			else
Packit 90a5c9
				{
Packit 90a5c9
				yy_cp = yyg->yy_last_accepting_cpos;
Packit 90a5c9
				yy_current_state = yyg->yy_last_accepting_state;
Packit 90a5c9
				goto yy_find_action;
Packit 90a5c9
				}
Packit 90a5c9
			}
Packit 90a5c9
Packit 90a5c9
		else switch ( yy_get_next_buffer( yyscanner ) )
Packit 90a5c9
			{
Packit 90a5c9
			case EOB_ACT_END_OF_FILE:
Packit 90a5c9
				{
Packit 90a5c9
				yyg->yy_did_buffer_switch_on_eof = 0;
Packit 90a5c9
Packit 90a5c9
				if ( ap_expr_yywrap(yyscanner ) )
Packit 90a5c9
					{
Packit 90a5c9
					/* Note: because we've taken care in
Packit 90a5c9
					 * yy_get_next_buffer() to have set up
Packit 90a5c9
					 * yytext, we can now set up
Packit 90a5c9
					 * yy_c_buf_p so that if some total
Packit 90a5c9
					 * hoser (like flex itself) wants to
Packit 90a5c9
					 * call the scanner after we return the
Packit 90a5c9
					 * YY_NULL, it'll still work - another
Packit 90a5c9
					 * YY_NULL will get returned.
Packit 90a5c9
					 */
Packit 90a5c9
					yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
Packit 90a5c9
Packit 90a5c9
					yy_act = YY_STATE_EOF(YY_START);
Packit 90a5c9
					goto do_action;
Packit 90a5c9
					}
Packit 90a5c9
Packit 90a5c9
				else
Packit 90a5c9
					{
Packit 90a5c9
					if ( ! yyg->yy_did_buffer_switch_on_eof )
Packit 90a5c9
						YY_NEW_FILE;
Packit 90a5c9
					}
Packit 90a5c9
				break;
Packit 90a5c9
				}
Packit 90a5c9
Packit 90a5c9
			case EOB_ACT_CONTINUE_SCAN:
Packit 90a5c9
				yyg->yy_c_buf_p =
Packit 90a5c9
					yyg->yytext_ptr + yy_amount_of_matched_text;
Packit 90a5c9
Packit 90a5c9
				yy_current_state = yy_get_previous_state( yyscanner );
Packit 90a5c9
Packit 90a5c9
				yy_cp = yyg->yy_c_buf_p;
Packit 90a5c9
				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
Packit 90a5c9
				goto yy_match;
Packit 90a5c9
Packit 90a5c9
			case EOB_ACT_LAST_MATCH:
Packit 90a5c9
				yyg->yy_c_buf_p =
Packit 90a5c9
				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
Packit 90a5c9
Packit 90a5c9
				yy_current_state = yy_get_previous_state( yyscanner );
Packit 90a5c9
Packit 90a5c9
				yy_cp = yyg->yy_c_buf_p;
Packit 90a5c9
				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
Packit 90a5c9
				goto yy_find_action;
Packit 90a5c9
			}
Packit 90a5c9
		break;
Packit 90a5c9
		}
Packit 90a5c9
Packit 90a5c9
	default:
Packit 90a5c9
		YY_FATAL_ERROR(
Packit 90a5c9
			"fatal flex scanner internal error--no action found" );
Packit 90a5c9
	} /* end of action switch */
Packit 90a5c9
		} /* end of scanning one token */
Packit 90a5c9
} /* end of ap_expr_yylex */
Packit 90a5c9
Packit 90a5c9
/* yy_get_next_buffer - try to read in a new buffer
Packit 90a5c9
 *
Packit 90a5c9
 * Returns a code representing an action:
Packit 90a5c9
 *	EOB_ACT_LAST_MATCH -
Packit 90a5c9
 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
Packit 90a5c9
 *	EOB_ACT_END_OF_FILE - end of file
Packit 90a5c9
 */
Packit 90a5c9
static int yy_get_next_buffer (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
Packit 90a5c9
	register char *source = yyg->yytext_ptr;
Packit 90a5c9
	register int number_to_move, i;
Packit 90a5c9
	int ret_val;
Packit 90a5c9
Packit 90a5c9
	if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
Packit 90a5c9
		YY_FATAL_ERROR(
Packit 90a5c9
		"fatal flex scanner internal error--end of buffer missed" );
Packit 90a5c9
Packit 90a5c9
	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
Packit 90a5c9
		{ /* Don't try to fill the buffer, so this is an EOF. */
Packit 90a5c9
		if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
Packit 90a5c9
			{
Packit 90a5c9
			/* We matched a single character, the EOB, so
Packit 90a5c9
			 * treat this as a final EOF.
Packit 90a5c9
			 */
Packit 90a5c9
			return EOB_ACT_END_OF_FILE;
Packit 90a5c9
			}
Packit 90a5c9
Packit 90a5c9
		else
Packit 90a5c9
			{
Packit 90a5c9
			/* We matched some text prior to the EOB, first
Packit 90a5c9
			 * process it.
Packit 90a5c9
			 */
Packit 90a5c9
			return EOB_ACT_LAST_MATCH;
Packit 90a5c9
			}
Packit 90a5c9
		}
Packit 90a5c9
Packit 90a5c9
	/* Try to read more data. */
Packit 90a5c9
Packit 90a5c9
	/* First move last chars to start of buffer. */
Packit 90a5c9
	number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
Packit 90a5c9
Packit 90a5c9
	for ( i = 0; i < number_to_move; ++i )
Packit 90a5c9
		*(dest++) = *(source++);
Packit 90a5c9
Packit 90a5c9
	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
Packit 90a5c9
		/* don't do the read, it's not guaranteed to return an EOF,
Packit 90a5c9
		 * just force an EOF
Packit 90a5c9
		 */
Packit 90a5c9
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
Packit 90a5c9
Packit 90a5c9
	else
Packit 90a5c9
		{
Packit 90a5c9
			int num_to_read =
Packit 90a5c9
			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
Packit 90a5c9
Packit 90a5c9
		while ( num_to_read <= 0 )
Packit 90a5c9
			{ /* Not enough room in the buffer - grow it. */
Packit 90a5c9
Packit 90a5c9
			/* just a shorter name for the current buffer */
Packit 90a5c9
			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
Packit 90a5c9
Packit 90a5c9
			int yy_c_buf_p_offset =
Packit 90a5c9
				(int) (yyg->yy_c_buf_p - b->yy_ch_buf);
Packit 90a5c9
Packit 90a5c9
			if ( b->yy_is_our_buffer )
Packit 90a5c9
				{
Packit 90a5c9
				int new_size = b->yy_buf_size * 2;
Packit 90a5c9
Packit 90a5c9
				if ( new_size <= 0 )
Packit 90a5c9
					b->yy_buf_size += b->yy_buf_size / 8;
Packit 90a5c9
				else
Packit 90a5c9
					b->yy_buf_size *= 2;
Packit 90a5c9
Packit 90a5c9
				b->yy_ch_buf = (char *)
Packit 90a5c9
					/* Include room in for 2 EOB chars. */
Packit 90a5c9
					ap_expr_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
Packit 90a5c9
				}
Packit 90a5c9
			else
Packit 90a5c9
				/* Can't grow it, we don't own it. */
Packit 90a5c9
				b->yy_ch_buf = 0;
Packit 90a5c9
Packit 90a5c9
			if ( ! b->yy_ch_buf )
Packit 90a5c9
				YY_FATAL_ERROR(
Packit 90a5c9
				"fatal error - scanner input buffer overflow" );
Packit 90a5c9
Packit 90a5c9
			yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
Packit 90a5c9
Packit 90a5c9
			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
Packit 90a5c9
						number_to_move - 1;
Packit 90a5c9
Packit 90a5c9
			}
Packit 90a5c9
Packit 90a5c9
		if ( num_to_read > YY_READ_BUF_SIZE )
Packit 90a5c9
			num_to_read = YY_READ_BUF_SIZE;
Packit 90a5c9
Packit 90a5c9
		/* Read in more data. */
Packit 90a5c9
		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
Packit 90a5c9
			yyg->yy_n_chars, (size_t) num_to_read );
Packit 90a5c9
Packit 90a5c9
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
Packit 90a5c9
		}
Packit 90a5c9
Packit 90a5c9
	if ( yyg->yy_n_chars == 0 )
Packit 90a5c9
		{
Packit 90a5c9
		if ( number_to_move == YY_MORE_ADJ )
Packit 90a5c9
			{
Packit 90a5c9
			ret_val = EOB_ACT_END_OF_FILE;
Packit 90a5c9
			ap_expr_yyrestart(yyin  ,yyscanner);
Packit 90a5c9
			}
Packit 90a5c9
Packit 90a5c9
		else
Packit 90a5c9
			{
Packit 90a5c9
			ret_val = EOB_ACT_LAST_MATCH;
Packit 90a5c9
			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
Packit 90a5c9
				YY_BUFFER_EOF_PENDING;
Packit 90a5c9
			}
Packit 90a5c9
		}
Packit 90a5c9
Packit 90a5c9
	else
Packit 90a5c9
		ret_val = EOB_ACT_CONTINUE_SCAN;
Packit 90a5c9
Packit 90a5c9
	if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
Packit 90a5c9
		/* Extend the array by 50%, plus the number we really need. */
Packit 90a5c9
		yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
Packit 90a5c9
		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) ap_expr_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
Packit 90a5c9
		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
Packit 90a5c9
			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
Packit 90a5c9
	}
Packit 90a5c9
Packit 90a5c9
	yyg->yy_n_chars += number_to_move;
Packit 90a5c9
	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
Packit 90a5c9
	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
Packit 90a5c9
Packit 90a5c9
	yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
Packit 90a5c9
Packit 90a5c9
	return ret_val;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/* yy_get_previous_state - get the state just before the EOB char was reached */
Packit 90a5c9
Packit 90a5c9
    static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
	register yy_state_type yy_current_state;
Packit 90a5c9
	register char *yy_cp;
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
Packit 90a5c9
	yy_current_state = yyg->yy_start;
Packit 90a5c9
Packit 90a5c9
	for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
Packit 90a5c9
		{
Packit 90a5c9
		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
Packit 90a5c9
		if ( yy_accept[yy_current_state] )
Packit 90a5c9
			{
Packit 90a5c9
			yyg->yy_last_accepting_state = yy_current_state;
Packit 90a5c9
			yyg->yy_last_accepting_cpos = yy_cp;
Packit 90a5c9
			}
Packit 90a5c9
		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
Packit 90a5c9
			{
Packit 90a5c9
			yy_current_state = (int) yy_def[yy_current_state];
Packit 90a5c9
			if ( yy_current_state >= 124 )
Packit 90a5c9
				yy_c = yy_meta[(unsigned int) yy_c];
Packit 90a5c9
			}
Packit 90a5c9
		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
Packit 90a5c9
		}
Packit 90a5c9
Packit 90a5c9
	return yy_current_state;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/* yy_try_NUL_trans - try to make a transition on the NUL character
Packit 90a5c9
 *
Packit 90a5c9
 * synopsis
Packit 90a5c9
 *	next_state = yy_try_NUL_trans( current_state );
Packit 90a5c9
 */
Packit 90a5c9
    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
	register int yy_is_jam;
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
Packit 90a5c9
	register char *yy_cp = yyg->yy_c_buf_p;
Packit 90a5c9
Packit 90a5c9
	register YY_CHAR yy_c = 1;
Packit 90a5c9
	if ( yy_accept[yy_current_state] )
Packit 90a5c9
		{
Packit 90a5c9
		yyg->yy_last_accepting_state = yy_current_state;
Packit 90a5c9
		yyg->yy_last_accepting_cpos = yy_cp;
Packit 90a5c9
		}
Packit 90a5c9
	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
Packit 90a5c9
		{
Packit 90a5c9
		yy_current_state = (int) yy_def[yy_current_state];
Packit 90a5c9
		if ( yy_current_state >= 124 )
Packit 90a5c9
			yy_c = yy_meta[(unsigned int) yy_c];
Packit 90a5c9
		}
Packit 90a5c9
	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
Packit 90a5c9
	yy_is_jam = (yy_current_state == 123);
Packit 90a5c9
Packit 90a5c9
	return yy_is_jam ? 0 : yy_current_state;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
#ifndef YY_NO_INPUT
Packit 90a5c9
#ifdef __cplusplus
Packit 90a5c9
    static int yyinput (yyscan_t yyscanner)
Packit 90a5c9
#else
Packit 90a5c9
    static int input  (yyscan_t yyscanner)
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
{
Packit 90a5c9
	int c;
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
Packit 90a5c9
	*yyg->yy_c_buf_p = yyg->yy_hold_char;
Packit 90a5c9
Packit 90a5c9
	if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
Packit 90a5c9
		{
Packit 90a5c9
		/* yy_c_buf_p now points to the character we want to return.
Packit 90a5c9
		 * If this occurs *before* the EOB characters, then it's a
Packit 90a5c9
		 * valid NUL; if not, then we've hit the end of the buffer.
Packit 90a5c9
		 */
Packit 90a5c9
		if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
Packit 90a5c9
			/* This was really a NUL. */
Packit 90a5c9
			*yyg->yy_c_buf_p = '\0';
Packit 90a5c9
Packit 90a5c9
		else
Packit 90a5c9
			{ /* need more input */
Packit 90a5c9
			int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
Packit 90a5c9
			++yyg->yy_c_buf_p;
Packit 90a5c9
Packit 90a5c9
			switch ( yy_get_next_buffer( yyscanner ) )
Packit 90a5c9
				{
Packit 90a5c9
				case EOB_ACT_LAST_MATCH:
Packit 90a5c9
					/* This happens because yy_g_n_b()
Packit 90a5c9
					 * sees that we've accumulated a
Packit 90a5c9
					 * token and flags that we need to
Packit 90a5c9
					 * try matching the token before
Packit 90a5c9
					 * proceeding.  But for input(),
Packit 90a5c9
					 * there's no matching to consider.
Packit 90a5c9
					 * So convert the EOB_ACT_LAST_MATCH
Packit 90a5c9
					 * to EOB_ACT_END_OF_FILE.
Packit 90a5c9
					 */
Packit 90a5c9
Packit 90a5c9
					/* Reset buffer status. */
Packit 90a5c9
					ap_expr_yyrestart(yyin ,yyscanner);
Packit 90a5c9
Packit 90a5c9
					/*FALLTHROUGH*/
Packit 90a5c9
Packit 90a5c9
				case EOB_ACT_END_OF_FILE:
Packit 90a5c9
					{
Packit 90a5c9
					if ( ap_expr_yywrap(yyscanner ) )
Packit 90a5c9
						return EOF;
Packit 90a5c9
Packit 90a5c9
					if ( ! yyg->yy_did_buffer_switch_on_eof )
Packit 90a5c9
						YY_NEW_FILE;
Packit 90a5c9
#ifdef __cplusplus
Packit 90a5c9
					return yyinput(yyscanner);
Packit 90a5c9
#else
Packit 90a5c9
					return input(yyscanner);
Packit 90a5c9
#endif
Packit 90a5c9
					}
Packit 90a5c9
Packit 90a5c9
				case EOB_ACT_CONTINUE_SCAN:
Packit 90a5c9
					yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
Packit 90a5c9
					break;
Packit 90a5c9
				}
Packit 90a5c9
			}
Packit 90a5c9
		}
Packit 90a5c9
Packit 90a5c9
	c = *(unsigned char *) yyg->yy_c_buf_p;	/* cast for 8-bit char's */
Packit 90a5c9
	*yyg->yy_c_buf_p = '\0';	/* preserve yytext */
Packit 90a5c9
	yyg->yy_hold_char = *++yyg->yy_c_buf_p;
Packit 90a5c9
Packit 90a5c9
	return c;
Packit 90a5c9
}
Packit 90a5c9
#endif	/* ifndef YY_NO_INPUT */
Packit 90a5c9
Packit 90a5c9
/** Immediately switch to a different input stream.
Packit 90a5c9
 * @param input_file A readable stream.
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 * @note This function does not reset the start condition to @c INITIAL .
Packit 90a5c9
 */
Packit 90a5c9
    void ap_expr_yyrestart  (FILE * input_file , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
Packit 90a5c9
	if ( ! YY_CURRENT_BUFFER ){
Packit 90a5c9
        ap_expr_yyensure_buffer_stack (yyscanner);
Packit 90a5c9
		YY_CURRENT_BUFFER_LVALUE =
Packit 90a5c9
            ap_expr_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
Packit 90a5c9
	}
Packit 90a5c9
Packit 90a5c9
	ap_expr_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
Packit 90a5c9
	ap_expr_yy_load_buffer_state(yyscanner );
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Switch to a different input buffer.
Packit 90a5c9
 * @param new_buffer The new input buffer.
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
    void ap_expr_yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
Packit 90a5c9
	/* TODO. We should be able to replace this entire function body
Packit 90a5c9
	 * with
Packit 90a5c9
	 *		ap_expr_yypop_buffer_state();
Packit 90a5c9
	 *		ap_expr_yypush_buffer_state(new_buffer);
Packit 90a5c9
     */
Packit 90a5c9
	ap_expr_yyensure_buffer_stack (yyscanner);
Packit 90a5c9
	if ( YY_CURRENT_BUFFER == new_buffer )
Packit 90a5c9
		return;
Packit 90a5c9
Packit 90a5c9
	if ( YY_CURRENT_BUFFER )
Packit 90a5c9
		{
Packit 90a5c9
		/* Flush out information for old buffer. */
Packit 90a5c9
		*yyg->yy_c_buf_p = yyg->yy_hold_char;
Packit 90a5c9
		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
Packit 90a5c9
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
Packit 90a5c9
		}
Packit 90a5c9
Packit 90a5c9
	YY_CURRENT_BUFFER_LVALUE = new_buffer;
Packit 90a5c9
	ap_expr_yy_load_buffer_state(yyscanner );
Packit 90a5c9
Packit 90a5c9
	/* We don't actually know whether we did this switch during
Packit 90a5c9
	 * EOF (ap_expr_yywrap()) processing, but the only time this flag
Packit 90a5c9
	 * is looked at is after ap_expr_yywrap() is called, so it's safe
Packit 90a5c9
	 * to go ahead and always set it.
Packit 90a5c9
	 */
Packit 90a5c9
	yyg->yy_did_buffer_switch_on_eof = 1;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
static void ap_expr_yy_load_buffer_state  (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
	yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
Packit 90a5c9
	yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
Packit 90a5c9
	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
Packit 90a5c9
	yyg->yy_hold_char = *yyg->yy_c_buf_p;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Allocate and initialize an input buffer state.
Packit 90a5c9
 * @param file A readable stream.
Packit 90a5c9
 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 * @return the allocated buffer state.
Packit 90a5c9
 */
Packit 90a5c9
    YY_BUFFER_STATE ap_expr_yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
	YY_BUFFER_STATE b;
Packit 90a5c9
    
Packit 90a5c9
	b = (YY_BUFFER_STATE) ap_expr_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
Packit 90a5c9
	if ( ! b )
Packit 90a5c9
		YY_FATAL_ERROR( "out of dynamic memory in ap_expr_yy_create_buffer()" );
Packit 90a5c9
Packit 90a5c9
	b->yy_buf_size = size;
Packit 90a5c9
Packit 90a5c9
	/* yy_ch_buf has to be 2 characters longer than the size given because
Packit 90a5c9
	 * we need to put in 2 end-of-buffer characters.
Packit 90a5c9
	 */
Packit 90a5c9
	b->yy_ch_buf = (char *) ap_expr_yyalloc(b->yy_buf_size + 2 ,yyscanner );
Packit 90a5c9
	if ( ! b->yy_ch_buf )
Packit 90a5c9
		YY_FATAL_ERROR( "out of dynamic memory in ap_expr_yy_create_buffer()" );
Packit 90a5c9
Packit 90a5c9
	b->yy_is_our_buffer = 1;
Packit 90a5c9
Packit 90a5c9
	ap_expr_yy_init_buffer(b,file ,yyscanner);
Packit 90a5c9
Packit 90a5c9
	return b;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Destroy the buffer.
Packit 90a5c9
 * @param b a buffer created with ap_expr_yy_create_buffer()
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
    void ap_expr_yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
Packit 90a5c9
	if ( ! b )
Packit 90a5c9
		return;
Packit 90a5c9
Packit 90a5c9
	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
Packit 90a5c9
		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
Packit 90a5c9
Packit 90a5c9
	if ( b->yy_is_our_buffer )
Packit 90a5c9
		ap_expr_yyfree((void *) b->yy_ch_buf ,yyscanner );
Packit 90a5c9
Packit 90a5c9
	ap_expr_yyfree((void *) b ,yyscanner );
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/* Initializes or reinitializes a buffer.
Packit 90a5c9
 * This function is sometimes called more than once on the same buffer,
Packit 90a5c9
 * such as during a ap_expr_yyrestart() or at EOF.
Packit 90a5c9
 */
Packit 90a5c9
    static void ap_expr_yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
Packit 90a5c9
Packit 90a5c9
{
Packit 90a5c9
	int oerrno = errno;
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
Packit 90a5c9
	ap_expr_yy_flush_buffer(b ,yyscanner);
Packit 90a5c9
Packit 90a5c9
	b->yy_input_file = file;
Packit 90a5c9
	b->yy_fill_buffer = 1;
Packit 90a5c9
Packit 90a5c9
    /* If b is the current buffer, then ap_expr_yy_init_buffer was _probably_
Packit 90a5c9
     * called from ap_expr_yyrestart() or through yy_get_next_buffer.
Packit 90a5c9
     * In that case, we don't want to reset the lineno or column.
Packit 90a5c9
     */
Packit 90a5c9
    if (b != YY_CURRENT_BUFFER){
Packit 90a5c9
        b->yy_bs_lineno = 1;
Packit 90a5c9
        b->yy_bs_column = 0;
Packit 90a5c9
    }
Packit 90a5c9
Packit 90a5c9
        b->yy_is_interactive = 0;
Packit 90a5c9
    
Packit 90a5c9
	errno = oerrno;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
Packit 90a5c9
 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
    void ap_expr_yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
	if ( ! b )
Packit 90a5c9
		return;
Packit 90a5c9
Packit 90a5c9
	b->yy_n_chars = 0;
Packit 90a5c9
Packit 90a5c9
	/* We always need two end-of-buffer characters.  The first causes
Packit 90a5c9
	 * a transition to the end-of-buffer state.  The second causes
Packit 90a5c9
	 * a jam in that state.
Packit 90a5c9
	 */
Packit 90a5c9
	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
Packit 90a5c9
	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
Packit 90a5c9
Packit 90a5c9
	b->yy_buf_pos = &b->yy_ch_buf[0];
Packit 90a5c9
Packit 90a5c9
	b->yy_at_bol = 1;
Packit 90a5c9
	b->yy_buffer_status = YY_BUFFER_NEW;
Packit 90a5c9
Packit 90a5c9
	if ( b == YY_CURRENT_BUFFER )
Packit 90a5c9
		ap_expr_yy_load_buffer_state(yyscanner );
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Pushes the new state onto the stack. The new state becomes
Packit 90a5c9
 *  the current state. This function will allocate the stack
Packit 90a5c9
 *  if necessary.
Packit 90a5c9
 *  @param new_buffer The new state.
Packit 90a5c9
 *  @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
void ap_expr_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
	if (new_buffer == NULL)
Packit 90a5c9
		return;
Packit 90a5c9
Packit 90a5c9
	ap_expr_yyensure_buffer_stack(yyscanner);
Packit 90a5c9
Packit 90a5c9
	/* This block is copied from ap_expr_yy_switch_to_buffer. */
Packit 90a5c9
	if ( YY_CURRENT_BUFFER )
Packit 90a5c9
		{
Packit 90a5c9
		/* Flush out information for old buffer. */
Packit 90a5c9
		*yyg->yy_c_buf_p = yyg->yy_hold_char;
Packit 90a5c9
		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
Packit 90a5c9
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
Packit 90a5c9
		}
Packit 90a5c9
Packit 90a5c9
	/* Only push if top exists. Otherwise, replace top. */
Packit 90a5c9
	if (YY_CURRENT_BUFFER)
Packit 90a5c9
		yyg->yy_buffer_stack_top++;
Packit 90a5c9
	YY_CURRENT_BUFFER_LVALUE = new_buffer;
Packit 90a5c9
Packit 90a5c9
	/* copied from ap_expr_yy_switch_to_buffer. */
Packit 90a5c9
	ap_expr_yy_load_buffer_state(yyscanner );
Packit 90a5c9
	yyg->yy_did_buffer_switch_on_eof = 1;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Removes and deletes the top of the stack, if present.
Packit 90a5c9
 *  The next element becomes the new top.
Packit 90a5c9
 *  @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
void ap_expr_yypop_buffer_state (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
	if (!YY_CURRENT_BUFFER)
Packit 90a5c9
		return;
Packit 90a5c9
Packit 90a5c9
	ap_expr_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
Packit 90a5c9
	YY_CURRENT_BUFFER_LVALUE = NULL;
Packit 90a5c9
	if (yyg->yy_buffer_stack_top > 0)
Packit 90a5c9
		--yyg->yy_buffer_stack_top;
Packit 90a5c9
Packit 90a5c9
	if (YY_CURRENT_BUFFER) {
Packit 90a5c9
		ap_expr_yy_load_buffer_state(yyscanner );
Packit 90a5c9
		yyg->yy_did_buffer_switch_on_eof = 1;
Packit 90a5c9
	}
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/* Allocates the stack if it does not exist.
Packit 90a5c9
 *  Guarantees space for at least one push.
Packit 90a5c9
 */
Packit 90a5c9
static void ap_expr_yyensure_buffer_stack (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
	int num_to_alloc;
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
Packit 90a5c9
	if (!yyg->yy_buffer_stack) {
Packit 90a5c9
Packit 90a5c9
		/* First allocation is just for 2 elements, since we don't know if this
Packit 90a5c9
		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
Packit 90a5c9
		 * immediate realloc on the next call.
Packit 90a5c9
         */
Packit 90a5c9
		num_to_alloc = 1;
Packit 90a5c9
		yyg->yy_buffer_stack = (struct yy_buffer_state**)ap_expr_yyalloc
Packit 90a5c9
								(num_to_alloc * sizeof(struct yy_buffer_state*)
Packit 90a5c9
								, yyscanner);
Packit 90a5c9
		if ( ! yyg->yy_buffer_stack )
Packit 90a5c9
			YY_FATAL_ERROR( "out of dynamic memory in ap_expr_yyensure_buffer_stack()" );
Packit 90a5c9
								  
Packit 90a5c9
		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
Packit 90a5c9
				
Packit 90a5c9
		yyg->yy_buffer_stack_max = num_to_alloc;
Packit 90a5c9
		yyg->yy_buffer_stack_top = 0;
Packit 90a5c9
		return;
Packit 90a5c9
	}
Packit 90a5c9
Packit 90a5c9
	if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
Packit 90a5c9
Packit 90a5c9
		/* Increase the buffer to prepare for a possible push. */
Packit 90a5c9
		int grow_size = 8 /* arbitrary grow size */;
Packit 90a5c9
Packit 90a5c9
		num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
Packit 90a5c9
		yyg->yy_buffer_stack = (struct yy_buffer_state**)ap_expr_yyrealloc
Packit 90a5c9
								(yyg->yy_buffer_stack,
Packit 90a5c9
								num_to_alloc * sizeof(struct yy_buffer_state*)
Packit 90a5c9
								, yyscanner);
Packit 90a5c9
		if ( ! yyg->yy_buffer_stack )
Packit 90a5c9
			YY_FATAL_ERROR( "out of dynamic memory in ap_expr_yyensure_buffer_stack()" );
Packit 90a5c9
Packit 90a5c9
		/* zero only the new slots.*/
Packit 90a5c9
		memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
Packit 90a5c9
		yyg->yy_buffer_stack_max = num_to_alloc;
Packit 90a5c9
	}
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Setup the input buffer state to scan directly from a user-specified character buffer.
Packit 90a5c9
 * @param base the character buffer
Packit 90a5c9
 * @param size the size in bytes of the character buffer
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 * @return the newly allocated buffer state object. 
Packit 90a5c9
 */
Packit 90a5c9
YY_BUFFER_STATE ap_expr_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
	YY_BUFFER_STATE b;
Packit 90a5c9
    
Packit 90a5c9
	if ( size < 2 ||
Packit 90a5c9
	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
Packit 90a5c9
	     base[size-1] != YY_END_OF_BUFFER_CHAR )
Packit 90a5c9
		/* They forgot to leave room for the EOB's. */
Packit 90a5c9
		return 0;
Packit 90a5c9
Packit 90a5c9
	b = (YY_BUFFER_STATE) ap_expr_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
Packit 90a5c9
	if ( ! b )
Packit 90a5c9
		YY_FATAL_ERROR( "out of dynamic memory in ap_expr_yy_scan_buffer()" );
Packit 90a5c9
Packit 90a5c9
	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
Packit 90a5c9
	b->yy_buf_pos = b->yy_ch_buf = base;
Packit 90a5c9
	b->yy_is_our_buffer = 0;
Packit 90a5c9
	b->yy_input_file = 0;
Packit 90a5c9
	b->yy_n_chars = b->yy_buf_size;
Packit 90a5c9
	b->yy_is_interactive = 0;
Packit 90a5c9
	b->yy_at_bol = 1;
Packit 90a5c9
	b->yy_fill_buffer = 0;
Packit 90a5c9
	b->yy_buffer_status = YY_BUFFER_NEW;
Packit 90a5c9
Packit 90a5c9
	ap_expr_yy_switch_to_buffer(b ,yyscanner );
Packit 90a5c9
Packit 90a5c9
	return b;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Setup the input buffer state to scan a string. The next call to ap_expr_yylex() will
Packit 90a5c9
 * scan from a @e copy of @a str.
Packit 90a5c9
 * @param yystr a NUL-terminated string to scan
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 * @return the newly allocated buffer state object.
Packit 90a5c9
 * @note If you want to scan bytes that may contain NUL values, then use
Packit 90a5c9
 *       ap_expr_yy_scan_bytes() instead.
Packit 90a5c9
 */
Packit 90a5c9
YY_BUFFER_STATE ap_expr_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    
Packit 90a5c9
	return ap_expr_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Setup the input buffer state to scan the given bytes. The next call to ap_expr_yylex() will
Packit 90a5c9
 * scan from a @e copy of @a bytes.
Packit 90a5c9
 * @param yybytes the byte buffer to scan
Packit 90a5c9
 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 * @return the newly allocated buffer state object.
Packit 90a5c9
 */
Packit 90a5c9
YY_BUFFER_STATE ap_expr_yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
	YY_BUFFER_STATE b;
Packit 90a5c9
	char *buf;
Packit 90a5c9
	yy_size_t n;
Packit 90a5c9
	int i;
Packit 90a5c9
    
Packit 90a5c9
	/* Get memory for full buffer, including space for trailing EOB's. */
Packit 90a5c9
	n = _yybytes_len + 2;
Packit 90a5c9
	buf = (char *) ap_expr_yyalloc(n ,yyscanner );
Packit 90a5c9
	if ( ! buf )
Packit 90a5c9
		YY_FATAL_ERROR( "out of dynamic memory in ap_expr_yy_scan_bytes()" );
Packit 90a5c9
Packit 90a5c9
	for ( i = 0; i < _yybytes_len; ++i )
Packit 90a5c9
		buf[i] = yybytes[i];
Packit 90a5c9
Packit 90a5c9
	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
Packit 90a5c9
Packit 90a5c9
	b = ap_expr_yy_scan_buffer(buf,n ,yyscanner);
Packit 90a5c9
	if ( ! b )
Packit 90a5c9
		YY_FATAL_ERROR( "bad buffer in ap_expr_yy_scan_bytes()" );
Packit 90a5c9
Packit 90a5c9
	/* It's okay to grow etc. this buffer, and we should throw it
Packit 90a5c9
	 * away when we're done.
Packit 90a5c9
	 */
Packit 90a5c9
	b->yy_is_our_buffer = 1;
Packit 90a5c9
Packit 90a5c9
	return b;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
    static void yy_push_state (int  new_state , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
	if ( yyg->yy_start_stack_ptr >= yyg->yy_start_stack_depth )
Packit 90a5c9
		{
Packit 90a5c9
		yy_size_t new_size;
Packit 90a5c9
Packit 90a5c9
		yyg->yy_start_stack_depth += YY_START_STACK_INCR;
Packit 90a5c9
		new_size = yyg->yy_start_stack_depth * sizeof( int );
Packit 90a5c9
Packit 90a5c9
		if ( ! yyg->yy_start_stack )
Packit 90a5c9
			yyg->yy_start_stack = (int *) ap_expr_yyalloc(new_size ,yyscanner );
Packit 90a5c9
Packit 90a5c9
		else
Packit 90a5c9
			yyg->yy_start_stack = (int *) ap_expr_yyrealloc((void *) yyg->yy_start_stack,new_size ,yyscanner );
Packit 90a5c9
Packit 90a5c9
		if ( ! yyg->yy_start_stack )
Packit 90a5c9
			YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
Packit 90a5c9
		}
Packit 90a5c9
Packit 90a5c9
	yyg->yy_start_stack[yyg->yy_start_stack_ptr++] = YY_START;
Packit 90a5c9
Packit 90a5c9
	BEGIN(new_state);
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
    static void yy_pop_state  (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
	if ( --yyg->yy_start_stack_ptr < 0 )
Packit 90a5c9
		YY_FATAL_ERROR( "start-condition stack underflow" );
Packit 90a5c9
Packit 90a5c9
	BEGIN(yyg->yy_start_stack[yyg->yy_start_stack_ptr]);
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
#ifndef YY_EXIT_FAILURE
Packit 90a5c9
#define YY_EXIT_FAILURE 2
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    	(void) fprintf( stderr, "%s\n", msg );
Packit 90a5c9
	exit( YY_EXIT_FAILURE );
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/* Redefine yyless() so it works in section 3 code. */
Packit 90a5c9
Packit 90a5c9
#undef yyless
Packit 90a5c9
#define yyless(n) \
Packit 90a5c9
	do \
Packit 90a5c9
		{ \
Packit 90a5c9
		/* Undo effects of setting up yytext. */ \
Packit 90a5c9
        int yyless_macro_arg = (n); \
Packit 90a5c9
        YY_LESS_LINENO(yyless_macro_arg);\
Packit 90a5c9
		yytext[yyleng] = yyg->yy_hold_char; \
Packit 90a5c9
		yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
Packit 90a5c9
		yyg->yy_hold_char = *yyg->yy_c_buf_p; \
Packit 90a5c9
		*yyg->yy_c_buf_p = '\0'; \
Packit 90a5c9
		yyleng = yyless_macro_arg; \
Packit 90a5c9
		} \
Packit 90a5c9
	while ( 0 )
Packit 90a5c9
Packit 90a5c9
/* Accessor  methods (get/set functions) to struct members. */
Packit 90a5c9
Packit 90a5c9
/** Get the user-defined data for this scanner.
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
YY_EXTRA_TYPE ap_expr_yyget_extra  (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
    return yyextra;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Get the current line number.
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
int ap_expr_yyget_lineno  (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
    
Packit 90a5c9
        if (! YY_CURRENT_BUFFER)
Packit 90a5c9
            return 0;
Packit 90a5c9
    
Packit 90a5c9
    return yylineno;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Get the current column number.
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
Packit 90a5c9
/** Get the input stream.
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
FILE *ap_expr_yyget_in  (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
    return yyin;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Get the output stream.
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
FILE *ap_expr_yyget_out  (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
    return yyout;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Get the length of the current token.
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
int ap_expr_yyget_leng  (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
    return yyleng;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Get the current token.
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
Packit 90a5c9
char *ap_expr_yyget_text  (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
    return yytext;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Set the user-defined data. This data is never touched by the scanner.
Packit 90a5c9
 * @param user_defined The data to be associated with this scanner.
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
void ap_expr_yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
    yyextra = user_defined ;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Set the current line number.
Packit 90a5c9
 * @param line_number
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
void ap_expr_yyset_lineno (int  line_number , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
Packit 90a5c9
        /* lineno is only valid if an input buffer exists. */
Packit 90a5c9
        if (! YY_CURRENT_BUFFER )
Packit 90a5c9
           yy_fatal_error( "ap_expr_yyset_lineno called with no buffer" , yyscanner); 
Packit 90a5c9
    
Packit 90a5c9
    yylineno = line_number;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/** Set the current column.
Packit 90a5c9
 * @param line_number
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 */
Packit 90a5c9
Packit 90a5c9
/** Set the input stream. This does not discard the current
Packit 90a5c9
 * input buffer.
Packit 90a5c9
 * @param in_str A readable stream.
Packit 90a5c9
 * @param yyscanner The scanner object.
Packit 90a5c9
 * @see ap_expr_yy_switch_to_buffer
Packit 90a5c9
 */
Packit 90a5c9
void ap_expr_yyset_in (FILE *  in_str , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
    yyin = in_str ;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
void ap_expr_yyset_out (FILE *  out_str , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
    yyout = out_str ;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
int ap_expr_yyget_debug  (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
    return yy_flex_debug;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
void ap_expr_yyset_debug (int  bdebug , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
    yy_flex_debug = bdebug ;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/* Accessor methods for yylval and yylloc */
Packit 90a5c9
Packit 90a5c9
YYSTYPE * ap_expr_yyget_lval  (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
    return yylval;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
void ap_expr_yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
    yylval = yylval_param;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/* User-visible API */
Packit 90a5c9
Packit 90a5c9
/* ap_expr_yylex_init is special because it creates the scanner itself, so it is
Packit 90a5c9
 * the ONLY reentrant function that doesn't take the scanner as the last argument.
Packit 90a5c9
 * That's why we explicitly handle the declaration, instead of using our macros.
Packit 90a5c9
 */
Packit 90a5c9
Packit 90a5c9
int ap_expr_yylex_init(yyscan_t* ptr_yy_globals)
Packit 90a5c9
Packit 90a5c9
{
Packit 90a5c9
    if (ptr_yy_globals == NULL){
Packit 90a5c9
        errno = EINVAL;
Packit 90a5c9
        return 1;
Packit 90a5c9
    }
Packit 90a5c9
Packit 90a5c9
    *ptr_yy_globals = (yyscan_t) ap_expr_yyalloc ( sizeof( struct yyguts_t ), NULL );
Packit 90a5c9
Packit 90a5c9
    if (*ptr_yy_globals == NULL){
Packit 90a5c9
        errno = ENOMEM;
Packit 90a5c9
        return 1;
Packit 90a5c9
    }
Packit 90a5c9
Packit 90a5c9
    /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
Packit 90a5c9
    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
Packit 90a5c9
Packit 90a5c9
    return yy_init_globals ( *ptr_yy_globals );
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/* ap_expr_yylex_init_extra has the same functionality as ap_expr_yylex_init, but follows the
Packit 90a5c9
 * convention of taking the scanner as the last argument. Note however, that
Packit 90a5c9
 * this is a *pointer* to a scanner, as it will be allocated by this call (and
Packit 90a5c9
 * is the reason, too, why this function also must handle its own declaration).
Packit 90a5c9
 * The user defined value in the first argument will be available to ap_expr_yyalloc in
Packit 90a5c9
 * the yyextra field.
Packit 90a5c9
 */
Packit 90a5c9
Packit 90a5c9
int ap_expr_yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
Packit 90a5c9
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t dummy_yyguts;
Packit 90a5c9
Packit 90a5c9
    ap_expr_yyset_extra (yy_user_defined, &dummy_yyguts);
Packit 90a5c9
Packit 90a5c9
    if (ptr_yy_globals == NULL){
Packit 90a5c9
        errno = EINVAL;
Packit 90a5c9
        return 1;
Packit 90a5c9
    }
Packit 90a5c9
	
Packit 90a5c9
    *ptr_yy_globals = (yyscan_t) ap_expr_yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
Packit 90a5c9
	
Packit 90a5c9
    if (*ptr_yy_globals == NULL){
Packit 90a5c9
        errno = ENOMEM;
Packit 90a5c9
        return 1;
Packit 90a5c9
    }
Packit 90a5c9
    
Packit 90a5c9
    /* By setting to 0xAA, we expose bugs in
Packit 90a5c9
    yy_init_globals. Leave at 0x00 for releases. */
Packit 90a5c9
    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
Packit 90a5c9
    
Packit 90a5c9
    ap_expr_yyset_extra (yy_user_defined, *ptr_yy_globals);
Packit 90a5c9
    
Packit 90a5c9
    return yy_init_globals ( *ptr_yy_globals );
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
static int yy_init_globals (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
    /* Initialization is the same as for the non-reentrant scanner.
Packit 90a5c9
     * This function is called from ap_expr_yylex_destroy(), so don't allocate here.
Packit 90a5c9
     */
Packit 90a5c9
Packit 90a5c9
    yyg->yy_buffer_stack = 0;
Packit 90a5c9
    yyg->yy_buffer_stack_top = 0;
Packit 90a5c9
    yyg->yy_buffer_stack_max = 0;
Packit 90a5c9
    yyg->yy_c_buf_p = (char *) 0;
Packit 90a5c9
    yyg->yy_init = 0;
Packit 90a5c9
    yyg->yy_start = 0;
Packit 90a5c9
Packit 90a5c9
    yyg->yy_start_stack_ptr = 0;
Packit 90a5c9
    yyg->yy_start_stack_depth = 0;
Packit 90a5c9
    yyg->yy_start_stack =  NULL;
Packit 90a5c9
Packit 90a5c9
/* Defined in main.c */
Packit 90a5c9
#ifdef YY_STDINIT
Packit 90a5c9
    yyin = stdin;
Packit 90a5c9
    yyout = stdout;
Packit 90a5c9
#else
Packit 90a5c9
    yyin = (FILE *) 0;
Packit 90a5c9
    yyout = (FILE *) 0;
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
    /* For future reference: Set errno on error, since we are called by
Packit 90a5c9
     * ap_expr_yylex_init()
Packit 90a5c9
     */
Packit 90a5c9
    return 0;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/* ap_expr_yylex_destroy is for both reentrant and non-reentrant scanners. */
Packit 90a5c9
int ap_expr_yylex_destroy  (yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
Packit 90a5c9
Packit 90a5c9
    /* Pop the buffer stack, destroying each element. */
Packit 90a5c9
	while(YY_CURRENT_BUFFER){
Packit 90a5c9
		ap_expr_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
Packit 90a5c9
		YY_CURRENT_BUFFER_LVALUE = NULL;
Packit 90a5c9
		ap_expr_yypop_buffer_state(yyscanner);
Packit 90a5c9
	}
Packit 90a5c9
Packit 90a5c9
	/* Destroy the stack itself. */
Packit 90a5c9
	ap_expr_yyfree(yyg->yy_buffer_stack ,yyscanner);
Packit 90a5c9
	yyg->yy_buffer_stack = NULL;
Packit 90a5c9
Packit 90a5c9
    /* Destroy the start condition stack. */
Packit 90a5c9
        ap_expr_yyfree(yyg->yy_start_stack ,yyscanner );
Packit 90a5c9
        yyg->yy_start_stack = NULL;
Packit 90a5c9
Packit 90a5c9
    /* Reset the globals. This is important in a non-reentrant scanner so the next time
Packit 90a5c9
     * ap_expr_yylex() is called, initialization will occur. */
Packit 90a5c9
    yy_init_globals( yyscanner);
Packit 90a5c9
Packit 90a5c9
    /* Destroy the main struct (reentrant only). */
Packit 90a5c9
    ap_expr_yyfree ( yyscanner , yyscanner );
Packit 90a5c9
    yyscanner = NULL;
Packit 90a5c9
    return 0;
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/*
Packit 90a5c9
 * Internal utility routines.
Packit 90a5c9
 */
Packit 90a5c9
Packit 90a5c9
#ifndef yytext_ptr
Packit 90a5c9
static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
	register int i;
Packit 90a5c9
	for ( i = 0; i < n; ++i )
Packit 90a5c9
		s1[i] = s2[i];
Packit 90a5c9
}
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#ifdef YY_NEED_STRLEN
Packit 90a5c9
static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
	register int n;
Packit 90a5c9
	for ( n = 0; s[n]; ++n )
Packit 90a5c9
		;
Packit 90a5c9
Packit 90a5c9
	return n;
Packit 90a5c9
}
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
void *ap_expr_yyalloc (yy_size_t  size , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
	return (void *) malloc( size );
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
void *ap_expr_yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
	/* The cast to (char *) in the following accommodates both
Packit 90a5c9
	 * implementations that use char* generic pointers, and those
Packit 90a5c9
	 * that use void* generic pointers.  It works with the latter
Packit 90a5c9
	 * because both ANSI C and C++ allow castless assignment from
Packit 90a5c9
	 * any pointer type to void*, and deal with argument conversions
Packit 90a5c9
	 * as though doing an assignment.
Packit 90a5c9
	 */
Packit 90a5c9
	return (void *) realloc( (char *) ptr, size );
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
void ap_expr_yyfree (void * ptr , yyscan_t yyscanner)
Packit 90a5c9
{
Packit 90a5c9
	free( (char *) ptr );	/* see ap_expr_yyrealloc() for (char *) cast */
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
#define YYTABLES_NAME "yytables"
Packit 90a5c9
Packit 90a5c9
#line 398 "util_expr_scan.l"
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9