Annotation of embedaddon/php/Zend/zend_ini_parser.c, revision 1.1.1.5

1.1.1.4   misho       1: /* A Bison parser, made by GNU Bison 2.7.  */
1.1       misho       2: 
1.1.1.4   misho       3: /* Bison implementation for Yacc-like parsers in C
                      4:    
                      5:       Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
                      6:    
                      7:    This program is free software: you can redistribute it and/or modify
1.1       misho       8:    it under the terms of the GNU General Public License as published by
1.1.1.4   misho       9:    the Free Software Foundation, either version 3 of the License, or
                     10:    (at your option) any later version.
                     11:    
1.1       misho      12:    This program is distributed in the hope that it will be useful,
                     13:    but WITHOUT ANY WARRANTY; without even the implied warranty of
                     14:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     15:    GNU General Public License for more details.
1.1.1.4   misho      16:    
1.1       misho      17:    You should have received a copy of the GNU General Public License
1.1.1.4   misho      18:    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
1.1       misho      19: 
                     20: /* As a special exception, you may create a larger work that contains
                     21:    part or all of the Bison parser skeleton and distribute that work
                     22:    under terms of your choice, so long as that work isn't itself a
                     23:    parser generator using the skeleton or a modified version thereof
                     24:    as a parser skeleton.  Alternatively, if you modify or redistribute
                     25:    the parser skeleton itself, you may (at your option) remove this
                     26:    special exception, which will cause the skeleton and the resulting
                     27:    Bison output files to be licensed under the GNU General Public
                     28:    License without this special exception.
1.1.1.4   misho      29:    
1.1       misho      30:    This special exception was added by the Free Software Foundation in
                     31:    version 2.2 of Bison.  */
                     32: 
                     33: /* C LALR(1) parser skeleton written by Richard Stallman, by
                     34:    simplifying the original so-called "semantic" parser.  */
                     35: 
                     36: /* All symbols defined below should begin with yy or YY, to avoid
                     37:    infringing on user name space.  This should be done even for local
                     38:    variables, as they might otherwise be expanded by user macros.
                     39:    There are some unavoidable exceptions within include files to
                     40:    define necessary library symbols; they are noted "INFRINGES ON
                     41:    USER NAME SPACE" below.  */
                     42: 
                     43: /* Identify Bison output.  */
                     44: #define YYBISON 1
                     45: 
                     46: /* Bison version.  */
1.1.1.4   misho      47: #define YYBISON_VERSION "2.7"
1.1       misho      48: 
                     49: /* Skeleton name.  */
                     50: #define YYSKELETON_NAME "yacc.c"
                     51: 
                     52: /* Pure parsers.  */
                     53: #define YYPURE 1
                     54: 
1.1.1.4   misho      55: /* Push parsers.  */
                     56: #define YYPUSH 0
1.1.1.2   misho      57: 
1.1.1.4   misho      58: /* Pull parsers.  */
                     59: #define YYPULL 1
1.1.1.2   misho      60: 
1.1       misho      61: 
1.1.1.4   misho      62: /* Substitute the variable and function names.  */
                     63: #define yyparse         ini_parse
                     64: #define yylex           ini_lex
                     65: #define yyerror         ini_error
                     66: #define yylval          ini_lval
                     67: #define yychar          ini_char
                     68: #define yydebug         ini_debug
                     69: #define yynerrs         ini_nerrs
1.1       misho      70: 
                     71: /* Copy the first part of user declarations.  */
                     72: 
                     73: 
                     74: /*
                     75:    +----------------------------------------------------------------------+
                     76:    | Zend Engine                                                          |
                     77:    +----------------------------------------------------------------------+
1.1.1.5 ! misho      78:    | Copyright (c) 1998-2014 Zend Technologies Ltd. (http://www.zend.com) |
1.1       misho      79:    +----------------------------------------------------------------------+
                     80:    | This source file is subject to version 2.00 of the Zend license,     |
                     81:    | that is bundled with this package in the file LICENSE, and is        |
                     82:    | available through the world-wide-web at the following url:           |
                     83:    | http://www.zend.com/license/2_00.txt.                                |
                     84:    | If you did not receive a copy of the Zend license and are unable to  |
                     85:    | obtain it through the world-wide-web, please send a note to          |
                     86:    | license@zend.com so we can mail you a copy immediately.              |
                     87:    +----------------------------------------------------------------------+
                     88:    | Authors: Zeev Suraski <zeev@zend.com>                                |
                     89:    |          Jani Taskinen <jani@php.net>                                |
                     90:    +----------------------------------------------------------------------+
                     91: */
                     92: 
1.1.1.2   misho      93: /* $Id$ */
1.1       misho      94: 
                     95: #define DEBUG_CFG_PARSER 0
                     96: 
                     97: #include "zend.h"
                     98: #include "zend_API.h"
                     99: #include "zend_ini.h"
                    100: #include "zend_constants.h"
                    101: #include "zend_ini_scanner.h"
                    102: #include "zend_extensions.h"
                    103: 
                    104: #define YYERROR_VERBOSE
                    105: #define YYSTYPE zval
                    106: 
                    107: #ifdef ZTS
                    108: #define YYPARSE_PARAM tsrm_ls
                    109: #define YYLEX_PARAM tsrm_ls
                    110: int ini_parse(void *arg);
                    111: #else
                    112: int ini_parse(void);
                    113: #endif
                    114: 
                    115: #define ZEND_INI_PARSER_CB     (CG(ini_parser_param))->ini_parser_cb
                    116: #define ZEND_INI_PARSER_ARG    (CG(ini_parser_param))->arg
                    117: 
                    118: /* {{{ zend_ini_do_op()
                    119: */
                    120: static void zend_ini_do_op(char type, zval *result, zval *op1, zval *op2)
                    121: {
                    122:        int i_result;
                    123:        int i_op1, i_op2;
                    124:        char str_result[MAX_LENGTH_OF_LONG];
                    125: 
                    126:        i_op1 = atoi(Z_STRVAL_P(op1));
                    127:        free(Z_STRVAL_P(op1));
                    128:        if (op2) {
                    129:                i_op2 = atoi(Z_STRVAL_P(op2));
                    130:                free(Z_STRVAL_P(op2));
                    131:        } else {
                    132:                i_op2 = 0;
                    133:        }
                    134: 
                    135:        switch (type) {
                    136:                case '|':
                    137:                        i_result = i_op1 | i_op2;
                    138:                        break;
                    139:                case '&':
                    140:                        i_result = i_op1 & i_op2;
                    141:                        break;
                    142:                case '~':
                    143:                        i_result = ~i_op1;
                    144:                        break;
                    145:                case '!':
                    146:                        i_result = !i_op1;
                    147:                        break;
                    148:                default:
                    149:                        i_result = 0;
                    150:                        break;
                    151:        }
                    152: 
                    153:        Z_STRLEN_P(result) = zend_sprintf(str_result, "%d", i_result);
                    154:        Z_STRVAL_P(result) = (char *) malloc(Z_STRLEN_P(result)+1);
                    155:        memcpy(Z_STRVAL_P(result), str_result, Z_STRLEN_P(result));
                    156:        Z_STRVAL_P(result)[Z_STRLEN_P(result)] = 0;
                    157:        Z_TYPE_P(result) = IS_STRING;
                    158: }
                    159: /* }}} */
                    160: 
                    161: /* {{{ zend_ini_init_string()
                    162: */
                    163: static void zend_ini_init_string(zval *result)
                    164: {
                    165:        Z_STRVAL_P(result) = malloc(1);
                    166:        Z_STRVAL_P(result)[0] = 0;
                    167:        Z_STRLEN_P(result) = 0;
                    168:        Z_TYPE_P(result) = IS_STRING;
                    169: }
                    170: /* }}} */
                    171: 
                    172: /* {{{ zend_ini_add_string()
                    173: */
                    174: static void zend_ini_add_string(zval *result, zval *op1, zval *op2)
                    175: {
                    176:        int length = Z_STRLEN_P(op1) + Z_STRLEN_P(op2);
                    177: 
                    178:        Z_STRVAL_P(result) = (char *) realloc(Z_STRVAL_P(op1), length+1);
                    179:        memcpy(Z_STRVAL_P(result)+Z_STRLEN_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op2));
                    180:        Z_STRVAL_P(result)[length] = 0;
                    181:        Z_STRLEN_P(result) = length;
                    182:        Z_TYPE_P(result) = IS_STRING;
                    183: }
                    184: /* }}} */
                    185: 
                    186: /* {{{ zend_ini_get_constant()
                    187: */
                    188: static void zend_ini_get_constant(zval *result, zval *name TSRMLS_DC)
                    189: {
                    190:        zval z_constant;
                    191: 
                    192:        /* If name contains ':' it is not a constant. Bug #26893. */
                    193:        if (!memchr(Z_STRVAL_P(name), ':', Z_STRLEN_P(name))
                    194:                        && zend_get_constant(Z_STRVAL_P(name), Z_STRLEN_P(name), &z_constant TSRMLS_CC)) {
                    195:                /* z_constant is emalloc()'d */
                    196:                convert_to_string(&z_constant);
                    197:                Z_STRVAL_P(result) = zend_strndup(Z_STRVAL(z_constant), Z_STRLEN(z_constant));
                    198:                Z_STRLEN_P(result) = Z_STRLEN(z_constant);
                    199:                Z_TYPE_P(result) = Z_TYPE(z_constant);
                    200:                zval_dtor(&z_constant);
                    201:                free(Z_STRVAL_P(name));
                    202:        } else {
                    203:                *result = *name;
                    204:        }
                    205: }
                    206: /* }}} */
                    207: 
                    208: /* {{{ zend_ini_get_var()
                    209: */
                    210: static void zend_ini_get_var(zval *result, zval *name TSRMLS_DC)
                    211: {
                    212:        zval curval;
                    213:        char *envvar;
                    214: 
                    215:        /* Fetch configuration option value */
                    216:        if (zend_get_configuration_directive(Z_STRVAL_P(name), Z_STRLEN_P(name)+1, &curval) == SUCCESS) {
                    217:                Z_STRVAL_P(result) = zend_strndup(Z_STRVAL(curval), Z_STRLEN(curval));
                    218:                Z_STRLEN_P(result) = Z_STRLEN(curval);
                    219:        /* ..or if not found, try ENV */
                    220:        } else if ((envvar = zend_getenv(Z_STRVAL_P(name), Z_STRLEN_P(name) TSRMLS_CC)) != NULL ||
                    221:                           (envvar = getenv(Z_STRVAL_P(name))) != NULL) {
                    222:                Z_STRVAL_P(result) = strdup(envvar);
                    223:                Z_STRLEN_P(result) = strlen(envvar);
                    224:        } else {
                    225:                zend_ini_init_string(result);
                    226:        }
                    227: }
                    228: /* }}} */
                    229: 
                    230: /* {{{ ini_error()
                    231: */
                    232: static void ini_error(char *msg)
                    233: {
                    234:        char *error_buf;
                    235:        int error_buf_len;
                    236:        char *currently_parsed_filename;
                    237:        TSRMLS_FETCH();
                    238: 
                    239:        currently_parsed_filename = zend_ini_scanner_get_filename(TSRMLS_C);
                    240:        if (currently_parsed_filename) {
                    241:                error_buf_len = 128 + strlen(msg) + strlen(currently_parsed_filename); /* should be more than enough */
                    242:                error_buf = (char *) emalloc(error_buf_len);
                    243: 
                    244:                sprintf(error_buf, "%s in %s on line %d\n", msg, currently_parsed_filename, zend_ini_scanner_get_lineno(TSRMLS_C));
                    245:        } else {
                    246:                error_buf = estrdup("Invalid configuration directive\n");
                    247:        }
                    248: 
                    249:        if (CG(ini_parser_unbuffered_errors)) {
                    250: #ifdef PHP_WIN32
                    251:                MessageBox(NULL, error_buf, "PHP Error", MB_OK|MB_TOPMOST|0x00200000L);
                    252: #else
                    253:                fprintf(stderr, "PHP:  %s", error_buf);
                    254: #endif
                    255:        } else {
                    256:                zend_error(E_WARNING, "%s", error_buf);
                    257:        }
                    258:        efree(error_buf);
                    259: }
                    260: /* }}} */
                    261: 
                    262: /* {{{ zend_parse_ini_file()
                    263: */
                    264: ZEND_API int zend_parse_ini_file(zend_file_handle *fh, zend_bool unbuffered_errors, int scanner_mode, zend_ini_parser_cb_t ini_parser_cb, void *arg TSRMLS_DC)
                    265: {
                    266:        int retval;
                    267:        zend_ini_parser_param ini_parser_param;
                    268: 
                    269:        ini_parser_param.ini_parser_cb = ini_parser_cb;
                    270:        ini_parser_param.arg = arg;
                    271:        CG(ini_parser_param) = &ini_parser_param;
                    272: 
                    273:        if (zend_ini_open_file_for_scanning(fh, scanner_mode TSRMLS_CC) == FAILURE) {
                    274:                return FAILURE;
                    275:        }
                    276: 
                    277:        CG(ini_parser_unbuffered_errors) = unbuffered_errors;
                    278:        retval = ini_parse(TSRMLS_C);
                    279:        zend_file_handle_dtor(fh TSRMLS_CC);
                    280: 
                    281:        shutdown_ini_scanner(TSRMLS_C);
                    282:        
                    283:        if (retval == 0) {
                    284:                return SUCCESS;
                    285:        } else {
                    286:                return FAILURE;
                    287:        }
                    288: }
                    289: /* }}} */
                    290: 
                    291: /* {{{ zend_parse_ini_string()
                    292: */
                    293: ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int scanner_mode, zend_ini_parser_cb_t ini_parser_cb, void *arg TSRMLS_DC)
                    294: {
                    295:        int retval;
                    296:        zend_ini_parser_param ini_parser_param;
                    297: 
                    298:        ini_parser_param.ini_parser_cb = ini_parser_cb;
                    299:        ini_parser_param.arg = arg;
                    300:        CG(ini_parser_param) = &ini_parser_param;
                    301: 
                    302:        if (zend_ini_prepare_string_for_scanning(str, scanner_mode TSRMLS_CC) == FAILURE) {
                    303:                return FAILURE;
                    304:        }
                    305: 
                    306:        CG(ini_parser_unbuffered_errors) = unbuffered_errors;
                    307:        retval = ini_parse(TSRMLS_C);
                    308: 
                    309:        shutdown_ini_scanner(TSRMLS_C);
                    310: 
                    311:        if (retval == 0) {
                    312:                return SUCCESS;
                    313:        } else {
                    314:                return FAILURE;
                    315:        }
                    316: }
                    317: /* }}} */
                    318: 
                    319: 
                    320: 
1.1.1.4   misho     321: 
                    322: # ifndef YY_NULL
                    323: #  if defined __cplusplus && 201103L <= __cplusplus
                    324: #   define YY_NULL nullptr
                    325: #  else
                    326: #   define YY_NULL 0
                    327: #  endif
                    328: # endif
1.1       misho     329: 
                    330: /* Enabling verbose error messages.  */
                    331: #ifdef YYERROR_VERBOSE
                    332: # undef YYERROR_VERBOSE
                    333: # define YYERROR_VERBOSE 1
                    334: #else
                    335: # define YYERROR_VERBOSE 0
                    336: #endif
                    337: 
1.1.1.4   misho     338: /* In a future release of Bison, this section will be replaced
                    339:    by #include "zend_ini_parser.h".  */
                    340: #ifndef YY_INI_ZEND_ZEND_INI_PARSER_H_INCLUDED
                    341: # define YY_INI_ZEND_ZEND_INI_PARSER_H_INCLUDED
                    342: /* Enabling traces.  */
                    343: #ifndef YYDEBUG
                    344: # define YYDEBUG 0
                    345: #endif
                    346: #if YYDEBUG
                    347: extern int ini_debug;
                    348: #endif
                    349: 
                    350: /* Tokens.  */
                    351: #ifndef YYTOKENTYPE
                    352: # define YYTOKENTYPE
                    353:    /* Put the tokens into the symbol table, so that GDB and other debuggers
                    354:       know about them.  */
                    355:    enum yytokentype {
                    356:      TC_SECTION = 258,
                    357:      TC_RAW = 259,
                    358:      TC_CONSTANT = 260,
                    359:      TC_NUMBER = 261,
                    360:      TC_STRING = 262,
                    361:      TC_WHITESPACE = 263,
                    362:      TC_LABEL = 264,
                    363:      TC_OFFSET = 265,
                    364:      TC_DOLLAR_CURLY = 266,
                    365:      TC_VARNAME = 267,
                    366:      TC_QUOTED_STRING = 268,
                    367:      BOOL_TRUE = 269,
                    368:      BOOL_FALSE = 270,
                    369:      END_OF_LINE = 271
                    370:    };
1.1       misho     371: #endif
1.1.1.4   misho     372: /* Tokens.  */
                    373: #define TC_SECTION 258
                    374: #define TC_RAW 259
                    375: #define TC_CONSTANT 260
                    376: #define TC_NUMBER 261
                    377: #define TC_STRING 262
                    378: #define TC_WHITESPACE 263
                    379: #define TC_LABEL 264
                    380: #define TC_OFFSET 265
                    381: #define TC_DOLLAR_CURLY 266
                    382: #define TC_VARNAME 267
                    383: #define TC_QUOTED_STRING 268
                    384: #define BOOL_TRUE 269
                    385: #define BOOL_FALSE 270
                    386: #define END_OF_LINE 271
                    387: 
                    388: 
1.1       misho     389: 
                    390: #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
                    391: typedef int YYSTYPE;
1.1.1.4   misho     392: # define YYSTYPE_IS_TRIVIAL 1
1.1       misho     393: # define yystype YYSTYPE /* obsolescent; will be withdrawn */
                    394: # define YYSTYPE_IS_DECLARED 1
                    395: #endif
                    396: 
                    397: 
1.1.1.4   misho     398: #ifdef YYPARSE_PARAM
                    399: #if defined __STDC__ || defined __cplusplus
                    400: int ini_parse (void *YYPARSE_PARAM);
                    401: #else
                    402: int ini_parse ();
                    403: #endif
                    404: #else /* ! YYPARSE_PARAM */
                    405: #if defined __STDC__ || defined __cplusplus
                    406: int ini_parse (void);
                    407: #else
                    408: int ini_parse ();
                    409: #endif
                    410: #endif /* ! YYPARSE_PARAM */
1.1.1.2   misho     411: 
1.1.1.4   misho     412: #endif /* !YY_INI_ZEND_ZEND_INI_PARSER_H_INCLUDED  */
1.1       misho     413: 
1.1.1.4   misho     414: /* Copy the second part of user declarations.  */
1.1       misho     415: 
1.1.1.2   misho     416: 
1.1       misho     417: 
                    418: #ifdef short
                    419: # undef short
                    420: #endif
                    421: 
                    422: #ifdef YYTYPE_UINT8
                    423: typedef YYTYPE_UINT8 yytype_uint8;
                    424: #else
                    425: typedef unsigned char yytype_uint8;
                    426: #endif
                    427: 
                    428: #ifdef YYTYPE_INT8
                    429: typedef YYTYPE_INT8 yytype_int8;
                    430: #elif (defined __STDC__ || defined __C99__FUNC__ \
                    431:      || defined __cplusplus || defined _MSC_VER)
                    432: typedef signed char yytype_int8;
                    433: #else
                    434: typedef short int yytype_int8;
                    435: #endif
                    436: 
                    437: #ifdef YYTYPE_UINT16
                    438: typedef YYTYPE_UINT16 yytype_uint16;
                    439: #else
                    440: typedef unsigned short int yytype_uint16;
                    441: #endif
                    442: 
                    443: #ifdef YYTYPE_INT16
                    444: typedef YYTYPE_INT16 yytype_int16;
                    445: #else
                    446: typedef short int yytype_int16;
                    447: #endif
                    448: 
                    449: #ifndef YYSIZE_T
                    450: # ifdef __SIZE_TYPE__
                    451: #  define YYSIZE_T __SIZE_TYPE__
                    452: # elif defined size_t
                    453: #  define YYSIZE_T size_t
                    454: # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
                    455:      || defined __cplusplus || defined _MSC_VER)
                    456: #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
                    457: #  define YYSIZE_T size_t
                    458: # else
                    459: #  define YYSIZE_T unsigned int
                    460: # endif
                    461: #endif
                    462: 
                    463: #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
                    464: 
                    465: #ifndef YY_
1.1.1.2   misho     466: # if defined YYENABLE_NLS && YYENABLE_NLS
1.1       misho     467: #  if ENABLE_NLS
                    468: #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
1.1.1.4   misho     469: #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1.1       misho     470: #  endif
                    471: # endif
                    472: # ifndef YY_
1.1.1.4   misho     473: #  define YY_(Msgid) Msgid
1.1       misho     474: # endif
                    475: #endif
                    476: 
                    477: /* Suppress unused-variable warnings by "using" E.  */
                    478: #if ! defined lint || defined __GNUC__
1.1.1.4   misho     479: # define YYUSE(E) ((void) (E))
1.1       misho     480: #else
1.1.1.4   misho     481: # define YYUSE(E) /* empty */
1.1       misho     482: #endif
                    483: 
                    484: /* Identity function, used to suppress warnings about constant conditions.  */
                    485: #ifndef lint
1.1.1.4   misho     486: # define YYID(N) (N)
1.1       misho     487: #else
                    488: #if (defined __STDC__ || defined __C99__FUNC__ \
                    489:      || defined __cplusplus || defined _MSC_VER)
                    490: static int
1.1.1.4   misho     491: YYID (int yyi)
1.1       misho     492: #else
                    493: static int
1.1.1.4   misho     494: YYID (yyi)
                    495:     int yyi;
1.1       misho     496: #endif
                    497: {
1.1.1.4   misho     498:   return yyi;
1.1       misho     499: }
                    500: #endif
                    501: 
                    502: #if ! defined yyoverflow || YYERROR_VERBOSE
                    503: 
                    504: /* The parser invokes alloca or malloc; define the necessary symbols.  */
                    505: 
                    506: # ifdef YYSTACK_USE_ALLOCA
                    507: #  if YYSTACK_USE_ALLOCA
                    508: #   ifdef __GNUC__
                    509: #    define YYSTACK_ALLOC __builtin_alloca
                    510: #   elif defined __BUILTIN_VA_ARG_INCR
                    511: #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
                    512: #   elif defined _AIX
                    513: #    define YYSTACK_ALLOC __alloca
                    514: #   elif defined _MSC_VER
                    515: #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
                    516: #    define alloca _alloca
                    517: #   else
                    518: #    define YYSTACK_ALLOC alloca
1.1.1.4   misho     519: #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
1.1       misho     520:      || defined __cplusplus || defined _MSC_VER)
                    521: #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1.1.1.4   misho     522:       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
                    523: #     ifndef EXIT_SUCCESS
                    524: #      define EXIT_SUCCESS 0
1.1       misho     525: #     endif
                    526: #    endif
                    527: #   endif
                    528: #  endif
                    529: # endif
                    530: 
                    531: # ifdef YYSTACK_ALLOC
                    532:    /* Pacify GCC's `empty if-body' warning.  */
                    533: #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
                    534: #  ifndef YYSTACK_ALLOC_MAXIMUM
                    535:     /* The OS might guarantee only one guard page at the bottom of the stack,
                    536:        and a page size can be as small as 4096 bytes.  So we cannot safely
                    537:        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
                    538:        to allow for a few compiler-allocated temporary stack slots.  */
                    539: #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
                    540: #  endif
                    541: # else
                    542: #  define YYSTACK_ALLOC YYMALLOC
                    543: #  define YYSTACK_FREE YYFREE
                    544: #  ifndef YYSTACK_ALLOC_MAXIMUM
                    545: #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
                    546: #  endif
1.1.1.4   misho     547: #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
1.1       misho     548:        && ! ((defined YYMALLOC || defined malloc) \
                    549:             && (defined YYFREE || defined free)))
                    550: #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1.1.1.4   misho     551: #   ifndef EXIT_SUCCESS
                    552: #    define EXIT_SUCCESS 0
1.1       misho     553: #   endif
                    554: #  endif
                    555: #  ifndef YYMALLOC
                    556: #   define YYMALLOC malloc
1.1.1.4   misho     557: #   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
1.1       misho     558:      || defined __cplusplus || defined _MSC_VER)
                    559: void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
                    560: #   endif
                    561: #  endif
                    562: #  ifndef YYFREE
                    563: #   define YYFREE free
1.1.1.4   misho     564: #   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
1.1       misho     565:      || defined __cplusplus || defined _MSC_VER)
                    566: void free (void *); /* INFRINGES ON USER NAME SPACE */
                    567: #   endif
                    568: #  endif
                    569: # endif
                    570: #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
                    571: 
                    572: 
                    573: #if (! defined yyoverflow \
                    574:      && (! defined __cplusplus \
                    575:         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
                    576: 
                    577: /* A type that is properly aligned for any stack member.  */
                    578: union yyalloc
                    579: {
1.1.1.4   misho     580:   yytype_int16 yyss_alloc;
                    581:   YYSTYPE yyvs_alloc;
                    582: };
1.1       misho     583: 
                    584: /* The size of the maximum gap between one aligned stack and the next.  */
                    585: # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
                    586: 
                    587: /* The size of an array large to enough to hold all stacks, each with
                    588:    N elements.  */
                    589: # define YYSTACK_BYTES(N) \
                    590:      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
                    591:       + YYSTACK_GAP_MAXIMUM)
                    592: 
1.1.1.4   misho     593: # define YYCOPY_NEEDED 1
1.1       misho     594: 
                    595: /* Relocate STACK from its old location to the new one.  The
                    596:    local variables YYSIZE and YYSTACKSIZE give the old and new number of
                    597:    elements in the stack, and YYPTR gives the new location of the
                    598:    stack.  Advance YYPTR to a properly aligned location for the next
                    599:    stack.  */
1.1.1.4   misho     600: # define YYSTACK_RELOCATE(Stack_alloc, Stack)                          \
1.1       misho     601:     do                                                                 \
                    602:       {                                                                        \
                    603:        YYSIZE_T yynewbytes;                                            \
1.1.1.4   misho     604:        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
                    605:        Stack = &yyptr->Stack_alloc;                                    \
1.1       misho     606:        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
                    607:        yyptr += yynewbytes / sizeof (*yyptr);                          \
                    608:       }                                                                        \
                    609:     while (YYID (0))
                    610: 
                    611: #endif
                    612: 
1.1.1.4   misho     613: #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
                    614: /* Copy COUNT objects from SRC to DST.  The source and destination do
                    615:    not overlap.  */
                    616: # ifndef YYCOPY
                    617: #  if defined __GNUC__ && 1 < __GNUC__
                    618: #   define YYCOPY(Dst, Src, Count) \
                    619:       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
                    620: #  else
                    621: #   define YYCOPY(Dst, Src, Count)              \
                    622:       do                                        \
                    623:         {                                       \
                    624:           YYSIZE_T yyi;                         \
                    625:           for (yyi = 0; yyi < (Count); yyi++)   \
                    626:             (Dst)[yyi] = (Src)[yyi];            \
                    627:         }                                       \
                    628:       while (YYID (0))
                    629: #  endif
                    630: # endif
                    631: #endif /* !YYCOPY_NEEDED */
                    632: 
1.1       misho     633: /* YYFINAL -- State number of the termination state.  */
                    634: #define YYFINAL  2
                    635: /* YYLAST -- Last index in YYTABLE.  */
                    636: #define YYLAST   109
                    637: 
                    638: /* YYNTOKENS -- Number of terminals.  */
                    639: #define YYNTOKENS  43
                    640: /* YYNNTS -- Number of nonterminals.  */
                    641: #define YYNNTS  13
                    642: /* YYNRULES -- Number of rules.  */
                    643: #define YYNRULES  48
                    644: /* YYNRULES -- Number of states.  */
                    645: #define YYNSTATES  69
                    646: 
                    647: /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
                    648: #define YYUNDEFTOK  2
                    649: #define YYMAXUTOK   271
                    650: 
                    651: #define YYTRANSLATE(YYX)                                               \
                    652:   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
                    653: 
                    654: /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
                    655: static const yytype_uint8 yytranslate[] =
                    656: {
                    657:        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    658:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    659:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    660:        2,     2,     2,    39,    21,     2,    29,    28,    38,    22,
                    661:       41,    42,    27,    24,    19,    25,    20,    26,     2,     2,
                    662:        2,     2,     2,     2,     2,     2,     2,     2,    18,     2,
                    663:       31,    17,    32,    33,    34,     2,     2,     2,     2,     2,
                    664:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    665:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    666:        2,     2,     2,    40,    23,     2,     2,     2,     2,     2,
                    667:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    668:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    669:        2,     2,     2,    35,    37,    36,    30,     2,     2,     2,
                    670:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    671:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    672:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    673:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    674:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    675:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    676:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    677:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    678:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    679:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    680:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    681:        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    682:        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
                    683:        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
                    684:       15,    16
                    685: };
                    686: 
                    687: #if YYDEBUG
                    688: /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
                    689:    YYRHS.  */
                    690: static const yytype_uint8 yyprhs[] =
                    691: {
                    692:        0,     0,     3,     6,     7,    11,    15,    21,    23,    25,
                    693:       27,    28,    30,    32,    34,    36,    38,    39,    42,    45,
                    694:       46,    48,    50,    54,    57,    60,    65,    67,    69,    73,
                    695:       76,    79,    84,    86,    90,    94,    97,   100,   104,   108,
                    696:      110,   112,   114,   116,   118,   120,   122,   124,   126
                    697: };
                    698: 
                    699: /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
                    700: static const yytype_int8 yyrhs[] =
                    701: {
                    702:       44,     0,    -1,    44,    45,    -1,    -1,     3,    46,    40,
                    703:       -1,     9,    17,    47,    -1,    10,    48,    40,    17,    47,
                    704:       -1,     9,    -1,    16,    -1,    50,    -1,    -1,    52,    -1,
                    705:       14,    -1,    15,    -1,    16,    -1,    51,    -1,    -1,    49,
                    706:       53,    -1,    49,    13,    -1,    -1,    53,    -1,    54,    -1,
                    707:       21,    49,    21,    -1,    50,    53,    -1,    50,    54,    -1,
                    708:       50,    21,    49,    21,    -1,    53,    -1,    55,    -1,    21,
                    709:       49,    21,    -1,    51,    53,    -1,    51,    55,    -1,    51,
                    710:       21,    49,    21,    -1,    51,    -1,    52,    37,    52,    -1,
                    711:       52,    38,    52,    -1,    30,    52,    -1,    39,    52,    -1,
                    712:       41,    52,    42,    -1,    11,    12,    36,    -1,     5,    -1,
                    713:        4,    -1,     6,    -1,     7,    -1,     8,    -1,     5,    -1,
                    714:        4,    -1,     6,    -1,     7,    -1,     8,    -1
                    715: };
                    716: 
                    717: /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
                    718: static const yytype_uint16 yyrline[] =
                    719: {
                    720:        0,   273,   273,   274,   278,   285,   293,   302,   303,   307,
                    721:      308,   312,   313,   314,   315,   319,   320,   324,   325,   326,
                    722:      330,   331,   332,   333,   334,   335,   339,   340,   341,   342,
                    723:      343,   344,   348,   349,   350,   351,   352,   353,   357,   361,
                    724:      362,   363,   364,   365,   369,   370,   371,   372,   373
                    725: };
                    726: #endif
                    727: 
1.1.1.4   misho     728: #if YYDEBUG || YYERROR_VERBOSE || 0
1.1       misho     729: /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
                    730:    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
                    731: static const char *const yytname[] =
                    732: {
                    733:   "$end", "error", "$undefined", "TC_SECTION", "TC_RAW", "TC_CONSTANT",
                    734:   "TC_NUMBER", "TC_STRING", "TC_WHITESPACE", "TC_LABEL", "TC_OFFSET",
                    735:   "TC_DOLLAR_CURLY", "TC_VARNAME", "TC_QUOTED_STRING", "BOOL_TRUE",
1.1.1.4   misho     736:   "BOOL_FALSE", "END_OF_LINE", "'='", "':'", "','", "'.'", "'\"'", "'\\''",
1.1       misho     737:   "'^'", "'+'", "'-'", "'/'", "'*'", "'%'", "'$'", "'~'", "'<'", "'>'",
                    738:   "'?'", "'@'", "'{'", "'}'", "'|'", "'&'", "'!'", "']'", "'('", "')'",
                    739:   "$accept", "statement_list", "statement", "section_string_or_value",
                    740:   "string_or_value", "option_offset", "encapsed_list",
                    741:   "var_string_list_section", "var_string_list", "expr", "cfg_var_ref",
1.1.1.4   misho     742:   "constant_literal", "constant_string", YY_NULL
1.1       misho     743: };
                    744: #endif
                    745: 
                    746: # ifdef YYPRINT
                    747: /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
                    748:    token YYLEX-NUM.  */
                    749: static const yytype_uint16 yytoknum[] =
                    750: {
                    751:        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
                    752:      265,   266,   267,   268,   269,   270,   271,    61,    58,    44,
                    753:       46,    34,    39,    94,    43,    45,    47,    42,    37,    36,
                    754:      126,    60,    62,    63,    64,   123,   125,   124,    38,    33,
                    755:       93,    40,    41
                    756: };
                    757: # endif
                    758: 
                    759: /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
                    760: static const yytype_uint8 yyr1[] =
                    761: {
                    762:        0,    43,    44,    44,    45,    45,    45,    45,    45,    46,
                    763:       46,    47,    47,    47,    47,    48,    48,    49,    49,    49,
                    764:       50,    50,    50,    50,    50,    50,    51,    51,    51,    51,
                    765:       51,    51,    52,    52,    52,    52,    52,    52,    53,    54,
                    766:       54,    54,    54,    54,    55,    55,    55,    55,    55
                    767: };
                    768: 
                    769: /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
                    770: static const yytype_uint8 yyr2[] =
                    771: {
                    772:        0,     2,     2,     0,     3,     3,     5,     1,     1,     1,
                    773:        0,     1,     1,     1,     1,     1,     0,     2,     2,     0,
                    774:        1,     1,     3,     2,     2,     4,     1,     1,     3,     2,
                    775:        2,     4,     1,     3,     3,     2,     2,     3,     3,     1,
                    776:        1,     1,     1,     1,     1,     1,     1,     1,     1
                    777: };
                    778: 
1.1.1.4   misho     779: /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
                    780:    Performed when YYTABLE doesn't specify something else to do.  Zero
1.1       misho     781:    means the default is an error.  */
                    782: static const yytype_uint8 yydefact[] =
                    783: {
                    784:        3,     0,     1,    10,     7,    16,     8,     2,    40,    39,
                    785:       41,    42,    43,     0,    19,     0,     9,    20,    21,     0,
                    786:       45,    44,    46,    47,    48,    19,     0,    15,    26,    27,
                    787:        0,     0,     4,    19,    23,    24,    12,    13,    14,     0,
                    788:        0,     0,     5,    32,    11,     0,     0,    19,    29,    30,
                    789:       38,    18,    22,    17,     0,    35,    36,     0,     0,     0,
                    790:       28,     0,     0,    25,    37,    33,    34,     6,    31
                    791: };
                    792: 
                    793: /* YYDEFGOTO[NTERM-NUM].  */
                    794: static const yytype_int8 yydefgoto[] =
                    795: {
                    796:       -1,     1,     7,    15,    42,    26,    31,    16,    43,    44,
                    797:       28,    18,    29
                    798: };
                    799: 
                    800: /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
                    801:    STATE-NUM.  */
                    802: #define YYPACT_NINF -36
                    803: static const yytype_int8 yypact[] =
                    804: {
                    805:      -36,    93,   -36,    39,    -5,    65,   -36,   -36,   -36,   -36,
                    806:      -36,   -36,   -36,     8,   -36,   -18,    73,   -36,   -36,     0,
                    807:      -36,   -36,   -36,   -36,   -36,   -36,   -15,    84,   -36,   -36,
                    808:       -9,    41,   -36,   -36,   -36,   -36,   -36,   -36,   -36,    27,
                    809:       27,    27,   -36,    84,   -35,    42,    12,   -36,   -36,   -36,
                    810:      -36,   -36,   -36,   -36,    54,   -36,   -36,    45,    27,    27,
                    811:      -36,     0,    86,   -36,   -36,   -36,   -36,   -36,   -36
                    812: };
                    813: 
                    814: /* YYPGOTO[NTERM-NUM].  */
                    815: static const yytype_int8 yypgoto[] =
                    816: {
                    817:      -36,   -36,   -36,   -36,   -12,   -36,   -24,   -36,    51,   -22,
                    818:       -3,    48,   -17
                    819: };
                    820: 
                    821: /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
                    822:    positive, shift that token.  If negative, reduce the rule which
1.1.1.4   misho     823:    number is the opposite.  If YYTABLE_NINF, syntax error.  */
1.1       misho     824: #define YYTABLE_NINF -1
                    825: static const yytype_uint8 yytable[] =
                    826: {
                    827:       17,    45,    58,    59,    20,    21,    22,    23,    24,    54,
                    828:       49,    13,    19,    34,    36,    37,    38,    55,    56,    57,
                    829:       30,    25,    32,    62,    48,    46,    49,    50,    53,    61,
                    830:       39,    20,    21,    22,    23,    24,    65,    66,    13,    40,
                    831:       48,    41,    53,     8,     9,    10,    11,    12,    25,    67,
                    832:       13,    53,    13,    13,    51,    51,    27,    39,     0,    53,
                    833:       14,     0,    52,    60,    35,    13,    40,    51,    41,    20,
                    834:       21,    22,    23,    24,     0,    63,    13,     8,     9,    10,
                    835:       11,    12,    58,    59,    13,     0,    25,    64,    20,    21,
                    836:       22,    23,    24,     2,    33,    13,     3,    13,     0,    51,
                    837:        0,     0,     4,     5,     0,    47,     0,    68,     0,     6
                    838: };
                    839: 
1.1.1.4   misho     840: #define yypact_value_is_default(Yystate) \
                    841:   (!!((Yystate) == (-36)))
                    842: 
                    843: #define yytable_value_is_error(Yytable_value) \
                    844:   YYID (0)
                    845: 
1.1       misho     846: static const yytype_int8 yycheck[] =
                    847: {
                    848:        3,    25,    37,    38,     4,     5,     6,     7,     8,    33,
                    849:       27,    11,    17,    16,    14,    15,    16,    39,    40,    41,
                    850:       12,    21,    40,    47,    27,    40,    43,    36,    31,    17,
                    851:       30,     4,     5,     6,     7,     8,    58,    59,    11,    39,
                    852:       43,    41,    45,     4,     5,     6,     7,     8,    21,    61,
                    853:       11,    54,    11,    11,    13,    13,     5,    30,    -1,    62,
                    854:       21,    -1,    21,    21,    16,    11,    39,    13,    41,     4,
                    855:        5,     6,     7,     8,    -1,    21,    11,     4,     5,     6,
                    856:        7,     8,    37,    38,    11,    -1,    21,    42,     4,     5,
                    857:        6,     7,     8,     0,    21,    11,     3,    11,    -1,    13,
                    858:       -1,    -1,     9,    10,    -1,    21,    -1,    21,    -1,    16
                    859: };
                    860: 
                    861: /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
                    862:    symbol of state STATE-NUM.  */
                    863: static const yytype_uint8 yystos[] =
                    864: {
                    865:        0,    44,     0,     3,     9,    10,    16,    45,     4,     5,
                    866:        6,     7,     8,    11,    21,    46,    50,    53,    54,    17,
                    867:        4,     5,     6,     7,     8,    21,    48,    51,    53,    55,
                    868:       12,    49,    40,    21,    53,    54,    14,    15,    16,    30,
                    869:       39,    41,    47,    51,    52,    49,    40,    21,    53,    55,
                    870:       36,    13,    21,    53,    49,    52,    52,    52,    37,    38,
                    871:       21,    17,    49,    21,    42,    52,    52,    47,    21
                    872: };
                    873: 
                    874: #define yyerrok                (yyerrstatus = 0)
                    875: #define yyclearin      (yychar = YYEMPTY)
                    876: #define YYEMPTY                (-2)
                    877: #define YYEOF          0
                    878: 
                    879: #define YYACCEPT       goto yyacceptlab
                    880: #define YYABORT                goto yyabortlab
                    881: #define YYERROR                goto yyerrorlab
                    882: 
                    883: 
                    884: /* Like YYERROR except do call yyerror.  This remains here temporarily
                    885:    to ease the transition to the new meaning of YYERROR, for GCC.
1.1.1.4   misho     886:    Once GCC version 2 has supplanted version 1, this can go.  However,
                    887:    YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
                    888:    in Bison 2.4.2's NEWS entry, where a plan to phase it out is
                    889:    discussed.  */
1.1       misho     890: 
                    891: #define YYFAIL         goto yyerrlab
1.1.1.4   misho     892: #if defined YYFAIL
                    893:   /* This is here to suppress warnings from the GCC cpp's
                    894:      -Wunused-macros.  Normally we don't worry about that warning, but
                    895:      some users do, and we want to make it easy for users to remove
                    896:      YYFAIL uses, which will produce warnings from Bison 2.5.  */
                    897: #endif
1.1       misho     898: 
                    899: #define YYRECOVERING()  (!!yyerrstatus)
                    900: 
1.1.1.4   misho     901: #define YYBACKUP(Token, Value)                                  \
                    902: do                                                              \
                    903:   if (yychar == YYEMPTY)                                        \
                    904:     {                                                           \
                    905:       yychar = (Token);                                         \
                    906:       yylval = (Value);                                         \
                    907:       YYPOPSTACK (yylen);                                       \
                    908:       yystate = *yyssp;                                         \
                    909:       goto yybackup;                                            \
                    910:     }                                                           \
                    911:   else                                                          \
                    912:     {                                                           \
1.1       misho     913:       yyerror (YY_("syntax error: cannot back up")); \
                    914:       YYERROR;                                                 \
                    915:     }                                                          \
                    916: while (YYID (0))
                    917: 
1.1.1.4   misho     918: /* Error token number */
1.1       misho     919: #define YYTERROR       1
                    920: #define YYERRCODE      256
                    921: 
                    922: 
1.1.1.4   misho     923: /* This macro is provided for backward compatibility. */
1.1       misho     924: #ifndef YY_LOCATION_PRINT
1.1.1.4   misho     925: # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1.1       misho     926: #endif
                    927: 
                    928: 
                    929: /* YYLEX -- calling `yylex' with the right arguments.  */
                    930: #ifdef YYLEX_PARAM
                    931: # define YYLEX yylex (&yylval, YYLEX_PARAM)
                    932: #else
                    933: # define YYLEX yylex (&yylval)
                    934: #endif
                    935: 
                    936: /* Enable debugging if requested.  */
                    937: #if YYDEBUG
                    938: 
                    939: # ifndef YYFPRINTF
                    940: #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
                    941: #  define YYFPRINTF fprintf
                    942: # endif
                    943: 
                    944: # define YYDPRINTF(Args)                       \
                    945: do {                                           \
                    946:   if (yydebug)                                 \
                    947:     YYFPRINTF Args;                            \
                    948: } while (YYID (0))
                    949: 
                    950: # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                   \
                    951: do {                                                                     \
                    952:   if (yydebug)                                                           \
                    953:     {                                                                    \
                    954:       YYFPRINTF (stderr, "%s ", Title);                                          \
                    955:       yy_symbol_print (stderr,                                           \
                    956:                  Type, Value); \
                    957:       YYFPRINTF (stderr, "\n");                                                  \
                    958:     }                                                                    \
                    959: } while (YYID (0))
                    960: 
                    961: 
                    962: /*--------------------------------.
                    963: | Print this symbol on YYOUTPUT.  |
                    964: `--------------------------------*/
                    965: 
                    966: /*ARGSUSED*/
                    967: #if (defined __STDC__ || defined __C99__FUNC__ \
                    968:      || defined __cplusplus || defined _MSC_VER)
                    969: static void
                    970: yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
                    971: #else
                    972: static void
                    973: yy_symbol_value_print (yyoutput, yytype, yyvaluep)
                    974:     FILE *yyoutput;
                    975:     int yytype;
                    976:     YYSTYPE const * const yyvaluep;
                    977: #endif
                    978: {
1.1.1.4   misho     979:   FILE *yyo = yyoutput;
                    980:   YYUSE (yyo);
1.1       misho     981:   if (!yyvaluep)
                    982:     return;
                    983: # ifdef YYPRINT
                    984:   if (yytype < YYNTOKENS)
                    985:     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
                    986: # else
                    987:   YYUSE (yyoutput);
                    988: # endif
                    989:   switch (yytype)
                    990:     {
                    991:       default:
1.1.1.4   misho     992:         break;
1.1       misho     993:     }
                    994: }
                    995: 
                    996: 
                    997: /*--------------------------------.
                    998: | Print this symbol on YYOUTPUT.  |
                    999: `--------------------------------*/
                   1000: 
                   1001: #if (defined __STDC__ || defined __C99__FUNC__ \
                   1002:      || defined __cplusplus || defined _MSC_VER)
                   1003: static void
                   1004: yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
                   1005: #else
                   1006: static void
                   1007: yy_symbol_print (yyoutput, yytype, yyvaluep)
                   1008:     FILE *yyoutput;
                   1009:     int yytype;
                   1010:     YYSTYPE const * const yyvaluep;
                   1011: #endif
                   1012: {
                   1013:   if (yytype < YYNTOKENS)
                   1014:     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
                   1015:   else
                   1016:     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
                   1017: 
                   1018:   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
                   1019:   YYFPRINTF (yyoutput, ")");
                   1020: }
                   1021: 
                   1022: /*------------------------------------------------------------------.
                   1023: | yy_stack_print -- Print the state stack from its BOTTOM up to its |
                   1024: | TOP (included).                                                   |
                   1025: `------------------------------------------------------------------*/
                   1026: 
                   1027: #if (defined __STDC__ || defined __C99__FUNC__ \
                   1028:      || defined __cplusplus || defined _MSC_VER)
                   1029: static void
1.1.1.4   misho    1030: yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1.1       misho    1031: #else
                   1032: static void
1.1.1.4   misho    1033: yy_stack_print (yybottom, yytop)
                   1034:     yytype_int16 *yybottom;
                   1035:     yytype_int16 *yytop;
1.1       misho    1036: #endif
                   1037: {
                   1038:   YYFPRINTF (stderr, "Stack now");
1.1.1.4   misho    1039:   for (; yybottom <= yytop; yybottom++)
                   1040:     {
                   1041:       int yybot = *yybottom;
                   1042:       YYFPRINTF (stderr, " %d", yybot);
                   1043:     }
1.1       misho    1044:   YYFPRINTF (stderr, "\n");
                   1045: }
                   1046: 
                   1047: # define YY_STACK_PRINT(Bottom, Top)                           \
                   1048: do {                                                           \
                   1049:   if (yydebug)                                                 \
                   1050:     yy_stack_print ((Bottom), (Top));                          \
                   1051: } while (YYID (0))
                   1052: 
                   1053: 
                   1054: /*------------------------------------------------.
                   1055: | Report that the YYRULE is going to be reduced.  |
                   1056: `------------------------------------------------*/
                   1057: 
                   1058: #if (defined __STDC__ || defined __C99__FUNC__ \
                   1059:      || defined __cplusplus || defined _MSC_VER)
                   1060: static void
                   1061: yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
                   1062: #else
                   1063: static void
                   1064: yy_reduce_print (yyvsp, yyrule)
                   1065:     YYSTYPE *yyvsp;
                   1066:     int yyrule;
                   1067: #endif
                   1068: {
                   1069:   int yynrhs = yyr2[yyrule];
                   1070:   int yyi;
                   1071:   unsigned long int yylno = yyrline[yyrule];
                   1072:   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
                   1073:             yyrule - 1, yylno);
                   1074:   /* The symbols being reduced.  */
                   1075:   for (yyi = 0; yyi < yynrhs; yyi++)
                   1076:     {
1.1.1.4   misho    1077:       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1.1       misho    1078:       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
                   1079:                       &(yyvsp[(yyi + 1) - (yynrhs)])
                   1080:                                       );
1.1.1.4   misho    1081:       YYFPRINTF (stderr, "\n");
1.1       misho    1082:     }
                   1083: }
                   1084: 
                   1085: # define YY_REDUCE_PRINT(Rule)         \
                   1086: do {                                   \
                   1087:   if (yydebug)                         \
                   1088:     yy_reduce_print (yyvsp, Rule); \
                   1089: } while (YYID (0))
                   1090: 
                   1091: /* Nonzero means print parse trace.  It is left uninitialized so that
                   1092:    multiple parsers can coexist.  */
                   1093: int yydebug;
                   1094: #else /* !YYDEBUG */
                   1095: # define YYDPRINTF(Args)
                   1096: # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
                   1097: # define YY_STACK_PRINT(Bottom, Top)
                   1098: # define YY_REDUCE_PRINT(Rule)
                   1099: #endif /* !YYDEBUG */
                   1100: 
                   1101: 
                   1102: /* YYINITDEPTH -- initial size of the parser's stacks.  */
                   1103: #ifndef        YYINITDEPTH
                   1104: # define YYINITDEPTH 200
                   1105: #endif
                   1106: 
                   1107: /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
                   1108:    if the built-in stack extension method is used).
                   1109: 
                   1110:    Do not make this value too large; the results are undefined if
                   1111:    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
                   1112:    evaluated with infinite-precision integer arithmetic.  */
                   1113: 
                   1114: #ifndef YYMAXDEPTH
                   1115: # define YYMAXDEPTH 10000
                   1116: #endif
                   1117: 
                   1118: 
                   1119: #if YYERROR_VERBOSE
                   1120: 
                   1121: # ifndef yystrlen
                   1122: #  if defined __GLIBC__ && defined _STRING_H
                   1123: #   define yystrlen strlen
                   1124: #  else
                   1125: /* Return the length of YYSTR.  */
                   1126: #if (defined __STDC__ || defined __C99__FUNC__ \
                   1127:      || defined __cplusplus || defined _MSC_VER)
                   1128: static YYSIZE_T
                   1129: yystrlen (const char *yystr)
                   1130: #else
                   1131: static YYSIZE_T
                   1132: yystrlen (yystr)
                   1133:     const char *yystr;
                   1134: #endif
                   1135: {
                   1136:   YYSIZE_T yylen;
                   1137:   for (yylen = 0; yystr[yylen]; yylen++)
                   1138:     continue;
                   1139:   return yylen;
                   1140: }
                   1141: #  endif
                   1142: # endif
                   1143: 
                   1144: # ifndef yystpcpy
                   1145: #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
                   1146: #   define yystpcpy stpcpy
                   1147: #  else
                   1148: /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
                   1149:    YYDEST.  */
                   1150: #if (defined __STDC__ || defined __C99__FUNC__ \
                   1151:      || defined __cplusplus || defined _MSC_VER)
                   1152: static char *
                   1153: yystpcpy (char *yydest, const char *yysrc)
                   1154: #else
                   1155: static char *
                   1156: yystpcpy (yydest, yysrc)
                   1157:     char *yydest;
                   1158:     const char *yysrc;
                   1159: #endif
                   1160: {
                   1161:   char *yyd = yydest;
                   1162:   const char *yys = yysrc;
                   1163: 
                   1164:   while ((*yyd++ = *yys++) != '\0')
                   1165:     continue;
                   1166: 
                   1167:   return yyd - 1;
                   1168: }
                   1169: #  endif
                   1170: # endif
                   1171: 
                   1172: # ifndef yytnamerr
                   1173: /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
                   1174:    quotes and backslashes, so that it's suitable for yyerror.  The
                   1175:    heuristic is that double-quoting is unnecessary unless the string
                   1176:    contains an apostrophe, a comma, or backslash (other than
                   1177:    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
                   1178:    null, do not copy; instead, return the length of what the result
                   1179:    would have been.  */
                   1180: static YYSIZE_T
                   1181: yytnamerr (char *yyres, const char *yystr)
                   1182: {
                   1183:   if (*yystr == '"')
                   1184:     {
                   1185:       YYSIZE_T yyn = 0;
                   1186:       char const *yyp = yystr;
                   1187: 
                   1188:       for (;;)
                   1189:        switch (*++yyp)
                   1190:          {
                   1191:          case '\'':
                   1192:          case ',':
                   1193:            goto do_not_strip_quotes;
                   1194: 
                   1195:          case '\\':
                   1196:            if (*++yyp != '\\')
                   1197:              goto do_not_strip_quotes;
                   1198:            /* Fall through.  */
                   1199:          default:
                   1200:            if (yyres)
                   1201:              yyres[yyn] = *yyp;
                   1202:            yyn++;
                   1203:            break;
                   1204: 
                   1205:          case '"':
                   1206:            if (yyres)
                   1207:              yyres[yyn] = '\0';
                   1208:            return yyn;
                   1209:          }
                   1210:     do_not_strip_quotes: ;
                   1211:     }
                   1212: 
                   1213:   if (! yyres)
                   1214:     return yystrlen (yystr);
                   1215: 
                   1216:   return yystpcpy (yyres, yystr) - yyres;
                   1217: }
                   1218: # endif
                   1219: 
1.1.1.4   misho    1220: /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
                   1221:    about the unexpected token YYTOKEN for the state stack whose top is
                   1222:    YYSSP.
                   1223: 
                   1224:    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
                   1225:    not large enough to hold the message.  In that case, also set
                   1226:    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
                   1227:    required number of bytes is too large to store.  */
                   1228: static int
                   1229: yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                   1230:                 yytype_int16 *yyssp, int yytoken)
1.1       misho    1231: {
1.1.1.4   misho    1232:   YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
                   1233:   YYSIZE_T yysize = yysize0;
                   1234:   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
                   1235:   /* Internationalized format string. */
                   1236:   const char *yyformat = YY_NULL;
                   1237:   /* Arguments of yyformat. */
                   1238:   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
                   1239:   /* Number of reported tokens (one for the "unexpected", one per
                   1240:      "expected"). */
                   1241:   int yycount = 0;
                   1242: 
                   1243:   /* There are many possibilities here to consider:
                   1244:      - Assume YYFAIL is not used.  It's too flawed to consider.  See
                   1245:        <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
                   1246:        for details.  YYERROR is fine as it does not invoke this
                   1247:        function.
                   1248:      - If this state is a consistent state with a default action, then
                   1249:        the only way this function was invoked is if the default action
                   1250:        is an error action.  In that case, don't check for expected
                   1251:        tokens because there are none.
                   1252:      - The only way there can be no lookahead present (in yychar) is if
                   1253:        this state is a consistent state with a default action.  Thus,
                   1254:        detecting the absence of a lookahead is sufficient to determine
                   1255:        that there is no unexpected or expected token to report.  In that
                   1256:        case, just report a simple "syntax error".
                   1257:      - Don't assume there isn't a lookahead just because this state is a
                   1258:        consistent state with a default action.  There might have been a
                   1259:        previous inconsistent state, consistent state with a non-default
                   1260:        action, or user semantic action that manipulated yychar.
                   1261:      - Of course, the expected token list depends on states to have
                   1262:        correct lookahead information, and it depends on the parser not
                   1263:        to perform extra reductions after fetching a lookahead from the
                   1264:        scanner and before detecting a syntax error.  Thus, state merging
                   1265:        (from LALR or IELR) and default reductions corrupt the expected
                   1266:        token list.  However, the list is correct for canonical LR with
                   1267:        one exception: it will still contain any token that will not be
                   1268:        accepted due to an error action in a later state.
                   1269:   */
                   1270:   if (yytoken != YYEMPTY)
1.1       misho    1271:     {
1.1.1.4   misho    1272:       int yyn = yypact[*yyssp];
                   1273:       yyarg[yycount++] = yytname[yytoken];
                   1274:       if (!yypact_value_is_default (yyn))
                   1275:         {
                   1276:           /* Start YYX at -YYN if negative to avoid negative indexes in
                   1277:              YYCHECK.  In other words, skip the first -YYN actions for
                   1278:              this state because they are default actions.  */
                   1279:           int yyxbegin = yyn < 0 ? -yyn : 0;
                   1280:           /* Stay within bounds of both yycheck and yytname.  */
                   1281:           int yychecklim = YYLAST - yyn + 1;
                   1282:           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
                   1283:           int yyx;
                   1284: 
                   1285:           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
                   1286:             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
                   1287:                 && !yytable_value_is_error (yytable[yyx + yyn]))
                   1288:               {
                   1289:                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
                   1290:                   {
                   1291:                     yycount = 1;
                   1292:                     yysize = yysize0;
                   1293:                     break;
                   1294:                   }
                   1295:                 yyarg[yycount++] = yytname[yyx];
                   1296:                 {
                   1297:                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
                   1298:                   if (! (yysize <= yysize1
                   1299:                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
                   1300:                     return 2;
                   1301:                   yysize = yysize1;
                   1302:                 }
                   1303:               }
                   1304:         }
                   1305:     }
1.1       misho    1306: 
1.1.1.4   misho    1307:   switch (yycount)
                   1308:     {
                   1309: # define YYCASE_(N, S)                      \
                   1310:       case N:                               \
                   1311:         yyformat = S;                       \
                   1312:       break
                   1313:       YYCASE_(0, YY_("syntax error"));
                   1314:       YYCASE_(1, YY_("syntax error, unexpected %s"));
                   1315:       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
                   1316:       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
                   1317:       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
                   1318:       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
                   1319: # undef YYCASE_
                   1320:     }
1.1       misho    1321: 
1.1.1.4   misho    1322:   {
                   1323:     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
                   1324:     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
                   1325:       return 2;
                   1326:     yysize = yysize1;
                   1327:   }
1.1       misho    1328: 
1.1.1.4   misho    1329:   if (*yymsg_alloc < yysize)
                   1330:     {
                   1331:       *yymsg_alloc = 2 * yysize;
                   1332:       if (! (yysize <= *yymsg_alloc
                   1333:              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
                   1334:         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
                   1335:       return 1;
1.1       misho    1336:     }
1.1.1.4   misho    1337: 
                   1338:   /* Avoid sprintf, as that infringes on the user's name space.
                   1339:      Don't have undefined behavior even if the translation
                   1340:      produced a string with the wrong number of "%s"s.  */
                   1341:   {
                   1342:     char *yyp = *yymsg;
                   1343:     int yyi = 0;
                   1344:     while ((*yyp = *yyformat) != '\0')
                   1345:       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
                   1346:         {
                   1347:           yyp += yytnamerr (yyp, yyarg[yyi++]);
                   1348:           yyformat += 2;
                   1349:         }
                   1350:       else
                   1351:         {
                   1352:           yyp++;
                   1353:           yyformat++;
                   1354:         }
                   1355:   }
                   1356:   return 0;
1.1       misho    1357: }
                   1358: #endif /* YYERROR_VERBOSE */
                   1359: 
                   1360: /*-----------------------------------------------.
                   1361: | Release the memory associated to this symbol.  |
                   1362: `-----------------------------------------------*/
                   1363: 
                   1364: /*ARGSUSED*/
                   1365: #if (defined __STDC__ || defined __C99__FUNC__ \
                   1366:      || defined __cplusplus || defined _MSC_VER)
                   1367: static void
                   1368: yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
                   1369: #else
                   1370: static void
                   1371: yydestruct (yymsg, yytype, yyvaluep)
                   1372:     const char *yymsg;
                   1373:     int yytype;
                   1374:     YYSTYPE *yyvaluep;
                   1375: #endif
                   1376: {
                   1377:   YYUSE (yyvaluep);
                   1378: 
                   1379:   if (!yymsg)
                   1380:     yymsg = "Deleting";
                   1381:   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
                   1382: 
                   1383:   switch (yytype)
                   1384:     {
                   1385: 
                   1386:       default:
1.1.1.4   misho    1387:         break;
1.1       misho    1388:     }
                   1389: }
                   1390: 
                   1391: 
                   1392: 
1.1.1.2   misho    1393: 
                   1394: /*----------.
                   1395: | yyparse.  |
                   1396: `----------*/
1.1       misho    1397: 
                   1398: #ifdef YYPARSE_PARAM
                   1399: #if (defined __STDC__ || defined __C99__FUNC__ \
                   1400:      || defined __cplusplus || defined _MSC_VER)
                   1401: int
                   1402: yyparse (void *YYPARSE_PARAM)
                   1403: #else
                   1404: int
                   1405: yyparse (YYPARSE_PARAM)
                   1406:     void *YYPARSE_PARAM;
                   1407: #endif
                   1408: #else /* ! YYPARSE_PARAM */
                   1409: #if (defined __STDC__ || defined __C99__FUNC__ \
                   1410:      || defined __cplusplus || defined _MSC_VER)
                   1411: int
                   1412: yyparse (void)
                   1413: #else
                   1414: int
                   1415: yyparse ()
                   1416: 
                   1417: #endif
                   1418: #endif
                   1419: {
1.1.1.4   misho    1420: /* The lookahead symbol.  */
1.1       misho    1421: int yychar;
                   1422: 
                   1423: 
1.1.1.4   misho    1424: #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
                   1425: /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
                   1426: # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
                   1427:     _Pragma ("GCC diagnostic push") \
                   1428:     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
                   1429:     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
                   1430: # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
                   1431:     _Pragma ("GCC diagnostic pop")
                   1432: #else
                   1433: /* Default value used for initialization, for pacifying older GCCs
                   1434:    or non-GCC compilers.  */
                   1435: static YYSTYPE yyval_default;
                   1436: # define YY_INITIAL_VALUE(Value) = Value
                   1437: #endif
                   1438: #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
                   1439: # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
                   1440: # define YY_IGNORE_MAYBE_UNINITIALIZED_END
                   1441: #endif
                   1442: #ifndef YY_INITIAL_VALUE
                   1443: # define YY_INITIAL_VALUE(Value) /* Nothing. */
                   1444: #endif
                   1445: 
                   1446: /* The semantic value of the lookahead symbol.  */
                   1447: YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
                   1448: 
                   1449:     /* Number of syntax errors so far.  */
                   1450:     int yynerrs;
                   1451: 
                   1452:     int yystate;
                   1453:     /* Number of tokens to shift before error messages enabled.  */
                   1454:     int yyerrstatus;
                   1455: 
                   1456:     /* The stacks and their tools:
                   1457:        `yyss': related to states.
                   1458:        `yyvs': related to semantic values.
                   1459: 
                   1460:        Refer to the stacks through separate pointers, to allow yyoverflow
                   1461:        to reallocate them elsewhere.  */
                   1462: 
                   1463:     /* The state stack.  */
                   1464:     yytype_int16 yyssa[YYINITDEPTH];
                   1465:     yytype_int16 *yyss;
                   1466:     yytype_int16 *yyssp;
                   1467: 
                   1468:     /* The semantic value stack.  */
                   1469:     YYSTYPE yyvsa[YYINITDEPTH];
                   1470:     YYSTYPE *yyvs;
                   1471:     YYSTYPE *yyvsp;
                   1472: 
                   1473:     YYSIZE_T yystacksize;
1.1       misho    1474: 
                   1475:   int yyn;
                   1476:   int yyresult;
1.1.1.4   misho    1477:   /* Lookahead token as an internal (translated) token number.  */
1.1.1.2   misho    1478:   int yytoken = 0;
1.1.1.4   misho    1479:   /* The variables used to return semantic value and location from the
                   1480:      action routines.  */
                   1481:   YYSTYPE yyval;
                   1482: 
1.1       misho    1483: #if YYERROR_VERBOSE
                   1484:   /* Buffer for error messages, and its allocated size.  */
                   1485:   char yymsgbuf[128];
                   1486:   char *yymsg = yymsgbuf;
                   1487:   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
                   1488: #endif
                   1489: 
                   1490: #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
                   1491: 
                   1492:   /* The number of symbols on the RHS of the reduced rule.
                   1493:      Keep to zero when no symbol should be popped.  */
                   1494:   int yylen = 0;
                   1495: 
1.1.1.4   misho    1496:   yyssp = yyss = yyssa;
                   1497:   yyvsp = yyvs = yyvsa;
                   1498:   yystacksize = YYINITDEPTH;
                   1499: 
1.1       misho    1500:   YYDPRINTF ((stderr, "Starting parse\n"));
                   1501: 
                   1502:   yystate = 0;
                   1503:   yyerrstatus = 0;
                   1504:   yynerrs = 0;
1.1.1.4   misho    1505:   yychar = YYEMPTY; /* Cause a token to be read.  */
1.1       misho    1506:   goto yysetstate;
                   1507: 
                   1508: /*------------------------------------------------------------.
                   1509: | yynewstate -- Push a new state, which is found in yystate.  |
                   1510: `------------------------------------------------------------*/
                   1511:  yynewstate:
                   1512:   /* In all cases, when you get here, the value and location stacks
                   1513:      have just been pushed.  So pushing a state here evens the stacks.  */
                   1514:   yyssp++;
                   1515: 
                   1516:  yysetstate:
                   1517:   *yyssp = yystate;
                   1518: 
                   1519:   if (yyss + yystacksize - 1 <= yyssp)
                   1520:     {
                   1521:       /* Get the current used size of the three stacks, in elements.  */
                   1522:       YYSIZE_T yysize = yyssp - yyss + 1;
                   1523: 
                   1524: #ifdef yyoverflow
                   1525:       {
                   1526:        /* Give user a chance to reallocate the stack.  Use copies of
                   1527:           these so that the &'s don't force the real ones into
                   1528:           memory.  */
                   1529:        YYSTYPE *yyvs1 = yyvs;
                   1530:        yytype_int16 *yyss1 = yyss;
                   1531: 
                   1532:        /* Each stack pointer address is followed by the size of the
                   1533:           data in use in that stack, in bytes.  This used to be a
                   1534:           conditional around just the two extra args, but that might
                   1535:           be undefined if yyoverflow is a macro.  */
                   1536:        yyoverflow (YY_("memory exhausted"),
                   1537:                    &yyss1, yysize * sizeof (*yyssp),
                   1538:                    &yyvs1, yysize * sizeof (*yyvsp),
                   1539:                    &yystacksize);
                   1540: 
                   1541:        yyss = yyss1;
                   1542:        yyvs = yyvs1;
                   1543:       }
                   1544: #else /* no yyoverflow */
                   1545: # ifndef YYSTACK_RELOCATE
                   1546:       goto yyexhaustedlab;
                   1547: # else
                   1548:       /* Extend the stack our own way.  */
                   1549:       if (YYMAXDEPTH <= yystacksize)
                   1550:        goto yyexhaustedlab;
                   1551:       yystacksize *= 2;
                   1552:       if (YYMAXDEPTH < yystacksize)
                   1553:        yystacksize = YYMAXDEPTH;
                   1554: 
                   1555:       {
                   1556:        yytype_int16 *yyss1 = yyss;
                   1557:        union yyalloc *yyptr =
                   1558:          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
                   1559:        if (! yyptr)
                   1560:          goto yyexhaustedlab;
1.1.1.4   misho    1561:        YYSTACK_RELOCATE (yyss_alloc, yyss);
                   1562:        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1.1       misho    1563: #  undef YYSTACK_RELOCATE
                   1564:        if (yyss1 != yyssa)
                   1565:          YYSTACK_FREE (yyss1);
                   1566:       }
                   1567: # endif
                   1568: #endif /* no yyoverflow */
                   1569: 
                   1570:       yyssp = yyss + yysize - 1;
                   1571:       yyvsp = yyvs + yysize - 1;
                   1572: 
                   1573:       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
                   1574:                  (unsigned long int) yystacksize));
                   1575: 
                   1576:       if (yyss + yystacksize - 1 <= yyssp)
                   1577:        YYABORT;
                   1578:     }
                   1579: 
                   1580:   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
                   1581: 
1.1.1.4   misho    1582:   if (yystate == YYFINAL)
                   1583:     YYACCEPT;
                   1584: 
1.1       misho    1585:   goto yybackup;
                   1586: 
                   1587: /*-----------.
                   1588: | yybackup.  |
                   1589: `-----------*/
                   1590: yybackup:
                   1591: 
                   1592:   /* Do appropriate processing given the current state.  Read a
1.1.1.4   misho    1593:      lookahead token if we need one and don't already have one.  */
1.1       misho    1594: 
1.1.1.4   misho    1595:   /* First try to decide what to do without reference to lookahead token.  */
1.1       misho    1596:   yyn = yypact[yystate];
1.1.1.4   misho    1597:   if (yypact_value_is_default (yyn))
1.1       misho    1598:     goto yydefault;
                   1599: 
1.1.1.4   misho    1600:   /* Not known => get a lookahead token if don't already have one.  */
1.1       misho    1601: 
1.1.1.4   misho    1602:   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1.1       misho    1603:   if (yychar == YYEMPTY)
                   1604:     {
                   1605:       YYDPRINTF ((stderr, "Reading a token: "));
                   1606:       yychar = YYLEX;
                   1607:     }
                   1608: 
                   1609:   if (yychar <= YYEOF)
                   1610:     {
                   1611:       yychar = yytoken = YYEOF;
                   1612:       YYDPRINTF ((stderr, "Now at end of input.\n"));
                   1613:     }
                   1614:   else
                   1615:     {
                   1616:       yytoken = YYTRANSLATE (yychar);
                   1617:       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
                   1618:     }
                   1619: 
                   1620:   /* If the proper action on seeing token YYTOKEN is to reduce or to
                   1621:      detect an error, take that action.  */
                   1622:   yyn += yytoken;
                   1623:   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
                   1624:     goto yydefault;
                   1625:   yyn = yytable[yyn];
                   1626:   if (yyn <= 0)
                   1627:     {
1.1.1.4   misho    1628:       if (yytable_value_is_error (yyn))
                   1629:         goto yyerrlab;
1.1       misho    1630:       yyn = -yyn;
                   1631:       goto yyreduce;
                   1632:     }
                   1633: 
                   1634:   /* Count tokens shifted since error; after three, turn off error
                   1635:      status.  */
                   1636:   if (yyerrstatus)
                   1637:     yyerrstatus--;
                   1638: 
1.1.1.4   misho    1639:   /* Shift the lookahead token.  */
1.1       misho    1640:   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
                   1641: 
1.1.1.4   misho    1642:   /* Discard the shifted token.  */
                   1643:   yychar = YYEMPTY;
1.1       misho    1644: 
                   1645:   yystate = yyn;
1.1.1.4   misho    1646:   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1.1       misho    1647:   *++yyvsp = yylval;
1.1.1.4   misho    1648:   YY_IGNORE_MAYBE_UNINITIALIZED_END
1.1       misho    1649: 
                   1650:   goto yynewstate;
                   1651: 
                   1652: 
                   1653: /*-----------------------------------------------------------.
                   1654: | yydefault -- do the default action for the current state.  |
                   1655: `-----------------------------------------------------------*/
                   1656: yydefault:
                   1657:   yyn = yydefact[yystate];
                   1658:   if (yyn == 0)
                   1659:     goto yyerrlab;
                   1660:   goto yyreduce;
                   1661: 
                   1662: 
                   1663: /*-----------------------------.
                   1664: | yyreduce -- Do a reduction.  |
                   1665: `-----------------------------*/
                   1666: yyreduce:
                   1667:   /* yyn is the number of a rule to reduce with.  */
                   1668:   yylen = yyr2[yyn];
                   1669: 
                   1670:   /* If YYLEN is nonzero, implement the default value of the action:
                   1671:      `$$ = $1'.
                   1672: 
                   1673:      Otherwise, the following line sets YYVAL to garbage.
                   1674:      This behavior is undocumented and Bison
                   1675:      users should not rely upon it.  Assigning to YYVAL
                   1676:      unconditionally makes the parser a bit smaller, and it avoids a
                   1677:      GCC warning that YYVAL may be used uninitialized.  */
                   1678:   yyval = yyvsp[1-yylen];
                   1679: 
                   1680: 
                   1681:   YY_REDUCE_PRINT (yyn);
                   1682:   switch (yyn)
                   1683:     {
                   1684:         case 4:
                   1685: 
                   1686:     {
                   1687: #if DEBUG_CFG_PARSER
                   1688:                        printf("SECTION: [%s]\n", Z_STRVAL((yyvsp[(2) - (3)])));
                   1689: #endif
                   1690:                        ZEND_INI_PARSER_CB(&(yyvsp[(2) - (3)]), NULL, NULL, ZEND_INI_PARSER_SECTION, ZEND_INI_PARSER_ARG TSRMLS_CC);
                   1691:                        free(Z_STRVAL((yyvsp[(2) - (3)])));
                   1692:                }
                   1693:     break;
                   1694: 
                   1695:   case 5:
                   1696: 
                   1697:     {
                   1698: #if DEBUG_CFG_PARSER
                   1699:                        printf("NORMAL: '%s' = '%s'\n", Z_STRVAL((yyvsp[(1) - (3)])), Z_STRVAL((yyvsp[(3) - (3)])));
                   1700: #endif
                   1701:                        ZEND_INI_PARSER_CB(&(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)]), NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG TSRMLS_CC);
                   1702:                        free(Z_STRVAL((yyvsp[(1) - (3)])));
                   1703:                        free(Z_STRVAL((yyvsp[(3) - (3)])));
                   1704:                }
                   1705:     break;
                   1706: 
                   1707:   case 6:
                   1708: 
                   1709:     {
                   1710: #if DEBUG_CFG_PARSER
                   1711:                        printf("OFFSET: '%s'[%s] = '%s'\n", Z_STRVAL((yyvsp[(1) - (5)])), Z_STRVAL((yyvsp[(2) - (5)])), Z_STRVAL((yyvsp[(5) - (5)])));
                   1712: #endif
                   1713:                        ZEND_INI_PARSER_CB(&(yyvsp[(1) - (5)]), &(yyvsp[(5) - (5)]), &(yyvsp[(2) - (5)]), ZEND_INI_PARSER_POP_ENTRY, ZEND_INI_PARSER_ARG TSRMLS_CC);
                   1714:                        free(Z_STRVAL((yyvsp[(1) - (5)])));
                   1715:                        free(Z_STRVAL((yyvsp[(2) - (5)])));
                   1716:                        free(Z_STRVAL((yyvsp[(5) - (5)])));
                   1717:                }
                   1718:     break;
                   1719: 
                   1720:   case 7:
                   1721: 
                   1722:     { ZEND_INI_PARSER_CB(&(yyvsp[(1) - (1)]), NULL, NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG TSRMLS_CC); free(Z_STRVAL((yyvsp[(1) - (1)]))); }
                   1723:     break;
                   1724: 
                   1725:   case 9:
                   1726: 
                   1727:     { (yyval) = (yyvsp[(1) - (1)]); }
                   1728:     break;
                   1729: 
                   1730:   case 10:
                   1731: 
                   1732:     { zend_ini_init_string(&(yyval)); }
                   1733:     break;
                   1734: 
                   1735:   case 11:
                   1736: 
                   1737:     { (yyval) = (yyvsp[(1) - (1)]); }
                   1738:     break;
                   1739: 
                   1740:   case 12:
                   1741: 
                   1742:     { (yyval) = (yyvsp[(1) - (1)]); }
                   1743:     break;
                   1744: 
                   1745:   case 13:
                   1746: 
                   1747:     { (yyval) = (yyvsp[(1) - (1)]); }
                   1748:     break;
                   1749: 
                   1750:   case 14:
                   1751: 
                   1752:     { zend_ini_init_string(&(yyval)); }
                   1753:     break;
                   1754: 
                   1755:   case 15:
                   1756: 
                   1757:     { (yyval) = (yyvsp[(1) - (1)]); }
                   1758:     break;
                   1759: 
                   1760:   case 16:
                   1761: 
                   1762:     { zend_ini_init_string(&(yyval)); }
                   1763:     break;
                   1764: 
                   1765:   case 17:
                   1766: 
                   1767:     { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)])); free(Z_STRVAL((yyvsp[(2) - (2)]))); }
                   1768:     break;
                   1769: 
                   1770:   case 18:
                   1771: 
                   1772:     { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)])); free(Z_STRVAL((yyvsp[(2) - (2)]))); }
                   1773:     break;
                   1774: 
                   1775:   case 19:
                   1776: 
                   1777:     { zend_ini_init_string(&(yyval)); }
                   1778:     break;
                   1779: 
                   1780:   case 20:
                   1781: 
                   1782:     { (yyval) = (yyvsp[(1) - (1)]); }
                   1783:     break;
                   1784: 
                   1785:   case 21:
                   1786: 
                   1787:     { (yyval) = (yyvsp[(1) - (1)]); }
                   1788:     break;
                   1789: 
                   1790:   case 22:
                   1791: 
                   1792:     { (yyval) = (yyvsp[(2) - (3)]); }
                   1793:     break;
                   1794: 
                   1795:   case 23:
                   1796: 
                   1797:     { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)])); free(Z_STRVAL((yyvsp[(2) - (2)]))); }
                   1798:     break;
                   1799: 
                   1800:   case 24:
                   1801: 
                   1802:     { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)])); free(Z_STRVAL((yyvsp[(2) - (2)]))); }
                   1803:     break;
                   1804: 
                   1805:   case 25:
                   1806: 
                   1807:     { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)])); free(Z_STRVAL((yyvsp[(3) - (4)]))); }
                   1808:     break;
                   1809: 
                   1810:   case 26:
                   1811: 
                   1812:     { (yyval) = (yyvsp[(1) - (1)]); }
                   1813:     break;
                   1814: 
                   1815:   case 27:
                   1816: 
                   1817:     { (yyval) = (yyvsp[(1) - (1)]); }
                   1818:     break;
                   1819: 
                   1820:   case 28:
                   1821: 
                   1822:     { (yyval) = (yyvsp[(2) - (3)]); }
                   1823:     break;
                   1824: 
                   1825:   case 29:
                   1826: 
                   1827:     { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)])); free(Z_STRVAL((yyvsp[(2) - (2)]))); }
                   1828:     break;
                   1829: 
                   1830:   case 30:
                   1831: 
                   1832:     { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (2)]), &(yyvsp[(2) - (2)])); free(Z_STRVAL((yyvsp[(2) - (2)]))); }
                   1833:     break;
                   1834: 
                   1835:   case 31:
                   1836: 
                   1837:     { zend_ini_add_string(&(yyval), &(yyvsp[(1) - (4)]), &(yyvsp[(3) - (4)])); free(Z_STRVAL((yyvsp[(3) - (4)]))); }
                   1838:     break;
                   1839: 
                   1840:   case 32:
                   1841: 
                   1842:     { (yyval) = (yyvsp[(1) - (1)]); }
                   1843:     break;
                   1844: 
                   1845:   case 33:
                   1846: 
                   1847:     { zend_ini_do_op('|', &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)])); }
                   1848:     break;
                   1849: 
                   1850:   case 34:
                   1851: 
                   1852:     { zend_ini_do_op('&', &(yyval), &(yyvsp[(1) - (3)]), &(yyvsp[(3) - (3)])); }
                   1853:     break;
                   1854: 
                   1855:   case 35:
                   1856: 
                   1857:     { zend_ini_do_op('~', &(yyval), &(yyvsp[(2) - (2)]), NULL); }
                   1858:     break;
                   1859: 
                   1860:   case 36:
                   1861: 
                   1862:     { zend_ini_do_op('!', &(yyval), &(yyvsp[(2) - (2)]), NULL); }
                   1863:     break;
                   1864: 
                   1865:   case 37:
                   1866: 
                   1867:     { (yyval) = (yyvsp[(2) - (3)]); }
                   1868:     break;
                   1869: 
                   1870:   case 38:
                   1871: 
                   1872:     { zend_ini_get_var(&(yyval), &(yyvsp[(2) - (3)]) TSRMLS_CC); free(Z_STRVAL((yyvsp[(2) - (3)]))); }
                   1873:     break;
                   1874: 
                   1875:   case 39:
                   1876: 
                   1877:     { (yyval) = (yyvsp[(1) - (1)]); }
                   1878:     break;
                   1879: 
                   1880:   case 40:
                   1881: 
                   1882:     { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_RAW: '%s'\n", Z_STRVAL($1));*/ }
                   1883:     break;
                   1884: 
                   1885:   case 41:
                   1886: 
                   1887:     { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_NUMBER: '%s'\n", Z_STRVAL($1));*/ }
                   1888:     break;
                   1889: 
                   1890:   case 42:
                   1891: 
                   1892:     { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_STRING: '%s'\n", Z_STRVAL($1));*/ }
                   1893:     break;
                   1894: 
                   1895:   case 43:
                   1896: 
                   1897:     { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_WHITESPACE: '%s'\n", Z_STRVAL($1));*/ }
                   1898:     break;
                   1899: 
                   1900:   case 44:
                   1901: 
                   1902:     { zend_ini_get_constant(&(yyval), &(yyvsp[(1) - (1)]) TSRMLS_CC); }
                   1903:     break;
                   1904: 
                   1905:   case 45:
                   1906: 
                   1907:     { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_RAW: '%s'\n", Z_STRVAL($1));*/ }
                   1908:     break;
                   1909: 
                   1910:   case 46:
                   1911: 
                   1912:     { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_NUMBER: '%s'\n", Z_STRVAL($1));*/ }
                   1913:     break;
                   1914: 
                   1915:   case 47:
                   1916: 
                   1917:     { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_STRING: '%s'\n", Z_STRVAL($1));*/ }
                   1918:     break;
                   1919: 
                   1920:   case 48:
                   1921: 
                   1922:     { (yyval) = (yyvsp[(1) - (1)]); /*printf("TC_WHITESPACE: '%s'\n", Z_STRVAL($1));*/ }
                   1923:     break;
                   1924: 
                   1925: 
                   1926: 
                   1927:       default: break;
                   1928:     }
1.1.1.4   misho    1929:   /* User semantic actions sometimes alter yychar, and that requires
                   1930:      that yytoken be updated with the new translation.  We take the
                   1931:      approach of translating immediately before every use of yytoken.
                   1932:      One alternative is translating here after every semantic action,
                   1933:      but that translation would be missed if the semantic action invokes
                   1934:      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
                   1935:      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
                   1936:      incorrect destructor might then be invoked immediately.  In the
                   1937:      case of YYERROR or YYBACKUP, subsequent parser actions might lead
                   1938:      to an incorrect destructor call or verbose syntax error message
                   1939:      before the lookahead is translated.  */
1.1       misho    1940:   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
                   1941: 
                   1942:   YYPOPSTACK (yylen);
                   1943:   yylen = 0;
                   1944:   YY_STACK_PRINT (yyss, yyssp);
                   1945: 
                   1946:   *++yyvsp = yyval;
                   1947: 
                   1948:   /* Now `shift' the result of the reduction.  Determine what state
                   1949:      that goes to, based on the state we popped back to and the rule
                   1950:      number reduced by.  */
                   1951: 
                   1952:   yyn = yyr1[yyn];
                   1953: 
                   1954:   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
                   1955:   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
                   1956:     yystate = yytable[yystate];
                   1957:   else
                   1958:     yystate = yydefgoto[yyn - YYNTOKENS];
                   1959: 
                   1960:   goto yynewstate;
                   1961: 
                   1962: 
                   1963: /*------------------------------------.
                   1964: | yyerrlab -- here on detecting error |
                   1965: `------------------------------------*/
                   1966: yyerrlab:
1.1.1.4   misho    1967:   /* Make sure we have latest lookahead translation.  See comments at
                   1968:      user semantic actions for why this is necessary.  */
                   1969:   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
                   1970: 
1.1       misho    1971:   /* If not already recovering from an error, report this error.  */
                   1972:   if (!yyerrstatus)
                   1973:     {
                   1974:       ++yynerrs;
                   1975: #if ! YYERROR_VERBOSE
                   1976:       yyerror (YY_("syntax error"));
                   1977: #else
1.1.1.4   misho    1978: # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
                   1979:                                         yyssp, yytoken)
1.1       misho    1980:       {
1.1.1.4   misho    1981:         char const *yymsgp = YY_("syntax error");
                   1982:         int yysyntax_error_status;
                   1983:         yysyntax_error_status = YYSYNTAX_ERROR;
                   1984:         if (yysyntax_error_status == 0)
                   1985:           yymsgp = yymsg;
                   1986:         else if (yysyntax_error_status == 1)
                   1987:           {
                   1988:             if (yymsg != yymsgbuf)
                   1989:               YYSTACK_FREE (yymsg);
                   1990:             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
                   1991:             if (!yymsg)
                   1992:               {
                   1993:                 yymsg = yymsgbuf;
                   1994:                 yymsg_alloc = sizeof yymsgbuf;
                   1995:                 yysyntax_error_status = 2;
                   1996:               }
                   1997:             else
                   1998:               {
                   1999:                 yysyntax_error_status = YYSYNTAX_ERROR;
                   2000:                 yymsgp = yymsg;
                   2001:               }
                   2002:           }
                   2003:         yyerror (yymsgp);
                   2004:         if (yysyntax_error_status == 2)
                   2005:           goto yyexhaustedlab;
1.1       misho    2006:       }
1.1.1.4   misho    2007: # undef YYSYNTAX_ERROR
1.1       misho    2008: #endif
                   2009:     }
                   2010: 
                   2011: 
                   2012: 
                   2013:   if (yyerrstatus == 3)
                   2014:     {
1.1.1.4   misho    2015:       /* If just tried and failed to reuse lookahead token after an
1.1       misho    2016:         error, discard it.  */
                   2017: 
                   2018:       if (yychar <= YYEOF)
                   2019:        {
                   2020:          /* Return failure if at end of input.  */
                   2021:          if (yychar == YYEOF)
                   2022:            YYABORT;
                   2023:        }
                   2024:       else
                   2025:        {
                   2026:          yydestruct ("Error: discarding",
                   2027:                      yytoken, &yylval);
                   2028:          yychar = YYEMPTY;
                   2029:        }
                   2030:     }
                   2031: 
1.1.1.4   misho    2032:   /* Else will try to reuse lookahead token after shifting the error
1.1       misho    2033:      token.  */
                   2034:   goto yyerrlab1;
                   2035: 
                   2036: 
                   2037: /*---------------------------------------------------.
                   2038: | yyerrorlab -- error raised explicitly by YYERROR.  |
                   2039: `---------------------------------------------------*/
                   2040: yyerrorlab:
                   2041: 
                   2042:   /* Pacify compilers like GCC when the user code never invokes
                   2043:      YYERROR and the label yyerrorlab therefore never appears in user
                   2044:      code.  */
                   2045:   if (/*CONSTCOND*/ 0)
                   2046:      goto yyerrorlab;
                   2047: 
                   2048:   /* Do not reclaim the symbols of the rule which action triggered
                   2049:      this YYERROR.  */
                   2050:   YYPOPSTACK (yylen);
                   2051:   yylen = 0;
                   2052:   YY_STACK_PRINT (yyss, yyssp);
                   2053:   yystate = *yyssp;
                   2054:   goto yyerrlab1;
                   2055: 
                   2056: 
                   2057: /*-------------------------------------------------------------.
                   2058: | yyerrlab1 -- common code for both syntax error and YYERROR.  |
                   2059: `-------------------------------------------------------------*/
                   2060: yyerrlab1:
                   2061:   yyerrstatus = 3;     /* Each real token shifted decrements this.  */
                   2062: 
                   2063:   for (;;)
                   2064:     {
                   2065:       yyn = yypact[yystate];
1.1.1.4   misho    2066:       if (!yypact_value_is_default (yyn))
1.1       misho    2067:        {
                   2068:          yyn += YYTERROR;
                   2069:          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
                   2070:            {
                   2071:              yyn = yytable[yyn];
                   2072:              if (0 < yyn)
                   2073:                break;
                   2074:            }
                   2075:        }
                   2076: 
                   2077:       /* Pop the current state because it cannot handle the error token.  */
                   2078:       if (yyssp == yyss)
                   2079:        YYABORT;
                   2080: 
                   2081: 
                   2082:       yydestruct ("Error: popping",
                   2083:                  yystos[yystate], yyvsp);
                   2084:       YYPOPSTACK (1);
                   2085:       yystate = *yyssp;
                   2086:       YY_STACK_PRINT (yyss, yyssp);
                   2087:     }
                   2088: 
1.1.1.4   misho    2089:   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1.1       misho    2090:   *++yyvsp = yylval;
1.1.1.4   misho    2091:   YY_IGNORE_MAYBE_UNINITIALIZED_END
1.1       misho    2092: 
                   2093: 
                   2094:   /* Shift the error token.  */
                   2095:   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
                   2096: 
                   2097:   yystate = yyn;
                   2098:   goto yynewstate;
                   2099: 
                   2100: 
                   2101: /*-------------------------------------.
                   2102: | yyacceptlab -- YYACCEPT comes here.  |
                   2103: `-------------------------------------*/
                   2104: yyacceptlab:
                   2105:   yyresult = 0;
                   2106:   goto yyreturn;
                   2107: 
                   2108: /*-----------------------------------.
                   2109: | yyabortlab -- YYABORT comes here.  |
                   2110: `-----------------------------------*/
                   2111: yyabortlab:
                   2112:   yyresult = 1;
                   2113:   goto yyreturn;
                   2114: 
1.1.1.4   misho    2115: #if !defined yyoverflow || YYERROR_VERBOSE
1.1       misho    2116: /*-------------------------------------------------.
                   2117: | yyexhaustedlab -- memory exhaustion comes here.  |
                   2118: `-------------------------------------------------*/
                   2119: yyexhaustedlab:
                   2120:   yyerror (YY_("memory exhausted"));
                   2121:   yyresult = 2;
                   2122:   /* Fall through.  */
                   2123: #endif
                   2124: 
                   2125: yyreturn:
1.1.1.4   misho    2126:   if (yychar != YYEMPTY)
                   2127:     {
                   2128:       /* Make sure we have latest lookahead translation.  See comments at
                   2129:          user semantic actions for why this is necessary.  */
                   2130:       yytoken = YYTRANSLATE (yychar);
                   2131:       yydestruct ("Cleanup: discarding lookahead",
                   2132:                   yytoken, &yylval);
                   2133:     }
1.1       misho    2134:   /* Do not reclaim the symbols of the rule which action triggered
                   2135:      this YYABORT or YYACCEPT.  */
                   2136:   YYPOPSTACK (yylen);
                   2137:   YY_STACK_PRINT (yyss, yyssp);
                   2138:   while (yyssp != yyss)
                   2139:     {
                   2140:       yydestruct ("Cleanup: popping",
                   2141:                  yystos[*yyssp], yyvsp);
                   2142:       YYPOPSTACK (1);
                   2143:     }
                   2144: #ifndef yyoverflow
                   2145:   if (yyss != yyssa)
                   2146:     YYSTACK_FREE (yyss);
                   2147: #endif
                   2148: #if YYERROR_VERBOSE
                   2149:   if (yymsg != yymsgbuf)
                   2150:     YYSTACK_FREE (yymsg);
                   2151: #endif
                   2152:   /* Make sure YYID is used.  */
                   2153:   return YYID (yyresult);
                   2154: }
                   2155: 
                   2156: 

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