Coverage Report

Created: 2026-06-02 06:40

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