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