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