Coverage Report

Created: 2025-10-29 06:18

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/httpd/server/util_expr_parse.c
Line
Count
Source
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
179k
#define yylex           ap_expr_yylex
65
851
#define yyerror         ap_expr_yyerror
66
#define yydebug         ap_expr_yydebug
67
2.11k
#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.15k
#   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
179k
#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.0k
#  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.30k
#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
851
#  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
212k
# 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.53k
# 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
128
#  define YYSTACK_ALLOC YYMALLOC
341
128
#  define YYSTACK_FREE YYFREE
342
#  ifndef YYSTACK_ALLOC_MAXIMUM
343
3.30k
#   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
128
#   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
128
#   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
381
# 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
127
     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
387
127
      + 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
254
    do                                                                  \
398
254
      {                                                                 \
399
254
        YYSIZE_T yynewbytes;                                            \
400
254
        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
401
254
        Stack = &yyptr->Stack_alloc;                                    \
402
254
        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
403
254
        yyptr += yynewbytes / sizeof (*yyptr);                          \
404
254
      }                                                                 \
405
254
    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
254
      __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
296k
#define YYFINAL  31
431
/* YYLAST -- Last index in YYTABLE.  */
432
503k
#define YYLAST   274
433
434
/* YYNTOKENS -- Number of terminals.  */
435
161k
#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
193k
#define YYMAXUTOK   301
447
448
#define YYTRANSLATE(YYX)                                                \
449
194k
  ((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
343k
  (!!((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
377k
#define YYEMPTY         (-2)
735
198k
#define YYEOF           0
736
737
344
#define YYACCEPT        goto yyacceptlab
738
923
#define YYABORT         goto yyabortlab
739
8
#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
109k
#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.26k
# 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
259
# define YYMAXDEPTH 10000
912
#endif
913
914
915
#if YYERROR_VERBOSE
916
917
# ifndef yystrlen
918
#  if defined __GLIBC__ && defined _STRING_H
919
1.60k
#   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
754
#   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.61k
{
964
4.61k
  if (*yystr == '"')
965
3.10k
    {
966
3.10k
      YYSIZE_T yyn = 0;
967
3.10k
      char const *yyp = yystr;
968
969
3.10k
      for (;;)
970
46.0k
        switch (*++yyp)
971
46.0k
          {
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
42.9k
          default:
981
42.9k
            if (yyres)
982
8.50k
              yyres[yyn] = *yyp;
983
42.9k
            yyn++;
984
42.9k
            break;
985
986
3.10k
          case '"':
987
3.10k
            if (yyres)
988
556
              yyres[yyn] = '\0';
989
3.10k
            return yyn;
990
46.0k
          }
991
0
    do_not_strip_quotes: ;
992
0
    }
993
994
1.50k
  if (! yyres)
995
755
    return yystrlen (yystr);
996
997
754
  return yystpcpy (yyres, yystr) - yyres;
998
1.50k
}
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
850
{
1013
850
  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1014
850
  YYSIZE_T yysize = yysize0;
1015
850
  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1016
  /* Internationalized format string. */
1017
850
  const char *yyformat = YY_NULLPTR;
1018
  /* Arguments of yyformat. */
1019
850
  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1020
  /* Number of reported tokens (one for the "unexpected", one per
1021
     "expected"). */
1022
850
  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
850
  if (yytoken != YYEMPTY)
1048
850
    {
1049
850
      int yyn = yypact[*yyssp];
1050
850
      yyarg[yycount++] = yytname[yytoken];
1051
850
      if (!yypact_value_is_default (yyn))
1052
850
        {
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
850
          int yyxbegin = yyn < 0 ? -yyn : 0;
1057
          /* Stay within bounds of both yycheck and yytname.  */
1058
850
          int yychecklim = YYLAST - yyn + 1;
1059
850
          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1060
850
          int yyx;
1061
1062
25.1k
          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1063
24.7k
            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1064
0
                && !yytable_value_is_error (yytable[yyx + yyn]))
1065
2.95k
              {
1066
2.95k
                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1067
498
                  {
1068
498
                    yycount = 1;
1069
498
                    yysize = yysize0;
1070
498
                    break;
1071
498
                  }
1072
2.45k
                yyarg[yycount++] = yytname[yyx];
1073
2.45k
                {
1074
2.45k
                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1075
2.45k
                  if (! (yysize <= yysize1
1076
2.45k
                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1077
0
                    return 2;
1078
2.45k
                  yysize = yysize1;
1079
2.45k
                }
1080
2.45k
              }
1081
850
        }
1082
850
    }
1083
1084
850
  switch (yycount)
1085
850
    {
1086
0
# define YYCASE_(N, S)                      \
1087
850
      case N:                               \
1088
850
        yyformat = S;                       \
1089
850
      break
1090
0
    default: /* Avoid compiler warnings. */
1091
0
      YYCASE_(0, YY_("syntax error"));
1092
498
      YYCASE_(1, YY_("syntax error, unexpected %s"));
1093
301
      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1094
11
      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1095
19
      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1096
850
      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1097
850
# undef YYCASE_
1098
850
    }
1099
1100
850
  {
1101
850
    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1102
850
    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1103
0
      return 2;
1104
850
    yysize = yysize1;
1105
850
  }
1106
1107
850
  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
849
  {
1120
849
    char *yyp = *yymsg;
1121
849
    int yyi = 0;
1122
28.0k
    while ((*yyp = *yyformat) != '\0')
1123
27.1k
      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1124
1.31k
        {
1125
1.31k
          yyp += yytnamerr (yyp, yyarg[yyi++]);
1126
1.31k
          yyformat += 2;
1127
1.31k
        }
1128
25.8k
      else
1129
25.8k
        {
1130
25.8k
          yyp++;
1131
25.8k
          yyformat++;
1132
25.8k
        }
1133
849
  }
1134
849
  return 0;
1135
850
}
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
70.7k
{
1145
70.7k
  YYUSE (yyvaluep);
1146
70.7k
  YYUSE (ctx);
1147
70.7k
  if (!yymsg)
1148
0
    yymsg = "Deleting";
1149
70.7k
  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1150
1151
70.7k
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1152
70.7k
  YYUSE (yytype);
1153
70.7k
  YY_IGNORE_MAYBE_UNINITIALIZED_END
1154
70.7k
}
1155
1156
1157
1158
1159
/*----------.
1160
| yyparse.  |
1161
`----------*/
1162
1163
int
1164
yyparse (ap_expr_parse_ctx_t *ctx)
1165
1.26k
{
1166
/* The lookahead symbol.  */
1167
1.26k
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.26k
YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
1174
1.26k
YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
1175
1176
    /* Number of syntax errors so far.  */
1177
1.26k
    int yynerrs;
1178
1179
1.26k
    int yystate;
1180
    /* Number of tokens to shift before error messages enabled.  */
1181
1.26k
    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.26k
    yytype_int16 yyssa[YYINITDEPTH];
1192
1.26k
    yytype_int16 *yyss;
1193
1.26k
    yytype_int16 *yyssp;
1194
1195
    /* The semantic value stack.  */
1196
1.26k
    YYSTYPE yyvsa[YYINITDEPTH];
1197
1.26k
    YYSTYPE *yyvs;
1198
1.26k
    YYSTYPE *yyvsp;
1199
1200
1.26k
    YYSIZE_T yystacksize;
1201
1202
1.26k
  int yyn;
1203
1.26k
  int yyresult;
1204
  /* Lookahead token as an internal (translated) token number.  */
1205
1.26k
  int yytoken = 0;
1206
  /* The variables used to return semantic value and location from the
1207
     action routines.  */
1208
1.26k
  YYSTYPE yyval;
1209
1210
1.26k
#if YYERROR_VERBOSE
1211
  /* Buffer for error messages, and its allocated size.  */
1212
1.26k
  char yymsgbuf[128];
1213
1.26k
  char *yymsg = yymsgbuf;
1214
1.26k
  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1215
1.26k
#endif
1216
1217
187k
#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.26k
  int yylen = 0;
1222
1223
1.26k
  yyssp = yyss = yyssa;
1224
1.26k
  yyvsp = yyvs = yyvsa;
1225
1.26k
  yystacksize = YYINITDEPTH;
1226
1227
1.26k
  YYDPRINTF ((stderr, "Starting parse\n"));
1228
1229
1.26k
  yystate = 0;
1230
1.26k
  yyerrstatus = 0;
1231
1.26k
  yynerrs = 0;
1232
1.26k
  yychar = YYEMPTY; /* Cause a token to be read.  */
1233
1.26k
  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
295k
 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
295k
  yyssp++;
1244
1245
296k
 yysetstate:
1246
296k
  *yyssp = yystate;
1247
1248
296k
  if (yyss + yystacksize - 1 <= yyssp)
1249
129
    {
1250
      /* Get the current used size of the three stacks, in elements.  */
1251
129
      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
129
      if (YYMAXDEPTH <= yystacksize)
1279
2
        goto yyexhaustedlab;
1280
127
      yystacksize *= 2;
1281
127
      if (YYMAXDEPTH < yystacksize)
1282
3
        yystacksize = YYMAXDEPTH;
1283
1284
127
      {
1285
127
        yytype_int16 *yyss1 = yyss;
1286
127
        union yyalloc *yyptr =
1287
127
          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1288
127
        if (! yyptr)
1289
0
          goto yyexhaustedlab;
1290
127
        YYSTACK_RELOCATE (yyss_alloc, yyss);
1291
127
        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1292
127
#  undef YYSTACK_RELOCATE
1293
127
        if (yyss1 != yyssa)
1294
66
          YYSTACK_FREE (yyss1);
1295
127
      }
1296
0
# endif
1297
0
#endif /* no yyoverflow */
1298
1299
0
      yyssp = yyss + yysize - 1;
1300
127
      yyvsp = yyvs + yysize - 1;
1301
1302
127
      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1303
127
                  (unsigned long int) yystacksize));
1304
1305
127
      if (yyss + yystacksize - 1 <= yyssp)
1306
0
        YYABORT;
1307
127
    }
1308
1309
296k
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1310
1311
296k
  if (yystate == YYFINAL)
1312
344
    YYACCEPT;
1313
1314
296k
  goto yybackup;
1315
1316
/*-----------.
1317
| yybackup.  |
1318
`-----------*/
1319
296k
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
296k
  yyn = yypact[yystate];
1326
296k
  if (yypact_value_is_default (yyn))
1327
101k
    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
195k
  if (yychar == YYEMPTY)
1333
179k
    {
1334
179k
      YYDPRINTF ((stderr, "Reading a token: "));
1335
179k
      yychar = yylex (&yylval, yyscanner);
1336
179k
    }
1337
1338
195k
  if (yychar <= YYEOF)
1339
3.04k
    {
1340
3.04k
      yychar = yytoken = YYEOF;
1341
3.04k
      YYDPRINTF ((stderr, "Now at end of input.\n"));
1342
3.04k
    }
1343
191k
  else
1344
191k
    {
1345
191k
      yytoken = YYTRANSLATE (yychar);
1346
191k
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1347
191k
    }
1348
1349
  /* If the proper action on seeing token YYTOKEN is to reduce or to
1350
     detect an error, take that action.  */
1351
195k
  yyn += yytoken;
1352
195k
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1353
16.6k
    goto yydefault;
1354
178k
  yyn = yytable[yyn];
1355
178k
  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
178k
  if (yyerrstatus)
1366
0
    yyerrstatus--;
1367
1368
  /* Shift the lookahead token.  */
1369
178k
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1370
1371
  /* Discard the shifted token.  */
1372
178k
  yychar = YYEMPTY;
1373
1374
178k
  yystate = yyn;
1375
178k
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1376
178k
  *++yyvsp = yylval;
1377
178k
  YY_IGNORE_MAYBE_UNINITIALIZED_END
1378
1379
178k
  goto yynewstate;
1380
1381
1382
/*-----------------------------------------------------------.
1383
| yydefault -- do the default action for the current state.  |
1384
`-----------------------------------------------------------*/
1385
117k
yydefault:
1386
117k
  yyn = yydefact[yystate];
1387
117k
  if (yyn == 0)
1388
849
    goto yyerrlab;
1389
116k
  goto yyreduce;
1390
1391
1392
/*-----------------------------.
1393
| yyreduce -- Do a reduction.  |
1394
`-----------------------------*/
1395
116k
yyreduce:
1396
  /* yyn is the number of a rule to reduce with.  */
1397
116k
  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
116k
  yyval = yyvsp[1-yylen];
1408
1409
1410
116k
  YY_REDUCE_PRINT (yyn);
1411
116k
  switch (yyn)
1412
116k
    {
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
415
  case 3:
1420
415
#line 129 "util_expr_parse.y" /* yacc.c:1648  */
1421
415
    { ctx->expr = (yyvsp[0].exVal); }
1422
415
#line 1421 "util_expr_parse.c" /* yacc.c:1648  */
1423
415
    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.78k
  case 5:
1432
4.78k
#line 133 "util_expr_parse.y" /* yacc.c:1648  */
1433
4.78k
    { (yyval.exVal) = (yyvsp[0].exVal); }
1434
4.78k
#line 1433 "util_expr_parse.c" /* yacc.c:1648  */
1435
4.78k
    break;
1436
1437
9.92k
  case 6:
1438
9.92k
#line 134 "util_expr_parse.y" /* yacc.c:1648  */
1439
9.92k
    { (yyval.exVal) = ap_expr_concat_make((yyvsp[-1].exVal), (yyvsp[0].exVal), ctx); }
1440
9.92k
#line 1439 "util_expr_parse.c" /* yacc.c:1648  */
1441
9.92k
    break;
1442
1443
54
  case 7:
1444
54
#line 135 "util_expr_parse.y" /* yacc.c:1648  */
1445
54
    { YYABORT; }
1446
0
#line 1445 "util_expr_parse.c" /* yacc.c:1648  */
1447
0
    break;
1448
1449
379
  case 8:
1450
379
#line 138 "util_expr_parse.y" /* yacc.c:1648  */
1451
379
    { (yyval.exVal) = ap_expr_make(op_True,        NULL, NULL, ctx); }
1452
379
#line 1451 "util_expr_parse.c" /* yacc.c:1648  */
1453
379
    break;
1454
1455
276
  case 9:
1456
276
#line 139 "util_expr_parse.y" /* yacc.c:1648  */
1457
276
    { (yyval.exVal) = ap_expr_make(op_False,       NULL, NULL, ctx); }
1458
276
#line 1457 "util_expr_parse.c" /* yacc.c:1648  */
1459
276
    break;
1460
1461
689
  case 10:
1462
689
#line 140 "util_expr_parse.y" /* yacc.c:1648  */
1463
689
    { (yyval.exVal) = ap_expr_make(op_Not,         (yyvsp[0].exVal),   NULL, ctx); }
1464
689
#line 1463 "util_expr_parse.c" /* yacc.c:1648  */
1465
689
    break;
1466
1467
4.88k
  case 11:
1468
4.88k
#line 141 "util_expr_parse.y" /* yacc.c:1648  */
1469
4.88k
    { (yyval.exVal) = ap_expr_make(op_Or,          (yyvsp[-2].exVal),   (yyvsp[0].exVal),   ctx); }
1470
4.88k
#line 1469 "util_expr_parse.c" /* yacc.c:1648  */
1471
4.88k
    break;
1472
1473
3.58k
  case 12:
1474
3.58k
#line 142 "util_expr_parse.y" /* yacc.c:1648  */
1475
3.58k
    { (yyval.exVal) = ap_expr_make(op_And,         (yyvsp[-2].exVal),   (yyvsp[0].exVal),   ctx); }
1476
3.58k
#line 1475 "util_expr_parse.c" /* yacc.c:1648  */
1477
3.58k
    break;
1478
1479
7.15k
  case 13:
1480
7.15k
#line 143 "util_expr_parse.y" /* yacc.c:1648  */
1481
7.15k
    { (yyval.exVal) = ap_expr_make(op_Comp,        (yyvsp[0].exVal),   NULL, ctx); }
1482
7.15k
#line 1481 "util_expr_parse.c" /* yacc.c:1648  */
1483
7.15k
    break;
1484
1485
459
  case 14:
1486
459
#line 144 "util_expr_parse.y" /* yacc.c:1648  */
1487
459
    { (yyval.exVal) = ap_expr_unary_op_make(       (yyvsp[-1].cpVal),   (yyvsp[0].exVal),   ctx); }
1488
459
#line 1487 "util_expr_parse.c" /* yacc.c:1648  */
1489
459
    break;
1490
1491
832
  case 15:
1492
832
#line 145 "util_expr_parse.y" /* yacc.c:1648  */
1493
832
    { (yyval.exVal) = ap_expr_binary_op_make((yyvsp[-1].cpVal),   (yyvsp[-2].exVal),   (yyvsp[0].exVal),   ctx); }
1494
832
#line 1493 "util_expr_parse.c" /* yacc.c:1648  */
1495
832
    break;
1496
1497
390
  case 16:
1498
390
#line 146 "util_expr_parse.y" /* yacc.c:1648  */
1499
390
    { (yyval.exVal) = (yyvsp[-1].exVal); }
1500
390
#line 1499 "util_expr_parse.c" /* yacc.c:1648  */
1501
390
    break;
1502
1503
12
  case 17:
1504
12
#line 147 "util_expr_parse.y" /* yacc.c:1648  */
1505
12
    { YYABORT; }
1506
0
#line 1505 "util_expr_parse.c" /* yacc.c:1648  */
1507
0
    break;
1508
1509
556
  case 18:
1510
556
#line 150 "util_expr_parse.y" /* yacc.c:1648  */
1511
556
    { (yyval.exVal) = ap_expr_make(op_EQ,      (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1512
556
#line 1511 "util_expr_parse.c" /* yacc.c:1648  */
1513
556
    break;
1514
1515
418
  case 19:
1516
418
#line 151 "util_expr_parse.y" /* yacc.c:1648  */
1517
418
    { (yyval.exVal) = ap_expr_make(op_NE,      (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1518
418
#line 1517 "util_expr_parse.c" /* yacc.c:1648  */
1519
418
    break;
1520
1521
427
  case 20:
1522
427
#line 152 "util_expr_parse.y" /* yacc.c:1648  */
1523
427
    { (yyval.exVal) = ap_expr_make(op_LT,      (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1524
427
#line 1523 "util_expr_parse.c" /* yacc.c:1648  */
1525
427
    break;
1526
1527
547
  case 21:
1528
547
#line 153 "util_expr_parse.y" /* yacc.c:1648  */
1529
547
    { (yyval.exVal) = ap_expr_make(op_LE,      (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1530
547
#line 1529 "util_expr_parse.c" /* yacc.c:1648  */
1531
547
    break;
1532
1533
522
  case 22:
1534
522
#line 154 "util_expr_parse.y" /* yacc.c:1648  */
1535
522
    { (yyval.exVal) = ap_expr_make(op_GT,      (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1536
522
#line 1535 "util_expr_parse.c" /* yacc.c:1648  */
1537
522
    break;
1538
1539
431
  case 23:
1540
431
#line 155 "util_expr_parse.y" /* yacc.c:1648  */
1541
431
    { (yyval.exVal) = ap_expr_make(op_GE,      (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1542
431
#line 1541 "util_expr_parse.c" /* yacc.c:1648  */
1543
431
    break;
1544
1545
673
  case 24:
1546
673
#line 156 "util_expr_parse.y" /* yacc.c:1648  */
1547
673
    { (yyval.exVal) = ap_expr_make(op_STR_EQ,  (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1548
673
#line 1547 "util_expr_parse.c" /* yacc.c:1648  */
1549
673
    break;
1550
1551
228
  case 25:
1552
228
#line 157 "util_expr_parse.y" /* yacc.c:1648  */
1553
228
    { (yyval.exVal) = ap_expr_make(op_STR_NE,  (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1554
228
#line 1553 "util_expr_parse.c" /* yacc.c:1648  */
1555
228
    break;
1556
1557
411
  case 26:
1558
411
#line 158 "util_expr_parse.y" /* yacc.c:1648  */
1559
411
    { (yyval.exVal) = ap_expr_make(op_STR_LT,  (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1560
411
#line 1559 "util_expr_parse.c" /* yacc.c:1648  */
1561
411
    break;
1562
1563
105
  case 27:
1564
105
#line 159 "util_expr_parse.y" /* yacc.c:1648  */
1565
105
    { (yyval.exVal) = ap_expr_make(op_STR_LE,  (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1566
105
#line 1565 "util_expr_parse.c" /* yacc.c:1648  */
1567
105
    break;
1568
1569
561
  case 28:
1570
561
#line 160 "util_expr_parse.y" /* yacc.c:1648  */
1571
561
    { (yyval.exVal) = ap_expr_make(op_STR_GT,  (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1572
561
#line 1571 "util_expr_parse.c" /* yacc.c:1648  */
1573
561
    break;
1574
1575
203
  case 29:
1576
203
#line 161 "util_expr_parse.y" /* yacc.c:1648  */
1577
203
    { (yyval.exVal) = ap_expr_make(op_STR_GE,  (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1578
203
#line 1577 "util_expr_parse.c" /* yacc.c:1648  */
1579
203
    break;
1580
1581
632
  case 30:
1582
632
#line 162 "util_expr_parse.y" /* yacc.c:1648  */
1583
632
    { (yyval.exVal) = ap_expr_make(op_REG,     (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1584
632
#line 1583 "util_expr_parse.c" /* yacc.c:1648  */
1585
632
    break;
1586
1587
854
  case 31:
1588
854
#line 163 "util_expr_parse.y" /* yacc.c:1648  */
1589
854
    { (yyval.exVal) = ap_expr_make(op_NRE,     (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1590
854
#line 1589 "util_expr_parse.c" /* yacc.c:1648  */
1591
854
    break;
1592
1593
586
  case 32:
1594
586
#line 164 "util_expr_parse.y" /* yacc.c:1648  */
1595
586
    { (yyval.exVal) = ap_expr_make(op_IN,      (yyvsp[-2].exVal), (yyvsp[0].exVal), ctx); }
1596
586
#line 1595 "util_expr_parse.c" /* yacc.c:1648  */
1597
586
    break;
1598
1599
18.3k
  case 33:
1600
18.3k
#line 167 "util_expr_parse.y" /* yacc.c:1648  */
1601
18.3k
    { (yyval.exVal) = ap_expr_make(op_Digit,  (yyvsp[0].cpVal), NULL, ctx); }
1602
18.3k
#line 1601 "util_expr_parse.c" /* yacc.c:1648  */
1603
18.3k
    break;
1604
1605
2.12k
  case 34:
1606
2.12k
#line 168 "util_expr_parse.y" /* yacc.c:1648  */
1607
2.12k
    { (yyval.exVal) = ap_expr_make(op_String, "", NULL, ctx); }
1608
2.12k
#line 1607 "util_expr_parse.c" /* yacc.c:1648  */
1609
2.12k
    break;
1610
1611
618
  case 35:
1612
618
#line 169 "util_expr_parse.y" /* yacc.c:1648  */
1613
618
    { (yyval.exVal) = (yyvsp[-1].exVal); }
1614
618
#line 1613 "util_expr_parse.c" /* yacc.c:1648  */
1615
618
    break;
1616
1617
1.78k
  case 36:
1618
1.78k
#line 170 "util_expr_parse.y" /* yacc.c:1648  */
1619
1.78k
    { (yyval.exVal) = ap_expr_make(op_Concat, (yyvsp[-2].exVal), (yyvsp[0].exVal),   ctx); }
1620
1.78k
#line 1619 "util_expr_parse.c" /* yacc.c:1648  */
1621
1.78k
    break;
1622
1623
894
  case 37:
1624
894
#line 171 "util_expr_parse.y" /* yacc.c:1648  */
1625
894
    { (yyval.exVal) = (yyvsp[0].exVal); }
1626
894
#line 1625 "util_expr_parse.c" /* yacc.c:1648  */
1627
894
    break;
1628
1629
3.13k
  case 38:
1630
3.13k
#line 172 "util_expr_parse.y" /* yacc.c:1648  */
1631
3.13k
    { (yyval.exVal) = (yyvsp[0].exVal); }
1632
3.13k
#line 1631 "util_expr_parse.c" /* yacc.c:1648  */
1633
3.13k
    break;
1634
1635
1.33k
  case 39:
1636
1.33k
#line 173 "util_expr_parse.y" /* yacc.c:1648  */
1637
1.33k
    { (yyval.exVal) = (yyvsp[0].exVal); }
1638
1.33k
#line 1637 "util_expr_parse.c" /* yacc.c:1648  */
1639
1.33k
    break;
1640
1641
2.15k
  case 40:
1642
2.15k
#line 174 "util_expr_parse.y" /* yacc.c:1648  */
1643
2.15k
    { (yyval.exVal) = (yyvsp[0].exVal); }
1644
2.15k
#line 1643 "util_expr_parse.c" /* yacc.c:1648  */
1645
2.15k
    break;
1646
1647
704
  case 41:
1648
704
#line 175 "util_expr_parse.y" /* yacc.c:1648  */
1649
704
    { (yyval.exVal) = (yyvsp[-1].exVal); }
1650
704
#line 1649 "util_expr_parse.c" /* yacc.c:1648  */
1651
704
    break;
1652
1653
866
  case 42:
1654
866
#line 178 "util_expr_parse.y" /* yacc.c:1648  */
1655
866
    { (yyval.exVal) = (yyvsp[0].exVal); }
1656
866
#line 1655 "util_expr_parse.c" /* yacc.c:1648  */
1657
866
    break;
1658
1659
1.56k
  case 43:
1660
1.56k
#line 179 "util_expr_parse.y" /* yacc.c:1648  */
1661
1.56k
    { (yyval.exVal) = (yyvsp[0].exVal); }
1662
1.56k
#line 1661 "util_expr_parse.c" /* yacc.c:1648  */
1663
1.56k
    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
268
  case 45:
1672
268
#line 181 "util_expr_parse.y" /* yacc.c:1648  */
1673
268
    { (yyval.exVal) = (yyvsp[-1].exVal); }
1674
268
#line 1673 "util_expr_parse.c" /* yacc.c:1648  */
1675
268
    break;
1676
1677
9.35k
  case 46:
1678
9.35k
#line 184 "util_expr_parse.y" /* yacc.c:1648  */
1679
9.35k
    { (yyval.exVal) = ap_expr_make(op_String, (yyvsp[0].cpVal), NULL, ctx); }
1680
9.35k
#line 1679 "util_expr_parse.c" /* yacc.c:1648  */
1681
9.35k
    break;
1682
1683
5.35k
  case 47:
1684
5.35k
#line 185 "util_expr_parse.y" /* yacc.c:1648  */
1685
5.35k
    { (yyval.exVal) = (yyvsp[0].exVal); }
1686
5.35k
#line 1685 "util_expr_parse.c" /* yacc.c:1648  */
1687
5.35k
    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
6.24k
  case 52:
1714
6.24k
#line 192 "util_expr_parse.y" /* yacc.c:1648  */
1715
6.24k
    { (yyval.exVal) = ap_expr_backref_make((yyvsp[0].num), ctx); }
1716
6.24k
#line 1715 "util_expr_parse.c" /* yacc.c:1648  */
1717
6.24k
    break;
1718
1719
1.41k
  case 53:
1720
1.41k
#line 195 "util_expr_parse.y" /* yacc.c:1648  */
1721
1.41k
    { (yyval.exVal) = ap_expr_str_func_make((yyvsp[-3].cpVal), (yyvsp[-1].exVal), ctx); }
1722
1.41k
#line 1721 "util_expr_parse.c" /* yacc.c:1648  */
1723
1.41k
    break;
1724
1725
743
  case 54:
1726
743
#line 196 "util_expr_parse.y" /* yacc.c:1648  */
1727
743
    { (yyval.exVal) = ap_expr_str_func_make((yyvsp[-3].cpVal), (yyvsp[-1].exVal), ctx); }
1728
743
#line 1727 "util_expr_parse.c" /* yacc.c:1648  */
1729
743
    break;
1730
1731
1.56k
  case 55:
1732
1.56k
#line 199 "util_expr_parse.y" /* yacc.c:1648  */
1733
1.56k
    { (yyval.exVal) = ap_expr_list_func_make((yyvsp[-3].cpVal), (yyvsp[-1].exVal), ctx); }
1734
1.56k
#line 1733 "util_expr_parse.c" /* yacc.c:1648  */
1735
1.56k
    break;
1736
1737
251
  case 56:
1738
251
#line 203 "util_expr_parse.y" /* yacc.c:1648  */
1739
251
    { (yyval.exVal) = ap_expr_make(op_Sub, (yyvsp[0].exVal), (yyvsp[-2].exVal), ctx); }
1740
251
#line 1739 "util_expr_parse.c" /* yacc.c:1648  */
1741
251
    break;
1742
1743
2.88k
  case 57:
1744
2.88k
#line 204 "util_expr_parse.y" /* yacc.c:1648  */
1745
2.88k
    { (yyval.exVal) = ap_expr_make(op_Sub, (yyvsp[-1].exVal), (yyvsp[-3].exVal), ctx); }
1746
2.88k
#line 1745 "util_expr_parse.c" /* yacc.c:1648  */
1747
2.88k
    break;
1748
1749
781
  case 58:
1750
781
#line 207 "util_expr_parse.y" /* yacc.c:1648  */
1751
781
    { (yyval.exVal) = ap_expr_make(op_Join, (yyvsp[0].exVal), NULL, ctx); }
1752
781
#line 1751 "util_expr_parse.c" /* yacc.c:1648  */
1753
781
    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
387
  case 60:
1762
387
#line 209 "util_expr_parse.y" /* yacc.c:1648  */
1763
387
    { (yyval.exVal) = ap_expr_make(op_Join, (yyvsp[-2].exVal), (yyvsp[0].exVal),   ctx); }
1764
387
#line 1763 "util_expr_parse.c" /* yacc.c:1648  */
1765
387
    break;
1766
1767
170
  case 61:
1768
170
#line 210 "util_expr_parse.y" /* yacc.c:1648  */
1769
170
    { (yyval.exVal) = ap_expr_make(op_Join, (yyvsp[-3].exVal), (yyvsp[-1].exVal),   ctx); }
1770
170
#line 1769 "util_expr_parse.c" /* yacc.c:1648  */
1771
170
    break;
1772
1773
311
  case 62:
1774
311
#line 213 "util_expr_parse.y" /* yacc.c:1648  */
1775
311
    { (yyval.exVal) = ap_expr_make(op_Split, (yyvsp[0].exVal), (yyvsp[-2].exVal), ctx); }
1776
311
#line 1775 "util_expr_parse.c" /* yacc.c:1648  */
1777
311
    break;
1778
1779
186
  case 63:
1780
186
#line 214 "util_expr_parse.y" /* yacc.c:1648  */
1781
186
    { (yyval.exVal) = ap_expr_make(op_Split, (yyvsp[-1].exVal), (yyvsp[-3].exVal), ctx); }
1782
186
#line 1781 "util_expr_parse.c" /* yacc.c:1648  */
1783
186
    break;
1784
1785
178
  case 64:
1786
178
#line 215 "util_expr_parse.y" /* yacc.c:1648  */
1787
178
    { (yyval.exVal) = ap_expr_make(op_Split, (yyvsp[0].exVal), (yyvsp[-2].exVal), ctx); }
1788
178
#line 1787 "util_expr_parse.c" /* yacc.c:1648  */
1789
178
    break;
1790
1791
191
  case 65:
1792
191
#line 216 "util_expr_parse.y" /* yacc.c:1648  */
1793
191
    { (yyval.exVal) = ap_expr_make(op_Split, (yyvsp[-1].exVal), (yyvsp[-3].exVal), ctx); }
1794
191
#line 1793 "util_expr_parse.c" /* yacc.c:1648  */
1795
191
    break;
1796
1797
757
  case 66:
1798
757
#line 219 "util_expr_parse.y" /* yacc.c:1648  */
1799
757
    { (yyval.exVal) = ap_expr_make(op_ListElement, (yyvsp[0].exVal), NULL, ctx); }
1800
757
#line 1799 "util_expr_parse.c" /* yacc.c:1648  */
1801
757
    break;
1802
1803
1.08k
  case 67:
1804
1.08k
#line 220 "util_expr_parse.y" /* yacc.c:1648  */
1805
1.08k
    { (yyval.exVal) = ap_expr_make(op_ListElement, (yyvsp[-2].exVal), (yyvsp[0].exVal),   ctx); }
1806
1.08k
#line 1805 "util_expr_parse.c" /* yacc.c:1648  */
1807
1.08k
    break;
1808
1809
3.72k
  case 68:
1810
3.72k
#line 223 "util_expr_parse.y" /* yacc.c:1648  */
1811
3.72k
    {
1812
3.72k
                ap_expr_t *e = ap_expr_regex_make((yyvsp[-1].cpVal), NULL, (yyvsp[0].cpVal), ctx);
1813
3.72k
                if (!e) {
1814
7
                    ctx->error = "Failed to compile regular expression";
1815
7
                    YYERROR;
1816
7
                }
1817
3.71k
                (yyval.exVal) = e;
1818
3.71k
            }
1819
0
#line 1818 "util_expr_parse.c" /* yacc.c:1648  */
1820
0
    break;
1821
1822
4.10k
  case 69:
1823
4.10k
#line 232 "util_expr_parse.y" /* yacc.c:1648  */
1824
4.10k
    {
1825
4.10k
                ap_expr_t *e = ap_expr_regex_make((yyvsp[-2].cpVal), (yyvsp[-1].exVal), (yyvsp[0].cpVal), ctx);
1826
4.10k
                if (!e) {
1827
1
                    ctx->error = "Failed to compile regular expression";
1828
1
                    YYERROR;
1829
1
                }
1830
4.09k
                (yyval.exVal) = e;
1831
4.09k
            }
1832
0
#line 1831 "util_expr_parse.c" /* yacc.c:1648  */
1833
0
    break;
1834
1835
2.22k
  case 70:
1836
2.22k
#line 241 "util_expr_parse.y" /* yacc.c:1648  */
1837
2.22k
    { (yyval.exVal) = (yyvsp[0].exVal); }
1838
2.22k
#line 1837 "util_expr_parse.c" /* yacc.c:1648  */
1839
2.22k
    break;
1840
1841
176
  case 71:
1842
176
#line 242 "util_expr_parse.y" /* yacc.c:1648  */
1843
176
    { (yyval.exVal) = (yyvsp[0].exVal); }
1844
176
#line 1843 "util_expr_parse.c" /* yacc.c:1648  */
1845
176
    break;
1846
1847
1848
0
#line 1847 "util_expr_parse.c" /* yacc.c:1648  */
1849
0
      default: break;
1850
116k
    }
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
116k
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
1863
1864
116k
  YYPOPSTACK (yylen);
1865
116k
  yylen = 0;
1866
116k
  YY_STACK_PRINT (yyss, yyssp);
1867
1868
116k
  *++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
116k
  yyn = yyr1[yyn];
1875
1876
116k
  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1877
116k
  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1878
73.9k
    yystate = yytable[yystate];
1879
42.8k
  else
1880
42.8k
    yystate = yydefgoto[yyn - YYNTOKENS];
1881
1882
116k
  goto yynewstate;
1883
1884
1885
/*--------------------------------------.
1886
| yyerrlab -- here on detecting error.  |
1887
`--------------------------------------*/
1888
849
yyerrlab:
1889
  /* Make sure we have latest lookahead translation.  See comments at
1890
     user semantic actions for why this is necessary.  */
1891
849
  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
1892
1893
  /* If not already recovering from an error, report this error.  */
1894
849
  if (!yyerrstatus)
1895
849
    {
1896
849
      ++yynerrs;
1897
#if ! YYERROR_VERBOSE
1898
      yyerror (ctx, YY_("syntax error"));
1899
#else
1900
850
# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
1901
850
                                        yyssp, yytoken)
1902
849
      {
1903
849
        char const *yymsgp = YY_("syntax error");
1904
849
        int yysyntax_error_status;
1905
849
        yysyntax_error_status = YYSYNTAX_ERROR;
1906
849
        if (yysyntax_error_status == 0)
1907
848
          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
849
        yyerror (ctx, yymsgp);
1926
849
        if (yysyntax_error_status == 2)
1927
0
          goto yyexhaustedlab;
1928
849
      }
1929
849
# undef YYSYNTAX_ERROR
1930
849
#endif
1931
849
    }
1932
1933
1934
1935
849
  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
849
  goto yyerrlab1;
1957
1958
1959
/*---------------------------------------------------.
1960
| yyerrorlab -- error raised explicitly by YYERROR.  |
1961
`---------------------------------------------------*/
1962
849
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
8
  if (/*CONSTCOND*/ 0)
1968
0
     goto yyerrorlab;
1969
1970
  /* Do not reclaim the symbols of the rule whose action triggered
1971
     this YYERROR.  */
1972
8
  YYPOPSTACK (yylen);
1973
8
  yylen = 0;
1974
8
  YY_STACK_PRINT (yyss, yyssp);
1975
8
  yystate = *yyssp;
1976
8
  goto yyerrlab1;
1977
1978
1979
/*-------------------------------------------------------------.
1980
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
1981
`-------------------------------------------------------------*/
1982
857
yyerrlab1:
1983
857
  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
1984
1985
857
  for (;;)
1986
46.2k
    {
1987
46.2k
      yyn = yypact[yystate];
1988
46.2k
      if (!yypact_value_is_default (yyn))
1989
46.2k
        {
1990
46.2k
          yyn += YYTERROR;
1991
46.2k
          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
46.2k
        }
1998
1999
      /* Pop the current state because it cannot handle the error token.  */
2000
46.2k
      if (yyssp == yyss)
2001
857
        YYABORT;
2002
2003
2004
45.3k
      yydestruct ("Error: popping",
2005
45.3k
                  yystos[yystate], yyvsp, ctx);
2006
45.3k
      YYPOPSTACK (1);
2007
45.3k
      yystate = *yyssp;
2008
45.3k
      YY_STACK_PRINT (yyss, yyssp);
2009
45.3k
    }
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
344
yyacceptlab:
2027
344
  yyresult = 0;
2028
344
  goto yyreturn;
2029
2030
/*-----------------------------------.
2031
| yyabortlab -- YYABORT comes here.  |
2032
`-----------------------------------*/
2033
923
yyabortlab:
2034
923
  yyresult = 1;
2035
923
  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.26k
yyreturn:
2048
1.26k
  if (yychar != YYEMPTY)
2049
849
    {
2050
      /* Make sure we have latest lookahead translation.  See comments at
2051
         user semantic actions for why this is necessary.  */
2052
849
      yytoken = YYTRANSLATE (yychar);
2053
849
      yydestruct ("Cleanup: discarding lookahead",
2054
849
                  yytoken, &yylval, ctx);
2055
849
    }
2056
  /* Do not reclaim the symbols of the rule whose action triggered
2057
     this YYABORT or YYACCEPT.  */
2058
1.26k
  YYPOPSTACK (yylen);
2059
1.26k
  YY_STACK_PRINT (yyss, yyssp);
2060
25.7k
  while (yyssp != yyss)
2061
24.4k
    {
2062
24.4k
      yydestruct ("Cleanup: popping",
2063
24.4k
                  yystos[*yyssp], yyvsp, ctx);
2064
24.4k
      YYPOPSTACK (1);
2065
24.4k
    }
2066
1.26k
#ifndef yyoverflow
2067
1.26k
  if (yyss != yyssa)
2068
61
    YYSTACK_FREE (yyss);
2069
1.26k
#endif
2070
1.26k
#if YYERROR_VERBOSE
2071
1.26k
  if (yymsg != yymsgbuf)
2072
1
    YYSTACK_FREE (yymsg);
2073
1.26k
#endif
2074
1.26k
  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
851
{
2081
    /* s is allocated on the stack */
2082
851
    ctx->error = apr_pstrdup(ctx->ptemp, s);
2083
851
}
2084