Blame server/util_expr_parse.c

Packit 90a5c9
/* A Bison parser, made by GNU Bison 2.5.  */
Packit 90a5c9
Packit 90a5c9
/* Bison implementation for Yacc-like parsers in C
Packit 90a5c9
   
Packit 90a5c9
      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
Packit 90a5c9
   
Packit 90a5c9
   This program is free software: you can redistribute it and/or modify
Packit 90a5c9
   it under the terms of the GNU General Public License as published by
Packit 90a5c9
   the Free Software Foundation, either version 3 of the License, or
Packit 90a5c9
   (at your option) any later version.
Packit 90a5c9
   
Packit 90a5c9
   This program is distributed in the hope that it will be useful,
Packit 90a5c9
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 90a5c9
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 90a5c9
   GNU General Public License for more details.
Packit 90a5c9
   
Packit 90a5c9
   You should have received a copy of the GNU General Public License
Packit 90a5c9
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
Packit 90a5c9
Packit 90a5c9
/* As a special exception, you may create a larger work that contains
Packit 90a5c9
   part or all of the Bison parser skeleton and distribute that work
Packit 90a5c9
   under terms of your choice, so long as that work isn't itself a
Packit 90a5c9
   parser generator using the skeleton or a modified version thereof
Packit 90a5c9
   as a parser skeleton.  Alternatively, if you modify or redistribute
Packit 90a5c9
   the parser skeleton itself, you may (at your option) remove this
Packit 90a5c9
   special exception, which will cause the skeleton and the resulting
Packit 90a5c9
   Bison output files to be licensed under the GNU General Public
Packit 90a5c9
   License without this special exception.
Packit 90a5c9
   
Packit 90a5c9
   This special exception was added by the Free Software Foundation in
Packit 90a5c9
   version 2.2 of Bison.  */
Packit 90a5c9
Packit 90a5c9
/* C LALR(1) parser skeleton written by Richard Stallman, by
Packit 90a5c9
   simplifying the original so-called "semantic" parser.  */
Packit 90a5c9
Packit 90a5c9
/* All symbols defined below should begin with yy or YY, to avoid
Packit 90a5c9
   infringing on user name space.  This should be done even for local
Packit 90a5c9
   variables, as they might otherwise be expanded by user macros.
Packit 90a5c9
   There are some unavoidable exceptions within include files to
Packit 90a5c9
   define necessary library symbols; they are noted "INFRINGES ON
Packit 90a5c9
   USER NAME SPACE" below.  */
Packit 90a5c9
Packit 90a5c9
/* Identify Bison output.  */
Packit 90a5c9
#define YYBISON 1
Packit 90a5c9
Packit 90a5c9
/* Bison version.  */
Packit 90a5c9
#define YYBISON_VERSION "2.5"
Packit 90a5c9
Packit 90a5c9
/* Skeleton name.  */
Packit 90a5c9
#define YYSKELETON_NAME "yacc.c"
Packit 90a5c9
Packit 90a5c9
/* Pure parsers.  */
Packit 90a5c9
#define YYPURE 1
Packit 90a5c9
Packit 90a5c9
/* Push parsers.  */
Packit 90a5c9
#define YYPUSH 0
Packit 90a5c9
Packit 90a5c9
/* Pull parsers.  */
Packit 90a5c9
#define YYPULL 1
Packit 90a5c9
Packit 90a5c9
/* Using locations.  */
Packit 90a5c9
#define YYLSP_NEEDED 0
Packit 90a5c9
Packit 90a5c9
/* Substitute the variable and function names.  */
Packit 90a5c9
#define yyparse         ap_expr_yyparse
Packit 90a5c9
#define yylex           ap_expr_yylex
Packit 90a5c9
#define yyerror         ap_expr_yyerror
Packit 90a5c9
#define yylval          ap_expr_yylval
Packit 90a5c9
#define yychar          ap_expr_yychar
Packit 90a5c9
#define yydebug         ap_expr_yydebug
Packit 90a5c9
#define yynerrs         ap_expr_yynerrs
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/* Copy the first part of user declarations.  */
Packit 90a5c9
Packit 90a5c9
/* Line 268 of yacc.c  */
Packit 90a5c9
#line 31 "util_expr_parse.y"
Packit 90a5c9
Packit 90a5c9
#include "util_expr_private.h"
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/* Line 268 of yacc.c  */
Packit 90a5c9
#line 84 "util_expr_parse.c"
Packit 90a5c9
Packit 90a5c9
/* Enabling traces.  */
Packit 90a5c9
#ifndef YYDEBUG
Packit 90a5c9
# define YYDEBUG 0
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* Enabling verbose error messages.  */
Packit 90a5c9
#ifdef YYERROR_VERBOSE
Packit 90a5c9
# undef YYERROR_VERBOSE
Packit 90a5c9
# define YYERROR_VERBOSE 1
Packit 90a5c9
#else
Packit 90a5c9
# define YYERROR_VERBOSE 1
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* Enabling the token table.  */
Packit 90a5c9
#ifndef YYTOKEN_TABLE
Packit 90a5c9
# define YYTOKEN_TABLE 0
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/* Tokens.  */
Packit 90a5c9
#ifndef YYTOKENTYPE
Packit 90a5c9
# define YYTOKENTYPE
Packit 90a5c9
   /* Put the tokens into the symbol table, so that GDB and other debuggers
Packit 90a5c9
      know about them.  */
Packit 90a5c9
   enum yytokentype {
Packit 90a5c9
     T_TRUE = 258,
Packit 90a5c9
     T_FALSE = 259,
Packit 90a5c9
     T_EXPR_BOOL = 260,
Packit 90a5c9
     T_EXPR_STRING = 261,
Packit 90a5c9
     T_ERROR = 262,
Packit 90a5c9
     T_DIGIT = 263,
Packit 90a5c9
     T_ID = 264,
Packit 90a5c9
     T_STRING = 265,
Packit 90a5c9
     T_REGEX = 266,
Packit 90a5c9
     T_REGEX_I = 267,
Packit 90a5c9
     T_REGEX_BACKREF = 268,
Packit 90a5c9
     T_OP_UNARY = 269,
Packit 90a5c9
     T_OP_BINARY = 270,
Packit 90a5c9
     T_STR_BEGIN = 271,
Packit 90a5c9
     T_STR_END = 272,
Packit 90a5c9
     T_VAR_BEGIN = 273,
Packit 90a5c9
     T_VAR_END = 274,
Packit 90a5c9
     T_OP_EQ = 275,
Packit 90a5c9
     T_OP_NE = 276,
Packit 90a5c9
     T_OP_LT = 277,
Packit 90a5c9
     T_OP_LE = 278,
Packit 90a5c9
     T_OP_GT = 279,
Packit 90a5c9
     T_OP_GE = 280,
Packit 90a5c9
     T_OP_REG = 281,
Packit 90a5c9
     T_OP_NRE = 282,
Packit 90a5c9
     T_OP_IN = 283,
Packit 90a5c9
     T_OP_STR_EQ = 284,
Packit 90a5c9
     T_OP_STR_NE = 285,
Packit 90a5c9
     T_OP_STR_LT = 286,
Packit 90a5c9
     T_OP_STR_LE = 287,
Packit 90a5c9
     T_OP_STR_GT = 288,
Packit 90a5c9
     T_OP_STR_GE = 289,
Packit 90a5c9
     T_OP_CONCAT = 290,
Packit 90a5c9
     T_OP_OR = 291,
Packit 90a5c9
     T_OP_AND = 292,
Packit 90a5c9
     T_OP_NOT = 293
Packit 90a5c9
   };
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
Packit 90a5c9
typedef union YYSTYPE
Packit 90a5c9
{
Packit 90a5c9
Packit 90a5c9
/* Line 293 of yacc.c  */
Packit 90a5c9
#line 35 "util_expr_parse.y"
Packit 90a5c9
Packit 90a5c9
    char      *cpVal;
Packit 90a5c9
    ap_expr_t *exVal;
Packit 90a5c9
    int        num;
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/* Line 293 of yacc.c  */
Packit 90a5c9
#line 166 "util_expr_parse.c"
Packit 90a5c9
} YYSTYPE;
Packit 90a5c9
# define YYSTYPE_IS_TRIVIAL 1
Packit 90a5c9
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
Packit 90a5c9
# define YYSTYPE_IS_DECLARED 1
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/* Copy the second part of user declarations.  */
Packit 90a5c9
Packit 90a5c9
/* Line 343 of yacc.c  */
Packit 90a5c9
#line 102 "util_expr_parse.y"
Packit 90a5c9
Packit 90a5c9
#include "util_expr_private.h"
Packit 90a5c9
#define yyscanner ctx->scanner
Packit 90a5c9
Packit 90a5c9
int ap_expr_yylex(YYSTYPE *lvalp, void *scanner);
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/* Line 343 of yacc.c  */
Packit 90a5c9
#line 186 "util_expr_parse.c"
Packit 90a5c9
Packit 90a5c9
#ifdef short
Packit 90a5c9
# undef short
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#ifdef YYTYPE_UINT8
Packit 90a5c9
typedef YYTYPE_UINT8 yytype_uint8;
Packit 90a5c9
#else
Packit 90a5c9
typedef unsigned char yytype_uint8;
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#ifdef YYTYPE_INT8
Packit 90a5c9
typedef YYTYPE_INT8 yytype_int8;
Packit 90a5c9
#elif (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
typedef signed char yytype_int8;
Packit 90a5c9
#else
Packit 90a5c9
typedef short int yytype_int8;
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#ifdef YYTYPE_UINT16
Packit 90a5c9
typedef YYTYPE_UINT16 yytype_uint16;
Packit 90a5c9
#else
Packit 90a5c9
typedef unsigned short int yytype_uint16;
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#ifdef YYTYPE_INT16
Packit 90a5c9
typedef YYTYPE_INT16 yytype_int16;
Packit 90a5c9
#else
Packit 90a5c9
typedef short int yytype_int16;
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#ifndef YYSIZE_T
Packit 90a5c9
# ifdef __SIZE_TYPE__
Packit 90a5c9
#  define YYSIZE_T __SIZE_TYPE__
Packit 90a5c9
# elif defined size_t
Packit 90a5c9
#  define YYSIZE_T size_t
Packit 90a5c9
# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
Packit 90a5c9
#  define YYSIZE_T size_t
Packit 90a5c9
# else
Packit 90a5c9
#  define YYSIZE_T unsigned int
Packit 90a5c9
# endif
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
Packit 90a5c9
Packit 90a5c9
#ifndef YY_
Packit 90a5c9
# if defined YYENABLE_NLS && YYENABLE_NLS
Packit 90a5c9
#  if ENABLE_NLS
Packit 90a5c9
#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
Packit 90a5c9
#   define YY_(msgid) dgettext ("bison-runtime", msgid)
Packit 90a5c9
#  endif
Packit 90a5c9
# endif
Packit 90a5c9
# ifndef YY_
Packit 90a5c9
#  define YY_(msgid) msgid
Packit 90a5c9
# endif
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* Suppress unused-variable warnings by "using" E.  */
Packit 90a5c9
#if ! defined lint || defined __GNUC__
Packit 90a5c9
# define YYUSE(e) ((void) (e))
Packit 90a5c9
#else
Packit 90a5c9
# define YYUSE(e) /* empty */
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* Identity function, used to suppress warnings about constant conditions.  */
Packit 90a5c9
#ifndef lint
Packit 90a5c9
# define YYID(n) (n)
Packit 90a5c9
#else
Packit 90a5c9
#if (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
static int
Packit 90a5c9
YYID (int yyi)
Packit 90a5c9
#else
Packit 90a5c9
static int
Packit 90a5c9
YYID (yyi)
Packit 90a5c9
    int yyi;
Packit 90a5c9
#endif
Packit 90a5c9
{
Packit 90a5c9
  return yyi;
Packit 90a5c9
}
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#if ! defined yyoverflow || YYERROR_VERBOSE
Packit 90a5c9
Packit 90a5c9
/* The parser invokes alloca or malloc; define the necessary symbols.  */
Packit 90a5c9
Packit 90a5c9
# ifdef YYSTACK_USE_ALLOCA
Packit 90a5c9
#  if YYSTACK_USE_ALLOCA
Packit 90a5c9
#   ifdef __GNUC__
Packit 90a5c9
#    define YYSTACK_ALLOC __builtin_alloca
Packit 90a5c9
#   elif defined __BUILTIN_VA_ARG_INCR
Packit 90a5c9
#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
Packit 90a5c9
#   elif defined _AIX
Packit 90a5c9
#    define YYSTACK_ALLOC __alloca
Packit 90a5c9
#   elif defined _MSC_VER
Packit 90a5c9
#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
Packit 90a5c9
#    define alloca _alloca
Packit 90a5c9
#   else
Packit 90a5c9
#    define YYSTACK_ALLOC alloca
Packit 90a5c9
#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
Packit 90a5c9
#     ifndef EXIT_SUCCESS
Packit 90a5c9
#      define EXIT_SUCCESS 0
Packit 90a5c9
#     endif
Packit 90a5c9
#    endif
Packit 90a5c9
#   endif
Packit 90a5c9
#  endif
Packit 90a5c9
# endif
Packit 90a5c9
Packit 90a5c9
# ifdef YYSTACK_ALLOC
Packit 90a5c9
   /* Pacify GCC's `empty if-body' warning.  */
Packit 90a5c9
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
Packit 90a5c9
#  ifndef YYSTACK_ALLOC_MAXIMUM
Packit 90a5c9
    /* The OS might guarantee only one guard page at the bottom of the stack,
Packit 90a5c9
       and a page size can be as small as 4096 bytes.  So we cannot safely
Packit 90a5c9
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
Packit 90a5c9
       to allow for a few compiler-allocated temporary stack slots.  */
Packit 90a5c9
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
Packit 90a5c9
#  endif
Packit 90a5c9
# else
Packit 90a5c9
#  define YYSTACK_ALLOC YYMALLOC
Packit 90a5c9
#  define YYSTACK_FREE YYFREE
Packit 90a5c9
#  ifndef YYSTACK_ALLOC_MAXIMUM
Packit 90a5c9
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
Packit 90a5c9
#  endif
Packit 90a5c9
#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
Packit 90a5c9
       && ! ((defined YYMALLOC || defined malloc) \
Packit 90a5c9
	     && (defined YYFREE || defined free)))
Packit 90a5c9
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
Packit 90a5c9
#   ifndef EXIT_SUCCESS
Packit 90a5c9
#    define EXIT_SUCCESS 0
Packit 90a5c9
#   endif
Packit 90a5c9
#  endif
Packit 90a5c9
#  ifndef YYMALLOC
Packit 90a5c9
#   define YYMALLOC malloc
Packit 90a5c9
#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
Packit 90a5c9
#   endif
Packit 90a5c9
#  endif
Packit 90a5c9
#  ifndef YYFREE
Packit 90a5c9
#   define YYFREE free
Packit 90a5c9
#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
void free (void *); /* INFRINGES ON USER NAME SPACE */
Packit 90a5c9
#   endif
Packit 90a5c9
#  endif
Packit 90a5c9
# endif
Packit 90a5c9
#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
#if (! defined yyoverflow \
Packit 90a5c9
     && (! defined __cplusplus \
Packit 90a5c9
	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
Packit 90a5c9
Packit 90a5c9
/* A type that is properly aligned for any stack member.  */
Packit 90a5c9
union yyalloc
Packit 90a5c9
{
Packit 90a5c9
  yytype_int16 yyss_alloc;
Packit 90a5c9
  YYSTYPE yyvs_alloc;
Packit 90a5c9
};
Packit 90a5c9
Packit 90a5c9
/* The size of the maximum gap between one aligned stack and the next.  */
Packit 90a5c9
# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
Packit 90a5c9
Packit 90a5c9
/* The size of an array large to enough to hold all stacks, each with
Packit 90a5c9
   N elements.  */
Packit 90a5c9
# define YYSTACK_BYTES(N) \
Packit 90a5c9
     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
Packit 90a5c9
      + YYSTACK_GAP_MAXIMUM)
Packit 90a5c9
Packit 90a5c9
# define YYCOPY_NEEDED 1
Packit 90a5c9
Packit 90a5c9
/* Relocate STACK from its old location to the new one.  The
Packit 90a5c9
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
Packit 90a5c9
   elements in the stack, and YYPTR gives the new location of the
Packit 90a5c9
   stack.  Advance YYPTR to a properly aligned location for the next
Packit 90a5c9
   stack.  */
Packit 90a5c9
# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
Packit 90a5c9
    do									\
Packit 90a5c9
      {									\
Packit 90a5c9
	YYSIZE_T yynewbytes;						\
Packit 90a5c9
	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
Packit 90a5c9
	Stack = &yyptr->Stack_alloc;					\
Packit 90a5c9
	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
Packit 90a5c9
	yyptr += yynewbytes / sizeof (*yyptr);				\
Packit 90a5c9
      }									\
Packit 90a5c9
    while (YYID (0))
Packit 90a5c9
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
Packit 90a5c9
/* Copy COUNT objects from FROM to TO.  The source and destination do
Packit 90a5c9
   not overlap.  */
Packit 90a5c9
# ifndef YYCOPY
Packit 90a5c9
#  if defined __GNUC__ && 1 < __GNUC__
Packit 90a5c9
#   define YYCOPY(To, From, Count) \
Packit 90a5c9
      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
Packit 90a5c9
#  else
Packit 90a5c9
#   define YYCOPY(To, From, Count)		\
Packit 90a5c9
      do					\
Packit 90a5c9
	{					\
Packit 90a5c9
	  YYSIZE_T yyi;				\
Packit 90a5c9
	  for (yyi = 0; yyi < (Count); yyi++)	\
Packit 90a5c9
	    (To)[yyi] = (From)[yyi];		\
Packit 90a5c9
	}					\
Packit 90a5c9
      while (YYID (0))
Packit 90a5c9
#  endif
Packit 90a5c9
# endif
Packit 90a5c9
#endif /* !YYCOPY_NEEDED */
Packit 90a5c9
Packit 90a5c9
/* YYFINAL -- State number of the termination state.  */
Packit 90a5c9
#define YYFINAL  28
Packit 90a5c9
/* YYLAST -- Last index in YYTABLE.  */
Packit 90a5c9
#define YYLAST   128
Packit 90a5c9
Packit 90a5c9
/* YYNTOKENS -- Number of terminals.  */
Packit 90a5c9
#define YYNTOKENS  45
Packit 90a5c9
/* YYNNTS -- Number of nonterminals.  */
Packit 90a5c9
#define YYNNTS  14
Packit 90a5c9
/* YYNRULES -- Number of rules.  */
Packit 90a5c9
#define YYNRULES  53
Packit 90a5c9
/* YYNRULES -- Number of states.  */
Packit 90a5c9
#define YYNSTATES  96
Packit 90a5c9
Packit 90a5c9
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
Packit 90a5c9
#define YYUNDEFTOK  2
Packit 90a5c9
#define YYMAXUTOK   293
Packit 90a5c9
Packit 90a5c9
#define YYTRANSLATE(YYX)						\
Packit 90a5c9
  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
Packit 90a5c9
Packit 90a5c9
/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
Packit 90a5c9
static const yytype_uint8 yytranslate[] =
Packit 90a5c9
{
Packit 90a5c9
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
      39,    40,     2,     2,    43,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,    44,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,    41,     2,    42,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 90a5c9
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
Packit 90a5c9
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
Packit 90a5c9
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
Packit 90a5c9
      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
Packit 90a5c9
      35,    36,    37,    38
Packit 90a5c9
};
Packit 90a5c9
Packit 90a5c9
#if YYDEBUG
Packit 90a5c9
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
Packit 90a5c9
   YYRHS.  */
Packit 90a5c9
static const yytype_uint8 yyprhs[] =
Packit 90a5c9
{
Packit 90a5c9
       0,     0,     3,     6,     9,    11,    13,    15,    18,    22,
Packit 90a5c9
      26,    28,    31,    35,    39,    41,    45,    49,    53,    57,
Packit 90a5c9
      61,    65,    69,    73,    77,    81,    85,    89,    93,    97,
Packit 90a5c9
     101,   103,   107,   109,   113,   116,   118,   120,   122,   124,
Packit 90a5c9
     126,   130,   136,   138,   142,   144,   146,   148,   152,   155,
Packit 90a5c9
     157,   159,   161,   166
Packit 90a5c9
};
Packit 90a5c9
Packit 90a5c9
/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
Packit 90a5c9
static const yytype_int8 yyrhs[] =
Packit 90a5c9
{
Packit 90a5c9
      46,     0,    -1,     5,    47,    -1,     6,    51,    -1,     7,
Packit 90a5c9
      -1,     3,    -1,     4,    -1,    38,    47,    -1,    47,    36,
Packit 90a5c9
      47,    -1,    47,    37,    47,    -1,    48,    -1,    14,    54,
Packit 90a5c9
      -1,    54,    15,    54,    -1,    39,    47,    40,    -1,     7,
Packit 90a5c9
      -1,    54,    20,    54,    -1,    54,    21,    54,    -1,    54,
Packit 90a5c9
      22,    54,    -1,    54,    23,    54,    -1,    54,    24,    54,
Packit 90a5c9
      -1,    54,    25,    54,    -1,    54,    29,    54,    -1,    54,
Packit 90a5c9
      30,    54,    -1,    54,    31,    54,    -1,    54,    32,    54,
Packit 90a5c9
      -1,    54,    33,    54,    -1,    54,    34,    54,    -1,    54,
Packit 90a5c9
      28,    49,    -1,    54,    26,    55,    -1,    54,    27,    55,
Packit 90a5c9
      -1,    57,    -1,    41,    50,    42,    -1,    54,    -1,    50,
Packit 90a5c9
      43,    54,    -1,    51,    52,    -1,    52,    -1,     7,    -1,
Packit 90a5c9
      10,    -1,    53,    -1,    56,    -1,    18,     9,    19,    -1,
Packit 90a5c9
      18,     9,    44,    51,    19,    -1,     8,    -1,    54,    35,
Packit 90a5c9
      54,    -1,    53,    -1,    56,    -1,    58,    -1,    16,    51,
Packit 90a5c9
      17,    -1,    16,    17,    -1,    11,    -1,    12,    -1,    13,
Packit 90a5c9
      -1,     9,    39,    54,    40,    -1,     9,    39,    54,    40,
Packit 90a5c9
      -1
Packit 90a5c9
};
Packit 90a5c9
Packit 90a5c9
/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
Packit 90a5c9
static const yytype_uint8 yyrline[] =
Packit 90a5c9
{
Packit 90a5c9
       0,   112,   112,   113,   114,   117,   118,   119,   120,   121,
Packit 90a5c9
     122,   123,   124,   125,   126,   129,   130,   131,   132,   133,
Packit 90a5c9
     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
Packit 90a5c9
     146,   147,   150,   151,   154,   155,   156,   159,   160,   161,
Packit 90a5c9
     164,   165,   168,   169,   170,   171,   172,   173,   174,   177,
Packit 90a5c9
     186,   197,   204,   207
Packit 90a5c9
};
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
Packit 90a5c9
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
Packit 90a5c9
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
Packit 90a5c9
static const char *const yytname[] =
Packit 90a5c9
{
Packit 90a5c9
  "$end", "error", "$undefined", "T_TRUE", "T_FALSE", "T_EXPR_BOOL",
Packit 90a5c9
  "T_EXPR_STRING", "T_ERROR", "T_DIGIT", "T_ID", "T_STRING", "T_REGEX",
Packit 90a5c9
  "T_REGEX_I", "T_REGEX_BACKREF", "T_OP_UNARY", "T_OP_BINARY",
Packit 90a5c9
  "T_STR_BEGIN", "T_STR_END", "T_VAR_BEGIN", "T_VAR_END", "T_OP_EQ",
Packit 90a5c9
  "T_OP_NE", "T_OP_LT", "T_OP_LE", "T_OP_GT", "T_OP_GE", "T_OP_REG",
Packit 90a5c9
  "T_OP_NRE", "T_OP_IN", "T_OP_STR_EQ", "T_OP_STR_NE", "T_OP_STR_LT",
Packit 90a5c9
  "T_OP_STR_LE", "T_OP_STR_GT", "T_OP_STR_GE", "T_OP_CONCAT", "T_OP_OR",
Packit 90a5c9
  "T_OP_AND", "T_OP_NOT", "'('", "')'", "'{'", "'}'", "','", "':'",
Packit 90a5c9
  "$accept", "root", "expr", "comparison", "wordlist", "words", "string",
Packit 90a5c9
  "strpart", "var", "word", "regex", "backref", "lstfunccall",
Packit 90a5c9
  "strfunccall", 0
Packit 90a5c9
};
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
# ifdef YYPRINT
Packit 90a5c9
/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
Packit 90a5c9
   token YYLEX-NUM.  */
Packit 90a5c9
static const yytype_uint16 yytoknum[] =
Packit 90a5c9
{
Packit 90a5c9
       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
Packit 90a5c9
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
Packit 90a5c9
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
Packit 90a5c9
     285,   286,   287,   288,   289,   290,   291,   292,   293,    40,
Packit 90a5c9
      41,   123,   125,    44,    58
Packit 90a5c9
};
Packit 90a5c9
# endif
Packit 90a5c9
Packit 90a5c9
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
Packit 90a5c9
static const yytype_uint8 yyr1[] =
Packit 90a5c9
{
Packit 90a5c9
       0,    45,    46,    46,    46,    47,    47,    47,    47,    47,
Packit 90a5c9
      47,    47,    47,    47,    47,    48,    48,    48,    48,    48,
Packit 90a5c9
      48,    48,    48,    48,    48,    48,    48,    48,    48,    48,
Packit 90a5c9
      49,    49,    50,    50,    51,    51,    51,    52,    52,    52,
Packit 90a5c9
      53,    53,    54,    54,    54,    54,    54,    54,    54,    55,
Packit 90a5c9
      55,    56,    57,    58
Packit 90a5c9
};
Packit 90a5c9
Packit 90a5c9
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
Packit 90a5c9
static const yytype_uint8 yyr2[] =
Packit 90a5c9
{
Packit 90a5c9
       0,     2,     2,     2,     1,     1,     1,     2,     3,     3,
Packit 90a5c9
       1,     2,     3,     3,     1,     3,     3,     3,     3,     3,
Packit 90a5c9
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
Packit 90a5c9
       1,     3,     1,     3,     2,     1,     1,     1,     1,     1,
Packit 90a5c9
       3,     5,     1,     3,     1,     1,     1,     3,     2,     1,
Packit 90a5c9
       1,     1,     4,     4
Packit 90a5c9
};
Packit 90a5c9
Packit 90a5c9
/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
Packit 90a5c9
   Performed when YYTABLE doesn't specify something else to do.  Zero
Packit 90a5c9
   means the default is an error.  */
Packit 90a5c9
static const yytype_uint8 yydefact[] =
Packit 90a5c9
{
Packit 90a5c9
       0,     0,     0,     4,     0,     5,     6,    14,    42,     0,
Packit 90a5c9
      51,     0,     0,     0,     0,     0,     2,    10,    44,     0,
Packit 90a5c9
      45,    46,    36,    37,     3,    35,    38,    39,     1,     0,
Packit 90a5c9
      11,    48,     0,     0,     7,     0,     0,     0,     0,     0,
Packit 90a5c9
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
Packit 90a5c9
       0,     0,     0,     0,     0,    34,     0,    47,    40,     0,
Packit 90a5c9
      13,     8,     9,    12,    15,    16,    17,    18,    19,    20,
Packit 90a5c9
      49,    50,    28,    29,     0,     0,    27,    30,    21,    22,
Packit 90a5c9
      23,    24,    25,    26,    43,    53,     0,     0,     0,    32,
Packit 90a5c9
      41,     0,    31,     0,    52,    33
Packit 90a5c9
};
Packit 90a5c9
Packit 90a5c9
/* YYDEFGOTO[NTERM-NUM].  */
Packit 90a5c9
static const yytype_int8 yydefgoto[] =
Packit 90a5c9
{
Packit 90a5c9
      -1,     4,    16,    17,    76,    88,    24,    25,    18,    19,
Packit 90a5c9
      72,    20,    77,    21
Packit 90a5c9
};
Packit 90a5c9
Packit 90a5c9
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
Packit 90a5c9
   STATE-NUM.  */
Packit 90a5c9
#define YYPACT_NINF -35
Packit 90a5c9
static const yytype_int8 yypact[] =
Packit 90a5c9
{
Packit 90a5c9
      48,    60,    73,   -35,     7,   -35,   -35,   -35,   -35,   -34,
Packit 90a5c9
     -35,    43,     8,    11,    60,    60,    86,   -35,   -35,    80,
Packit 90a5c9
     -35,   -35,   -35,   -35,   108,   -35,   -35,   -35,   -35,    43,
Packit 90a5c9
      25,   -35,    79,   -17,   -35,    -8,    60,    60,    43,    43,
Packit 90a5c9
      43,    43,    43,    43,    43,     5,     5,     0,    43,    43,
Packit 90a5c9
      43,    43,    43,    43,    43,   -35,   -27,   -35,   -35,    73,
Packit 90a5c9
     -35,    86,     3,    25,    25,    25,    25,    25,    25,    25,
Packit 90a5c9
     -35,   -35,   -35,   -35,    23,    43,   -35,   -35,    25,    25,
Packit 90a5c9
      25,    25,    25,    25,    25,   -35,   106,    43,    85,    25,
Packit 90a5c9
     -35,   -21,   -35,    43,   -35,    25
Packit 90a5c9
};
Packit 90a5c9
Packit 90a5c9
/* YYPGOTO[NTERM-NUM].  */
Packit 90a5c9
static const yytype_int8 yypgoto[] =
Packit 90a5c9
{
Packit 90a5c9
     -35,   -35,    57,   -35,   -35,   -35,    -9,   -20,    -2,    -5,
Packit 90a5c9
      -4,    -1,   -35,   -35
Packit 90a5c9
};
Packit 90a5c9
Packit 90a5c9
/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
Packit 90a5c9
   positive, shift that token.  If negative, reduce the rule which
Packit 90a5c9
   number is the opposite.  If YYTABLE_NINF, syntax error.  */
Packit 90a5c9
#define YYTABLE_NINF -1
Packit 90a5c9
static const yytype_uint8 yytable[] =
Packit 90a5c9
{
Packit 90a5c9
      26,    27,    58,    32,    55,    29,    30,    28,    54,    74,
Packit 90a5c9
      26,    27,    55,    85,    54,    22,    70,    71,    23,    94,
Packit 90a5c9
      33,    10,    26,    27,    56,    31,    13,    59,    36,    37,
Packit 90a5c9
      26,    27,    60,    63,    64,    65,    66,    67,    68,    69,
Packit 90a5c9
      37,    75,    73,    78,    79,    80,    81,    82,    83,    84,
Packit 90a5c9
      86,     8,     9,     1,     2,     3,    10,    26,    27,    12,
Packit 90a5c9
      54,    13,    87,     5,     6,     0,    55,     7,     8,     9,
Packit 90a5c9
      89,    34,    35,    10,    11,     0,    12,     0,    13,     0,
Packit 90a5c9
      22,     0,    91,    23,    26,    27,    10,     0,    95,    23,
Packit 90a5c9
       0,    13,    10,    61,    62,    38,    57,    13,    14,    15,
Packit 90a5c9
      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
Packit 90a5c9
      49,    50,    51,    52,    53,    54,    23,     0,    23,    10,
Packit 90a5c9
       0,    10,    36,    37,    13,    90,    13,    92,    93
Packit 90a5c9
};
Packit 90a5c9
Packit 90a5c9
#define yypact_value_is_default(yystate) \
Packit 90a5c9
  ((yystate) == (-35))
Packit 90a5c9
Packit 90a5c9
#define yytable_value_is_error(yytable_value) \
Packit 90a5c9
  YYID (0)
Packit 90a5c9
Packit 90a5c9
static const yytype_int8 yycheck[] =
Packit 90a5c9
{
Packit 90a5c9
       2,     2,    19,    12,    24,    39,    11,     0,    35,     9,
Packit 90a5c9
      12,    12,    32,    40,    35,     7,    11,    12,    10,    40,
Packit 90a5c9
       9,    13,    24,    24,    29,    17,    18,    44,    36,    37,
Packit 90a5c9
      32,    32,    40,    38,    39,    40,    41,    42,    43,    44,
Packit 90a5c9
      37,    41,    46,    48,    49,    50,    51,    52,    53,    54,
Packit 90a5c9
      59,     8,     9,     5,     6,     7,    13,    59,    59,    16,
Packit 90a5c9
      35,    18,    39,     3,     4,    -1,    86,     7,     8,     9,
Packit 90a5c9
      75,    14,    15,    13,    14,    -1,    16,    -1,    18,    -1,
Packit 90a5c9
       7,    -1,    87,    10,    86,    86,    13,    -1,    93,    10,
Packit 90a5c9
      -1,    18,    13,    36,    37,    15,    17,    18,    38,    39,
Packit 90a5c9
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
Packit 90a5c9
      30,    31,    32,    33,    34,    35,    10,    -1,    10,    13,
Packit 90a5c9
      -1,    13,    36,    37,    18,    19,    18,    42,    43
Packit 90a5c9
};
Packit 90a5c9
Packit 90a5c9
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
Packit 90a5c9
   symbol of state STATE-NUM.  */
Packit 90a5c9
static const yytype_uint8 yystos[] =
Packit 90a5c9
{
Packit 90a5c9
       0,     5,     6,     7,    46,     3,     4,     7,     8,     9,
Packit 90a5c9
      13,    14,    16,    18,    38,    39,    47,    48,    53,    54,
Packit 90a5c9
      56,    58,     7,    10,    51,    52,    53,    56,     0,    39,
Packit 90a5c9
      54,    17,    51,     9,    47,    47,    36,    37,    15,    20,
Packit 90a5c9
      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
Packit 90a5c9
      31,    32,    33,    34,    35,    52,    54,    17,    19,    44,
Packit 90a5c9
      40,    47,    47,    54,    54,    54,    54,    54,    54,    54,
Packit 90a5c9
      11,    12,    55,    55,     9,    41,    49,    57,    54,    54,
Packit 90a5c9
      54,    54,    54,    54,    54,    40,    51,    39,    50,    54,
Packit 90a5c9
      19,    54,    42,    43,    40,    54
Packit 90a5c9
};
Packit 90a5c9
Packit 90a5c9
#define yyerrok		(yyerrstatus = 0)
Packit 90a5c9
#define yyclearin	(yychar = YYEMPTY)
Packit 90a5c9
#define YYEMPTY		(-2)
Packit 90a5c9
#define YYEOF		0
Packit 90a5c9
Packit 90a5c9
#define YYACCEPT	goto yyacceptlab
Packit 90a5c9
#define YYABORT		goto yyabortlab
Packit 90a5c9
#define YYERROR		goto yyerrorlab
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/* Like YYERROR except do call yyerror.  This remains here temporarily
Packit 90a5c9
   to ease the transition to the new meaning of YYERROR, for GCC.
Packit 90a5c9
   Once GCC version 2 has supplanted version 1, this can go.  However,
Packit 90a5c9
   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
Packit 90a5c9
   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
Packit 90a5c9
   discussed.  */
Packit 90a5c9
Packit 90a5c9
#define YYFAIL		goto yyerrlab
Packit 90a5c9
#if defined YYFAIL
Packit 90a5c9
  /* This is here to suppress warnings from the GCC cpp's
Packit 90a5c9
     -Wunused-macros.  Normally we don't worry about that warning, but
Packit 90a5c9
     some users do, and we want to make it easy for users to remove
Packit 90a5c9
     YYFAIL uses, which will produce warnings from Bison 2.5.  */
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#define YYRECOVERING()  (!!yyerrstatus)
Packit 90a5c9
Packit 90a5c9
#define YYBACKUP(Token, Value)					\
Packit 90a5c9
do								\
Packit 90a5c9
  if (yychar == YYEMPTY && yylen == 1)				\
Packit 90a5c9
    {								\
Packit 90a5c9
      yychar = (Token);						\
Packit 90a5c9
      yylval = (Value);						\
Packit 90a5c9
      YYPOPSTACK (1);						\
Packit 90a5c9
      goto yybackup;						\
Packit 90a5c9
    }								\
Packit 90a5c9
  else								\
Packit 90a5c9
    {								\
Packit 90a5c9
      yyerror (ctx, YY_("syntax error: cannot back up")); \
Packit 90a5c9
      YYERROR;							\
Packit 90a5c9
    }								\
Packit 90a5c9
while (YYID (0))
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
#define YYTERROR	1
Packit 90a5c9
#define YYERRCODE	256
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
Packit 90a5c9
   If N is 0, then set CURRENT to the empty location which ends
Packit 90a5c9
   the previous symbol: RHS[0] (always defined).  */
Packit 90a5c9
Packit 90a5c9
#define YYRHSLOC(Rhs, K) ((Rhs)[K])
Packit 90a5c9
#ifndef YYLLOC_DEFAULT
Packit 90a5c9
# define YYLLOC_DEFAULT(Current, Rhs, N)				\
Packit 90a5c9
    do									\
Packit 90a5c9
      if (YYID (N))                                                    \
Packit 90a5c9
	{								\
Packit 90a5c9
	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
Packit 90a5c9
	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
Packit 90a5c9
	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
Packit 90a5c9
	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
Packit 90a5c9
	}								\
Packit 90a5c9
      else								\
Packit 90a5c9
	{								\
Packit 90a5c9
	  (Current).first_line   = (Current).last_line   =		\
Packit 90a5c9
	    YYRHSLOC (Rhs, 0).last_line;				\
Packit 90a5c9
	  (Current).first_column = (Current).last_column =		\
Packit 90a5c9
	    YYRHSLOC (Rhs, 0).last_column;				\
Packit 90a5c9
	}								\
Packit 90a5c9
    while (YYID (0))
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/* This macro is provided for backward compatibility. */
Packit 90a5c9
Packit 90a5c9
#ifndef YY_LOCATION_PRINT
Packit 90a5c9
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/* YYLEX -- calling `yylex' with the right arguments.  */
Packit 90a5c9
Packit 90a5c9
#ifdef YYLEX_PARAM
Packit 90a5c9
# define YYLEX yylex (&yylval, YYLEX_PARAM)
Packit 90a5c9
#else
Packit 90a5c9
# define YYLEX yylex (&yylval, yyscanner)
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* Enable debugging if requested.  */
Packit 90a5c9
#if YYDEBUG
Packit 90a5c9
Packit 90a5c9
# ifndef YYFPRINTF
Packit 90a5c9
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
Packit 90a5c9
#  define YYFPRINTF fprintf
Packit 90a5c9
# endif
Packit 90a5c9
Packit 90a5c9
# define YYDPRINTF(Args)			\
Packit 90a5c9
do {						\
Packit 90a5c9
  if (yydebug)					\
Packit 90a5c9
    YYFPRINTF Args;				\
Packit 90a5c9
} while (YYID (0))
Packit 90a5c9
Packit 90a5c9
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
Packit 90a5c9
do {									  \
Packit 90a5c9
  if (yydebug)								  \
Packit 90a5c9
    {									  \
Packit 90a5c9
      YYFPRINTF (stderr, "%s ", Title);					  \
Packit 90a5c9
      yy_symbol_print (stderr,						  \
Packit 90a5c9
		  Type, Value, ctx); \
Packit 90a5c9
      YYFPRINTF (stderr, "\n");						  \
Packit 90a5c9
    }									  \
Packit 90a5c9
} while (YYID (0))
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/*--------------------------------.
Packit 90a5c9
| Print this symbol on YYOUTPUT.  |
Packit 90a5c9
`--------------------------------*/
Packit 90a5c9
Packit 90a5c9
/*ARGSUSED*/
Packit 90a5c9
#if (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
static void
Packit 90a5c9
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, ap_expr_parse_ctx_t *ctx)
Packit 90a5c9
#else
Packit 90a5c9
static void
Packit 90a5c9
yy_symbol_value_print (yyoutput, yytype, yyvaluep, ctx)
Packit 90a5c9
    FILE *yyoutput;
Packit 90a5c9
    int yytype;
Packit 90a5c9
    YYSTYPE const * const yyvaluep;
Packit 90a5c9
    ap_expr_parse_ctx_t *ctx;
Packit 90a5c9
#endif
Packit 90a5c9
{
Packit 90a5c9
  if (!yyvaluep)
Packit 90a5c9
    return;
Packit 90a5c9
  YYUSE (ctx);
Packit 90a5c9
# ifdef YYPRINT
Packit 90a5c9
  if (yytype < YYNTOKENS)
Packit 90a5c9
    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
Packit 90a5c9
# else
Packit 90a5c9
  YYUSE (yyoutput);
Packit 90a5c9
# endif
Packit 90a5c9
  switch (yytype)
Packit 90a5c9
    {
Packit 90a5c9
      default:
Packit 90a5c9
	break;
Packit 90a5c9
    }
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/*--------------------------------.
Packit 90a5c9
| Print this symbol on YYOUTPUT.  |
Packit 90a5c9
`--------------------------------*/
Packit 90a5c9
Packit 90a5c9
#if (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
static void
Packit 90a5c9
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, ap_expr_parse_ctx_t *ctx)
Packit 90a5c9
#else
Packit 90a5c9
static void
Packit 90a5c9
yy_symbol_print (yyoutput, yytype, yyvaluep, ctx)
Packit 90a5c9
    FILE *yyoutput;
Packit 90a5c9
    int yytype;
Packit 90a5c9
    YYSTYPE const * const yyvaluep;
Packit 90a5c9
    ap_expr_parse_ctx_t *ctx;
Packit 90a5c9
#endif
Packit 90a5c9
{
Packit 90a5c9
  if (yytype < YYNTOKENS)
Packit 90a5c9
    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
Packit 90a5c9
  else
Packit 90a5c9
    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
Packit 90a5c9
Packit 90a5c9
  yy_symbol_value_print (yyoutput, yytype, yyvaluep, ctx);
Packit 90a5c9
  YYFPRINTF (yyoutput, ")");
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
/*------------------------------------------------------------------.
Packit 90a5c9
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
Packit 90a5c9
| TOP (included).                                                   |
Packit 90a5c9
`------------------------------------------------------------------*/
Packit 90a5c9
Packit 90a5c9
#if (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
static void
Packit 90a5c9
yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
Packit 90a5c9
#else
Packit 90a5c9
static void
Packit 90a5c9
yy_stack_print (yybottom, yytop)
Packit 90a5c9
    yytype_int16 *yybottom;
Packit 90a5c9
    yytype_int16 *yytop;
Packit 90a5c9
#endif
Packit 90a5c9
{
Packit 90a5c9
  YYFPRINTF (stderr, "Stack now");
Packit 90a5c9
  for (; yybottom <= yytop; yybottom++)
Packit 90a5c9
    {
Packit 90a5c9
      int yybot = *yybottom;
Packit 90a5c9
      YYFPRINTF (stderr, " %d", yybot);
Packit 90a5c9
    }
Packit 90a5c9
  YYFPRINTF (stderr, "\n");
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
# define YY_STACK_PRINT(Bottom, Top)				\
Packit 90a5c9
do {								\
Packit 90a5c9
  if (yydebug)							\
Packit 90a5c9
    yy_stack_print ((Bottom), (Top));				\
Packit 90a5c9
} while (YYID (0))
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/*------------------------------------------------.
Packit 90a5c9
| Report that the YYRULE is going to be reduced.  |
Packit 90a5c9
`------------------------------------------------*/
Packit 90a5c9
Packit 90a5c9
#if (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
static void
Packit 90a5c9
yy_reduce_print (YYSTYPE *yyvsp, int yyrule, ap_expr_parse_ctx_t *ctx)
Packit 90a5c9
#else
Packit 90a5c9
static void
Packit 90a5c9
yy_reduce_print (yyvsp, yyrule, ctx)
Packit 90a5c9
    YYSTYPE *yyvsp;
Packit 90a5c9
    int yyrule;
Packit 90a5c9
    ap_expr_parse_ctx_t *ctx;
Packit 90a5c9
#endif
Packit 90a5c9
{
Packit 90a5c9
  int yynrhs = yyr2[yyrule];
Packit 90a5c9
  int yyi;
Packit 90a5c9
  unsigned long int yylno = yyrline[yyrule];
Packit 90a5c9
  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
Packit 90a5c9
	     yyrule - 1, yylno);
Packit 90a5c9
  /* The symbols being reduced.  */
Packit 90a5c9
  for (yyi = 0; yyi < yynrhs; yyi++)
Packit 90a5c9
    {
Packit 90a5c9
      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
Packit 90a5c9
      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
Packit 90a5c9
		       &(yyvsp[(yyi + 1) - (yynrhs)])
Packit 90a5c9
		       		       , ctx);
Packit 90a5c9
      YYFPRINTF (stderr, "\n");
Packit 90a5c9
    }
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
# define YY_REDUCE_PRINT(Rule)		\
Packit 90a5c9
do {					\
Packit 90a5c9
  if (yydebug)				\
Packit 90a5c9
    yy_reduce_print (yyvsp, Rule, ctx); \
Packit 90a5c9
} while (YYID (0))
Packit 90a5c9
Packit 90a5c9
/* Nonzero means print parse trace.  It is left uninitialized so that
Packit 90a5c9
   multiple parsers can coexist.  */
Packit 90a5c9
int yydebug;
Packit 90a5c9
#else /* !YYDEBUG */
Packit 90a5c9
# define YYDPRINTF(Args)
Packit 90a5c9
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
Packit 90a5c9
# define YY_STACK_PRINT(Bottom, Top)
Packit 90a5c9
# define YY_REDUCE_PRINT(Rule)
Packit 90a5c9
#endif /* !YYDEBUG */
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/* YYINITDEPTH -- initial size of the parser's stacks.  */
Packit 90a5c9
#ifndef	YYINITDEPTH
Packit 90a5c9
# define YYINITDEPTH 200
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
Packit 90a5c9
   if the built-in stack extension method is used).
Packit 90a5c9
Packit 90a5c9
   Do not make this value too large; the results are undefined if
Packit 90a5c9
   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
Packit 90a5c9
   evaluated with infinite-precision integer arithmetic.  */
Packit 90a5c9
Packit 90a5c9
#ifndef YYMAXDEPTH
Packit 90a5c9
# define YYMAXDEPTH 10000
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
#if YYERROR_VERBOSE
Packit 90a5c9
Packit 90a5c9
# ifndef yystrlen
Packit 90a5c9
#  if defined __GLIBC__ && defined _STRING_H
Packit 90a5c9
#   define yystrlen strlen
Packit 90a5c9
#  else
Packit 90a5c9
/* Return the length of YYSTR.  */
Packit 90a5c9
#if (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
static YYSIZE_T
Packit 90a5c9
yystrlen (const char *yystr)
Packit 90a5c9
#else
Packit 90a5c9
static YYSIZE_T
Packit 90a5c9
yystrlen (yystr)
Packit 90a5c9
    const char *yystr;
Packit 90a5c9
#endif
Packit 90a5c9
{
Packit 90a5c9
  YYSIZE_T yylen;
Packit 90a5c9
  for (yylen = 0; yystr[yylen]; yylen++)
Packit 90a5c9
    continue;
Packit 90a5c9
  return yylen;
Packit 90a5c9
}
Packit 90a5c9
#  endif
Packit 90a5c9
# endif
Packit 90a5c9
Packit 90a5c9
# ifndef yystpcpy
Packit 90a5c9
#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
Packit 90a5c9
#   define yystpcpy stpcpy
Packit 90a5c9
#  else
Packit 90a5c9
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
Packit 90a5c9
   YYDEST.  */
Packit 90a5c9
#if (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
static char *
Packit 90a5c9
yystpcpy (char *yydest, const char *yysrc)
Packit 90a5c9
#else
Packit 90a5c9
static char *
Packit 90a5c9
yystpcpy (yydest, yysrc)
Packit 90a5c9
    char *yydest;
Packit 90a5c9
    const char *yysrc;
Packit 90a5c9
#endif
Packit 90a5c9
{
Packit 90a5c9
  char *yyd = yydest;
Packit 90a5c9
  const char *yys = yysrc;
Packit 90a5c9
Packit 90a5c9
  while ((*yyd++ = *yys++) != '\0')
Packit 90a5c9
    continue;
Packit 90a5c9
Packit 90a5c9
  return yyd - 1;
Packit 90a5c9
}
Packit 90a5c9
#  endif
Packit 90a5c9
# endif
Packit 90a5c9
Packit 90a5c9
# ifndef yytnamerr
Packit 90a5c9
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
Packit 90a5c9
   quotes and backslashes, so that it's suitable for yyerror.  The
Packit 90a5c9
   heuristic is that double-quoting is unnecessary unless the string
Packit 90a5c9
   contains an apostrophe, a comma, or backslash (other than
Packit 90a5c9
   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
Packit 90a5c9
   null, do not copy; instead, return the length of what the result
Packit 90a5c9
   would have been.  */
Packit 90a5c9
static YYSIZE_T
Packit 90a5c9
yytnamerr (char *yyres, const char *yystr)
Packit 90a5c9
{
Packit 90a5c9
  if (*yystr == '"')
Packit 90a5c9
    {
Packit 90a5c9
      YYSIZE_T yyn = 0;
Packit 90a5c9
      char const *yyp = yystr;
Packit 90a5c9
Packit 90a5c9
      for (;;)
Packit 90a5c9
	switch (*++yyp)
Packit 90a5c9
	  {
Packit 90a5c9
	  case '\'':
Packit 90a5c9
	  case ',':
Packit 90a5c9
	    goto do_not_strip_quotes;
Packit 90a5c9
Packit 90a5c9
	  case '\\':
Packit 90a5c9
	    if (*++yyp != '\\')
Packit 90a5c9
	      goto do_not_strip_quotes;
Packit 90a5c9
	    /* Fall through.  */
Packit 90a5c9
	  default:
Packit 90a5c9
	    if (yyres)
Packit 90a5c9
	      yyres[yyn] = *yyp;
Packit 90a5c9
	    yyn++;
Packit 90a5c9
	    break;
Packit 90a5c9
Packit 90a5c9
	  case '"':
Packit 90a5c9
	    if (yyres)
Packit 90a5c9
	      yyres[yyn] = '\0';
Packit 90a5c9
	    return yyn;
Packit 90a5c9
	  }
Packit 90a5c9
    do_not_strip_quotes: ;
Packit 90a5c9
    }
Packit 90a5c9
Packit 90a5c9
  if (! yyres)
Packit 90a5c9
    return yystrlen (yystr);
Packit 90a5c9
Packit 90a5c9
  return yystpcpy (yyres, yystr) - yyres;
Packit 90a5c9
}
Packit 90a5c9
# endif
Packit 90a5c9
Packit 90a5c9
/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
Packit 90a5c9
   about the unexpected token YYTOKEN for the state stack whose top is
Packit 90a5c9
   YYSSP.
Packit 90a5c9
Packit 90a5c9
   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
Packit 90a5c9
   not large enough to hold the message.  In that case, also set
Packit 90a5c9
   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
Packit 90a5c9
   required number of bytes is too large to store.  */
Packit 90a5c9
static int
Packit 90a5c9
yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
Packit 90a5c9
                yytype_int16 *yyssp, int yytoken)
Packit 90a5c9
{
Packit 90a5c9
  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
Packit 90a5c9
  YYSIZE_T yysize = yysize0;
Packit 90a5c9
  YYSIZE_T yysize1;
Packit 90a5c9
  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
Packit 90a5c9
  /* Internationalized format string. */
Packit 90a5c9
  const char *yyformat = 0;
Packit 90a5c9
  /* Arguments of yyformat. */
Packit 90a5c9
  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
Packit 90a5c9
  /* Number of reported tokens (one for the "unexpected", one per
Packit 90a5c9
     "expected"). */
Packit 90a5c9
  int yycount = 0;
Packit 90a5c9
Packit 90a5c9
  /* There are many possibilities here to consider:
Packit 90a5c9
     - Assume YYFAIL is not used.  It's too flawed to consider.  See
Packit 90a5c9
       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
Packit 90a5c9
       for details.  YYERROR is fine as it does not invoke this
Packit 90a5c9
       function.
Packit 90a5c9
     - If this state is a consistent state with a default action, then
Packit 90a5c9
       the only way this function was invoked is if the default action
Packit 90a5c9
       is an error action.  In that case, don't check for expected
Packit 90a5c9
       tokens because there are none.
Packit 90a5c9
     - The only way there can be no lookahead present (in yychar) is if
Packit 90a5c9
       this state is a consistent state with a default action.  Thus,
Packit 90a5c9
       detecting the absence of a lookahead is sufficient to determine
Packit 90a5c9
       that there is no unexpected or expected token to report.  In that
Packit 90a5c9
       case, just report a simple "syntax error".
Packit 90a5c9
     - Don't assume there isn't a lookahead just because this state is a
Packit 90a5c9
       consistent state with a default action.  There might have been a
Packit 90a5c9
       previous inconsistent state, consistent state with a non-default
Packit 90a5c9
       action, or user semantic action that manipulated yychar.
Packit 90a5c9
     - Of course, the expected token list depends on states to have
Packit 90a5c9
       correct lookahead information, and it depends on the parser not
Packit 90a5c9
       to perform extra reductions after fetching a lookahead from the
Packit 90a5c9
       scanner and before detecting a syntax error.  Thus, state merging
Packit 90a5c9
       (from LALR or IELR) and default reductions corrupt the expected
Packit 90a5c9
       token list.  However, the list is correct for canonical LR with
Packit 90a5c9
       one exception: it will still contain any token that will not be
Packit 90a5c9
       accepted due to an error action in a later state.
Packit 90a5c9
  */
Packit 90a5c9
  if (yytoken != YYEMPTY)
Packit 90a5c9
    {
Packit 90a5c9
      int yyn = yypact[*yyssp];
Packit 90a5c9
      yyarg[yycount++] = yytname[yytoken];
Packit 90a5c9
      if (!yypact_value_is_default (yyn))
Packit 90a5c9
        {
Packit 90a5c9
          /* Start YYX at -YYN if negative to avoid negative indexes in
Packit 90a5c9
             YYCHECK.  In other words, skip the first -YYN actions for
Packit 90a5c9
             this state because they are default actions.  */
Packit 90a5c9
          int yyxbegin = yyn < 0 ? -yyn : 0;
Packit 90a5c9
          /* Stay within bounds of both yycheck and yytname.  */
Packit 90a5c9
          int yychecklim = YYLAST - yyn + 1;
Packit 90a5c9
          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
Packit 90a5c9
          int yyx;
Packit 90a5c9
Packit 90a5c9
          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
Packit 90a5c9
            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
Packit 90a5c9
                && !yytable_value_is_error (yytable[yyx + yyn]))
Packit 90a5c9
              {
Packit 90a5c9
                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
Packit 90a5c9
                  {
Packit 90a5c9
                    yycount = 1;
Packit 90a5c9
                    yysize = yysize0;
Packit 90a5c9
                    break;
Packit 90a5c9
                  }
Packit 90a5c9
                yyarg[yycount++] = yytname[yyx];
Packit 90a5c9
                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
Packit 90a5c9
                if (! (yysize <= yysize1
Packit 90a5c9
                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
Packit 90a5c9
                  return 2;
Packit 90a5c9
                yysize = yysize1;
Packit 90a5c9
              }
Packit 90a5c9
        }
Packit 90a5c9
    }
Packit 90a5c9
Packit 90a5c9
  switch (yycount)
Packit 90a5c9
    {
Packit 90a5c9
# define YYCASE_(N, S)                      \
Packit 90a5c9
      case N:                               \
Packit 90a5c9
        yyformat = S;                       \
Packit 90a5c9
      break
Packit 90a5c9
      YYCASE_(0, YY_("syntax error"));
Packit 90a5c9
      YYCASE_(1, YY_("syntax error, unexpected %s"));
Packit 90a5c9
      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
Packit 90a5c9
      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
Packit 90a5c9
      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
Packit 90a5c9
      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
Packit 90a5c9
# undef YYCASE_
Packit 90a5c9
    }
Packit 90a5c9
Packit 90a5c9
  yysize1 = yysize + yystrlen (yyformat);
Packit 90a5c9
  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
Packit 90a5c9
    return 2;
Packit 90a5c9
  yysize = yysize1;
Packit 90a5c9
Packit 90a5c9
  if (*yymsg_alloc < yysize)
Packit 90a5c9
    {
Packit 90a5c9
      *yymsg_alloc = 2 * yysize;
Packit 90a5c9
      if (! (yysize <= *yymsg_alloc
Packit 90a5c9
             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
Packit 90a5c9
        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
Packit 90a5c9
      return 1;
Packit 90a5c9
    }
Packit 90a5c9
Packit 90a5c9
  /* Avoid sprintf, as that infringes on the user's name space.
Packit 90a5c9
     Don't have undefined behavior even if the translation
Packit 90a5c9
     produced a string with the wrong number of "%s"s.  */
Packit 90a5c9
  {
Packit 90a5c9
    char *yyp = *yymsg;
Packit 90a5c9
    int yyi = 0;
Packit 90a5c9
    while ((*yyp = *yyformat) != '\0')
Packit 90a5c9
      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
Packit 90a5c9
        {
Packit 90a5c9
          yyp += yytnamerr (yyp, yyarg[yyi++]);
Packit 90a5c9
          yyformat += 2;
Packit 90a5c9
        }
Packit 90a5c9
      else
Packit 90a5c9
        {
Packit 90a5c9
          yyp++;
Packit 90a5c9
          yyformat++;
Packit 90a5c9
        }
Packit 90a5c9
  }
Packit 90a5c9
  return 0;
Packit 90a5c9
}
Packit 90a5c9
#endif /* YYERROR_VERBOSE */
Packit 90a5c9
Packit 90a5c9
/*-----------------------------------------------.
Packit 90a5c9
| Release the memory associated to this symbol.  |
Packit 90a5c9
`-----------------------------------------------*/
Packit 90a5c9
Packit 90a5c9
/*ARGSUSED*/
Packit 90a5c9
#if (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
static void
Packit 90a5c9
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, ap_expr_parse_ctx_t *ctx)
Packit 90a5c9
#else
Packit 90a5c9
static void
Packit 90a5c9
yydestruct (yymsg, yytype, yyvaluep, ctx)
Packit 90a5c9
    const char *yymsg;
Packit 90a5c9
    int yytype;
Packit 90a5c9
    YYSTYPE *yyvaluep;
Packit 90a5c9
    ap_expr_parse_ctx_t *ctx;
Packit 90a5c9
#endif
Packit 90a5c9
{
Packit 90a5c9
  YYUSE (yyvaluep);
Packit 90a5c9
  YYUSE (ctx);
Packit 90a5c9
Packit 90a5c9
  if (!yymsg)
Packit 90a5c9
    yymsg = "Deleting";
Packit 90a5c9
  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
Packit 90a5c9
Packit 90a5c9
  switch (yytype)
Packit 90a5c9
    {
Packit 90a5c9
Packit 90a5c9
      default:
Packit 90a5c9
	break;
Packit 90a5c9
    }
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/* Prevent warnings from -Wmissing-prototypes.  */
Packit 90a5c9
#ifdef YYPARSE_PARAM
Packit 90a5c9
#if defined __STDC__ || defined __cplusplus
Packit 90a5c9
int yyparse (void *YYPARSE_PARAM);
Packit 90a5c9
#else
Packit 90a5c9
int yyparse ();
Packit 90a5c9
#endif
Packit 90a5c9
#else /* ! YYPARSE_PARAM */
Packit 90a5c9
#if defined __STDC__ || defined __cplusplus
Packit 90a5c9
int yyparse (ap_expr_parse_ctx_t *ctx);
Packit 90a5c9
#else
Packit 90a5c9
int yyparse ();
Packit 90a5c9
#endif
Packit 90a5c9
#endif /* ! YYPARSE_PARAM */
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/*----------.
Packit 90a5c9
| yyparse.  |
Packit 90a5c9
`----------*/
Packit 90a5c9
Packit 90a5c9
#ifdef YYPARSE_PARAM
Packit 90a5c9
#if (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
int
Packit 90a5c9
yyparse (void *YYPARSE_PARAM)
Packit 90a5c9
#else
Packit 90a5c9
int
Packit 90a5c9
yyparse (YYPARSE_PARAM)
Packit 90a5c9
    void *YYPARSE_PARAM;
Packit 90a5c9
#endif
Packit 90a5c9
#else /* ! YYPARSE_PARAM */
Packit 90a5c9
#if (defined __STDC__ || defined __C99__FUNC__ \
Packit 90a5c9
     || defined __cplusplus || defined _MSC_VER)
Packit 90a5c9
int
Packit 90a5c9
yyparse (ap_expr_parse_ctx_t *ctx)
Packit 90a5c9
#else
Packit 90a5c9
int
Packit 90a5c9
yyparse (ctx)
Packit 90a5c9
    ap_expr_parse_ctx_t *ctx;
Packit 90a5c9
#endif
Packit 90a5c9
#endif
Packit 90a5c9
{
Packit 90a5c9
/* The lookahead symbol.  */
Packit 90a5c9
int yychar;
Packit 90a5c9
Packit 90a5c9
/* The semantic value of the lookahead symbol.  */
Packit 90a5c9
YYSTYPE yylval;
Packit 90a5c9
Packit 90a5c9
    /* Number of syntax errors so far.  */
Packit 90a5c9
    int yynerrs;
Packit 90a5c9
Packit 90a5c9
    int yystate;
Packit 90a5c9
    /* Number of tokens to shift before error messages enabled.  */
Packit 90a5c9
    int yyerrstatus;
Packit 90a5c9
Packit 90a5c9
    /* The stacks and their tools:
Packit 90a5c9
       `yyss': related to states.
Packit 90a5c9
       `yyvs': related to semantic values.
Packit 90a5c9
Packit 90a5c9
       Refer to the stacks thru separate pointers, to allow yyoverflow
Packit 90a5c9
       to reallocate them elsewhere.  */
Packit 90a5c9
Packit 90a5c9
    /* The state stack.  */
Packit 90a5c9
    yytype_int16 yyssa[YYINITDEPTH];
Packit 90a5c9
    yytype_int16 *yyss;
Packit 90a5c9
    yytype_int16 *yyssp;
Packit 90a5c9
Packit 90a5c9
    /* The semantic value stack.  */
Packit 90a5c9
    YYSTYPE yyvsa[YYINITDEPTH];
Packit 90a5c9
    YYSTYPE *yyvs;
Packit 90a5c9
    YYSTYPE *yyvsp;
Packit 90a5c9
Packit 90a5c9
    YYSIZE_T yystacksize;
Packit 90a5c9
Packit 90a5c9
  int yyn;
Packit 90a5c9
  int yyresult;
Packit 90a5c9
  /* Lookahead token as an internal (translated) token number.  */
Packit 90a5c9
  int yytoken;
Packit 90a5c9
  /* The variables used to return semantic value and location from the
Packit 90a5c9
     action routines.  */
Packit 90a5c9
  YYSTYPE yyval;
Packit 90a5c9
Packit 90a5c9
#if YYERROR_VERBOSE
Packit 90a5c9
  /* Buffer for error messages, and its allocated size.  */
Packit 90a5c9
  char yymsgbuf[128];
Packit 90a5c9
  char *yymsg = yymsgbuf;
Packit 90a5c9
  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
Packit 90a5c9
Packit 90a5c9
  /* The number of symbols on the RHS of the reduced rule.
Packit 90a5c9
     Keep to zero when no symbol should be popped.  */
Packit 90a5c9
  int yylen = 0;
Packit 90a5c9
Packit 90a5c9
  yytoken = 0;
Packit 90a5c9
  yyss = yyssa;
Packit 90a5c9
  yyvs = yyvsa;
Packit 90a5c9
  yystacksize = YYINITDEPTH;
Packit 90a5c9
Packit 90a5c9
  YYDPRINTF ((stderr, "Starting parse\n"));
Packit 90a5c9
Packit 90a5c9
  yystate = 0;
Packit 90a5c9
  yyerrstatus = 0;
Packit 90a5c9
  yynerrs = 0;
Packit 90a5c9
  yychar = YYEMPTY; /* Cause a token to be read.  */
Packit 90a5c9
Packit 90a5c9
  /* Initialize stack pointers.
Packit 90a5c9
     Waste one element of value and location stack
Packit 90a5c9
     so that they stay on the same level as the state stack.
Packit 90a5c9
     The wasted elements are never initialized.  */
Packit 90a5c9
  yyssp = yyss;
Packit 90a5c9
  yyvsp = yyvs;
Packit 90a5c9
Packit 90a5c9
  goto yysetstate;
Packit 90a5c9
Packit 90a5c9
/*------------------------------------------------------------.
Packit 90a5c9
| yynewstate -- Push a new state, which is found in yystate.  |
Packit 90a5c9
`------------------------------------------------------------*/
Packit 90a5c9
 yynewstate:
Packit 90a5c9
  /* In all cases, when you get here, the value and location stacks
Packit 90a5c9
     have just been pushed.  So pushing a state here evens the stacks.  */
Packit 90a5c9
  yyssp++;
Packit 90a5c9
Packit 90a5c9
 yysetstate:
Packit 90a5c9
  *yyssp = yystate;
Packit 90a5c9
Packit 90a5c9
  if (yyss + yystacksize - 1 <= yyssp)
Packit 90a5c9
    {
Packit 90a5c9
      /* Get the current used size of the three stacks, in elements.  */
Packit 90a5c9
      YYSIZE_T yysize = yyssp - yyss + 1;
Packit 90a5c9
Packit 90a5c9
#ifdef yyoverflow
Packit 90a5c9
      {
Packit 90a5c9
	/* Give user a chance to reallocate the stack.  Use copies of
Packit 90a5c9
	   these so that the &'s don't force the real ones into
Packit 90a5c9
	   memory.  */
Packit 90a5c9
	YYSTYPE *yyvs1 = yyvs;
Packit 90a5c9
	yytype_int16 *yyss1 = yyss;
Packit 90a5c9
Packit 90a5c9
	/* Each stack pointer address is followed by the size of the
Packit 90a5c9
	   data in use in that stack, in bytes.  This used to be a
Packit 90a5c9
	   conditional around just the two extra args, but that might
Packit 90a5c9
	   be undefined if yyoverflow is a macro.  */
Packit 90a5c9
	yyoverflow (YY_("memory exhausted"),
Packit 90a5c9
		    &yyss1, yysize * sizeof (*yyssp),
Packit 90a5c9
		    &yyvs1, yysize * sizeof (*yyvsp),
Packit 90a5c9
		    &yystacksize);
Packit 90a5c9
Packit 90a5c9
	yyss = yyss1;
Packit 90a5c9
	yyvs = yyvs1;
Packit 90a5c9
      }
Packit 90a5c9
#else /* no yyoverflow */
Packit 90a5c9
# ifndef YYSTACK_RELOCATE
Packit 90a5c9
      goto yyexhaustedlab;
Packit 90a5c9
# else
Packit 90a5c9
      /* Extend the stack our own way.  */
Packit 90a5c9
      if (YYMAXDEPTH <= yystacksize)
Packit 90a5c9
	goto yyexhaustedlab;
Packit 90a5c9
      yystacksize *= 2;
Packit 90a5c9
      if (YYMAXDEPTH < yystacksize)
Packit 90a5c9
	yystacksize = YYMAXDEPTH;
Packit 90a5c9
Packit 90a5c9
      {
Packit 90a5c9
	yytype_int16 *yyss1 = yyss;
Packit 90a5c9
	union yyalloc *yyptr =
Packit 90a5c9
	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
Packit 90a5c9
	if (! yyptr)
Packit 90a5c9
	  goto yyexhaustedlab;
Packit 90a5c9
	YYSTACK_RELOCATE (yyss_alloc, yyss);
Packit 90a5c9
	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
Packit 90a5c9
#  undef YYSTACK_RELOCATE
Packit 90a5c9
	if (yyss1 != yyssa)
Packit 90a5c9
	  YYSTACK_FREE (yyss1);
Packit 90a5c9
      }
Packit 90a5c9
# endif
Packit 90a5c9
#endif /* no yyoverflow */
Packit 90a5c9
Packit 90a5c9
      yyssp = yyss + yysize - 1;
Packit 90a5c9
      yyvsp = yyvs + yysize - 1;
Packit 90a5c9
Packit 90a5c9
      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
Packit 90a5c9
		  (unsigned long int) yystacksize));
Packit 90a5c9
Packit 90a5c9
      if (yyss + yystacksize - 1 <= yyssp)
Packit 90a5c9
	YYABORT;
Packit 90a5c9
    }
Packit 90a5c9
Packit 90a5c9
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
Packit 90a5c9
Packit 90a5c9
  if (yystate == YYFINAL)
Packit 90a5c9
    YYACCEPT;
Packit 90a5c9
Packit 90a5c9
  goto yybackup;
Packit 90a5c9
Packit 90a5c9
/*-----------.
Packit 90a5c9
| yybackup.  |
Packit 90a5c9
`-----------*/
Packit 90a5c9
yybackup:
Packit 90a5c9
Packit 90a5c9
  /* Do appropriate processing given the current state.  Read a
Packit 90a5c9
     lookahead token if we need one and don't already have one.  */
Packit 90a5c9
Packit 90a5c9
  /* First try to decide what to do without reference to lookahead token.  */
Packit 90a5c9
  yyn = yypact[yystate];
Packit 90a5c9
  if (yypact_value_is_default (yyn))
Packit 90a5c9
    goto yydefault;
Packit 90a5c9
Packit 90a5c9
  /* Not known => get a lookahead token if don't already have one.  */
Packit 90a5c9
Packit 90a5c9
  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
Packit 90a5c9
  if (yychar == YYEMPTY)
Packit 90a5c9
    {
Packit 90a5c9
      YYDPRINTF ((stderr, "Reading a token: "));
Packit 90a5c9
      yychar = YYLEX;
Packit 90a5c9
    }
Packit 90a5c9
Packit 90a5c9
  if (yychar <= YYEOF)
Packit 90a5c9
    {
Packit 90a5c9
      yychar = yytoken = YYEOF;
Packit 90a5c9
      YYDPRINTF ((stderr, "Now at end of input.\n"));
Packit 90a5c9
    }
Packit 90a5c9
  else
Packit 90a5c9
    {
Packit 90a5c9
      yytoken = YYTRANSLATE (yychar);
Packit 90a5c9
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
Packit 90a5c9
    }
Packit 90a5c9
Packit 90a5c9
  /* If the proper action on seeing token YYTOKEN is to reduce or to
Packit 90a5c9
     detect an error, take that action.  */
Packit 90a5c9
  yyn += yytoken;
Packit 90a5c9
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
Packit 90a5c9
    goto yydefault;
Packit 90a5c9
  yyn = yytable[yyn];
Packit 90a5c9
  if (yyn <= 0)
Packit 90a5c9
    {
Packit 90a5c9
      if (yytable_value_is_error (yyn))
Packit 90a5c9
        goto yyerrlab;
Packit 90a5c9
      yyn = -yyn;
Packit 90a5c9
      goto yyreduce;
Packit 90a5c9
    }
Packit 90a5c9
Packit 90a5c9
  /* Count tokens shifted since error; after three, turn off error
Packit 90a5c9
     status.  */
Packit 90a5c9
  if (yyerrstatus)
Packit 90a5c9
    yyerrstatus--;
Packit 90a5c9
Packit 90a5c9
  /* Shift the lookahead token.  */
Packit 90a5c9
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
Packit 90a5c9
Packit 90a5c9
  /* Discard the shifted token.  */
Packit 90a5c9
  yychar = YYEMPTY;
Packit 90a5c9
Packit 90a5c9
  yystate = yyn;
Packit 90a5c9
  *++yyvsp = yylval;
Packit 90a5c9
Packit 90a5c9
  goto yynewstate;
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/*-----------------------------------------------------------.
Packit 90a5c9
| yydefault -- do the default action for the current state.  |
Packit 90a5c9
`-----------------------------------------------------------*/
Packit 90a5c9
yydefault:
Packit 90a5c9
  yyn = yydefact[yystate];
Packit 90a5c9
  if (yyn == 0)
Packit 90a5c9
    goto yyerrlab;
Packit 90a5c9
  goto yyreduce;
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/*-----------------------------.
Packit 90a5c9
| yyreduce -- Do a reduction.  |
Packit 90a5c9
`-----------------------------*/
Packit 90a5c9
yyreduce:
Packit 90a5c9
  /* yyn is the number of a rule to reduce with.  */
Packit 90a5c9
  yylen = yyr2[yyn];
Packit 90a5c9
Packit 90a5c9
  /* If YYLEN is nonzero, implement the default value of the action:
Packit 90a5c9
     `$$ = $1'.
Packit 90a5c9
Packit 90a5c9
     Otherwise, the following line sets YYVAL to garbage.
Packit 90a5c9
     This behavior is undocumented and Bison
Packit 90a5c9
     users should not rely upon it.  Assigning to YYVAL
Packit 90a5c9
     unconditionally makes the parser a bit smaller, and it avoids a
Packit 90a5c9
     GCC warning that YYVAL may be used uninitialized.  */
Packit 90a5c9
  yyval = yyvsp[1-yylen];
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
  YY_REDUCE_PRINT (yyn);
Packit 90a5c9
  switch (yyn)
Packit 90a5c9
    {
Packit 90a5c9
        case 2:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 112 "util_expr_parse.y"
Packit 90a5c9
    { ctx->expr = (yyvsp[(2) - (2)].exVal); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 3:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 113 "util_expr_parse.y"
Packit 90a5c9
    { ctx->expr = (yyvsp[(2) - (2)].exVal); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 4:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 114 "util_expr_parse.y"
Packit 90a5c9
    { YYABORT; }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 5:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 117 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_True,        NULL, NULL, ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 6:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 118 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_False,       NULL, NULL, ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 7:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 119 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_Not,         (yyvsp[(2) - (2)].exVal),   NULL, ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 8:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 120 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_Or,          (yyvsp[(1) - (3)].exVal),   (yyvsp[(3) - (3)].exVal),   ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 9:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 121 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_And,         (yyvsp[(1) - (3)].exVal),   (yyvsp[(3) - (3)].exVal),   ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 10:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 122 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_Comp,        (yyvsp[(1) - (1)].exVal),   NULL, ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 11:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 123 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_unary_op_make(       (yyvsp[(1) - (2)].cpVal),   (yyvsp[(2) - (2)].exVal),   ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 12:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 124 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_binary_op_make((yyvsp[(2) - (3)].cpVal),   (yyvsp[(1) - (3)].exVal),   (yyvsp[(3) - (3)].exVal),   ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 13:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 125 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = (yyvsp[(2) - (3)].exVal); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 14:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 126 "util_expr_parse.y"
Packit 90a5c9
    { YYABORT; }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 15:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 129 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_EQ,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 16:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 130 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_NE,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 17:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 131 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_LT,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 18:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 132 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_LE,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 19:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 133 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_GT,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 20:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 134 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_GE,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 21:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 135 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_STR_EQ,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 22:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 136 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_STR_NE,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 23:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 137 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_STR_LT,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 24:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 138 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_STR_LE,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 25:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 139 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_STR_GT,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 26:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 140 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_STR_GE,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 27:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 141 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_IN,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 28:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 142 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_REG,     (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 29:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 143 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_NRE,     (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 30:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 146 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 31:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 147 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = (yyvsp[(2) - (3)].exVal); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 32:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 150 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_ListElement, (yyvsp[(1) - (1)].exVal), NULL, ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 33:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 151 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_ListElement, (yyvsp[(3) - (3)].exVal), (yyvsp[(1) - (3)].exVal),   ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 34:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 154 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_Concat, (yyvsp[(1) - (2)].exVal), (yyvsp[(2) - (2)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 35:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 155 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 36:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 156 "util_expr_parse.y"
Packit 90a5c9
    { YYABORT; }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 37:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 159 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_String, (yyvsp[(1) - (1)].cpVal), NULL, ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 38:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 160 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 39:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 161 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 40:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 164 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_var_make((yyvsp[(2) - (3)].cpVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 41:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 165 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_str_func_make((yyvsp[(2) - (5)].cpVal), (yyvsp[(4) - (5)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 42:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 168 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_Digit,  (yyvsp[(1) - (1)].cpVal), NULL, ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 43:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 169 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_Concat, (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal),   ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 44:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 170 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 45:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 171 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 46:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 172 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 47:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 173 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = (yyvsp[(2) - (3)].exVal); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 48:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 174 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_make(op_String, "", NULL, ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 49:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 177 "util_expr_parse.y"
Packit 90a5c9
    {
Packit 90a5c9
                ap_regex_t *regex;
Packit 90a5c9
                if ((regex = ap_pregcomp(ctx->pool, (yyvsp[(1) - (1)].cpVal),
Packit 90a5c9
                                         AP_REG_EXTENDED|AP_REG_NOSUB)) == NULL) {
Packit 90a5c9
                    ctx->error = "Failed to compile regular expression";
Packit 90a5c9
                    YYERROR;
Packit 90a5c9
                }
Packit 90a5c9
                (yyval.exVal) = ap_expr_make(op_Regex, regex, NULL, ctx);
Packit 90a5c9
            }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 50:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 186 "util_expr_parse.y"
Packit 90a5c9
    {
Packit 90a5c9
                ap_regex_t *regex;
Packit 90a5c9
                if ((regex = ap_pregcomp(ctx->pool, (yyvsp[(1) - (1)].cpVal),
Packit 90a5c9
                                         AP_REG_EXTENDED|AP_REG_NOSUB|AP_REG_ICASE)) == NULL) {
Packit 90a5c9
                    ctx->error = "Failed to compile regular expression";
Packit 90a5c9
                    YYERROR;
Packit 90a5c9
                }
Packit 90a5c9
                (yyval.exVal) = ap_expr_make(op_Regex, regex, NULL, ctx);
Packit 90a5c9
            }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 51:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 197 "util_expr_parse.y"
Packit 90a5c9
    {
Packit 90a5c9
                int *n = apr_palloc(ctx->pool, sizeof(int));
Packit 90a5c9
                *n = (yyvsp[(1) - (1)].num);
Packit 90a5c9
                (yyval.exVal) = ap_expr_make(op_RegexBackref, n, NULL, ctx);
Packit 90a5c9
            }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 52:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 204 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_list_func_make((yyvsp[(1) - (4)].cpVal), (yyvsp[(3) - (4)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
  case 53:
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 207 "util_expr_parse.y"
Packit 90a5c9
    { (yyval.exVal) = ap_expr_str_func_make((yyvsp[(1) - (4)].cpVal), (yyvsp[(3) - (4)].exVal), ctx); }
Packit 90a5c9
    break;
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/* Line 1806 of yacc.c  */
Packit 90a5c9
#line 1891 "util_expr_parse.c"
Packit 90a5c9
      default: break;
Packit 90a5c9
    }
Packit 90a5c9
  /* User semantic actions sometimes alter yychar, and that requires
Packit 90a5c9
     that yytoken be updated with the new translation.  We take the
Packit 90a5c9
     approach of translating immediately before every use of yytoken.
Packit 90a5c9
     One alternative is translating here after every semantic action,
Packit 90a5c9
     but that translation would be missed if the semantic action invokes
Packit 90a5c9
     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
Packit 90a5c9
     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
Packit 90a5c9
     incorrect destructor might then be invoked immediately.  In the
Packit 90a5c9
     case of YYERROR or YYBACKUP, subsequent parser actions might lead
Packit 90a5c9
     to an incorrect destructor call or verbose syntax error message
Packit 90a5c9
     before the lookahead is translated.  */
Packit 90a5c9
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
Packit 90a5c9
Packit 90a5c9
  YYPOPSTACK (yylen);
Packit 90a5c9
  yylen = 0;
Packit 90a5c9
  YY_STACK_PRINT (yyss, yyssp);
Packit 90a5c9
Packit 90a5c9
  *++yyvsp = yyval;
Packit 90a5c9
Packit 90a5c9
  /* Now `shift' the result of the reduction.  Determine what state
Packit 90a5c9
     that goes to, based on the state we popped back to and the rule
Packit 90a5c9
     number reduced by.  */
Packit 90a5c9
Packit 90a5c9
  yyn = yyr1[yyn];
Packit 90a5c9
Packit 90a5c9
  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
Packit 90a5c9
  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
Packit 90a5c9
    yystate = yytable[yystate];
Packit 90a5c9
  else
Packit 90a5c9
    yystate = yydefgoto[yyn - YYNTOKENS];
Packit 90a5c9
Packit 90a5c9
  goto yynewstate;
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/*------------------------------------.
Packit 90a5c9
| yyerrlab -- here on detecting error |
Packit 90a5c9
`------------------------------------*/
Packit 90a5c9
yyerrlab:
Packit 90a5c9
  /* Make sure we have latest lookahead translation.  See comments at
Packit 90a5c9
     user semantic actions for why this is necessary.  */
Packit 90a5c9
  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
Packit 90a5c9
Packit 90a5c9
  /* If not already recovering from an error, report this error.  */
Packit 90a5c9
  if (!yyerrstatus)
Packit 90a5c9
    {
Packit 90a5c9
      ++yynerrs;
Packit 90a5c9
#if ! YYERROR_VERBOSE
Packit 90a5c9
      yyerror (ctx, YY_("syntax error"));
Packit 90a5c9
#else
Packit 90a5c9
# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
Packit 90a5c9
                                        yyssp, yytoken)
Packit 90a5c9
      {
Packit 90a5c9
        char const *yymsgp = YY_("syntax error");
Packit 90a5c9
        int yysyntax_error_status;
Packit 90a5c9
        yysyntax_error_status = YYSYNTAX_ERROR;
Packit 90a5c9
        if (yysyntax_error_status == 0)
Packit 90a5c9
          yymsgp = yymsg;
Packit 90a5c9
        else if (yysyntax_error_status == 1)
Packit 90a5c9
          {
Packit 90a5c9
            if (yymsg != yymsgbuf)
Packit 90a5c9
              YYSTACK_FREE (yymsg);
Packit 90a5c9
            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
Packit 90a5c9
            if (!yymsg)
Packit 90a5c9
              {
Packit 90a5c9
                yymsg = yymsgbuf;
Packit 90a5c9
                yymsg_alloc = sizeof yymsgbuf;
Packit 90a5c9
                yysyntax_error_status = 2;
Packit 90a5c9
              }
Packit 90a5c9
            else
Packit 90a5c9
              {
Packit 90a5c9
                yysyntax_error_status = YYSYNTAX_ERROR;
Packit 90a5c9
                yymsgp = yymsg;
Packit 90a5c9
              }
Packit 90a5c9
          }
Packit 90a5c9
        yyerror (ctx, yymsgp);
Packit 90a5c9
        if (yysyntax_error_status == 2)
Packit 90a5c9
          goto yyexhaustedlab;
Packit 90a5c9
      }
Packit 90a5c9
# undef YYSYNTAX_ERROR
Packit 90a5c9
#endif
Packit 90a5c9
    }
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
  if (yyerrstatus == 3)
Packit 90a5c9
    {
Packit 90a5c9
      /* If just tried and failed to reuse lookahead token after an
Packit 90a5c9
	 error, discard it.  */
Packit 90a5c9
Packit 90a5c9
      if (yychar <= YYEOF)
Packit 90a5c9
	{
Packit 90a5c9
	  /* Return failure if at end of input.  */
Packit 90a5c9
	  if (yychar == YYEOF)
Packit 90a5c9
	    YYABORT;
Packit 90a5c9
	}
Packit 90a5c9
      else
Packit 90a5c9
	{
Packit 90a5c9
	  yydestruct ("Error: discarding",
Packit 90a5c9
		      yytoken, &yylval, ctx);
Packit 90a5c9
	  yychar = YYEMPTY;
Packit 90a5c9
	}
Packit 90a5c9
    }
Packit 90a5c9
Packit 90a5c9
  /* Else will try to reuse lookahead token after shifting the error
Packit 90a5c9
     token.  */
Packit 90a5c9
  goto yyerrlab1;
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/*---------------------------------------------------.
Packit 90a5c9
| yyerrorlab -- error raised explicitly by YYERROR.  |
Packit 90a5c9
`---------------------------------------------------*/
Packit 90a5c9
yyerrorlab:
Packit 90a5c9
Packit 90a5c9
  /* Pacify compilers like GCC when the user code never invokes
Packit 90a5c9
     YYERROR and the label yyerrorlab therefore never appears in user
Packit 90a5c9
     code.  */
Packit 90a5c9
  if (/*CONSTCOND*/ 0)
Packit 90a5c9
     goto yyerrorlab;
Packit 90a5c9
Packit 90a5c9
  /* Do not reclaim the symbols of the rule which action triggered
Packit 90a5c9
     this YYERROR.  */
Packit 90a5c9
  YYPOPSTACK (yylen);
Packit 90a5c9
  yylen = 0;
Packit 90a5c9
  YY_STACK_PRINT (yyss, yyssp);
Packit 90a5c9
  yystate = *yyssp;
Packit 90a5c9
  goto yyerrlab1;
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/*-------------------------------------------------------------.
Packit 90a5c9
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
Packit 90a5c9
`-------------------------------------------------------------*/
Packit 90a5c9
yyerrlab1:
Packit 90a5c9
  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
Packit 90a5c9
Packit 90a5c9
  for (;;)
Packit 90a5c9
    {
Packit 90a5c9
      yyn = yypact[yystate];
Packit 90a5c9
      if (!yypact_value_is_default (yyn))
Packit 90a5c9
	{
Packit 90a5c9
	  yyn += YYTERROR;
Packit 90a5c9
	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
Packit 90a5c9
	    {
Packit 90a5c9
	      yyn = yytable[yyn];
Packit 90a5c9
	      if (0 < yyn)
Packit 90a5c9
		break;
Packit 90a5c9
	    }
Packit 90a5c9
	}
Packit 90a5c9
Packit 90a5c9
      /* Pop the current state because it cannot handle the error token.  */
Packit 90a5c9
      if (yyssp == yyss)
Packit 90a5c9
	YYABORT;
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
      yydestruct ("Error: popping",
Packit 90a5c9
		  yystos[yystate], yyvsp, ctx);
Packit 90a5c9
      YYPOPSTACK (1);
Packit 90a5c9
      yystate = *yyssp;
Packit 90a5c9
      YY_STACK_PRINT (yyss, yyssp);
Packit 90a5c9
    }
Packit 90a5c9
Packit 90a5c9
  *++yyvsp = yylval;
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
  /* Shift the error token.  */
Packit 90a5c9
  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
Packit 90a5c9
Packit 90a5c9
  yystate = yyn;
Packit 90a5c9
  goto yynewstate;
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/*-------------------------------------.
Packit 90a5c9
| yyacceptlab -- YYACCEPT comes here.  |
Packit 90a5c9
`-------------------------------------*/
Packit 90a5c9
yyacceptlab:
Packit 90a5c9
  yyresult = 0;
Packit 90a5c9
  goto yyreturn;
Packit 90a5c9
Packit 90a5c9
/*-----------------------------------.
Packit 90a5c9
| yyabortlab -- YYABORT comes here.  |
Packit 90a5c9
`-----------------------------------*/
Packit 90a5c9
yyabortlab:
Packit 90a5c9
  yyresult = 1;
Packit 90a5c9
  goto yyreturn;
Packit 90a5c9
Packit 90a5c9
#if !defined(yyoverflow) || YYERROR_VERBOSE
Packit 90a5c9
/*-------------------------------------------------.
Packit 90a5c9
| yyexhaustedlab -- memory exhaustion comes here.  |
Packit 90a5c9
`-------------------------------------------------*/
Packit 90a5c9
yyexhaustedlab:
Packit 90a5c9
  yyerror (ctx, YY_("memory exhausted"));
Packit 90a5c9
  yyresult = 2;
Packit 90a5c9
  /* Fall through.  */
Packit 90a5c9
#endif
Packit 90a5c9
Packit 90a5c9
yyreturn:
Packit 90a5c9
  if (yychar != YYEMPTY)
Packit 90a5c9
    {
Packit 90a5c9
      /* Make sure we have latest lookahead translation.  See comments at
Packit 90a5c9
         user semantic actions for why this is necessary.  */
Packit 90a5c9
      yytoken = YYTRANSLATE (yychar);
Packit 90a5c9
      yydestruct ("Cleanup: discarding lookahead",
Packit 90a5c9
                  yytoken, &yylval, ctx);
Packit 90a5c9
    }
Packit 90a5c9
  /* Do not reclaim the symbols of the rule which action triggered
Packit 90a5c9
     this YYABORT or YYACCEPT.  */
Packit 90a5c9
  YYPOPSTACK (yylen);
Packit 90a5c9
  YY_STACK_PRINT (yyss, yyssp);
Packit 90a5c9
  while (yyssp != yyss)
Packit 90a5c9
    {
Packit 90a5c9
      yydestruct ("Cleanup: popping",
Packit 90a5c9
		  yystos[*yyssp], yyvsp, ctx);
Packit 90a5c9
      YYPOPSTACK (1);
Packit 90a5c9
    }
Packit 90a5c9
#ifndef yyoverflow
Packit 90a5c9
  if (yyss != yyssa)
Packit 90a5c9
    YYSTACK_FREE (yyss);
Packit 90a5c9
#endif
Packit 90a5c9
#if YYERROR_VERBOSE
Packit 90a5c9
  if (yymsg != yymsgbuf)
Packit 90a5c9
    YYSTACK_FREE (yymsg);
Packit 90a5c9
#endif
Packit 90a5c9
  /* Make sure YYID is used.  */
Packit 90a5c9
  return YYID (yyresult);
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
/* Line 2067 of yacc.c  */
Packit 90a5c9
#line 210 "util_expr_parse.y"
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
void yyerror(ap_expr_parse_ctx_t *ctx, const char *s)
Packit 90a5c9
{
Packit 90a5c9
    /* s is allocated on the stack */
Packit 90a5c9
    ctx->error = apr_pstrdup(ctx->ptemp, s);
Packit 90a5c9
}
Packit 90a5c9
Packit 90a5c9