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