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