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