2010-02-08 11:57:31 +03:00
# include "config.h"
2006-04-24 13:36:24 +04:00
2010-02-08 11:57:31 +03:00
# line 3 "heimdal / lib / com_err / lex.c"
2007-01-15 05:23:40 +03:00
# define YY_INT_ALIGNED short int
/* A lexical scanner generated by flex */
2006-11-07 09:59:56 +03:00
2006-04-06 15:32:54 +04:00
# define FLEX_SCANNER
# define YY_FLEX_MAJOR_VERSION 2
# define YY_FLEX_MINOR_VERSION 5
2009-11-13 05:50:25 +03:00
# define YY_FLEX_SUBMINOR_VERSION 35
2007-01-15 05:23:40 +03:00
# if YY_FLEX_SUBMINOR_VERSION > 0
# define FLEX_BETA
# endif
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/* First, we deal with platform-specific or compiler-specific issues. */
/* begin standard C headers. */
2006-04-06 15:32:54 +04:00
# include <stdio.h>
2007-01-15 05:23:40 +03:00
# include <string.h>
# include <errno.h>
# include <stdlib.h>
2006-09-04 16:21:42 +04:00
2007-01-15 05:23:40 +03:00
/* end standard C headers. */
2006-09-04 16:21:42 +04:00
2007-01-15 05:23:40 +03:00
/* flex integer type definitions */
# ifndef FLEXINT_H
# define FLEXINT_H
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
2008-08-01 09:08:51 +04:00
# if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
2007-01-15 05:23:40 +03:00
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
* if you want the limit ( max / min ) macros for int types .
*/
# ifndef __STDC_LIMIT_MACROS
# define __STDC_LIMIT_MACROS 1
2006-09-04 16:21:42 +04:00
# endif
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
# include <inttypes.h>
typedef int8_t flex_int8_t ;
typedef uint8_t flex_uint8_t ;
typedef int16_t flex_int16_t ;
typedef uint16_t flex_uint16_t ;
typedef int32_t flex_int32_t ;
typedef uint32_t flex_uint32_t ;
# else
typedef signed char flex_int8_t ;
typedef short int flex_int16_t ;
typedef int flex_int32_t ;
typedef unsigned char flex_uint8_t ;
typedef unsigned short int flex_uint16_t ;
typedef unsigned int flex_uint32_t ;
2006-04-24 13:36:24 +04:00
2007-01-15 05:23:40 +03:00
/* Limits of integral types. */
# ifndef INT8_MIN
# define INT8_MIN (-128)
# endif
# ifndef INT16_MIN
# define INT16_MIN (-32767-1)
# endif
# ifndef INT32_MIN
# define INT32_MIN (-2147483647-1)
# endif
# ifndef INT8_MAX
# define INT8_MAX (127)
# endif
# ifndef INT16_MAX
# define INT16_MAX (32767)
# endif
# ifndef INT32_MAX
# define INT32_MAX (2147483647)
# endif
# ifndef UINT8_MAX
# define UINT8_MAX (255U)
# endif
# ifndef UINT16_MAX
# define UINT16_MAX (65535U)
# endif
# ifndef UINT32_MAX
# define UINT32_MAX (4294967295U)
# endif
2006-04-24 13:36:24 +04:00
2010-02-08 11:57:31 +03:00
# endif /* ! C99 */
2007-01-15 05:23:40 +03:00
# endif /* ! FLEXINT_H */
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
# ifdef __cplusplus
2006-11-07 09:59:56 +03:00
2006-04-06 15:32:54 +04:00
/* The "const" storage-class-modifier is valid. */
# define YY_USE_CONST
# else /* ! __cplusplus */
2008-08-01 09:08:51 +04:00
/* C99 requires __STDC__ to be defined as 1. */
# if defined (__STDC__)
2006-04-06 15:32:54 +04:00
# define YY_USE_CONST
2008-08-01 09:08:51 +04:00
# endif /* defined (__STDC__) */
2006-04-06 15:32:54 +04:00
# endif /* ! __cplusplus */
# ifdef YY_USE_CONST
# define yyconst const
# else
# define yyconst
# endif
/* Returned upon end-of-file. */
# define YY_NULL 0
/* Promotes a possibly negative, possibly signed char to an unsigned
* integer for use as an array index . If the signed char is negative ,
* we want to instead treat it as an 8 - bit unsigned char , hence the
* double cast .
*/
# define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
/* Enter a start condition. This macro really ought to take a parameter,
* but we do it the disgusting crufty way forced on us by the ( ) - less
* definition of BEGIN .
*/
2007-01-15 05:23:40 +03:00
# define BEGIN (yy_start) = 1 + 2 *
2006-04-06 15:32:54 +04:00
/* Translate the current start state into a value that can be later handed
* to BEGIN to return to the state . The YYSTATE alias is for lex
* compatibility .
*/
2007-01-15 05:23:40 +03:00
# define YY_START (((yy_start) - 1) / 2)
2006-04-06 15:32:54 +04:00
# define YYSTATE YY_START
/* Action number for EOF rule of a given start state. */
# define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
/* Special action meaning "start processing a new file". */
2007-01-15 05:23:40 +03:00
# define YY_NEW_FILE yyrestart(yyin )
2006-04-06 15:32:54 +04:00
# define YY_END_OF_BUFFER_CHAR 0
/* Size of default input buffer. */
2007-01-15 05:23:40 +03:00
# ifndef YY_BUF_SIZE
2010-02-08 11:57:31 +03:00
# ifdef __ia64__
/* On IA-64, the buffer size is 16k, not 8k.
* Moreover , YY_BUF_SIZE is 2 * YY_READ_BUF_SIZE in the general case .
* Ditto for the __ia64__ case accordingly .
*/
# define YY_BUF_SIZE 32768
# else
2006-04-06 15:32:54 +04:00
# define YY_BUF_SIZE 16384
2010-02-08 11:57:31 +03:00
# endif /* __ia64__ */
2007-01-15 05:23:40 +03:00
# endif
/* The state buf must be large enough to hold one state per character in the main buffer.
*/
# define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
# ifndef YY_TYPEDEF_YY_BUFFER_STATE
# define YY_TYPEDEF_YY_BUFFER_STATE
2006-04-06 15:32:54 +04:00
typedef struct yy_buffer_state * YY_BUFFER_STATE ;
2007-01-15 05:23:40 +03:00
# endif
2006-04-06 15:32:54 +04:00
extern int yyleng ;
2007-01-15 05:23:40 +03:00
2006-04-06 15:32:54 +04:00
extern FILE * yyin , * yyout ;
# define EOB_ACT_CONTINUE_SCAN 0
# define EOB_ACT_END_OF_FILE 1
# define EOB_ACT_LAST_MATCH 2
2007-01-15 05:23:40 +03:00
# define YY_LESS_LINENO(n)
/* Return all but the first "n" matched characters back to the input stream. */
2006-04-06 15:32:54 +04:00
# define yyless(n) \
do \
{ \
/* Undo effects of setting up yytext. */ \
2007-01-15 05:23:40 +03:00
int yyless_macro_arg = ( n ) ; \
YY_LESS_LINENO ( yyless_macro_arg ) ; \
* yy_cp = ( yy_hold_char ) ; \
2006-04-06 15:32:54 +04:00
YY_RESTORE_YY_MORE_OFFSET \
2007-01-15 05:23:40 +03:00
( yy_c_buf_p ) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ ; \
2006-04-06 15:32:54 +04:00
YY_DO_BEFORE_ACTION ; /* set up yytext again */ \
} \
while ( 0 )
2007-01-15 05:23:40 +03:00
# define unput(c) yyunput( c, (yytext_ptr) )
2007-01-10 04:57:32 +03:00
2007-01-15 05:23:40 +03:00
# ifndef YY_TYPEDEF_YY_SIZE_T
# define YY_TYPEDEF_YY_SIZE_T
2008-08-01 09:08:51 +04:00
typedef size_t yy_size_t ;
2007-01-15 05:23:40 +03:00
# endif
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
# ifndef YY_STRUCT_YY_BUFFER_STATE
# define YY_STRUCT_YY_BUFFER_STATE
2006-04-06 15:32:54 +04:00
struct yy_buffer_state
{
FILE * yy_input_file ;
char * yy_ch_buf ; /* input buffer */
char * yy_buf_pos ; /* current position in input buffer */
/* Size of input buffer in bytes, not including room for EOB
* characters .
*/
yy_size_t yy_buf_size ;
/* Number of characters read into yy_ch_buf, not including EOB
* characters .
*/
int yy_n_chars ;
/* Whether we "own" the buffer - i.e., we know we created it,
* and can realloc ( ) it to grow it , and should free ( ) it to
* delete it .
*/
int yy_is_our_buffer ;
/* Whether this is an "interactive" input source; if so, and
* if we ' re using stdio for input , then we want to use getc ( )
* instead of fread ( ) , to make sure we stop fetching input after
* each newline .
*/
int yy_is_interactive ;
/* Whether we're considered to be at the beginning of a line.
* If so , ' ^ ' rules will be active on the next match , otherwise
* not .
*/
int yy_at_bol ;
2007-01-15 05:23:40 +03:00
int yy_bs_lineno ; /**< The line count. */
int yy_bs_column ; /**< The column count. */
2006-04-06 15:32:54 +04:00
/* Whether to try to fill the input buffer when we reach the
* end of it .
*/
int yy_fill_buffer ;
int yy_buffer_status ;
2007-01-15 05:23:40 +03:00
2006-04-06 15:32:54 +04:00
# define YY_BUFFER_NEW 0
# define YY_BUFFER_NORMAL 1
/* When an EOF's been seen but there's still some text to process
* then we mark the buffer as YY_EOF_PENDING , to indicate that we
* shouldn ' t try reading from the input source any more . We might
* still have a bunch of tokens to match , though , because of
* possible backing - up .
*
* When we actually see the EOF , we change the status to " new "
* ( via yyrestart ( ) ) , so that the user can continue scanning by
* just pointing yyin at a new input file .
*/
# define YY_BUFFER_EOF_PENDING 2
2007-01-15 05:23:40 +03:00
2006-04-06 15:32:54 +04:00
} ;
2007-01-15 05:23:40 +03:00
# endif /* !YY_STRUCT_YY_BUFFER_STATE */
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/* Stack of input buffers. */
static size_t yy_buffer_stack_top = 0 ; /**< index of top of stack. */
static size_t yy_buffer_stack_max = 0 ; /**< capacity of stack. */
static YY_BUFFER_STATE * yy_buffer_stack = 0 ; /**< Stack as an array. */
2006-04-06 15:32:54 +04:00
/* We provide macros for accessing buffer states in case in the
* future we want to put the buffer states in a more general
* " scanner state " .
2007-01-15 05:23:40 +03:00
*
* Returns the top of the stack , or NULL .
2006-04-06 15:32:54 +04:00
*/
2007-01-15 05:23:40 +03:00
# define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
? ( yy_buffer_stack ) [ ( yy_buffer_stack_top ) ] \
: NULL )
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/* Same as previous macro, but useful when we know that the buffer stack is not
* NULL or when we need an lvalue . For internal use only .
*/
# define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
2006-04-06 15:32:54 +04:00
/* yy_hold_char holds the character lost when yytext is formed. */
static char yy_hold_char ;
static int yy_n_chars ; /* number of characters read into yy_ch_buf */
int yyleng ;
/* Points to current character in buffer. */
static char * yy_c_buf_p = ( char * ) 0 ;
2007-01-15 05:23:40 +03:00
static int yy_init = 0 ; /* whether we need to initialize */
2006-04-06 15:32:54 +04:00
static int yy_start = 0 ; /* start state number */
/* Flag which is used to allow yywrap()'s to do buffer switches
* instead of setting up a fresh yyin . A bit of a hack . . .
*/
static int yy_did_buffer_switch_on_eof ;
2007-01-15 05:23:40 +03:00
void yyrestart ( FILE * input_file ) ;
void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ) ;
YY_BUFFER_STATE yy_create_buffer ( FILE * file , int size ) ;
void yy_delete_buffer ( YY_BUFFER_STATE b ) ;
void yy_flush_buffer ( YY_BUFFER_STATE b ) ;
void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ) ;
void yypop_buffer_state ( void ) ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
static void yyensure_buffer_stack ( void ) ;
static void yy_load_buffer_state ( void ) ;
static void yy_init_buffer ( YY_BUFFER_STATE b , FILE * file ) ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
# define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
YY_BUFFER_STATE yy_scan_buffer ( char * base , yy_size_t size ) ;
YY_BUFFER_STATE yy_scan_string ( yyconst char * yy_str ) ;
YY_BUFFER_STATE yy_scan_bytes ( yyconst char * bytes , int len ) ;
void * yyalloc ( yy_size_t ) ;
void * yyrealloc ( void * , yy_size_t ) ;
void yyfree ( void * ) ;
2006-04-06 15:32:54 +04:00
# define yy_new_buffer yy_create_buffer
# define yy_set_interactive(is_interactive) \
{ \
2007-01-15 05:23:40 +03:00
if ( ! YY_CURRENT_BUFFER ) { \
yyensure_buffer_stack ( ) ; \
YY_CURRENT_BUFFER_LVALUE = \
yy_create_buffer ( yyin , YY_BUF_SIZE ) ; \
} \
YY_CURRENT_BUFFER_LVALUE - > yy_is_interactive = is_interactive ; \
2006-04-06 15:32:54 +04:00
}
# define yy_set_bol(at_bol) \
{ \
2007-01-15 05:23:40 +03:00
if ( ! YY_CURRENT_BUFFER ) { \
yyensure_buffer_stack ( ) ; \
YY_CURRENT_BUFFER_LVALUE = \
yy_create_buffer ( yyin , YY_BUF_SIZE ) ; \
} \
YY_CURRENT_BUFFER_LVALUE - > yy_at_bol = at_bol ; \
2006-04-06 15:32:54 +04:00
}
2007-01-15 05:23:40 +03:00
# define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
/* Begin user sect3 */
2006-04-06 15:32:54 +04:00
typedef unsigned char YY_CHAR ;
2007-01-15 05:23:40 +03:00
2006-04-06 15:32:54 +04:00
FILE * yyin = ( FILE * ) 0 , * yyout = ( FILE * ) 0 ;
2007-01-15 05:23:40 +03:00
2006-04-06 15:32:54 +04:00
typedef int yy_state_type ;
2007-01-15 05:23:40 +03:00
extern int yylineno ;
2008-01-12 03:18:53 +03:00
int yylineno = 1 ;
2006-04-06 15:32:54 +04:00
extern char * yytext ;
# define yytext_ptr yytext
2007-01-15 05:23:40 +03:00
static yy_state_type yy_get_previous_state ( void ) ;
static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ) ;
static int yy_get_next_buffer ( void ) ;
static void yy_fatal_error ( yyconst char msg [ ] ) ;
2006-04-06 15:32:54 +04:00
/* Done after the current pattern has been matched and before the
* corresponding action - sets up yytext .
*/
# define YY_DO_BEFORE_ACTION \
2007-01-15 05:23:40 +03:00
( yytext_ptr ) = yy_bp ; \
yyleng = ( size_t ) ( yy_cp - yy_bp ) ; \
( yy_hold_char ) = * yy_cp ; \
2006-04-06 15:32:54 +04:00
* yy_cp = ' \0 ' ; \
2007-01-15 05:23:40 +03:00
( yy_c_buf_p ) = yy_cp ;
2006-04-06 15:32:54 +04:00
# define YY_NUM_RULES 16
# define YY_END_OF_BUFFER 17
2007-01-15 05:23:40 +03:00
/* This struct is not used in this scanner,
but its presence is necessary . */
struct yy_trans_info
{
flex_int32_t yy_verify ;
flex_int32_t yy_nxt ;
} ;
static yyconst flex_int16_t yy_accept [ 46 ] =
2006-04-06 15:32:54 +04:00
{ 0 ,
0 , 0 , 17 , 15 , 11 , 12 , 13 , 10 , 9 , 14 ,
14 , 14 , 14 , 10 , 9 , 14 , 3 , 14 , 14 , 1 ,
7 , 14 , 14 , 8 , 14 , 14 , 14 , 14 , 14 , 14 ,
14 , 6 , 14 , 14 , 5 , 14 , 14 , 14 , 14 , 14 ,
14 , 4 , 14 , 2 , 0
} ;
2007-01-15 05:23:40 +03:00
static yyconst flex_int32_t yy_ec [ 256 ] =
2006-04-06 15:32:54 +04:00
{ 0 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 3 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 2 , 1 , 4 , 5 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 6 , 6 , 6 ,
6 , 6 , 6 , 6 , 6 , 6 , 6 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 7 , 7 , 7 , 7 , 7 , 7 ,
7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 ,
7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 ,
1 , 1 , 1 , 1 , 8 , 1 , 9 , 10 , 11 , 12 ,
13 , 14 , 7 , 7 , 15 , 7 , 7 , 16 , 7 , 17 ,
18 , 19 , 7 , 20 , 7 , 21 , 7 , 7 , 7 , 22 ,
7 , 7 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1
} ;
2007-01-15 05:23:40 +03:00
static yyconst flex_int32_t yy_meta [ 23 ] =
2006-04-06 15:32:54 +04:00
{ 0 ,
1 , 1 , 2 , 1 , 1 , 3 , 3 , 3 , 3 , 3 ,
3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 ,
3 , 3
} ;
2007-01-15 05:23:40 +03:00
static yyconst flex_int16_t yy_base [ 48 ] =
2006-04-06 15:32:54 +04:00
{ 0 ,
0 , 0 , 56 , 57 , 57 , 57 , 57 , 0 , 49 , 0 ,
12 , 13 , 34 , 0 , 47 , 0 , 0 , 40 , 31 , 0 ,
0 , 38 , 36 , 0 , 30 , 34 , 32 , 25 , 22 , 28 ,
34 , 0 , 19 , 13 , 0 , 22 , 30 , 26 , 26 , 18 ,
12 , 0 , 14 , 0 , 57 , 34 , 23
} ;
2007-01-15 05:23:40 +03:00
static yyconst flex_int16_t yy_def [ 48 ] =
2006-04-06 15:32:54 +04:00
{ 0 ,
45 , 1 , 45 , 45 , 45 , 45 , 45 , 46 , 47 , 47 ,
47 , 47 , 47 , 46 , 47 , 47 , 47 , 47 , 47 , 47 ,
47 , 47 , 47 , 47 , 47 , 47 , 47 , 47 , 47 , 47 ,
47 , 47 , 47 , 47 , 47 , 47 , 47 , 47 , 47 , 47 ,
47 , 47 , 47 , 47 , 0 , 45 , 45
} ;
2007-01-15 05:23:40 +03:00
static yyconst flex_int16_t yy_nxt [ 80 ] =
2006-04-06 15:32:54 +04:00
{ 0 ,
4 , 5 , 6 , 7 , 8 , 9 , 10 , 10 , 10 , 10 ,
10 , 10 , 11 , 10 , 12 , 10 , 10 , 10 , 13 , 10 ,
10 , 10 , 17 , 36 , 21 , 16 , 44 , 43 , 18 , 22 ,
42 , 19 , 20 , 37 , 14 , 41 , 14 , 40 , 39 , 38 ,
35 , 34 , 33 , 32 , 31 , 30 , 29 , 28 , 27 , 26 ,
25 , 24 , 15 , 23 , 15 , 45 , 3 , 45 , 45 , 45 ,
45 , 45 , 45 , 45 , 45 , 45 , 45 , 45 , 45 , 45 ,
45 , 45 , 45 , 45 , 45 , 45 , 45 , 45 , 45
} ;
2007-01-15 05:23:40 +03:00
static yyconst flex_int16_t yy_chk [ 80 ] =
2006-04-06 15:32:54 +04:00
{ 0 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 11 , 34 , 12 , 47 , 43 , 41 , 11 , 12 ,
40 , 11 , 11 , 34 , 46 , 39 , 46 , 38 , 37 , 36 ,
33 , 31 , 30 , 29 , 28 , 27 , 26 , 25 , 23 , 22 ,
19 , 18 , 15 , 13 , 9 , 3 , 45 , 45 , 45 , 45 ,
45 , 45 , 45 , 45 , 45 , 45 , 45 , 45 , 45 , 45 ,
45 , 45 , 45 , 45 , 45 , 45 , 45 , 45 , 45
} ;
static yy_state_type yy_last_accepting_state ;
static char * yy_last_accepting_cpos ;
2007-01-15 05:23:40 +03:00
extern int yy_flex_debug ;
int yy_flex_debug = 0 ;
2006-04-06 15:32:54 +04:00
/* The intent behind this definition is that it'll catch
* any uses of REJECT which flex missed .
*/
# define REJECT reject_used_but_not_detected
# define yymore() yymore_used_but_not_detected
# define YY_MORE_ADJ 0
# define YY_RESTORE_YY_MORE_OFFSET
char * yytext ;
2007-01-10 04:57:32 +03:00
# line 1 "lex.l"
# line 2 "lex.l"
2006-04-06 15:32:54 +04:00
/*
2008-10-27 13:35:07 +03:00
* Copyright ( c ) 1998 - 2000 Kungliga Tekniska Högskolan
* ( Royal Institute of Technology , Stockholm , Sweden ) .
* All rights reserved .
2006-04-06 15:32:54 +04:00
*
2008-10-27 13:35:07 +03:00
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions
* are met :
2006-04-06 15:32:54 +04:00
*
2008-10-27 13:35:07 +03:00
* 1. Redistributions of source code must retain the above copyright
* notice , this list of conditions and the following disclaimer .
2006-04-06 15:32:54 +04:00
*
2008-10-27 13:35:07 +03:00
* 2. Redistributions in binary form must reproduce the above copyright
* notice , this list of conditions and the following disclaimer in the
* documentation and / or other materials provided with the distribution .
2006-04-06 15:32:54 +04:00
*
2008-10-27 13:35:07 +03:00
* 3. Neither the name of the Institute nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission .
2006-04-06 15:32:54 +04:00
*
2008-10-27 13:35:07 +03:00
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ` ` AS IS ' ' AND
* ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED . IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR CONSEQUENTIAL
* DAMAGES ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION )
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT
* LIABILITY , OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE .
2006-04-06 15:32:54 +04:00
*/
/*
* This is to handle the definition of this symbol in some AIX
* headers , which will conflict with the definition that lex will
* generate for it . It ' s only a problem for AIX lex .
*/
# undef ECHO
# include "compile_et.h"
# include "parse.h"
# include "lex.h"
static unsigned lineno = 1 ;
static int getstring ( void ) ;
# define YY_NO_UNPUT
# undef ECHO
2010-02-08 11:57:31 +03:00
# line 539 "heimdal / lib / com_err / lex.c"
2007-01-15 05:23:40 +03:00
# define INITIAL 0
# ifndef YY_NO_UNISTD_H
/* Special case for "unistd.h", since it is non-ANSI. We include it way
* down here because we want the user ' s section 1 to have been scanned first .
* The user has a chance to override it with an option .
*/
# include <unistd.h>
# endif
# ifndef YY_EXTRA_TYPE
# define YY_EXTRA_TYPE void *
# endif
static int yy_init_globals ( void ) ;
2006-04-06 15:32:54 +04:00
2009-11-13 05:50:25 +03:00
/* Accessor methods to globals.
These are made visible to non - reentrant scanners for convenience . */
int yylex_destroy ( void ) ;
int yyget_debug ( void ) ;
void yyset_debug ( int debug_flag ) ;
YY_EXTRA_TYPE yyget_extra ( void ) ;
void yyset_extra ( YY_EXTRA_TYPE user_defined ) ;
FILE * yyget_in ( void ) ;
void yyset_in ( FILE * in_str ) ;
FILE * yyget_out ( void ) ;
void yyset_out ( FILE * out_str ) ;
int yyget_leng ( void ) ;
char * yyget_text ( void ) ;
int yyget_lineno ( void ) ;
void yyset_lineno ( int line_number ) ;
2006-04-06 15:32:54 +04:00
/* Macros after this point can all be overridden by user definitions in
* section 1.
*/
# ifndef YY_SKIP_YYWRAP
# ifdef __cplusplus
2007-01-15 05:23:40 +03:00
extern " C " int yywrap ( void ) ;
2006-04-06 15:32:54 +04:00
# else
2007-01-15 05:23:40 +03:00
extern int yywrap ( void ) ;
2006-04-06 15:32:54 +04:00
# endif
2006-11-07 09:59:56 +03:00
# endif
2007-01-15 05:23:40 +03:00
static void yyunput ( int c , char * buf_ptr ) ;
2006-04-06 15:32:54 +04:00
# ifndef yytext_ptr
2007-01-15 05:23:40 +03:00
static void yy_flex_strncpy ( char * , yyconst char * , int ) ;
2006-04-06 15:32:54 +04:00
# endif
# ifdef YY_NEED_STRLEN
2007-01-15 05:23:40 +03:00
static int yy_flex_strlen ( yyconst char * ) ;
2006-04-06 15:32:54 +04:00
# endif
# ifndef YY_NO_INPUT
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
# ifdef __cplusplus
static int yyinput ( void ) ;
2006-04-24 13:36:24 +04:00
# else
2007-01-15 05:23:40 +03:00
static int input ( void ) ;
2006-04-24 13:36:24 +04:00
# endif
2006-04-06 15:32:54 +04:00
# endif
/* Amount of stuff to slurp up with each read. */
# ifndef YY_READ_BUF_SIZE
2010-02-08 11:57:31 +03:00
# ifdef __ia64__
/* On IA-64, the buffer size is 16k, not 8k */
# define YY_READ_BUF_SIZE 16384
# else
2006-04-06 15:32:54 +04:00
# define YY_READ_BUF_SIZE 8192
2010-02-08 11:57:31 +03:00
# endif /* __ia64__ */
2006-04-06 15:32:54 +04:00
# endif
/* Copy whatever the last rule matched to the standard output. */
# ifndef ECHO
/* This used to be an fputs(), but since the string might contain NUL's,
* we now use fwrite ( ) .
*/
2010-02-08 11:57:31 +03:00
# define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
2006-04-06 15:32:54 +04:00
# endif
/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
* is returned in " result " .
*/
# ifndef YY_INPUT
# define YY_INPUT(buf,result,max_size) \
2007-01-15 05:23:40 +03:00
if ( YY_CURRENT_BUFFER_LVALUE - > yy_is_interactive ) \
2006-04-06 15:32:54 +04:00
{ \
2007-01-15 05:23:40 +03:00
int c = ' * ' ; \
2010-02-08 11:57:31 +03:00
size_t n ; \
2006-04-06 15:32:54 +04:00
for ( n = 0 ; n < max_size & & \
( c = getc ( yyin ) ) ! = EOF & & c ! = ' \n ' ; + + n ) \
buf [ n ] = ( char ) c ; \
if ( c = = ' \n ' ) \
buf [ n + + ] = ( char ) c ; \
if ( c = = EOF & & ferror ( yyin ) ) \
YY_FATAL_ERROR ( " input in flex scanner failed " ) ; \
result = n ; \
} \
2007-01-15 05:23:40 +03:00
else \
{ \
errno = 0 ; \
while ( ( result = fread ( buf , 1 , max_size , yyin ) ) = = 0 & & ferror ( yyin ) ) \
{ \
if ( errno ! = EINTR ) \
{ \
YY_FATAL_ERROR ( " input in flex scanner failed " ) ; \
break ; \
} \
errno = 0 ; \
clearerr ( yyin ) ; \
} \
} \
\
2006-04-06 15:32:54 +04:00
# endif
/* No semi-colon after return; correct usage is to write "yyterminate();" -
* we don ' t want an extra ' ; ' after the " return " because that will cause
* some compilers to complain about unreachable statements .
*/
# ifndef yyterminate
# define yyterminate() return YY_NULL
# endif
/* Number of entries by which start-condition stack grows. */
# ifndef YY_START_STACK_INCR
# define YY_START_STACK_INCR 25
# endif
/* Report a fatal error. */
# ifndef YY_FATAL_ERROR
# define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
# endif
2007-01-15 05:23:40 +03:00
/* end tables serialization structures and prototypes */
2006-04-06 15:32:54 +04:00
/* Default declaration of generated scanner - a define so the user can
* easily add parameters .
*/
# ifndef YY_DECL
2007-01-15 05:23:40 +03:00
# define YY_DECL_IS_OURS 1
extern int yylex ( void ) ;
# define YY_DECL int yylex (void)
# endif /* !YY_DECL */
2006-04-06 15:32:54 +04:00
/* Code executed at the beginning of each rule, after yytext and yyleng
* have been set up .
*/
# ifndef YY_USER_ACTION
# define YY_USER_ACTION
# endif
/* Code executed at the end of each rule. */
# ifndef YY_BREAK
# define YY_BREAK break;
# endif
# define YY_RULE_SETUP \
YY_USER_ACTION
2007-01-15 05:23:40 +03:00
/** The main scanner function which does all the work.
*/
2006-04-06 15:32:54 +04:00
YY_DECL
2007-01-15 05:23:40 +03:00
{
2006-04-06 15:32:54 +04:00
register yy_state_type yy_current_state ;
2007-01-15 05:23:40 +03:00
register char * yy_cp , * yy_bp ;
2006-04-06 15:32:54 +04:00
register int yy_act ;
2007-01-15 05:23:40 +03:00
2009-07-06 15:26:09 +04:00
# line 57 "lex.l"
2006-11-07 09:59:56 +03:00
2010-02-08 11:57:31 +03:00
# line 728 "heimdal / lib / com_err / lex.c"
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
if ( ! ( yy_init ) )
2006-04-06 15:32:54 +04:00
{
2007-01-15 05:23:40 +03:00
( yy_init ) = 1 ;
2006-04-06 15:32:54 +04:00
# ifdef YY_USER_INIT
YY_USER_INIT ;
# endif
2007-01-15 05:23:40 +03:00
if ( ! ( yy_start ) )
( yy_start ) = 1 ; /* first start state */
2006-04-06 15:32:54 +04:00
if ( ! yyin )
yyin = stdin ;
if ( ! yyout )
yyout = stdout ;
2007-01-15 05:23:40 +03:00
if ( ! YY_CURRENT_BUFFER ) {
yyensure_buffer_stack ( ) ;
YY_CURRENT_BUFFER_LVALUE =
yy_create_buffer ( yyin , YY_BUF_SIZE ) ;
}
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
yy_load_buffer_state ( ) ;
2006-04-06 15:32:54 +04:00
}
while ( 1 ) /* loops until end-of-file is reached */
{
2007-01-15 05:23:40 +03:00
yy_cp = ( yy_c_buf_p ) ;
2006-04-06 15:32:54 +04:00
/* Support of yytext. */
2007-01-15 05:23:40 +03:00
* yy_cp = ( yy_hold_char ) ;
2006-04-06 15:32:54 +04:00
/* yy_bp points to the position in yy_ch_buf of the start of
* the current run .
*/
yy_bp = yy_cp ;
2007-01-15 05:23:40 +03:00
yy_current_state = ( yy_start ) ;
2006-04-06 15:32:54 +04:00
yy_match :
do
{
register YY_CHAR yy_c = yy_ec [ YY_SC_TO_UI ( * yy_cp ) ] ;
if ( yy_accept [ yy_current_state ] )
{
2007-01-15 05:23:40 +03:00
( yy_last_accepting_state ) = yy_current_state ;
( yy_last_accepting_cpos ) = yy_cp ;
2006-04-06 15:32:54 +04:00
}
while ( yy_chk [ yy_base [ yy_current_state ] + yy_c ] ! = yy_current_state )
{
yy_current_state = ( int ) yy_def [ yy_current_state ] ;
if ( yy_current_state > = 46 )
yy_c = yy_meta [ ( unsigned int ) yy_c ] ;
}
yy_current_state = yy_nxt [ yy_base [ yy_current_state ] + ( unsigned int ) yy_c ] ;
+ + yy_cp ;
}
while ( yy_base [ yy_current_state ] ! = 57 ) ;
yy_find_action :
yy_act = yy_accept [ yy_current_state ] ;
if ( yy_act = = 0 )
{ /* have to back up */
2007-01-15 05:23:40 +03:00
yy_cp = ( yy_last_accepting_cpos ) ;
yy_current_state = ( yy_last_accepting_state ) ;
2006-04-06 15:32:54 +04:00
yy_act = yy_accept [ yy_current_state ] ;
}
YY_DO_BEFORE_ACTION ;
do_action : /* This label is used only to access EOF actions. */
switch ( yy_act )
{ /* beginning of action switch */
case 0 : /* must back up */
/* undo the effects of YY_DO_BEFORE_ACTION */
2007-01-15 05:23:40 +03:00
* yy_cp = ( yy_hold_char ) ;
yy_cp = ( yy_last_accepting_cpos ) ;
yy_current_state = ( yy_last_accepting_state ) ;
2006-04-06 15:32:54 +04:00
goto yy_find_action ;
case 1 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 58 "lex.l"
2006-04-06 15:32:54 +04:00
{ return ET ; }
YY_BREAK
case 2 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 59 "lex.l"
2006-04-06 15:32:54 +04:00
{ return ET ; }
YY_BREAK
case 3 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 60 "lex.l"
2006-04-06 15:32:54 +04:00
{ return EC ; }
YY_BREAK
case 4 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 61 "lex.l"
2006-04-06 15:32:54 +04:00
{ return EC ; }
YY_BREAK
case 5 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 62 "lex.l"
2006-04-06 15:32:54 +04:00
{ return PREFIX ; }
YY_BREAK
case 6 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 63 "lex.l"
2006-04-06 15:32:54 +04:00
{ return INDEX ; }
YY_BREAK
case 7 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 64 "lex.l"
2006-04-06 15:32:54 +04:00
{ return ID ; }
YY_BREAK
case 8 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 65 "lex.l"
2006-04-06 15:32:54 +04:00
{ return END ; }
YY_BREAK
case 9 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 66 "lex.l"
2006-04-06 15:32:54 +04:00
{ yylval . number = atoi ( yytext ) ; return NUMBER ; }
YY_BREAK
case 10 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 67 "lex.l"
2006-04-06 15:32:54 +04:00
;
YY_BREAK
case 11 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 68 "lex.l"
2006-04-06 15:32:54 +04:00
;
YY_BREAK
case 12 :
2007-01-15 05:23:40 +03:00
/* rule 12 can match eol */
2006-04-06 15:32:54 +04:00
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 69 "lex.l"
2006-04-06 15:32:54 +04:00
{ lineno + + ; }
YY_BREAK
case 13 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 70 "lex.l"
2006-04-06 15:32:54 +04:00
{ return getstring ( ) ; }
YY_BREAK
case 14 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 71 "lex.l"
2006-04-06 15:32:54 +04:00
{ yylval . string = strdup ( yytext ) ; return STRING ; }
YY_BREAK
case 15 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 72 "lex.l"
2006-04-06 15:32:54 +04:00
{ return * yytext ; }
YY_BREAK
case 16 :
YY_RULE_SETUP
2009-07-06 15:26:09 +04:00
# line 73 "lex.l"
2006-04-06 15:32:54 +04:00
ECHO ;
YY_BREAK
2010-02-08 11:57:31 +03:00
# line 892 "heimdal / lib / com_err / lex.c"
2006-04-06 15:32:54 +04:00
case YY_STATE_EOF ( INITIAL ) :
yyterminate ( ) ;
case YY_END_OF_BUFFER :
{
/* Amount of text matched not including the EOB char. */
2007-01-15 05:23:40 +03:00
int yy_amount_of_matched_text = ( int ) ( yy_cp - ( yytext_ptr ) ) - 1 ;
2006-04-06 15:32:54 +04:00
/* Undo the effects of YY_DO_BEFORE_ACTION. */
2007-01-15 05:23:40 +03:00
* yy_cp = ( yy_hold_char ) ;
2006-04-06 15:32:54 +04:00
YY_RESTORE_YY_MORE_OFFSET
2007-01-15 05:23:40 +03:00
if ( YY_CURRENT_BUFFER_LVALUE - > yy_buffer_status = = YY_BUFFER_NEW )
2006-04-06 15:32:54 +04:00
{
/* We're scanning a new file or input source. It's
* possible that this happened because the user
* just pointed yyin at a new source and called
* yylex ( ) . If so , then we have to assure
2007-01-15 05:23:40 +03:00
* consistency between YY_CURRENT_BUFFER and our
2006-04-06 15:32:54 +04:00
* globals . Here is the right place to do so , because
* this is the first action ( other than possibly a
* back - up ) that will match for the new input source .
*/
2007-01-15 05:23:40 +03:00
( yy_n_chars ) = YY_CURRENT_BUFFER_LVALUE - > yy_n_chars ;
YY_CURRENT_BUFFER_LVALUE - > yy_input_file = yyin ;
YY_CURRENT_BUFFER_LVALUE - > yy_buffer_status = YY_BUFFER_NORMAL ;
2006-04-06 15:32:54 +04:00
}
/* Note that here we test for yy_c_buf_p "<=" to the position
* of the first EOB in the buffer , since yy_c_buf_p will
* already have been incremented past the NUL character
* ( since all states make transitions on EOB to the
* end - of - buffer state ) . Contrast this with the test
* in input ( ) .
*/
2007-01-15 05:23:40 +03:00
if ( ( yy_c_buf_p ) < = & YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf [ ( yy_n_chars ) ] )
2006-04-06 15:32:54 +04:00
{ /* This was really a NUL. */
yy_state_type yy_next_state ;
2007-01-15 05:23:40 +03:00
( yy_c_buf_p ) = ( yytext_ptr ) + yy_amount_of_matched_text ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
yy_current_state = yy_get_previous_state ( ) ;
2006-04-06 15:32:54 +04:00
/* Okay, we're now positioned to make the NUL
* transition . We couldn ' t have
* yy_get_previous_state ( ) go ahead and do it
* for us because it doesn ' t know how to deal
* with the possibility of jamming ( and we don ' t
* want to build jamming into it because then it
* will run more slowly ) .
*/
yy_next_state = yy_try_NUL_trans ( yy_current_state ) ;
2007-01-15 05:23:40 +03:00
yy_bp = ( yytext_ptr ) + YY_MORE_ADJ ;
2006-04-06 15:32:54 +04:00
if ( yy_next_state )
{
/* Consume the NUL. */
2007-01-15 05:23:40 +03:00
yy_cp = + + ( yy_c_buf_p ) ;
2006-04-06 15:32:54 +04:00
yy_current_state = yy_next_state ;
goto yy_match ;
}
else
{
2007-01-15 05:23:40 +03:00
yy_cp = ( yy_c_buf_p ) ;
2006-04-06 15:32:54 +04:00
goto yy_find_action ;
}
}
2007-01-15 05:23:40 +03:00
else switch ( yy_get_next_buffer ( ) )
2006-04-06 15:32:54 +04:00
{
case EOB_ACT_END_OF_FILE :
{
2007-01-15 05:23:40 +03:00
( yy_did_buffer_switch_on_eof ) = 0 ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
if ( yywrap ( ) )
2006-04-06 15:32:54 +04:00
{
/* Note: because we've taken care in
* yy_get_next_buffer ( ) to have set up
* yytext , we can now set up
* yy_c_buf_p so that if some total
* hoser ( like flex itself ) wants to
* call the scanner after we return the
* YY_NULL , it ' ll still work - another
* YY_NULL will get returned .
*/
2007-01-15 05:23:40 +03:00
( yy_c_buf_p ) = ( yytext_ptr ) + YY_MORE_ADJ ;
2006-04-06 15:32:54 +04:00
yy_act = YY_STATE_EOF ( YY_START ) ;
goto do_action ;
}
else
{
2007-01-15 05:23:40 +03:00
if ( ! ( yy_did_buffer_switch_on_eof ) )
2006-04-06 15:32:54 +04:00
YY_NEW_FILE ;
}
break ;
}
case EOB_ACT_CONTINUE_SCAN :
2007-01-15 05:23:40 +03:00
( yy_c_buf_p ) =
( yytext_ptr ) + yy_amount_of_matched_text ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
yy_current_state = yy_get_previous_state ( ) ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
yy_cp = ( yy_c_buf_p ) ;
yy_bp = ( yytext_ptr ) + YY_MORE_ADJ ;
2006-04-06 15:32:54 +04:00
goto yy_match ;
case EOB_ACT_LAST_MATCH :
2007-01-15 05:23:40 +03:00
( yy_c_buf_p ) =
& YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf [ ( yy_n_chars ) ] ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
yy_current_state = yy_get_previous_state ( ) ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
yy_cp = ( yy_c_buf_p ) ;
yy_bp = ( yytext_ptr ) + YY_MORE_ADJ ;
2006-04-06 15:32:54 +04:00
goto yy_find_action ;
}
break ;
}
default :
YY_FATAL_ERROR (
" fatal flex scanner internal error--no action found " ) ;
} /* end of action switch */
} /* end of scanning one token */
2007-01-15 05:23:40 +03:00
} /* end of yylex */
2006-04-06 15:32:54 +04:00
/* yy_get_next_buffer - try to read in a new buffer
*
* Returns a code representing an action :
* EOB_ACT_LAST_MATCH -
* EOB_ACT_CONTINUE_SCAN - continue scanning from current position
* EOB_ACT_END_OF_FILE - end of file
*/
2007-01-15 05:23:40 +03:00
static int yy_get_next_buffer ( void )
{
register char * dest = YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf ;
register char * source = ( yytext_ptr ) ;
2006-04-06 15:32:54 +04:00
register int number_to_move , i ;
int ret_val ;
2007-01-15 05:23:40 +03:00
if ( ( yy_c_buf_p ) > & YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf [ ( yy_n_chars ) + 1 ] )
2006-04-06 15:32:54 +04:00
YY_FATAL_ERROR (
" fatal flex scanner internal error--end of buffer missed " ) ;
2007-01-15 05:23:40 +03:00
if ( YY_CURRENT_BUFFER_LVALUE - > yy_fill_buffer = = 0 )
2006-04-06 15:32:54 +04:00
{ /* Don't try to fill the buffer, so this is an EOF. */
2007-01-15 05:23:40 +03:00
if ( ( yy_c_buf_p ) - ( yytext_ptr ) - YY_MORE_ADJ = = 1 )
2006-04-06 15:32:54 +04:00
{
/* We matched a single character, the EOB, so
* treat this as a final EOF .
*/
return EOB_ACT_END_OF_FILE ;
}
else
{
/* We matched some text prior to the EOB, first
* process it .
*/
return EOB_ACT_LAST_MATCH ;
}
}
/* Try to read more data. */
/* First move last chars to start of buffer. */
2007-01-15 05:23:40 +03:00
number_to_move = ( int ) ( ( yy_c_buf_p ) - ( yytext_ptr ) ) - 1 ;
2006-04-06 15:32:54 +04:00
for ( i = 0 ; i < number_to_move ; + + i )
* ( dest + + ) = * ( source + + ) ;
2007-01-15 05:23:40 +03:00
if ( YY_CURRENT_BUFFER_LVALUE - > yy_buffer_status = = YY_BUFFER_EOF_PENDING )
2006-04-06 15:32:54 +04:00
/* don't do the read, it's not guaranteed to return an EOF,
* just force an EOF
*/
2007-01-15 05:23:40 +03:00
YY_CURRENT_BUFFER_LVALUE - > yy_n_chars = ( yy_n_chars ) = 0 ;
2006-04-06 15:32:54 +04:00
else
{
2007-01-15 05:23:40 +03:00
int num_to_read =
YY_CURRENT_BUFFER_LVALUE - > yy_buf_size - number_to_move - 1 ;
2006-04-06 15:32:54 +04:00
while ( num_to_read < = 0 )
{ /* Not enough room in the buffer - grow it. */
/* just a shorter name for the current buffer */
2007-01-15 05:23:40 +03:00
YY_BUFFER_STATE b = YY_CURRENT_BUFFER ;
2006-04-06 15:32:54 +04:00
int yy_c_buf_p_offset =
2007-01-15 05:23:40 +03:00
( int ) ( ( yy_c_buf_p ) - b - > yy_ch_buf ) ;
2006-04-06 15:32:54 +04:00
if ( b - > yy_is_our_buffer )
{
int new_size = b - > yy_buf_size * 2 ;
if ( new_size < = 0 )
b - > yy_buf_size + = b - > yy_buf_size / 8 ;
else
b - > yy_buf_size * = 2 ;
b - > yy_ch_buf = ( char * )
/* Include room in for 2 EOB chars. */
2007-01-15 05:23:40 +03:00
yyrealloc ( ( void * ) b - > yy_ch_buf , b - > yy_buf_size + 2 ) ;
2006-04-06 15:32:54 +04:00
}
else
/* Can't grow it, we don't own it. */
b - > yy_ch_buf = 0 ;
if ( ! b - > yy_ch_buf )
YY_FATAL_ERROR (
" fatal error - scanner input buffer overflow " ) ;
2007-01-15 05:23:40 +03:00
( yy_c_buf_p ) = & b - > yy_ch_buf [ yy_c_buf_p_offset ] ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
num_to_read = YY_CURRENT_BUFFER_LVALUE - > yy_buf_size -
2006-04-06 15:32:54 +04:00
number_to_move - 1 ;
2007-01-15 05:23:40 +03:00
2006-04-06 15:32:54 +04:00
}
if ( num_to_read > YY_READ_BUF_SIZE )
num_to_read = YY_READ_BUF_SIZE ;
/* Read in more data. */
2007-01-15 05:23:40 +03:00
YY_INPUT ( ( & YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf [ number_to_move ] ) ,
2008-08-01 09:08:51 +04:00
( yy_n_chars ) , ( size_t ) num_to_read ) ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
YY_CURRENT_BUFFER_LVALUE - > yy_n_chars = ( yy_n_chars ) ;
2006-04-06 15:32:54 +04:00
}
2007-01-15 05:23:40 +03:00
if ( ( yy_n_chars ) = = 0 )
2006-04-06 15:32:54 +04:00
{
if ( number_to_move = = YY_MORE_ADJ )
{
ret_val = EOB_ACT_END_OF_FILE ;
2007-01-15 05:23:40 +03:00
yyrestart ( yyin ) ;
2006-04-06 15:32:54 +04:00
}
else
{
ret_val = EOB_ACT_LAST_MATCH ;
2007-01-15 05:23:40 +03:00
YY_CURRENT_BUFFER_LVALUE - > yy_buffer_status =
2006-04-06 15:32:54 +04:00
YY_BUFFER_EOF_PENDING ;
}
}
else
ret_val = EOB_ACT_CONTINUE_SCAN ;
2008-08-01 09:08:51 +04:00
if ( ( yy_size_t ) ( ( yy_n_chars ) + number_to_move ) > YY_CURRENT_BUFFER_LVALUE - > yy_buf_size ) {
/* Extend the array by 50%, plus the number we really need. */
yy_size_t new_size = ( yy_n_chars ) + number_to_move + ( ( yy_n_chars ) > > 1 ) ;
YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf = ( char * ) yyrealloc ( ( void * ) YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf , new_size ) ;
if ( ! YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf )
YY_FATAL_ERROR ( " out of dynamic memory in yy_get_next_buffer() " ) ;
}
2007-01-15 05:23:40 +03:00
( yy_n_chars ) + = number_to_move ;
YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf [ ( yy_n_chars ) ] = YY_END_OF_BUFFER_CHAR ;
YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf [ ( yy_n_chars ) + 1 ] = YY_END_OF_BUFFER_CHAR ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
( yytext_ptr ) = & YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf [ 0 ] ;
2006-04-06 15:32:54 +04:00
return ret_val ;
2007-01-15 05:23:40 +03:00
}
2006-04-06 15:32:54 +04:00
/* yy_get_previous_state - get the state just before the EOB char was reached */
2007-01-15 05:23:40 +03:00
static yy_state_type yy_get_previous_state ( void )
{
2006-04-06 15:32:54 +04:00
register yy_state_type yy_current_state ;
register char * yy_cp ;
2007-01-15 05:23:40 +03:00
yy_current_state = ( yy_start ) ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
for ( yy_cp = ( yytext_ptr ) + YY_MORE_ADJ ; yy_cp < ( yy_c_buf_p ) ; + + yy_cp )
2006-04-06 15:32:54 +04:00
{
register YY_CHAR yy_c = ( * yy_cp ? yy_ec [ YY_SC_TO_UI ( * yy_cp ) ] : 1 ) ;
if ( yy_accept [ yy_current_state ] )
{
2007-01-15 05:23:40 +03:00
( yy_last_accepting_state ) = yy_current_state ;
( yy_last_accepting_cpos ) = yy_cp ;
2006-04-06 15:32:54 +04:00
}
while ( yy_chk [ yy_base [ yy_current_state ] + yy_c ] ! = yy_current_state )
{
yy_current_state = ( int ) yy_def [ yy_current_state ] ;
if ( yy_current_state > = 46 )
yy_c = yy_meta [ ( unsigned int ) yy_c ] ;
}
yy_current_state = yy_nxt [ yy_base [ yy_current_state ] + ( unsigned int ) yy_c ] ;
}
return yy_current_state ;
2007-01-15 05:23:40 +03:00
}
2006-04-06 15:32:54 +04:00
/* yy_try_NUL_trans - try to make a transition on the NUL character
*
* synopsis
* next_state = yy_try_NUL_trans ( current_state ) ;
*/
2007-01-15 05:23:40 +03:00
static yy_state_type yy_try_NUL_trans ( yy_state_type yy_current_state )
{
2006-04-06 15:32:54 +04:00
register int yy_is_jam ;
2007-01-15 05:23:40 +03:00
register char * yy_cp = ( yy_c_buf_p ) ;
2006-04-06 15:32:54 +04:00
register YY_CHAR yy_c = 1 ;
if ( yy_accept [ yy_current_state ] )
{
2007-01-15 05:23:40 +03:00
( yy_last_accepting_state ) = yy_current_state ;
( yy_last_accepting_cpos ) = yy_cp ;
2006-04-06 15:32:54 +04:00
}
while ( yy_chk [ yy_base [ yy_current_state ] + yy_c ] ! = yy_current_state )
{
yy_current_state = ( int ) yy_def [ yy_current_state ] ;
if ( yy_current_state > = 46 )
yy_c = yy_meta [ ( unsigned int ) yy_c ] ;
}
yy_current_state = yy_nxt [ yy_base [ yy_current_state ] + ( unsigned int ) yy_c ] ;
yy_is_jam = ( yy_current_state = = 45 ) ;
return yy_is_jam ? 0 : yy_current_state ;
2007-01-15 05:23:40 +03:00
}
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
static void yyunput ( int c , register char * yy_bp )
{
register char * yy_cp ;
yy_cp = ( yy_c_buf_p ) ;
2006-04-06 15:32:54 +04:00
/* undo effects of setting up yytext */
2007-01-15 05:23:40 +03:00
* yy_cp = ( yy_hold_char ) ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
if ( yy_cp < YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf + 2 )
2006-04-06 15:32:54 +04:00
{ /* need to shift things up to make room */
/* +2 for EOB chars. */
2007-01-15 05:23:40 +03:00
register int number_to_move = ( yy_n_chars ) + 2 ;
register char * dest = & YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf [
YY_CURRENT_BUFFER_LVALUE - > yy_buf_size + 2 ] ;
2006-04-06 15:32:54 +04:00
register char * source =
2007-01-15 05:23:40 +03:00
& YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf [ number_to_move ] ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
while ( source > YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf )
2006-04-06 15:32:54 +04:00
* - - dest = * - - source ;
yy_cp + = ( int ) ( dest - source ) ;
yy_bp + = ( int ) ( dest - source ) ;
2007-01-15 05:23:40 +03:00
YY_CURRENT_BUFFER_LVALUE - > yy_n_chars =
( yy_n_chars ) = YY_CURRENT_BUFFER_LVALUE - > yy_buf_size ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
if ( yy_cp < YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf + 2 )
2006-04-06 15:32:54 +04:00
YY_FATAL_ERROR ( " flex scanner push-back overflow " ) ;
}
* - - yy_cp = ( char ) c ;
2007-01-15 05:23:40 +03:00
( yytext_ptr ) = yy_bp ;
( yy_hold_char ) = * yy_cp ;
( yy_c_buf_p ) = yy_cp ;
}
2006-11-07 09:59:56 +03:00
2007-01-10 04:57:32 +03:00
# ifndef YY_NO_INPUT
2006-04-06 15:32:54 +04:00
# ifdef __cplusplus
2007-01-15 05:23:40 +03:00
static int yyinput ( void )
2006-04-06 15:32:54 +04:00
# else
2007-01-15 05:23:40 +03:00
static int input ( void )
2006-04-06 15:32:54 +04:00
# endif
2006-04-24 13:36:24 +04:00
2007-01-15 05:23:40 +03:00
{
int c ;
* ( yy_c_buf_p ) = ( yy_hold_char ) ;
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
if ( * ( yy_c_buf_p ) = = YY_END_OF_BUFFER_CHAR )
2006-04-06 15:32:54 +04:00
{
/* yy_c_buf_p now points to the character we want to return.
* If this occurs * before * the EOB characters , then it ' s a
* valid NUL ; if not , then we ' ve hit the end of the buffer .
*/
2007-01-15 05:23:40 +03:00
if ( ( yy_c_buf_p ) < & YY_CURRENT_BUFFER_LVALUE - > yy_ch_buf [ ( yy_n_chars ) ] )
2006-04-06 15:32:54 +04:00
/* This was really a NUL. */
2007-01-15 05:23:40 +03:00
* ( yy_c_buf_p ) = ' \0 ' ;
2006-04-06 15:32:54 +04:00
else
{ /* need more input */
2007-01-15 05:23:40 +03:00
int offset = ( yy_c_buf_p ) - ( yytext_ptr ) ;
+ + ( yy_c_buf_p ) ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
switch ( yy_get_next_buffer ( ) )
2006-04-06 15:32:54 +04:00
{
case EOB_ACT_LAST_MATCH :
/* This happens because yy_g_n_b()
* sees that we ' ve accumulated a
* token and flags that we need to
* try matching the token before
* proceeding . But for input ( ) ,
* there ' s no matching to consider .
* So convert the EOB_ACT_LAST_MATCH
* to EOB_ACT_END_OF_FILE .
*/
/* Reset buffer status. */
2007-01-15 05:23:40 +03:00
yyrestart ( yyin ) ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/*FALLTHROUGH*/
2006-04-06 15:32:54 +04:00
case EOB_ACT_END_OF_FILE :
{
2007-01-15 05:23:40 +03:00
if ( yywrap ( ) )
2006-04-06 15:32:54 +04:00
return EOF ;
2007-01-15 05:23:40 +03:00
if ( ! ( yy_did_buffer_switch_on_eof ) )
2006-04-06 15:32:54 +04:00
YY_NEW_FILE ;
# ifdef __cplusplus
return yyinput ( ) ;
# else
return input ( ) ;
# endif
}
case EOB_ACT_CONTINUE_SCAN :
2007-01-15 05:23:40 +03:00
( yy_c_buf_p ) = ( yytext_ptr ) + offset ;
2006-04-06 15:32:54 +04:00
break ;
}
}
}
2007-01-15 05:23:40 +03:00
c = * ( unsigned char * ) ( yy_c_buf_p ) ; /* cast for 8-bit char's */
* ( yy_c_buf_p ) = ' \0 ' ; /* preserve yytext */
( yy_hold_char ) = * + + ( yy_c_buf_p ) ;
2006-04-06 15:32:54 +04:00
return c ;
2007-01-15 05:23:40 +03:00
}
# endif /* ifndef YY_NO_INPUT */
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
/** Immediately switch to a different input stream.
* @ param input_file A readable stream .
*
* @ note This function does not reset the start condition to @ c INITIAL .
*/
void yyrestart ( FILE * input_file )
{
if ( ! YY_CURRENT_BUFFER ) {
yyensure_buffer_stack ( ) ;
YY_CURRENT_BUFFER_LVALUE =
yy_create_buffer ( yyin , YY_BUF_SIZE ) ;
2006-04-06 15:32:54 +04:00
}
2007-01-15 05:23:40 +03:00
yy_init_buffer ( YY_CURRENT_BUFFER , input_file ) ;
yy_load_buffer_state ( ) ;
}
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/** Switch to a different input buffer.
* @ param new_buffer The new input buffer .
*
*/
void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer )
{
/* TODO. We should be able to replace this entire function body
* with
* yypop_buffer_state ( ) ;
* yypush_buffer_state ( new_buffer ) ;
*/
yyensure_buffer_stack ( ) ;
if ( YY_CURRENT_BUFFER = = new_buffer )
2006-04-06 15:32:54 +04:00
return ;
2007-01-15 05:23:40 +03:00
if ( YY_CURRENT_BUFFER )
2006-04-06 15:32:54 +04:00
{
/* Flush out information for old buffer. */
2007-01-15 05:23:40 +03:00
* ( yy_c_buf_p ) = ( yy_hold_char ) ;
YY_CURRENT_BUFFER_LVALUE - > yy_buf_pos = ( yy_c_buf_p ) ;
YY_CURRENT_BUFFER_LVALUE - > yy_n_chars = ( yy_n_chars ) ;
2006-04-06 15:32:54 +04:00
}
2007-01-15 05:23:40 +03:00
YY_CURRENT_BUFFER_LVALUE = new_buffer ;
yy_load_buffer_state ( ) ;
2006-04-06 15:32:54 +04:00
/* We don't actually know whether we did this switch during
* EOF ( yywrap ( ) ) processing , but the only time this flag
* is looked at is after yywrap ( ) is called , so it ' s safe
* to go ahead and always set it .
*/
2007-01-15 05:23:40 +03:00
( yy_did_buffer_switch_on_eof ) = 1 ;
}
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
static void yy_load_buffer_state ( void )
{
( yy_n_chars ) = YY_CURRENT_BUFFER_LVALUE - > yy_n_chars ;
( yytext_ptr ) = ( yy_c_buf_p ) = YY_CURRENT_BUFFER_LVALUE - > yy_buf_pos ;
yyin = YY_CURRENT_BUFFER_LVALUE - > yy_input_file ;
( yy_hold_char ) = * ( yy_c_buf_p ) ;
}
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
/** Allocate and initialize an input buffer state.
* @ param file A readable stream .
* @ param size The character buffer size in bytes . When in doubt , use @ c YY_BUF_SIZE .
*
* @ return the allocated buffer state .
*/
YY_BUFFER_STATE yy_create_buffer ( FILE * file , int size )
{
2006-04-06 15:32:54 +04:00
YY_BUFFER_STATE b ;
2007-01-15 05:23:40 +03:00
b = ( YY_BUFFER_STATE ) yyalloc ( sizeof ( struct yy_buffer_state ) ) ;
2006-04-06 15:32:54 +04:00
if ( ! b )
YY_FATAL_ERROR ( " out of dynamic memory in yy_create_buffer() " ) ;
b - > yy_buf_size = size ;
/* yy_ch_buf has to be 2 characters longer than the size given because
* we need to put in 2 end - of - buffer characters .
*/
2007-01-15 05:23:40 +03:00
b - > yy_ch_buf = ( char * ) yyalloc ( b - > yy_buf_size + 2 ) ;
2006-04-06 15:32:54 +04:00
if ( ! b - > yy_ch_buf )
YY_FATAL_ERROR ( " out of dynamic memory in yy_create_buffer() " ) ;
b - > yy_is_our_buffer = 1 ;
2007-01-15 05:23:40 +03:00
yy_init_buffer ( b , file ) ;
2006-04-06 15:32:54 +04:00
return b ;
2007-01-15 05:23:40 +03:00
}
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
/** Destroy the buffer.
* @ param b a buffer created with yy_create_buffer ( )
*
*/
void yy_delete_buffer ( YY_BUFFER_STATE b )
{
2006-04-06 15:32:54 +04:00
if ( ! b )
return ;
2007-01-15 05:23:40 +03:00
if ( b = = YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
YY_CURRENT_BUFFER_LVALUE = ( YY_BUFFER_STATE ) 0 ;
2006-04-06 15:32:54 +04:00
if ( b - > yy_is_our_buffer )
2007-01-15 05:23:40 +03:00
yyfree ( ( void * ) b - > yy_ch_buf ) ;
2006-04-24 13:36:24 +04:00
2007-01-15 05:23:40 +03:00
yyfree ( ( void * ) b ) ;
}
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
# ifndef __cplusplus
extern int isatty ( int ) ;
# endif /* __cplusplus */
/* Initializes or reinitializes a buffer.
* This function is sometimes called more than once on the same buffer ,
* such as during a yyrestart ( ) or at EOF .
*/
static void yy_init_buffer ( YY_BUFFER_STATE b , FILE * file )
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
{
int oerrno = errno ;
yy_flush_buffer ( b ) ;
2006-04-06 15:32:54 +04:00
b - > yy_input_file = file ;
b - > yy_fill_buffer = 1 ;
2007-01-15 05:23:40 +03:00
/* If b is the current buffer, then yy_init_buffer was _probably_
* called from yyrestart ( ) or through yy_get_next_buffer .
* In that case , we don ' t want to reset the lineno or column .
*/
if ( b ! = YY_CURRENT_BUFFER ) {
b - > yy_bs_lineno = 1 ;
b - > yy_bs_column = 0 ;
}
2006-04-24 13:36:24 +04:00
2007-01-15 05:23:40 +03:00
b - > yy_is_interactive = file ? ( isatty ( fileno ( file ) ) > 0 ) : 0 ;
errno = oerrno ;
}
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
* @ param b the buffer state to be flushed , usually @ c YY_CURRENT_BUFFER .
*
*/
void yy_flush_buffer ( YY_BUFFER_STATE b )
{
if ( ! b )
2006-04-06 15:32:54 +04:00
return ;
b - > yy_n_chars = 0 ;
/* We always need two end-of-buffer characters. The first causes
* a transition to the end - of - buffer state . The second causes
* a jam in that state .
*/
b - > yy_ch_buf [ 0 ] = YY_END_OF_BUFFER_CHAR ;
b - > yy_ch_buf [ 1 ] = YY_END_OF_BUFFER_CHAR ;
b - > yy_buf_pos = & b - > yy_ch_buf [ 0 ] ;
b - > yy_at_bol = 1 ;
b - > yy_buffer_status = YY_BUFFER_NEW ;
2007-01-15 05:23:40 +03:00
if ( b = = YY_CURRENT_BUFFER )
yy_load_buffer_state ( ) ;
}
/** Pushes the new state onto the stack. The new state becomes
* the current state . This function will allocate the stack
* if necessary .
* @ param new_buffer The new state .
*
*/
void yypush_buffer_state ( YY_BUFFER_STATE new_buffer )
{
if ( new_buffer = = NULL )
return ;
yyensure_buffer_stack ( ) ;
/* This block is copied from yy_switch_to_buffer. */
if ( YY_CURRENT_BUFFER )
{
/* Flush out information for old buffer. */
* ( yy_c_buf_p ) = ( yy_hold_char ) ;
YY_CURRENT_BUFFER_LVALUE - > yy_buf_pos = ( yy_c_buf_p ) ;
YY_CURRENT_BUFFER_LVALUE - > yy_n_chars = ( yy_n_chars ) ;
}
/* Only push if top exists. Otherwise, replace top. */
if ( YY_CURRENT_BUFFER )
( yy_buffer_stack_top ) + + ;
YY_CURRENT_BUFFER_LVALUE = new_buffer ;
/* copied from yy_switch_to_buffer. */
yy_load_buffer_state ( ) ;
( yy_did_buffer_switch_on_eof ) = 1 ;
}
/** Removes and deletes the top of the stack, if present.
* The next element becomes the new top .
*
*/
void yypop_buffer_state ( void )
{
if ( ! YY_CURRENT_BUFFER )
return ;
yy_delete_buffer ( YY_CURRENT_BUFFER ) ;
YY_CURRENT_BUFFER_LVALUE = NULL ;
if ( ( yy_buffer_stack_top ) > 0 )
- - ( yy_buffer_stack_top ) ;
if ( YY_CURRENT_BUFFER ) {
yy_load_buffer_state ( ) ;
( yy_did_buffer_switch_on_eof ) = 1 ;
}
}
/* Allocates the stack if it does not exist.
* Guarantees space for at least one push .
*/
static void yyensure_buffer_stack ( void )
{
int num_to_alloc ;
if ( ! ( yy_buffer_stack ) ) {
/* First allocation is just for 2 elements, since we don't know if this
* scanner will even need a stack . We use 2 instead of 1 to avoid an
* immediate realloc on the next call .
*/
num_to_alloc = 1 ;
( yy_buffer_stack ) = ( struct yy_buffer_state * * ) yyalloc
( num_to_alloc * sizeof ( struct yy_buffer_state * )
) ;
2008-08-01 09:08:51 +04:00
if ( ! ( yy_buffer_stack ) )
YY_FATAL_ERROR ( " out of dynamic memory in yyensure_buffer_stack() " ) ;
2007-01-15 05:23:40 +03:00
memset ( ( yy_buffer_stack ) , 0 , num_to_alloc * sizeof ( struct yy_buffer_state * ) ) ;
( yy_buffer_stack_max ) = num_to_alloc ;
( yy_buffer_stack_top ) = 0 ;
return ;
2006-04-06 15:32:54 +04:00
}
2007-01-15 05:23:40 +03:00
if ( ( yy_buffer_stack_top ) > = ( ( yy_buffer_stack_max ) ) - 1 ) {
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/* Increase the buffer to prepare for a possible push. */
int grow_size = 8 /* arbitrary grow size */ ;
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
num_to_alloc = ( yy_buffer_stack_max ) + grow_size ;
( yy_buffer_stack ) = ( struct yy_buffer_state * * ) yyrealloc
( ( yy_buffer_stack ) ,
num_to_alloc * sizeof ( struct yy_buffer_state * )
) ;
2008-08-01 09:08:51 +04:00
if ( ! ( yy_buffer_stack ) )
YY_FATAL_ERROR ( " out of dynamic memory in yyensure_buffer_stack() " ) ;
2007-01-15 05:23:40 +03:00
/* zero only the new slots.*/
memset ( ( yy_buffer_stack ) + ( yy_buffer_stack_max ) , 0 , grow_size * sizeof ( struct yy_buffer_state * ) ) ;
( yy_buffer_stack_max ) = num_to_alloc ;
}
}
/** Setup the input buffer state to scan directly from a user-specified character buffer.
* @ param base the character buffer
* @ param size the size in bytes of the character buffer
*
* @ return the newly allocated buffer state object .
*/
YY_BUFFER_STATE yy_scan_buffer ( char * base , yy_size_t size )
{
YY_BUFFER_STATE b ;
2006-04-06 15:32:54 +04:00
if ( size < 2 | |
base [ size - 2 ] ! = YY_END_OF_BUFFER_CHAR | |
base [ size - 1 ] ! = YY_END_OF_BUFFER_CHAR )
/* They forgot to leave room for the EOB's. */
return 0 ;
2007-01-15 05:23:40 +03:00
b = ( YY_BUFFER_STATE ) yyalloc ( sizeof ( struct yy_buffer_state ) ) ;
2006-04-06 15:32:54 +04:00
if ( ! b )
YY_FATAL_ERROR ( " out of dynamic memory in yy_scan_buffer() " ) ;
b - > yy_buf_size = size - 2 ; /* "- 2" to take care of EOB's */
b - > yy_buf_pos = b - > yy_ch_buf = base ;
b - > yy_is_our_buffer = 0 ;
b - > yy_input_file = 0 ;
b - > yy_n_chars = b - > yy_buf_size ;
b - > yy_is_interactive = 0 ;
b - > yy_at_bol = 1 ;
b - > yy_fill_buffer = 0 ;
b - > yy_buffer_status = YY_BUFFER_NEW ;
2007-01-15 05:23:40 +03:00
yy_switch_to_buffer ( b ) ;
2006-04-06 15:32:54 +04:00
return b ;
2007-01-15 05:23:40 +03:00
}
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
/** Setup the input buffer state to scan a string. The next call to yylex() will
* scan from a @ e copy of @ a str .
2008-08-01 09:08:51 +04:00
* @ param yystr a NUL - terminated string to scan
2007-01-15 05:23:40 +03:00
*
* @ return the newly allocated buffer state object .
* @ note If you want to scan bytes that may contain NUL values , then use
* yy_scan_bytes ( ) instead .
*/
YY_BUFFER_STATE yy_scan_string ( yyconst char * yystr )
{
return yy_scan_bytes ( yystr , strlen ( yystr ) ) ;
}
2006-11-07 09:59:56 +03:00
2007-01-15 05:23:40 +03:00
/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
* scan from a @ e copy of @ a bytes .
2010-02-08 11:57:31 +03:00
* @ param yybytes the byte buffer to scan
* @ param _yybytes_len the number of bytes in the buffer pointed to by @ a bytes .
2007-01-15 05:23:40 +03:00
*
* @ return the newly allocated buffer state object .
*/
YY_BUFFER_STATE yy_scan_bytes ( yyconst char * yybytes , int _yybytes_len )
{
2006-04-06 15:32:54 +04:00
YY_BUFFER_STATE b ;
char * buf ;
yy_size_t n ;
int i ;
2007-01-15 05:23:40 +03:00
2006-04-06 15:32:54 +04:00
/* Get memory for full buffer, including space for trailing EOB's. */
2007-01-15 05:23:40 +03:00
n = _yybytes_len + 2 ;
buf = ( char * ) yyalloc ( n ) ;
2006-04-06 15:32:54 +04:00
if ( ! buf )
YY_FATAL_ERROR ( " out of dynamic memory in yy_scan_bytes() " ) ;
2007-01-15 05:23:40 +03:00
for ( i = 0 ; i < _yybytes_len ; + + i )
buf [ i ] = yybytes [ i ] ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
buf [ _yybytes_len ] = buf [ _yybytes_len + 1 ] = YY_END_OF_BUFFER_CHAR ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
b = yy_scan_buffer ( buf , n ) ;
2006-04-06 15:32:54 +04:00
if ( ! b )
YY_FATAL_ERROR ( " bad buffer in yy_scan_bytes() " ) ;
/* It's okay to grow etc. this buffer, and we should throw it
* away when we ' re done .
*/
b - > yy_is_our_buffer = 1 ;
return b ;
2007-01-15 05:23:40 +03:00
}
# ifndef YY_EXIT_FAILURE
# define YY_EXIT_FAILURE 2
2006-04-24 13:36:24 +04:00
# endif
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
static void yy_fatal_error ( yyconst char * msg )
{
( void ) fprintf ( stderr , " %s \n " , msg ) ;
exit ( YY_EXIT_FAILURE ) ;
}
2006-04-24 13:36:24 +04:00
2007-01-15 05:23:40 +03:00
/* Redefine yyless() so it works in section 3 code. */
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
# undef yyless
# define yyless(n) \
do \
{ \
/* Undo effects of setting up yytext. */ \
int yyless_macro_arg = ( n ) ; \
YY_LESS_LINENO ( yyless_macro_arg ) ; \
yytext [ yyleng ] = ( yy_hold_char ) ; \
( yy_c_buf_p ) = yytext + yyless_macro_arg ; \
( yy_hold_char ) = * ( yy_c_buf_p ) ; \
* ( yy_c_buf_p ) = ' \0 ' ; \
yyleng = yyless_macro_arg ; \
} \
while ( 0 )
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/* Accessor methods (get/set functions) to struct members. */
2006-04-06 15:32:54 +04:00
2008-01-12 03:18:53 +03:00
/** Get the current line number.
*
*/
int yyget_lineno ( void )
{
return yylineno ;
}
2007-01-15 05:23:40 +03:00
/** Get the input stream.
*
*/
FILE * yyget_in ( void )
{
return yyin ;
}
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/** Get the output stream.
*
*/
FILE * yyget_out ( void )
{
return yyout ;
}
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/** Get the length of the current token.
*
*/
int yyget_leng ( void )
{
return yyleng ;
}
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/** Get the current token.
*
*/
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
char * yyget_text ( void )
{
return yytext ;
}
2006-04-06 15:32:54 +04:00
2008-01-12 03:18:53 +03:00
/** Set the current line number.
* @ param line_number
*
*/
void yyset_lineno ( int line_number )
{
yylineno = line_number ;
}
2007-01-15 05:23:40 +03:00
/** Set the input stream. This does not discard the current
* input buffer .
* @ param in_str A readable stream .
*
* @ see yy_switch_to_buffer
*/
void yyset_in ( FILE * in_str )
{
yyin = in_str ;
}
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
void yyset_out ( FILE * out_str )
{
yyout = out_str ;
}
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
int yyget_debug ( void )
{
return yy_flex_debug ;
}
void yyset_debug ( int bdebug )
{
yy_flex_debug = bdebug ;
}
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
static int yy_init_globals ( void )
{
/* Initialization is the same as for the non-reentrant scanner.
* This function is called from yylex_destroy ( ) , so don ' t allocate here .
*/
( yy_buffer_stack ) = 0 ;
( yy_buffer_stack_top ) = 0 ;
( yy_buffer_stack_max ) = 0 ;
( yy_c_buf_p ) = ( char * ) 0 ;
( yy_init ) = 0 ;
( yy_start ) = 0 ;
/* Defined in main.c */
# ifdef YY_STDINIT
yyin = stdin ;
yyout = stdout ;
2006-04-24 13:36:24 +04:00
# else
2007-01-15 05:23:40 +03:00
yyin = ( FILE * ) 0 ;
yyout = ( FILE * ) 0 ;
2006-04-24 13:36:24 +04:00
# endif
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/* For future reference: Set errno on error, since we are called by
* yylex_init ( )
*/
return 0 ;
}
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/* yylex_destroy is for both reentrant and non-reentrant scanners. */
int yylex_destroy ( void )
{
/* Pop the buffer stack, destroying each element. */
while ( YY_CURRENT_BUFFER ) {
yy_delete_buffer ( YY_CURRENT_BUFFER ) ;
YY_CURRENT_BUFFER_LVALUE = NULL ;
yypop_buffer_state ( ) ;
}
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/* Destroy the stack itself. */
yyfree ( ( yy_buffer_stack ) ) ;
( yy_buffer_stack ) = NULL ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/* Reset the globals. This is important in a non-reentrant scanner so the next time
* yylex ( ) is called , initialization will occur . */
yy_init_globals ( ) ;
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
return 0 ;
}
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
/*
* Internal utility routines .
*/
2006-04-06 15:32:54 +04:00
# ifndef yytext_ptr
2007-01-15 05:23:40 +03:00
static void yy_flex_strncpy ( char * s1 , yyconst char * s2 , int n )
{
2006-04-06 15:32:54 +04:00
register int i ;
2006-04-24 13:36:24 +04:00
for ( i = 0 ; i < n ; + + i )
2006-04-06 15:32:54 +04:00
s1 [ i ] = s2 [ i ] ;
2007-01-15 05:23:40 +03:00
}
2006-04-06 15:32:54 +04:00
# endif
# ifdef YY_NEED_STRLEN
2007-01-15 05:23:40 +03:00
static int yy_flex_strlen ( yyconst char * s )
{
2006-04-06 15:32:54 +04:00
register int n ;
2006-04-24 13:36:24 +04:00
for ( n = 0 ; s [ n ] ; + + n )
2006-04-06 15:32:54 +04:00
;
return n ;
2007-01-15 05:23:40 +03:00
}
2006-04-06 15:32:54 +04:00
# endif
2007-01-15 05:23:40 +03:00
void * yyalloc ( yy_size_t size )
{
2006-04-06 15:32:54 +04:00
return ( void * ) malloc ( size ) ;
2007-01-15 05:23:40 +03:00
}
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
void * yyrealloc ( void * ptr , yy_size_t size )
{
2006-04-06 15:32:54 +04:00
/* The cast to (char *) in the following accommodates both
* implementations that use char * generic pointers , and those
* that use void * generic pointers . It works with the latter
* because both ANSI C and C + + allow castless assignment from
* any pointer type to void * , and deal with argument conversions
* as though doing an assignment .
*/
return ( void * ) realloc ( ( char * ) ptr , size ) ;
2007-01-15 05:23:40 +03:00
}
2006-04-06 15:32:54 +04:00
2007-01-15 05:23:40 +03:00
void yyfree ( void * ptr )
{
free ( ( char * ) ptr ) ; /* see yyrealloc() for (char *) cast */
}
# define YYTABLES_NAME "yytables"
2006-04-06 15:32:54 +04:00
2009-07-06 15:26:09 +04:00
# line 73 "lex.l"
2006-04-06 15:32:54 +04:00
2006-09-04 16:21:42 +04:00
2007-01-15 05:23:40 +03:00
2006-04-06 15:32:54 +04:00
# ifndef yywrap /* XXX */
int
2008-10-27 13:35:07 +03:00
yywrap ( )
2006-04-06 15:32:54 +04:00
{
return 1 ;
}
# endif
static int
getstring ( void )
{
char x [ 128 ] ;
int i = 0 ;
int c ;
int quote = 0 ;
while ( i < sizeof ( x ) - 1 & & ( c = input ( ) ) ! = EOF ) {
if ( quote ) {
x [ i + + ] = c ;
quote = 0 ;
continue ;
}
if ( c = = ' \n ' ) {
error_message ( " unterminated string " ) ;
lineno + + ;
break ;
}
if ( c = = ' \\ ' ) {
quote + + ;
continue ;
}
if ( c = = ' \" ' )
break ;
x [ i + + ] = c ;
}
x [ i ] = ' \0 ' ;
yylval . string = strdup ( x ) ;
if ( yylval . string = = NULL )
err ( 1 , " malloc " ) ;
return STRING ;
}
void
error_message ( const char * format , . . . )
{
va_list args ;
va_start ( args , format ) ;
fprintf ( stderr , " %s:%d: " , filename , lineno ) ;
vfprintf ( stderr , format , args ) ;
va_end ( args ) ;
numerror + + ;
}
2007-01-15 05:23:40 +03:00