1*53ee8cc1Swenshuai.xi 2*53ee8cc1Swenshuai.xi#line 3 "scripts/kconfig/lex.zconf.c" 3*53ee8cc1Swenshuai.xi 4*53ee8cc1Swenshuai.xi#define YY_INT_ALIGNED short int 5*53ee8cc1Swenshuai.xi 6*53ee8cc1Swenshuai.xi/* A lexical scanner generated by flex */ 7*53ee8cc1Swenshuai.xi 8*53ee8cc1Swenshuai.xi#define yy_create_buffer zconf_create_buffer 9*53ee8cc1Swenshuai.xi#define yy_delete_buffer zconf_delete_buffer 10*53ee8cc1Swenshuai.xi#define yy_flex_debug zconf_flex_debug 11*53ee8cc1Swenshuai.xi#define yy_init_buffer zconf_init_buffer 12*53ee8cc1Swenshuai.xi#define yy_flush_buffer zconf_flush_buffer 13*53ee8cc1Swenshuai.xi#define yy_load_buffer_state zconf_load_buffer_state 14*53ee8cc1Swenshuai.xi#define yy_switch_to_buffer zconf_switch_to_buffer 15*53ee8cc1Swenshuai.xi#define yyin zconfin 16*53ee8cc1Swenshuai.xi#define yyleng zconfleng 17*53ee8cc1Swenshuai.xi#define yylex zconflex 18*53ee8cc1Swenshuai.xi#define yylineno zconflineno 19*53ee8cc1Swenshuai.xi#define yyout zconfout 20*53ee8cc1Swenshuai.xi#define yyrestart zconfrestart 21*53ee8cc1Swenshuai.xi#define yytext zconftext 22*53ee8cc1Swenshuai.xi#define yywrap zconfwrap 23*53ee8cc1Swenshuai.xi#define yyalloc zconfalloc 24*53ee8cc1Swenshuai.xi#define yyrealloc zconfrealloc 25*53ee8cc1Swenshuai.xi#define yyfree zconffree 26*53ee8cc1Swenshuai.xi 27*53ee8cc1Swenshuai.xi#define FLEX_SCANNER 28*53ee8cc1Swenshuai.xi#define YY_FLEX_MAJOR_VERSION 2 29*53ee8cc1Swenshuai.xi#define YY_FLEX_MINOR_VERSION 5 30*53ee8cc1Swenshuai.xi#define YY_FLEX_SUBMINOR_VERSION 35 31*53ee8cc1Swenshuai.xi#if YY_FLEX_SUBMINOR_VERSION > 0 32*53ee8cc1Swenshuai.xi#define FLEX_BETA 33*53ee8cc1Swenshuai.xi#endif 34*53ee8cc1Swenshuai.xi 35*53ee8cc1Swenshuai.xi/* First, we deal with platform-specific or compiler-specific issues. */ 36*53ee8cc1Swenshuai.xi 37*53ee8cc1Swenshuai.xi/* begin standard C headers. */ 38*53ee8cc1Swenshuai.xi#include <stdio.h> 39*53ee8cc1Swenshuai.xi#include <string.h> 40*53ee8cc1Swenshuai.xi#include <errno.h> 41*53ee8cc1Swenshuai.xi#include <stdlib.h> 42*53ee8cc1Swenshuai.xi 43*53ee8cc1Swenshuai.xi/* end standard C headers. */ 44*53ee8cc1Swenshuai.xi 45*53ee8cc1Swenshuai.xi/* flex integer type definitions */ 46*53ee8cc1Swenshuai.xi 47*53ee8cc1Swenshuai.xi#ifndef FLEXINT_H 48*53ee8cc1Swenshuai.xi#define FLEXINT_H 49*53ee8cc1Swenshuai.xi 50*53ee8cc1Swenshuai.xi/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ 51*53ee8cc1Swenshuai.xi 52*53ee8cc1Swenshuai.xi#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 53*53ee8cc1Swenshuai.xi 54*53ee8cc1Swenshuai.xi/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, 55*53ee8cc1Swenshuai.xi * if you want the limit (max/min) macros for int types. 56*53ee8cc1Swenshuai.xi */ 57*53ee8cc1Swenshuai.xi#ifndef __STDC_LIMIT_MACROS 58*53ee8cc1Swenshuai.xi#define __STDC_LIMIT_MACROS 1 59*53ee8cc1Swenshuai.xi#endif 60*53ee8cc1Swenshuai.xi 61*53ee8cc1Swenshuai.xi#include <inttypes.h> 62*53ee8cc1Swenshuai.xitypedef int8_t flex_int8_t; 63*53ee8cc1Swenshuai.xitypedef uint8_t flex_uint8_t; 64*53ee8cc1Swenshuai.xitypedef int16_t flex_int16_t; 65*53ee8cc1Swenshuai.xitypedef uint16_t flex_uint16_t; 66*53ee8cc1Swenshuai.xitypedef int32_t flex_int32_t; 67*53ee8cc1Swenshuai.xitypedef uint32_t flex_uint32_t; 68*53ee8cc1Swenshuai.xi#else 69*53ee8cc1Swenshuai.xitypedef signed char flex_int8_t; 70*53ee8cc1Swenshuai.xitypedef short int flex_int16_t; 71*53ee8cc1Swenshuai.xitypedef int flex_int32_t; 72*53ee8cc1Swenshuai.xitypedef unsigned char flex_uint8_t; 73*53ee8cc1Swenshuai.xitypedef unsigned short int flex_uint16_t; 74*53ee8cc1Swenshuai.xitypedef unsigned int flex_uint32_t; 75*53ee8cc1Swenshuai.xi 76*53ee8cc1Swenshuai.xi/* Limits of integral types. */ 77*53ee8cc1Swenshuai.xi#ifndef INT8_MIN 78*53ee8cc1Swenshuai.xi#define INT8_MIN (-128) 79*53ee8cc1Swenshuai.xi#endif 80*53ee8cc1Swenshuai.xi#ifndef INT16_MIN 81*53ee8cc1Swenshuai.xi#define INT16_MIN (-32767-1) 82*53ee8cc1Swenshuai.xi#endif 83*53ee8cc1Swenshuai.xi#ifndef INT32_MIN 84*53ee8cc1Swenshuai.xi#define INT32_MIN (-2147483647-1) 85*53ee8cc1Swenshuai.xi#endif 86*53ee8cc1Swenshuai.xi#ifndef INT8_MAX 87*53ee8cc1Swenshuai.xi#define INT8_MAX (127) 88*53ee8cc1Swenshuai.xi#endif 89*53ee8cc1Swenshuai.xi#ifndef INT16_MAX 90*53ee8cc1Swenshuai.xi#define INT16_MAX (32767) 91*53ee8cc1Swenshuai.xi#endif 92*53ee8cc1Swenshuai.xi#ifndef INT32_MAX 93*53ee8cc1Swenshuai.xi#define INT32_MAX (2147483647) 94*53ee8cc1Swenshuai.xi#endif 95*53ee8cc1Swenshuai.xi#ifndef UINT8_MAX 96*53ee8cc1Swenshuai.xi#define UINT8_MAX (255U) 97*53ee8cc1Swenshuai.xi#endif 98*53ee8cc1Swenshuai.xi#ifndef UINT16_MAX 99*53ee8cc1Swenshuai.xi#define UINT16_MAX (65535U) 100*53ee8cc1Swenshuai.xi#endif 101*53ee8cc1Swenshuai.xi#ifndef UINT32_MAX 102*53ee8cc1Swenshuai.xi#define UINT32_MAX (4294967295U) 103*53ee8cc1Swenshuai.xi#endif 104*53ee8cc1Swenshuai.xi 105*53ee8cc1Swenshuai.xi#endif /* ! C99 */ 106*53ee8cc1Swenshuai.xi 107*53ee8cc1Swenshuai.xi#endif /* ! FLEXINT_H */ 108*53ee8cc1Swenshuai.xi 109*53ee8cc1Swenshuai.xi#ifdef __cplusplus 110*53ee8cc1Swenshuai.xi 111*53ee8cc1Swenshuai.xi/* The "const" storage-class-modifier is valid. */ 112*53ee8cc1Swenshuai.xi#define YY_USE_CONST 113*53ee8cc1Swenshuai.xi 114*53ee8cc1Swenshuai.xi#else /* ! __cplusplus */ 115*53ee8cc1Swenshuai.xi 116*53ee8cc1Swenshuai.xi/* C99 requires __STDC__ to be defined as 1. */ 117*53ee8cc1Swenshuai.xi#if defined (__STDC__) 118*53ee8cc1Swenshuai.xi 119*53ee8cc1Swenshuai.xi#define YY_USE_CONST 120*53ee8cc1Swenshuai.xi 121*53ee8cc1Swenshuai.xi#endif /* defined (__STDC__) */ 122*53ee8cc1Swenshuai.xi#endif /* ! __cplusplus */ 123*53ee8cc1Swenshuai.xi 124*53ee8cc1Swenshuai.xi#ifdef YY_USE_CONST 125*53ee8cc1Swenshuai.xi#define yyconst const 126*53ee8cc1Swenshuai.xi#else 127*53ee8cc1Swenshuai.xi#define yyconst 128*53ee8cc1Swenshuai.xi#endif 129*53ee8cc1Swenshuai.xi 130*53ee8cc1Swenshuai.xi/* Returned upon end-of-file. */ 131*53ee8cc1Swenshuai.xi#define YY_NULL 0 132*53ee8cc1Swenshuai.xi 133*53ee8cc1Swenshuai.xi/* Promotes a possibly negative, possibly signed char to an unsigned 134*53ee8cc1Swenshuai.xi * integer for use as an array index. If the signed char is negative, 135*53ee8cc1Swenshuai.xi * we want to instead treat it as an 8-bit unsigned char, hence the 136*53ee8cc1Swenshuai.xi * double cast. 137*53ee8cc1Swenshuai.xi */ 138*53ee8cc1Swenshuai.xi#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) 139*53ee8cc1Swenshuai.xi 140*53ee8cc1Swenshuai.xi/* Enter a start condition. This macro really ought to take a parameter, 141*53ee8cc1Swenshuai.xi * but we do it the disgusting crufty way forced on us by the ()-less 142*53ee8cc1Swenshuai.xi * definition of BEGIN. 143*53ee8cc1Swenshuai.xi */ 144*53ee8cc1Swenshuai.xi#define BEGIN (yy_start) = 1 + 2 * 145*53ee8cc1Swenshuai.xi 146*53ee8cc1Swenshuai.xi/* Translate the current start state into a value that can be later handed 147*53ee8cc1Swenshuai.xi * to BEGIN to return to the state. The YYSTATE alias is for lex 148*53ee8cc1Swenshuai.xi * compatibility. 149*53ee8cc1Swenshuai.xi */ 150*53ee8cc1Swenshuai.xi#define YY_START (((yy_start) - 1) / 2) 151*53ee8cc1Swenshuai.xi#define YYSTATE YY_START 152*53ee8cc1Swenshuai.xi 153*53ee8cc1Swenshuai.xi/* Action number for EOF rule of a given start state. */ 154*53ee8cc1Swenshuai.xi#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) 155*53ee8cc1Swenshuai.xi 156*53ee8cc1Swenshuai.xi/* Special action meaning "start processing a new file". */ 157*53ee8cc1Swenshuai.xi#define YY_NEW_FILE zconfrestart(zconfin ) 158*53ee8cc1Swenshuai.xi 159*53ee8cc1Swenshuai.xi#define YY_END_OF_BUFFER_CHAR 0 160*53ee8cc1Swenshuai.xi 161*53ee8cc1Swenshuai.xi/* Size of default input buffer. */ 162*53ee8cc1Swenshuai.xi#ifndef YY_BUF_SIZE 163*53ee8cc1Swenshuai.xi#ifdef __ia64__ 164*53ee8cc1Swenshuai.xi/* On IA-64, the buffer size is 16k, not 8k. 165*53ee8cc1Swenshuai.xi * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. 166*53ee8cc1Swenshuai.xi * Ditto for the __ia64__ case accordingly. 167*53ee8cc1Swenshuai.xi */ 168*53ee8cc1Swenshuai.xi#define YY_BUF_SIZE 32768 169*53ee8cc1Swenshuai.xi#else 170*53ee8cc1Swenshuai.xi#define YY_BUF_SIZE 16384 171*53ee8cc1Swenshuai.xi#endif /* __ia64__ */ 172*53ee8cc1Swenshuai.xi#endif 173*53ee8cc1Swenshuai.xi 174*53ee8cc1Swenshuai.xi/* The state buf must be large enough to hold one state per character in the main buffer. 175*53ee8cc1Swenshuai.xi */ 176*53ee8cc1Swenshuai.xi#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) 177*53ee8cc1Swenshuai.xi 178*53ee8cc1Swenshuai.xi#ifndef YY_TYPEDEF_YY_BUFFER_STATE 179*53ee8cc1Swenshuai.xi#define YY_TYPEDEF_YY_BUFFER_STATE 180*53ee8cc1Swenshuai.xitypedef struct yy_buffer_state *YY_BUFFER_STATE; 181*53ee8cc1Swenshuai.xi#endif 182*53ee8cc1Swenshuai.xi 183*53ee8cc1Swenshuai.xiextern int zconfleng; 184*53ee8cc1Swenshuai.xi 185*53ee8cc1Swenshuai.xiextern FILE *zconfin, *zconfout; 186*53ee8cc1Swenshuai.xi 187*53ee8cc1Swenshuai.xi#define EOB_ACT_CONTINUE_SCAN 0 188*53ee8cc1Swenshuai.xi#define EOB_ACT_END_OF_FILE 1 189*53ee8cc1Swenshuai.xi#define EOB_ACT_LAST_MATCH 2 190*53ee8cc1Swenshuai.xi 191*53ee8cc1Swenshuai.xi #define YY_LESS_LINENO(n) 192*53ee8cc1Swenshuai.xi 193*53ee8cc1Swenshuai.xi/* Return all but the first "n" matched characters back to the input stream. */ 194*53ee8cc1Swenshuai.xi#define yyless(n) \ 195*53ee8cc1Swenshuai.xi do \ 196*53ee8cc1Swenshuai.xi { \ 197*53ee8cc1Swenshuai.xi /* Undo effects of setting up zconftext. */ \ 198*53ee8cc1Swenshuai.xi int yyless_macro_arg = (n); \ 199*53ee8cc1Swenshuai.xi YY_LESS_LINENO(yyless_macro_arg);\ 200*53ee8cc1Swenshuai.xi *yy_cp = (yy_hold_char); \ 201*53ee8cc1Swenshuai.xi YY_RESTORE_YY_MORE_OFFSET \ 202*53ee8cc1Swenshuai.xi (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ 203*53ee8cc1Swenshuai.xi YY_DO_BEFORE_ACTION; /* set up zconftext again */ \ 204*53ee8cc1Swenshuai.xi } \ 205*53ee8cc1Swenshuai.xi while ( 0 ) 206*53ee8cc1Swenshuai.xi 207*53ee8cc1Swenshuai.xi#define unput(c) yyunput( c, (yytext_ptr) ) 208*53ee8cc1Swenshuai.xi 209*53ee8cc1Swenshuai.xi#ifndef YY_TYPEDEF_YY_SIZE_T 210*53ee8cc1Swenshuai.xi#define YY_TYPEDEF_YY_SIZE_T 211*53ee8cc1Swenshuai.xitypedef size_t yy_size_t; 212*53ee8cc1Swenshuai.xi#endif 213*53ee8cc1Swenshuai.xi 214*53ee8cc1Swenshuai.xi#ifndef YY_STRUCT_YY_BUFFER_STATE 215*53ee8cc1Swenshuai.xi#define YY_STRUCT_YY_BUFFER_STATE 216*53ee8cc1Swenshuai.xistruct yy_buffer_state 217*53ee8cc1Swenshuai.xi { 218*53ee8cc1Swenshuai.xi FILE *yy_input_file; 219*53ee8cc1Swenshuai.xi 220*53ee8cc1Swenshuai.xi char *yy_ch_buf; /* input buffer */ 221*53ee8cc1Swenshuai.xi char *yy_buf_pos; /* current position in input buffer */ 222*53ee8cc1Swenshuai.xi 223*53ee8cc1Swenshuai.xi /* Size of input buffer in bytes, not including room for EOB 224*53ee8cc1Swenshuai.xi * characters. 225*53ee8cc1Swenshuai.xi */ 226*53ee8cc1Swenshuai.xi yy_size_t yy_buf_size; 227*53ee8cc1Swenshuai.xi 228*53ee8cc1Swenshuai.xi /* Number of characters read into yy_ch_buf, not including EOB 229*53ee8cc1Swenshuai.xi * characters. 230*53ee8cc1Swenshuai.xi */ 231*53ee8cc1Swenshuai.xi int yy_n_chars; 232*53ee8cc1Swenshuai.xi 233*53ee8cc1Swenshuai.xi /* Whether we "own" the buffer - i.e., we know we created it, 234*53ee8cc1Swenshuai.xi * and can realloc() it to grow it, and should free() it to 235*53ee8cc1Swenshuai.xi * delete it. 236*53ee8cc1Swenshuai.xi */ 237*53ee8cc1Swenshuai.xi int yy_is_our_buffer; 238*53ee8cc1Swenshuai.xi 239*53ee8cc1Swenshuai.xi /* Whether this is an "interactive" input source; if so, and 240*53ee8cc1Swenshuai.xi * if we're using stdio for input, then we want to use getc() 241*53ee8cc1Swenshuai.xi * instead of fread(), to make sure we stop fetching input after 242*53ee8cc1Swenshuai.xi * each newline. 243*53ee8cc1Swenshuai.xi */ 244*53ee8cc1Swenshuai.xi int yy_is_interactive; 245*53ee8cc1Swenshuai.xi 246*53ee8cc1Swenshuai.xi /* Whether we're considered to be at the beginning of a line. 247*53ee8cc1Swenshuai.xi * If so, '^' rules will be active on the next match, otherwise 248*53ee8cc1Swenshuai.xi * not. 249*53ee8cc1Swenshuai.xi */ 250*53ee8cc1Swenshuai.xi int yy_at_bol; 251*53ee8cc1Swenshuai.xi 252*53ee8cc1Swenshuai.xi int yy_bs_lineno; /**< The line count. */ 253*53ee8cc1Swenshuai.xi int yy_bs_column; /**< The column count. */ 254*53ee8cc1Swenshuai.xi 255*53ee8cc1Swenshuai.xi /* Whether to try to fill the input buffer when we reach the 256*53ee8cc1Swenshuai.xi * end of it. 257*53ee8cc1Swenshuai.xi */ 258*53ee8cc1Swenshuai.xi int yy_fill_buffer; 259*53ee8cc1Swenshuai.xi 260*53ee8cc1Swenshuai.xi int yy_buffer_status; 261*53ee8cc1Swenshuai.xi 262*53ee8cc1Swenshuai.xi#define YY_BUFFER_NEW 0 263*53ee8cc1Swenshuai.xi#define YY_BUFFER_NORMAL 1 264*53ee8cc1Swenshuai.xi /* When an EOF's been seen but there's still some text to process 265*53ee8cc1Swenshuai.xi * then we mark the buffer as YY_EOF_PENDING, to indicate that we 266*53ee8cc1Swenshuai.xi * shouldn't try reading from the input source any more. We might 267*53ee8cc1Swenshuai.xi * still have a bunch of tokens to match, though, because of 268*53ee8cc1Swenshuai.xi * possible backing-up. 269*53ee8cc1Swenshuai.xi * 270*53ee8cc1Swenshuai.xi * When we actually see the EOF, we change the status to "new" 271*53ee8cc1Swenshuai.xi * (via zconfrestart()), so that the user can continue scanning by 272*53ee8cc1Swenshuai.xi * just pointing zconfin at a new input file. 273*53ee8cc1Swenshuai.xi */ 274*53ee8cc1Swenshuai.xi#define YY_BUFFER_EOF_PENDING 2 275*53ee8cc1Swenshuai.xi 276*53ee8cc1Swenshuai.xi }; 277*53ee8cc1Swenshuai.xi#endif /* !YY_STRUCT_YY_BUFFER_STATE */ 278*53ee8cc1Swenshuai.xi 279*53ee8cc1Swenshuai.xi/* Stack of input buffers. */ 280*53ee8cc1Swenshuai.xistatic size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ 281*53ee8cc1Swenshuai.xistatic size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ 282*53ee8cc1Swenshuai.xistatic YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ 283*53ee8cc1Swenshuai.xi 284*53ee8cc1Swenshuai.xi/* We provide macros for accessing buffer states in case in the 285*53ee8cc1Swenshuai.xi * future we want to put the buffer states in a more general 286*53ee8cc1Swenshuai.xi * "scanner state". 287*53ee8cc1Swenshuai.xi * 288*53ee8cc1Swenshuai.xi * Returns the top of the stack, or NULL. 289*53ee8cc1Swenshuai.xi */ 290*53ee8cc1Swenshuai.xi#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ 291*53ee8cc1Swenshuai.xi ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ 292*53ee8cc1Swenshuai.xi : NULL) 293*53ee8cc1Swenshuai.xi 294*53ee8cc1Swenshuai.xi/* Same as previous macro, but useful when we know that the buffer stack is not 295*53ee8cc1Swenshuai.xi * NULL or when we need an lvalue. For internal use only. 296*53ee8cc1Swenshuai.xi */ 297*53ee8cc1Swenshuai.xi#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] 298*53ee8cc1Swenshuai.xi 299*53ee8cc1Swenshuai.xi/* yy_hold_char holds the character lost when zconftext is formed. */ 300*53ee8cc1Swenshuai.xistatic char yy_hold_char; 301*53ee8cc1Swenshuai.xistatic int yy_n_chars; /* number of characters read into yy_ch_buf */ 302*53ee8cc1Swenshuai.xiint zconfleng; 303*53ee8cc1Swenshuai.xi 304*53ee8cc1Swenshuai.xi/* Points to current character in buffer. */ 305*53ee8cc1Swenshuai.xistatic char *yy_c_buf_p = (char *) 0; 306*53ee8cc1Swenshuai.xistatic int yy_init = 0; /* whether we need to initialize */ 307*53ee8cc1Swenshuai.xistatic int yy_start = 0; /* start state number */ 308*53ee8cc1Swenshuai.xi 309*53ee8cc1Swenshuai.xi/* Flag which is used to allow zconfwrap()'s to do buffer switches 310*53ee8cc1Swenshuai.xi * instead of setting up a fresh zconfin. A bit of a hack ... 311*53ee8cc1Swenshuai.xi */ 312*53ee8cc1Swenshuai.xistatic int yy_did_buffer_switch_on_eof; 313*53ee8cc1Swenshuai.xi 314*53ee8cc1Swenshuai.xivoid zconfrestart (FILE *input_file ); 315*53ee8cc1Swenshuai.xivoid zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer ); 316*53ee8cc1Swenshuai.xiYY_BUFFER_STATE zconf_create_buffer (FILE *file,int size ); 317*53ee8cc1Swenshuai.xivoid zconf_delete_buffer (YY_BUFFER_STATE b ); 318*53ee8cc1Swenshuai.xivoid zconf_flush_buffer (YY_BUFFER_STATE b ); 319*53ee8cc1Swenshuai.xivoid zconfpush_buffer_state (YY_BUFFER_STATE new_buffer ); 320*53ee8cc1Swenshuai.xivoid zconfpop_buffer_state (void ); 321*53ee8cc1Swenshuai.xi 322*53ee8cc1Swenshuai.xistatic void zconfensure_buffer_stack (void ); 323*53ee8cc1Swenshuai.xistatic void zconf_load_buffer_state (void ); 324*53ee8cc1Swenshuai.xistatic void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file ); 325*53ee8cc1Swenshuai.xi 326*53ee8cc1Swenshuai.xi#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER ) 327*53ee8cc1Swenshuai.xi 328*53ee8cc1Swenshuai.xiYY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size ); 329*53ee8cc1Swenshuai.xiYY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str ); 330*53ee8cc1Swenshuai.xiYY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len ); 331*53ee8cc1Swenshuai.xi 332*53ee8cc1Swenshuai.xivoid *zconfalloc (yy_size_t ); 333*53ee8cc1Swenshuai.xivoid *zconfrealloc (void *,yy_size_t ); 334*53ee8cc1Swenshuai.xivoid zconffree (void * ); 335*53ee8cc1Swenshuai.xi 336*53ee8cc1Swenshuai.xi#define yy_new_buffer zconf_create_buffer 337*53ee8cc1Swenshuai.xi 338*53ee8cc1Swenshuai.xi#define yy_set_interactive(is_interactive) \ 339*53ee8cc1Swenshuai.xi { \ 340*53ee8cc1Swenshuai.xi if ( ! YY_CURRENT_BUFFER ){ \ 341*53ee8cc1Swenshuai.xi zconfensure_buffer_stack (); \ 342*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE = \ 343*53ee8cc1Swenshuai.xi zconf_create_buffer(zconfin,YY_BUF_SIZE ); \ 344*53ee8cc1Swenshuai.xi } \ 345*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ 346*53ee8cc1Swenshuai.xi } 347*53ee8cc1Swenshuai.xi 348*53ee8cc1Swenshuai.xi#define yy_set_bol(at_bol) \ 349*53ee8cc1Swenshuai.xi { \ 350*53ee8cc1Swenshuai.xi if ( ! YY_CURRENT_BUFFER ){\ 351*53ee8cc1Swenshuai.xi zconfensure_buffer_stack (); \ 352*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE = \ 353*53ee8cc1Swenshuai.xi zconf_create_buffer(zconfin,YY_BUF_SIZE ); \ 354*53ee8cc1Swenshuai.xi } \ 355*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ 356*53ee8cc1Swenshuai.xi } 357*53ee8cc1Swenshuai.xi 358*53ee8cc1Swenshuai.xi#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) 359*53ee8cc1Swenshuai.xi 360*53ee8cc1Swenshuai.xi/* Begin user sect3 */ 361*53ee8cc1Swenshuai.xi 362*53ee8cc1Swenshuai.xi#define zconfwrap(n) 1 363*53ee8cc1Swenshuai.xi#define YY_SKIP_YYWRAP 364*53ee8cc1Swenshuai.xi 365*53ee8cc1Swenshuai.xitypedef unsigned char YY_CHAR; 366*53ee8cc1Swenshuai.xi 367*53ee8cc1Swenshuai.xiFILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0; 368*53ee8cc1Swenshuai.xi 369*53ee8cc1Swenshuai.xitypedef int yy_state_type; 370*53ee8cc1Swenshuai.xi 371*53ee8cc1Swenshuai.xiextern int zconflineno; 372*53ee8cc1Swenshuai.xi 373*53ee8cc1Swenshuai.xiint zconflineno = 1; 374*53ee8cc1Swenshuai.xi 375*53ee8cc1Swenshuai.xiextern char *zconftext; 376*53ee8cc1Swenshuai.xi#define yytext_ptr zconftext 377*53ee8cc1Swenshuai.xistatic yyconst flex_int16_t yy_nxt[][17] = 378*53ee8cc1Swenshuai.xi { 379*53ee8cc1Swenshuai.xi { 380*53ee8cc1Swenshuai.xi 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 381*53ee8cc1Swenshuai.xi 0, 0, 0, 0, 0, 0, 0 382*53ee8cc1Swenshuai.xi }, 383*53ee8cc1Swenshuai.xi 384*53ee8cc1Swenshuai.xi { 385*53ee8cc1Swenshuai.xi 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, 386*53ee8cc1Swenshuai.xi 12, 12, 12, 12, 12, 12, 12 387*53ee8cc1Swenshuai.xi }, 388*53ee8cc1Swenshuai.xi 389*53ee8cc1Swenshuai.xi { 390*53ee8cc1Swenshuai.xi 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, 391*53ee8cc1Swenshuai.xi 12, 12, 12, 12, 12, 12, 12 392*53ee8cc1Swenshuai.xi }, 393*53ee8cc1Swenshuai.xi 394*53ee8cc1Swenshuai.xi { 395*53ee8cc1Swenshuai.xi 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, 396*53ee8cc1Swenshuai.xi 16, 16, 16, 18, 16, 16, 16 397*53ee8cc1Swenshuai.xi }, 398*53ee8cc1Swenshuai.xi 399*53ee8cc1Swenshuai.xi { 400*53ee8cc1Swenshuai.xi 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, 401*53ee8cc1Swenshuai.xi 16, 16, 16, 18, 16, 16, 16 402*53ee8cc1Swenshuai.xi 403*53ee8cc1Swenshuai.xi }, 404*53ee8cc1Swenshuai.xi 405*53ee8cc1Swenshuai.xi { 406*53ee8cc1Swenshuai.xi 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, 407*53ee8cc1Swenshuai.xi 19, 19, 19, 19, 19, 19, 19 408*53ee8cc1Swenshuai.xi }, 409*53ee8cc1Swenshuai.xi 410*53ee8cc1Swenshuai.xi { 411*53ee8cc1Swenshuai.xi 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, 412*53ee8cc1Swenshuai.xi 19, 19, 19, 19, 19, 19, 19 413*53ee8cc1Swenshuai.xi }, 414*53ee8cc1Swenshuai.xi 415*53ee8cc1Swenshuai.xi { 416*53ee8cc1Swenshuai.xi 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, 417*53ee8cc1Swenshuai.xi 22, 22, 22, 22, 22, 25, 22 418*53ee8cc1Swenshuai.xi }, 419*53ee8cc1Swenshuai.xi 420*53ee8cc1Swenshuai.xi { 421*53ee8cc1Swenshuai.xi 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, 422*53ee8cc1Swenshuai.xi 22, 22, 22, 22, 22, 25, 22 423*53ee8cc1Swenshuai.xi }, 424*53ee8cc1Swenshuai.xi 425*53ee8cc1Swenshuai.xi { 426*53ee8cc1Swenshuai.xi 11, 26, 26, 27, 28, 29, 30, 31, 29, 32, 427*53ee8cc1Swenshuai.xi 33, 34, 35, 35, 36, 37, 38 428*53ee8cc1Swenshuai.xi 429*53ee8cc1Swenshuai.xi }, 430*53ee8cc1Swenshuai.xi 431*53ee8cc1Swenshuai.xi { 432*53ee8cc1Swenshuai.xi 11, 26, 26, 27, 28, 29, 30, 31, 29, 32, 433*53ee8cc1Swenshuai.xi 33, 34, 35, 35, 36, 37, 38 434*53ee8cc1Swenshuai.xi }, 435*53ee8cc1Swenshuai.xi 436*53ee8cc1Swenshuai.xi { 437*53ee8cc1Swenshuai.xi -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, 438*53ee8cc1Swenshuai.xi -11, -11, -11, -11, -11, -11, -11 439*53ee8cc1Swenshuai.xi }, 440*53ee8cc1Swenshuai.xi 441*53ee8cc1Swenshuai.xi { 442*53ee8cc1Swenshuai.xi 11, -12, -12, -12, -12, -12, -12, -12, -12, -12, 443*53ee8cc1Swenshuai.xi -12, -12, -12, -12, -12, -12, -12 444*53ee8cc1Swenshuai.xi }, 445*53ee8cc1Swenshuai.xi 446*53ee8cc1Swenshuai.xi { 447*53ee8cc1Swenshuai.xi 11, -13, 39, 40, -13, -13, 41, -13, -13, -13, 448*53ee8cc1Swenshuai.xi -13, -13, -13, -13, -13, -13, -13 449*53ee8cc1Swenshuai.xi }, 450*53ee8cc1Swenshuai.xi 451*53ee8cc1Swenshuai.xi { 452*53ee8cc1Swenshuai.xi 11, -14, -14, -14, -14, -14, -14, -14, -14, -14, 453*53ee8cc1Swenshuai.xi -14, -14, -14, -14, -14, -14, -14 454*53ee8cc1Swenshuai.xi 455*53ee8cc1Swenshuai.xi }, 456*53ee8cc1Swenshuai.xi 457*53ee8cc1Swenshuai.xi { 458*53ee8cc1Swenshuai.xi 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, 459*53ee8cc1Swenshuai.xi 42, 42, 42, 42, 42, 42, 42 460*53ee8cc1Swenshuai.xi }, 461*53ee8cc1Swenshuai.xi 462*53ee8cc1Swenshuai.xi { 463*53ee8cc1Swenshuai.xi 11, -16, -16, -16, -16, -16, -16, -16, -16, -16, 464*53ee8cc1Swenshuai.xi -16, -16, -16, -16, -16, -16, -16 465*53ee8cc1Swenshuai.xi }, 466*53ee8cc1Swenshuai.xi 467*53ee8cc1Swenshuai.xi { 468*53ee8cc1Swenshuai.xi 11, -17, -17, -17, -17, -17, -17, -17, -17, -17, 469*53ee8cc1Swenshuai.xi -17, -17, -17, -17, -17, -17, -17 470*53ee8cc1Swenshuai.xi }, 471*53ee8cc1Swenshuai.xi 472*53ee8cc1Swenshuai.xi { 473*53ee8cc1Swenshuai.xi 11, -18, -18, -18, -18, -18, -18, -18, -18, -18, 474*53ee8cc1Swenshuai.xi -18, -18, -18, 44, -18, -18, -18 475*53ee8cc1Swenshuai.xi }, 476*53ee8cc1Swenshuai.xi 477*53ee8cc1Swenshuai.xi { 478*53ee8cc1Swenshuai.xi 11, 45, 45, -19, 45, 45, 45, 45, 45, 45, 479*53ee8cc1Swenshuai.xi 45, 45, 45, 45, 45, 45, 45 480*53ee8cc1Swenshuai.xi 481*53ee8cc1Swenshuai.xi }, 482*53ee8cc1Swenshuai.xi 483*53ee8cc1Swenshuai.xi { 484*53ee8cc1Swenshuai.xi 11, -20, 46, 47, -20, -20, -20, -20, -20, -20, 485*53ee8cc1Swenshuai.xi -20, -20, -20, -20, -20, -20, -20 486*53ee8cc1Swenshuai.xi }, 487*53ee8cc1Swenshuai.xi 488*53ee8cc1Swenshuai.xi { 489*53ee8cc1Swenshuai.xi 11, 48, -21, -21, 48, 48, 48, 48, 48, 48, 490*53ee8cc1Swenshuai.xi 48, 48, 48, 48, 48, 48, 48 491*53ee8cc1Swenshuai.xi }, 492*53ee8cc1Swenshuai.xi 493*53ee8cc1Swenshuai.xi { 494*53ee8cc1Swenshuai.xi 11, 49, 49, 50, 49, -22, 49, 49, -22, 49, 495*53ee8cc1Swenshuai.xi 49, 49, 49, 49, 49, -22, 49 496*53ee8cc1Swenshuai.xi }, 497*53ee8cc1Swenshuai.xi 498*53ee8cc1Swenshuai.xi { 499*53ee8cc1Swenshuai.xi 11, -23, -23, -23, -23, -23, -23, -23, -23, -23, 500*53ee8cc1Swenshuai.xi -23, -23, -23, -23, -23, -23, -23 501*53ee8cc1Swenshuai.xi }, 502*53ee8cc1Swenshuai.xi 503*53ee8cc1Swenshuai.xi { 504*53ee8cc1Swenshuai.xi 11, -24, -24, -24, -24, -24, -24, -24, -24, -24, 505*53ee8cc1Swenshuai.xi -24, -24, -24, -24, -24, -24, -24 506*53ee8cc1Swenshuai.xi 507*53ee8cc1Swenshuai.xi }, 508*53ee8cc1Swenshuai.xi 509*53ee8cc1Swenshuai.xi { 510*53ee8cc1Swenshuai.xi 11, 51, 51, 52, 51, 51, 51, 51, 51, 51, 511*53ee8cc1Swenshuai.xi 51, 51, 51, 51, 51, 51, 51 512*53ee8cc1Swenshuai.xi }, 513*53ee8cc1Swenshuai.xi 514*53ee8cc1Swenshuai.xi { 515*53ee8cc1Swenshuai.xi 11, -26, -26, -26, -26, -26, -26, -26, -26, -26, 516*53ee8cc1Swenshuai.xi -26, -26, -26, -26, -26, -26, -26 517*53ee8cc1Swenshuai.xi }, 518*53ee8cc1Swenshuai.xi 519*53ee8cc1Swenshuai.xi { 520*53ee8cc1Swenshuai.xi 11, -27, -27, -27, -27, -27, -27, -27, -27, -27, 521*53ee8cc1Swenshuai.xi -27, -27, -27, -27, -27, -27, -27 522*53ee8cc1Swenshuai.xi }, 523*53ee8cc1Swenshuai.xi 524*53ee8cc1Swenshuai.xi { 525*53ee8cc1Swenshuai.xi 11, -28, -28, -28, -28, -28, -28, -28, -28, -28, 526*53ee8cc1Swenshuai.xi -28, -28, -28, -28, 53, -28, -28 527*53ee8cc1Swenshuai.xi }, 528*53ee8cc1Swenshuai.xi 529*53ee8cc1Swenshuai.xi { 530*53ee8cc1Swenshuai.xi 11, -29, -29, -29, -29, -29, -29, -29, -29, -29, 531*53ee8cc1Swenshuai.xi -29, -29, -29, -29, -29, -29, -29 532*53ee8cc1Swenshuai.xi 533*53ee8cc1Swenshuai.xi }, 534*53ee8cc1Swenshuai.xi 535*53ee8cc1Swenshuai.xi { 536*53ee8cc1Swenshuai.xi 11, 54, 54, -30, 54, 54, 54, 54, 54, 54, 537*53ee8cc1Swenshuai.xi 54, 54, 54, 54, 54, 54, 54 538*53ee8cc1Swenshuai.xi }, 539*53ee8cc1Swenshuai.xi 540*53ee8cc1Swenshuai.xi { 541*53ee8cc1Swenshuai.xi 11, -31, -31, -31, -31, -31, -31, 55, -31, -31, 542*53ee8cc1Swenshuai.xi -31, -31, -31, -31, -31, -31, -31 543*53ee8cc1Swenshuai.xi }, 544*53ee8cc1Swenshuai.xi 545*53ee8cc1Swenshuai.xi { 546*53ee8cc1Swenshuai.xi 11, -32, -32, -32, -32, -32, -32, -32, -32, -32, 547*53ee8cc1Swenshuai.xi -32, -32, -32, -32, -32, -32, -32 548*53ee8cc1Swenshuai.xi }, 549*53ee8cc1Swenshuai.xi 550*53ee8cc1Swenshuai.xi { 551*53ee8cc1Swenshuai.xi 11, -33, -33, -33, -33, -33, -33, -33, -33, -33, 552*53ee8cc1Swenshuai.xi -33, -33, -33, -33, -33, -33, -33 553*53ee8cc1Swenshuai.xi }, 554*53ee8cc1Swenshuai.xi 555*53ee8cc1Swenshuai.xi { 556*53ee8cc1Swenshuai.xi 11, -34, -34, -34, -34, -34, -34, -34, -34, -34, 557*53ee8cc1Swenshuai.xi -34, 56, 57, 57, -34, -34, -34 558*53ee8cc1Swenshuai.xi 559*53ee8cc1Swenshuai.xi }, 560*53ee8cc1Swenshuai.xi 561*53ee8cc1Swenshuai.xi { 562*53ee8cc1Swenshuai.xi 11, -35, -35, -35, -35, -35, -35, -35, -35, -35, 563*53ee8cc1Swenshuai.xi -35, 57, 57, 57, -35, -35, -35 564*53ee8cc1Swenshuai.xi }, 565*53ee8cc1Swenshuai.xi 566*53ee8cc1Swenshuai.xi { 567*53ee8cc1Swenshuai.xi 11, -36, -36, -36, -36, -36, -36, -36, -36, -36, 568*53ee8cc1Swenshuai.xi -36, -36, -36, -36, -36, -36, -36 569*53ee8cc1Swenshuai.xi }, 570*53ee8cc1Swenshuai.xi 571*53ee8cc1Swenshuai.xi { 572*53ee8cc1Swenshuai.xi 11, -37, -37, 58, -37, -37, -37, -37, -37, -37, 573*53ee8cc1Swenshuai.xi -37, -37, -37, -37, -37, -37, -37 574*53ee8cc1Swenshuai.xi }, 575*53ee8cc1Swenshuai.xi 576*53ee8cc1Swenshuai.xi { 577*53ee8cc1Swenshuai.xi 11, -38, -38, -38, -38, -38, -38, -38, -38, -38, 578*53ee8cc1Swenshuai.xi -38, -38, -38, -38, -38, -38, 59 579*53ee8cc1Swenshuai.xi }, 580*53ee8cc1Swenshuai.xi 581*53ee8cc1Swenshuai.xi { 582*53ee8cc1Swenshuai.xi 11, -39, 39, 40, -39, -39, 41, -39, -39, -39, 583*53ee8cc1Swenshuai.xi -39, -39, -39, -39, -39, -39, -39 584*53ee8cc1Swenshuai.xi 585*53ee8cc1Swenshuai.xi }, 586*53ee8cc1Swenshuai.xi 587*53ee8cc1Swenshuai.xi { 588*53ee8cc1Swenshuai.xi 11, -40, -40, -40, -40, -40, -40, -40, -40, -40, 589*53ee8cc1Swenshuai.xi -40, -40, -40, -40, -40, -40, -40 590*53ee8cc1Swenshuai.xi }, 591*53ee8cc1Swenshuai.xi 592*53ee8cc1Swenshuai.xi { 593*53ee8cc1Swenshuai.xi 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, 594*53ee8cc1Swenshuai.xi 42, 42, 42, 42, 42, 42, 42 595*53ee8cc1Swenshuai.xi }, 596*53ee8cc1Swenshuai.xi 597*53ee8cc1Swenshuai.xi { 598*53ee8cc1Swenshuai.xi 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, 599*53ee8cc1Swenshuai.xi 42, 42, 42, 42, 42, 42, 42 600*53ee8cc1Swenshuai.xi }, 601*53ee8cc1Swenshuai.xi 602*53ee8cc1Swenshuai.xi { 603*53ee8cc1Swenshuai.xi 11, -43, -43, -43, -43, -43, -43, -43, -43, -43, 604*53ee8cc1Swenshuai.xi -43, -43, -43, -43, -43, -43, -43 605*53ee8cc1Swenshuai.xi }, 606*53ee8cc1Swenshuai.xi 607*53ee8cc1Swenshuai.xi { 608*53ee8cc1Swenshuai.xi 11, -44, -44, -44, -44, -44, -44, -44, -44, -44, 609*53ee8cc1Swenshuai.xi -44, -44, -44, 44, -44, -44, -44 610*53ee8cc1Swenshuai.xi 611*53ee8cc1Swenshuai.xi }, 612*53ee8cc1Swenshuai.xi 613*53ee8cc1Swenshuai.xi { 614*53ee8cc1Swenshuai.xi 11, 45, 45, -45, 45, 45, 45, 45, 45, 45, 615*53ee8cc1Swenshuai.xi 45, 45, 45, 45, 45, 45, 45 616*53ee8cc1Swenshuai.xi }, 617*53ee8cc1Swenshuai.xi 618*53ee8cc1Swenshuai.xi { 619*53ee8cc1Swenshuai.xi 11, -46, 46, 47, -46, -46, -46, -46, -46, -46, 620*53ee8cc1Swenshuai.xi -46, -46, -46, -46, -46, -46, -46 621*53ee8cc1Swenshuai.xi }, 622*53ee8cc1Swenshuai.xi 623*53ee8cc1Swenshuai.xi { 624*53ee8cc1Swenshuai.xi 11, 48, -47, -47, 48, 48, 48, 48, 48, 48, 625*53ee8cc1Swenshuai.xi 48, 48, 48, 48, 48, 48, 48 626*53ee8cc1Swenshuai.xi }, 627*53ee8cc1Swenshuai.xi 628*53ee8cc1Swenshuai.xi { 629*53ee8cc1Swenshuai.xi 11, -48, -48, -48, -48, -48, -48, -48, -48, -48, 630*53ee8cc1Swenshuai.xi -48, -48, -48, -48, -48, -48, -48 631*53ee8cc1Swenshuai.xi }, 632*53ee8cc1Swenshuai.xi 633*53ee8cc1Swenshuai.xi { 634*53ee8cc1Swenshuai.xi 11, 49, 49, 50, 49, -49, 49, 49, -49, 49, 635*53ee8cc1Swenshuai.xi 49, 49, 49, 49, 49, -49, 49 636*53ee8cc1Swenshuai.xi 637*53ee8cc1Swenshuai.xi }, 638*53ee8cc1Swenshuai.xi 639*53ee8cc1Swenshuai.xi { 640*53ee8cc1Swenshuai.xi 11, -50, -50, -50, -50, -50, -50, -50, -50, -50, 641*53ee8cc1Swenshuai.xi -50, -50, -50, -50, -50, -50, -50 642*53ee8cc1Swenshuai.xi }, 643*53ee8cc1Swenshuai.xi 644*53ee8cc1Swenshuai.xi { 645*53ee8cc1Swenshuai.xi 11, -51, -51, 52, -51, -51, -51, -51, -51, -51, 646*53ee8cc1Swenshuai.xi -51, -51, -51, -51, -51, -51, -51 647*53ee8cc1Swenshuai.xi }, 648*53ee8cc1Swenshuai.xi 649*53ee8cc1Swenshuai.xi { 650*53ee8cc1Swenshuai.xi 11, -52, -52, -52, -52, -52, -52, -52, -52, -52, 651*53ee8cc1Swenshuai.xi -52, -52, -52, -52, -52, -52, -52 652*53ee8cc1Swenshuai.xi }, 653*53ee8cc1Swenshuai.xi 654*53ee8cc1Swenshuai.xi { 655*53ee8cc1Swenshuai.xi 11, -53, -53, -53, -53, -53, -53, -53, -53, -53, 656*53ee8cc1Swenshuai.xi -53, -53, -53, -53, -53, -53, -53 657*53ee8cc1Swenshuai.xi }, 658*53ee8cc1Swenshuai.xi 659*53ee8cc1Swenshuai.xi { 660*53ee8cc1Swenshuai.xi 11, 54, 54, -54, 54, 54, 54, 54, 54, 54, 661*53ee8cc1Swenshuai.xi 54, 54, 54, 54, 54, 54, 54 662*53ee8cc1Swenshuai.xi 663*53ee8cc1Swenshuai.xi }, 664*53ee8cc1Swenshuai.xi 665*53ee8cc1Swenshuai.xi { 666*53ee8cc1Swenshuai.xi 11, -55, -55, -55, -55, -55, -55, -55, -55, -55, 667*53ee8cc1Swenshuai.xi -55, -55, -55, -55, -55, -55, -55 668*53ee8cc1Swenshuai.xi }, 669*53ee8cc1Swenshuai.xi 670*53ee8cc1Swenshuai.xi { 671*53ee8cc1Swenshuai.xi 11, -56, -56, -56, -56, -56, -56, -56, -56, -56, 672*53ee8cc1Swenshuai.xi -56, 60, 57, 57, -56, -56, -56 673*53ee8cc1Swenshuai.xi }, 674*53ee8cc1Swenshuai.xi 675*53ee8cc1Swenshuai.xi { 676*53ee8cc1Swenshuai.xi 11, -57, -57, -57, -57, -57, -57, -57, -57, -57, 677*53ee8cc1Swenshuai.xi -57, 57, 57, 57, -57, -57, -57 678*53ee8cc1Swenshuai.xi }, 679*53ee8cc1Swenshuai.xi 680*53ee8cc1Swenshuai.xi { 681*53ee8cc1Swenshuai.xi 11, -58, -58, -58, -58, -58, -58, -58, -58, -58, 682*53ee8cc1Swenshuai.xi -58, -58, -58, -58, -58, -58, -58 683*53ee8cc1Swenshuai.xi }, 684*53ee8cc1Swenshuai.xi 685*53ee8cc1Swenshuai.xi { 686*53ee8cc1Swenshuai.xi 11, -59, -59, -59, -59, -59, -59, -59, -59, -59, 687*53ee8cc1Swenshuai.xi -59, -59, -59, -59, -59, -59, -59 688*53ee8cc1Swenshuai.xi 689*53ee8cc1Swenshuai.xi }, 690*53ee8cc1Swenshuai.xi 691*53ee8cc1Swenshuai.xi { 692*53ee8cc1Swenshuai.xi 11, -60, -60, -60, -60, -60, -60, -60, -60, -60, 693*53ee8cc1Swenshuai.xi -60, 57, 57, 57, -60, -60, -60 694*53ee8cc1Swenshuai.xi }, 695*53ee8cc1Swenshuai.xi 696*53ee8cc1Swenshuai.xi } ; 697*53ee8cc1Swenshuai.xi 698*53ee8cc1Swenshuai.xistatic yy_state_type yy_get_previous_state (void ); 699*53ee8cc1Swenshuai.xistatic yy_state_type yy_try_NUL_trans (yy_state_type current_state ); 700*53ee8cc1Swenshuai.xistatic int yy_get_next_buffer (void ); 701*53ee8cc1Swenshuai.xistatic void yy_fatal_error (yyconst char msg[] ); 702*53ee8cc1Swenshuai.xi 703*53ee8cc1Swenshuai.xi/* Done after the current pattern has been matched and before the 704*53ee8cc1Swenshuai.xi * corresponding action - sets up zconftext. 705*53ee8cc1Swenshuai.xi */ 706*53ee8cc1Swenshuai.xi#define YY_DO_BEFORE_ACTION \ 707*53ee8cc1Swenshuai.xi (yytext_ptr) = yy_bp; \ 708*53ee8cc1Swenshuai.xi zconfleng = (size_t) (yy_cp - yy_bp); \ 709*53ee8cc1Swenshuai.xi (yy_hold_char) = *yy_cp; \ 710*53ee8cc1Swenshuai.xi *yy_cp = '\0'; \ 711*53ee8cc1Swenshuai.xi (yy_c_buf_p) = yy_cp; 712*53ee8cc1Swenshuai.xi 713*53ee8cc1Swenshuai.xi#define YY_NUM_RULES 33 714*53ee8cc1Swenshuai.xi#define YY_END_OF_BUFFER 34 715*53ee8cc1Swenshuai.xi/* This struct is not used in this scanner, 716*53ee8cc1Swenshuai.xi but its presence is necessary. */ 717*53ee8cc1Swenshuai.xistruct yy_trans_info 718*53ee8cc1Swenshuai.xi { 719*53ee8cc1Swenshuai.xi flex_int32_t yy_verify; 720*53ee8cc1Swenshuai.xi flex_int32_t yy_nxt; 721*53ee8cc1Swenshuai.xi }; 722*53ee8cc1Swenshuai.xistatic yyconst flex_int16_t yy_accept[61] = 723*53ee8cc1Swenshuai.xi { 0, 724*53ee8cc1Swenshuai.xi 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 725*53ee8cc1Swenshuai.xi 34, 5, 4, 2, 3, 7, 8, 6, 32, 29, 726*53ee8cc1Swenshuai.xi 31, 24, 28, 27, 26, 22, 17, 13, 16, 20, 727*53ee8cc1Swenshuai.xi 22, 11, 12, 19, 19, 14, 22, 22, 4, 2, 728*53ee8cc1Swenshuai.xi 3, 3, 1, 6, 32, 29, 31, 30, 24, 23, 729*53ee8cc1Swenshuai.xi 26, 25, 15, 20, 9, 19, 19, 21, 10, 18 730*53ee8cc1Swenshuai.xi } ; 731*53ee8cc1Swenshuai.xi 732*53ee8cc1Swenshuai.xistatic yyconst flex_int32_t yy_ec[256] = 733*53ee8cc1Swenshuai.xi { 0, 734*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 735*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 736*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 737*53ee8cc1Swenshuai.xi 1, 2, 4, 5, 6, 1, 1, 7, 8, 9, 738*53ee8cc1Swenshuai.xi 10, 1, 1, 1, 11, 12, 12, 13, 13, 13, 739*53ee8cc1Swenshuai.xi 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, 740*53ee8cc1Swenshuai.xi 14, 1, 1, 1, 13, 13, 13, 13, 13, 13, 741*53ee8cc1Swenshuai.xi 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 742*53ee8cc1Swenshuai.xi 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 743*53ee8cc1Swenshuai.xi 1, 15, 1, 1, 13, 1, 13, 13, 13, 13, 744*53ee8cc1Swenshuai.xi 745*53ee8cc1Swenshuai.xi 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 746*53ee8cc1Swenshuai.xi 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 747*53ee8cc1Swenshuai.xi 13, 13, 1, 16, 1, 1, 1, 1, 1, 1, 748*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 749*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 750*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 751*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 752*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 753*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 754*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 755*53ee8cc1Swenshuai.xi 756*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 757*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 758*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 759*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 760*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 761*53ee8cc1Swenshuai.xi 1, 1, 1, 1, 1 762*53ee8cc1Swenshuai.xi } ; 763*53ee8cc1Swenshuai.xi 764*53ee8cc1Swenshuai.xiextern int zconf_flex_debug; 765*53ee8cc1Swenshuai.xiint zconf_flex_debug = 0; 766*53ee8cc1Swenshuai.xi 767*53ee8cc1Swenshuai.xi/* The intent behind this definition is that it'll catch 768*53ee8cc1Swenshuai.xi * any uses of REJECT which flex missed. 769*53ee8cc1Swenshuai.xi */ 770*53ee8cc1Swenshuai.xi#define REJECT reject_used_but_not_detected 771*53ee8cc1Swenshuai.xi#define yymore() yymore_used_but_not_detected 772*53ee8cc1Swenshuai.xi#define YY_MORE_ADJ 0 773*53ee8cc1Swenshuai.xi#define YY_RESTORE_YY_MORE_OFFSET 774*53ee8cc1Swenshuai.xichar *zconftext; 775*53ee8cc1Swenshuai.xi#define YY_NO_INPUT 1 776*53ee8cc1Swenshuai.xi 777*53ee8cc1Swenshuai.xi/* 778*53ee8cc1Swenshuai.xi * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org> 779*53ee8cc1Swenshuai.xi * Released under the terms of the GNU GPL v2.0. 780*53ee8cc1Swenshuai.xi */ 781*53ee8cc1Swenshuai.xi 782*53ee8cc1Swenshuai.xi#include <limits.h> 783*53ee8cc1Swenshuai.xi#include <stdio.h> 784*53ee8cc1Swenshuai.xi#include <stdlib.h> 785*53ee8cc1Swenshuai.xi#include <string.h> 786*53ee8cc1Swenshuai.xi#include <unistd.h> 787*53ee8cc1Swenshuai.xi 788*53ee8cc1Swenshuai.xi#define LKC_DIRECT_LINK 789*53ee8cc1Swenshuai.xi#include "lkc.h" 790*53ee8cc1Swenshuai.xi 791*53ee8cc1Swenshuai.xi#define START_STRSIZE 16 792*53ee8cc1Swenshuai.xi 793*53ee8cc1Swenshuai.xistatic struct { 794*53ee8cc1Swenshuai.xi struct file *file; 795*53ee8cc1Swenshuai.xi int lineno; 796*53ee8cc1Swenshuai.xi} current_pos; 797*53ee8cc1Swenshuai.xi 798*53ee8cc1Swenshuai.xistatic char *text; 799*53ee8cc1Swenshuai.xistatic int text_size, text_asize; 800*53ee8cc1Swenshuai.xi 801*53ee8cc1Swenshuai.xistruct buffer { 802*53ee8cc1Swenshuai.xi struct buffer *parent; 803*53ee8cc1Swenshuai.xi YY_BUFFER_STATE state; 804*53ee8cc1Swenshuai.xi}; 805*53ee8cc1Swenshuai.xi 806*53ee8cc1Swenshuai.xistruct buffer *current_buf; 807*53ee8cc1Swenshuai.xi 808*53ee8cc1Swenshuai.xistatic int last_ts, first_ts; 809*53ee8cc1Swenshuai.xi 810*53ee8cc1Swenshuai.xistatic void zconf_endhelp(void); 811*53ee8cc1Swenshuai.xistatic void zconf_endfile(void); 812*53ee8cc1Swenshuai.xi 813*53ee8cc1Swenshuai.xistatic void new_string(void) 814*53ee8cc1Swenshuai.xi{ 815*53ee8cc1Swenshuai.xi text = malloc(START_STRSIZE); 816*53ee8cc1Swenshuai.xi text_asize = START_STRSIZE; 817*53ee8cc1Swenshuai.xi text_size = 0; 818*53ee8cc1Swenshuai.xi *text = 0; 819*53ee8cc1Swenshuai.xi} 820*53ee8cc1Swenshuai.xi 821*53ee8cc1Swenshuai.xistatic void append_string(const char *str, int size) 822*53ee8cc1Swenshuai.xi{ 823*53ee8cc1Swenshuai.xi int new_size = text_size + size + 1; 824*53ee8cc1Swenshuai.xi if (new_size > text_asize) { 825*53ee8cc1Swenshuai.xi new_size += START_STRSIZE - 1; 826*53ee8cc1Swenshuai.xi new_size &= -START_STRSIZE; 827*53ee8cc1Swenshuai.xi text = realloc(text, new_size); 828*53ee8cc1Swenshuai.xi text_asize = new_size; 829*53ee8cc1Swenshuai.xi } 830*53ee8cc1Swenshuai.xi memcpy(text + text_size, str, size); 831*53ee8cc1Swenshuai.xi text_size += size; 832*53ee8cc1Swenshuai.xi text[text_size] = 0; 833*53ee8cc1Swenshuai.xi} 834*53ee8cc1Swenshuai.xi 835*53ee8cc1Swenshuai.xistatic void alloc_string(const char *str, int size) 836*53ee8cc1Swenshuai.xi{ 837*53ee8cc1Swenshuai.xi text = malloc(size + 1); 838*53ee8cc1Swenshuai.xi memcpy(text, str, size); 839*53ee8cc1Swenshuai.xi text[size] = 0; 840*53ee8cc1Swenshuai.xi} 841*53ee8cc1Swenshuai.xi 842*53ee8cc1Swenshuai.xi#define INITIAL 0 843*53ee8cc1Swenshuai.xi#define COMMAND 1 844*53ee8cc1Swenshuai.xi#define HELP 2 845*53ee8cc1Swenshuai.xi#define STRING 3 846*53ee8cc1Swenshuai.xi#define PARAM 4 847*53ee8cc1Swenshuai.xi 848*53ee8cc1Swenshuai.xi#ifndef YY_NO_UNISTD_H 849*53ee8cc1Swenshuai.xi/* Special case for "unistd.h", since it is non-ANSI. We include it way 850*53ee8cc1Swenshuai.xi * down here because we want the user's section 1 to have been scanned first. 851*53ee8cc1Swenshuai.xi * The user has a chance to override it with an option. 852*53ee8cc1Swenshuai.xi */ 853*53ee8cc1Swenshuai.xi#include <unistd.h> 854*53ee8cc1Swenshuai.xi#endif 855*53ee8cc1Swenshuai.xi 856*53ee8cc1Swenshuai.xi#ifndef YY_EXTRA_TYPE 857*53ee8cc1Swenshuai.xi#define YY_EXTRA_TYPE void * 858*53ee8cc1Swenshuai.xi#endif 859*53ee8cc1Swenshuai.xi 860*53ee8cc1Swenshuai.xistatic int yy_init_globals (void ); 861*53ee8cc1Swenshuai.xi 862*53ee8cc1Swenshuai.xi/* Accessor methods to globals. 863*53ee8cc1Swenshuai.xi These are made visible to non-reentrant scanners for convenience. */ 864*53ee8cc1Swenshuai.xi 865*53ee8cc1Swenshuai.xiint zconflex_destroy (void ); 866*53ee8cc1Swenshuai.xi 867*53ee8cc1Swenshuai.xiint zconfget_debug (void ); 868*53ee8cc1Swenshuai.xi 869*53ee8cc1Swenshuai.xivoid zconfset_debug (int debug_flag ); 870*53ee8cc1Swenshuai.xi 871*53ee8cc1Swenshuai.xiYY_EXTRA_TYPE zconfget_extra (void ); 872*53ee8cc1Swenshuai.xi 873*53ee8cc1Swenshuai.xivoid zconfset_extra (YY_EXTRA_TYPE user_defined ); 874*53ee8cc1Swenshuai.xi 875*53ee8cc1Swenshuai.xiFILE *zconfget_in (void ); 876*53ee8cc1Swenshuai.xi 877*53ee8cc1Swenshuai.xivoid zconfset_in (FILE * in_str ); 878*53ee8cc1Swenshuai.xi 879*53ee8cc1Swenshuai.xiFILE *zconfget_out (void ); 880*53ee8cc1Swenshuai.xi 881*53ee8cc1Swenshuai.xivoid zconfset_out (FILE * out_str ); 882*53ee8cc1Swenshuai.xi 883*53ee8cc1Swenshuai.xiint zconfget_leng (void ); 884*53ee8cc1Swenshuai.xi 885*53ee8cc1Swenshuai.xichar *zconfget_text (void ); 886*53ee8cc1Swenshuai.xi 887*53ee8cc1Swenshuai.xiint zconfget_lineno (void ); 888*53ee8cc1Swenshuai.xi 889*53ee8cc1Swenshuai.xivoid zconfset_lineno (int line_number ); 890*53ee8cc1Swenshuai.xi 891*53ee8cc1Swenshuai.xi/* Macros after this point can all be overridden by user definitions in 892*53ee8cc1Swenshuai.xi * section 1. 893*53ee8cc1Swenshuai.xi */ 894*53ee8cc1Swenshuai.xi 895*53ee8cc1Swenshuai.xi#ifndef YY_SKIP_YYWRAP 896*53ee8cc1Swenshuai.xi#ifdef __cplusplus 897*53ee8cc1Swenshuai.xiextern "C" int zconfwrap (void ); 898*53ee8cc1Swenshuai.xi#else 899*53ee8cc1Swenshuai.xiextern int zconfwrap (void ); 900*53ee8cc1Swenshuai.xi#endif 901*53ee8cc1Swenshuai.xi#endif 902*53ee8cc1Swenshuai.xi 903*53ee8cc1Swenshuai.xi static void yyunput (int c,char *buf_ptr ); 904*53ee8cc1Swenshuai.xi 905*53ee8cc1Swenshuai.xi#ifndef yytext_ptr 906*53ee8cc1Swenshuai.xistatic void yy_flex_strncpy (char *,yyconst char *,int ); 907*53ee8cc1Swenshuai.xi#endif 908*53ee8cc1Swenshuai.xi 909*53ee8cc1Swenshuai.xi#ifdef YY_NEED_STRLEN 910*53ee8cc1Swenshuai.xistatic int yy_flex_strlen (yyconst char * ); 911*53ee8cc1Swenshuai.xi#endif 912*53ee8cc1Swenshuai.xi 913*53ee8cc1Swenshuai.xi#ifndef YY_NO_INPUT 914*53ee8cc1Swenshuai.xi 915*53ee8cc1Swenshuai.xi#ifdef __cplusplus 916*53ee8cc1Swenshuai.xistatic int yyinput (void ); 917*53ee8cc1Swenshuai.xi#else 918*53ee8cc1Swenshuai.xistatic int input (void ); 919*53ee8cc1Swenshuai.xi#endif 920*53ee8cc1Swenshuai.xi 921*53ee8cc1Swenshuai.xi#endif 922*53ee8cc1Swenshuai.xi 923*53ee8cc1Swenshuai.xi/* Amount of stuff to slurp up with each read. */ 924*53ee8cc1Swenshuai.xi#ifndef YY_READ_BUF_SIZE 925*53ee8cc1Swenshuai.xi#ifdef __ia64__ 926*53ee8cc1Swenshuai.xi/* On IA-64, the buffer size is 16k, not 8k */ 927*53ee8cc1Swenshuai.xi#define YY_READ_BUF_SIZE 16384 928*53ee8cc1Swenshuai.xi#else 929*53ee8cc1Swenshuai.xi#define YY_READ_BUF_SIZE 8192 930*53ee8cc1Swenshuai.xi#endif /* __ia64__ */ 931*53ee8cc1Swenshuai.xi#endif 932*53ee8cc1Swenshuai.xi 933*53ee8cc1Swenshuai.xi/* Copy whatever the last rule matched to the standard output. */ 934*53ee8cc1Swenshuai.xi#ifndef ECHO 935*53ee8cc1Swenshuai.xi/* This used to be an fputs(), but since the string might contain NUL's, 936*53ee8cc1Swenshuai.xi * we now use fwrite(). 937*53ee8cc1Swenshuai.xi */ 938*53ee8cc1Swenshuai.xi#define ECHO do { if (fwrite( zconftext, zconfleng, 1, zconfout )) {} } while (0) 939*53ee8cc1Swenshuai.xi#endif 940*53ee8cc1Swenshuai.xi 941*53ee8cc1Swenshuai.xi/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 942*53ee8cc1Swenshuai.xi * is returned in "result". 943*53ee8cc1Swenshuai.xi */ 944*53ee8cc1Swenshuai.xi#ifndef YY_INPUT 945*53ee8cc1Swenshuai.xi#define YY_INPUT(buf,result,max_size) \ 946*53ee8cc1Swenshuai.xi errno=0; \ 947*53ee8cc1Swenshuai.xi while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \ 948*53ee8cc1Swenshuai.xi { \ 949*53ee8cc1Swenshuai.xi if( errno != EINTR) \ 950*53ee8cc1Swenshuai.xi { \ 951*53ee8cc1Swenshuai.xi YY_FATAL_ERROR( "input in flex scanner failed" ); \ 952*53ee8cc1Swenshuai.xi break; \ 953*53ee8cc1Swenshuai.xi } \ 954*53ee8cc1Swenshuai.xi errno=0; \ 955*53ee8cc1Swenshuai.xi clearerr(zconfin); \ 956*53ee8cc1Swenshuai.xi }\ 957*53ee8cc1Swenshuai.xi\ 958*53ee8cc1Swenshuai.xi 959*53ee8cc1Swenshuai.xi#endif 960*53ee8cc1Swenshuai.xi 961*53ee8cc1Swenshuai.xi/* No semi-colon after return; correct usage is to write "yyterminate();" - 962*53ee8cc1Swenshuai.xi * we don't want an extra ';' after the "return" because that will cause 963*53ee8cc1Swenshuai.xi * some compilers to complain about unreachable statements. 964*53ee8cc1Swenshuai.xi */ 965*53ee8cc1Swenshuai.xi#ifndef yyterminate 966*53ee8cc1Swenshuai.xi#define yyterminate() return YY_NULL 967*53ee8cc1Swenshuai.xi#endif 968*53ee8cc1Swenshuai.xi 969*53ee8cc1Swenshuai.xi/* Number of entries by which start-condition stack grows. */ 970*53ee8cc1Swenshuai.xi#ifndef YY_START_STACK_INCR 971*53ee8cc1Swenshuai.xi#define YY_START_STACK_INCR 25 972*53ee8cc1Swenshuai.xi#endif 973*53ee8cc1Swenshuai.xi 974*53ee8cc1Swenshuai.xi/* Report a fatal error. */ 975*53ee8cc1Swenshuai.xi#ifndef YY_FATAL_ERROR 976*53ee8cc1Swenshuai.xi#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) 977*53ee8cc1Swenshuai.xi#endif 978*53ee8cc1Swenshuai.xi 979*53ee8cc1Swenshuai.xi/* end tables serialization structures and prototypes */ 980*53ee8cc1Swenshuai.xi 981*53ee8cc1Swenshuai.xi/* Default declaration of generated scanner - a define so the user can 982*53ee8cc1Swenshuai.xi * easily add parameters. 983*53ee8cc1Swenshuai.xi */ 984*53ee8cc1Swenshuai.xi#ifndef YY_DECL 985*53ee8cc1Swenshuai.xi#define YY_DECL_IS_OURS 1 986*53ee8cc1Swenshuai.xi 987*53ee8cc1Swenshuai.xiextern int zconflex (void); 988*53ee8cc1Swenshuai.xi 989*53ee8cc1Swenshuai.xi#define YY_DECL int zconflex (void) 990*53ee8cc1Swenshuai.xi#endif /* !YY_DECL */ 991*53ee8cc1Swenshuai.xi 992*53ee8cc1Swenshuai.xi/* Code executed at the beginning of each rule, after zconftext and zconfleng 993*53ee8cc1Swenshuai.xi * have been set up. 994*53ee8cc1Swenshuai.xi */ 995*53ee8cc1Swenshuai.xi#ifndef YY_USER_ACTION 996*53ee8cc1Swenshuai.xi#define YY_USER_ACTION 997*53ee8cc1Swenshuai.xi#endif 998*53ee8cc1Swenshuai.xi 999*53ee8cc1Swenshuai.xi/* Code executed at the end of each rule. */ 1000*53ee8cc1Swenshuai.xi#ifndef YY_BREAK 1001*53ee8cc1Swenshuai.xi#define YY_BREAK break; 1002*53ee8cc1Swenshuai.xi#endif 1003*53ee8cc1Swenshuai.xi 1004*53ee8cc1Swenshuai.xi#define YY_RULE_SETUP \ 1005*53ee8cc1Swenshuai.xi YY_USER_ACTION 1006*53ee8cc1Swenshuai.xi 1007*53ee8cc1Swenshuai.xi/** The main scanner function which does all the work. 1008*53ee8cc1Swenshuai.xi */ 1009*53ee8cc1Swenshuai.xiYY_DECL 1010*53ee8cc1Swenshuai.xi{ 1011*53ee8cc1Swenshuai.xi register yy_state_type yy_current_state; 1012*53ee8cc1Swenshuai.xi register char *yy_cp, *yy_bp; 1013*53ee8cc1Swenshuai.xi register int yy_act; 1014*53ee8cc1Swenshuai.xi 1015*53ee8cc1Swenshuai.xi int str = 0; 1016*53ee8cc1Swenshuai.xi int ts, i; 1017*53ee8cc1Swenshuai.xi 1018*53ee8cc1Swenshuai.xi if ( !(yy_init) ) 1019*53ee8cc1Swenshuai.xi { 1020*53ee8cc1Swenshuai.xi (yy_init) = 1; 1021*53ee8cc1Swenshuai.xi 1022*53ee8cc1Swenshuai.xi#ifdef YY_USER_INIT 1023*53ee8cc1Swenshuai.xi YY_USER_INIT; 1024*53ee8cc1Swenshuai.xi#endif 1025*53ee8cc1Swenshuai.xi 1026*53ee8cc1Swenshuai.xi if ( ! (yy_start) ) 1027*53ee8cc1Swenshuai.xi (yy_start) = 1; /* first start state */ 1028*53ee8cc1Swenshuai.xi 1029*53ee8cc1Swenshuai.xi if ( ! zconfin ) 1030*53ee8cc1Swenshuai.xi zconfin = stdin; 1031*53ee8cc1Swenshuai.xi 1032*53ee8cc1Swenshuai.xi if ( ! zconfout ) 1033*53ee8cc1Swenshuai.xi zconfout = stdout; 1034*53ee8cc1Swenshuai.xi 1035*53ee8cc1Swenshuai.xi if ( ! YY_CURRENT_BUFFER ) { 1036*53ee8cc1Swenshuai.xi zconfensure_buffer_stack (); 1037*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE = 1038*53ee8cc1Swenshuai.xi zconf_create_buffer(zconfin,YY_BUF_SIZE ); 1039*53ee8cc1Swenshuai.xi } 1040*53ee8cc1Swenshuai.xi 1041*53ee8cc1Swenshuai.xi zconf_load_buffer_state( ); 1042*53ee8cc1Swenshuai.xi } 1043*53ee8cc1Swenshuai.xi 1044*53ee8cc1Swenshuai.xi while ( 1 ) /* loops until end-of-file is reached */ 1045*53ee8cc1Swenshuai.xi { 1046*53ee8cc1Swenshuai.xi yy_cp = (yy_c_buf_p); 1047*53ee8cc1Swenshuai.xi 1048*53ee8cc1Swenshuai.xi /* Support of zconftext. */ 1049*53ee8cc1Swenshuai.xi *yy_cp = (yy_hold_char); 1050*53ee8cc1Swenshuai.xi 1051*53ee8cc1Swenshuai.xi /* yy_bp points to the position in yy_ch_buf of the start of 1052*53ee8cc1Swenshuai.xi * the current run. 1053*53ee8cc1Swenshuai.xi */ 1054*53ee8cc1Swenshuai.xi yy_bp = yy_cp; 1055*53ee8cc1Swenshuai.xi 1056*53ee8cc1Swenshuai.xi yy_current_state = (yy_start); 1057*53ee8cc1Swenshuai.xiyy_match: 1058*53ee8cc1Swenshuai.xi while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) 1059*53ee8cc1Swenshuai.xi ++yy_cp; 1060*53ee8cc1Swenshuai.xi 1061*53ee8cc1Swenshuai.xi yy_current_state = -yy_current_state; 1062*53ee8cc1Swenshuai.xi 1063*53ee8cc1Swenshuai.xiyy_find_action: 1064*53ee8cc1Swenshuai.xi yy_act = yy_accept[yy_current_state]; 1065*53ee8cc1Swenshuai.xi 1066*53ee8cc1Swenshuai.xi YY_DO_BEFORE_ACTION; 1067*53ee8cc1Swenshuai.xi 1068*53ee8cc1Swenshuai.xido_action: /* This label is used only to access EOF actions. */ 1069*53ee8cc1Swenshuai.xi 1070*53ee8cc1Swenshuai.xi switch ( yy_act ) 1071*53ee8cc1Swenshuai.xi { /* beginning of action switch */ 1072*53ee8cc1Swenshuai.xicase 1: 1073*53ee8cc1Swenshuai.xi/* rule 1 can match eol */ 1074*53ee8cc1Swenshuai.xicase 2: 1075*53ee8cc1Swenshuai.xi/* rule 2 can match eol */ 1076*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1077*53ee8cc1Swenshuai.xi{ 1078*53ee8cc1Swenshuai.xi current_file->lineno++; 1079*53ee8cc1Swenshuai.xi return T_EOL; 1080*53ee8cc1Swenshuai.xi} 1081*53ee8cc1Swenshuai.xi YY_BREAK 1082*53ee8cc1Swenshuai.xicase 3: 1083*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1084*53ee8cc1Swenshuai.xi 1085*53ee8cc1Swenshuai.xi YY_BREAK 1086*53ee8cc1Swenshuai.xicase 4: 1087*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1088*53ee8cc1Swenshuai.xi{ 1089*53ee8cc1Swenshuai.xi BEGIN(COMMAND); 1090*53ee8cc1Swenshuai.xi} 1091*53ee8cc1Swenshuai.xi YY_BREAK 1092*53ee8cc1Swenshuai.xicase 5: 1093*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1094*53ee8cc1Swenshuai.xi{ 1095*53ee8cc1Swenshuai.xi unput(zconftext[0]); 1096*53ee8cc1Swenshuai.xi BEGIN(COMMAND); 1097*53ee8cc1Swenshuai.xi} 1098*53ee8cc1Swenshuai.xi YY_BREAK 1099*53ee8cc1Swenshuai.xi 1100*53ee8cc1Swenshuai.xicase 6: 1101*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1102*53ee8cc1Swenshuai.xi{ 1103*53ee8cc1Swenshuai.xi struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng); 1104*53ee8cc1Swenshuai.xi BEGIN(PARAM); 1105*53ee8cc1Swenshuai.xi current_pos.file = current_file; 1106*53ee8cc1Swenshuai.xi current_pos.lineno = current_file->lineno; 1107*53ee8cc1Swenshuai.xi if (id && id->flags & TF_COMMAND) { 1108*53ee8cc1Swenshuai.xi zconflval.id = id; 1109*53ee8cc1Swenshuai.xi return id->token; 1110*53ee8cc1Swenshuai.xi } 1111*53ee8cc1Swenshuai.xi alloc_string(zconftext, zconfleng); 1112*53ee8cc1Swenshuai.xi zconflval.string = text; 1113*53ee8cc1Swenshuai.xi return T_WORD; 1114*53ee8cc1Swenshuai.xi } 1115*53ee8cc1Swenshuai.xi YY_BREAK 1116*53ee8cc1Swenshuai.xicase 7: 1117*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1118*53ee8cc1Swenshuai.xi 1119*53ee8cc1Swenshuai.xi YY_BREAK 1120*53ee8cc1Swenshuai.xicase 8: 1121*53ee8cc1Swenshuai.xi/* rule 8 can match eol */ 1122*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1123*53ee8cc1Swenshuai.xi{ 1124*53ee8cc1Swenshuai.xi BEGIN(INITIAL); 1125*53ee8cc1Swenshuai.xi current_file->lineno++; 1126*53ee8cc1Swenshuai.xi return T_EOL; 1127*53ee8cc1Swenshuai.xi } 1128*53ee8cc1Swenshuai.xi YY_BREAK 1129*53ee8cc1Swenshuai.xi 1130*53ee8cc1Swenshuai.xicase 9: 1131*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1132*53ee8cc1Swenshuai.xireturn T_AND; 1133*53ee8cc1Swenshuai.xi YY_BREAK 1134*53ee8cc1Swenshuai.xicase 10: 1135*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1136*53ee8cc1Swenshuai.xireturn T_OR; 1137*53ee8cc1Swenshuai.xi YY_BREAK 1138*53ee8cc1Swenshuai.xicase 11: 1139*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1140*53ee8cc1Swenshuai.xireturn T_OPEN_PAREN; 1141*53ee8cc1Swenshuai.xi YY_BREAK 1142*53ee8cc1Swenshuai.xicase 12: 1143*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1144*53ee8cc1Swenshuai.xireturn T_CLOSE_PAREN; 1145*53ee8cc1Swenshuai.xi YY_BREAK 1146*53ee8cc1Swenshuai.xicase 13: 1147*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1148*53ee8cc1Swenshuai.xireturn T_NOT; 1149*53ee8cc1Swenshuai.xi YY_BREAK 1150*53ee8cc1Swenshuai.xicase 14: 1151*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1152*53ee8cc1Swenshuai.xireturn T_EQUAL; 1153*53ee8cc1Swenshuai.xi YY_BREAK 1154*53ee8cc1Swenshuai.xicase 15: 1155*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1156*53ee8cc1Swenshuai.xireturn T_UNEQUAL; 1157*53ee8cc1Swenshuai.xi YY_BREAK 1158*53ee8cc1Swenshuai.xicase 16: 1159*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1160*53ee8cc1Swenshuai.xi{ 1161*53ee8cc1Swenshuai.xi str = zconftext[0]; 1162*53ee8cc1Swenshuai.xi new_string(); 1163*53ee8cc1Swenshuai.xi BEGIN(STRING); 1164*53ee8cc1Swenshuai.xi } 1165*53ee8cc1Swenshuai.xi YY_BREAK 1166*53ee8cc1Swenshuai.xicase 17: 1167*53ee8cc1Swenshuai.xi/* rule 17 can match eol */ 1168*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1169*53ee8cc1Swenshuai.xiBEGIN(INITIAL); current_file->lineno++; return T_EOL; 1170*53ee8cc1Swenshuai.xi YY_BREAK 1171*53ee8cc1Swenshuai.xicase 18: 1172*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1173*53ee8cc1Swenshuai.xi/* ignore */ 1174*53ee8cc1Swenshuai.xi YY_BREAK 1175*53ee8cc1Swenshuai.xicase 19: 1176*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1177*53ee8cc1Swenshuai.xi{ 1178*53ee8cc1Swenshuai.xi struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng); 1179*53ee8cc1Swenshuai.xi if (id && id->flags & TF_PARAM) { 1180*53ee8cc1Swenshuai.xi zconflval.id = id; 1181*53ee8cc1Swenshuai.xi return id->token; 1182*53ee8cc1Swenshuai.xi } 1183*53ee8cc1Swenshuai.xi alloc_string(zconftext, zconfleng); 1184*53ee8cc1Swenshuai.xi zconflval.string = text; 1185*53ee8cc1Swenshuai.xi return T_WORD; 1186*53ee8cc1Swenshuai.xi } 1187*53ee8cc1Swenshuai.xi YY_BREAK 1188*53ee8cc1Swenshuai.xicase 20: 1189*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1190*53ee8cc1Swenshuai.xi/* comment */ 1191*53ee8cc1Swenshuai.xi YY_BREAK 1192*53ee8cc1Swenshuai.xicase 21: 1193*53ee8cc1Swenshuai.xi/* rule 21 can match eol */ 1194*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1195*53ee8cc1Swenshuai.xicurrent_file->lineno++; 1196*53ee8cc1Swenshuai.xi YY_BREAK 1197*53ee8cc1Swenshuai.xicase 22: 1198*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1199*53ee8cc1Swenshuai.xi 1200*53ee8cc1Swenshuai.xi YY_BREAK 1201*53ee8cc1Swenshuai.xicase YY_STATE_EOF(PARAM): 1202*53ee8cc1Swenshuai.xi{ 1203*53ee8cc1Swenshuai.xi BEGIN(INITIAL); 1204*53ee8cc1Swenshuai.xi } 1205*53ee8cc1Swenshuai.xi YY_BREAK 1206*53ee8cc1Swenshuai.xi 1207*53ee8cc1Swenshuai.xicase 23: 1208*53ee8cc1Swenshuai.xi/* rule 23 can match eol */ 1209*53ee8cc1Swenshuai.xi*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ 1210*53ee8cc1Swenshuai.xi(yy_c_buf_p) = yy_cp -= 1; 1211*53ee8cc1Swenshuai.xiYY_DO_BEFORE_ACTION; /* set up zconftext again */ 1212*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1213*53ee8cc1Swenshuai.xi{ 1214*53ee8cc1Swenshuai.xi append_string(zconftext, zconfleng); 1215*53ee8cc1Swenshuai.xi zconflval.string = text; 1216*53ee8cc1Swenshuai.xi return T_WORD_QUOTE; 1217*53ee8cc1Swenshuai.xi } 1218*53ee8cc1Swenshuai.xi YY_BREAK 1219*53ee8cc1Swenshuai.xicase 24: 1220*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1221*53ee8cc1Swenshuai.xi{ 1222*53ee8cc1Swenshuai.xi append_string(zconftext, zconfleng); 1223*53ee8cc1Swenshuai.xi } 1224*53ee8cc1Swenshuai.xi YY_BREAK 1225*53ee8cc1Swenshuai.xicase 25: 1226*53ee8cc1Swenshuai.xi/* rule 25 can match eol */ 1227*53ee8cc1Swenshuai.xi*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ 1228*53ee8cc1Swenshuai.xi(yy_c_buf_p) = yy_cp -= 1; 1229*53ee8cc1Swenshuai.xiYY_DO_BEFORE_ACTION; /* set up zconftext again */ 1230*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1231*53ee8cc1Swenshuai.xi{ 1232*53ee8cc1Swenshuai.xi append_string(zconftext + 1, zconfleng - 1); 1233*53ee8cc1Swenshuai.xi zconflval.string = text; 1234*53ee8cc1Swenshuai.xi return T_WORD_QUOTE; 1235*53ee8cc1Swenshuai.xi } 1236*53ee8cc1Swenshuai.xi YY_BREAK 1237*53ee8cc1Swenshuai.xicase 26: 1238*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1239*53ee8cc1Swenshuai.xi{ 1240*53ee8cc1Swenshuai.xi append_string(zconftext + 1, zconfleng - 1); 1241*53ee8cc1Swenshuai.xi } 1242*53ee8cc1Swenshuai.xi YY_BREAK 1243*53ee8cc1Swenshuai.xicase 27: 1244*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1245*53ee8cc1Swenshuai.xi{ 1246*53ee8cc1Swenshuai.xi if (str == zconftext[0]) { 1247*53ee8cc1Swenshuai.xi BEGIN(PARAM); 1248*53ee8cc1Swenshuai.xi zconflval.string = text; 1249*53ee8cc1Swenshuai.xi return T_WORD_QUOTE; 1250*53ee8cc1Swenshuai.xi } else 1251*53ee8cc1Swenshuai.xi append_string(zconftext, 1); 1252*53ee8cc1Swenshuai.xi } 1253*53ee8cc1Swenshuai.xi YY_BREAK 1254*53ee8cc1Swenshuai.xicase 28: 1255*53ee8cc1Swenshuai.xi/* rule 28 can match eol */ 1256*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1257*53ee8cc1Swenshuai.xi{ 1258*53ee8cc1Swenshuai.xi printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); 1259*53ee8cc1Swenshuai.xi current_file->lineno++; 1260*53ee8cc1Swenshuai.xi BEGIN(INITIAL); 1261*53ee8cc1Swenshuai.xi return T_EOL; 1262*53ee8cc1Swenshuai.xi } 1263*53ee8cc1Swenshuai.xi YY_BREAK 1264*53ee8cc1Swenshuai.xicase YY_STATE_EOF(STRING): 1265*53ee8cc1Swenshuai.xi{ 1266*53ee8cc1Swenshuai.xi BEGIN(INITIAL); 1267*53ee8cc1Swenshuai.xi } 1268*53ee8cc1Swenshuai.xi YY_BREAK 1269*53ee8cc1Swenshuai.xi 1270*53ee8cc1Swenshuai.xicase 29: 1271*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1272*53ee8cc1Swenshuai.xi{ 1273*53ee8cc1Swenshuai.xi ts = 0; 1274*53ee8cc1Swenshuai.xi for (i = 0; i < zconfleng; i++) { 1275*53ee8cc1Swenshuai.xi if (zconftext[i] == '\t') 1276*53ee8cc1Swenshuai.xi ts = (ts & ~7) + 8; 1277*53ee8cc1Swenshuai.xi else 1278*53ee8cc1Swenshuai.xi ts++; 1279*53ee8cc1Swenshuai.xi } 1280*53ee8cc1Swenshuai.xi last_ts = ts; 1281*53ee8cc1Swenshuai.xi if (first_ts) { 1282*53ee8cc1Swenshuai.xi if (ts < first_ts) { 1283*53ee8cc1Swenshuai.xi zconf_endhelp(); 1284*53ee8cc1Swenshuai.xi return T_HELPTEXT; 1285*53ee8cc1Swenshuai.xi } 1286*53ee8cc1Swenshuai.xi ts -= first_ts; 1287*53ee8cc1Swenshuai.xi while (ts > 8) { 1288*53ee8cc1Swenshuai.xi append_string(" ", 8); 1289*53ee8cc1Swenshuai.xi ts -= 8; 1290*53ee8cc1Swenshuai.xi } 1291*53ee8cc1Swenshuai.xi append_string(" ", ts); 1292*53ee8cc1Swenshuai.xi } 1293*53ee8cc1Swenshuai.xi } 1294*53ee8cc1Swenshuai.xi YY_BREAK 1295*53ee8cc1Swenshuai.xicase 30: 1296*53ee8cc1Swenshuai.xi/* rule 30 can match eol */ 1297*53ee8cc1Swenshuai.xi*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ 1298*53ee8cc1Swenshuai.xi(yy_c_buf_p) = yy_cp -= 1; 1299*53ee8cc1Swenshuai.xiYY_DO_BEFORE_ACTION; /* set up zconftext again */ 1300*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1301*53ee8cc1Swenshuai.xi{ 1302*53ee8cc1Swenshuai.xi current_file->lineno++; 1303*53ee8cc1Swenshuai.xi zconf_endhelp(); 1304*53ee8cc1Swenshuai.xi return T_HELPTEXT; 1305*53ee8cc1Swenshuai.xi } 1306*53ee8cc1Swenshuai.xi YY_BREAK 1307*53ee8cc1Swenshuai.xicase 31: 1308*53ee8cc1Swenshuai.xi/* rule 31 can match eol */ 1309*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1310*53ee8cc1Swenshuai.xi{ 1311*53ee8cc1Swenshuai.xi current_file->lineno++; 1312*53ee8cc1Swenshuai.xi append_string("\n", 1); 1313*53ee8cc1Swenshuai.xi } 1314*53ee8cc1Swenshuai.xi YY_BREAK 1315*53ee8cc1Swenshuai.xicase 32: 1316*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1317*53ee8cc1Swenshuai.xi{ 1318*53ee8cc1Swenshuai.xi while (zconfleng) { 1319*53ee8cc1Swenshuai.xi if ((zconftext[zconfleng-1] != ' ') && (zconftext[zconfleng-1] != '\t')) 1320*53ee8cc1Swenshuai.xi break; 1321*53ee8cc1Swenshuai.xi zconfleng--; 1322*53ee8cc1Swenshuai.xi } 1323*53ee8cc1Swenshuai.xi append_string(zconftext, zconfleng); 1324*53ee8cc1Swenshuai.xi if (!first_ts) 1325*53ee8cc1Swenshuai.xi first_ts = last_ts; 1326*53ee8cc1Swenshuai.xi } 1327*53ee8cc1Swenshuai.xi YY_BREAK 1328*53ee8cc1Swenshuai.xicase YY_STATE_EOF(HELP): 1329*53ee8cc1Swenshuai.xi{ 1330*53ee8cc1Swenshuai.xi zconf_endhelp(); 1331*53ee8cc1Swenshuai.xi return T_HELPTEXT; 1332*53ee8cc1Swenshuai.xi } 1333*53ee8cc1Swenshuai.xi YY_BREAK 1334*53ee8cc1Swenshuai.xi 1335*53ee8cc1Swenshuai.xicase YY_STATE_EOF(INITIAL): 1336*53ee8cc1Swenshuai.xicase YY_STATE_EOF(COMMAND): 1337*53ee8cc1Swenshuai.xi{ 1338*53ee8cc1Swenshuai.xi if (current_file) { 1339*53ee8cc1Swenshuai.xi zconf_endfile(); 1340*53ee8cc1Swenshuai.xi return T_EOL; 1341*53ee8cc1Swenshuai.xi } 1342*53ee8cc1Swenshuai.xi fclose(zconfin); 1343*53ee8cc1Swenshuai.xi yyterminate(); 1344*53ee8cc1Swenshuai.xi} 1345*53ee8cc1Swenshuai.xi YY_BREAK 1346*53ee8cc1Swenshuai.xicase 33: 1347*53ee8cc1Swenshuai.xiYY_RULE_SETUP 1348*53ee8cc1Swenshuai.xiYY_FATAL_ERROR( "flex scanner jammed" ); 1349*53ee8cc1Swenshuai.xi YY_BREAK 1350*53ee8cc1Swenshuai.xi 1351*53ee8cc1Swenshuai.xi case YY_END_OF_BUFFER: 1352*53ee8cc1Swenshuai.xi { 1353*53ee8cc1Swenshuai.xi /* Amount of text matched not including the EOB char. */ 1354*53ee8cc1Swenshuai.xi int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; 1355*53ee8cc1Swenshuai.xi 1356*53ee8cc1Swenshuai.xi /* Undo the effects of YY_DO_BEFORE_ACTION. */ 1357*53ee8cc1Swenshuai.xi *yy_cp = (yy_hold_char); 1358*53ee8cc1Swenshuai.xi YY_RESTORE_YY_MORE_OFFSET 1359*53ee8cc1Swenshuai.xi 1360*53ee8cc1Swenshuai.xi if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) 1361*53ee8cc1Swenshuai.xi { 1362*53ee8cc1Swenshuai.xi /* We're scanning a new file or input source. It's 1363*53ee8cc1Swenshuai.xi * possible that this happened because the user 1364*53ee8cc1Swenshuai.xi * just pointed zconfin at a new source and called 1365*53ee8cc1Swenshuai.xi * zconflex(). If so, then we have to assure 1366*53ee8cc1Swenshuai.xi * consistency between YY_CURRENT_BUFFER and our 1367*53ee8cc1Swenshuai.xi * globals. Here is the right place to do so, because 1368*53ee8cc1Swenshuai.xi * this is the first action (other than possibly a 1369*53ee8cc1Swenshuai.xi * back-up) that will match for the new input source. 1370*53ee8cc1Swenshuai.xi */ 1371*53ee8cc1Swenshuai.xi (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 1372*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin; 1373*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; 1374*53ee8cc1Swenshuai.xi } 1375*53ee8cc1Swenshuai.xi 1376*53ee8cc1Swenshuai.xi /* Note that here we test for yy_c_buf_p "<=" to the position 1377*53ee8cc1Swenshuai.xi * of the first EOB in the buffer, since yy_c_buf_p will 1378*53ee8cc1Swenshuai.xi * already have been incremented past the NUL character 1379*53ee8cc1Swenshuai.xi * (since all states make transitions on EOB to the 1380*53ee8cc1Swenshuai.xi * end-of-buffer state). Contrast this with the test 1381*53ee8cc1Swenshuai.xi * in input(). 1382*53ee8cc1Swenshuai.xi */ 1383*53ee8cc1Swenshuai.xi if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 1384*53ee8cc1Swenshuai.xi { /* This was really a NUL. */ 1385*53ee8cc1Swenshuai.xi yy_state_type yy_next_state; 1386*53ee8cc1Swenshuai.xi 1387*53ee8cc1Swenshuai.xi (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; 1388*53ee8cc1Swenshuai.xi 1389*53ee8cc1Swenshuai.xi yy_current_state = yy_get_previous_state( ); 1390*53ee8cc1Swenshuai.xi 1391*53ee8cc1Swenshuai.xi /* Okay, we're now positioned to make the NUL 1392*53ee8cc1Swenshuai.xi * transition. We couldn't have 1393*53ee8cc1Swenshuai.xi * yy_get_previous_state() go ahead and do it 1394*53ee8cc1Swenshuai.xi * for us because it doesn't know how to deal 1395*53ee8cc1Swenshuai.xi * with the possibility of jamming (and we don't 1396*53ee8cc1Swenshuai.xi * want to build jamming into it because then it 1397*53ee8cc1Swenshuai.xi * will run more slowly). 1398*53ee8cc1Swenshuai.xi */ 1399*53ee8cc1Swenshuai.xi 1400*53ee8cc1Swenshuai.xi yy_next_state = yy_try_NUL_trans( yy_current_state ); 1401*53ee8cc1Swenshuai.xi 1402*53ee8cc1Swenshuai.xi yy_bp = (yytext_ptr) + YY_MORE_ADJ; 1403*53ee8cc1Swenshuai.xi 1404*53ee8cc1Swenshuai.xi if ( yy_next_state ) 1405*53ee8cc1Swenshuai.xi { 1406*53ee8cc1Swenshuai.xi /* Consume the NUL. */ 1407*53ee8cc1Swenshuai.xi yy_cp = ++(yy_c_buf_p); 1408*53ee8cc1Swenshuai.xi yy_current_state = yy_next_state; 1409*53ee8cc1Swenshuai.xi goto yy_match; 1410*53ee8cc1Swenshuai.xi } 1411*53ee8cc1Swenshuai.xi 1412*53ee8cc1Swenshuai.xi else 1413*53ee8cc1Swenshuai.xi { 1414*53ee8cc1Swenshuai.xi yy_cp = (yy_c_buf_p); 1415*53ee8cc1Swenshuai.xi goto yy_find_action; 1416*53ee8cc1Swenshuai.xi } 1417*53ee8cc1Swenshuai.xi } 1418*53ee8cc1Swenshuai.xi 1419*53ee8cc1Swenshuai.xi else switch ( yy_get_next_buffer( ) ) 1420*53ee8cc1Swenshuai.xi { 1421*53ee8cc1Swenshuai.xi case EOB_ACT_END_OF_FILE: 1422*53ee8cc1Swenshuai.xi { 1423*53ee8cc1Swenshuai.xi (yy_did_buffer_switch_on_eof) = 0; 1424*53ee8cc1Swenshuai.xi 1425*53ee8cc1Swenshuai.xi if ( zconfwrap( ) ) 1426*53ee8cc1Swenshuai.xi { 1427*53ee8cc1Swenshuai.xi /* Note: because we've taken care in 1428*53ee8cc1Swenshuai.xi * yy_get_next_buffer() to have set up 1429*53ee8cc1Swenshuai.xi * zconftext, we can now set up 1430*53ee8cc1Swenshuai.xi * yy_c_buf_p so that if some total 1431*53ee8cc1Swenshuai.xi * hoser (like flex itself) wants to 1432*53ee8cc1Swenshuai.xi * call the scanner after we return the 1433*53ee8cc1Swenshuai.xi * YY_NULL, it'll still work - another 1434*53ee8cc1Swenshuai.xi * YY_NULL will get returned. 1435*53ee8cc1Swenshuai.xi */ 1436*53ee8cc1Swenshuai.xi (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; 1437*53ee8cc1Swenshuai.xi 1438*53ee8cc1Swenshuai.xi yy_act = YY_STATE_EOF(YY_START); 1439*53ee8cc1Swenshuai.xi goto do_action; 1440*53ee8cc1Swenshuai.xi } 1441*53ee8cc1Swenshuai.xi 1442*53ee8cc1Swenshuai.xi else 1443*53ee8cc1Swenshuai.xi { 1444*53ee8cc1Swenshuai.xi if ( ! (yy_did_buffer_switch_on_eof) ) 1445*53ee8cc1Swenshuai.xi YY_NEW_FILE; 1446*53ee8cc1Swenshuai.xi } 1447*53ee8cc1Swenshuai.xi break; 1448*53ee8cc1Swenshuai.xi } 1449*53ee8cc1Swenshuai.xi 1450*53ee8cc1Swenshuai.xi case EOB_ACT_CONTINUE_SCAN: 1451*53ee8cc1Swenshuai.xi (yy_c_buf_p) = 1452*53ee8cc1Swenshuai.xi (yytext_ptr) + yy_amount_of_matched_text; 1453*53ee8cc1Swenshuai.xi 1454*53ee8cc1Swenshuai.xi yy_current_state = yy_get_previous_state( ); 1455*53ee8cc1Swenshuai.xi 1456*53ee8cc1Swenshuai.xi yy_cp = (yy_c_buf_p); 1457*53ee8cc1Swenshuai.xi yy_bp = (yytext_ptr) + YY_MORE_ADJ; 1458*53ee8cc1Swenshuai.xi goto yy_match; 1459*53ee8cc1Swenshuai.xi 1460*53ee8cc1Swenshuai.xi case EOB_ACT_LAST_MATCH: 1461*53ee8cc1Swenshuai.xi (yy_c_buf_p) = 1462*53ee8cc1Swenshuai.xi &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; 1463*53ee8cc1Swenshuai.xi 1464*53ee8cc1Swenshuai.xi yy_current_state = yy_get_previous_state( ); 1465*53ee8cc1Swenshuai.xi 1466*53ee8cc1Swenshuai.xi yy_cp = (yy_c_buf_p); 1467*53ee8cc1Swenshuai.xi yy_bp = (yytext_ptr) + YY_MORE_ADJ; 1468*53ee8cc1Swenshuai.xi goto yy_find_action; 1469*53ee8cc1Swenshuai.xi } 1470*53ee8cc1Swenshuai.xi break; 1471*53ee8cc1Swenshuai.xi } 1472*53ee8cc1Swenshuai.xi 1473*53ee8cc1Swenshuai.xi default: 1474*53ee8cc1Swenshuai.xi YY_FATAL_ERROR( 1475*53ee8cc1Swenshuai.xi "fatal flex scanner internal error--no action found" ); 1476*53ee8cc1Swenshuai.xi } /* end of action switch */ 1477*53ee8cc1Swenshuai.xi } /* end of scanning one token */ 1478*53ee8cc1Swenshuai.xi} /* end of zconflex */ 1479*53ee8cc1Swenshuai.xi 1480*53ee8cc1Swenshuai.xi/* yy_get_next_buffer - try to read in a new buffer 1481*53ee8cc1Swenshuai.xi * 1482*53ee8cc1Swenshuai.xi * Returns a code representing an action: 1483*53ee8cc1Swenshuai.xi * EOB_ACT_LAST_MATCH - 1484*53ee8cc1Swenshuai.xi * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 1485*53ee8cc1Swenshuai.xi * EOB_ACT_END_OF_FILE - end of file 1486*53ee8cc1Swenshuai.xi */ 1487*53ee8cc1Swenshuai.xistatic int yy_get_next_buffer (void) 1488*53ee8cc1Swenshuai.xi{ 1489*53ee8cc1Swenshuai.xi register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; 1490*53ee8cc1Swenshuai.xi register char *source = (yytext_ptr); 1491*53ee8cc1Swenshuai.xi register int number_to_move, i; 1492*53ee8cc1Swenshuai.xi int ret_val; 1493*53ee8cc1Swenshuai.xi 1494*53ee8cc1Swenshuai.xi if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) 1495*53ee8cc1Swenshuai.xi YY_FATAL_ERROR( 1496*53ee8cc1Swenshuai.xi "fatal flex scanner internal error--end of buffer missed" ); 1497*53ee8cc1Swenshuai.xi 1498*53ee8cc1Swenshuai.xi if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) 1499*53ee8cc1Swenshuai.xi { /* Don't try to fill the buffer, so this is an EOF. */ 1500*53ee8cc1Swenshuai.xi if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) 1501*53ee8cc1Swenshuai.xi { 1502*53ee8cc1Swenshuai.xi /* We matched a single character, the EOB, so 1503*53ee8cc1Swenshuai.xi * treat this as a final EOF. 1504*53ee8cc1Swenshuai.xi */ 1505*53ee8cc1Swenshuai.xi return EOB_ACT_END_OF_FILE; 1506*53ee8cc1Swenshuai.xi } 1507*53ee8cc1Swenshuai.xi 1508*53ee8cc1Swenshuai.xi else 1509*53ee8cc1Swenshuai.xi { 1510*53ee8cc1Swenshuai.xi /* We matched some text prior to the EOB, first 1511*53ee8cc1Swenshuai.xi * process it. 1512*53ee8cc1Swenshuai.xi */ 1513*53ee8cc1Swenshuai.xi return EOB_ACT_LAST_MATCH; 1514*53ee8cc1Swenshuai.xi } 1515*53ee8cc1Swenshuai.xi } 1516*53ee8cc1Swenshuai.xi 1517*53ee8cc1Swenshuai.xi /* Try to read more data. */ 1518*53ee8cc1Swenshuai.xi 1519*53ee8cc1Swenshuai.xi /* First move last chars to start of buffer. */ 1520*53ee8cc1Swenshuai.xi number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; 1521*53ee8cc1Swenshuai.xi 1522*53ee8cc1Swenshuai.xi for ( i = 0; i < number_to_move; ++i ) 1523*53ee8cc1Swenshuai.xi *(dest++) = *(source++); 1524*53ee8cc1Swenshuai.xi 1525*53ee8cc1Swenshuai.xi if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 1526*53ee8cc1Swenshuai.xi /* don't do the read, it's not guaranteed to return an EOF, 1527*53ee8cc1Swenshuai.xi * just force an EOF 1528*53ee8cc1Swenshuai.xi */ 1529*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; 1530*53ee8cc1Swenshuai.xi 1531*53ee8cc1Swenshuai.xi else 1532*53ee8cc1Swenshuai.xi { 1533*53ee8cc1Swenshuai.xi int num_to_read = 1534*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; 1535*53ee8cc1Swenshuai.xi 1536*53ee8cc1Swenshuai.xi while ( num_to_read <= 0 ) 1537*53ee8cc1Swenshuai.xi { /* Not enough room in the buffer - grow it. */ 1538*53ee8cc1Swenshuai.xi 1539*53ee8cc1Swenshuai.xi /* just a shorter name for the current buffer */ 1540*53ee8cc1Swenshuai.xi YY_BUFFER_STATE b = YY_CURRENT_BUFFER; 1541*53ee8cc1Swenshuai.xi 1542*53ee8cc1Swenshuai.xi int yy_c_buf_p_offset = 1543*53ee8cc1Swenshuai.xi (int) ((yy_c_buf_p) - b->yy_ch_buf); 1544*53ee8cc1Swenshuai.xi 1545*53ee8cc1Swenshuai.xi if ( b->yy_is_our_buffer ) 1546*53ee8cc1Swenshuai.xi { 1547*53ee8cc1Swenshuai.xi int new_size = b->yy_buf_size * 2; 1548*53ee8cc1Swenshuai.xi 1549*53ee8cc1Swenshuai.xi if ( new_size <= 0 ) 1550*53ee8cc1Swenshuai.xi b->yy_buf_size += b->yy_buf_size / 8; 1551*53ee8cc1Swenshuai.xi else 1552*53ee8cc1Swenshuai.xi b->yy_buf_size *= 2; 1553*53ee8cc1Swenshuai.xi 1554*53ee8cc1Swenshuai.xi b->yy_ch_buf = (char *) 1555*53ee8cc1Swenshuai.xi /* Include room in for 2 EOB chars. */ 1556*53ee8cc1Swenshuai.xi zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); 1557*53ee8cc1Swenshuai.xi } 1558*53ee8cc1Swenshuai.xi else 1559*53ee8cc1Swenshuai.xi /* Can't grow it, we don't own it. */ 1560*53ee8cc1Swenshuai.xi b->yy_ch_buf = 0; 1561*53ee8cc1Swenshuai.xi 1562*53ee8cc1Swenshuai.xi if ( ! b->yy_ch_buf ) 1563*53ee8cc1Swenshuai.xi YY_FATAL_ERROR( 1564*53ee8cc1Swenshuai.xi "fatal error - scanner input buffer overflow" ); 1565*53ee8cc1Swenshuai.xi 1566*53ee8cc1Swenshuai.xi (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; 1567*53ee8cc1Swenshuai.xi 1568*53ee8cc1Swenshuai.xi num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - 1569*53ee8cc1Swenshuai.xi number_to_move - 1; 1570*53ee8cc1Swenshuai.xi 1571*53ee8cc1Swenshuai.xi } 1572*53ee8cc1Swenshuai.xi 1573*53ee8cc1Swenshuai.xi if ( num_to_read > YY_READ_BUF_SIZE ) 1574*53ee8cc1Swenshuai.xi num_to_read = YY_READ_BUF_SIZE; 1575*53ee8cc1Swenshuai.xi 1576*53ee8cc1Swenshuai.xi /* Read in more data. */ 1577*53ee8cc1Swenshuai.xi YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 1578*53ee8cc1Swenshuai.xi (yy_n_chars), (size_t) num_to_read ); 1579*53ee8cc1Swenshuai.xi 1580*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 1581*53ee8cc1Swenshuai.xi } 1582*53ee8cc1Swenshuai.xi 1583*53ee8cc1Swenshuai.xi if ( (yy_n_chars) == 0 ) 1584*53ee8cc1Swenshuai.xi { 1585*53ee8cc1Swenshuai.xi if ( number_to_move == YY_MORE_ADJ ) 1586*53ee8cc1Swenshuai.xi { 1587*53ee8cc1Swenshuai.xi ret_val = EOB_ACT_END_OF_FILE; 1588*53ee8cc1Swenshuai.xi zconfrestart(zconfin ); 1589*53ee8cc1Swenshuai.xi } 1590*53ee8cc1Swenshuai.xi 1591*53ee8cc1Swenshuai.xi else 1592*53ee8cc1Swenshuai.xi { 1593*53ee8cc1Swenshuai.xi ret_val = EOB_ACT_LAST_MATCH; 1594*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = 1595*53ee8cc1Swenshuai.xi YY_BUFFER_EOF_PENDING; 1596*53ee8cc1Swenshuai.xi } 1597*53ee8cc1Swenshuai.xi } 1598*53ee8cc1Swenshuai.xi 1599*53ee8cc1Swenshuai.xi else 1600*53ee8cc1Swenshuai.xi ret_val = EOB_ACT_CONTINUE_SCAN; 1601*53ee8cc1Swenshuai.xi 1602*53ee8cc1Swenshuai.xi if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { 1603*53ee8cc1Swenshuai.xi /* Extend the array by 50%, plus the number we really need. */ 1604*53ee8cc1Swenshuai.xi yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); 1605*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) zconfrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); 1606*53ee8cc1Swenshuai.xi if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 1607*53ee8cc1Swenshuai.xi YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); 1608*53ee8cc1Swenshuai.xi } 1609*53ee8cc1Swenshuai.xi 1610*53ee8cc1Swenshuai.xi (yy_n_chars) += number_to_move; 1611*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; 1612*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; 1613*53ee8cc1Swenshuai.xi 1614*53ee8cc1Swenshuai.xi (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; 1615*53ee8cc1Swenshuai.xi 1616*53ee8cc1Swenshuai.xi return ret_val; 1617*53ee8cc1Swenshuai.xi} 1618*53ee8cc1Swenshuai.xi 1619*53ee8cc1Swenshuai.xi/* yy_get_previous_state - get the state just before the EOB char was reached */ 1620*53ee8cc1Swenshuai.xi 1621*53ee8cc1Swenshuai.xi static yy_state_type yy_get_previous_state (void) 1622*53ee8cc1Swenshuai.xi{ 1623*53ee8cc1Swenshuai.xi register yy_state_type yy_current_state; 1624*53ee8cc1Swenshuai.xi register char *yy_cp; 1625*53ee8cc1Swenshuai.xi 1626*53ee8cc1Swenshuai.xi yy_current_state = (yy_start); 1627*53ee8cc1Swenshuai.xi 1628*53ee8cc1Swenshuai.xi for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 1629*53ee8cc1Swenshuai.xi { 1630*53ee8cc1Swenshuai.xi yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; 1631*53ee8cc1Swenshuai.xi } 1632*53ee8cc1Swenshuai.xi 1633*53ee8cc1Swenshuai.xi return yy_current_state; 1634*53ee8cc1Swenshuai.xi} 1635*53ee8cc1Swenshuai.xi 1636*53ee8cc1Swenshuai.xi/* yy_try_NUL_trans - try to make a transition on the NUL character 1637*53ee8cc1Swenshuai.xi * 1638*53ee8cc1Swenshuai.xi * synopsis 1639*53ee8cc1Swenshuai.xi * next_state = yy_try_NUL_trans( current_state ); 1640*53ee8cc1Swenshuai.xi */ 1641*53ee8cc1Swenshuai.xi static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) 1642*53ee8cc1Swenshuai.xi{ 1643*53ee8cc1Swenshuai.xi register int yy_is_jam; 1644*53ee8cc1Swenshuai.xi 1645*53ee8cc1Swenshuai.xi yy_current_state = yy_nxt[yy_current_state][1]; 1646*53ee8cc1Swenshuai.xi yy_is_jam = (yy_current_state <= 0); 1647*53ee8cc1Swenshuai.xi 1648*53ee8cc1Swenshuai.xi return yy_is_jam ? 0 : yy_current_state; 1649*53ee8cc1Swenshuai.xi} 1650*53ee8cc1Swenshuai.xi 1651*53ee8cc1Swenshuai.xi static void yyunput (int c, register char * yy_bp ) 1652*53ee8cc1Swenshuai.xi{ 1653*53ee8cc1Swenshuai.xi register char *yy_cp; 1654*53ee8cc1Swenshuai.xi 1655*53ee8cc1Swenshuai.xi yy_cp = (yy_c_buf_p); 1656*53ee8cc1Swenshuai.xi 1657*53ee8cc1Swenshuai.xi /* undo effects of setting up zconftext */ 1658*53ee8cc1Swenshuai.xi *yy_cp = (yy_hold_char); 1659*53ee8cc1Swenshuai.xi 1660*53ee8cc1Swenshuai.xi if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 1661*53ee8cc1Swenshuai.xi { /* need to shift things up to make room */ 1662*53ee8cc1Swenshuai.xi /* +2 for EOB chars. */ 1663*53ee8cc1Swenshuai.xi register int number_to_move = (yy_n_chars) + 2; 1664*53ee8cc1Swenshuai.xi register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ 1665*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; 1666*53ee8cc1Swenshuai.xi register char *source = 1667*53ee8cc1Swenshuai.xi &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; 1668*53ee8cc1Swenshuai.xi 1669*53ee8cc1Swenshuai.xi while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 1670*53ee8cc1Swenshuai.xi *--dest = *--source; 1671*53ee8cc1Swenshuai.xi 1672*53ee8cc1Swenshuai.xi yy_cp += (int) (dest - source); 1673*53ee8cc1Swenshuai.xi yy_bp += (int) (dest - source); 1674*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_n_chars = 1675*53ee8cc1Swenshuai.xi (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; 1676*53ee8cc1Swenshuai.xi 1677*53ee8cc1Swenshuai.xi if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 1678*53ee8cc1Swenshuai.xi YY_FATAL_ERROR( "flex scanner push-back overflow" ); 1679*53ee8cc1Swenshuai.xi } 1680*53ee8cc1Swenshuai.xi 1681*53ee8cc1Swenshuai.xi *--yy_cp = (char) c; 1682*53ee8cc1Swenshuai.xi 1683*53ee8cc1Swenshuai.xi (yytext_ptr) = yy_bp; 1684*53ee8cc1Swenshuai.xi (yy_hold_char) = *yy_cp; 1685*53ee8cc1Swenshuai.xi (yy_c_buf_p) = yy_cp; 1686*53ee8cc1Swenshuai.xi} 1687*53ee8cc1Swenshuai.xi 1688*53ee8cc1Swenshuai.xi#ifndef YY_NO_INPUT 1689*53ee8cc1Swenshuai.xi#ifdef __cplusplus 1690*53ee8cc1Swenshuai.xi static int yyinput (void) 1691*53ee8cc1Swenshuai.xi#else 1692*53ee8cc1Swenshuai.xi static int input (void) 1693*53ee8cc1Swenshuai.xi#endif 1694*53ee8cc1Swenshuai.xi 1695*53ee8cc1Swenshuai.xi{ 1696*53ee8cc1Swenshuai.xi int c; 1697*53ee8cc1Swenshuai.xi 1698*53ee8cc1Swenshuai.xi *(yy_c_buf_p) = (yy_hold_char); 1699*53ee8cc1Swenshuai.xi 1700*53ee8cc1Swenshuai.xi if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) 1701*53ee8cc1Swenshuai.xi { 1702*53ee8cc1Swenshuai.xi /* yy_c_buf_p now points to the character we want to return. 1703*53ee8cc1Swenshuai.xi * If this occurs *before* the EOB characters, then it's a 1704*53ee8cc1Swenshuai.xi * valid NUL; if not, then we've hit the end of the buffer. 1705*53ee8cc1Swenshuai.xi */ 1706*53ee8cc1Swenshuai.xi if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 1707*53ee8cc1Swenshuai.xi /* This was really a NUL. */ 1708*53ee8cc1Swenshuai.xi *(yy_c_buf_p) = '\0'; 1709*53ee8cc1Swenshuai.xi 1710*53ee8cc1Swenshuai.xi else 1711*53ee8cc1Swenshuai.xi { /* need more input */ 1712*53ee8cc1Swenshuai.xi int offset = (yy_c_buf_p) - (yytext_ptr); 1713*53ee8cc1Swenshuai.xi ++(yy_c_buf_p); 1714*53ee8cc1Swenshuai.xi 1715*53ee8cc1Swenshuai.xi switch ( yy_get_next_buffer( ) ) 1716*53ee8cc1Swenshuai.xi { 1717*53ee8cc1Swenshuai.xi case EOB_ACT_LAST_MATCH: 1718*53ee8cc1Swenshuai.xi /* This happens because yy_g_n_b() 1719*53ee8cc1Swenshuai.xi * sees that we've accumulated a 1720*53ee8cc1Swenshuai.xi * token and flags that we need to 1721*53ee8cc1Swenshuai.xi * try matching the token before 1722*53ee8cc1Swenshuai.xi * proceeding. But for input(), 1723*53ee8cc1Swenshuai.xi * there's no matching to consider. 1724*53ee8cc1Swenshuai.xi * So convert the EOB_ACT_LAST_MATCH 1725*53ee8cc1Swenshuai.xi * to EOB_ACT_END_OF_FILE. 1726*53ee8cc1Swenshuai.xi */ 1727*53ee8cc1Swenshuai.xi 1728*53ee8cc1Swenshuai.xi /* Reset buffer status. */ 1729*53ee8cc1Swenshuai.xi zconfrestart(zconfin ); 1730*53ee8cc1Swenshuai.xi 1731*53ee8cc1Swenshuai.xi /*FALLTHROUGH*/ 1732*53ee8cc1Swenshuai.xi 1733*53ee8cc1Swenshuai.xi case EOB_ACT_END_OF_FILE: 1734*53ee8cc1Swenshuai.xi { 1735*53ee8cc1Swenshuai.xi if ( zconfwrap( ) ) 1736*53ee8cc1Swenshuai.xi return EOF; 1737*53ee8cc1Swenshuai.xi 1738*53ee8cc1Swenshuai.xi if ( ! (yy_did_buffer_switch_on_eof) ) 1739*53ee8cc1Swenshuai.xi YY_NEW_FILE; 1740*53ee8cc1Swenshuai.xi#ifdef __cplusplus 1741*53ee8cc1Swenshuai.xi return yyinput(); 1742*53ee8cc1Swenshuai.xi#else 1743*53ee8cc1Swenshuai.xi return input(); 1744*53ee8cc1Swenshuai.xi#endif 1745*53ee8cc1Swenshuai.xi } 1746*53ee8cc1Swenshuai.xi 1747*53ee8cc1Swenshuai.xi case EOB_ACT_CONTINUE_SCAN: 1748*53ee8cc1Swenshuai.xi (yy_c_buf_p) = (yytext_ptr) + offset; 1749*53ee8cc1Swenshuai.xi break; 1750*53ee8cc1Swenshuai.xi } 1751*53ee8cc1Swenshuai.xi } 1752*53ee8cc1Swenshuai.xi } 1753*53ee8cc1Swenshuai.xi 1754*53ee8cc1Swenshuai.xi c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ 1755*53ee8cc1Swenshuai.xi *(yy_c_buf_p) = '\0'; /* preserve zconftext */ 1756*53ee8cc1Swenshuai.xi (yy_hold_char) = *++(yy_c_buf_p); 1757*53ee8cc1Swenshuai.xi 1758*53ee8cc1Swenshuai.xi return c; 1759*53ee8cc1Swenshuai.xi} 1760*53ee8cc1Swenshuai.xi#endif /* ifndef YY_NO_INPUT */ 1761*53ee8cc1Swenshuai.xi 1762*53ee8cc1Swenshuai.xi/** Immediately switch to a different input stream. 1763*53ee8cc1Swenshuai.xi * @param input_file A readable stream. 1764*53ee8cc1Swenshuai.xi * 1765*53ee8cc1Swenshuai.xi * @note This function does not reset the start condition to @c INITIAL . 1766*53ee8cc1Swenshuai.xi */ 1767*53ee8cc1Swenshuai.xi void zconfrestart (FILE * input_file ) 1768*53ee8cc1Swenshuai.xi{ 1769*53ee8cc1Swenshuai.xi 1770*53ee8cc1Swenshuai.xi if ( ! YY_CURRENT_BUFFER ){ 1771*53ee8cc1Swenshuai.xi zconfensure_buffer_stack (); 1772*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE = 1773*53ee8cc1Swenshuai.xi zconf_create_buffer(zconfin,YY_BUF_SIZE ); 1774*53ee8cc1Swenshuai.xi } 1775*53ee8cc1Swenshuai.xi 1776*53ee8cc1Swenshuai.xi zconf_init_buffer(YY_CURRENT_BUFFER,input_file ); 1777*53ee8cc1Swenshuai.xi zconf_load_buffer_state( ); 1778*53ee8cc1Swenshuai.xi} 1779*53ee8cc1Swenshuai.xi 1780*53ee8cc1Swenshuai.xi/** Switch to a different input buffer. 1781*53ee8cc1Swenshuai.xi * @param new_buffer The new input buffer. 1782*53ee8cc1Swenshuai.xi * 1783*53ee8cc1Swenshuai.xi */ 1784*53ee8cc1Swenshuai.xi void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer ) 1785*53ee8cc1Swenshuai.xi{ 1786*53ee8cc1Swenshuai.xi 1787*53ee8cc1Swenshuai.xi /* TODO. We should be able to replace this entire function body 1788*53ee8cc1Swenshuai.xi * with 1789*53ee8cc1Swenshuai.xi * zconfpop_buffer_state(); 1790*53ee8cc1Swenshuai.xi * zconfpush_buffer_state(new_buffer); 1791*53ee8cc1Swenshuai.xi */ 1792*53ee8cc1Swenshuai.xi zconfensure_buffer_stack (); 1793*53ee8cc1Swenshuai.xi if ( YY_CURRENT_BUFFER == new_buffer ) 1794*53ee8cc1Swenshuai.xi return; 1795*53ee8cc1Swenshuai.xi 1796*53ee8cc1Swenshuai.xi if ( YY_CURRENT_BUFFER ) 1797*53ee8cc1Swenshuai.xi { 1798*53ee8cc1Swenshuai.xi /* Flush out information for old buffer. */ 1799*53ee8cc1Swenshuai.xi *(yy_c_buf_p) = (yy_hold_char); 1800*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 1801*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 1802*53ee8cc1Swenshuai.xi } 1803*53ee8cc1Swenshuai.xi 1804*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE = new_buffer; 1805*53ee8cc1Swenshuai.xi zconf_load_buffer_state( ); 1806*53ee8cc1Swenshuai.xi 1807*53ee8cc1Swenshuai.xi /* We don't actually know whether we did this switch during 1808*53ee8cc1Swenshuai.xi * EOF (zconfwrap()) processing, but the only time this flag 1809*53ee8cc1Swenshuai.xi * is looked at is after zconfwrap() is called, so it's safe 1810*53ee8cc1Swenshuai.xi * to go ahead and always set it. 1811*53ee8cc1Swenshuai.xi */ 1812*53ee8cc1Swenshuai.xi (yy_did_buffer_switch_on_eof) = 1; 1813*53ee8cc1Swenshuai.xi} 1814*53ee8cc1Swenshuai.xi 1815*53ee8cc1Swenshuai.xistatic void zconf_load_buffer_state (void) 1816*53ee8cc1Swenshuai.xi{ 1817*53ee8cc1Swenshuai.xi (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 1818*53ee8cc1Swenshuai.xi (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; 1819*53ee8cc1Swenshuai.xi zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; 1820*53ee8cc1Swenshuai.xi (yy_hold_char) = *(yy_c_buf_p); 1821*53ee8cc1Swenshuai.xi} 1822*53ee8cc1Swenshuai.xi 1823*53ee8cc1Swenshuai.xi/** Allocate and initialize an input buffer state. 1824*53ee8cc1Swenshuai.xi * @param file A readable stream. 1825*53ee8cc1Swenshuai.xi * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. 1826*53ee8cc1Swenshuai.xi * 1827*53ee8cc1Swenshuai.xi * @return the allocated buffer state. 1828*53ee8cc1Swenshuai.xi */ 1829*53ee8cc1Swenshuai.xi YY_BUFFER_STATE zconf_create_buffer (FILE * file, int size ) 1830*53ee8cc1Swenshuai.xi{ 1831*53ee8cc1Swenshuai.xi YY_BUFFER_STATE b; 1832*53ee8cc1Swenshuai.xi 1833*53ee8cc1Swenshuai.xi b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) ); 1834*53ee8cc1Swenshuai.xi if ( ! b ) 1835*53ee8cc1Swenshuai.xi YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" ); 1836*53ee8cc1Swenshuai.xi 1837*53ee8cc1Swenshuai.xi b->yy_buf_size = size; 1838*53ee8cc1Swenshuai.xi 1839*53ee8cc1Swenshuai.xi /* yy_ch_buf has to be 2 characters longer than the size given because 1840*53ee8cc1Swenshuai.xi * we need to put in 2 end-of-buffer characters. 1841*53ee8cc1Swenshuai.xi */ 1842*53ee8cc1Swenshuai.xi b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2 ); 1843*53ee8cc1Swenshuai.xi if ( ! b->yy_ch_buf ) 1844*53ee8cc1Swenshuai.xi YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" ); 1845*53ee8cc1Swenshuai.xi 1846*53ee8cc1Swenshuai.xi b->yy_is_our_buffer = 1; 1847*53ee8cc1Swenshuai.xi 1848*53ee8cc1Swenshuai.xi zconf_init_buffer(b,file ); 1849*53ee8cc1Swenshuai.xi 1850*53ee8cc1Swenshuai.xi return b; 1851*53ee8cc1Swenshuai.xi} 1852*53ee8cc1Swenshuai.xi 1853*53ee8cc1Swenshuai.xi/** Destroy the buffer. 1854*53ee8cc1Swenshuai.xi * @param b a buffer created with zconf_create_buffer() 1855*53ee8cc1Swenshuai.xi * 1856*53ee8cc1Swenshuai.xi */ 1857*53ee8cc1Swenshuai.xi void zconf_delete_buffer (YY_BUFFER_STATE b ) 1858*53ee8cc1Swenshuai.xi{ 1859*53ee8cc1Swenshuai.xi 1860*53ee8cc1Swenshuai.xi if ( ! b ) 1861*53ee8cc1Swenshuai.xi return; 1862*53ee8cc1Swenshuai.xi 1863*53ee8cc1Swenshuai.xi if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ 1864*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; 1865*53ee8cc1Swenshuai.xi 1866*53ee8cc1Swenshuai.xi if ( b->yy_is_our_buffer ) 1867*53ee8cc1Swenshuai.xi zconffree((void *) b->yy_ch_buf ); 1868*53ee8cc1Swenshuai.xi 1869*53ee8cc1Swenshuai.xi zconffree((void *) b ); 1870*53ee8cc1Swenshuai.xi} 1871*53ee8cc1Swenshuai.xi 1872*53ee8cc1Swenshuai.xi/* Initializes or reinitializes a buffer. 1873*53ee8cc1Swenshuai.xi * This function is sometimes called more than once on the same buffer, 1874*53ee8cc1Swenshuai.xi * such as during a zconfrestart() or at EOF. 1875*53ee8cc1Swenshuai.xi */ 1876*53ee8cc1Swenshuai.xi static void zconf_init_buffer (YY_BUFFER_STATE b, FILE * file ) 1877*53ee8cc1Swenshuai.xi 1878*53ee8cc1Swenshuai.xi{ 1879*53ee8cc1Swenshuai.xi int oerrno = errno; 1880*53ee8cc1Swenshuai.xi 1881*53ee8cc1Swenshuai.xi zconf_flush_buffer(b ); 1882*53ee8cc1Swenshuai.xi 1883*53ee8cc1Swenshuai.xi b->yy_input_file = file; 1884*53ee8cc1Swenshuai.xi b->yy_fill_buffer = 1; 1885*53ee8cc1Swenshuai.xi 1886*53ee8cc1Swenshuai.xi /* If b is the current buffer, then zconf_init_buffer was _probably_ 1887*53ee8cc1Swenshuai.xi * called from zconfrestart() or through yy_get_next_buffer. 1888*53ee8cc1Swenshuai.xi * In that case, we don't want to reset the lineno or column. 1889*53ee8cc1Swenshuai.xi */ 1890*53ee8cc1Swenshuai.xi if (b != YY_CURRENT_BUFFER){ 1891*53ee8cc1Swenshuai.xi b->yy_bs_lineno = 1; 1892*53ee8cc1Swenshuai.xi b->yy_bs_column = 0; 1893*53ee8cc1Swenshuai.xi } 1894*53ee8cc1Swenshuai.xi 1895*53ee8cc1Swenshuai.xi b->yy_is_interactive = 0; 1896*53ee8cc1Swenshuai.xi 1897*53ee8cc1Swenshuai.xi errno = oerrno; 1898*53ee8cc1Swenshuai.xi} 1899*53ee8cc1Swenshuai.xi 1900*53ee8cc1Swenshuai.xi/** Discard all buffered characters. On the next scan, YY_INPUT will be called. 1901*53ee8cc1Swenshuai.xi * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. 1902*53ee8cc1Swenshuai.xi * 1903*53ee8cc1Swenshuai.xi */ 1904*53ee8cc1Swenshuai.xi void zconf_flush_buffer (YY_BUFFER_STATE b ) 1905*53ee8cc1Swenshuai.xi{ 1906*53ee8cc1Swenshuai.xi if ( ! b ) 1907*53ee8cc1Swenshuai.xi return; 1908*53ee8cc1Swenshuai.xi 1909*53ee8cc1Swenshuai.xi b->yy_n_chars = 0; 1910*53ee8cc1Swenshuai.xi 1911*53ee8cc1Swenshuai.xi /* We always need two end-of-buffer characters. The first causes 1912*53ee8cc1Swenshuai.xi * a transition to the end-of-buffer state. The second causes 1913*53ee8cc1Swenshuai.xi * a jam in that state. 1914*53ee8cc1Swenshuai.xi */ 1915*53ee8cc1Swenshuai.xi b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; 1916*53ee8cc1Swenshuai.xi b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; 1917*53ee8cc1Swenshuai.xi 1918*53ee8cc1Swenshuai.xi b->yy_buf_pos = &b->yy_ch_buf[0]; 1919*53ee8cc1Swenshuai.xi 1920*53ee8cc1Swenshuai.xi b->yy_at_bol = 1; 1921*53ee8cc1Swenshuai.xi b->yy_buffer_status = YY_BUFFER_NEW; 1922*53ee8cc1Swenshuai.xi 1923*53ee8cc1Swenshuai.xi if ( b == YY_CURRENT_BUFFER ) 1924*53ee8cc1Swenshuai.xi zconf_load_buffer_state( ); 1925*53ee8cc1Swenshuai.xi} 1926*53ee8cc1Swenshuai.xi 1927*53ee8cc1Swenshuai.xi/** Pushes the new state onto the stack. The new state becomes 1928*53ee8cc1Swenshuai.xi * the current state. This function will allocate the stack 1929*53ee8cc1Swenshuai.xi * if necessary. 1930*53ee8cc1Swenshuai.xi * @param new_buffer The new state. 1931*53ee8cc1Swenshuai.xi * 1932*53ee8cc1Swenshuai.xi */ 1933*53ee8cc1Swenshuai.xivoid zconfpush_buffer_state (YY_BUFFER_STATE new_buffer ) 1934*53ee8cc1Swenshuai.xi{ 1935*53ee8cc1Swenshuai.xi if (new_buffer == NULL) 1936*53ee8cc1Swenshuai.xi return; 1937*53ee8cc1Swenshuai.xi 1938*53ee8cc1Swenshuai.xi zconfensure_buffer_stack(); 1939*53ee8cc1Swenshuai.xi 1940*53ee8cc1Swenshuai.xi /* This block is copied from zconf_switch_to_buffer. */ 1941*53ee8cc1Swenshuai.xi if ( YY_CURRENT_BUFFER ) 1942*53ee8cc1Swenshuai.xi { 1943*53ee8cc1Swenshuai.xi /* Flush out information for old buffer. */ 1944*53ee8cc1Swenshuai.xi *(yy_c_buf_p) = (yy_hold_char); 1945*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 1946*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 1947*53ee8cc1Swenshuai.xi } 1948*53ee8cc1Swenshuai.xi 1949*53ee8cc1Swenshuai.xi /* Only push if top exists. Otherwise, replace top. */ 1950*53ee8cc1Swenshuai.xi if (YY_CURRENT_BUFFER) 1951*53ee8cc1Swenshuai.xi (yy_buffer_stack_top)++; 1952*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE = new_buffer; 1953*53ee8cc1Swenshuai.xi 1954*53ee8cc1Swenshuai.xi /* copied from zconf_switch_to_buffer. */ 1955*53ee8cc1Swenshuai.xi zconf_load_buffer_state( ); 1956*53ee8cc1Swenshuai.xi (yy_did_buffer_switch_on_eof) = 1; 1957*53ee8cc1Swenshuai.xi} 1958*53ee8cc1Swenshuai.xi 1959*53ee8cc1Swenshuai.xi/** Removes and deletes the top of the stack, if present. 1960*53ee8cc1Swenshuai.xi * The next element becomes the new top. 1961*53ee8cc1Swenshuai.xi * 1962*53ee8cc1Swenshuai.xi */ 1963*53ee8cc1Swenshuai.xivoid zconfpop_buffer_state (void) 1964*53ee8cc1Swenshuai.xi{ 1965*53ee8cc1Swenshuai.xi if (!YY_CURRENT_BUFFER) 1966*53ee8cc1Swenshuai.xi return; 1967*53ee8cc1Swenshuai.xi 1968*53ee8cc1Swenshuai.xi zconf_delete_buffer(YY_CURRENT_BUFFER ); 1969*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE = NULL; 1970*53ee8cc1Swenshuai.xi if ((yy_buffer_stack_top) > 0) 1971*53ee8cc1Swenshuai.xi --(yy_buffer_stack_top); 1972*53ee8cc1Swenshuai.xi 1973*53ee8cc1Swenshuai.xi if (YY_CURRENT_BUFFER) { 1974*53ee8cc1Swenshuai.xi zconf_load_buffer_state( ); 1975*53ee8cc1Swenshuai.xi (yy_did_buffer_switch_on_eof) = 1; 1976*53ee8cc1Swenshuai.xi } 1977*53ee8cc1Swenshuai.xi} 1978*53ee8cc1Swenshuai.xi 1979*53ee8cc1Swenshuai.xi/* Allocates the stack if it does not exist. 1980*53ee8cc1Swenshuai.xi * Guarantees space for at least one push. 1981*53ee8cc1Swenshuai.xi */ 1982*53ee8cc1Swenshuai.xistatic void zconfensure_buffer_stack (void) 1983*53ee8cc1Swenshuai.xi{ 1984*53ee8cc1Swenshuai.xi int num_to_alloc; 1985*53ee8cc1Swenshuai.xi 1986*53ee8cc1Swenshuai.xi if (!(yy_buffer_stack)) { 1987*53ee8cc1Swenshuai.xi 1988*53ee8cc1Swenshuai.xi /* First allocation is just for 2 elements, since we don't know if this 1989*53ee8cc1Swenshuai.xi * scanner will even need a stack. We use 2 instead of 1 to avoid an 1990*53ee8cc1Swenshuai.xi * immediate realloc on the next call. 1991*53ee8cc1Swenshuai.xi */ 1992*53ee8cc1Swenshuai.xi num_to_alloc = 1; 1993*53ee8cc1Swenshuai.xi (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc 1994*53ee8cc1Swenshuai.xi (num_to_alloc * sizeof(struct yy_buffer_state*) 1995*53ee8cc1Swenshuai.xi ); 1996*53ee8cc1Swenshuai.xi if ( ! (yy_buffer_stack) ) 1997*53ee8cc1Swenshuai.xi YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" ); 1998*53ee8cc1Swenshuai.xi 1999*53ee8cc1Swenshuai.xi memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); 2000*53ee8cc1Swenshuai.xi 2001*53ee8cc1Swenshuai.xi (yy_buffer_stack_max) = num_to_alloc; 2002*53ee8cc1Swenshuai.xi (yy_buffer_stack_top) = 0; 2003*53ee8cc1Swenshuai.xi return; 2004*53ee8cc1Swenshuai.xi } 2005*53ee8cc1Swenshuai.xi 2006*53ee8cc1Swenshuai.xi if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ 2007*53ee8cc1Swenshuai.xi 2008*53ee8cc1Swenshuai.xi /* Increase the buffer to prepare for a possible push. */ 2009*53ee8cc1Swenshuai.xi int grow_size = 8 /* arbitrary grow size */; 2010*53ee8cc1Swenshuai.xi 2011*53ee8cc1Swenshuai.xi num_to_alloc = (yy_buffer_stack_max) + grow_size; 2012*53ee8cc1Swenshuai.xi (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc 2013*53ee8cc1Swenshuai.xi ((yy_buffer_stack), 2014*53ee8cc1Swenshuai.xi num_to_alloc * sizeof(struct yy_buffer_state*) 2015*53ee8cc1Swenshuai.xi ); 2016*53ee8cc1Swenshuai.xi if ( ! (yy_buffer_stack) ) 2017*53ee8cc1Swenshuai.xi YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" ); 2018*53ee8cc1Swenshuai.xi 2019*53ee8cc1Swenshuai.xi /* zero only the new slots.*/ 2020*53ee8cc1Swenshuai.xi memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); 2021*53ee8cc1Swenshuai.xi (yy_buffer_stack_max) = num_to_alloc; 2022*53ee8cc1Swenshuai.xi } 2023*53ee8cc1Swenshuai.xi} 2024*53ee8cc1Swenshuai.xi 2025*53ee8cc1Swenshuai.xi/** Setup the input buffer state to scan directly from a user-specified character buffer. 2026*53ee8cc1Swenshuai.xi * @param base the character buffer 2027*53ee8cc1Swenshuai.xi * @param size the size in bytes of the character buffer 2028*53ee8cc1Swenshuai.xi * 2029*53ee8cc1Swenshuai.xi * @return the newly allocated buffer state object. 2030*53ee8cc1Swenshuai.xi */ 2031*53ee8cc1Swenshuai.xiYY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size ) 2032*53ee8cc1Swenshuai.xi{ 2033*53ee8cc1Swenshuai.xi YY_BUFFER_STATE b; 2034*53ee8cc1Swenshuai.xi 2035*53ee8cc1Swenshuai.xi if ( size < 2 || 2036*53ee8cc1Swenshuai.xi base[size-2] != YY_END_OF_BUFFER_CHAR || 2037*53ee8cc1Swenshuai.xi base[size-1] != YY_END_OF_BUFFER_CHAR ) 2038*53ee8cc1Swenshuai.xi /* They forgot to leave room for the EOB's. */ 2039*53ee8cc1Swenshuai.xi return 0; 2040*53ee8cc1Swenshuai.xi 2041*53ee8cc1Swenshuai.xi b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) ); 2042*53ee8cc1Swenshuai.xi if ( ! b ) 2043*53ee8cc1Swenshuai.xi YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" ); 2044*53ee8cc1Swenshuai.xi 2045*53ee8cc1Swenshuai.xi b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ 2046*53ee8cc1Swenshuai.xi b->yy_buf_pos = b->yy_ch_buf = base; 2047*53ee8cc1Swenshuai.xi b->yy_is_our_buffer = 0; 2048*53ee8cc1Swenshuai.xi b->yy_input_file = 0; 2049*53ee8cc1Swenshuai.xi b->yy_n_chars = b->yy_buf_size; 2050*53ee8cc1Swenshuai.xi b->yy_is_interactive = 0; 2051*53ee8cc1Swenshuai.xi b->yy_at_bol = 1; 2052*53ee8cc1Swenshuai.xi b->yy_fill_buffer = 0; 2053*53ee8cc1Swenshuai.xi b->yy_buffer_status = YY_BUFFER_NEW; 2054*53ee8cc1Swenshuai.xi 2055*53ee8cc1Swenshuai.xi zconf_switch_to_buffer(b ); 2056*53ee8cc1Swenshuai.xi 2057*53ee8cc1Swenshuai.xi return b; 2058*53ee8cc1Swenshuai.xi} 2059*53ee8cc1Swenshuai.xi 2060*53ee8cc1Swenshuai.xi/** Setup the input buffer state to scan a string. The next call to zconflex() will 2061*53ee8cc1Swenshuai.xi * scan from a @e copy of @a str. 2062*53ee8cc1Swenshuai.xi * @param yystr a NUL-terminated string to scan 2063*53ee8cc1Swenshuai.xi * 2064*53ee8cc1Swenshuai.xi * @return the newly allocated buffer state object. 2065*53ee8cc1Swenshuai.xi * @note If you want to scan bytes that may contain NUL values, then use 2066*53ee8cc1Swenshuai.xi * zconf_scan_bytes() instead. 2067*53ee8cc1Swenshuai.xi */ 2068*53ee8cc1Swenshuai.xiYY_BUFFER_STATE zconf_scan_string (yyconst char * yystr ) 2069*53ee8cc1Swenshuai.xi{ 2070*53ee8cc1Swenshuai.xi 2071*53ee8cc1Swenshuai.xi return zconf_scan_bytes(yystr,strlen(yystr) ); 2072*53ee8cc1Swenshuai.xi} 2073*53ee8cc1Swenshuai.xi 2074*53ee8cc1Swenshuai.xi/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will 2075*53ee8cc1Swenshuai.xi * scan from a @e copy of @a bytes. 2076*53ee8cc1Swenshuai.xi * @param yybytes the byte buffer to scan 2077*53ee8cc1Swenshuai.xi * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. 2078*53ee8cc1Swenshuai.xi * 2079*53ee8cc1Swenshuai.xi * @return the newly allocated buffer state object. 2080*53ee8cc1Swenshuai.xi */ 2081*53ee8cc1Swenshuai.xiYY_BUFFER_STATE zconf_scan_bytes (yyconst char * yybytes, int _yybytes_len ) 2082*53ee8cc1Swenshuai.xi{ 2083*53ee8cc1Swenshuai.xi YY_BUFFER_STATE b; 2084*53ee8cc1Swenshuai.xi char *buf; 2085*53ee8cc1Swenshuai.xi yy_size_t n; 2086*53ee8cc1Swenshuai.xi int i; 2087*53ee8cc1Swenshuai.xi 2088*53ee8cc1Swenshuai.xi /* Get memory for full buffer, including space for trailing EOB's. */ 2089*53ee8cc1Swenshuai.xi n = _yybytes_len + 2; 2090*53ee8cc1Swenshuai.xi buf = (char *) zconfalloc(n ); 2091*53ee8cc1Swenshuai.xi if ( ! buf ) 2092*53ee8cc1Swenshuai.xi YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" ); 2093*53ee8cc1Swenshuai.xi 2094*53ee8cc1Swenshuai.xi for ( i = 0; i < _yybytes_len; ++i ) 2095*53ee8cc1Swenshuai.xi buf[i] = yybytes[i]; 2096*53ee8cc1Swenshuai.xi 2097*53ee8cc1Swenshuai.xi buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; 2098*53ee8cc1Swenshuai.xi 2099*53ee8cc1Swenshuai.xi b = zconf_scan_buffer(buf,n ); 2100*53ee8cc1Swenshuai.xi if ( ! b ) 2101*53ee8cc1Swenshuai.xi YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" ); 2102*53ee8cc1Swenshuai.xi 2103*53ee8cc1Swenshuai.xi /* It's okay to grow etc. this buffer, and we should throw it 2104*53ee8cc1Swenshuai.xi * away when we're done. 2105*53ee8cc1Swenshuai.xi */ 2106*53ee8cc1Swenshuai.xi b->yy_is_our_buffer = 1; 2107*53ee8cc1Swenshuai.xi 2108*53ee8cc1Swenshuai.xi return b; 2109*53ee8cc1Swenshuai.xi} 2110*53ee8cc1Swenshuai.xi 2111*53ee8cc1Swenshuai.xi#ifndef YY_EXIT_FAILURE 2112*53ee8cc1Swenshuai.xi#define YY_EXIT_FAILURE 2 2113*53ee8cc1Swenshuai.xi#endif 2114*53ee8cc1Swenshuai.xi 2115*53ee8cc1Swenshuai.xistatic void yy_fatal_error (yyconst char* msg ) 2116*53ee8cc1Swenshuai.xi{ 2117*53ee8cc1Swenshuai.xi (void) fprintf( stderr, "%s\n", msg ); 2118*53ee8cc1Swenshuai.xi exit( YY_EXIT_FAILURE ); 2119*53ee8cc1Swenshuai.xi} 2120*53ee8cc1Swenshuai.xi 2121*53ee8cc1Swenshuai.xi/* Redefine yyless() so it works in section 3 code. */ 2122*53ee8cc1Swenshuai.xi 2123*53ee8cc1Swenshuai.xi#undef yyless 2124*53ee8cc1Swenshuai.xi#define yyless(n) \ 2125*53ee8cc1Swenshuai.xi do \ 2126*53ee8cc1Swenshuai.xi { \ 2127*53ee8cc1Swenshuai.xi /* Undo effects of setting up zconftext. */ \ 2128*53ee8cc1Swenshuai.xi int yyless_macro_arg = (n); \ 2129*53ee8cc1Swenshuai.xi YY_LESS_LINENO(yyless_macro_arg);\ 2130*53ee8cc1Swenshuai.xi zconftext[zconfleng] = (yy_hold_char); \ 2131*53ee8cc1Swenshuai.xi (yy_c_buf_p) = zconftext + yyless_macro_arg; \ 2132*53ee8cc1Swenshuai.xi (yy_hold_char) = *(yy_c_buf_p); \ 2133*53ee8cc1Swenshuai.xi *(yy_c_buf_p) = '\0'; \ 2134*53ee8cc1Swenshuai.xi zconfleng = yyless_macro_arg; \ 2135*53ee8cc1Swenshuai.xi } \ 2136*53ee8cc1Swenshuai.xi while ( 0 ) 2137*53ee8cc1Swenshuai.xi 2138*53ee8cc1Swenshuai.xi/* Accessor methods (get/set functions) to struct members. */ 2139*53ee8cc1Swenshuai.xi 2140*53ee8cc1Swenshuai.xi/** Get the current line number. 2141*53ee8cc1Swenshuai.xi * 2142*53ee8cc1Swenshuai.xi */ 2143*53ee8cc1Swenshuai.xiint zconfget_lineno (void) 2144*53ee8cc1Swenshuai.xi{ 2145*53ee8cc1Swenshuai.xi 2146*53ee8cc1Swenshuai.xi return zconflineno; 2147*53ee8cc1Swenshuai.xi} 2148*53ee8cc1Swenshuai.xi 2149*53ee8cc1Swenshuai.xi/** Get the input stream. 2150*53ee8cc1Swenshuai.xi * 2151*53ee8cc1Swenshuai.xi */ 2152*53ee8cc1Swenshuai.xiFILE *zconfget_in (void) 2153*53ee8cc1Swenshuai.xi{ 2154*53ee8cc1Swenshuai.xi return zconfin; 2155*53ee8cc1Swenshuai.xi} 2156*53ee8cc1Swenshuai.xi 2157*53ee8cc1Swenshuai.xi/** Get the output stream. 2158*53ee8cc1Swenshuai.xi * 2159*53ee8cc1Swenshuai.xi */ 2160*53ee8cc1Swenshuai.xiFILE *zconfget_out (void) 2161*53ee8cc1Swenshuai.xi{ 2162*53ee8cc1Swenshuai.xi return zconfout; 2163*53ee8cc1Swenshuai.xi} 2164*53ee8cc1Swenshuai.xi 2165*53ee8cc1Swenshuai.xi/** Get the length of the current token. 2166*53ee8cc1Swenshuai.xi * 2167*53ee8cc1Swenshuai.xi */ 2168*53ee8cc1Swenshuai.xiint zconfget_leng (void) 2169*53ee8cc1Swenshuai.xi{ 2170*53ee8cc1Swenshuai.xi return zconfleng; 2171*53ee8cc1Swenshuai.xi} 2172*53ee8cc1Swenshuai.xi 2173*53ee8cc1Swenshuai.xi/** Get the current token. 2174*53ee8cc1Swenshuai.xi * 2175*53ee8cc1Swenshuai.xi */ 2176*53ee8cc1Swenshuai.xi 2177*53ee8cc1Swenshuai.xichar *zconfget_text (void) 2178*53ee8cc1Swenshuai.xi{ 2179*53ee8cc1Swenshuai.xi return zconftext; 2180*53ee8cc1Swenshuai.xi} 2181*53ee8cc1Swenshuai.xi 2182*53ee8cc1Swenshuai.xi/** Set the current line number. 2183*53ee8cc1Swenshuai.xi * @param line_number 2184*53ee8cc1Swenshuai.xi * 2185*53ee8cc1Swenshuai.xi */ 2186*53ee8cc1Swenshuai.xivoid zconfset_lineno (int line_number ) 2187*53ee8cc1Swenshuai.xi{ 2188*53ee8cc1Swenshuai.xi 2189*53ee8cc1Swenshuai.xi zconflineno = line_number; 2190*53ee8cc1Swenshuai.xi} 2191*53ee8cc1Swenshuai.xi 2192*53ee8cc1Swenshuai.xi/** Set the input stream. This does not discard the current 2193*53ee8cc1Swenshuai.xi * input buffer. 2194*53ee8cc1Swenshuai.xi * @param in_str A readable stream. 2195*53ee8cc1Swenshuai.xi * 2196*53ee8cc1Swenshuai.xi * @see zconf_switch_to_buffer 2197*53ee8cc1Swenshuai.xi */ 2198*53ee8cc1Swenshuai.xivoid zconfset_in (FILE * in_str ) 2199*53ee8cc1Swenshuai.xi{ 2200*53ee8cc1Swenshuai.xi zconfin = in_str ; 2201*53ee8cc1Swenshuai.xi} 2202*53ee8cc1Swenshuai.xi 2203*53ee8cc1Swenshuai.xivoid zconfset_out (FILE * out_str ) 2204*53ee8cc1Swenshuai.xi{ 2205*53ee8cc1Swenshuai.xi zconfout = out_str ; 2206*53ee8cc1Swenshuai.xi} 2207*53ee8cc1Swenshuai.xi 2208*53ee8cc1Swenshuai.xiint zconfget_debug (void) 2209*53ee8cc1Swenshuai.xi{ 2210*53ee8cc1Swenshuai.xi return zconf_flex_debug; 2211*53ee8cc1Swenshuai.xi} 2212*53ee8cc1Swenshuai.xi 2213*53ee8cc1Swenshuai.xivoid zconfset_debug (int bdebug ) 2214*53ee8cc1Swenshuai.xi{ 2215*53ee8cc1Swenshuai.xi zconf_flex_debug = bdebug ; 2216*53ee8cc1Swenshuai.xi} 2217*53ee8cc1Swenshuai.xi 2218*53ee8cc1Swenshuai.xistatic int yy_init_globals (void) 2219*53ee8cc1Swenshuai.xi{ 2220*53ee8cc1Swenshuai.xi /* Initialization is the same as for the non-reentrant scanner. 2221*53ee8cc1Swenshuai.xi * This function is called from zconflex_destroy(), so don't allocate here. 2222*53ee8cc1Swenshuai.xi */ 2223*53ee8cc1Swenshuai.xi 2224*53ee8cc1Swenshuai.xi (yy_buffer_stack) = 0; 2225*53ee8cc1Swenshuai.xi (yy_buffer_stack_top) = 0; 2226*53ee8cc1Swenshuai.xi (yy_buffer_stack_max) = 0; 2227*53ee8cc1Swenshuai.xi (yy_c_buf_p) = (char *) 0; 2228*53ee8cc1Swenshuai.xi (yy_init) = 0; 2229*53ee8cc1Swenshuai.xi (yy_start) = 0; 2230*53ee8cc1Swenshuai.xi 2231*53ee8cc1Swenshuai.xi/* Defined in main.c */ 2232*53ee8cc1Swenshuai.xi#ifdef YY_STDINIT 2233*53ee8cc1Swenshuai.xi zconfin = stdin; 2234*53ee8cc1Swenshuai.xi zconfout = stdout; 2235*53ee8cc1Swenshuai.xi#else 2236*53ee8cc1Swenshuai.xi zconfin = (FILE *) 0; 2237*53ee8cc1Swenshuai.xi zconfout = (FILE *) 0; 2238*53ee8cc1Swenshuai.xi#endif 2239*53ee8cc1Swenshuai.xi 2240*53ee8cc1Swenshuai.xi /* For future reference: Set errno on error, since we are called by 2241*53ee8cc1Swenshuai.xi * zconflex_init() 2242*53ee8cc1Swenshuai.xi */ 2243*53ee8cc1Swenshuai.xi return 0; 2244*53ee8cc1Swenshuai.xi} 2245*53ee8cc1Swenshuai.xi 2246*53ee8cc1Swenshuai.xi/* zconflex_destroy is for both reentrant and non-reentrant scanners. */ 2247*53ee8cc1Swenshuai.xiint zconflex_destroy (void) 2248*53ee8cc1Swenshuai.xi{ 2249*53ee8cc1Swenshuai.xi 2250*53ee8cc1Swenshuai.xi /* Pop the buffer stack, destroying each element. */ 2251*53ee8cc1Swenshuai.xi while(YY_CURRENT_BUFFER){ 2252*53ee8cc1Swenshuai.xi zconf_delete_buffer(YY_CURRENT_BUFFER ); 2253*53ee8cc1Swenshuai.xi YY_CURRENT_BUFFER_LVALUE = NULL; 2254*53ee8cc1Swenshuai.xi zconfpop_buffer_state(); 2255*53ee8cc1Swenshuai.xi } 2256*53ee8cc1Swenshuai.xi 2257*53ee8cc1Swenshuai.xi /* Destroy the stack itself. */ 2258*53ee8cc1Swenshuai.xi zconffree((yy_buffer_stack) ); 2259*53ee8cc1Swenshuai.xi (yy_buffer_stack) = NULL; 2260*53ee8cc1Swenshuai.xi 2261*53ee8cc1Swenshuai.xi /* Reset the globals. This is important in a non-reentrant scanner so the next time 2262*53ee8cc1Swenshuai.xi * zconflex() is called, initialization will occur. */ 2263*53ee8cc1Swenshuai.xi yy_init_globals( ); 2264*53ee8cc1Swenshuai.xi 2265*53ee8cc1Swenshuai.xi return 0; 2266*53ee8cc1Swenshuai.xi} 2267*53ee8cc1Swenshuai.xi 2268*53ee8cc1Swenshuai.xi/* 2269*53ee8cc1Swenshuai.xi * Internal utility routines. 2270*53ee8cc1Swenshuai.xi */ 2271*53ee8cc1Swenshuai.xi 2272*53ee8cc1Swenshuai.xi#ifndef yytext_ptr 2273*53ee8cc1Swenshuai.xistatic void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) 2274*53ee8cc1Swenshuai.xi{ 2275*53ee8cc1Swenshuai.xi register int i; 2276*53ee8cc1Swenshuai.xi for ( i = 0; i < n; ++i ) 2277*53ee8cc1Swenshuai.xi s1[i] = s2[i]; 2278*53ee8cc1Swenshuai.xi} 2279*53ee8cc1Swenshuai.xi#endif 2280*53ee8cc1Swenshuai.xi 2281*53ee8cc1Swenshuai.xi#ifdef YY_NEED_STRLEN 2282*53ee8cc1Swenshuai.xistatic int yy_flex_strlen (yyconst char * s ) 2283*53ee8cc1Swenshuai.xi{ 2284*53ee8cc1Swenshuai.xi register int n; 2285*53ee8cc1Swenshuai.xi for ( n = 0; s[n]; ++n ) 2286*53ee8cc1Swenshuai.xi ; 2287*53ee8cc1Swenshuai.xi 2288*53ee8cc1Swenshuai.xi return n; 2289*53ee8cc1Swenshuai.xi} 2290*53ee8cc1Swenshuai.xi#endif 2291*53ee8cc1Swenshuai.xi 2292*53ee8cc1Swenshuai.xivoid *zconfalloc (yy_size_t size ) 2293*53ee8cc1Swenshuai.xi{ 2294*53ee8cc1Swenshuai.xi return (void *) malloc( size ); 2295*53ee8cc1Swenshuai.xi} 2296*53ee8cc1Swenshuai.xi 2297*53ee8cc1Swenshuai.xivoid *zconfrealloc (void * ptr, yy_size_t size ) 2298*53ee8cc1Swenshuai.xi{ 2299*53ee8cc1Swenshuai.xi /* The cast to (char *) in the following accommodates both 2300*53ee8cc1Swenshuai.xi * implementations that use char* generic pointers, and those 2301*53ee8cc1Swenshuai.xi * that use void* generic pointers. It works with the latter 2302*53ee8cc1Swenshuai.xi * because both ANSI C and C++ allow castless assignment from 2303*53ee8cc1Swenshuai.xi * any pointer type to void*, and deal with argument conversions 2304*53ee8cc1Swenshuai.xi * as though doing an assignment. 2305*53ee8cc1Swenshuai.xi */ 2306*53ee8cc1Swenshuai.xi return (void *) realloc( (char *) ptr, size ); 2307*53ee8cc1Swenshuai.xi} 2308*53ee8cc1Swenshuai.xi 2309*53ee8cc1Swenshuai.xivoid zconffree (void * ptr ) 2310*53ee8cc1Swenshuai.xi{ 2311*53ee8cc1Swenshuai.xi free( (char *) ptr ); /* see zconfrealloc() for (char *) cast */ 2312*53ee8cc1Swenshuai.xi} 2313*53ee8cc1Swenshuai.xi 2314*53ee8cc1Swenshuai.xi#define YYTABLES_NAME "yytables" 2315*53ee8cc1Swenshuai.xi 2316*53ee8cc1Swenshuai.xivoid zconf_starthelp(void) 2317*53ee8cc1Swenshuai.xi{ 2318*53ee8cc1Swenshuai.xi new_string(); 2319*53ee8cc1Swenshuai.xi last_ts = first_ts = 0; 2320*53ee8cc1Swenshuai.xi BEGIN(HELP); 2321*53ee8cc1Swenshuai.xi} 2322*53ee8cc1Swenshuai.xi 2323*53ee8cc1Swenshuai.xistatic void zconf_endhelp(void) 2324*53ee8cc1Swenshuai.xi{ 2325*53ee8cc1Swenshuai.xi zconflval.string = text; 2326*53ee8cc1Swenshuai.xi BEGIN(INITIAL); 2327*53ee8cc1Swenshuai.xi} 2328*53ee8cc1Swenshuai.xi 2329*53ee8cc1Swenshuai.xi/* 2330*53ee8cc1Swenshuai.xi * Try to open specified file with following names: 2331*53ee8cc1Swenshuai.xi * ./name 2332*53ee8cc1Swenshuai.xi * $(srctree)/name 2333*53ee8cc1Swenshuai.xi * The latter is used when srctree is separate from objtree 2334*53ee8cc1Swenshuai.xi * when compiling the kernel. 2335*53ee8cc1Swenshuai.xi * Return NULL if file is not found. 2336*53ee8cc1Swenshuai.xi */ 2337*53ee8cc1Swenshuai.xiFILE *zconf_fopen(const char *name) 2338*53ee8cc1Swenshuai.xi{ 2339*53ee8cc1Swenshuai.xi char *env, fullname[PATH_MAX+1]; 2340*53ee8cc1Swenshuai.xi FILE *f; 2341*53ee8cc1Swenshuai.xi 2342*53ee8cc1Swenshuai.xi f = fopen(name, "r"); 2343*53ee8cc1Swenshuai.xi if (!f && name != NULL && name[0] != '/') { 2344*53ee8cc1Swenshuai.xi env = getenv(SRCTREE); 2345*53ee8cc1Swenshuai.xi if (env) { 2346*53ee8cc1Swenshuai.xi sprintf(fullname, "%s/%s", env, name); 2347*53ee8cc1Swenshuai.xi f = fopen(fullname, "r"); 2348*53ee8cc1Swenshuai.xi } 2349*53ee8cc1Swenshuai.xi } 2350*53ee8cc1Swenshuai.xi return f; 2351*53ee8cc1Swenshuai.xi} 2352*53ee8cc1Swenshuai.xi 2353*53ee8cc1Swenshuai.xivoid zconf_initscan(const char *name) 2354*53ee8cc1Swenshuai.xi{ 2355*53ee8cc1Swenshuai.xi zconfin = zconf_fopen(name); 2356*53ee8cc1Swenshuai.xi if (!zconfin) { 2357*53ee8cc1Swenshuai.xi printf("can't find file %s\n", name); 2358*53ee8cc1Swenshuai.xi exit(1); 2359*53ee8cc1Swenshuai.xi } 2360*53ee8cc1Swenshuai.xi 2361*53ee8cc1Swenshuai.xi current_buf = malloc(sizeof(*current_buf)); 2362*53ee8cc1Swenshuai.xi memset(current_buf, 0, sizeof(*current_buf)); 2363*53ee8cc1Swenshuai.xi 2364*53ee8cc1Swenshuai.xi current_file = file_lookup(name); 2365*53ee8cc1Swenshuai.xi current_file->lineno = 1; 2366*53ee8cc1Swenshuai.xi} 2367*53ee8cc1Swenshuai.xi 2368*53ee8cc1Swenshuai.xivoid zconf_nextfile(const char *name) 2369*53ee8cc1Swenshuai.xi{ 2370*53ee8cc1Swenshuai.xi struct file *iter; 2371*53ee8cc1Swenshuai.xi struct file *file = file_lookup(name); 2372*53ee8cc1Swenshuai.xi struct buffer *buf = malloc(sizeof(*buf)); 2373*53ee8cc1Swenshuai.xi memset(buf, 0, sizeof(*buf)); 2374*53ee8cc1Swenshuai.xi 2375*53ee8cc1Swenshuai.xi current_buf->state = YY_CURRENT_BUFFER; 2376*53ee8cc1Swenshuai.xi zconfin = zconf_fopen(file->name); 2377*53ee8cc1Swenshuai.xi if (!zconfin) { 2378*53ee8cc1Swenshuai.xi printf("%s:%d: can't open file \"%s\"\n", 2379*53ee8cc1Swenshuai.xi zconf_curname(), zconf_lineno(), file->name); 2380*53ee8cc1Swenshuai.xi exit(1); 2381*53ee8cc1Swenshuai.xi } 2382*53ee8cc1Swenshuai.xi zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE)); 2383*53ee8cc1Swenshuai.xi buf->parent = current_buf; 2384*53ee8cc1Swenshuai.xi current_buf = buf; 2385*53ee8cc1Swenshuai.xi 2386*53ee8cc1Swenshuai.xi for (iter = current_file->parent; iter; iter = iter->parent ) { 2387*53ee8cc1Swenshuai.xi if (!strcmp(current_file->name,iter->name) ) { 2388*53ee8cc1Swenshuai.xi printf("%s:%d: recursive inclusion detected. " 2389*53ee8cc1Swenshuai.xi "Inclusion path:\n current file : '%s'\n", 2390*53ee8cc1Swenshuai.xi zconf_curname(), zconf_lineno(), 2391*53ee8cc1Swenshuai.xi zconf_curname()); 2392*53ee8cc1Swenshuai.xi iter = current_file->parent; 2393*53ee8cc1Swenshuai.xi while (iter && \ 2394*53ee8cc1Swenshuai.xi strcmp(iter->name,current_file->name)) { 2395*53ee8cc1Swenshuai.xi printf(" included from: '%s:%d'\n", 2396*53ee8cc1Swenshuai.xi iter->name, iter->lineno-1); 2397*53ee8cc1Swenshuai.xi iter = iter->parent; 2398*53ee8cc1Swenshuai.xi } 2399*53ee8cc1Swenshuai.xi if (iter) 2400*53ee8cc1Swenshuai.xi printf(" included from: '%s:%d'\n", 2401*53ee8cc1Swenshuai.xi iter->name, iter->lineno+1); 2402*53ee8cc1Swenshuai.xi exit(1); 2403*53ee8cc1Swenshuai.xi } 2404*53ee8cc1Swenshuai.xi } 2405*53ee8cc1Swenshuai.xi file->lineno = 1; 2406*53ee8cc1Swenshuai.xi file->parent = current_file; 2407*53ee8cc1Swenshuai.xi current_file = file; 2408*53ee8cc1Swenshuai.xi} 2409*53ee8cc1Swenshuai.xi 2410*53ee8cc1Swenshuai.xistatic void zconf_endfile(void) 2411*53ee8cc1Swenshuai.xi{ 2412*53ee8cc1Swenshuai.xi struct buffer *parent; 2413*53ee8cc1Swenshuai.xi 2414*53ee8cc1Swenshuai.xi current_file = current_file->parent; 2415*53ee8cc1Swenshuai.xi 2416*53ee8cc1Swenshuai.xi parent = current_buf->parent; 2417*53ee8cc1Swenshuai.xi if (parent) { 2418*53ee8cc1Swenshuai.xi fclose(zconfin); 2419*53ee8cc1Swenshuai.xi zconf_delete_buffer(YY_CURRENT_BUFFER); 2420*53ee8cc1Swenshuai.xi zconf_switch_to_buffer(parent->state); 2421*53ee8cc1Swenshuai.xi } 2422*53ee8cc1Swenshuai.xi free(current_buf); 2423*53ee8cc1Swenshuai.xi current_buf = parent; 2424*53ee8cc1Swenshuai.xi} 2425*53ee8cc1Swenshuai.xi 2426*53ee8cc1Swenshuai.xiint zconf_lineno(void) 2427*53ee8cc1Swenshuai.xi{ 2428*53ee8cc1Swenshuai.xi return current_pos.lineno; 2429*53ee8cc1Swenshuai.xi} 2430*53ee8cc1Swenshuai.xi 2431*53ee8cc1Swenshuai.xiconst char *zconf_curname(void) 2432*53ee8cc1Swenshuai.xi{ 2433*53ee8cc1Swenshuai.xi return current_pos.file ? current_pos.file->name : "<none>"; 2434*53ee8cc1Swenshuai.xi} 2435*53ee8cc1Swenshuai.xi 2436