Coverage Report

Created: 2025-07-12 06:39

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