105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 3 "calc++-scanner.cc"
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define  YY_INT_ALIGNED short int
505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A lexical scanner generated by flex */
705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-not-reentrant */
1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
1505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define FLEX_SCANNER
1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_FLEX_MAJOR_VERSION 2
1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_FLEX_MINOR_VERSION 5
2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_FLEX_SUBMINOR_VERSION 37
2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if YY_FLEX_SUBMINOR_VERSION > 0
2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define FLEX_BETA
2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* First, we deal with  platform-specific or compiler-specific issues. */
3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* begin standard C headers. */
3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <stdio.h>
4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <string.h>
4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <errno.h>
4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <stdlib.h>
4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-tables-serialization */
4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* end standard C headers. */
4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-or-c++ */
5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* flex integer type definitions */
5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef FLEXINT_H
5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define FLEXINT_H
5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * if you want the limit (max/min) macros for int types.
6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef __STDC_LIMIT_MACROS
6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define __STDC_LIMIT_MACROS 1
6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <inttypes.h>
6805436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int8_t flex_int8_t;
6905436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef uint8_t flex_uint8_t;
7005436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int16_t flex_int16_t;
7105436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef uint16_t flex_uint16_t;
7205436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int32_t flex_int32_t;
7305436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef uint32_t flex_uint32_t;
7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
7505436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef signed char flex_int8_t;
7605436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef short int flex_int16_t;
7705436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int flex_int32_t;
7805436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned char flex_uint8_t;
7905436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned short int flex_uint16_t;
8005436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned int flex_uint32_t;
8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Limits of integral types. */
8305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INT8_MIN
8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT8_MIN               (-128)
8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INT16_MIN
8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT16_MIN              (-32767-1)
8805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INT32_MIN
9005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT32_MIN              (-2147483647-1)
9105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
9205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INT8_MAX
9305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT8_MAX               (127)
9405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
9505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INT16_MAX
9605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT16_MAX              (32767)
9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
9805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef INT32_MAX
9905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INT32_MAX              (2147483647)
10005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
10105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef UINT8_MAX
10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT8_MAX              (255U)
10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef UINT16_MAX
10505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT16_MAX             (65535U)
10605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef UINT32_MAX
10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define UINT32_MAX             (4294967295U)
10905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* ! C99 */
11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* ! FLEXINT_H */
11405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
11805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
11905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef __cplusplus
12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The "const" storage-class-modifier is valid. */
12305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_USE_CONST
12405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else	/* ! __cplusplus */
12605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* C99 requires __STDC__ to be defined as 1. */
12805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined (__STDC__)
12905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_USE_CONST
13105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif	/* defined (__STDC__) */
13305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif	/* ! __cplusplus */
13405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef YY_USE_CONST
13605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyconst const
13705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
13805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyconst
13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
14005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
14205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Returned upon end-of-file. */
14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_NULL 0
14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
14805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Promotes a possibly negative, possibly signed char to an unsigned
15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * integer for use as an array index.  If the signed char is negative,
15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * we want to instead treat it as an 8-bit unsigned char, hence the
15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * double cast.
15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
15705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-reentrant */
15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-not-reentrant */
16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Enter a start condition.  This macro really ought to take a parameter,
16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang * but we do it the disgusting crufty way forced on us by the ()-less
16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang * definition of BEGIN.
16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define BEGIN (yy_start) = 1 + 2 *
16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Translate the current start state into a value that can be later handed
17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * to BEGIN to return to the state.  The YYSTATE alias is for lex
17205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * compatibility.
17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_START (((yy_start) - 1) / 2)
17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYSTATE YY_START
17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Action number for EOF rule of a given start state. */
17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
17905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Special action meaning "start processing a new file". */
18105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_NEW_FILE yyrestart(yyin  )
18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
18305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_END_OF_BUFFER_CHAR 0
18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Size of default input buffer. */
18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_BUF_SIZE
18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_BUF_SIZE 16384
18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
19005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The state buf must be large enough to hold one state per character in the main buffer.
19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_TYPEDEF_YY_BUFFER_STATE
19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_TYPEDEF_YY_BUFFER_STATE
19605436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef struct yy_buffer_state *YY_BUFFER_STATE;
19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_TYPEDEF_YY_SIZE_T
20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_TYPEDEF_YY_SIZE_T
20105436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef size_t yy_size_t;
20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-not-reentrant */
20505436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern yy_size_t yyleng;
20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-not-reentrant */
21005436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern FILE *yyin, *yyout;
21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
21305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define EOB_ACT_CONTINUE_SCAN 0
21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define EOB_ACT_END_OF_FILE 1
21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define EOB_ACT_LAST_MATCH 2
21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    #define YY_LESS_LINENO(n)
21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Return all but the first "n" matched characters back to the input stream. */
22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyless(n) \
22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	do \
22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{ \
22405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Undo effects of setting up yytext. */ \
22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        int yyless_macro_arg = (n); \
22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        YY_LESS_LINENO(yyless_macro_arg);\
22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		*yy_cp = (yy_hold_char); \
22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_RESTORE_YY_MORE_OFFSET \
22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		} \
23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	while ( 0 )
23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define unput(c) yyunput( c, (yytext_ptr)  )
23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_STRUCT_YY_BUFFER_STATE
23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_STRUCT_YY_BUFFER_STATE
23805436638acc7c010349a69c3395f1a57c642dc62Ying Wangstruct yy_buffer_state
23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	{
24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	FILE *yy_input_file;
24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	char *yy_ch_buf;		/* input buffer */
24805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	char *yy_buf_pos;		/* current position in input buffer */
24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Size of input buffer in bytes, not including room for EOB
25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * characters.
25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_size_t yy_buf_size;
25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Number of characters read into yy_ch_buf, not including EOB
25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * characters.
25705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_size_t yy_n_chars;
25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Whether we "own" the buffer - i.e., we know we created it,
26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * and can realloc() it to grow it, and should free() it to
26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * delete it.
26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int yy_is_our_buffer;
26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Whether this is an "interactive" input source; if so, and
26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * if we're using stdio for input, then we want to use getc()
26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * instead of fread(), to make sure we stop fetching input after
26905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * each newline.
27005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int yy_is_interactive;
27205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
27305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Whether we're considered to be at the beginning of a line.
27405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * If so, '^' rules will be active on the next match, otherwise
27505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * not.
27605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int yy_at_bol;
27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    int yy_bs_lineno; /**< The line count. */
28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    int yy_bs_column; /**< The column count. */
28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Whether to try to fill the input buffer when we reach the
28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * end of it.
28405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int yy_fill_buffer;
28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
28705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int yy_buffer_status;
28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_BUFFER_NEW 0
29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_BUFFER_NORMAL 1
29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* When an EOF's been seen but there's still some text to process
29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * shouldn't try reading from the input source any more.  We might
29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * still have a bunch of tokens to match, though, because of
29505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * possible backing-up.
29605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 *
29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * When we actually see the EOF, we change the status to "new"
29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * (via yyrestart()), so that the user can continue scanning by
29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * just pointing yyin at a new input file.
30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_BUFFER_EOF_PENDING 2
30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	};
30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* !YY_STRUCT_YY_BUFFER_STATE */
30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only Standard (non-C++) definition */
30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-not-reentrant */
31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Stack of input buffers. */
31205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
31305436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
31405436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
31805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* We provide macros for accessing buffer states in case in the
32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * future we want to put the buffer states in a more general
32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * "scanner state".
32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * Returns the top of the stack, or NULL.
32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
32605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
32705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                          : NULL)
32905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Same as previous macro, but useful when we know that the buffer stack is not
33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * NULL or when we need an lvalue. For internal use only.
33205436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only Standard (non-C++) definition */
33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-not-reentrant */
33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
34005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* yy_hold_char holds the character lost when yytext is formed. */
34105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic char yy_hold_char;
34205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
34305436638acc7c010349a69c3395f1a57c642dc62Ying Wangyy_size_t yyleng;
34405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
34505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Points to current character in buffer. */
34605436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic char *yy_c_buf_p = (char *) 0;
34705436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_init = 0;		/* whether we need to initialize */
34805436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_start = 0;	/* start state number */
34905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Flag which is used to allow yywrap()'s to do buffer switches
35105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * instead of setting up a fresh yyin.  A bit of a hack ...
35205436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
35305436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_did_buffer_switch_on_eof;
35405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35805436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yyrestart (FILE *input_file  );
35905436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
36005436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
36105436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yy_delete_buffer (YY_BUFFER_STATE b  );
36205436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yy_flush_buffer (YY_BUFFER_STATE b  );
36305436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
36405436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yypop_buffer_state (void );
36505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36605436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void yyensure_buffer_stack (void );
36705436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void yy_load_buffer_state (void );
36805436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
36905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
37005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
37205436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
37305436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
37405436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
37505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
37605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
37705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
37805436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid *yyalloc (yy_size_t  );
37905436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid *yyrealloc (void *,yy_size_t  );
38005436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yyfree (void *  );
38105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yy_new_buffer yy_create_buffer
38305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yy_set_interactive(is_interactive) \
38505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	{ \
38605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! YY_CURRENT_BUFFER ){ \
38705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        yyensure_buffer_stack (); \
38805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE =    \
38905436638acc7c010349a69c3395f1a57c642dc62Ying Wang            yy_create_buffer(yyin,YY_BUF_SIZE ); \
39005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	} \
39105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
39205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
39305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
39405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yy_set_bol(at_bol) \
39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	{ \
39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! YY_CURRENT_BUFFER ){\
39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        yyensure_buffer_stack (); \
39805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE =    \
39905436638acc7c010349a69c3395f1a57c642dc62Ying Wang            yy_create_buffer(yyin,YY_BUF_SIZE ); \
40005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	} \
40105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
40205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
40305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
40505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Begin user sect3 */
40805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yywrap() 1
41005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_SKIP_YYWRAP
41105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
41205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define FLEX_DEBUG
41305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
41405436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned char YY_CHAR;
41505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
41605436638acc7c010349a69c3395f1a57c642dc62Ying WangFILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
41705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
41805436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef int yy_state_type;
41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42005436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern int yylineno;
42105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42205436638acc7c010349a69c3395f1a57c642dc62Ying Wangint yylineno = 1;
42305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42405436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern char *yytext;
42505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yytext_ptr yytext
42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only Standard (non-C++) definition */
42805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
42905436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yy_state_type yy_get_previous_state (void );
43005436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
43105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_get_next_buffer (void );
43205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void yy_fatal_error (yyconst char msg[]  );
43305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
43505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Done after the current pattern has been matched and before the
43705436638acc7c010349a69c3395f1a57c642dc62Ying Wang * corresponding action - sets up yytext.
43805436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
43905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_DO_BEFORE_ACTION \
44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yytext_ptr) = yy_bp; \
44105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yyleng = (size_t) (yy_cp - yy_bp); \
44305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_hold_char) = *yy_cp; \
44405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	*yy_cp = '\0'; \
44505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_c_buf_p) = yy_cp;
44705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
44905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_NUM_RULES 8
45005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_END_OF_BUFFER 9
45105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This struct is not used in this scanner,
45205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   but its presence is necessary. */
45305436638acc7c010349a69c3395f1a57c642dc62Ying Wangstruct yy_trans_info
45405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	{
45505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	flex_int32_t yy_verify;
45605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	flex_int32_t yy_nxt;
45705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	};
45805436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int16_t yy_accept[17] =
45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
46005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        0,    0,    9,    7,    1,    2,    3,    5,    7,    6,
46105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    2,    5,    4,    6,    0
46205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
46305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
46405436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int32_t yy_ec[256] =
46505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
46605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
46705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
46805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    2,    1,    1,    1,    1,    1,    1,    1,    1,
47005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    4,    4,    1,    4,    1,    4,    5,    5,    5,
47105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        5,    5,    5,    5,    5,    5,    5,    6,    1,    1,
47205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        7,    1,    1,    1,    8,    8,    8,    8,    8,    8,
47305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
47405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
47505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    9,    1,    8,    8,    8,    8,
47605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
47705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
47805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
47905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        8,    8,    1,    1,    1,    1,    1,    1,    1,    1,
48005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
48105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
48205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
48305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
48405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
48505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
48605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
48705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
48805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
48905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
49005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
49205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
49305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1
49405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
49505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
49605436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int32_t yy_meta[10] =
49705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
49805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    2,    1,    1,    2,    2
49905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
50005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
50105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int16_t yy_base[18] =
50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        0,    0,   18,   19,   15,   13,   19,   10,    7,    0,
50405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       11,    9,    6,   19,    0,   19,    8
50505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
50705436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int16_t yy_def[18] =
50805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
50905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       16,    1,   16,   16,   16,   16,   16,   16,   16,   17,
51005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       16,   16,   16,   16,   17,    0,   16
51105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
51205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
51305436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int16_t yy_nxt[29] =
51405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
51505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        4,    5,    6,    7,    8,    9,    4,   10,    4,   15,
51605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       13,   12,   11,   14,   13,   12,   11,   16,    3,   16,
51705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       16,   16,   16,   16,   16,   16,   16,   16
51805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
51905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
52005436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int16_t yy_chk[29] =
52105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        1,    1,    1,    1,    1,    1,    1,    1,    1,   17,
52305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       13,   12,   11,    9,    8,    6,    5,    3,   16,   16,
52405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       16,   16,   16,   16,   16,   16,   16,   16
52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
52705436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yy_state_type yy_last_accepting_state;
52805436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic char *yy_last_accepting_cpos;
52905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53005436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern int yy_flex_debug;
53105436638acc7c010349a69c3395f1a57c642dc62Ying Wangint yy_flex_debug = 1;
53205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53305436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic yyconst flex_int16_t yy_rule_linenum[8] =
53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {   0,
53505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       37,   38,   44,   46,   49,   60,   66
53605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    } ;
53705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The intent behind this definition is that it'll catch
53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang * any uses of REJECT which flex missed.
54005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
54105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define REJECT reject_used_but_not_detected
54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yymore() yymore_used_but_not_detected
54305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_MORE_ADJ 0
54405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_RESTORE_YY_MORE_OFFSET
54505436638acc7c010349a69c3395f1a57c642dc62Ying Wangchar *yytext;
54605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 1 "calc++-scanner.ll"
54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 2 "calc++-scanner.ll"
54805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <cstdlib>
54905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <cerrno>
55005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <climits>
55105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <string>
55205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include "calc++-driver.hh"
55305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include "calc++-parser.hh"
55405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
55505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Work around an incompatibility in flex (at least versions
55605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   2.5.31 through 2.5.33): it generates code that does
55705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   not conform to C89.  See Debian bug 333231
55805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>.  */
55905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef yywrap
56005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define yywrap() 1
56105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* By default yylex returns int, we use token_type.
56305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Unfortunately yyterminate by default returns 0, which is
56405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   not of token_type.  */
56505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyterminate() return token::END
56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 30 "calc++-scanner.ll"
56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define YY_USER_ACTION  yylloc->columns (yyleng);
56805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 569 "calc++-scanner.cc"
56905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define INITIAL 0
57105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_NO_UNISTD_H
57305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Special case for "unistd.h", since it is non-ANSI. We include it way
57405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * down here because we want the user's section 1 to have been scanned first.
57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang * The user has a chance to override it with an option.
57605436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
57805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include <unistd.h>
57905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
58005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
58105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
58205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_EXTRA_TYPE
58505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_EXTRA_TYPE void *
58605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
58705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only Reentrant structure and macros (non-C++). */
58905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-reentrant */
59005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
59105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_init_globals (void );
59305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
59505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-reentrant */
59605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
59705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif End reentrant structures and macros. */
59805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Accessor methods to globals.
60005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   These are made visible to non-reentrant scanners for convenience. */
60105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
60205436638acc7c010349a69c3395f1a57c642dc62Ying Wangint yylex_destroy (void );
60305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
60405436638acc7c010349a69c3395f1a57c642dc62Ying Wangint yyget_debug (void );
60505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
60605436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yyset_debug (int debug_flag  );
60705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
60805436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_EXTRA_TYPE yyget_extra (void );
60905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61005436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yyset_extra (YY_EXTRA_TYPE user_defined  );
61105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61205436638acc7c010349a69c3395f1a57c642dc62Ying WangFILE *yyget_in (void );
61305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61405436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yyset_in  (FILE * in_str  );
61505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61605436638acc7c010349a69c3395f1a57c642dc62Ying WangFILE *yyget_out (void );
61705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61805436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yyset_out  (FILE * out_str  );
61905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62005436638acc7c010349a69c3395f1a57c642dc62Ying Wangyy_size_t yyget_leng (void );
62105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62205436638acc7c010349a69c3395f1a57c642dc62Ying Wangchar *yyget_text (void );
62305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62405436638acc7c010349a69c3395f1a57c642dc62Ying Wangint yyget_lineno (void );
62505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62605436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yyset_lineno (int line_number  );
62705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-bison-bridge */
62905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Macros after this point can all be overridden by user definitions in
63205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * section 1.
63305436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
63405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_SKIP_YYWRAP
63605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef __cplusplus
63705436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern "C" int yywrap (void );
63805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
63905436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern int yywrap (void );
64005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
64105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
64205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
64405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
64605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
64805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef yytext_ptr
65005436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void yy_flex_strncpy (char *,yyconst char *,int );
65105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
65205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
65305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef YY_NEED_STRLEN
65405436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_flex_strlen (yyconst char * );
65505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
65605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
65705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_NO_INPUT
65805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only Standard (non-C++) definition */
65905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
66005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef __cplusplus
66205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yyinput (void );
66305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
66405436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int input (void );
66505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
66605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
66705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
66905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
67005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
67205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
67405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Amount of stuff to slurp up with each read. */
67605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_READ_BUF_SIZE
67705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_READ_BUF_SIZE 8192
67805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
67905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
68005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Copy whatever the last rule matched to the standard output. */
68105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef ECHO
68205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only Standard (non-C++) definition */
68305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* This used to be an fputs(), but since the string might contain NUL's,
68405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * we now use fwrite().
68505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
68605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
68705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
68805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only C++ definition */
68905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
69005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
69105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
69205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
69305436638acc7c010349a69c3395f1a57c642dc62Ying Wang * is returned in "result".
69405436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
69505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_INPUT
69605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_INPUT(buf,result,max_size) \
69705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
69805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
69905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{ \
70005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		int c = '*'; \
70105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		size_t n; \
70205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		for ( n = 0; n < max_size && \
70305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
70405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			buf[n] = (char) c; \
70505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( c == '\n' ) \
70605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			buf[n++] = (char) c; \
70705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( c == EOF && ferror( yyin ) ) \
70805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_FATAL_ERROR( "input in flex scanner failed" ); \
70905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		result = n; \
71005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		} \
71105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	else \
71205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{ \
71305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		errno=0; \
71405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
71505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{ \
71605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			if( errno != EINTR) \
71705436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{ \
71805436638acc7c010349a69c3395f1a57c642dc62Ying Wang				YY_FATAL_ERROR( "input in flex scanner failed" ); \
71905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				break; \
72005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				} \
72105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			errno=0; \
72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			clearerr(yyin); \
72305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			} \
72405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}\
72505436638acc7c010349a69c3395f1a57c642dc62Ying Wang\
72605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only C++ definition \ */\
72705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
72805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
72905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
73005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* No semi-colon after return; correct usage is to write "yyterminate();" -
73205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * we don't want an extra ';' after the "return" because that will cause
73305436638acc7c010349a69c3395f1a57c642dc62Ying Wang * some compilers to complain about unreachable statements.
73405436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
73505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef yyterminate
73605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyterminate() return YY_NULL
73705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
73805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Number of entries by which start-condition stack grows. */
74005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_START_STACK_INCR
74105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_START_STACK_INCR 25
74205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
74305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
74405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Report a fatal error. */
74505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_FATAL_ERROR
74605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
74705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
74805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
74905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
75005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
75105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
75205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-tables-serialization structures and prototypes */
75405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
75505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
75705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
75905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
76005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %tables-yydmap generated elements */
76105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
76205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* end tables serialization structures and prototypes */
76305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
76405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
76505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
76605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Default declaration of generated scanner - a define so the user can
76705436638acc7c010349a69c3395f1a57c642dc62Ying Wang * easily add parameters.
76805436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
76905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_DECL
77005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_DECL_IS_OURS 1
77105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only Standard (non-C++) definition */
77205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77305436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern int yylex (void);
77405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_DECL int yylex (void)
77605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
77705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only C++ definition */
77805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
77905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* !YY_DECL */
78005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Code executed at the beginning of each rule, after yytext and yyleng
78205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * have been set up.
78305436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
78405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_USER_ACTION
78505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_USER_ACTION
78605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
78705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Code executed at the end of each rule. */
78905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_BREAK
79005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_BREAK break;
79105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
79205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [6.0] YY_RULE_SETUP definition goes here */
79405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_RULE_SETUP \
79505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_USER_ACTION
79605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
79805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** The main scanner function which does all the work.
80005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
80105436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_DECL
80205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
80305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register yy_state_type yy_current_state;
80405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register char *yy_cp, *yy_bp;
80505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register int yy_act;
80605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
80705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [7.0] user's declarations go here */
80805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 33 "calc++-scanner.ll"
80905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  yylloc->step ();
81205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 814 "calc++-scanner.cc"
81405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( !(yy_init) )
81605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
81705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_init) = 1;
81805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef YY_USER_INIT
82005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_USER_INIT;
82105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
82205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( ! (yy_start) )
82405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			(yy_start) = 1;	/* first start state */
82505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( ! yyin )
82705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
82805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yyin = stdin;
82905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
83005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
83105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
83205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
83305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( ! yyout )
83405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
83505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yyout = stdout;
83605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
83705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
83805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
83905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( ! YY_CURRENT_BUFFER ) {
84105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yyensure_buffer_stack ();
84205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_CURRENT_BUFFER_LVALUE =
84305436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_create_buffer(yyin,YY_BUF_SIZE );
84405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
84505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_load_buffer_state( );
84705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
84805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	while ( 1 )		/* loops until end-of-file is reached */
85005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
85105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [8.0] yymore()-related code goes here */
85205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_cp = (yy_c_buf_p);
85305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
85405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Support of yytext. */
85505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		*yy_cp = (yy_hold_char);
85605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
85705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* yy_bp points to the position in yy_ch_buf of the start of
85805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * the current run.
85905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 */
86005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_bp = yy_cp;
86105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
86205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [9.0] code to set up and find next match goes here */
86305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_current_state = (yy_start);
86405436638acc7c010349a69c3395f1a57c642dc62Ying Wangyy_match:
86505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		do
86605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
86705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
86805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			if ( yy_accept[yy_current_state] )
86905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{
87005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				(yy_last_accepting_state) = yy_current_state;
87105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				(yy_last_accepting_cpos) = yy_cp;
87205436638acc7c010349a69c3395f1a57c642dc62Ying Wang				}
87305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
87405436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{
87505436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_current_state = (int) yy_def[yy_current_state];
87605436638acc7c010349a69c3395f1a57c642dc62Ying Wang				if ( yy_current_state >= 17 )
87705436638acc7c010349a69c3395f1a57c642dc62Ying Wang					yy_c = yy_meta[(unsigned int) yy_c];
87805436638acc7c010349a69c3395f1a57c642dc62Ying Wang				}
87905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
88005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			++yy_cp;
88105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
88205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		while ( yy_current_state != 16 );
88305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_cp = (yy_last_accepting_cpos);
88405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_current_state = (yy_last_accepting_state);
88505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
88605436638acc7c010349a69c3395f1a57c642dc62Ying Wangyy_find_action:
88705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [10.0] code to find the action number goes here */
88805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_act = yy_accept[yy_current_state];
88905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
89005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_DO_BEFORE_ACTION;
89105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
89205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [11.0] code for yylineno update goes here */
89305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
89405436638acc7c010349a69c3395f1a57c642dc62Ying Wangdo_action:	/* This label is used only to access EOF actions. */
89505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
89605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [12.0] debug code goes here */
89705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( yy_flex_debug )
89805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
89905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			if ( yy_act == 0 )
90005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				fprintf( stderr, "--scanner backing up\n" );
90105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			else if ( yy_act < 8 )
90205436638acc7c010349a69c3395f1a57c642dc62Ying Wang				fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
90305436638acc7c010349a69c3395f1a57c642dc62Ying Wang				         (long)yy_rule_linenum[yy_act], yytext );
90405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			else if ( yy_act == 8 )
90505436638acc7c010349a69c3395f1a57c642dc62Ying Wang				fprintf( stderr, "--accepting default rule (\"%s\")\n",
90605436638acc7c010349a69c3395f1a57c642dc62Ying Wang				         yytext );
90705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			else if ( yy_act == 9 )
90805436638acc7c010349a69c3395f1a57c642dc62Ying Wang				fprintf( stderr, "--(end of buffer or a NUL)\n" );
90905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			else
91005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
91105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
91205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
91305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		switch ( yy_act )
91405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	{ /* beginning of action switch */
91505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [13.0] actions go here */
91605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			case 0: /* must back up */
91705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			/* undo the effects of YY_DO_BEFORE_ACTION */
91805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			*yy_cp = (yy_hold_char);
91905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_cp = (yy_last_accepting_cpos);
92005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_current_state = (yy_last_accepting_state);
92105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			goto yy_find_action;
92205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
92305436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 1:
92405436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
92505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 37 "calc++-scanner.ll"
92605436638acc7c010349a69c3395f1a57c642dc62Ying Wangyylloc->step ();
92705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
92805436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 2:
92905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* rule 2 can match eol */
93005436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
93105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 38 "calc++-scanner.ll"
93205436638acc7c010349a69c3395f1a57c642dc62Ying Wangyylloc->lines (yyleng); yylloc->step ();
93305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
93405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
93505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  typedef yy::calcxx_parser::token token;
93605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
93705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Convert ints to the actual type of tokens.  */
93805436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 3:
93905436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
94005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 44 "calc++-scanner.ll"
94105436638acc7c010349a69c3395f1a57c642dc62Ying Wangreturn yy::calcxx_parser::token_type (yytext[0]);
94205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
94305436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 4:
94405436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
94505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 46 "calc++-scanner.ll"
94605436638acc7c010349a69c3395f1a57c642dc62Ying Wangreturn token::ASSIGN;
94705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
94805436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 5:
94905436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
95005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 49 "calc++-scanner.ll"
95105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
95205436638acc7c010349a69c3395f1a57c642dc62Ying Wang           errno = 0;
95305436638acc7c010349a69c3395f1a57c642dc62Ying Wang           long n = strtol (yytext, NULL, 10);
95405436638acc7c010349a69c3395f1a57c642dc62Ying Wang           if (! (INT_MIN <= n && n <= INT_MAX && errno != ERANGE))
95505436638acc7c010349a69c3395f1a57c642dc62Ying Wang             driver.error (*yylloc, "integer is out of range");
95605436638acc7c010349a69c3395f1a57c642dc62Ying Wang           yylval->ival = n;
95705436638acc7c010349a69c3395f1a57c642dc62Ying Wang           return token::NUMBER;
95805436638acc7c010349a69c3395f1a57c642dc62Ying Wang         }
95905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
96005436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 6:
96105436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
96205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 60 "calc++-scanner.ll"
96305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
96405436638acc7c010349a69c3395f1a57c642dc62Ying Wang           yylval->sval = new std::string (yytext);
96505436638acc7c010349a69c3395f1a57c642dc62Ying Wang           return token::IDENTIFIER;
96605436638acc7c010349a69c3395f1a57c642dc62Ying Wang         }
96705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
96805436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 7:
96905436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
97005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 66 "calc++-scanner.ll"
97105436638acc7c010349a69c3395f1a57c642dc62Ying Wangdriver.error (*yylloc, "invalid character");
97205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
97305436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase 8:
97405436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_RULE_SETUP
97505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 67 "calc++-scanner.ll"
97605436638acc7c010349a69c3395f1a57c642dc62Ying WangECHO;
97705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BREAK
97805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 979 "calc++-scanner.cc"
97905436638acc7c010349a69c3395f1a57c642dc62Ying Wangcase YY_STATE_EOF(INITIAL):
98005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yyterminate();
98105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
98205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	case YY_END_OF_BUFFER:
98305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
98405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Amount of text matched not including the EOB char. */
98505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
98605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
98705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Undo the effects of YY_DO_BEFORE_ACTION. */
98805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		*yy_cp = (yy_hold_char);
98905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_RESTORE_YY_MORE_OFFSET
99005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
99105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
99205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
99305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			/* We're scanning a new file or input source.  It's
99405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * possible that this happened because the user
99505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * just pointed yyin at a new source and called
99605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * yylex().  If so, then we have to assure
99705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * consistency between YY_CURRENT_BUFFER and our
99805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * globals.  Here is the right place to do so, because
99905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * this is the first action (other than possibly a
100005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * back-up) that will match for the new input source.
100105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 */
100205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
100305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
100405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
100505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
100605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
100705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Note that here we test for yy_c_buf_p "<=" to the position
100805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * of the first EOB in the buffer, since yy_c_buf_p will
100905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * already have been incremented past the NUL character
101005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * (since all states make transitions on EOB to the
101105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * end-of-buffer state).  Contrast this with the test
101205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * in input().
101305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 */
101405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
101505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{ /* This was really a NUL. */
101605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_state_type yy_next_state;
101705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
101905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
102005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_current_state = yy_get_previous_state(  );
102105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
102205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			/* Okay, we're now positioned to make the NUL
102305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * transition.  We couldn't have
102405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * yy_get_previous_state() go ahead and do it
102505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * for us because it doesn't know how to deal
102605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * with the possibility of jamming (and we don't
102705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * want to build jamming into it because then it
102805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * will run more slowly).
102905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 */
103005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
103105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_next_state = yy_try_NUL_trans( yy_current_state );
103205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
103305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
103405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
103505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			if ( yy_next_state )
103605436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{
103705436638acc7c010349a69c3395f1a57c642dc62Ying Wang				/* Consume the NUL. */
103805436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_cp = ++(yy_c_buf_p);
103905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_current_state = yy_next_state;
104005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				goto yy_match;
104105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				}
104205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
104305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			else
104405436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{
104505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
104605436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_cp = (yy_last_accepting_cpos);
104705436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_current_state = (yy_last_accepting_state);
104805436638acc7c010349a69c3395f1a57c642dc62Ying Wang				goto yy_find_action;
104905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				}
105005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
105105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		else switch ( yy_get_next_buffer(  ) )
105305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
105405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			case EOB_ACT_END_OF_FILE:
105505436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{
105605436638acc7c010349a69c3395f1a57c642dc62Ying Wang				(yy_did_buffer_switch_on_eof) = 0;
105705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105805436638acc7c010349a69c3395f1a57c642dc62Ying Wang				if ( yywrap( ) )
105905436638acc7c010349a69c3395f1a57c642dc62Ying Wang					{
106005436638acc7c010349a69c3395f1a57c642dc62Ying Wang					/* Note: because we've taken care in
106105436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * yy_get_next_buffer() to have set up
106205436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * yytext, we can now set up
106305436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * yy_c_buf_p so that if some total
106405436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * hoser (like flex itself) wants to
106505436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * call the scanner after we return the
106605436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * YY_NULL, it'll still work - another
106705436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * YY_NULL will get returned.
106805436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 */
106905436638acc7c010349a69c3395f1a57c642dc62Ying Wang					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
107005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
107105436638acc7c010349a69c3395f1a57c642dc62Ying Wang					yy_act = YY_STATE_EOF(YY_START);
107205436638acc7c010349a69c3395f1a57c642dc62Ying Wang					goto do_action;
107305436638acc7c010349a69c3395f1a57c642dc62Ying Wang					}
107405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
107505436638acc7c010349a69c3395f1a57c642dc62Ying Wang				else
107605436638acc7c010349a69c3395f1a57c642dc62Ying Wang					{
107705436638acc7c010349a69c3395f1a57c642dc62Ying Wang					if ( ! (yy_did_buffer_switch_on_eof) )
107805436638acc7c010349a69c3395f1a57c642dc62Ying Wang						YY_NEW_FILE;
107905436638acc7c010349a69c3395f1a57c642dc62Ying Wang					}
108005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				break;
108105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				}
108205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
108305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			case EOB_ACT_CONTINUE_SCAN:
108405436638acc7c010349a69c3395f1a57c642dc62Ying Wang				(yy_c_buf_p) =
108505436638acc7c010349a69c3395f1a57c642dc62Ying Wang					(yytext_ptr) + yy_amount_of_matched_text;
108605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
108705436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_current_state = yy_get_previous_state(  );
108805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
108905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_cp = (yy_c_buf_p);
109005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
109105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				goto yy_match;
109205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
109305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			case EOB_ACT_LAST_MATCH:
109405436638acc7c010349a69c3395f1a57c642dc62Ying Wang				(yy_c_buf_p) =
109505436638acc7c010349a69c3395f1a57c642dc62Ying Wang				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
109605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
109705436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_current_state = yy_get_previous_state(  );
109805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
109905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_cp = (yy_c_buf_p);
110005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
110105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				goto yy_find_action;
110205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
110305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		break;
110405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
110505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
110605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	default:
110705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_FATAL_ERROR(
110805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			"fatal flex scanner internal error--no action found" );
110905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	} /* end of action switch */
111005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		} /* end of scanning one token */
111105436638acc7c010349a69c3395f1a57c642dc62Ying Wang} /* end of yylex */
111205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
111305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
111405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
111505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
111605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
111705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
111805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
111905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
112005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
112105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* yy_get_next_buffer - try to read in a new buffer
112205436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
112305436638acc7c010349a69c3395f1a57c642dc62Ying Wang * Returns a code representing an action:
112405436638acc7c010349a69c3395f1a57c642dc62Ying Wang *	EOB_ACT_LAST_MATCH -
112505436638acc7c010349a69c3395f1a57c642dc62Ying Wang *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
112605436638acc7c010349a69c3395f1a57c642dc62Ying Wang *	EOB_ACT_END_OF_FILE - end of file
112705436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
112805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
112905436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_get_next_buffer (void)
113005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
113105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
113205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
113305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
113405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
113505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register char *source = (yytext_ptr);
113605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register int number_to_move, i;
113705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int ret_val;
113805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
113905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
114005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_FATAL_ERROR(
114105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		"fatal flex scanner internal error--end of buffer missed" );
114205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
114305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
114405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{ /* Don't try to fill the buffer, so this is an EOF. */
114505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
114605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
114705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			/* We matched a single character, the EOB, so
114805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * treat this as a final EOF.
114905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 */
115005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			return EOB_ACT_END_OF_FILE;
115105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
115205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
115305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		else
115405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
115505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			/* We matched some text prior to the EOB, first
115605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 * process it.
115705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			 */
115805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			return EOB_ACT_LAST_MATCH;
115905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
116005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
116105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
116205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Try to read more data. */
116305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
116405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* First move last chars to start of buffer. */
116505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
116605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
116705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	for ( i = 0; i < number_to_move; ++i )
116805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		*(dest++) = *(source++);
116905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
117005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
117105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* don't do the read, it's not guaranteed to return an EOF,
117205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * just force an EOF
117305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 */
117405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
117505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
117605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	else
117705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
117805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_size_t num_to_read =
117905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
118005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
118105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		while ( num_to_read <= 0 )
118205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{ /* Not enough room in the buffer - grow it. */
118305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
118405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			/* just a shorter name for the current buffer */
118505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
118605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
118705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			int yy_c_buf_p_offset =
118805436638acc7c010349a69c3395f1a57c642dc62Ying Wang				(int) ((yy_c_buf_p) - b->yy_ch_buf);
118905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
119005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			if ( b->yy_is_our_buffer )
119105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{
119205436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_size_t new_size = b->yy_buf_size * 2;
119305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
119405436638acc7c010349a69c3395f1a57c642dc62Ying Wang				if ( new_size <= 0 )
119505436638acc7c010349a69c3395f1a57c642dc62Ying Wang					b->yy_buf_size += b->yy_buf_size / 8;
119605436638acc7c010349a69c3395f1a57c642dc62Ying Wang				else
119705436638acc7c010349a69c3395f1a57c642dc62Ying Wang					b->yy_buf_size *= 2;
119805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
119905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				b->yy_ch_buf = (char *)
120005436638acc7c010349a69c3395f1a57c642dc62Ying Wang					/* Include room in for 2 EOB chars. */
120105436638acc7c010349a69c3395f1a57c642dc62Ying Wang					yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
120205436638acc7c010349a69c3395f1a57c642dc62Ying Wang				}
120305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			else
120405436638acc7c010349a69c3395f1a57c642dc62Ying Wang				/* Can't grow it, we don't own it. */
120505436638acc7c010349a69c3395f1a57c642dc62Ying Wang				b->yy_ch_buf = 0;
120605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
120705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			if ( ! b->yy_ch_buf )
120805436638acc7c010349a69c3395f1a57c642dc62Ying Wang				YY_FATAL_ERROR(
120905436638acc7c010349a69c3395f1a57c642dc62Ying Wang				"fatal error - scanner input buffer overflow" );
121005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
121105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
121205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
121305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
121405436638acc7c010349a69c3395f1a57c642dc62Ying Wang						number_to_move - 1;
121505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
121605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
121705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
121805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( num_to_read > YY_READ_BUF_SIZE )
121905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			num_to_read = YY_READ_BUF_SIZE;
122005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
122105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Read in more data. */
122205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
122305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			(yy_n_chars), num_to_read );
122405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
122505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
122605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
122705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
122805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( (yy_n_chars) == 0 )
122905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
123005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( number_to_move == YY_MORE_ADJ )
123105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
123205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			ret_val = EOB_ACT_END_OF_FILE;
123305436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yyrestart(yyin  );
123405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
123505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
123605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		else
123705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
123805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			ret_val = EOB_ACT_LAST_MATCH;
123905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
124005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				YY_BUFFER_EOF_PENDING;
124105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
124205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
124305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
124405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	else
124505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		ret_val = EOB_ACT_CONTINUE_SCAN;
124605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
124705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
124805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Extend the array by 50%, plus the number we really need. */
124905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
125005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
125105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
125205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
125305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
125405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
125505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_n_chars) += number_to_move;
125605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
125705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
125805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
125905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
126005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
126105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return ret_val;
126205436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
126305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
126405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* yy_get_previous_state - get the state just before the EOB char was reached */
126505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
126605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
126705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %not-for-header */
126805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
126905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    static yy_state_type yy_get_previous_state (void)
127005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
127105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
127205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
127305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
127405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register yy_state_type yy_current_state;
127505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register char *yy_cp;
127605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
127705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [15.0] code to get the start state into yy_current_state goes here */
127805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_current_state = (yy_start);
127905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
128005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
128105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
128205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [16.0] code to find the next state goes here */
128305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
128405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( yy_accept[yy_current_state] )
128505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
128605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			(yy_last_accepting_state) = yy_current_state;
128705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			(yy_last_accepting_cpos) = yy_cp;
128805436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
128905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
129005436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{
129105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_current_state = (int) yy_def[yy_current_state];
129205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			if ( yy_current_state >= 17 )
129305436638acc7c010349a69c3395f1a57c642dc62Ying Wang				yy_c = yy_meta[(unsigned int) yy_c];
129405436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
129505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
129605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
129705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
129805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return yy_current_state;
129905436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
130005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
130105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* yy_try_NUL_trans - try to make a transition on the NUL character
130205436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
130305436638acc7c010349a69c3395f1a57c642dc62Ying Wang * synopsis
130405436638acc7c010349a69c3395f1a57c642dc62Ying Wang *	next_state = yy_try_NUL_trans( current_state );
130505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
130605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
130705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
130805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
130905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
131005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
131105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
131205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register int yy_is_jam;
131305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
131405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register char *yy_cp = (yy_c_buf_p);
131505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
131605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register YY_CHAR yy_c = 1;
131705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( yy_accept[yy_current_state] )
131805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
131905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_last_accepting_state) = yy_current_state;
132005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_last_accepting_cpos) = yy_cp;
132105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
132205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
132305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
132405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_current_state = (int) yy_def[yy_current_state];
132505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( yy_current_state >= 17 )
132605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_c = yy_meta[(unsigned int) yy_c];
132705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
132805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
132905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_is_jam = (yy_current_state == 16);
133005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
133105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return yy_is_jam ? 0 : yy_current_state;
133205436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
133305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
133405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
133505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
133605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
133705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
133805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
133905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_NO_INPUT
134005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef __cplusplus
134105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    static int yyinput (void)
134205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
134305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    static int input  (void)
134405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
134505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
134605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
134705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
134805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
134905436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
135005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int c;
135105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
135205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	*(yy_c_buf_p) = (yy_hold_char);
135305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
135405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
135505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
135605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* yy_c_buf_p now points to the character we want to return.
135705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * If this occurs *before* the EOB characters, then it's a
135805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * valid NUL; if not, then we've hit the end of the buffer.
135905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 */
136005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
136105436638acc7c010349a69c3395f1a57c642dc62Ying Wang			/* This was really a NUL. */
136205436638acc7c010349a69c3395f1a57c642dc62Ying Wang			*(yy_c_buf_p) = '\0';
136305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
136405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		else
136505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			{ /* need more input */
136605436638acc7c010349a69c3395f1a57c642dc62Ying Wang			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
136705436638acc7c010349a69c3395f1a57c642dc62Ying Wang			++(yy_c_buf_p);
136805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
136905436638acc7c010349a69c3395f1a57c642dc62Ying Wang			switch ( yy_get_next_buffer(  ) )
137005436638acc7c010349a69c3395f1a57c642dc62Ying Wang				{
137105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				case EOB_ACT_LAST_MATCH:
137205436638acc7c010349a69c3395f1a57c642dc62Ying Wang					/* This happens because yy_g_n_b()
137305436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * sees that we've accumulated a
137405436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * token and flags that we need to
137505436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * try matching the token before
137605436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * proceeding.  But for input(),
137705436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * there's no matching to consider.
137805436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * So convert the EOB_ACT_LAST_MATCH
137905436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 * to EOB_ACT_END_OF_FILE.
138005436638acc7c010349a69c3395f1a57c642dc62Ying Wang					 */
138105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
138205436638acc7c010349a69c3395f1a57c642dc62Ying Wang					/* Reset buffer status. */
138305436638acc7c010349a69c3395f1a57c642dc62Ying Wang					yyrestart(yyin );
138405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
138505436638acc7c010349a69c3395f1a57c642dc62Ying Wang					/*FALLTHROUGH*/
138605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
138705436638acc7c010349a69c3395f1a57c642dc62Ying Wang				case EOB_ACT_END_OF_FILE:
138805436638acc7c010349a69c3395f1a57c642dc62Ying Wang					{
138905436638acc7c010349a69c3395f1a57c642dc62Ying Wang					if ( yywrap( ) )
139005436638acc7c010349a69c3395f1a57c642dc62Ying Wang						return EOF;
139105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
139205436638acc7c010349a69c3395f1a57c642dc62Ying Wang					if ( ! (yy_did_buffer_switch_on_eof) )
139305436638acc7c010349a69c3395f1a57c642dc62Ying Wang						YY_NEW_FILE;
139405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef __cplusplus
139505436638acc7c010349a69c3395f1a57c642dc62Ying Wang					return yyinput();
139605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
139705436638acc7c010349a69c3395f1a57c642dc62Ying Wang					return input();
139805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
139905436638acc7c010349a69c3395f1a57c642dc62Ying Wang					}
140005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
140105436638acc7c010349a69c3395f1a57c642dc62Ying Wang				case EOB_ACT_CONTINUE_SCAN:
140205436638acc7c010349a69c3395f1a57c642dc62Ying Wang					(yy_c_buf_p) = (yytext_ptr) + offset;
140305436638acc7c010349a69c3395f1a57c642dc62Ying Wang					break;
140405436638acc7c010349a69c3395f1a57c642dc62Ying Wang				}
140505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			}
140605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
140705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
140805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
140905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	*(yy_c_buf_p) = '\0';	/* preserve yytext */
141005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_hold_char) = *++(yy_c_buf_p);
141105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
141205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %% [19.0] update BOL and yylineno */
141305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
141405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return c;
141505436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
141605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
141705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif	/* ifndef YY_NO_INPUT */
141805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
141905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
142005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Immediately switch to a different input stream.
142105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param input_file A readable stream.
142205436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
142305436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @note This function does not reset the start condition to @c INITIAL .
142405436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
142505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
142605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    void yyrestart  (FILE * input_file )
142705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
142805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
142905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
143005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
143105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
143205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! YY_CURRENT_BUFFER ){
143305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        yyensure_buffer_stack ();
143405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE =
143505436638acc7c010349a69c3395f1a57c642dc62Ying Wang            yy_create_buffer(yyin,YY_BUF_SIZE );
143605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
143705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
143805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_init_buffer(YY_CURRENT_BUFFER,input_file );
143905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_load_buffer_state( );
144005436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
144105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
144205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Switch to a different input buffer.
144305436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param new_buffer The new input buffer.
144405436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
144505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
144605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
144705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
144805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
144905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
145005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
145105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
145205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
145305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* TODO. We should be able to replace this entire function body
145405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * with
145505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 *		yypop_buffer_state();
145605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 *		yypush_buffer_state(new_buffer);
145705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     */
145805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yyensure_buffer_stack ();
145905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( YY_CURRENT_BUFFER == new_buffer )
146005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return;
146105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
146205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( YY_CURRENT_BUFFER )
146305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
146405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Flush out information for old buffer. */
146505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		*(yy_c_buf_p) = (yy_hold_char);
146605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
146705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
146805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
146905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
147005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_CURRENT_BUFFER_LVALUE = new_buffer;
147105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_load_buffer_state( );
147205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
147305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* We don't actually know whether we did this switch during
147405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * EOF (yywrap()) processing, but the only time this flag
147505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * is looked at is after yywrap() is called, so it's safe
147605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * to go ahead and always set it.
147705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
147805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_did_buffer_switch_on_eof) = 1;
147905436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
148005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
148105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
148205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void yy_load_buffer_state  (void)
148305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
148405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
148505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
148605436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
148705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
148805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
148905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
149005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_hold_char) = *(yy_c_buf_p);
149105436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
149205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
149305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Allocate and initialize an input buffer state.
149405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param file A readable stream.
149505436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
149605436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
149705436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @return the allocated buffer state.
149805436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
149905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
150005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
150105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
150205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
150305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
150405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
150505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BUFFER_STATE b;
150605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
150705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
150805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! b )
150905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
151005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
151105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_buf_size = size;
151205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
151305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* yy_ch_buf has to be 2 characters longer than the size given because
151405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * we need to put in 2 end-of-buffer characters.
151505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
151605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
151705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! b->yy_ch_buf )
151805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
151905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
152005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_is_our_buffer = 1;
152105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
152205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_init_buffer(b,file );
152305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
152405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return b;
152505436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
152605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
152705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Destroy the buffer.
152805436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param b a buffer created with yy_create_buffer()
152905436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
153005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
153105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
153205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    void yy_delete_buffer (YY_BUFFER_STATE  b )
153305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
153405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
153505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
153605436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
153705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
153805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! b )
153905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return;
154005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
154105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
154205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
154305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
154405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( b->yy_is_our_buffer )
154505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yyfree((void *) b->yy_ch_buf  );
154605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
154705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yyfree((void *) b  );
154805436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
154905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
155005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Initializes or reinitializes a buffer.
155105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * This function is sometimes called more than once on the same buffer,
155205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * such as during a yyrestart() or at EOF.
155305436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
155405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
155505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
155605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
155705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
155805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
155905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
156005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
156105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int oerrno = errno;
156205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
156305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_flush_buffer(b );
156405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
156505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_input_file = file;
156605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_fill_buffer = 1;
156705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
156805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* If b is the current buffer, then yy_init_buffer was _probably_
156905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     * called from yyrestart() or through yy_get_next_buffer.
157005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     * In that case, we don't want to reset the lineno or column.
157105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     */
157205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    if (b != YY_CURRENT_BUFFER){
157305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        b->yy_bs_lineno = 1;
157405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        b->yy_bs_column = 0;
157505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
157605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
157705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
157805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
157905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
158005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
158105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
158205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
158305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
158405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	errno = oerrno;
158505436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
158605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
158705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
158805436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
158905436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
159005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
159105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
159205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    void yy_flush_buffer (YY_BUFFER_STATE  b )
159305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
159405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
159505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
159605436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
159705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    	if ( ! b )
159805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return;
159905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
160005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_n_chars = 0;
160105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
160205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* We always need two end-of-buffer characters.  The first causes
160305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * a transition to the end-of-buffer state.  The second causes
160405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * a jam in that state.
160505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
160605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
160705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
160805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
160905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_buf_pos = &b->yy_ch_buf[0];
161005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
161105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_at_bol = 1;
161205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_buffer_status = YY_BUFFER_NEW;
161305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
161405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( b == YY_CURRENT_BUFFER )
161505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_load_buffer_state( );
161605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
161705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
161805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-or-c++ */
161905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Pushes the new state onto the stack. The new state becomes
162005436638acc7c010349a69c3395f1a57c642dc62Ying Wang *  the current state. This function will allocate the stack
162105436638acc7c010349a69c3395f1a57c642dc62Ying Wang *  if necessary.
162205436638acc7c010349a69c3395f1a57c642dc62Ying Wang *  @param new_buffer The new state.
162305436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
162405436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
162505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
162605436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yypush_buffer_state (YY_BUFFER_STATE new_buffer )
162705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
162805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
162905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
163005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
163105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    	if (new_buffer == NULL)
163205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return;
163305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
163405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yyensure_buffer_stack();
163505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
163605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* This block is copied from yy_switch_to_buffer. */
163705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( YY_CURRENT_BUFFER )
163805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{
163905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Flush out information for old buffer. */
164005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		*(yy_c_buf_p) = (yy_hold_char);
164105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
164205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
164305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		}
164405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
164505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Only push if top exists. Otherwise, replace top. */
164605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if (YY_CURRENT_BUFFER)
164705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_buffer_stack_top)++;
164805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_CURRENT_BUFFER_LVALUE = new_buffer;
164905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
165005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* copied from yy_switch_to_buffer. */
165105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_load_buffer_state( );
165205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_did_buffer_switch_on_eof) = 1;
165305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
165405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
165505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
165605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-or-c++ */
165705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Removes and deletes the top of the stack, if present.
165805436638acc7c010349a69c3395f1a57c642dc62Ying Wang *  The next element becomes the new top.
165905436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
166005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
166105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
166205436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yypop_buffer_state (void)
166305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
166405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
166505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
166605436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
166705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    	if (!YY_CURRENT_BUFFER)
166805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return;
166905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
167005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_delete_buffer(YY_CURRENT_BUFFER );
167105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_CURRENT_BUFFER_LVALUE = NULL;
167205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ((yy_buffer_stack_top) > 0)
167305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		--(yy_buffer_stack_top);
167405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
167505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if (YY_CURRENT_BUFFER) {
167605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_load_buffer_state( );
167705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_did_buffer_switch_on_eof) = 1;
167805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
167905436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
168005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
168105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
168205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-or-c++ */
168305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Allocates the stack if it does not exist.
168405436638acc7c010349a69c3395f1a57c642dc62Ying Wang *  Guarantees space for at least one push.
168505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
168605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
168705436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void yyensure_buffer_stack (void)
168805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
168905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
169005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
169105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
169205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_size_t num_to_alloc;
169305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
169405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if (!(yy_buffer_stack)) {
169505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
169605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* First allocation is just for 2 elements, since we don't know if this
169705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
169805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		 * immediate realloc on the next call.
169905436638acc7c010349a69c3395f1a57c642dc62Ying Wang         */
170005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		num_to_alloc = 1;
170105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
170205436638acc7c010349a69c3395f1a57c642dc62Ying Wang								(num_to_alloc * sizeof(struct yy_buffer_state*)
170305436638acc7c010349a69c3395f1a57c642dc62Ying Wang								);
170405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( ! (yy_buffer_stack) )
170505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
170605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
170705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
170805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
170905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_buffer_stack_max) = num_to_alloc;
171005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_buffer_stack_top) = 0;
171105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return;
171205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
171305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
171405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
171505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
171605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Increase the buffer to prepare for a possible push. */
171705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		int grow_size = 8 /* arbitrary grow size */;
171805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
171905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		num_to_alloc = (yy_buffer_stack_max) + grow_size;
172005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
172105436638acc7c010349a69c3395f1a57c642dc62Ying Wang								((yy_buffer_stack),
172205436638acc7c010349a69c3395f1a57c642dc62Ying Wang								num_to_alloc * sizeof(struct yy_buffer_state*)
172305436638acc7c010349a69c3395f1a57c642dc62Ying Wang								);
172405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		if ( ! (yy_buffer_stack) )
172505436638acc7c010349a69c3395f1a57c642dc62Ying Wang			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
172605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
172705436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* zero only the new slots.*/
172805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
172905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_buffer_stack_max) = num_to_alloc;
173005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
173105436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
173205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
173305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
173405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
173505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Setup the input buffer state to scan directly from a user-specified character buffer.
173605436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param base the character buffer
173705436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param size the size in bytes of the character buffer
173805436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
173905436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @return the newly allocated buffer state object.
174005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
174105436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
174205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
174305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BUFFER_STATE b;
174405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
174505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( size < 2 ||
174605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
174705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	     base[size-1] != YY_END_OF_BUFFER_CHAR )
174805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* They forgot to leave room for the EOB's. */
174905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		return 0;
175005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
175105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
175205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! b )
175305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
175405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
175505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
175605436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_buf_pos = b->yy_ch_buf = base;
175705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_is_our_buffer = 0;
175805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_input_file = 0;
175905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_n_chars = b->yy_buf_size;
176005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_is_interactive = 0;
176105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_at_bol = 1;
176205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_fill_buffer = 0;
176305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_buffer_status = YY_BUFFER_NEW;
176405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
176505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_switch_to_buffer(b  );
176605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
176705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return b;
176805436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
176905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
177005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
177105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
177205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Setup the input buffer state to scan a string. The next call to yylex() will
177305436638acc7c010349a69c3395f1a57c642dc62Ying Wang * scan from a @e copy of @a str.
177405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param yystr a NUL-terminated string to scan
177505436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
177605436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @return the newly allocated buffer state object.
177705436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @note If you want to scan bytes that may contain NUL values, then use
177805436638acc7c010349a69c3395f1a57c642dc62Ying Wang *       yy_scan_bytes() instead.
177905436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
178005436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
178105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
178205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
178305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return yy_scan_bytes(yystr,strlen(yystr) );
178405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
178505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
178605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
178705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
178805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
178905436638acc7c010349a69c3395f1a57c642dc62Ying Wang * scan from a @e copy of @a bytes.
179005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param yybytes the byte buffer to scan
179105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
179205436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
179305436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @return the newly allocated buffer state object.
179405436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
179505436638acc7c010349a69c3395f1a57c642dc62Ying WangYY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
179605436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
179705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	YY_BUFFER_STATE b;
179805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	char *buf;
179905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yy_size_t n;
180005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	int i;
180105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
180205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Get memory for full buffer, including space for trailing EOB's. */
180305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	n = _yybytes_len + 2;
180405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	buf = (char *) yyalloc(n  );
180505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! buf )
180605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
180705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
180805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	for ( i = 0; i < _yybytes_len; ++i )
180905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		buf[i] = yybytes[i];
181005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
181105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
181205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
181305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b = yy_scan_buffer(buf,n );
181405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	if ( ! b )
181505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
181605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
181705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* It's okay to grow etc. this buffer, and we should throw it
181805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * away when we're done.
181905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
182005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	b->yy_is_our_buffer = 1;
182105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
182205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return b;
182305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
182405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
182505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
182605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef YY_EXIT_FAILURE
182705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YY_EXIT_FAILURE 2
182805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
182905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
183005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
183105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void yy_fatal_error (yyconst char* msg )
183205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
183305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    	(void) fprintf( stderr, "%s\n", msg );
183405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	exit( YY_EXIT_FAILURE );
183505436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
183605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
183705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c++-only */
183805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
183905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
184005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Redefine yyless() so it works in section 3 code. */
184105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
184205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#undef yyless
184305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define yyless(n) \
184405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	do \
184505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		{ \
184605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		/* Undo effects of setting up yytext. */ \
184705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        int yyless_macro_arg = (n); \
184805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        YY_LESS_LINENO(yyless_macro_arg);\
184905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yytext[yyleng] = (yy_hold_char); \
185005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_c_buf_p) = yytext + yyless_macro_arg; \
185105436638acc7c010349a69c3395f1a57c642dc62Ying Wang		(yy_hold_char) = *(yy_c_buf_p); \
185205436638acc7c010349a69c3395f1a57c642dc62Ying Wang		*(yy_c_buf_p) = '\0'; \
185305436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yyleng = yyless_macro_arg; \
185405436638acc7c010349a69c3395f1a57c642dc62Ying Wang		} \
185505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	while ( 0 )
185605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
185705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Accessor  methods (get/set functions) to struct members. */
185805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
185905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
186005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-reentrant */
186105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
186205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
186305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Get the current line number.
186405436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
186505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
186605436638acc7c010349a69c3395f1a57c642dc62Ying Wangint yyget_lineno  (void)
186705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
186805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
186905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return yylineno;
187005436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
187105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
187205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Get the input stream.
187305436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
187405436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
187505436638acc7c010349a69c3395f1a57c642dc62Ying WangFILE *yyget_in  (void)
187605436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
187705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        return yyin;
187805436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
187905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
188005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Get the output stream.
188105436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
188205436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
188305436638acc7c010349a69c3395f1a57c642dc62Ying WangFILE *yyget_out  (void)
188405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
188505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        return yyout;
188605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
188705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
188805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Get the length of the current token.
188905436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
189005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
189105436638acc7c010349a69c3395f1a57c642dc62Ying Wangyy_size_t yyget_leng  (void)
189205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
189305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        return yyleng;
189405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
189505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
189605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Get the current token.
189705436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
189805436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
189905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
190005436638acc7c010349a69c3395f1a57c642dc62Ying Wangchar *yyget_text  (void)
190105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
190205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        return yytext;
190305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
190405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
190505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-reentrant */
190605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
190705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
190805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Set the current line number.
190905436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param line_number
191005436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
191105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
191205436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yyset_lineno (int  line_number )
191305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
191405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
191505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yylineno = line_number;
191605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
191705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
191805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/** Set the input stream. This does not discard the current
191905436638acc7c010349a69c3395f1a57c642dc62Ying Wang * input buffer.
192005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @param in_str A readable stream.
192105436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
192205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @see yy_switch_to_buffer
192305436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
192405436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yyset_in (FILE *  in_str )
192505436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
192605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        yyin = in_str ;
192705436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
192805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
192905436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yyset_out (FILE *  out_str )
193005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
193105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        yyout = out_str ;
193205436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
193305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
193405436638acc7c010349a69c3395f1a57c642dc62Ying Wangint yyget_debug  (void)
193505436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
193605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        return yy_flex_debug;
193705436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
193805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
193905436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yyset_debug (int  bdebug )
194005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
194105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        yy_flex_debug = bdebug ;
194205436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
194305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
194405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
194505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
194605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-reentrant */
194705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-bison-bridge */
194805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
194905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif if-c-only */
195005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
195105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only */
195205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_init_globals (void)
195305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
195405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        /* Initialization is the same as for the non-reentrant scanner.
195505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     * This function is called from yylex_destroy(), so don't allocate here.
195605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     */
195705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
195805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    (yy_buffer_stack) = 0;
195905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    (yy_buffer_stack_top) = 0;
196005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    (yy_buffer_stack_max) = 0;
196105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    (yy_c_buf_p) = (char *) 0;
196205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    (yy_init) = 0;
196305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    (yy_start) = 0;
196405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
196505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Defined in main.c */
196605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef YY_STDINIT
196705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyin = stdin;
196805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyout = stdout;
196905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
197005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyin = (FILE *) 0;
197105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyout = (FILE *) 0;
197205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
197305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
197405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* For future reference: Set errno on error, since we are called by
197505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     * yylex_init()
197605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     */
197705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return 0;
197805436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
197905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
198005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
198105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
198205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* yylex_destroy is for both reentrant and non-reentrant scanners. */
198305436638acc7c010349a69c3395f1a57c642dc62Ying Wangint yylex_destroy  (void)
198405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
198505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
198605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Pop the buffer stack, destroying each element. */
198705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	while(YY_CURRENT_BUFFER){
198805436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yy_delete_buffer(YY_CURRENT_BUFFER  );
198905436638acc7c010349a69c3395f1a57c642dc62Ying Wang		YY_CURRENT_BUFFER_LVALUE = NULL;
199005436638acc7c010349a69c3395f1a57c642dc62Ying Wang		yypop_buffer_state();
199105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	}
199205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
199305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* Destroy the stack itself. */
199405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	yyfree((yy_buffer_stack) );
199505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	(yy_buffer_stack) = NULL;
199605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
199705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    /* Reset the globals. This is important in a non-reentrant scanner so the next time
199805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     * yylex() is called, initialization will occur. */
199905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yy_init_globals( );
200005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
200105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-reentrant */
200205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
200305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return 0;
200405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
200505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
200605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
200705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*
200805436638acc7c010349a69c3395f1a57c642dc62Ying Wang * Internal utility routines.
200905436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
201005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
201105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef yytext_ptr
201205436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
201305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
201405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register int i;
201505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	for ( i = 0; i < n; ++i )
201605436638acc7c010349a69c3395f1a57c642dc62Ying Wang		s1[i] = s2[i];
201705436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
201805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
201905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
202005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef YY_NEED_STRLEN
202105436638acc7c010349a69c3395f1a57c642dc62Ying Wangstatic int yy_flex_strlen (yyconst char * s )
202205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
202305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	register int n;
202405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	for ( n = 0; s[n]; ++n )
202505436638acc7c010349a69c3395f1a57c642dc62Ying Wang		;
202605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
202705436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return n;
202805436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
202905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
203005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
203105436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid *yyalloc (yy_size_t  size )
203205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
203305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return (void *) malloc( size );
203405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
203505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
203605436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid *yyrealloc  (void * ptr, yy_size_t  size )
203705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
203805436638acc7c010349a69c3395f1a57c642dc62Ying Wang	/* The cast to (char *) in the following accommodates both
203905436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * implementations that use char* generic pointers, and those
204005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * that use void* generic pointers.  It works with the latter
204105436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * because both ANSI C and C++ allow castless assignment from
204205436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * any pointer type to void*, and deal with argument conversions
204305436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 * as though doing an assignment.
204405436638acc7c010349a69c3395f1a57c642dc62Ying Wang	 */
204505436638acc7c010349a69c3395f1a57c642dc62Ying Wang	return (void *) realloc( (char *) ptr, size );
204605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
204705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
204805436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid yyfree (void * ptr )
204905436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
205005436638acc7c010349a69c3395f1a57c642dc62Ying Wang	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
205105436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
205205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
205305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %if-tables-serialization definitions */
205405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %define-yytables   The name for this specific scanner's tables. */
205505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define YYTABLES_NAME "yytables"
205605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %endif */
205705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
205805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* %ok-for-header */
205905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
206005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#line 67 "calc++-scanner.ll"
206105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
206205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
206305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
206405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
206505436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid
206605436638acc7c010349a69c3395f1a57c642dc62Ying Wangcalcxx_driver::scan_begin ()
206705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
206805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  yy_flex_debug = trace_scanning;
206905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  if (file.empty () || file == "-")
207005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    yyin = stdin;
207105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  else if (!(yyin = fopen (file.c_str (), "r")))
207205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
207305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      error ("cannot open " + file + ": " + strerror(errno));
207405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      exit (EXIT_FAILURE);
207505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
207605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
207705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
207805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
207905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
208005436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid
208105436638acc7c010349a69c3395f1a57c642dc62Ying Wangcalcxx_driver::scan_end ()
208205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
208305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  fclose (yyin);
208405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
208505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
208605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2087