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