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

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

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