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