Coverage Report

Created: 2025-12-31 07:28

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