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