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