Annotation of embedaddon/strongswan/src/libstrongswan/settings/settings_lexer.c, revision 1.1.1.1

1.1       misho       1: #line 2 "settings/settings_lexer.c"
                      2: 
                      3: #line 4 "settings/settings_lexer.c"
                      4: 
                      5: #define  YY_INT_ALIGNED short int
                      6: 
                      7: /* A lexical scanner generated by flex */
                      8: 
                      9: /* %not-for-header */
                     10: /* %if-c-only */
                     11: /* %if-not-reentrant */
                     12: /* %endif */
                     13: /* %endif */
                     14: /* %ok-for-header */
                     15: 
                     16: #define FLEX_SCANNER
                     17: #define YY_FLEX_MAJOR_VERSION 2
                     18: #define YY_FLEX_MINOR_VERSION 6
                     19: #define YY_FLEX_SUBMINOR_VERSION 4
                     20: #if YY_FLEX_SUBMINOR_VERSION > 0
                     21: #define FLEX_BETA
                     22: #endif
                     23: 
                     24: /* %if-c++-only */
                     25: /* %endif */
                     26: 
                     27: /* %if-c-only */
                     28: #ifdef yy_create_buffer
                     29: #define settings_parser__create_buffer_ALREADY_DEFINED
                     30: #else
                     31: #define yy_create_buffer settings_parser__create_buffer
                     32: #endif
                     33: 
                     34: #ifdef yy_delete_buffer
                     35: #define settings_parser__delete_buffer_ALREADY_DEFINED
                     36: #else
                     37: #define yy_delete_buffer settings_parser__delete_buffer
                     38: #endif
                     39: 
                     40: #ifdef yy_scan_buffer
                     41: #define settings_parser__scan_buffer_ALREADY_DEFINED
                     42: #else
                     43: #define yy_scan_buffer settings_parser__scan_buffer
                     44: #endif
                     45: 
                     46: #ifdef yy_scan_string
                     47: #define settings_parser__scan_string_ALREADY_DEFINED
                     48: #else
                     49: #define yy_scan_string settings_parser__scan_string
                     50: #endif
                     51: 
                     52: #ifdef yy_scan_bytes
                     53: #define settings_parser__scan_bytes_ALREADY_DEFINED
                     54: #else
                     55: #define yy_scan_bytes settings_parser__scan_bytes
                     56: #endif
                     57: 
                     58: #ifdef yy_init_buffer
                     59: #define settings_parser__init_buffer_ALREADY_DEFINED
                     60: #else
                     61: #define yy_init_buffer settings_parser__init_buffer
                     62: #endif
                     63: 
                     64: #ifdef yy_flush_buffer
                     65: #define settings_parser__flush_buffer_ALREADY_DEFINED
                     66: #else
                     67: #define yy_flush_buffer settings_parser__flush_buffer
                     68: #endif
                     69: 
                     70: #ifdef yy_load_buffer_state
                     71: #define settings_parser__load_buffer_state_ALREADY_DEFINED
                     72: #else
                     73: #define yy_load_buffer_state settings_parser__load_buffer_state
                     74: #endif
                     75: 
                     76: #ifdef yy_switch_to_buffer
                     77: #define settings_parser__switch_to_buffer_ALREADY_DEFINED
                     78: #else
                     79: #define yy_switch_to_buffer settings_parser__switch_to_buffer
                     80: #endif
                     81: 
                     82: #ifdef yypush_buffer_state
                     83: #define settings_parser_push_buffer_state_ALREADY_DEFINED
                     84: #else
                     85: #define yypush_buffer_state settings_parser_push_buffer_state
                     86: #endif
                     87: 
                     88: #ifdef yypop_buffer_state
                     89: #define settings_parser_pop_buffer_state_ALREADY_DEFINED
                     90: #else
                     91: #define yypop_buffer_state settings_parser_pop_buffer_state
                     92: #endif
                     93: 
                     94: #ifdef yyensure_buffer_stack
                     95: #define settings_parser_ensure_buffer_stack_ALREADY_DEFINED
                     96: #else
                     97: #define yyensure_buffer_stack settings_parser_ensure_buffer_stack
                     98: #endif
                     99: 
                    100: #ifdef yylex
                    101: #define settings_parser_lex_ALREADY_DEFINED
                    102: #else
                    103: #define yylex settings_parser_lex
                    104: #endif
                    105: 
                    106: #ifdef yyrestart
                    107: #define settings_parser_restart_ALREADY_DEFINED
                    108: #else
                    109: #define yyrestart settings_parser_restart
                    110: #endif
                    111: 
                    112: #ifdef yylex_init
                    113: #define settings_parser_lex_init_ALREADY_DEFINED
                    114: #else
                    115: #define yylex_init settings_parser_lex_init
                    116: #endif
                    117: 
                    118: #ifdef yylex_init_extra
                    119: #define settings_parser_lex_init_extra_ALREADY_DEFINED
                    120: #else
                    121: #define yylex_init_extra settings_parser_lex_init_extra
                    122: #endif
                    123: 
                    124: #ifdef yylex_destroy
                    125: #define settings_parser_lex_destroy_ALREADY_DEFINED
                    126: #else
                    127: #define yylex_destroy settings_parser_lex_destroy
                    128: #endif
                    129: 
                    130: #ifdef yyget_debug
                    131: #define settings_parser_get_debug_ALREADY_DEFINED
                    132: #else
                    133: #define yyget_debug settings_parser_get_debug
                    134: #endif
                    135: 
                    136: #ifdef yyset_debug
                    137: #define settings_parser_set_debug_ALREADY_DEFINED
                    138: #else
                    139: #define yyset_debug settings_parser_set_debug
                    140: #endif
                    141: 
                    142: #ifdef yyget_extra
                    143: #define settings_parser_get_extra_ALREADY_DEFINED
                    144: #else
                    145: #define yyget_extra settings_parser_get_extra
                    146: #endif
                    147: 
                    148: #ifdef yyset_extra
                    149: #define settings_parser_set_extra_ALREADY_DEFINED
                    150: #else
                    151: #define yyset_extra settings_parser_set_extra
                    152: #endif
                    153: 
                    154: #ifdef yyget_in
                    155: #define settings_parser_get_in_ALREADY_DEFINED
                    156: #else
                    157: #define yyget_in settings_parser_get_in
                    158: #endif
                    159: 
                    160: #ifdef yyset_in
                    161: #define settings_parser_set_in_ALREADY_DEFINED
                    162: #else
                    163: #define yyset_in settings_parser_set_in
                    164: #endif
                    165: 
                    166: #ifdef yyget_out
                    167: #define settings_parser_get_out_ALREADY_DEFINED
                    168: #else
                    169: #define yyget_out settings_parser_get_out
                    170: #endif
                    171: 
                    172: #ifdef yyset_out
                    173: #define settings_parser_set_out_ALREADY_DEFINED
                    174: #else
                    175: #define yyset_out settings_parser_set_out
                    176: #endif
                    177: 
                    178: #ifdef yyget_leng
                    179: #define settings_parser_get_leng_ALREADY_DEFINED
                    180: #else
                    181: #define yyget_leng settings_parser_get_leng
                    182: #endif
                    183: 
                    184: #ifdef yyget_text
                    185: #define settings_parser_get_text_ALREADY_DEFINED
                    186: #else
                    187: #define yyget_text settings_parser_get_text
                    188: #endif
                    189: 
                    190: #ifdef yyget_lineno
                    191: #define settings_parser_get_lineno_ALREADY_DEFINED
                    192: #else
                    193: #define yyget_lineno settings_parser_get_lineno
                    194: #endif
                    195: 
                    196: #ifdef yyset_lineno
                    197: #define settings_parser_set_lineno_ALREADY_DEFINED
                    198: #else
                    199: #define yyset_lineno settings_parser_set_lineno
                    200: #endif
                    201: 
                    202: #ifdef yyget_column
                    203: #define settings_parser_get_column_ALREADY_DEFINED
                    204: #else
                    205: #define yyget_column settings_parser_get_column
                    206: #endif
                    207: 
                    208: #ifdef yyset_column
                    209: #define settings_parser_set_column_ALREADY_DEFINED
                    210: #else
                    211: #define yyset_column settings_parser_set_column
                    212: #endif
                    213: 
                    214: #ifdef yywrap
                    215: #define settings_parser_wrap_ALREADY_DEFINED
                    216: #else
                    217: #define yywrap settings_parser_wrap
                    218: #endif
                    219: 
                    220: /* %endif */
                    221: 
                    222: #ifdef yyget_lval
                    223: #define settings_parser_get_lval_ALREADY_DEFINED
                    224: #else
                    225: #define yyget_lval settings_parser_get_lval
                    226: #endif
                    227: 
                    228: #ifdef yyset_lval
                    229: #define settings_parser_set_lval_ALREADY_DEFINED
                    230: #else
                    231: #define yyset_lval settings_parser_set_lval
                    232: #endif
                    233: 
                    234: #ifdef yyalloc
                    235: #define settings_parser_alloc_ALREADY_DEFINED
                    236: #else
                    237: #define yyalloc settings_parser_alloc
                    238: #endif
                    239: 
                    240: #ifdef yyrealloc
                    241: #define settings_parser_realloc_ALREADY_DEFINED
                    242: #else
                    243: #define yyrealloc settings_parser_realloc
                    244: #endif
                    245: 
                    246: #ifdef yyfree
                    247: #define settings_parser_free_ALREADY_DEFINED
                    248: #else
                    249: #define yyfree settings_parser_free
                    250: #endif
                    251: 
                    252: /* %if-c-only */
                    253: 
                    254: /* %endif */
                    255: 
                    256: /* First, we deal with  platform-specific or compiler-specific issues. */
                    257: 
                    258: /* begin standard C headers. */
                    259: /* %if-c-only */
                    260: #include <stdio.h>
                    261: #include <string.h>
                    262: #include <errno.h>
                    263: #include <stdlib.h>
                    264: /* %endif */
                    265: 
                    266: /* %if-tables-serialization */
                    267: /* %endif */
                    268: /* end standard C headers. */
                    269: 
                    270: /* %if-c-or-c++ */
                    271: /* flex integer type definitions */
                    272: 
                    273: #ifndef FLEXINT_H
                    274: #define FLEXINT_H
                    275: 
                    276: /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
                    277: 
                    278: #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
                    279: 
                    280: /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
                    281:  * if you want the limit (max/min) macros for int types. 
                    282:  */
                    283: #ifndef __STDC_LIMIT_MACROS
                    284: #define __STDC_LIMIT_MACROS 1
                    285: #endif
                    286: 
                    287: #include <inttypes.h>
                    288: typedef int8_t flex_int8_t;
                    289: typedef uint8_t flex_uint8_t;
                    290: typedef int16_t flex_int16_t;
                    291: typedef uint16_t flex_uint16_t;
                    292: typedef int32_t flex_int32_t;
                    293: typedef uint32_t flex_uint32_t;
                    294: #else
                    295: typedef signed char flex_int8_t;
                    296: typedef short int flex_int16_t;
                    297: typedef int flex_int32_t;
                    298: typedef unsigned char flex_uint8_t; 
                    299: typedef unsigned short int flex_uint16_t;
                    300: typedef unsigned int flex_uint32_t;
                    301: 
                    302: /* Limits of integral types. */
                    303: #ifndef INT8_MIN
                    304: #define INT8_MIN               (-128)
                    305: #endif
                    306: #ifndef INT16_MIN
                    307: #define INT16_MIN              (-32767-1)
                    308: #endif
                    309: #ifndef INT32_MIN
                    310: #define INT32_MIN              (-2147483647-1)
                    311: #endif
                    312: #ifndef INT8_MAX
                    313: #define INT8_MAX               (127)
                    314: #endif
                    315: #ifndef INT16_MAX
                    316: #define INT16_MAX              (32767)
                    317: #endif
                    318: #ifndef INT32_MAX
                    319: #define INT32_MAX              (2147483647)
                    320: #endif
                    321: #ifndef UINT8_MAX
                    322: #define UINT8_MAX              (255U)
                    323: #endif
                    324: #ifndef UINT16_MAX
                    325: #define UINT16_MAX             (65535U)
                    326: #endif
                    327: #ifndef UINT32_MAX
                    328: #define UINT32_MAX             (4294967295U)
                    329: #endif
                    330: 
                    331: #ifndef SIZE_MAX
                    332: #define SIZE_MAX               (~(size_t)0)
                    333: #endif
                    334: 
                    335: #endif /* ! C99 */
                    336: 
                    337: #endif /* ! FLEXINT_H */
                    338: 
                    339: /* %endif */
                    340: 
                    341: /* begin standard C++ headers. */
                    342: /* %if-c++-only */
                    343: /* %endif */
                    344: 
                    345: /* TODO: this is always defined, so inline it */
                    346: #define yyconst const
                    347: 
                    348: #if defined(__GNUC__) && __GNUC__ >= 3
                    349: #define yynoreturn __attribute__((__noreturn__))
                    350: #else
                    351: #define yynoreturn
                    352: #endif
                    353: 
                    354: /* %not-for-header */
                    355: /* Returned upon end-of-file. */
                    356: #define YY_NULL 0
                    357: /* %ok-for-header */
                    358: 
                    359: /* %not-for-header */
                    360: /* Promotes a possibly negative, possibly signed char to an
                    361:  *   integer in range [0..255] for use as an array index.
                    362:  */
                    363: #define YY_SC_TO_UI(c) ((YY_CHAR) (c))
                    364: /* %ok-for-header */
                    365: 
                    366: /* %if-reentrant */
                    367: 
                    368: /* An opaque pointer. */
                    369: #ifndef YY_TYPEDEF_YY_SCANNER_T
                    370: #define YY_TYPEDEF_YY_SCANNER_T
                    371: typedef void* yyscan_t;
                    372: #endif
                    373: 
                    374: /* For convenience, these vars (plus the bison vars far below)
                    375:    are macros in the reentrant scanner. */
                    376: #define yyin yyg->yyin_r
                    377: #define yyout yyg->yyout_r
                    378: #define yyextra yyg->yyextra_r
                    379: #define yyleng yyg->yyleng_r
                    380: #define yytext yyg->yytext_r
                    381: #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
                    382: #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
                    383: #define yy_flex_debug yyg->yy_flex_debug_r
                    384: 
                    385: /* %endif */
                    386: 
                    387: /* %if-not-reentrant */
                    388: /* %endif */
                    389: 
                    390: /* Enter a start condition.  This macro really ought to take a parameter,
                    391:  * but we do it the disgusting crufty way forced on us by the ()-less
                    392:  * definition of BEGIN.
                    393:  */
                    394: #define BEGIN yyg->yy_start = 1 + 2 *
                    395: /* Translate the current start state into a value that can be later handed
                    396:  * to BEGIN to return to the state.  The YYSTATE alias is for lex
                    397:  * compatibility.
                    398:  */
                    399: #define YY_START ((yyg->yy_start - 1) / 2)
                    400: #define YYSTATE YY_START
                    401: /* Action number for EOF rule of a given start state. */
                    402: #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
                    403: /* Special action meaning "start processing a new file". */
                    404: #define YY_NEW_FILE yyrestart( yyin , yyscanner )
                    405: #define YY_END_OF_BUFFER_CHAR 0
                    406: 
                    407: /* Size of default input buffer. */
                    408: #ifndef YY_BUF_SIZE
                    409: #ifdef __ia64__
                    410: /* On IA-64, the buffer size is 16k, not 8k.
                    411:  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
                    412:  * Ditto for the __ia64__ case accordingly.
                    413:  */
                    414: #define YY_BUF_SIZE 32768
                    415: #else
                    416: #define YY_BUF_SIZE 16384
                    417: #endif /* __ia64__ */
                    418: #endif
                    419: 
                    420: /* The state buf must be large enough to hold one state per character in the main buffer.
                    421:  */
                    422: #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
                    423: 
                    424: #ifndef YY_TYPEDEF_YY_BUFFER_STATE
                    425: #define YY_TYPEDEF_YY_BUFFER_STATE
                    426: typedef struct yy_buffer_state *YY_BUFFER_STATE;
                    427: #endif
                    428: 
                    429: #ifndef YY_TYPEDEF_YY_SIZE_T
                    430: #define YY_TYPEDEF_YY_SIZE_T
                    431: typedef size_t yy_size_t;
                    432: #endif
                    433: 
                    434: /* %if-not-reentrant */
                    435: /* %endif */
                    436: 
                    437: /* %if-c-only */
                    438: /* %if-not-reentrant */
                    439: /* %endif */
                    440: /* %endif */
                    441: 
                    442: #define EOB_ACT_CONTINUE_SCAN 0
                    443: #define EOB_ACT_END_OF_FILE 1
                    444: #define EOB_ACT_LAST_MATCH 2
                    445:     
                    446:     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
                    447:      *       access to the local variable yy_act. Since yyless() is a macro, it would break
                    448:      *       existing scanners that call yyless() from OUTSIDE yylex.
                    449:      *       One obvious solution it to make yy_act a global. I tried that, and saw
                    450:      *       a 5% performance hit in a non-yylineno scanner, because yy_act is
                    451:      *       normally declared as a register variable-- so it is not worth it.
                    452:      */
                    453:     #define  YY_LESS_LINENO(n) \
                    454:             do { \
                    455:                 int yyl;\
                    456:                 for ( yyl = n; yyl < yyleng; ++yyl )\
                    457:                     if ( yytext[yyl] == '\n' )\
                    458:                         --yylineno;\
                    459:             }while(0)
                    460:     #define YY_LINENO_REWIND_TO(dst) \
                    461:             do {\
                    462:                 const char *p;\
                    463:                 for ( p = yy_cp-1; p >= (dst); --p)\
                    464:                     if ( *p == '\n' )\
                    465:                         --yylineno;\
                    466:             }while(0)
                    467:     
                    468: /* Return all but the first "n" matched characters back to the input stream. */
                    469: #define yyless(n) \
                    470:        do \
                    471:                { \
                    472:                /* Undo effects of setting up yytext. */ \
                    473:         int yyless_macro_arg = (n); \
                    474:         YY_LESS_LINENO(yyless_macro_arg);\
                    475:                *yy_cp = yyg->yy_hold_char; \
                    476:                YY_RESTORE_YY_MORE_OFFSET \
                    477:                yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
                    478:                YY_DO_BEFORE_ACTION; /* set up yytext again */ \
                    479:                } \
                    480:        while ( 0 )
                    481: #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
                    482: 
                    483: #ifndef YY_STRUCT_YY_BUFFER_STATE
                    484: #define YY_STRUCT_YY_BUFFER_STATE
                    485: struct yy_buffer_state
                    486:        {
                    487: /* %if-c-only */
                    488:        FILE *yy_input_file;
                    489: /* %endif */
                    490: 
                    491: /* %if-c++-only */
                    492: /* %endif */
                    493: 
                    494:        char *yy_ch_buf;                /* input buffer */
                    495:        char *yy_buf_pos;               /* current position in input buffer */
                    496: 
                    497:        /* Size of input buffer in bytes, not including room for EOB
                    498:         * characters.
                    499:         */
                    500:        int yy_buf_size;
                    501: 
                    502:        /* Number of characters read into yy_ch_buf, not including EOB
                    503:         * characters.
                    504:         */
                    505:        int yy_n_chars;
                    506: 
                    507:        /* Whether we "own" the buffer - i.e., we know we created it,
                    508:         * and can realloc() it to grow it, and should free() it to
                    509:         * delete it.
                    510:         */
                    511:        int yy_is_our_buffer;
                    512: 
                    513:        /* Whether this is an "interactive" input source; if so, and
                    514:         * if we're using stdio for input, then we want to use getc()
                    515:         * instead of fread(), to make sure we stop fetching input after
                    516:         * each newline.
                    517:         */
                    518:        int yy_is_interactive;
                    519: 
                    520:        /* Whether we're considered to be at the beginning of a line.
                    521:         * If so, '^' rules will be active on the next match, otherwise
                    522:         * not.
                    523:         */
                    524:        int yy_at_bol;
                    525: 
                    526:     int yy_bs_lineno; /**< The line count. */
                    527:     int yy_bs_column; /**< The column count. */
                    528: 
                    529:        /* Whether to try to fill the input buffer when we reach the
                    530:         * end of it.
                    531:         */
                    532:        int yy_fill_buffer;
                    533: 
                    534:        int yy_buffer_status;
                    535: 
                    536: #define YY_BUFFER_NEW 0
                    537: #define YY_BUFFER_NORMAL 1
                    538:        /* When an EOF's been seen but there's still some text to process
                    539:         * then we mark the buffer as YY_EOF_PENDING, to indicate that we
                    540:         * shouldn't try reading from the input source any more.  We might
                    541:         * still have a bunch of tokens to match, though, because of
                    542:         * possible backing-up.
                    543:         *
                    544:         * When we actually see the EOF, we change the status to "new"
                    545:         * (via yyrestart()), so that the user can continue scanning by
                    546:         * just pointing yyin at a new input file.
                    547:         */
                    548: #define YY_BUFFER_EOF_PENDING 2
                    549: 
                    550:        };
                    551: #endif /* !YY_STRUCT_YY_BUFFER_STATE */
                    552: 
                    553: /* %if-c-only Standard (non-C++) definition */
                    554: /* %not-for-header */
                    555: /* %if-not-reentrant */
                    556: /* %endif */
                    557: /* %ok-for-header */
                    558: 
                    559: /* %endif */
                    560: 
                    561: /* We provide macros for accessing buffer states in case in the
                    562:  * future we want to put the buffer states in a more general
                    563:  * "scanner state".
                    564:  *
                    565:  * Returns the top of the stack, or NULL.
                    566:  */
                    567: #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
                    568:                           ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
                    569:                           : NULL)
                    570: /* Same as previous macro, but useful when we know that the buffer stack is not
                    571:  * NULL or when we need an lvalue. For internal use only.
                    572:  */
                    573: #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
                    574: 
                    575: /* %if-c-only Standard (non-C++) definition */
                    576: 
                    577: /* %if-not-reentrant */
                    578: /* %not-for-header */
                    579: /* %ok-for-header */
                    580: 
                    581: /* %endif */
                    582: 
                    583: void yyrestart ( FILE *input_file , yyscan_t yyscanner );
                    584: void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
                    585: YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner );
                    586: void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
                    587: void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner );
                    588: void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner );
                    589: void yypop_buffer_state ( yyscan_t yyscanner );
                    590: 
                    591: static void yyensure_buffer_stack ( yyscan_t yyscanner );
                    592: static void yy_load_buffer_state ( yyscan_t yyscanner );
                    593: static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner );
                    594: #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner)
                    595: 
                    596: YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner );
                    597: YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner );
                    598: YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner );
                    599: 
                    600: /* %endif */
                    601: 
                    602: void *yyalloc ( yy_size_t , yyscan_t yyscanner );
                    603: void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner );
                    604: void yyfree ( void * , yyscan_t yyscanner );
                    605: 
                    606: #define yy_new_buffer yy_create_buffer
                    607: #define yy_set_interactive(is_interactive) \
                    608:        { \
                    609:        if ( ! YY_CURRENT_BUFFER ){ \
                    610:         yyensure_buffer_stack (yyscanner); \
                    611:                YY_CURRENT_BUFFER_LVALUE =    \
                    612:             yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
                    613:        } \
                    614:        YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
                    615:        }
                    616: #define yy_set_bol(at_bol) \
                    617:        { \
                    618:        if ( ! YY_CURRENT_BUFFER ){\
                    619:         yyensure_buffer_stack (yyscanner); \
                    620:                YY_CURRENT_BUFFER_LVALUE =    \
                    621:             yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \
                    622:        } \
                    623:        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
                    624:        }
                    625: #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
                    626: 
                    627: /* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
                    628: /* Begin user sect3 */
                    629: 
                    630: #define settings_parser_wrap(yyscanner) (/*CONSTCOND*/1)
                    631: #define YY_SKIP_YYWRAP
                    632: 
                    633: #define FLEX_DEBUG
                    634: typedef flex_uint8_t YY_CHAR;
                    635: 
                    636: typedef int yy_state_type;
                    637: 
                    638: #define yytext_ptr yytext_r
                    639: 
                    640: /* %% [1.5] DFA */
                    641: 
                    642: /* %if-c-only Standard (non-C++) definition */
                    643: 
                    644: static yy_state_type yy_get_previous_state ( yyscan_t yyscanner );
                    645: static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  , yyscan_t yyscanner);
                    646: static int yy_get_next_buffer ( yyscan_t yyscanner );
                    647: static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner );
                    648: 
                    649: /* %endif */
                    650: 
                    651: /* Done after the current pattern has been matched and before the
                    652:  * corresponding action - sets up yytext.
                    653:  */
                    654: #define YY_DO_BEFORE_ACTION \
                    655:        yyg->yytext_ptr = yy_bp; \
                    656: /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
                    657:        yyleng = (int) (yy_cp - yy_bp); \
                    658:        yyg->yy_hold_char = *yy_cp; \
                    659:        *yy_cp = '\0'; \
                    660: /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
                    661:        yyg->yy_c_buf_p = yy_cp;
                    662: /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
                    663: #define YY_NUM_RULES 39
                    664: #define YY_END_OF_BUFFER 40
                    665: /* This struct is not used in this scanner,
                    666:    but its presence is necessary. */
                    667: struct yy_trans_info
                    668:        {
                    669:        flex_int32_t yy_verify;
                    670:        flex_int32_t yy_nxt;
                    671:        };
                    672: static const flex_int16_t yy_accept[85] =
                    673:     {   0,
                    674:         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
                    675:        40,   12,    2,    3,    2,   11,    1,    7,    6,    8,
                    676:         9,   12,    4,    5,   17,   14,   15,   14,   18,   13,
                    677:        16,   23,   20,   21,   19,   22,   29,   25,   24,   26,
                    678:        27,   38,   30,   31,   32,   12,    2,    2,    1,    1,
                    679:         3,    0,   12,   17,    0,   14,   14,   13,   13,   15,
                    680:         0,   23,   20,   29,   28,   38,   37,   36,   37,   33,
                    681:        34,   35,    1,   12,   17,   13,   12,   12,   12,   12,
                    682:         0,   10,   10,    0
                    683:     } ;
                    684: 
                    685: static const YY_CHAR yy_ec[256] =
                    686:     {   0,
                    687:         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
                    688:         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
                    689:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    690:         1,    5,    1,    6,    7,    1,    1,    1,    1,    1,
                    691:         1,    1,    1,    8,    1,    9,    1,    1,    1,    1,
                    692:         1,    1,    1,    1,    1,    1,    1,   10,    1,    1,
                    693:        11,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    694:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    695:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    696:         1,   12,    1,    1,    1,    1,    1,    1,   13,   14,
                    697: 
                    698:        15,    1,    1,    1,   16,    1,    1,   17,    1,   18,
                    699:         1,    1,    1,   19,    1,   20,   21,    1,    1,    1,
                    700:         1,    1,   22,    1,   23,    1,    1,    1,    1,    1,
                    701:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    702:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    703:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    704:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    705:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    706:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    707:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    708: 
                    709:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    710:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    711:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    712:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    713:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    714:         1,    1,    1,    1,    1
                    715:     } ;
                    716: 
                    717: static const YY_CHAR yy_meta[24] =
                    718:     {   0,
                    719:         1,    2,    3,    4,    5,    6,    5,    7,    8,    7,
                    720:         9,   10,    1,    1,    1,    1,    1,    1,    1,    1,
                    721:         1,    7,    5
                    722:     } ;
                    723: 
                    724: static const flex_int16_t yy_base[103] =
                    725:     {   0,
                    726:         0,    0,   23,    0,   45,   67,   89,  111,   49,   50,
                    727:       124,    0,  133,  335,   55,  335,   60,  335,  335,  335,
                    728:       335,  104,  335,  335,  112,  139,  335,   73,  335,   62,
                    729:       335,    0,   74,  335,  335,  335,    0,  335,  335,  335,
                    730:         0,    0,  335,  335,  144,    0,    0,   78,    0,   81,
                    731:       335,  117,  106,  102,    0,    0,   84,    0,   94,  335,
                    732:       107,    0,   97,    0,  335,    0,  335,  335,  106,  335,
                    733:       335,  335,    0,   89,   78,    0,   60,   53,   43,   98,
                    734:       102,  335,  103,  335,  164,  174,  184,  194,  204,  214,
                    735:       224,  234,  244,  249,  255,  264,  274,  284,  294,  304,
                    736: 
                    737:       314,  324
                    738:     } ;
                    739: 
                    740: static const flex_int16_t yy_def[103] =
                    741:     {   0,
                    742:        84,    1,   84,    3,   85,   85,   86,   86,   87,   87,
                    743:        84,   88,   84,   84,   84,   84,   89,   84,   84,   84,
                    744:        84,   88,   84,   84,   90,   84,   84,   84,   84,   91,
                    745:        84,   92,   84,   84,   84,   84,   93,   84,   84,   84,
                    746:        94,   95,   84,   84,   96,   88,   13,   84,   97,   89,
                    747:        84,   98,   88,   90,   99,   26,   84,  100,   91,   84,
                    748:       101,   92,   84,   93,   84,   95,   84,   84,   84,   84,
                    749:        84,   84,   97,   88,   99,  100,   88,   88,   88,   88,
                    750:       102,   84,  102,    0,   84,   84,   84,   84,   84,   84,
                    751:        84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
                    752: 
                    753:        84,   84
                    754:     } ;
                    755: 
                    756: static const flex_int16_t yy_nxt[359] =
                    757:     {   0,
                    758:        12,   13,   14,   15,   13,   16,   17,   18,   19,   20,
                    759:        21,   12,   12,   12,   12,   22,   12,   12,   12,   12,
                    760:        12,   23,   24,   25,   26,   27,   28,   26,   29,   30,
                    761:        31,   29,   29,   29,   25,   25,   25,   25,   25,   25,
                    762:        25,   25,   25,   25,   29,   29,   33,   34,   35,   33,
                    763:        36,   34,   43,   43,   44,   44,   48,   80,   48,   48,
                    764:        45,   45,   51,   52,   60,   61,   79,   34,   33,   34,
                    765:        35,   33,   36,   34,   57,   63,   57,   57,   63,   48,
                    766:        78,   48,   48,   51,   52,   57,   55,   57,   57,   34,
                    767:        38,   38,   39,   38,   40,   38,   60,   61,   63,   81,
                    768: 
                    769:        41,   63,   81,   83,   83,   77,   83,   83,   68,   60,
                    770:        55,   38,   38,   38,   39,   38,   40,   38,   74,   51,
                    771:        55,   53,   41,   84,   84,   84,   84,   84,   84,   84,
                    772:        84,   84,   84,   38,   47,   84,   48,   47,   84,   49,
                    773:        56,   84,   57,   56,   84,   58,   68,   69,   84,   84,
                    774:        84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
                    775:        84,   70,   71,   72,   32,   32,   32,   32,   32,   32,
                    776:        32,   32,   32,   32,   37,   37,   37,   37,   37,   37,
                    777:        37,   37,   37,   37,   42,   42,   42,   42,   42,   42,
                    778:        42,   42,   42,   42,   46,   84,   84,   84,   84,   84,
                    779: 
                    780:        84,   84,   84,   46,   50,   50,   50,   50,   50,   50,
                    781:        50,   50,   50,   50,   54,   84,   84,   84,   84,   84,
                    782:        84,   54,   84,   54,   59,   59,   59,   59,   59,   59,
                    783:        59,   59,   59,   59,   62,   84,   84,   84,   84,   84,
                    784:        62,   62,   62,   62,   64,   84,   84,   84,   84,   84,
                    785:        64,   64,   64,   65,   65,   66,   66,   66,   84,   66,
                    786:        84,   66,   66,   66,   67,   67,   67,   67,   67,   67,
                    787:        67,   67,   67,   67,   73,   73,   84,   84,   73,   73,
                    788:        73,   73,   73,   73,   52,   52,   52,   52,   52,   52,
                    789:        52,   52,   52,   52,   75,   84,   84,   84,   84,   84,
                    790: 
                    791:        84,   84,   84,   75,   76,   76,   84,   84,   76,   76,
                    792:        76,   76,   76,   76,   61,   61,   61,   61,   61,   61,
                    793:        61,   61,   61,   61,   82,   82,   82,   82,   82,   82,
                    794:        82,   82,   84,   82,   11,   84,   84,   84,   84,   84,
                    795:        84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
                    796:        84,   84,   84,   84,   84,   84,   84,   84
                    797:     } ;
                    798: 
                    799: static const flex_int16_t yy_chk[359] =
                    800:     {   0,
                    801:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    802:         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
                    803:         1,    1,    1,    3,    3,    3,    3,    3,    3,    3,
                    804:         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
                    805:         3,    3,    3,    3,    3,    3,    5,    5,    5,    5,
                    806:         5,    5,    9,   10,    9,   10,   15,   79,   15,   15,
                    807:         9,   10,   17,   17,   30,   30,   78,    5,    6,    6,
                    808:         6,    6,    6,    6,   28,   33,   28,   28,   33,   48,
                    809:        77,   48,   48,   50,   50,   57,   75,   57,   57,    6,
                    810:         7,    7,    7,    7,    7,    7,   59,   59,   63,   80,
                    811: 
                    812:         7,   63,   80,   81,   83,   74,   81,   83,   69,   61,
                    813:        54,    7,    8,    8,    8,    8,    8,    8,   53,   52,
                    814:        25,   22,    8,   11,    0,    0,    0,    0,    0,    0,
                    815:         0,    0,    0,    8,   13,    0,   13,   13,    0,   13,
                    816:        26,    0,   26,   26,    0,   26,   45,   45,    0,    0,
                    817:         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
                    818:         0,   45,   45,   45,   85,   85,   85,   85,   85,   85,
                    819:        85,   85,   85,   85,   86,   86,   86,   86,   86,   86,
                    820:        86,   86,   86,   86,   87,   87,   87,   87,   87,   87,
                    821:        87,   87,   87,   87,   88,    0,    0,    0,    0,    0,
                    822: 
                    823:         0,    0,    0,   88,   89,   89,   89,   89,   89,   89,
                    824:        89,   89,   89,   89,   90,    0,    0,    0,    0,    0,
                    825:         0,   90,    0,   90,   91,   91,   91,   91,   91,   91,
                    826:        91,   91,   91,   91,   92,    0,    0,    0,    0,    0,
                    827:        92,   92,   92,   92,   93,    0,    0,    0,    0,    0,
                    828:        93,   93,   93,   94,   94,   95,   95,   95,    0,   95,
                    829:         0,   95,   95,   95,   96,   96,   96,   96,   96,   96,
                    830:        96,   96,   96,   96,   97,   97,    0,    0,   97,   97,
                    831:        97,   97,   97,   97,   98,   98,   98,   98,   98,   98,
                    832:        98,   98,   98,   98,   99,    0,    0,    0,    0,    0,
                    833: 
                    834:         0,    0,    0,   99,  100,  100,    0,    0,  100,  100,
                    835:       100,  100,  100,  100,  101,  101,  101,  101,  101,  101,
                    836:       101,  101,  101,  101,  102,  102,  102,  102,  102,  102,
                    837:       102,  102,    0,  102,   84,   84,   84,   84,   84,   84,
                    838:        84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
                    839:        84,   84,   84,   84,   84,   84,   84,   84
                    840:     } ;
                    841: 
                    842: /* Table of booleans, true if rule could match eol. */
                    843: static const flex_int32_t yy_rule_can_match_eol[40] =
                    844:     {   0,
                    845: 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 
                    846:     0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 
                    847:         };
                    848: 
                    849: static const flex_int16_t yy_rule_linenum[39] =
                    850:     {   0,
                    851:        71,   72,   73,   75,   76,   78,   79,   81,   86,   91,
                    852:        96,  101,  107,  108,  109,  111,  113,  118,  125,  126,
                    853:       128,  149,  155,  162,  165,  185,  188,  191,  194,  200,
                    854:       201,  203,  223,  224,  225,  226,  227,  228
                    855:     } ;
                    856: 
                    857: /* The intent behind this definition is that it'll catch
                    858:  * any uses of REJECT which flex missed.
                    859:  */
                    860: #define REJECT reject_used_but_not_detected
                    861: #define yymore() yymore_used_but_not_detected
                    862: #define YY_MORE_ADJ 0
                    863: #define YY_RESTORE_YY_MORE_OFFSET
                    864: #line 1 "settings/settings_lexer.l"
                    865: #line 2 "settings/settings_lexer.l"
                    866: /*
                    867:  * Copyright (C) 2014-2018 Tobias Brunner
                    868:  * HSR Hochschule fuer Technik Rapperswil
                    869:  *
                    870:  * This program is free software; you can redistribute it and/or modify it
                    871:  * under the terms of the GNU General Public License as published by the
                    872:  * Free Software Foundation; either version 2 of the License, or (at your
                    873:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                    874:  *
                    875:  * This program is distributed in the hope that it will be useful, but
                    876:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                    877:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                    878:  * for more details.
                    879:  */
                    880: 
                    881: #include <utils/parser_helper.h>
                    882: 
                    883: #include "settings_parser.h"
                    884: 
                    885: bool settings_parser_open_next_file(parser_helper_t *ctx);
                    886: 
                    887: static void include_files(parser_helper_t *ctx);
                    888: 
                    889: #line 890 "settings/settings_lexer.c"
                    890: /* use start conditions stack */
                    891: /* do not declare unneeded functions */
                    892: #define YY_NO_INPUT 1
                    893: /* do not include unistd.h as it might conflict with our scanner states */
                    894: #define YY_NO_UNISTD_H 1
                    895: /* due to that disable interactive mode, which requires isatty() */
                    896: /* don't use global variables, and interact properly with bison */
                    897: /* maintain the line number */
                    898: /* don't generate a default rule */
                    899: /* prefix function/variable declarations */
                    900: /* don't change the name of the output file otherwise autotools has issues */
                    901: /* type of our extra data */
                    902: /* state used to scan references */
                    903: 
                    904: /* state used to scan values */
                    905: 
                    906: /* state used to scan include file patterns */
                    907: 
                    908: /* state used to scan quoted strings */
                    909: 
                    910: /* pattern for section/key names */
                    911: #line 912 "settings/settings_lexer.c"
                    912: 
                    913: #define INITIAL 0
                    914: #define ref 1
                    915: #define val 2
                    916: #define inc 3
                    917: #define str 4
                    918: 
                    919: #ifndef YY_NO_UNISTD_H
                    920: /* Special case for "unistd.h", since it is non-ANSI. We include it way
                    921:  * down here because we want the user's section 1 to have been scanned first.
                    922:  * The user has a chance to override it with an option.
                    923:  */
                    924: /* %if-c-only */
                    925: #include <unistd.h>
                    926: /* %endif */
                    927: /* %if-c++-only */
                    928: /* %endif */
                    929: #endif
                    930: 
                    931: #define YY_EXTRA_TYPE parser_helper_t*
                    932: 
                    933: /* %if-c-only Reentrant structure and macros (non-C++). */
                    934: /* %if-reentrant */
                    935: 
                    936: /* Holds the entire state of the reentrant scanner. */
                    937: struct yyguts_t
                    938:     {
                    939: 
                    940:     /* User-defined. Not touched by flex. */
                    941:     YY_EXTRA_TYPE yyextra_r;
                    942: 
                    943:     /* The rest are the same as the globals declared in the non-reentrant scanner. */
                    944:     FILE *yyin_r, *yyout_r;
                    945:     size_t yy_buffer_stack_top; /**< index of top of stack. */
                    946:     size_t yy_buffer_stack_max; /**< capacity of stack. */
                    947:     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
                    948:     char yy_hold_char;
                    949:     int yy_n_chars;
                    950:     int yyleng_r;
                    951:     char *yy_c_buf_p;
                    952:     int yy_init;
                    953:     int yy_start;
                    954:     int yy_did_buffer_switch_on_eof;
                    955:     int yy_start_stack_ptr;
                    956:     int yy_start_stack_depth;
                    957:     int *yy_start_stack;
                    958:     yy_state_type yy_last_accepting_state;
                    959:     char* yy_last_accepting_cpos;
                    960: 
                    961:     int yylineno_r;
                    962:     int yy_flex_debug_r;
                    963: 
                    964:     char *yytext_r;
                    965:     int yy_more_flag;
                    966:     int yy_more_len;
                    967: 
                    968:     YYSTYPE * yylval_r;
                    969: 
                    970:     }; /* end struct yyguts_t */
                    971: 
                    972: /* %if-c-only */
                    973: 
                    974: static int yy_init_globals ( yyscan_t yyscanner );
                    975: 
                    976: /* %endif */
                    977: 
                    978: /* %if-reentrant */
                    979: 
                    980:     /* This must go here because YYSTYPE and YYLTYPE are included
                    981:      * from bison output in section 1.*/
                    982:     #    define yylval yyg->yylval_r
                    983:     
                    984: int yylex_init (yyscan_t* scanner);
                    985: 
                    986: int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner);
                    987: 
                    988: /* %endif */
                    989: 
                    990: /* %endif End reentrant structures and macros. */
                    991: 
                    992: /* Accessor methods to globals.
                    993:    These are made visible to non-reentrant scanners for convenience. */
                    994: 
                    995: int yylex_destroy ( yyscan_t yyscanner );
                    996: 
                    997: int yyget_debug ( yyscan_t yyscanner );
                    998: 
                    999: void yyset_debug ( int debug_flag , yyscan_t yyscanner );
                   1000: 
                   1001: YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner );
                   1002: 
                   1003: void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner );
                   1004: 
                   1005: FILE *yyget_in ( yyscan_t yyscanner );
                   1006: 
                   1007: void yyset_in  ( FILE * _in_str , yyscan_t yyscanner );
                   1008: 
                   1009: FILE *yyget_out ( yyscan_t yyscanner );
                   1010: 
                   1011: void yyset_out  ( FILE * _out_str , yyscan_t yyscanner );
                   1012: 
                   1013:                        int yyget_leng ( yyscan_t yyscanner );
                   1014: 
                   1015: char *yyget_text ( yyscan_t yyscanner );
                   1016: 
                   1017: int yyget_lineno ( yyscan_t yyscanner );
                   1018: 
                   1019: void yyset_lineno ( int _line_number , yyscan_t yyscanner );
                   1020: 
                   1021: int yyget_column  ( yyscan_t yyscanner );
                   1022: 
                   1023: void yyset_column ( int _column_no , yyscan_t yyscanner );
                   1024: 
                   1025: /* %if-bison-bridge */
                   1026: 
                   1027: YYSTYPE * yyget_lval ( yyscan_t yyscanner );
                   1028: 
                   1029: void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner );
                   1030: 
                   1031: /* %endif */
                   1032: 
                   1033: /* Macros after this point can all be overridden by user definitions in
                   1034:  * section 1.
                   1035:  */
                   1036: 
                   1037: #ifndef YY_SKIP_YYWRAP
                   1038: #ifdef __cplusplus
                   1039: extern "C" int yywrap ( yyscan_t yyscanner );
                   1040: #else
                   1041: extern int yywrap ( yyscan_t yyscanner );
                   1042: #endif
                   1043: #endif
                   1044: 
                   1045: /* %not-for-header */
                   1046: #ifndef YY_NO_UNPUT
                   1047:     
                   1048:     static void yyunput ( int c, char *buf_ptr  , yyscan_t yyscanner);
                   1049:     
                   1050: #endif
                   1051: /* %ok-for-header */
                   1052: 
                   1053: /* %endif */
                   1054: 
                   1055: #ifndef yytext_ptr
                   1056: static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner);
                   1057: #endif
                   1058: 
                   1059: #ifdef YY_NEED_STRLEN
                   1060: static int yy_flex_strlen ( const char * , yyscan_t yyscanner);
                   1061: #endif
                   1062: 
                   1063: #ifndef YY_NO_INPUT
                   1064: /* %if-c-only Standard (non-C++) definition */
                   1065: /* %not-for-header */
                   1066: #ifdef __cplusplus
                   1067: static int yyinput ( yyscan_t yyscanner );
                   1068: #else
                   1069: static int input ( yyscan_t yyscanner );
                   1070: #endif
                   1071: /* %ok-for-header */
                   1072: 
                   1073: /* %endif */
                   1074: #endif
                   1075: 
                   1076: /* %if-c-only */
                   1077: 
                   1078:     static void yy_push_state ( int _new_state , yyscan_t yyscanner);
                   1079:     
                   1080:     static void yy_pop_state ( yyscan_t yyscanner );
                   1081:     
                   1082:     static int yy_top_state ( yyscan_t yyscanner );
                   1083:     
                   1084: /* %endif */
                   1085: 
                   1086: /* Amount of stuff to slurp up with each read. */
                   1087: #ifndef YY_READ_BUF_SIZE
                   1088: #ifdef __ia64__
                   1089: /* On IA-64, the buffer size is 16k, not 8k */
                   1090: #define YY_READ_BUF_SIZE 16384
                   1091: #else
                   1092: #define YY_READ_BUF_SIZE 8192
                   1093: #endif /* __ia64__ */
                   1094: #endif
                   1095: 
                   1096: /* Copy whatever the last rule matched to the standard output. */
                   1097: #ifndef ECHO
                   1098: /* %if-c-only Standard (non-C++) definition */
                   1099: /* This used to be an fputs(), but since the string might contain NUL's,
                   1100:  * we now use fwrite().
                   1101:  */
                   1102: #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
                   1103: /* %endif */
                   1104: /* %if-c++-only C++ definition */
                   1105: /* %endif */
                   1106: #endif
                   1107: 
                   1108: /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
                   1109:  * is returned in "result".
                   1110:  */
                   1111: #ifndef YY_INPUT
                   1112: #define YY_INPUT(buf,result,max_size) \
                   1113: /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
                   1114:        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                   1115:                { \
                   1116:                int c = '*'; \
                   1117:                int n; \
                   1118:                for ( n = 0; n < max_size && \
                   1119:                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
                   1120:                        buf[n] = (char) c; \
                   1121:                if ( c == '\n' ) \
                   1122:                        buf[n++] = (char) c; \
                   1123:                if ( c == EOF && ferror( yyin ) ) \
                   1124:                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
                   1125:                result = n; \
                   1126:                } \
                   1127:        else \
                   1128:                { \
                   1129:                errno=0; \
                   1130:                while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
                   1131:                        { \
                   1132:                        if( errno != EINTR) \
                   1133:                                { \
                   1134:                                YY_FATAL_ERROR( "input in flex scanner failed" ); \
                   1135:                                break; \
                   1136:                                } \
                   1137:                        errno=0; \
                   1138:                        clearerr(yyin); \
                   1139:                        } \
                   1140:                }\
                   1141: \
                   1142: /* %if-c++-only C++ definition \ */\
                   1143: /* %endif */
                   1144: 
                   1145: #endif
                   1146: 
                   1147: /* No semi-colon after return; correct usage is to write "yyterminate();" -
                   1148:  * we don't want an extra ';' after the "return" because that will cause
                   1149:  * some compilers to complain about unreachable statements.
                   1150:  */
                   1151: #ifndef yyterminate
                   1152: #define yyterminate() return YY_NULL
                   1153: #endif
                   1154: 
                   1155: /* Number of entries by which start-condition stack grows. */
                   1156: #ifndef YY_START_STACK_INCR
                   1157: #define YY_START_STACK_INCR 25
                   1158: #endif
                   1159: 
                   1160: /* Report a fatal error. */
                   1161: #ifndef YY_FATAL_ERROR
                   1162: /* %if-c-only */
                   1163: #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
                   1164: /* %endif */
                   1165: /* %if-c++-only */
                   1166: /* %endif */
                   1167: #endif
                   1168: 
                   1169: /* %if-tables-serialization structures and prototypes */
                   1170: /* %not-for-header */
                   1171: /* %ok-for-header */
                   1172: 
                   1173: /* %not-for-header */
                   1174: /* %tables-yydmap generated elements */
                   1175: /* %endif */
                   1176: /* end tables serialization structures and prototypes */
                   1177: 
                   1178: /* %ok-for-header */
                   1179: 
                   1180: /* Default declaration of generated scanner - a define so the user can
                   1181:  * easily add parameters.
                   1182:  */
                   1183: #ifndef YY_DECL
                   1184: #define YY_DECL_IS_OURS 1
                   1185: /* %if-c-only Standard (non-C++) definition */
                   1186: 
                   1187: extern int yylex \
                   1188:                (YYSTYPE * yylval_param , yyscan_t yyscanner);
                   1189: 
                   1190: #define YY_DECL int yylex \
                   1191:                (YYSTYPE * yylval_param , yyscan_t yyscanner)
                   1192: /* %endif */
                   1193: /* %if-c++-only C++ definition */
                   1194: /* %endif */
                   1195: #endif /* !YY_DECL */
                   1196: 
                   1197: /* Code executed at the beginning of each rule, after yytext and yyleng
                   1198:  * have been set up.
                   1199:  */
                   1200: #ifndef YY_USER_ACTION
                   1201: #define YY_USER_ACTION
                   1202: #endif
                   1203: 
                   1204: /* Code executed at the end of each rule. */
                   1205: #ifndef YY_BREAK
                   1206: #define YY_BREAK /*LINTED*/break;
                   1207: #endif
                   1208: 
                   1209: /* %% [6.0] YY_RULE_SETUP definition goes here */
                   1210: #define YY_RULE_SETUP \
                   1211:        YY_USER_ACTION
                   1212: 
                   1213: /* %not-for-header */
                   1214: /** The main scanner function which does all the work.
                   1215:  */
                   1216: YY_DECL
                   1217: {
                   1218:        yy_state_type yy_current_state;
                   1219:        char *yy_cp, *yy_bp;
                   1220:        int yy_act;
                   1221:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   1222: 
                   1223:     yylval = yylval_param;
                   1224: 
                   1225:        if ( !yyg->yy_init )
                   1226:                {
                   1227:                yyg->yy_init = 1;
                   1228: 
                   1229: #ifdef YY_USER_INIT
                   1230:                YY_USER_INIT;
                   1231: #endif
                   1232: 
                   1233:                if ( ! yyg->yy_start )
                   1234:                        yyg->yy_start = 1;      /* first start state */
                   1235: 
                   1236:                if ( ! yyin )
                   1237: /* %if-c-only */
                   1238:                        yyin = stdin;
                   1239: /* %endif */
                   1240: /* %if-c++-only */
                   1241: /* %endif */
                   1242: 
                   1243:                if ( ! yyout )
                   1244: /* %if-c-only */
                   1245:                        yyout = stdout;
                   1246: /* %endif */
                   1247: /* %if-c++-only */
                   1248: /* %endif */
                   1249: 
                   1250:                if ( ! YY_CURRENT_BUFFER ) {
                   1251:                        yyensure_buffer_stack (yyscanner);
                   1252:                        YY_CURRENT_BUFFER_LVALUE =
                   1253:                                yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
                   1254:                }
                   1255: 
                   1256:                yy_load_buffer_state( yyscanner );
                   1257:                }
                   1258: 
                   1259:        {
                   1260: /* %% [7.0] user's declarations go here */
                   1261: #line 69 "settings/settings_lexer.l"
                   1262: 
                   1263: 
                   1264: #line 1265 "settings/settings_lexer.c"
                   1265: 
                   1266:        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                   1267:                {
                   1268: /* %% [8.0] yymore()-related code goes here */
                   1269:                yy_cp = yyg->yy_c_buf_p;
                   1270: 
                   1271:                /* Support of yytext. */
                   1272:                *yy_cp = yyg->yy_hold_char;
                   1273: 
                   1274:                /* yy_bp points to the position in yy_ch_buf of the start of
                   1275:                 * the current run.
                   1276:                 */
                   1277:                yy_bp = yy_cp;
                   1278: 
                   1279: /* %% [9.0] code to set up and find next match goes here */
                   1280:                yy_current_state = yyg->yy_start;
                   1281: yy_match:
                   1282:                do
                   1283:                        {
                   1284:                        YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
                   1285:                        if ( yy_accept[yy_current_state] )
                   1286:                                {
                   1287:                                yyg->yy_last_accepting_state = yy_current_state;
                   1288:                                yyg->yy_last_accepting_cpos = yy_cp;
                   1289:                                }
                   1290:                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                   1291:                                {
                   1292:                                yy_current_state = (int) yy_def[yy_current_state];
                   1293:                                if ( yy_current_state >= 85 )
                   1294:                                        yy_c = yy_meta[yy_c];
                   1295:                                }
                   1296:                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                   1297:                        ++yy_cp;
                   1298:                        }
                   1299:                while ( yy_current_state != 84 );
                   1300:                yy_cp = yyg->yy_last_accepting_cpos;
                   1301:                yy_current_state = yyg->yy_last_accepting_state;
                   1302: 
                   1303: yy_find_action:
                   1304: /* %% [10.0] code to find the action number goes here */
                   1305:                yy_act = yy_accept[yy_current_state];
                   1306: 
                   1307:                YY_DO_BEFORE_ACTION;
                   1308: 
                   1309: /* %% [11.0] code for yylineno update goes here */
                   1310: 
                   1311:                if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
                   1312:                        {
                   1313:                        int yyl;
                   1314:                        for ( yyl = 0; yyl < yyleng; ++yyl )
                   1315:                                if ( yytext[yyl] == '\n' )
                   1316:                                        
                   1317:     do{ yylineno++;
                   1318:         yycolumn=0;
                   1319:     }while(0)
                   1320: ;
                   1321:                        }
                   1322: 
                   1323: do_action:     /* This label is used only to access EOF actions. */
                   1324: 
                   1325: /* %% [12.0] debug code goes here */
                   1326:                if ( yy_flex_debug )
                   1327:                        {
                   1328:                        if ( yy_act == 0 )
                   1329:                                fprintf( stderr, "--scanner backing up\n" );
                   1330:                        else if ( yy_act < 39 )
                   1331:                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                   1332:                                         (long)yy_rule_linenum[yy_act], yytext );
                   1333:                        else if ( yy_act == 39 )
                   1334:                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                   1335:                                         yytext );
                   1336:                        else if ( yy_act == 40 )
                   1337:                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                   1338:                        else
                   1339:                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
                   1340:                        }
                   1341: 
                   1342:                switch ( yy_act )
                   1343:        { /* beginning of action switch */
                   1344: /* %% [13.0] actions go here */
                   1345:                        case 0: /* must back up */
                   1346:                        /* undo the effects of YY_DO_BEFORE_ACTION */
                   1347:                        *yy_cp = yyg->yy_hold_char;
                   1348:                        yy_cp = yyg->yy_last_accepting_cpos;
                   1349:                        yy_current_state = yyg->yy_last_accepting_state;
                   1350:                        goto yy_find_action;
                   1351: 
                   1352: case 1:
                   1353: YY_RULE_SETUP
                   1354: #line 71 "settings/settings_lexer.l"
                   1355: /* eat comments */
                   1356:        YY_BREAK
                   1357: case 2:
                   1358: YY_RULE_SETUP
                   1359: #line 72 "settings/settings_lexer.l"
                   1360: /* eat whitespace */
                   1361:        YY_BREAK
                   1362: case 3:
                   1363: /* rule 3 can match eol */
                   1364: YY_RULE_SETUP
                   1365: #line 73 "settings/settings_lexer.l"
                   1366: /* eat newlines and comments at the end of a line */
                   1367:        YY_BREAK
                   1368: case 4:
                   1369: #line 76 "settings/settings_lexer.l"
                   1370: case 5:
                   1371: YY_RULE_SETUP
                   1372: #line 76 "settings/settings_lexer.l"
                   1373: return yytext[0];
                   1374:        YY_BREAK
                   1375: case 6:
                   1376: YY_RULE_SETUP
                   1377: #line 78 "settings/settings_lexer.l"
                   1378: return DOT;
                   1379:        YY_BREAK
                   1380: case 7:
                   1381: YY_RULE_SETUP
                   1382: #line 79 "settings/settings_lexer.l"
                   1383: return COMMA;
                   1384:        YY_BREAK
                   1385: case 8:
                   1386: YY_RULE_SETUP
                   1387: #line 81 "settings/settings_lexer.l"
                   1388: {
                   1389:        yy_push_state(ref, yyscanner);
                   1390:        return COLON;
                   1391: }
                   1392:        YY_BREAK
                   1393: case 9:
                   1394: YY_RULE_SETUP
                   1395: #line 86 "settings/settings_lexer.l"
                   1396: {
                   1397:        yy_push_state(val, yyscanner);
                   1398:        return yytext[0];
                   1399: }
                   1400:        YY_BREAK
                   1401: case 10:
                   1402: /* rule 10 can match eol */
                   1403: *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
                   1404: YY_LINENO_REWIND_TO(yy_cp - 1);
                   1405: yyg->yy_c_buf_p = yy_cp -= 1;
                   1406: YY_DO_BEFORE_ACTION; /* set up yytext again */
                   1407: YY_RULE_SETUP
                   1408: #line 91 "settings/settings_lexer.l"
                   1409: {
                   1410:        yyextra->string_init(yyextra);
                   1411:        yy_push_state(inc, yyscanner);
                   1412: }
                   1413:        YY_BREAK
                   1414: case 11:
                   1415: YY_RULE_SETUP
                   1416: #line 96 "settings/settings_lexer.l"
                   1417: {
                   1418:        PARSER_DBG1(yyextra, "unexpected string detected");
                   1419:        return STRING_ERROR;
                   1420: }
                   1421:        YY_BREAK
                   1422: case 12:
                   1423: YY_RULE_SETUP
                   1424: #line 101 "settings/settings_lexer.l"
                   1425: {
                   1426:        yylval->s = strdup(yytext);
                   1427:        return NAME;
                   1428: }
                   1429:        YY_BREAK
                   1430: 
                   1431: case 13:
                   1432: YY_RULE_SETUP
                   1433: #line 107 "settings/settings_lexer.l"
                   1434: /* eat comments */
                   1435:        YY_BREAK
                   1436: case 14:
                   1437: YY_RULE_SETUP
                   1438: #line 108 "settings/settings_lexer.l"
                   1439: /* eat whitespace */
                   1440:        YY_BREAK
                   1441: case 15:
                   1442: /* rule 15 can match eol */
                   1443: YY_RULE_SETUP
                   1444: #line 109 "settings/settings_lexer.l"
                   1445: /* eat newlines and comments at the end of a line */
                   1446:        YY_BREAK
                   1447: case 16:
                   1448: YY_RULE_SETUP
                   1449: #line 111 "settings/settings_lexer.l"
                   1450: return COMMA;
                   1451:        YY_BREAK
                   1452: case 17:
                   1453: YY_RULE_SETUP
                   1454: #line 113 "settings/settings_lexer.l"
                   1455: {
                   1456:                yylval->s = strdup(yytext);
                   1457:                return NAME;
                   1458:        }
                   1459:        YY_BREAK
                   1460: case 18:
                   1461: YY_RULE_SETUP
                   1462: #line 118 "settings/settings_lexer.l"
                   1463: {
                   1464:                unput(yytext[0]);
                   1465:                yy_pop_state(yyscanner);
                   1466:        }
                   1467:        YY_BREAK
                   1468: 
                   1469: 
                   1470: case 19:
                   1471: YY_RULE_SETUP
                   1472: #line 125 "settings/settings_lexer.l"
                   1473: /* just ignore these */
                   1474:        YY_BREAK
                   1475: case 20:
                   1476: YY_RULE_SETUP
                   1477: #line 126 "settings/settings_lexer.l"
                   1478: 
                   1479:        YY_BREAK
                   1480: case YY_STATE_EOF(val):
                   1481: #line 127 "settings/settings_lexer.l"
                   1482: case 21:
                   1483: /* rule 21 can match eol */
                   1484: YY_RULE_SETUP
                   1485: #line 128 "settings/settings_lexer.l"
                   1486: {
                   1487:                if (*yytext)
                   1488:                {
                   1489:                        switch (yytext[0])
                   1490:                        {
                   1491:                                case '\n':
                   1492:                                        /* put the newline back to fix the line numbers */
                   1493:                                        unput('\n');
                   1494:                                        yy_set_bol(0);
                   1495:                                        break;
                   1496:                                case '#':
                   1497:                                case '}':
                   1498:                                        /* these are parsed outside of this start condition */
                   1499:                                        unput(yytext[0]);
                   1500:                                        break;
                   1501:                        }
                   1502:                }
                   1503:                yy_pop_state(yyscanner);
                   1504:                return NEWLINE;
                   1505:        }
                   1506:        YY_BREAK
                   1507: case 22:
                   1508: YY_RULE_SETUP
                   1509: #line 149 "settings/settings_lexer.l"
                   1510: {
                   1511:                yyextra->string_init(yyextra);
                   1512:                yy_push_state(str, yyscanner);
                   1513:        }
                   1514:        YY_BREAK
                   1515: /* same as above, but allow more characters */
                   1516: case 23:
                   1517: YY_RULE_SETUP
                   1518: #line 155 "settings/settings_lexer.l"
                   1519: {
                   1520:                yylval->s = strdup(yytext);
                   1521:                return NAME;
                   1522:        }
                   1523:        YY_BREAK
                   1524: 
                   1525: 
                   1526: case 24:
                   1527: YY_RULE_SETUP
                   1528: #line 162 "settings/settings_lexer.l"
                   1529: /* just ignore these */
                   1530:        YY_BREAK
                   1531: /* we allow all characters except #, } and spaces, they can be escaped */
                   1532: case YY_STATE_EOF(inc):
                   1533: #line 164 "settings/settings_lexer.l"
                   1534: case 25:
                   1535: /* rule 25 can match eol */
                   1536: YY_RULE_SETUP
                   1537: #line 165 "settings/settings_lexer.l"
                   1538: {
                   1539:                if (*yytext)
                   1540:                {
                   1541:                        switch (yytext[0])
                   1542:                        {
                   1543:                                case '\n':
                   1544:                                        /* put the newline back to fix the line numbers */
                   1545:                                        unput('\n');
                   1546:                                        yy_set_bol(0);
                   1547:                                        break;
                   1548:                                case '#':
                   1549:                                case '}':
                   1550:                                        /* these are parsed outside of this start condition */
                   1551:                                        unput(yytext[0]);
                   1552:                                        break;
                   1553:                        }
                   1554:                }
                   1555:                include_files(yyextra);
                   1556:                yy_pop_state(yyscanner);
                   1557:        }
                   1558:        YY_BREAK
                   1559: case 26:
                   1560: YY_RULE_SETUP
                   1561: #line 185 "settings/settings_lexer.l"
                   1562: {      /* string include */
                   1563:                yy_push_state(str, yyscanner);
                   1564:        }
                   1565:        YY_BREAK
                   1566: case 27:
                   1567: YY_RULE_SETUP
                   1568: #line 188 "settings/settings_lexer.l"
                   1569: {
                   1570:                yyextra->string_add(yyextra, yytext);
                   1571:        }
                   1572:        YY_BREAK
                   1573: case 28:
                   1574: YY_RULE_SETUP
                   1575: #line 191 "settings/settings_lexer.l"
                   1576: {
                   1577:                yyextra->string_add(yyextra, yytext+1);
                   1578:        }
                   1579:        YY_BREAK
                   1580: case 29:
                   1581: YY_RULE_SETUP
                   1582: #line 194 "settings/settings_lexer.l"
                   1583: {
                   1584:                yyextra->string_add(yyextra, yytext);
                   1585:        }
                   1586:        YY_BREAK
                   1587: 
                   1588: 
                   1589: case 30:
                   1590: YY_RULE_SETUP
                   1591: #line 200 "settings/settings_lexer.l"
                   1592: /* just ignore these */
                   1593:        YY_BREAK
                   1594: case 31:
                   1595: #line 202 "settings/settings_lexer.l"
                   1596: YY_RULE_SETUP
                   1597: case YY_STATE_EOF(str):
                   1598: #line 202 "settings/settings_lexer.l"
                   1599: case 32:
                   1600: YY_RULE_SETUP
                   1601: #line 203 "settings/settings_lexer.l"
                   1602: {
                   1603:                if (!streq(yytext, "\""))
                   1604:                {
                   1605:                        PARSER_DBG1(yyextra, "unterminated string detected");
                   1606:                        return STRING_ERROR;
                   1607:                }
                   1608:                if (yy_top_state(yyscanner) == inc)
                   1609:                {       /* string include */
                   1610:                        include_files(yyextra);
                   1611:                        yy_pop_state(yyscanner);
                   1612:                        yy_pop_state(yyscanner);
                   1613:                }
                   1614:                else
                   1615:                {
                   1616:                        yy_pop_state(yyscanner);
                   1617:                        yylval->s = yyextra->string_get(yyextra);
                   1618:                        return STRING;
                   1619:                }
                   1620:        }
                   1621:        YY_BREAK
                   1622: case 33:
                   1623: YY_RULE_SETUP
                   1624: #line 223 "settings/settings_lexer.l"
                   1625: yyextra->string_add(yyextra, "\n");
                   1626:        YY_BREAK
                   1627: case 34:
                   1628: YY_RULE_SETUP
                   1629: #line 224 "settings/settings_lexer.l"
                   1630: yyextra->string_add(yyextra, "\r");
                   1631:        YY_BREAK
                   1632: case 35:
                   1633: YY_RULE_SETUP
                   1634: #line 225 "settings/settings_lexer.l"
                   1635: yyextra->string_add(yyextra, "\t");
                   1636:        YY_BREAK
                   1637: case 36:
                   1638: /* rule 36 can match eol */
                   1639: YY_RULE_SETUP
                   1640: #line 226 "settings/settings_lexer.l"
                   1641: /* merge lines that end with escaped EOL characters */
                   1642:        YY_BREAK
                   1643: case 37:
                   1644: YY_RULE_SETUP
                   1645: #line 227 "settings/settings_lexer.l"
                   1646: yyextra->string_add(yyextra, yytext+1);
                   1647:        YY_BREAK
                   1648: case 38:
                   1649: /* rule 38 can match eol */
                   1650: YY_RULE_SETUP
                   1651: #line 228 "settings/settings_lexer.l"
                   1652: {
                   1653:                yyextra->string_add(yyextra, yytext);
                   1654:        }
                   1655:        YY_BREAK
                   1656: 
                   1657: case YY_STATE_EOF(INITIAL):
                   1658: case YY_STATE_EOF(ref):
                   1659: #line 233 "settings/settings_lexer.l"
                   1660: {
                   1661:        settings_parser_pop_buffer_state(yyscanner);
                   1662:        if (!settings_parser_open_next_file(yyextra) && !YY_CURRENT_BUFFER)
                   1663:        {
                   1664:                yyterminate();
                   1665:        }
                   1666: }
                   1667:        YY_BREAK
                   1668: case 39:
                   1669: YY_RULE_SETUP
                   1670: #line 241 "settings/settings_lexer.l"
                   1671: YY_FATAL_ERROR( "flex scanner jammed" );
                   1672:        YY_BREAK
                   1673: #line 1674 "settings/settings_lexer.c"
                   1674: 
                   1675:        case YY_END_OF_BUFFER:
                   1676:                {
                   1677:                /* Amount of text matched not including the EOB char. */
                   1678:                int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
                   1679: 
                   1680:                /* Undo the effects of YY_DO_BEFORE_ACTION. */
                   1681:                *yy_cp = yyg->yy_hold_char;
                   1682:                YY_RESTORE_YY_MORE_OFFSET
                   1683: 
                   1684:                if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
                   1685:                        {
                   1686:                        /* We're scanning a new file or input source.  It's
                   1687:                         * possible that this happened because the user
                   1688:                         * just pointed yyin at a new source and called
                   1689:                         * yylex().  If so, then we have to assure
                   1690:                         * consistency between YY_CURRENT_BUFFER and our
                   1691:                         * globals.  Here is the right place to do so, because
                   1692:                         * this is the first action (other than possibly a
                   1693:                         * back-up) that will match for the new input source.
                   1694:                         */
                   1695:                        yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
                   1696: /* %if-c-only */
                   1697:                        YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
                   1698: /* %endif */
                   1699: /* %if-c++-only */
                   1700: /* %endif */
                   1701:                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
                   1702:                        }
                   1703: 
                   1704:                /* Note that here we test for yy_c_buf_p "<=" to the position
                   1705:                 * of the first EOB in the buffer, since yy_c_buf_p will
                   1706:                 * already have been incremented past the NUL character
                   1707:                 * (since all states make transitions on EOB to the
                   1708:                 * end-of-buffer state).  Contrast this with the test
                   1709:                 * in input().
                   1710:                 */
                   1711:                if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
                   1712:                        { /* This was really a NUL. */
                   1713:                        yy_state_type yy_next_state;
                   1714: 
                   1715:                        yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
                   1716: 
                   1717:                        yy_current_state = yy_get_previous_state( yyscanner );
                   1718: 
                   1719:                        /* Okay, we're now positioned to make the NUL
                   1720:                         * transition.  We couldn't have
                   1721:                         * yy_get_previous_state() go ahead and do it
                   1722:                         * for us because it doesn't know how to deal
                   1723:                         * with the possibility of jamming (and we don't
                   1724:                         * want to build jamming into it because then it
                   1725:                         * will run more slowly).
                   1726:                         */
                   1727: 
                   1728:                        yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
                   1729: 
                   1730:                        yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
                   1731: 
                   1732:                        if ( yy_next_state )
                   1733:                                {
                   1734:                                /* Consume the NUL. */
                   1735:                                yy_cp = ++yyg->yy_c_buf_p;
                   1736:                                yy_current_state = yy_next_state;
                   1737:                                goto yy_match;
                   1738:                                }
                   1739: 
                   1740:                        else
                   1741:                                {
                   1742: /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
                   1743:                                yy_cp = yyg->yy_last_accepting_cpos;
                   1744:                                yy_current_state = yyg->yy_last_accepting_state;
                   1745:                                goto yy_find_action;
                   1746:                                }
                   1747:                        }
                   1748: 
                   1749:                else switch ( yy_get_next_buffer( yyscanner ) )
                   1750:                        {
                   1751:                        case EOB_ACT_END_OF_FILE:
                   1752:                                {
                   1753:                                yyg->yy_did_buffer_switch_on_eof = 0;
                   1754: 
                   1755:                                if ( yywrap( yyscanner ) )
                   1756:                                        {
                   1757:                                        /* Note: because we've taken care in
                   1758:                                         * yy_get_next_buffer() to have set up
                   1759:                                         * yytext, we can now set up
                   1760:                                         * yy_c_buf_p so that if some total
                   1761:                                         * hoser (like flex itself) wants to
                   1762:                                         * call the scanner after we return the
                   1763:                                         * YY_NULL, it'll still work - another
                   1764:                                         * YY_NULL will get returned.
                   1765:                                         */
                   1766:                                        yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
                   1767: 
                   1768:                                        yy_act = YY_STATE_EOF(YY_START);
                   1769:                                        goto do_action;
                   1770:                                        }
                   1771: 
                   1772:                                else
                   1773:                                        {
                   1774:                                        if ( ! yyg->yy_did_buffer_switch_on_eof )
                   1775:                                                YY_NEW_FILE;
                   1776:                                        }
                   1777:                                break;
                   1778:                                }
                   1779: 
                   1780:                        case EOB_ACT_CONTINUE_SCAN:
                   1781:                                yyg->yy_c_buf_p =
                   1782:                                        yyg->yytext_ptr + yy_amount_of_matched_text;
                   1783: 
                   1784:                                yy_current_state = yy_get_previous_state( yyscanner );
                   1785: 
                   1786:                                yy_cp = yyg->yy_c_buf_p;
                   1787:                                yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
                   1788:                                goto yy_match;
                   1789: 
                   1790:                        case EOB_ACT_LAST_MATCH:
                   1791:                                yyg->yy_c_buf_p =
                   1792:                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
                   1793: 
                   1794:                                yy_current_state = yy_get_previous_state( yyscanner );
                   1795: 
                   1796:                                yy_cp = yyg->yy_c_buf_p;
                   1797:                                yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
                   1798:                                goto yy_find_action;
                   1799:                        }
                   1800:                break;
                   1801:                }
                   1802: 
                   1803:        default:
                   1804:                YY_FATAL_ERROR(
                   1805:                        "fatal flex scanner internal error--no action found" );
                   1806:        } /* end of action switch */
                   1807:                } /* end of scanning one token */
                   1808:        } /* end of user's declarations */
                   1809: } /* end of yylex */
                   1810: /* %ok-for-header */
                   1811: 
                   1812: /* %if-c++-only */
                   1813: /* %not-for-header */
                   1814: /* %ok-for-header */
                   1815: 
                   1816: /* %endif */
                   1817: 
                   1818: /* yy_get_next_buffer - try to read in a new buffer
                   1819:  *
                   1820:  * Returns a code representing an action:
                   1821:  *     EOB_ACT_LAST_MATCH -
                   1822:  *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
                   1823:  *     EOB_ACT_END_OF_FILE - end of file
                   1824:  */
                   1825: /* %if-c-only */
                   1826: static int yy_get_next_buffer (yyscan_t yyscanner)
                   1827: /* %endif */
                   1828: /* %if-c++-only */
                   1829: /* %endif */
                   1830: {
                   1831:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   1832:        char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
                   1833:        char *source = yyg->yytext_ptr;
                   1834:        int number_to_move, i;
                   1835:        int ret_val;
                   1836: 
                   1837:        if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
                   1838:                YY_FATAL_ERROR(
                   1839:                "fatal flex scanner internal error--end of buffer missed" );
                   1840: 
                   1841:        if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
                   1842:                { /* Don't try to fill the buffer, so this is an EOF. */
                   1843:                if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
                   1844:                        {
                   1845:                        /* We matched a single character, the EOB, so
                   1846:                         * treat this as a final EOF.
                   1847:                         */
                   1848:                        return EOB_ACT_END_OF_FILE;
                   1849:                        }
                   1850: 
                   1851:                else
                   1852:                        {
                   1853:                        /* We matched some text prior to the EOB, first
                   1854:                         * process it.
                   1855:                         */
                   1856:                        return EOB_ACT_LAST_MATCH;
                   1857:                        }
                   1858:                }
                   1859: 
                   1860:        /* Try to read more data. */
                   1861: 
                   1862:        /* First move last chars to start of buffer. */
                   1863:        number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1);
                   1864: 
                   1865:        for ( i = 0; i < number_to_move; ++i )
                   1866:                *(dest++) = *(source++);
                   1867: 
                   1868:        if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
                   1869:                /* don't do the read, it's not guaranteed to return an EOF,
                   1870:                 * just force an EOF
                   1871:                 */
                   1872:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
                   1873: 
                   1874:        else
                   1875:                {
                   1876:                        int num_to_read =
                   1877:                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
                   1878: 
                   1879:                while ( num_to_read <= 0 )
                   1880:                        { /* Not enough room in the buffer - grow it. */
                   1881: 
                   1882:                        /* just a shorter name for the current buffer */
                   1883:                        YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
                   1884: 
                   1885:                        int yy_c_buf_p_offset =
                   1886:                                (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
                   1887: 
                   1888:                        if ( b->yy_is_our_buffer )
                   1889:                                {
                   1890:                                int new_size = b->yy_buf_size * 2;
                   1891: 
                   1892:                                if ( new_size <= 0 )
                   1893:                                        b->yy_buf_size += b->yy_buf_size / 8;
                   1894:                                else
                   1895:                                        b->yy_buf_size *= 2;
                   1896: 
                   1897:                                b->yy_ch_buf = (char *)
                   1898:                                        /* Include room in for 2 EOB chars. */
                   1899:                                        yyrealloc( (void *) b->yy_ch_buf,
                   1900:                                                         (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
                   1901:                                }
                   1902:                        else
                   1903:                                /* Can't grow it, we don't own it. */
                   1904:                                b->yy_ch_buf = NULL;
                   1905: 
                   1906:                        if ( ! b->yy_ch_buf )
                   1907:                                YY_FATAL_ERROR(
                   1908:                                "fatal error - scanner input buffer overflow" );
                   1909: 
                   1910:                        yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
                   1911: 
                   1912:                        num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
                   1913:                                                number_to_move - 1;
                   1914: 
                   1915:                        }
                   1916: 
                   1917:                if ( num_to_read > YY_READ_BUF_SIZE )
                   1918:                        num_to_read = YY_READ_BUF_SIZE;
                   1919: 
                   1920:                /* Read in more data. */
                   1921:                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
                   1922:                        yyg->yy_n_chars, num_to_read );
                   1923: 
                   1924:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
                   1925:                }
                   1926: 
                   1927:        if ( yyg->yy_n_chars == 0 )
                   1928:                {
                   1929:                if ( number_to_move == YY_MORE_ADJ )
                   1930:                        {
                   1931:                        ret_val = EOB_ACT_END_OF_FILE;
                   1932:                        yyrestart( yyin  , yyscanner);
                   1933:                        }
                   1934: 
                   1935:                else
                   1936:                        {
                   1937:                        ret_val = EOB_ACT_LAST_MATCH;
                   1938:                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
                   1939:                                YY_BUFFER_EOF_PENDING;
                   1940:                        }
                   1941:                }
                   1942: 
                   1943:        else
                   1944:                ret_val = EOB_ACT_CONTINUE_SCAN;
                   1945: 
                   1946:        if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
                   1947:                /* Extend the array by 50%, plus the number we really need. */
                   1948:                int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
                   1949:                YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
                   1950:                        (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner );
                   1951:                if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
                   1952:                        YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
                   1953:                /* "- 2" to take care of EOB's */
                   1954:                YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
                   1955:        }
                   1956: 
                   1957:        yyg->yy_n_chars += number_to_move;
                   1958:        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
                   1959:        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
                   1960: 
                   1961:        yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
                   1962: 
                   1963:        return ret_val;
                   1964: }
                   1965: 
                   1966: /* yy_get_previous_state - get the state just before the EOB char was reached */
                   1967: 
                   1968: /* %if-c-only */
                   1969: /* %not-for-header */
                   1970:     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
                   1971: /* %endif */
                   1972: /* %if-c++-only */
                   1973: /* %endif */
                   1974: {
                   1975:        yy_state_type yy_current_state;
                   1976:        char *yy_cp;
                   1977:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   1978: 
                   1979: /* %% [15.0] code to get the start state into yy_current_state goes here */
                   1980:        yy_current_state = yyg->yy_start;
                   1981: 
                   1982:        for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
                   1983:                {
                   1984: /* %% [16.0] code to find the next state goes here */
                   1985:                YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
                   1986:                if ( yy_accept[yy_current_state] )
                   1987:                        {
                   1988:                        yyg->yy_last_accepting_state = yy_current_state;
                   1989:                        yyg->yy_last_accepting_cpos = yy_cp;
                   1990:                        }
                   1991:                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                   1992:                        {
                   1993:                        yy_current_state = (int) yy_def[yy_current_state];
                   1994:                        if ( yy_current_state >= 85 )
                   1995:                                yy_c = yy_meta[yy_c];
                   1996:                        }
                   1997:                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                   1998:                }
                   1999: 
                   2000:        return yy_current_state;
                   2001: }
                   2002: 
                   2003: /* yy_try_NUL_trans - try to make a transition on the NUL character
                   2004:  *
                   2005:  * synopsis
                   2006:  *     next_state = yy_try_NUL_trans( current_state );
                   2007:  */
                   2008: /* %if-c-only */
                   2009:     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
                   2010: /* %endif */
                   2011: /* %if-c++-only */
                   2012: /* %endif */
                   2013: {
                   2014:        int yy_is_jam;
                   2015:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
                   2016: /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
                   2017:        char *yy_cp = yyg->yy_c_buf_p;
                   2018: 
                   2019:        YY_CHAR yy_c = 1;
                   2020:        if ( yy_accept[yy_current_state] )
                   2021:                {
                   2022:                yyg->yy_last_accepting_state = yy_current_state;
                   2023:                yyg->yy_last_accepting_cpos = yy_cp;
                   2024:                }
                   2025:        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                   2026:                {
                   2027:                yy_current_state = (int) yy_def[yy_current_state];
                   2028:                if ( yy_current_state >= 85 )
                   2029:                        yy_c = yy_meta[yy_c];
                   2030:                }
                   2031:        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                   2032:        yy_is_jam = (yy_current_state == 84);
                   2033: 
                   2034:        (void)yyg;
                   2035:        return yy_is_jam ? 0 : yy_current_state;
                   2036: }
                   2037: 
                   2038: #ifndef YY_NO_UNPUT
                   2039: /* %if-c-only */
                   2040: 
                   2041:     static void yyunput (int c, char * yy_bp , yyscan_t yyscanner)
                   2042: /* %endif */
                   2043: /* %if-c++-only */
                   2044: /* %endif */
                   2045: {
                   2046:        char *yy_cp;
                   2047:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2048: 
                   2049:     yy_cp = yyg->yy_c_buf_p;
                   2050: 
                   2051:        /* undo effects of setting up yytext */
                   2052:        *yy_cp = yyg->yy_hold_char;
                   2053: 
                   2054:        if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
                   2055:                { /* need to shift things up to make room */
                   2056:                /* +2 for EOB chars. */
                   2057:                int number_to_move = yyg->yy_n_chars + 2;
                   2058:                char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
                   2059:                                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
                   2060:                char *source =
                   2061:                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
                   2062: 
                   2063:                while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
                   2064:                        *--dest = *--source;
                   2065: 
                   2066:                yy_cp += (int) (dest - source);
                   2067:                yy_bp += (int) (dest - source);
                   2068:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
                   2069:                        yyg->yy_n_chars = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
                   2070: 
                   2071:                if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
                   2072:                        YY_FATAL_ERROR( "flex scanner push-back overflow" );
                   2073:                }
                   2074: 
                   2075:        *--yy_cp = (char) c;
                   2076: 
                   2077: /* %% [18.0] update yylineno here */
                   2078: 
                   2079:     if ( c == '\n' ){
                   2080:         --yylineno;
                   2081:     }
                   2082: 
                   2083:        yyg->yytext_ptr = yy_bp;
                   2084:        yyg->yy_hold_char = *yy_cp;
                   2085:        yyg->yy_c_buf_p = yy_cp;
                   2086: }
                   2087: /* %if-c-only */
                   2088: 
                   2089: /* %endif */
                   2090: #endif
                   2091: 
                   2092: /* %if-c-only */
                   2093: #ifndef YY_NO_INPUT
                   2094: #ifdef __cplusplus
                   2095:     static int yyinput (yyscan_t yyscanner)
                   2096: #else
                   2097:     static int input  (yyscan_t yyscanner)
                   2098: #endif
                   2099: 
                   2100: /* %endif */
                   2101: /* %if-c++-only */
                   2102: /* %endif */
                   2103: {
                   2104:        int c;
                   2105:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2106: 
                   2107:        *yyg->yy_c_buf_p = yyg->yy_hold_char;
                   2108: 
                   2109:        if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
                   2110:                {
                   2111:                /* yy_c_buf_p now points to the character we want to return.
                   2112:                 * If this occurs *before* the EOB characters, then it's a
                   2113:                 * valid NUL; if not, then we've hit the end of the buffer.
                   2114:                 */
                   2115:                if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
                   2116:                        /* This was really a NUL. */
                   2117:                        *yyg->yy_c_buf_p = '\0';
                   2118: 
                   2119:                else
                   2120:                        { /* need more input */
                   2121:                        int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr);
                   2122:                        ++yyg->yy_c_buf_p;
                   2123: 
                   2124:                        switch ( yy_get_next_buffer( yyscanner ) )
                   2125:                                {
                   2126:                                case EOB_ACT_LAST_MATCH:
                   2127:                                        /* This happens because yy_g_n_b()
                   2128:                                         * sees that we've accumulated a
                   2129:                                         * token and flags that we need to
                   2130:                                         * try matching the token before
                   2131:                                         * proceeding.  But for input(),
                   2132:                                         * there's no matching to consider.
                   2133:                                         * So convert the EOB_ACT_LAST_MATCH
                   2134:                                         * to EOB_ACT_END_OF_FILE.
                   2135:                                         */
                   2136: 
                   2137:                                        /* Reset buffer status. */
                   2138:                                        yyrestart( yyin , yyscanner);
                   2139: 
                   2140:                                        /*FALLTHROUGH*/
                   2141: 
                   2142:                                case EOB_ACT_END_OF_FILE:
                   2143:                                        {
                   2144:                                        if ( yywrap( yyscanner ) )
                   2145:                                                return 0;
                   2146: 
                   2147:                                        if ( ! yyg->yy_did_buffer_switch_on_eof )
                   2148:                                                YY_NEW_FILE;
                   2149: #ifdef __cplusplus
                   2150:                                        return yyinput(yyscanner);
                   2151: #else
                   2152:                                        return input(yyscanner);
                   2153: #endif
                   2154:                                        }
                   2155: 
                   2156:                                case EOB_ACT_CONTINUE_SCAN:
                   2157:                                        yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
                   2158:                                        break;
                   2159:                                }
                   2160:                        }
                   2161:                }
                   2162: 
                   2163:        c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
                   2164:        *yyg->yy_c_buf_p = '\0';        /* preserve yytext */
                   2165:        yyg->yy_hold_char = *++yyg->yy_c_buf_p;
                   2166: 
                   2167: /* %% [19.0] update BOL and yylineno */
                   2168:        if ( c == '\n' )
                   2169:                
                   2170:     do{ yylineno++;
                   2171:         yycolumn=0;
                   2172:     }while(0)
                   2173: ;
                   2174: 
                   2175:        return c;
                   2176: }
                   2177: /* %if-c-only */
                   2178: #endif /* ifndef YY_NO_INPUT */
                   2179: /* %endif */
                   2180: 
                   2181: /** Immediately switch to a different input stream.
                   2182:  * @param input_file A readable stream.
                   2183:  * @param yyscanner The scanner object.
                   2184:  * @note This function does not reset the start condition to @c INITIAL .
                   2185:  */
                   2186: /* %if-c-only */
                   2187:     void yyrestart  (FILE * input_file , yyscan_t yyscanner)
                   2188: /* %endif */
                   2189: /* %if-c++-only */
                   2190: /* %endif */
                   2191: {
                   2192:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2193: 
                   2194:        if ( ! YY_CURRENT_BUFFER ){
                   2195:         yyensure_buffer_stack (yyscanner);
                   2196:                YY_CURRENT_BUFFER_LVALUE =
                   2197:             yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner);
                   2198:        }
                   2199: 
                   2200:        yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner);
                   2201:        yy_load_buffer_state( yyscanner );
                   2202: }
                   2203: 
                   2204: /* %if-c++-only */
                   2205: /* %endif */
                   2206: 
                   2207: /** Switch to a different input buffer.
                   2208:  * @param new_buffer The new input buffer.
                   2209:  * @param yyscanner The scanner object.
                   2210:  */
                   2211: /* %if-c-only */
                   2212:     void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
                   2213: /* %endif */
                   2214: /* %if-c++-only */
                   2215: /* %endif */
                   2216: {
                   2217:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2218: 
                   2219:        /* TODO. We should be able to replace this entire function body
                   2220:         * with
                   2221:         *              yypop_buffer_state();
                   2222:         *              yypush_buffer_state(new_buffer);
                   2223:      */
                   2224:        yyensure_buffer_stack (yyscanner);
                   2225:        if ( YY_CURRENT_BUFFER == new_buffer )
                   2226:                return;
                   2227: 
                   2228:        if ( YY_CURRENT_BUFFER )
                   2229:                {
                   2230:                /* Flush out information for old buffer. */
                   2231:                *yyg->yy_c_buf_p = yyg->yy_hold_char;
                   2232:                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
                   2233:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
                   2234:                }
                   2235: 
                   2236:        YY_CURRENT_BUFFER_LVALUE = new_buffer;
                   2237:        yy_load_buffer_state( yyscanner );
                   2238: 
                   2239:        /* We don't actually know whether we did this switch during
                   2240:         * EOF (yywrap()) processing, but the only time this flag
                   2241:         * is looked at is after yywrap() is called, so it's safe
                   2242:         * to go ahead and always set it.
                   2243:         */
                   2244:        yyg->yy_did_buffer_switch_on_eof = 1;
                   2245: }
                   2246: 
                   2247: /* %if-c-only */
                   2248: static void yy_load_buffer_state  (yyscan_t yyscanner)
                   2249: /* %endif */
                   2250: /* %if-c++-only */
                   2251: /* %endif */
                   2252: {
                   2253:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2254:        yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
                   2255:        yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
                   2256: /* %if-c-only */
                   2257:        yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
                   2258: /* %endif */
                   2259: /* %if-c++-only */
                   2260: /* %endif */
                   2261:        yyg->yy_hold_char = *yyg->yy_c_buf_p;
                   2262: }
                   2263: 
                   2264: /** Allocate and initialize an input buffer state.
                   2265:  * @param file A readable stream.
                   2266:  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
                   2267:  * @param yyscanner The scanner object.
                   2268:  * @return the allocated buffer state.
                   2269:  */
                   2270: /* %if-c-only */
                   2271:     YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
                   2272: /* %endif */
                   2273: /* %if-c++-only */
                   2274: /* %endif */
                   2275: {
                   2276:        YY_BUFFER_STATE b;
                   2277:     
                   2278:        b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
                   2279:        if ( ! b )
                   2280:                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
                   2281: 
                   2282:        b->yy_buf_size = size;
                   2283: 
                   2284:        /* yy_ch_buf has to be 2 characters longer than the size given because
                   2285:         * we need to put in 2 end-of-buffer characters.
                   2286:         */
                   2287:        b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner );
                   2288:        if ( ! b->yy_ch_buf )
                   2289:                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
                   2290: 
                   2291:        b->yy_is_our_buffer = 1;
                   2292: 
                   2293:        yy_init_buffer( b, file , yyscanner);
                   2294: 
                   2295:        return b;
                   2296: }
                   2297: 
                   2298: /* %if-c++-only */
                   2299: /* %endif */
                   2300: 
                   2301: /** Destroy the buffer.
                   2302:  * @param b a buffer created with yy_create_buffer()
                   2303:  * @param yyscanner The scanner object.
                   2304:  */
                   2305: /* %if-c-only */
                   2306:     void yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
                   2307: /* %endif */
                   2308: /* %if-c++-only */
                   2309: /* %endif */
                   2310: {
                   2311:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2312: 
                   2313:        if ( ! b )
                   2314:                return;
                   2315: 
                   2316:        if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
                   2317:                YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
                   2318: 
                   2319:        if ( b->yy_is_our_buffer )
                   2320:                yyfree( (void *) b->yy_ch_buf , yyscanner );
                   2321: 
                   2322:        yyfree( (void *) b , yyscanner );
                   2323: }
                   2324: 
                   2325: /* Initializes or reinitializes a buffer.
                   2326:  * This function is sometimes called more than once on the same buffer,
                   2327:  * such as during a yyrestart() or at EOF.
                   2328:  */
                   2329: /* %if-c-only */
                   2330:     static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
                   2331: /* %endif */
                   2332: /* %if-c++-only */
                   2333: /* %endif */
                   2334: 
                   2335: {
                   2336:        int oerrno = errno;
                   2337:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2338: 
                   2339:        yy_flush_buffer( b , yyscanner);
                   2340: 
                   2341: /* %if-c-only */
                   2342:        b->yy_input_file = file;
                   2343: /* %endif */
                   2344: /* %if-c++-only */
                   2345: /* %endif */
                   2346:        b->yy_fill_buffer = 1;
                   2347: 
                   2348:     /* If b is the current buffer, then yy_init_buffer was _probably_
                   2349:      * called from yyrestart() or through yy_get_next_buffer.
                   2350:      * In that case, we don't want to reset the lineno or column.
                   2351:      */
                   2352:     if (b != YY_CURRENT_BUFFER){
                   2353:         b->yy_bs_lineno = 1;
                   2354:         b->yy_bs_column = 0;
                   2355:     }
                   2356: 
                   2357: /* %if-c-only */
                   2358: 
                   2359:         b->yy_is_interactive = 0;
                   2360:     
                   2361: /* %endif */
                   2362: /* %if-c++-only */
                   2363: /* %endif */
                   2364:        errno = oerrno;
                   2365: }
                   2366: 
                   2367: /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
                   2368:  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
                   2369:  * @param yyscanner The scanner object.
                   2370:  */
                   2371: /* %if-c-only */
                   2372:     void yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
                   2373: /* %endif */
                   2374: /* %if-c++-only */
                   2375: /* %endif */
                   2376: {
                   2377:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2378:        if ( ! b )
                   2379:                return;
                   2380: 
                   2381:        b->yy_n_chars = 0;
                   2382: 
                   2383:        /* We always need two end-of-buffer characters.  The first causes
                   2384:         * a transition to the end-of-buffer state.  The second causes
                   2385:         * a jam in that state.
                   2386:         */
                   2387:        b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
                   2388:        b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
                   2389: 
                   2390:        b->yy_buf_pos = &b->yy_ch_buf[0];
                   2391: 
                   2392:        b->yy_at_bol = 1;
                   2393:        b->yy_buffer_status = YY_BUFFER_NEW;
                   2394: 
                   2395:        if ( b == YY_CURRENT_BUFFER )
                   2396:                yy_load_buffer_state( yyscanner );
                   2397: }
                   2398: 
                   2399: /* %if-c-or-c++ */
                   2400: /** Pushes the new state onto the stack. The new state becomes
                   2401:  *  the current state. This function will allocate the stack
                   2402:  *  if necessary.
                   2403:  *  @param new_buffer The new state.
                   2404:  *  @param yyscanner The scanner object.
                   2405:  */
                   2406: /* %if-c-only */
                   2407: void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
                   2408: /* %endif */
                   2409: /* %if-c++-only */
                   2410: /* %endif */
                   2411: {
                   2412:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2413:        if (new_buffer == NULL)
                   2414:                return;
                   2415: 
                   2416:        yyensure_buffer_stack(yyscanner);
                   2417: 
                   2418:        /* This block is copied from yy_switch_to_buffer. */
                   2419:        if ( YY_CURRENT_BUFFER )
                   2420:                {
                   2421:                /* Flush out information for old buffer. */
                   2422:                *yyg->yy_c_buf_p = yyg->yy_hold_char;
                   2423:                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
                   2424:                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
                   2425:                }
                   2426: 
                   2427:        /* Only push if top exists. Otherwise, replace top. */
                   2428:        if (YY_CURRENT_BUFFER)
                   2429:                yyg->yy_buffer_stack_top++;
                   2430:        YY_CURRENT_BUFFER_LVALUE = new_buffer;
                   2431: 
                   2432:        /* copied from yy_switch_to_buffer. */
                   2433:        yy_load_buffer_state( yyscanner );
                   2434:        yyg->yy_did_buffer_switch_on_eof = 1;
                   2435: }
                   2436: /* %endif */
                   2437: 
                   2438: /* %if-c-or-c++ */
                   2439: /** Removes and deletes the top of the stack, if present.
                   2440:  *  The next element becomes the new top.
                   2441:  *  @param yyscanner The scanner object.
                   2442:  */
                   2443: /* %if-c-only */
                   2444: void yypop_buffer_state (yyscan_t yyscanner)
                   2445: /* %endif */
                   2446: /* %if-c++-only */
                   2447: /* %endif */
                   2448: {
                   2449:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2450:        if (!YY_CURRENT_BUFFER)
                   2451:                return;
                   2452: 
                   2453:        yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner);
                   2454:        YY_CURRENT_BUFFER_LVALUE = NULL;
                   2455:        if (yyg->yy_buffer_stack_top > 0)
                   2456:                --yyg->yy_buffer_stack_top;
                   2457: 
                   2458:        if (YY_CURRENT_BUFFER) {
                   2459:                yy_load_buffer_state( yyscanner );
                   2460:                yyg->yy_did_buffer_switch_on_eof = 1;
                   2461:        }
                   2462: }
                   2463: /* %endif */
                   2464: 
                   2465: /* %if-c-or-c++ */
                   2466: /* Allocates the stack if it does not exist.
                   2467:  *  Guarantees space for at least one push.
                   2468:  */
                   2469: /* %if-c-only */
                   2470: static void yyensure_buffer_stack (yyscan_t yyscanner)
                   2471: /* %endif */
                   2472: /* %if-c++-only */
                   2473: /* %endif */
                   2474: {
                   2475:        yy_size_t num_to_alloc;
                   2476:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2477: 
                   2478:        if (!yyg->yy_buffer_stack) {
                   2479: 
                   2480:                /* First allocation is just for 2 elements, since we don't know if this
                   2481:                 * scanner will even need a stack. We use 2 instead of 1 to avoid an
                   2482:                 * immediate realloc on the next call.
                   2483:          */
                   2484:       num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
                   2485:                yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
                   2486:                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
                   2487:                                                                , yyscanner);
                   2488:                if ( ! yyg->yy_buffer_stack )
                   2489:                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
                   2490: 
                   2491:                memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
                   2492: 
                   2493:                yyg->yy_buffer_stack_max = num_to_alloc;
                   2494:                yyg->yy_buffer_stack_top = 0;
                   2495:                return;
                   2496:        }
                   2497: 
                   2498:        if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
                   2499: 
                   2500:                /* Increase the buffer to prepare for a possible push. */
                   2501:                yy_size_t grow_size = 8 /* arbitrary grow size */;
                   2502: 
                   2503:                num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
                   2504:                yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
                   2505:                                                                (yyg->yy_buffer_stack,
                   2506:                                                                num_to_alloc * sizeof(struct yy_buffer_state*)
                   2507:                                                                , yyscanner);
                   2508:                if ( ! yyg->yy_buffer_stack )
                   2509:                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
                   2510: 
                   2511:                /* zero only the new slots.*/
                   2512:                memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
                   2513:                yyg->yy_buffer_stack_max = num_to_alloc;
                   2514:        }
                   2515: }
                   2516: /* %endif */
                   2517: 
                   2518: /* %if-c-only */
                   2519: /** Setup the input buffer state to scan directly from a user-specified character buffer.
                   2520:  * @param base the character buffer
                   2521:  * @param size the size in bytes of the character buffer
                   2522:  * @param yyscanner The scanner object.
                   2523:  * @return the newly allocated buffer state object.
                   2524:  */
                   2525: YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
                   2526: {
                   2527:        YY_BUFFER_STATE b;
                   2528:     
                   2529:        if ( size < 2 ||
                   2530:             base[size-2] != YY_END_OF_BUFFER_CHAR ||
                   2531:             base[size-1] != YY_END_OF_BUFFER_CHAR )
                   2532:                /* They forgot to leave room for the EOB's. */
                   2533:                return NULL;
                   2534: 
                   2535:        b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner );
                   2536:        if ( ! b )
                   2537:                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
                   2538: 
                   2539:        b->yy_buf_size = (int) (size - 2);      /* "- 2" to take care of EOB's */
                   2540:        b->yy_buf_pos = b->yy_ch_buf = base;
                   2541:        b->yy_is_our_buffer = 0;
                   2542:        b->yy_input_file = NULL;
                   2543:        b->yy_n_chars = b->yy_buf_size;
                   2544:        b->yy_is_interactive = 0;
                   2545:        b->yy_at_bol = 1;
                   2546:        b->yy_fill_buffer = 0;
                   2547:        b->yy_buffer_status = YY_BUFFER_NEW;
                   2548: 
                   2549:        yy_switch_to_buffer( b , yyscanner );
                   2550: 
                   2551:        return b;
                   2552: }
                   2553: /* %endif */
                   2554: 
                   2555: /* %if-c-only */
                   2556: /** Setup the input buffer state to scan a string. The next call to yylex() will
                   2557:  * scan from a @e copy of @a str.
                   2558:  * @param yystr a NUL-terminated string to scan
                   2559:  * @param yyscanner The scanner object.
                   2560:  * @return the newly allocated buffer state object.
                   2561:  * @note If you want to scan bytes that may contain NUL values, then use
                   2562:  *       yy_scan_bytes() instead.
                   2563:  */
                   2564: YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner)
                   2565: {
                   2566:     
                   2567:        return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner);
                   2568: }
                   2569: /* %endif */
                   2570: 
                   2571: /* %if-c-only */
                   2572: /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
                   2573:  * scan from a @e copy of @a bytes.
                   2574:  * @param yybytes the byte buffer to scan
                   2575:  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
                   2576:  * @param yyscanner The scanner object.
                   2577:  * @return the newly allocated buffer state object.
                   2578:  */
                   2579: YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
                   2580: {
                   2581:        YY_BUFFER_STATE b;
                   2582:        char *buf;
                   2583:        yy_size_t n;
                   2584:        int i;
                   2585:     
                   2586:        /* Get memory for full buffer, including space for trailing EOB's. */
                   2587:        n = (yy_size_t) (_yybytes_len + 2);
                   2588:        buf = (char *) yyalloc( n , yyscanner );
                   2589:        if ( ! buf )
                   2590:                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
                   2591: 
                   2592:        for ( i = 0; i < _yybytes_len; ++i )
                   2593:                buf[i] = yybytes[i];
                   2594: 
                   2595:        buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
                   2596: 
                   2597:        b = yy_scan_buffer( buf, n , yyscanner);
                   2598:        if ( ! b )
                   2599:                YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
                   2600: 
                   2601:        /* It's okay to grow etc. this buffer, and we should throw it
                   2602:         * away when we're done.
                   2603:         */
                   2604:        b->yy_is_our_buffer = 1;
                   2605: 
                   2606:        return b;
                   2607: }
                   2608: /* %endif */
                   2609: 
                   2610: /* %if-c-only */
                   2611:     static void yy_push_state (int  _new_state , yyscan_t yyscanner)
                   2612: /* %endif */
                   2613: /* %if-c++-only */
                   2614: /* %endif */
                   2615: {
                   2616:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2617:        if ( yyg->yy_start_stack_ptr >= yyg->yy_start_stack_depth )
                   2618:                {
                   2619:                yy_size_t new_size;
                   2620: 
                   2621:                yyg->yy_start_stack_depth += YY_START_STACK_INCR;
                   2622:                new_size = (yy_size_t) yyg->yy_start_stack_depth * sizeof( int );
                   2623: 
                   2624:                if ( ! yyg->yy_start_stack )
                   2625:                        yyg->yy_start_stack = (int *) yyalloc( new_size , yyscanner );
                   2626: 
                   2627:                else
                   2628:                        yyg->yy_start_stack = (int *) yyrealloc(
                   2629:                                        (void *) yyg->yy_start_stack, new_size , yyscanner );
                   2630: 
                   2631:                if ( ! yyg->yy_start_stack )
                   2632:                        YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
                   2633:                }
                   2634: 
                   2635:        yyg->yy_start_stack[yyg->yy_start_stack_ptr++] = YY_START;
                   2636: 
                   2637:        BEGIN(_new_state);
                   2638: }
                   2639: 
                   2640: /* %if-c-only */
                   2641:     static void yy_pop_state  (yyscan_t yyscanner)
                   2642: /* %endif */
                   2643: /* %if-c++-only */
                   2644: /* %endif */
                   2645: {
                   2646:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2647:        if ( --yyg->yy_start_stack_ptr < 0 )
                   2648:                YY_FATAL_ERROR( "start-condition stack underflow" );
                   2649: 
                   2650:        BEGIN(yyg->yy_start_stack[yyg->yy_start_stack_ptr]);
                   2651: }
                   2652: 
                   2653: /* %if-c-only */
                   2654:     static int yy_top_state  (yyscan_t yyscanner)
                   2655: /* %endif */
                   2656: /* %if-c++-only */
                   2657: /* %endif */
                   2658: {
                   2659:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2660:        return yyg->yy_start_stack[yyg->yy_start_stack_ptr - 1];
                   2661: }
                   2662: 
                   2663: #ifndef YY_EXIT_FAILURE
                   2664: #define YY_EXIT_FAILURE 2
                   2665: #endif
                   2666: 
                   2667: /* %if-c-only */
                   2668: static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner)
                   2669: {
                   2670:        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2671:        (void)yyg;
                   2672:        fprintf( stderr, "%s\n", msg );
                   2673:        exit( YY_EXIT_FAILURE );
                   2674: }
                   2675: /* %endif */
                   2676: /* %if-c++-only */
                   2677: /* %endif */
                   2678: 
                   2679: /* Redefine yyless() so it works in section 3 code. */
                   2680: 
                   2681: #undef yyless
                   2682: #define yyless(n) \
                   2683:        do \
                   2684:                { \
                   2685:                /* Undo effects of setting up yytext. */ \
                   2686:         int yyless_macro_arg = (n); \
                   2687:         YY_LESS_LINENO(yyless_macro_arg);\
                   2688:                yytext[yyleng] = yyg->yy_hold_char; \
                   2689:                yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
                   2690:                yyg->yy_hold_char = *yyg->yy_c_buf_p; \
                   2691:                *yyg->yy_c_buf_p = '\0'; \
                   2692:                yyleng = yyless_macro_arg; \
                   2693:                } \
                   2694:        while ( 0 )
                   2695: 
                   2696: /* Accessor  methods (get/set functions) to struct members. */
                   2697: 
                   2698: /* %if-c-only */
                   2699: /* %if-reentrant */
                   2700: 
                   2701: /** Get the user-defined data for this scanner.
                   2702:  * @param yyscanner The scanner object.
                   2703:  */
                   2704: YY_EXTRA_TYPE yyget_extra  (yyscan_t yyscanner)
                   2705: {
                   2706:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2707:     return yyextra;
                   2708: }
                   2709: 
                   2710: /* %endif */
                   2711: 
                   2712: /** Get the current line number.
                   2713:  * @param yyscanner The scanner object.
                   2714:  */
                   2715: int yyget_lineno  (yyscan_t yyscanner)
                   2716: {
                   2717:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2718: 
                   2719:         if (! YY_CURRENT_BUFFER)
                   2720:             return 0;
                   2721:     
                   2722:     return yylineno;
                   2723: }
                   2724: 
                   2725: /** Get the current column number.
                   2726:  * @param yyscanner The scanner object.
                   2727:  */
                   2728: int yyget_column  (yyscan_t yyscanner)
                   2729: {
                   2730:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2731: 
                   2732:         if (! YY_CURRENT_BUFFER)
                   2733:             return 0;
                   2734:     
                   2735:     return yycolumn;
                   2736: }
                   2737: 
                   2738: /** Get the input stream.
                   2739:  * @param yyscanner The scanner object.
                   2740:  */
                   2741: FILE *yyget_in  (yyscan_t yyscanner)
                   2742: {
                   2743:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2744:     return yyin;
                   2745: }
                   2746: 
                   2747: /** Get the output stream.
                   2748:  * @param yyscanner The scanner object.
                   2749:  */
                   2750: FILE *yyget_out  (yyscan_t yyscanner)
                   2751: {
                   2752:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2753:     return yyout;
                   2754: }
                   2755: 
                   2756: /** Get the length of the current token.
                   2757:  * @param yyscanner The scanner object.
                   2758:  */
                   2759: int yyget_leng  (yyscan_t yyscanner)
                   2760: {
                   2761:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2762:     return yyleng;
                   2763: }
                   2764: 
                   2765: /** Get the current token.
                   2766:  * @param yyscanner The scanner object.
                   2767:  */
                   2768: 
                   2769: char *yyget_text  (yyscan_t yyscanner)
                   2770: {
                   2771:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2772:     return yytext;
                   2773: }
                   2774: 
                   2775: /* %if-reentrant */
                   2776: 
                   2777: /** Set the user-defined data. This data is never touched by the scanner.
                   2778:  * @param user_defined The data to be associated with this scanner.
                   2779:  * @param yyscanner The scanner object.
                   2780:  */
                   2781: void yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
                   2782: {
                   2783:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2784:     yyextra = user_defined ;
                   2785: }
                   2786: 
                   2787: /* %endif */
                   2788: 
                   2789: /** Set the current line number.
                   2790:  * @param _line_number line number
                   2791:  * @param yyscanner The scanner object.
                   2792:  */
                   2793: void yyset_lineno (int  _line_number , yyscan_t yyscanner)
                   2794: {
                   2795:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2796: 
                   2797:         /* lineno is only valid if an input buffer exists. */
                   2798:         if (! YY_CURRENT_BUFFER )
                   2799:            YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
                   2800:     
                   2801:     yylineno = _line_number;
                   2802: }
                   2803: 
                   2804: /** Set the current column.
                   2805:  * @param _column_no column number
                   2806:  * @param yyscanner The scanner object.
                   2807:  */
                   2808: void yyset_column (int  _column_no , yyscan_t yyscanner)
                   2809: {
                   2810:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2811: 
                   2812:         /* column is only valid if an input buffer exists. */
                   2813:         if (! YY_CURRENT_BUFFER )
                   2814:            YY_FATAL_ERROR( "yyset_column called with no buffer" );
                   2815:     
                   2816:     yycolumn = _column_no;
                   2817: }
                   2818: 
                   2819: /** Set the input stream. This does not discard the current
                   2820:  * input buffer.
                   2821:  * @param _in_str A readable stream.
                   2822:  * @param yyscanner The scanner object.
                   2823:  * @see yy_switch_to_buffer
                   2824:  */
                   2825: void yyset_in (FILE *  _in_str , yyscan_t yyscanner)
                   2826: {
                   2827:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2828:     yyin = _in_str ;
                   2829: }
                   2830: 
                   2831: void yyset_out (FILE *  _out_str , yyscan_t yyscanner)
                   2832: {
                   2833:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2834:     yyout = _out_str ;
                   2835: }
                   2836: 
                   2837: int yyget_debug  (yyscan_t yyscanner)
                   2838: {
                   2839:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2840:     return yy_flex_debug;
                   2841: }
                   2842: 
                   2843: void yyset_debug (int  _bdebug , yyscan_t yyscanner)
                   2844: {
                   2845:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2846:     yy_flex_debug = _bdebug ;
                   2847: }
                   2848: 
                   2849: /* %endif */
                   2850: 
                   2851: /* %if-reentrant */
                   2852: /* Accessor methods for yylval and yylloc */
                   2853: 
                   2854: /* %if-bison-bridge */
                   2855: 
                   2856: YYSTYPE * yyget_lval  (yyscan_t yyscanner)
                   2857: {
                   2858:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2859:     return yylval;
                   2860: }
                   2861: 
                   2862: void yyset_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
                   2863: {
                   2864:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2865:     yylval = yylval_param;
                   2866: }
                   2867: 
                   2868: /* %endif */
                   2869: 
                   2870: /* User-visible API */
                   2871: 
                   2872: /* yylex_init is special because it creates the scanner itself, so it is
                   2873:  * the ONLY reentrant function that doesn't take the scanner as the last argument.
                   2874:  * That's why we explicitly handle the declaration, instead of using our macros.
                   2875:  */
                   2876: int yylex_init(yyscan_t* ptr_yy_globals)
                   2877: {
                   2878:     if (ptr_yy_globals == NULL){
                   2879:         errno = EINVAL;
                   2880:         return 1;
                   2881:     }
                   2882: 
                   2883:     *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
                   2884: 
                   2885:     if (*ptr_yy_globals == NULL){
                   2886:         errno = ENOMEM;
                   2887:         return 1;
                   2888:     }
                   2889: 
                   2890:     /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
                   2891:     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
                   2892: 
                   2893:     return yy_init_globals ( *ptr_yy_globals );
                   2894: }
                   2895: 
                   2896: /* yylex_init_extra has the same functionality as yylex_init, but follows the
                   2897:  * convention of taking the scanner as the last argument. Note however, that
                   2898:  * this is a *pointer* to a scanner, as it will be allocated by this call (and
                   2899:  * is the reason, too, why this function also must handle its own declaration).
                   2900:  * The user defined value in the first argument will be available to yyalloc in
                   2901:  * the yyextra field.
                   2902:  */
                   2903: int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals )
                   2904: {
                   2905:     struct yyguts_t dummy_yyguts;
                   2906: 
                   2907:     yyset_extra (yy_user_defined, &dummy_yyguts);
                   2908: 
                   2909:     if (ptr_yy_globals == NULL){
                   2910:         errno = EINVAL;
                   2911:         return 1;
                   2912:     }
                   2913: 
                   2914:     *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
                   2915: 
                   2916:     if (*ptr_yy_globals == NULL){
                   2917:         errno = ENOMEM;
                   2918:         return 1;
                   2919:     }
                   2920: 
                   2921:     /* By setting to 0xAA, we expose bugs in
                   2922:     yy_init_globals. Leave at 0x00 for releases. */
                   2923:     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
                   2924: 
                   2925:     yyset_extra (yy_user_defined, *ptr_yy_globals);
                   2926: 
                   2927:     return yy_init_globals ( *ptr_yy_globals );
                   2928: }
                   2929: 
                   2930: /* %endif if-c-only */
                   2931: 
                   2932: /* %if-c-only */
                   2933: static int yy_init_globals (yyscan_t yyscanner)
                   2934: {
                   2935:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2936:     /* Initialization is the same as for the non-reentrant scanner.
                   2937:      * This function is called from yylex_destroy(), so don't allocate here.
                   2938:      */
                   2939: 
                   2940:     yyg->yy_buffer_stack = NULL;
                   2941:     yyg->yy_buffer_stack_top = 0;
                   2942:     yyg->yy_buffer_stack_max = 0;
                   2943:     yyg->yy_c_buf_p = NULL;
                   2944:     yyg->yy_init = 0;
                   2945:     yyg->yy_start = 0;
                   2946: 
                   2947:     yyg->yy_start_stack_ptr = 0;
                   2948:     yyg->yy_start_stack_depth = 0;
                   2949:     yyg->yy_start_stack =  NULL;
                   2950: 
                   2951: /* Defined in main.c */
                   2952: #ifdef YY_STDINIT
                   2953:     yyin = stdin;
                   2954:     yyout = stdout;
                   2955: #else
                   2956:     yyin = NULL;
                   2957:     yyout = NULL;
                   2958: #endif
                   2959: 
                   2960:     /* For future reference: Set errno on error, since we are called by
                   2961:      * yylex_init()
                   2962:      */
                   2963:     return 0;
                   2964: }
                   2965: /* %endif */
                   2966: 
                   2967: /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
                   2968: /* yylex_destroy is for both reentrant and non-reentrant scanners. */
                   2969: int yylex_destroy  (yyscan_t yyscanner)
                   2970: {
                   2971:     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   2972: 
                   2973:     /* Pop the buffer stack, destroying each element. */
                   2974:        while(YY_CURRENT_BUFFER){
                   2975:                yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner );
                   2976:                YY_CURRENT_BUFFER_LVALUE = NULL;
                   2977:                yypop_buffer_state(yyscanner);
                   2978:        }
                   2979: 
                   2980:        /* Destroy the stack itself. */
                   2981:        yyfree(yyg->yy_buffer_stack , yyscanner);
                   2982:        yyg->yy_buffer_stack = NULL;
                   2983: 
                   2984:     /* Destroy the start condition stack. */
                   2985:         yyfree( yyg->yy_start_stack , yyscanner );
                   2986:         yyg->yy_start_stack = NULL;
                   2987: 
                   2988:     /* Reset the globals. This is important in a non-reentrant scanner so the next time
                   2989:      * yylex() is called, initialization will occur. */
                   2990:     yy_init_globals( yyscanner);
                   2991: 
                   2992: /* %if-reentrant */
                   2993:     /* Destroy the main struct (reentrant only). */
                   2994:     yyfree ( yyscanner , yyscanner );
                   2995:     yyscanner = NULL;
                   2996: /* %endif */
                   2997:     return 0;
                   2998: }
                   2999: /* %endif */
                   3000: 
                   3001: /*
                   3002:  * Internal utility routines.
                   3003:  */
                   3004: 
                   3005: #ifndef yytext_ptr
                   3006: static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner)
                   3007: {
                   3008:        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   3009:        (void)yyg;
                   3010: 
                   3011:        int i;
                   3012:        for ( i = 0; i < n; ++i )
                   3013:                s1[i] = s2[i];
                   3014: }
                   3015: #endif
                   3016: 
                   3017: #ifdef YY_NEED_STRLEN
                   3018: static int yy_flex_strlen (const char * s , yyscan_t yyscanner)
                   3019: {
                   3020:        int n;
                   3021:        for ( n = 0; s[n]; ++n )
                   3022:                ;
                   3023: 
                   3024:        return n;
                   3025: }
                   3026: #endif
                   3027: 
                   3028: void *yyalloc (yy_size_t  size , yyscan_t yyscanner)
                   3029: {
                   3030:        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   3031:        (void)yyg;
                   3032:        return malloc(size);
                   3033: }
                   3034: 
                   3035: void *yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
                   3036: {
                   3037:        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   3038:        (void)yyg;
                   3039: 
                   3040:        /* The cast to (char *) in the following accommodates both
                   3041:         * implementations that use char* generic pointers, and those
                   3042:         * that use void* generic pointers.  It works with the latter
                   3043:         * because both ANSI C and C++ allow castless assignment from
                   3044:         * any pointer type to void*, and deal with argument conversions
                   3045:         * as though doing an assignment.
                   3046:         */
                   3047:        return realloc(ptr, size);
                   3048: }
                   3049: 
                   3050: void yyfree (void * ptr , yyscan_t yyscanner)
                   3051: {
                   3052:        struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
                   3053:        (void)yyg;
                   3054:        free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
                   3055: }
                   3056: 
                   3057: /* %if-tables-serialization definitions */
                   3058: /* %define-yytables   The name for this specific scanner's tables. */
                   3059: #define YYTABLES_NAME "yytables"
                   3060: /* %endif */
                   3061: 
                   3062: /* %ok-for-header */
                   3063: 
                   3064: #line 241 "settings/settings_lexer.l"
                   3065: 
                   3066: 
                   3067: /**
                   3068:  * Open the next file, if any is queued and readable, otherwise returns FALSE.
                   3069:  */
                   3070: bool settings_parser_open_next_file(parser_helper_t *ctx)
                   3071: {
                   3072:        FILE *file;
                   3073: 
                   3074:        file = ctx->file_next(ctx);
                   3075:        if (!file)
                   3076:        {
                   3077:                return FALSE;
                   3078:        }
                   3079: 
                   3080:        settings_parser_set_in(file, ctx->scanner);
                   3081:        settings_parser_push_buffer_state(
                   3082:                        settings_parser__create_buffer(file, YY_BUF_SIZE,
                   3083:                                                                                   ctx->scanner), ctx->scanner);
                   3084:        return TRUE;
                   3085: }
                   3086: 
                   3087: /**
                   3088:  * Assumes that the file pattern to include is currently stored as string on
                   3089:  * the helper object.
                   3090:  */
                   3091: static void include_files(parser_helper_t *ctx)
                   3092: {
                   3093:        char *pattern = ctx->string_get(ctx);
                   3094: 
                   3095:        ctx->file_include(ctx, pattern);
                   3096:        free(pattern);
                   3097: 
                   3098:        settings_parser_open_next_file(ctx);
                   3099: }
                   3100: 
                   3101: /**
                   3102:  * Load the given string to be parsed next
                   3103:  */
                   3104: void settings_parser_load_string(parser_helper_t *ctx, const char *content)
                   3105: {
                   3106:        settings_parser__scan_string(content, ctx->scanner);
                   3107: }
                   3108: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>