this repo has no description
1/* A Bison parser, made by GNU Bison 3.7.6. */
2
3/* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6 Inc.
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <https://www.gnu.org/licenses/>. */
20
21/* As a special exception, you may create a larger work that contains
22 part or all of the Bison parser skeleton and distribute that work
23 under terms of your choice, so long as that work isn't itself a
24 parser generator using the skeleton or a modified version thereof
25 as a parser skeleton. Alternatively, if you modify or redistribute
26 the parser skeleton itself, you may (at your option) remove this
27 special exception, which will cause the skeleton and the resulting
28 Bison output files to be licensed under the GNU General Public
29 License without this special exception.
30
31 This special exception was added by the Free Software Foundation in
32 version 2.2 of Bison. */
33
34/* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */
36
37/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38 especially those whose name start with YY_ or yy_. They are
39 private implementation details that can be changed or removed. */
40
41/* All symbols defined below should begin with yy or YY, to avoid
42 infringing on user name space. This should be done even for local
43 variables, as they might otherwise be expanded by user macros.
44 There are some unavoidable exceptions within include files to
45 define necessary library symbols; they are noted "INFRINGES ON
46 USER NAME SPACE" below. */
47
48/* Identify Bison output, and Bison version. */
49#define YYBISON 30706
50
51/* Bison version string. */
52#define YYBISON_VERSION "3.7.6"
53
54/* Skeleton name. */
55#define YYSKELETON_NAME "yacc.c"
56
57/* Pure parsers. */
58#define YYPURE 1
59
60/* Push parsers. */
61#define YYPUSH 0
62
63/* Pull parsers. */
64#define YYPULL 1
65
66
67/* Substitute the variable and function names. */
68#define yyparse mzn_yyparse
69#define yylex mzn_yylex
70#define yyerror mzn_yyerror
71#define yydebug mzn_yydebug
72#define yynerrs mzn_yynerrs
73
74/* First part of user prologue. */
75
76#define SCANNER static_cast<ParserState*>(parm)->yyscanner
77#include <iostream>
78#include <fstream>
79#include <map>
80#include <cerrno>
81
82namespace MiniZinc{ class ParserLocation; }
83#define YYLTYPE MiniZinc::ParserLocation
84#define YYLTYPE_IS_DECLARED 1
85#define YYLTYPE_IS_TRIVIAL 0
86
87#define YYMAXDEPTH 10000
88#define YYINITDEPTH 10000
89
90#include <minizinc/parser.hh>
91#include <minizinc/file_utils.hh>
92
93using namespace std;
94using namespace MiniZinc;
95
96#define YYLLOC_DEFAULT(Current, Rhs, N) \
97 (Current).filename(Rhs[1].filename()); \
98 (Current).first_line(Rhs[1].first_line()); \
99 (Current).first_column(Rhs[1].first_column()); \
100 (Current).last_line(Rhs[N].last_line()); \
101 (Current).last_column(Rhs[N].last_column());
102
103int mzn_yyparse(void*);
104int mzn_yylex(YYSTYPE*, YYLTYPE*, void* scanner);
105int mzn_yylex_init (void** scanner);
106int mzn_yylex_destroy (void* scanner);
107int mzn_yyget_lineno (void* scanner);
108void mzn_yyset_extra (void* user_defined ,void* yyscanner );
109
110extern int yydebug;
111
112void yyerror(YYLTYPE* location, void* parm, const string& str) {
113 ParserState* pp = static_cast<ParserState*>(parm);
114 Model* m = pp->model;
115 while (m->parent() != NULL) {
116 m = m->parent();
117 pp->err << "(included from file '" << m->filename() << "')" << endl;
118 }
119 pp->err << location->toString() << ":" << endl;
120 pp->printCurrentLine(location->first_column(),location->last_column());
121 pp->err << "Error: " << str << std::endl;
122 pp->hadError = true;
123 pp->syntaxErrors.push_back(SyntaxError(Location(*location), str));
124}
125
126bool notInDatafile(YYLTYPE* location, void* parm, const string& item) {
127 ParserState* pp = static_cast<ParserState*>(parm);
128 if (pp->isDatafile) {
129 yyerror(location,parm,item+" item not allowed in data file");
130 return false;
131 }
132 return true;
133}
134
135Expression* createDocComment(const ParserLocation& loc, const std::string& s) {
136 std::vector<Expression*> args(1);
137 args[0] = new StringLit(loc, s);
138 Call* c = new Call(Location(loc), constants().ann.doc_comment, args);
139 c->type(Type::ann());
140 return c;
141}
142
143Expression* createArrayAccess(const ParserLocation& loc, Expression* e, std::vector<std::vector<Expression*> >& idx) {
144 Expression* ret = e;
145 for (unsigned int i=0; i<idx.size(); i++) {
146 ret = new ArrayAccess(Location(loc), ret, idx[i]);
147 }
148 return ret;
149}
150
151
152
153
154
155# ifndef YY_CAST
156# ifdef __cplusplus
157# define YY_CAST(Type, Val) static_cast<Type> (Val)
158# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
159# else
160# define YY_CAST(Type, Val) ((Type) (Val))
161# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
162# endif
163# endif
164# ifndef YY_NULLPTR
165# if defined __cplusplus
166# if 201103L <= __cplusplus
167# define YY_NULLPTR nullptr
168# else
169# define YY_NULLPTR 0
170# endif
171# else
172# define YY_NULLPTR ((void*)0)
173# endif
174# endif
175
176#include <minizinc/parser.tab.hh>
177/* Symbol kind. */
178enum yysymbol_kind_t
179{
180 YYSYMBOL_YYEMPTY = -2,
181 YYSYMBOL_YYEOF = 0, /* "end of file" */
182 YYSYMBOL_YYerror = 1, /* error */
183 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
184 YYSYMBOL_MZN_INTEGER_LITERAL = 3, /* "integer literal" */
185 YYSYMBOL_MZN_BOOL_LITERAL = 4, /* "bool literal" */
186 YYSYMBOL_MZN_FLOAT_LITERAL = 5, /* "float literal" */
187 YYSYMBOL_MZN_IDENTIFIER = 6, /* "identifier" */
188 YYSYMBOL_MZN_QUOTED_IDENTIFIER = 7, /* "quoted identifier" */
189 YYSYMBOL_MZN_STRING_LITERAL = 8, /* "string literal" */
190 YYSYMBOL_MZN_STRING_QUOTE_START = 9, /* "interpolated string start" */
191 YYSYMBOL_MZN_STRING_QUOTE_MID = 10, /* "interpolated string middle" */
192 YYSYMBOL_MZN_STRING_QUOTE_END = 11, /* "interpolated string end" */
193 YYSYMBOL_MZN_TI_IDENTIFIER = 12, /* "type-inst identifier" */
194 YYSYMBOL_MZN_TI_ENUM_IDENTIFIER = 13, /* "type-inst enum identifier" */
195 YYSYMBOL_MZN_DOC_COMMENT = 14, /* "documentation comment" */
196 YYSYMBOL_MZN_DOC_FILE_COMMENT = 15, /* "file-level documentation comment" */
197 YYSYMBOL_MZN_VAR = 16, /* "var" */
198 YYSYMBOL_MZN_PAR = 17, /* "par" */
199 YYSYMBOL_MZN_ABSENT = 18, /* "<>" */
200 YYSYMBOL_MZN_ANN = 19, /* "ann" */
201 YYSYMBOL_MZN_ANNOTATION = 20, /* "annotation" */
202 YYSYMBOL_MZN_ANY = 21, /* "any" */
203 YYSYMBOL_MZN_ARRAY = 22, /* "array" */
204 YYSYMBOL_MZN_BOOL = 23, /* "bool" */
205 YYSYMBOL_MZN_CASE = 24, /* "case" */
206 YYSYMBOL_MZN_CONSTRAINT = 25, /* "constraint" */
207 YYSYMBOL_MZN_DEFAULT = 26, /* "default" */
208 YYSYMBOL_MZN_ELSE = 27, /* "else" */
209 YYSYMBOL_MZN_ELSEIF = 28, /* "elseif" */
210 YYSYMBOL_MZN_ENDIF = 29, /* "endif" */
211 YYSYMBOL_MZN_ENUM = 30, /* "enum" */
212 YYSYMBOL_MZN_FLOAT = 31, /* "float" */
213 YYSYMBOL_MZN_FUNCTION = 32, /* "function" */
214 YYSYMBOL_MZN_IF = 33, /* "if" */
215 YYSYMBOL_MZN_INCLUDE = 34, /* "include" */
216 YYSYMBOL_MZN_INFINITY = 35, /* "infinity" */
217 YYSYMBOL_MZN_INT = 36, /* "int" */
218 YYSYMBOL_MZN_LET = 37, /* "let" */
219 YYSYMBOL_MZN_LIST = 38, /* "list" */
220 YYSYMBOL_MZN_MAXIMIZE = 39, /* "maximize" */
221 YYSYMBOL_MZN_MINIMIZE = 40, /* "minimize" */
222 YYSYMBOL_MZN_OF = 41, /* "of" */
223 YYSYMBOL_MZN_OPT = 42, /* "opt" */
224 YYSYMBOL_MZN_SATISFY = 43, /* "satisfy" */
225 YYSYMBOL_MZN_OUTPUT = 44, /* "output" */
226 YYSYMBOL_MZN_PREDICATE = 45, /* "predicate" */
227 YYSYMBOL_MZN_RECORD = 46, /* "record" */
228 YYSYMBOL_MZN_SET = 47, /* "set" */
229 YYSYMBOL_MZN_SOLVE = 48, /* "solve" */
230 YYSYMBOL_MZN_STRING = 49, /* "string" */
231 YYSYMBOL_MZN_TEST = 50, /* "test" */
232 YYSYMBOL_MZN_THEN = 51, /* "then" */
233 YYSYMBOL_MZN_TUPLE = 52, /* "tuple" */
234 YYSYMBOL_MZN_TYPE = 53, /* "type" */
235 YYSYMBOL_MZN_UNDERSCORE = 54, /* "_" */
236 YYSYMBOL_MZN_VARIANT_RECORD = 55, /* "variant_record" */
237 YYSYMBOL_MZN_WHERE = 56, /* "where" */
238 YYSYMBOL_MZN_LEFT_BRACKET = 57, /* "[" */
239 YYSYMBOL_MZN_LEFT_2D_BRACKET = 58, /* "[|" */
240 YYSYMBOL_MZN_RIGHT_BRACKET = 59, /* "]" */
241 YYSYMBOL_MZN_RIGHT_2D_BRACKET = 60, /* "|]" */
242 YYSYMBOL_FLATZINC_IDENTIFIER = 61, /* FLATZINC_IDENTIFIER */
243 YYSYMBOL_MZN_INVALID_INTEGER_LITERAL = 62, /* "invalid integer literal" */
244 YYSYMBOL_MZN_INVALID_FLOAT_LITERAL = 63, /* "invalid float literal" */
245 YYSYMBOL_MZN_UNTERMINATED_STRING = 64, /* "unterminated string" */
246 YYSYMBOL_MZN_END_OF_LINE_IN_STRING = 65, /* "end of line inside string literal" */
247 YYSYMBOL_MZN_INVALID_NULL = 66, /* "null character" */
248 YYSYMBOL_MZN_EQUIV = 67, /* "<->" */
249 YYSYMBOL_MZN_IMPL = 68, /* "->" */
250 YYSYMBOL_MZN_RIMPL = 69, /* "<-" */
251 YYSYMBOL_MZN_OR = 70, /* "\\/" */
252 YYSYMBOL_MZN_XOR = 71, /* "xor" */
253 YYSYMBOL_MZN_AND = 72, /* "/\\" */
254 YYSYMBOL_MZN_LE = 73, /* "<" */
255 YYSYMBOL_MZN_GR = 74, /* ">" */
256 YYSYMBOL_MZN_LQ = 75, /* "<=" */
257 YYSYMBOL_MZN_GQ = 76, /* ">=" */
258 YYSYMBOL_MZN_EQ = 77, /* "=" */
259 YYSYMBOL_MZN_NQ = 78, /* "!=" */
260 YYSYMBOL_MZN_WEAK_EQ = 79, /* "~=" */
261 YYSYMBOL_MZN_IN = 80, /* "in" */
262 YYSYMBOL_MZN_SUBSET = 81, /* "subset" */
263 YYSYMBOL_MZN_SUPERSET = 82, /* "superset" */
264 YYSYMBOL_MZN_UNION = 83, /* "union" */
265 YYSYMBOL_MZN_DIFF = 84, /* "diff" */
266 YYSYMBOL_MZN_SYMDIFF = 85, /* "symdiff" */
267 YYSYMBOL_MZN_DOTDOT = 86, /* ".." */
268 YYSYMBOL_MZN_PLUS = 87, /* "+" */
269 YYSYMBOL_MZN_MINUS = 88, /* "-" */
270 YYSYMBOL_MZN_WEAK_PLUS = 89, /* "~+" */
271 YYSYMBOL_MZN_WEAK_MINUS = 90, /* "~-" */
272 YYSYMBOL_MZN_MULT = 91, /* "*" */
273 YYSYMBOL_MZN_DIV = 92, /* "/" */
274 YYSYMBOL_MZN_IDIV = 93, /* "div" */
275 YYSYMBOL_MZN_MOD = 94, /* "mod" */
276 YYSYMBOL_MZN_INTERSECT = 95, /* "intersect" */
277 YYSYMBOL_MZN_WEAK_MULT = 96, /* "~*" */
278 YYSYMBOL_MZN_POW = 97, /* "^" */
279 YYSYMBOL_MZN_NOT = 98, /* "not" */
280 YYSYMBOL_MZN_PLUSPLUS = 99, /* "++" */
281 YYSYMBOL_MZN_COLONCOLON = 100, /* "::" */
282 YYSYMBOL_PREC_ANNO = 101, /* PREC_ANNO */
283 YYSYMBOL_MZN_EQUIV_QUOTED = 102, /* "'<->'" */
284 YYSYMBOL_MZN_IMPL_QUOTED = 103, /* "'->'" */
285 YYSYMBOL_MZN_RIMPL_QUOTED = 104, /* "'<-'" */
286 YYSYMBOL_MZN_OR_QUOTED = 105, /* "'\\/'" */
287 YYSYMBOL_MZN_XOR_QUOTED = 106, /* "'xor'" */
288 YYSYMBOL_MZN_AND_QUOTED = 107, /* "'/\\'" */
289 YYSYMBOL_MZN_LE_QUOTED = 108, /* "'<'" */
290 YYSYMBOL_MZN_GR_QUOTED = 109, /* "'>'" */
291 YYSYMBOL_MZN_LQ_QUOTED = 110, /* "'<='" */
292 YYSYMBOL_MZN_GQ_QUOTED = 111, /* "'>='" */
293 YYSYMBOL_MZN_EQ_QUOTED = 112, /* "'='" */
294 YYSYMBOL_MZN_NQ_QUOTED = 113, /* "'!='" */
295 YYSYMBOL_MZN_IN_QUOTED = 114, /* "'in'" */
296 YYSYMBOL_MZN_SUBSET_QUOTED = 115, /* "'subset'" */
297 YYSYMBOL_MZN_SUPERSET_QUOTED = 116, /* "'superset'" */
298 YYSYMBOL_MZN_UNION_QUOTED = 117, /* "'union'" */
299 YYSYMBOL_MZN_DIFF_QUOTED = 118, /* "'diff'" */
300 YYSYMBOL_MZN_SYMDIFF_QUOTED = 119, /* "'symdiff'" */
301 YYSYMBOL_MZN_DOTDOT_QUOTED = 120, /* "'..'" */
302 YYSYMBOL_MZN_PLUS_QUOTED = 121, /* "'+'" */
303 YYSYMBOL_MZN_MINUS_QUOTED = 122, /* "'-'" */
304 YYSYMBOL_MZN_MULT_QUOTED = 123, /* "'*'" */
305 YYSYMBOL_MZN_DIV_QUOTED = 124, /* "'/'" */
306 YYSYMBOL_MZN_IDIV_QUOTED = 125, /* "'div'" */
307 YYSYMBOL_MZN_MOD_QUOTED = 126, /* "'mod'" */
308 YYSYMBOL_MZN_INTERSECT_QUOTED = 127, /* "'intersect'" */
309 YYSYMBOL_MZN_POW_QUOTED = 128, /* "'^'" */
310 YYSYMBOL_MZN_NOT_QUOTED = 129, /* "'not'" */
311 YYSYMBOL_MZN_COLONCOLON_QUOTED = 130, /* "'::'" */
312 YYSYMBOL_MZN_PLUSPLUS_QUOTED = 131, /* "'++'" */
313 YYSYMBOL_132_ = 132, /* ';' */
314 YYSYMBOL_133_ = 133, /* '{' */
315 YYSYMBOL_134_ = 134, /* '}' */
316 YYSYMBOL_135_ = 135, /* '(' */
317 YYSYMBOL_136_ = 136, /* ')' */
318 YYSYMBOL_137_ = 137, /* ',' */
319 YYSYMBOL_138_ = 138, /* ':' */
320 YYSYMBOL_139_ = 139, /* '|' */
321 YYSYMBOL_YYACCEPT = 140, /* $accept */
322 YYSYMBOL_model = 141, /* model */
323 YYSYMBOL_item_list = 142, /* item_list */
324 YYSYMBOL_item_list_head = 143, /* item_list_head */
325 YYSYMBOL_doc_file_comments = 144, /* doc_file_comments */
326 YYSYMBOL_semi_or_none = 145, /* semi_or_none */
327 YYSYMBOL_item = 146, /* item */
328 YYSYMBOL_item_tail = 147, /* item_tail */
329 YYSYMBOL_error_item_start = 148, /* error_item_start */
330 YYSYMBOL_include_item = 149, /* include_item */
331 YYSYMBOL_vardecl_item = 150, /* vardecl_item */
332 YYSYMBOL_string_lit_list = 151, /* string_lit_list */
333 YYSYMBOL_enum_id_list = 152, /* enum_id_list */
334 YYSYMBOL_assign_item = 153, /* assign_item */
335 YYSYMBOL_constraint_item = 154, /* constraint_item */
336 YYSYMBOL_solve_item = 155, /* solve_item */
337 YYSYMBOL_output_item = 156, /* output_item */
338 YYSYMBOL_predicate_item = 157, /* predicate_item */
339 YYSYMBOL_function_item = 158, /* function_item */
340 YYSYMBOL_annotation_item = 159, /* annotation_item */
341 YYSYMBOL_operation_item_tail = 160, /* operation_item_tail */
342 YYSYMBOL_params = 161, /* params */
343 YYSYMBOL_params_list = 162, /* params_list */
344 YYSYMBOL_params_list_head = 163, /* params_list_head */
345 YYSYMBOL_comma_or_none = 164, /* comma_or_none */
346 YYSYMBOL_ti_expr_and_id_or_anon = 165, /* ti_expr_and_id_or_anon */
347 YYSYMBOL_ti_expr_and_id = 166, /* ti_expr_and_id */
348 YYSYMBOL_ti_expr_list = 167, /* ti_expr_list */
349 YYSYMBOL_ti_expr_list_head = 168, /* ti_expr_list_head */
350 YYSYMBOL_ti_expr = 169, /* ti_expr */
351 YYSYMBOL_base_ti_expr = 170, /* base_ti_expr */
352 YYSYMBOL_opt_opt = 171, /* opt_opt */
353 YYSYMBOL_base_ti_expr_tail = 172, /* base_ti_expr_tail */
354 YYSYMBOL_array_access_expr_list = 173, /* array_access_expr_list */
355 YYSYMBOL_array_access_expr_list_head = 174, /* array_access_expr_list_head */
356 YYSYMBOL_array_access_expr = 175, /* array_access_expr */
357 YYSYMBOL_expr_list = 176, /* expr_list */
358 YYSYMBOL_expr_list_head = 177, /* expr_list_head */
359 YYSYMBOL_set_expr = 178, /* set_expr */
360 YYSYMBOL_expr = 179, /* expr */
361 YYSYMBOL_expr_atom_head = 180, /* expr_atom_head */
362 YYSYMBOL_expr_atom_head_nonstring = 181, /* expr_atom_head_nonstring */
363 YYSYMBOL_string_expr = 182, /* string_expr */
364 YYSYMBOL_string_quote_rest = 183, /* string_quote_rest */
365 YYSYMBOL_array_access_tail = 184, /* array_access_tail */
366 YYSYMBOL_set_literal = 185, /* set_literal */
367 YYSYMBOL_set_comp = 186, /* set_comp */
368 YYSYMBOL_comp_tail = 187, /* comp_tail */
369 YYSYMBOL_generator_list = 188, /* generator_list */
370 YYSYMBOL_generator_list_head = 189, /* generator_list_head */
371 YYSYMBOL_generator = 190, /* generator */
372 YYSYMBOL_generator_eq = 191, /* generator_eq */
373 YYSYMBOL_id_list = 192, /* id_list */
374 YYSYMBOL_id_list_head = 193, /* id_list_head */
375 YYSYMBOL_simple_array_literal = 194, /* simple_array_literal */
376 YYSYMBOL_simple_array_literal_2d = 195, /* simple_array_literal_2d */
377 YYSYMBOL_simple_array_literal_3d_list = 196, /* simple_array_literal_3d_list */
378 YYSYMBOL_simple_array_literal_2d_list = 197, /* simple_array_literal_2d_list */
379 YYSYMBOL_simple_array_comp = 198, /* simple_array_comp */
380 YYSYMBOL_if_then_else_expr = 199, /* if_then_else_expr */
381 YYSYMBOL_elseif_list = 200, /* elseif_list */
382 YYSYMBOL_quoted_op = 201, /* quoted_op */
383 YYSYMBOL_quoted_op_call = 202, /* quoted_op_call */
384 YYSYMBOL_call_expr = 203, /* call_expr */
385 YYSYMBOL_comp_or_expr = 204, /* comp_or_expr */
386 YYSYMBOL_comp_or_expr_head = 205, /* comp_or_expr_head */
387 YYSYMBOL_let_expr = 206, /* let_expr */
388 YYSYMBOL_let_vardecl_item_list = 207, /* let_vardecl_item_list */
389 YYSYMBOL_comma_or_semi = 208, /* comma_or_semi */
390 YYSYMBOL_let_vardecl_item = 209, /* let_vardecl_item */
391 YYSYMBOL_annotations = 210, /* annotations */
392 YYSYMBOL_annotation_expr = 211, /* annotation_expr */
393 YYSYMBOL_ne_annotations = 212, /* ne_annotations */
394 YYSYMBOL_id_or_quoted_op = 213 /* id_or_quoted_op */
395};
396typedef enum yysymbol_kind_t yysymbol_kind_t;
397
398
399
400
401#ifdef short
402# undef short
403#endif
404
405/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
406 <limits.h> and (if available) <stdint.h> are included
407 so that the code can choose integer types of a good width. */
408
409#ifndef __PTRDIFF_MAX__
410# include <limits.h> /* INFRINGES ON USER NAME SPACE */
411# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
412# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
413# define YY_STDINT_H
414# endif
415#endif
416
417/* Narrow types that promote to a signed type and that can represent a
418 signed or unsigned integer of at least N bits. In tables they can
419 save space and decrease cache pressure. Promoting to a signed type
420 helps avoid bugs in integer arithmetic. */
421
422#ifdef __INT_LEAST8_MAX__
423typedef __INT_LEAST8_TYPE__ yytype_int8;
424#elif defined YY_STDINT_H
425typedef int_least8_t yytype_int8;
426#else
427typedef signed char yytype_int8;
428#endif
429
430#ifdef __INT_LEAST16_MAX__
431typedef __INT_LEAST16_TYPE__ yytype_int16;
432#elif defined YY_STDINT_H
433typedef int_least16_t yytype_int16;
434#else
435typedef short yytype_int16;
436#endif
437
438/* Work around bug in HP-UX 11.23, which defines these macros
439 incorrectly for preprocessor constants. This workaround can likely
440 be removed in 2023, as HPE has promised support for HP-UX 11.23
441 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
442 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
443#ifdef __hpux
444# undef UINT_LEAST8_MAX
445# undef UINT_LEAST16_MAX
446# define UINT_LEAST8_MAX 255
447# define UINT_LEAST16_MAX 65535
448#endif
449
450#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
451typedef __UINT_LEAST8_TYPE__ yytype_uint8;
452#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
453 && UINT_LEAST8_MAX <= INT_MAX)
454typedef uint_least8_t yytype_uint8;
455#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
456typedef unsigned char yytype_uint8;
457#else
458typedef short yytype_uint8;
459#endif
460
461#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
462typedef __UINT_LEAST16_TYPE__ yytype_uint16;
463#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
464 && UINT_LEAST16_MAX <= INT_MAX)
465typedef uint_least16_t yytype_uint16;
466#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
467typedef unsigned short yytype_uint16;
468#else
469typedef int yytype_uint16;
470#endif
471
472#ifndef YYPTRDIFF_T
473# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
474# define YYPTRDIFF_T __PTRDIFF_TYPE__
475# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
476# elif defined PTRDIFF_MAX
477# ifndef ptrdiff_t
478# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
479# endif
480# define YYPTRDIFF_T ptrdiff_t
481# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
482# else
483# define YYPTRDIFF_T long
484# define YYPTRDIFF_MAXIMUM LONG_MAX
485# endif
486#endif
487
488#ifndef YYSIZE_T
489# ifdef __SIZE_TYPE__
490# define YYSIZE_T __SIZE_TYPE__
491# elif defined size_t
492# define YYSIZE_T size_t
493# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
494# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
495# define YYSIZE_T size_t
496# else
497# define YYSIZE_T unsigned
498# endif
499#endif
500
501#define YYSIZE_MAXIMUM \
502 YY_CAST (YYPTRDIFF_T, \
503 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
504 ? YYPTRDIFF_MAXIMUM \
505 : YY_CAST (YYSIZE_T, -1)))
506
507#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
508
509
510/* Stored state numbers (used for stacks). */
511typedef yytype_int16 yy_state_t;
512
513/* State numbers in computations. */
514typedef int yy_state_fast_t;
515
516#ifndef YY_
517# if defined YYENABLE_NLS && YYENABLE_NLS
518# if ENABLE_NLS
519# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
520# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
521# endif
522# endif
523# ifndef YY_
524# define YY_(Msgid) Msgid
525# endif
526#endif
527
528
529#ifndef YY_ATTRIBUTE_PURE
530# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
531# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
532# else
533# define YY_ATTRIBUTE_PURE
534# endif
535#endif
536
537#ifndef YY_ATTRIBUTE_UNUSED
538# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
539# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
540# else
541# define YY_ATTRIBUTE_UNUSED
542# endif
543#endif
544
545/* Suppress unused-variable warnings by "using" E. */
546#if ! defined lint || defined __GNUC__
547# define YY_USE(E) ((void) (E))
548#else
549# define YY_USE(E) /* empty */
550#endif
551
552#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
553/* Suppress an incorrect diagnostic about yylval being uninitialized. */
554# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
555 _Pragma ("GCC diagnostic push") \
556 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
557 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
558# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
559 _Pragma ("GCC diagnostic pop")
560#else
561# define YY_INITIAL_VALUE(Value) Value
562#endif
563#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
564# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
565# define YY_IGNORE_MAYBE_UNINITIALIZED_END
566#endif
567#ifndef YY_INITIAL_VALUE
568# define YY_INITIAL_VALUE(Value) /* Nothing. */
569#endif
570
571#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
572# define YY_IGNORE_USELESS_CAST_BEGIN \
573 _Pragma ("GCC diagnostic push") \
574 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
575# define YY_IGNORE_USELESS_CAST_END \
576 _Pragma ("GCC diagnostic pop")
577#endif
578#ifndef YY_IGNORE_USELESS_CAST_BEGIN
579# define YY_IGNORE_USELESS_CAST_BEGIN
580# define YY_IGNORE_USELESS_CAST_END
581#endif
582
583
584#define YY_ASSERT(E) ((void) (0 && (E)))
585
586#if 1
587
588/* The parser invokes alloca or malloc; define the necessary symbols. */
589
590# ifdef YYSTACK_USE_ALLOCA
591# if YYSTACK_USE_ALLOCA
592# ifdef __GNUC__
593# define YYSTACK_ALLOC __builtin_alloca
594# elif defined __BUILTIN_VA_ARG_INCR
595# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
596# elif defined _AIX
597# define YYSTACK_ALLOC __alloca
598# elif defined _MSC_VER
599# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
600# define alloca _alloca
601# else
602# define YYSTACK_ALLOC alloca
603# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
604# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
605 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
606# ifndef EXIT_SUCCESS
607# define EXIT_SUCCESS 0
608# endif
609# endif
610# endif
611# endif
612# endif
613
614# ifdef YYSTACK_ALLOC
615 /* Pacify GCC's 'empty if-body' warning. */
616# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
617# ifndef YYSTACK_ALLOC_MAXIMUM
618 /* The OS might guarantee only one guard page at the bottom of the stack,
619 and a page size can be as small as 4096 bytes. So we cannot safely
620 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
621 to allow for a few compiler-allocated temporary stack slots. */
622# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
623# endif
624# else
625# define YYSTACK_ALLOC YYMALLOC
626# define YYSTACK_FREE YYFREE
627# ifndef YYSTACK_ALLOC_MAXIMUM
628# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
629# endif
630# if (defined __cplusplus && ! defined EXIT_SUCCESS \
631 && ! ((defined YYMALLOC || defined malloc) \
632 && (defined YYFREE || defined free)))
633# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
634# ifndef EXIT_SUCCESS
635# define EXIT_SUCCESS 0
636# endif
637# endif
638# ifndef YYMALLOC
639# define YYMALLOC malloc
640# if ! defined malloc && ! defined EXIT_SUCCESS
641void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
642# endif
643# endif
644# ifndef YYFREE
645# define YYFREE free
646# if ! defined free && ! defined EXIT_SUCCESS
647void free (void *); /* INFRINGES ON USER NAME SPACE */
648# endif
649# endif
650# endif
651#endif /* 1 */
652
653#if (! defined yyoverflow \
654 && (! defined __cplusplus \
655 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
656 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
657
658/* A type that is properly aligned for any stack member. */
659union yyalloc
660{
661 yy_state_t yyss_alloc;
662 YYSTYPE yyvs_alloc;
663 YYLTYPE yyls_alloc;
664};
665
666/* The size of the maximum gap between one aligned stack and the next. */
667# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
668
669/* The size of an array large to enough to hold all stacks, each with
670 N elements. */
671# define YYSTACK_BYTES(N) \
672 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
673 + YYSIZEOF (YYLTYPE)) \
674 + 2 * YYSTACK_GAP_MAXIMUM)
675
676# define YYCOPY_NEEDED 1
677
678/* Relocate STACK from its old location to the new one. The
679 local variables YYSIZE and YYSTACKSIZE give the old and new number of
680 elements in the stack, and YYPTR gives the new location of the
681 stack. Advance YYPTR to a properly aligned location for the next
682 stack. */
683# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
684 do \
685 { \
686 YYPTRDIFF_T yynewbytes; \
687 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
688 Stack = &yyptr->Stack_alloc; \
689 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
690 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
691 } \
692 while (0)
693
694#endif
695
696#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
697/* Copy COUNT objects from SRC to DST. The source and destination do
698 not overlap. */
699# ifndef YYCOPY
700# if defined __GNUC__ && 1 < __GNUC__
701# define YYCOPY(Dst, Src, Count) \
702 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
703# else
704# define YYCOPY(Dst, Src, Count) \
705 do \
706 { \
707 YYPTRDIFF_T yyi; \
708 for (yyi = 0; yyi < (Count); yyi++) \
709 (Dst)[yyi] = (Src)[yyi]; \
710 } \
711 while (0)
712# endif
713# endif
714#endif /* !YYCOPY_NEEDED */
715
716/* YYFINAL -- State number of the termination state. */
717#define YYFINAL 157
718/* YYLAST -- Last index in YYTABLE. */
719#define YYLAST 5058
720
721/* YYNTOKENS -- Number of terminals. */
722#define YYNTOKENS 140
723/* YYNNTS -- Number of nonterminals. */
724#define YYNNTS 74
725/* YYNRULES -- Number of rules. */
726#define YYNRULES 321
727/* YYNSTATES -- Number of states. */
728#define YYNSTATES 540
729
730/* YYMAXUTOK -- Last valid token kind. */
731#define YYMAXUTOK 386
732
733
734/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
735 as returned by yylex, with out-of-bounds checking. */
736#define YYTRANSLATE(YYX) \
737 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
738 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
739 : YYSYMBOL_YYUNDEF)
740
741/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
742 as returned by yylex. */
743static const yytype_uint8 yytranslate[] =
744{
745 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
746 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
747 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
748 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
749 135, 136, 2, 2, 137, 2, 2, 2, 2, 2,
750 2, 2, 2, 2, 2, 2, 2, 2, 138, 132,
751 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
752 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
753 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
754 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
755 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
756 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
757 2, 2, 2, 133, 139, 134, 2, 2, 2, 2,
758 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
759 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
760 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
761 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
762 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
763 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
764 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
765 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
766 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
767 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
768 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
769 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
770 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
771 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
772 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
773 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
774 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
775 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
776 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
777 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
778 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
779 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
780 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
781 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
782 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
783 125, 126, 127, 128, 129, 130, 131
784};
785
786#if YYDEBUG
787 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
788static const yytype_int16 yyrline[] =
789{
790 0, 273, 273, 275, 277, 280, 289, 298, 307, 316,
791 318, 321, 329, 338, 338, 340, 356, 360, 362, 364,
792 365, 367, 369, 371, 373, 375, 378, 378, 378, 379,
793 379, 379, 379, 379, 380, 383, 407, 413, 420, 428,
794 438, 450, 465, 466, 470, 478, 479, 483, 487, 493,
795 495, 502, 507, 512, 519, 523, 531, 541, 548, 557,
796 569, 577, 578, 583, 584, 586, 591, 592, 596, 600,
797 605, 605, 608, 610, 614, 619, 623, 625, 629, 630,
798 636, 645, 648, 656, 664, 673, 682, 691, 704, 705,
799 709, 711, 713, 715, 717, 719, 721, 726, 732, 735,
800 737, 741, 743, 745, 754, 765, 768, 770, 776, 777,
801 779, 781, 783, 785, 794, 803, 805, 807, 809, 811,
802 813, 815, 817, 819, 821, 826, 831, 836, 841, 847,
803 849, 862, 863, 865, 867, 869, 871, 873, 875, 877,
804 879, 881, 883, 885, 887, 889, 891, 893, 895, 897,
805 899, 901, 910, 919, 921, 923, 925, 927, 929, 931,
806 933, 935, 937, 942, 947, 952, 957, 963, 965, 972,
807 984, 986, 990, 992, 994, 996, 999, 1001, 1004, 1006,
808 1008, 1010, 1012, 1014, 1015, 1018, 1019, 1022, 1023, 1026,
809 1027, 1030, 1031, 1034, 1035, 1038, 1039, 1040, 1045, 1047,
810 1053, 1058, 1066, 1073, 1082, 1084, 1089, 1095, 1098, 1101,
811 1103, 1105, 1111, 1113, 1115, 1123, 1125, 1128, 1131, 1134,
812 1136, 1140, 1142, 1146, 1148, 1159, 1170, 1210, 1213, 1218,
813 1225, 1230, 1234, 1240, 1247, 1263, 1264, 1268, 1270, 1272,
814 1274, 1276, 1278, 1280, 1282, 1284, 1286, 1288, 1290, 1292,
815 1294, 1296, 1298, 1300, 1302, 1304, 1306, 1308, 1310, 1312,
816 1314, 1316, 1318, 1320, 1322, 1326, 1334, 1366, 1368, 1369,
817 1389, 1444, 1447, 1453, 1459, 1461, 1465, 1472, 1481, 1483,
818 1491, 1493, 1502, 1502, 1505, 1511, 1522, 1523, 1526, 1528,
819 1532, 1536, 1540, 1542, 1544, 1546, 1548, 1550, 1552, 1554,
820 1556, 1558, 1560, 1562, 1564, 1566, 1568, 1570, 1572, 1574,
821 1576, 1578, 1580, 1582, 1584, 1586, 1588, 1590, 1592, 1594,
822 1596, 1598
823};
824#endif
825
826/** Accessing symbol of state STATE. */
827#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
828
829#if 1
830/* The user-facing name of the symbol whose (internal) number is
831 YYSYMBOL. No bounds checking. */
832static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
833
834/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
835 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
836static const char *const yytname[] =
837{
838 "\"end of file\"", "error", "\"invalid token\"", "\"integer literal\"",
839 "\"bool literal\"", "\"float literal\"", "\"identifier\"",
840 "\"quoted identifier\"", "\"string literal\"",
841 "\"interpolated string start\"", "\"interpolated string middle\"",
842 "\"interpolated string end\"", "\"type-inst identifier\"",
843 "\"type-inst enum identifier\"", "\"documentation comment\"",
844 "\"file-level documentation comment\"", "\"var\"", "\"par\"", "\"<>\"",
845 "\"ann\"", "\"annotation\"", "\"any\"", "\"array\"", "\"bool\"",
846 "\"case\"", "\"constraint\"", "\"default\"", "\"else\"", "\"elseif\"",
847 "\"endif\"", "\"enum\"", "\"float\"", "\"function\"", "\"if\"",
848 "\"include\"", "\"infinity\"", "\"int\"", "\"let\"", "\"list\"",
849 "\"maximize\"", "\"minimize\"", "\"of\"", "\"opt\"", "\"satisfy\"",
850 "\"output\"", "\"predicate\"", "\"record\"", "\"set\"", "\"solve\"",
851 "\"string\"", "\"test\"", "\"then\"", "\"tuple\"", "\"type\"", "\"_\"",
852 "\"variant_record\"", "\"where\"", "\"[\"", "\"[|\"", "\"]\"", "\"|]\"",
853 "FLATZINC_IDENTIFIER", "\"invalid integer literal\"",
854 "\"invalid float literal\"", "\"unterminated string\"",
855 "\"end of line inside string literal\"", "\"null character\"", "\"<->\"",
856 "\"->\"", "\"<-\"", "\"\\\\/\"", "\"xor\"", "\"/\\\\\"", "\"<\"",
857 "\">\"", "\"<=\"", "\">=\"", "\"=\"", "\"!=\"", "\"~=\"", "\"in\"",
858 "\"subset\"", "\"superset\"", "\"union\"", "\"diff\"", "\"symdiff\"",
859 "\"..\"", "\"+\"", "\"-\"", "\"~+\"", "\"~-\"", "\"*\"", "\"/\"",
860 "\"div\"", "\"mod\"", "\"intersect\"", "\"~*\"", "\"^\"", "\"not\"",
861 "\"++\"", "\"::\"", "PREC_ANNO", "\"'<->'\"", "\"'->'\"", "\"'<-'\"",
862 "\"'\\\\/'\"", "\"'xor'\"", "\"'/\\\\'\"", "\"'<'\"", "\"'>'\"",
863 "\"'<='\"", "\"'>='\"", "\"'='\"", "\"'!='\"", "\"'in'\"",
864 "\"'subset'\"", "\"'superset'\"", "\"'union'\"", "\"'diff'\"",
865 "\"'symdiff'\"", "\"'..'\"", "\"'+'\"", "\"'-'\"", "\"'*'\"", "\"'/'\"",
866 "\"'div'\"", "\"'mod'\"", "\"'intersect'\"", "\"'^'\"", "\"'not'\"",
867 "\"'::'\"", "\"'++'\"", "';'", "'{'", "'}'", "'('", "')'", "','", "':'",
868 "'|'", "$accept", "model", "item_list", "item_list_head",
869 "doc_file_comments", "semi_or_none", "item", "item_tail",
870 "error_item_start", "include_item", "vardecl_item", "string_lit_list",
871 "enum_id_list", "assign_item", "constraint_item", "solve_item",
872 "output_item", "predicate_item", "function_item", "annotation_item",
873 "operation_item_tail", "params", "params_list", "params_list_head",
874 "comma_or_none", "ti_expr_and_id_or_anon", "ti_expr_and_id",
875 "ti_expr_list", "ti_expr_list_head", "ti_expr", "base_ti_expr",
876 "opt_opt", "base_ti_expr_tail", "array_access_expr_list",
877 "array_access_expr_list_head", "array_access_expr", "expr_list",
878 "expr_list_head", "set_expr", "expr", "expr_atom_head",
879 "expr_atom_head_nonstring", "string_expr", "string_quote_rest",
880 "array_access_tail", "set_literal", "set_comp", "comp_tail",
881 "generator_list", "generator_list_head", "generator", "generator_eq",
882 "id_list", "id_list_head", "simple_array_literal",
883 "simple_array_literal_2d", "simple_array_literal_3d_list",
884 "simple_array_literal_2d_list", "simple_array_comp", "if_then_else_expr",
885 "elseif_list", "quoted_op", "quoted_op_call", "call_expr",
886 "comp_or_expr", "comp_or_expr_head", "let_expr", "let_vardecl_item_list",
887 "comma_or_semi", "let_vardecl_item", "annotations", "annotation_expr",
888 "ne_annotations", "id_or_quoted_op", YY_NULLPTR
889};
890
891static const char *
892yysymbol_name (yysymbol_kind_t yysymbol)
893{
894 return yytname[yysymbol];
895}
896#endif
897
898#ifdef YYPRINT
899/* YYTOKNUM[NUM] -- (External) token number corresponding to the
900 (internal) symbol number NUM (which must be that of a token). */
901static const yytype_int16 yytoknum[] =
902{
903 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
904 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
905 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
906 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
907 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
908 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
909 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
910 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
911 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
912 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
913 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
914 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
915 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
916 385, 386, 59, 123, 125, 40, 41, 44, 58, 124
917};
918#endif
919
920#define YYPACT_NINF (-402)
921
922#define yypact_value_is_default(Yyn) \
923 ((Yyn) == YYPACT_NINF)
924
925#define YYTABLE_NINF (-89)
926
927#define yytable_value_is_error(Yyn) \
928 ((Yyn) == YYTABLE_NINF)
929
930 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
931 STATE-NUM. */
932static const yytype_int16 yypact[] =
933{
934 823, -103, -402, -402, -402, -8, -402, 3485, -402, -402,
935 1623, -402, -9, -9, -402, -402, 33, -1, -402, 2820,
936 51, -402, 2155, 3485, 55, -402, -402, -74, 25, 2687,
937 3485, 59, -32, -402, 73, 23, 2953, 532, 3618, 3618,
938 -402, -402, -402, -402, -402, -402, -402, -402, -402, -402,
939 -402, -402, -402, -402, -402, -402, -402, -402, -53, -402,
940 -402, -402, -402, -402, -402, -402, -402, -402, -402, 3086,
941 3485, 83, -402, -47, 1357, 219, -402, -402, -402, -402,
942 -402, -402, -402, -402, -402, -402, -32, -48, -402, 48,
943 -402, 3706, -402, -402, -402, 23, 23, 23, 23, 23,
944 23, -44, -402, 23, -402, 1490, 3219, 3485, 1090, 40,
945 -29, 3485, 3485, 3485, -37, 11, 4739, -402, -402, -402,
946 -402, 2421, 2554, -34, 2155, 44, 4739, 28, -36, 4458,
947 -402, 1889, 2288, -402, 4739, -34, 3653, 2, 4, -34,
948 40, -402, 54, 14, 3741, -402, 686, -402, -2, -30,
949 31, 31, 3485, -402, 21, 3776, 4026, -402, 1224, -402,
950 -402, -402, -402, -402, -402, -402, -402, -402, -402, -402,
951 -402, -402, 35, 152, 118, 3618, 3618, 3618, 3618, 3618,
952 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618,
953 3618, 3618, 3618, 3653, 40, 40, 40, 40, 40, 40,
954 3485, 40, -402, 3485, 101, 26, -402, 4776, 4739, -402,
955 4500, 30, 37, 3219, 41, 41, 41, 3485, 3485, -402,
956 3485, 3485, 3485, 3485, 3485, 3485, 3485, 3485, 3485, 3485,
957 3485, 3485, 3485, 3485, 3485, 3485, 3485, 3485, 3485, 3485,
958 3485, 3485, 3485, 3485, 3485, 3485, 3485, 3485, 3485, 3485,
959 3485, 3485, 3485, 3485, 3653, 120, -402, 121, -402, 956,
960 88, 108, 43, -402, 3485, 10, 3903, 3485, -402, -32,
961 45, -97, -402, -402, -32, -402, -402, -402, 3485, 3485,
962 -402, 3653, -32, -402, 3485, -402, 162, -402, 38, -402,
963 46, -402, 3352, 3901, -402, 162, 23, 1357, -402, 3485,
964 47, 2687, 87, 3800, 29, 29, 29, 277, 53, 53,
965 53, 53, 39, 39, 39, 39, 29, 39, 31, 8,
966 -402, 3867, 4739, -402, 3219, -402, 3485, 3485, 58, 3485,
967 -402, 130, 3992, -402, 4739, 90, 4830, 4867, 4867, 4921,
968 4921, 809, 4958, 4958, 4958, 4958, 4958, 4958, 4958, 4050,
969 4050, 4050, 507, 507, 507, 659, 79, 79, 79, 79,
970 57, 57, 57, 57, 507, 57, 41, 24, -402, 2687,
971 2687, 56, 60, 63, -402, -402, 45, 3485, 154, 2022,
972 -402, 4739, 62, 229, 232, -402, -402, -402, -402, -402,
973 -402, -402, -402, -402, -402, -402, -402, -402, -402, -402,
974 -402, -402, -402, -402, -402, -402, -402, -402, -402, -402,
975 -402, -402, -402, -402, -402, -34, 4401, 163, 235, -402,
976 167, -402, 1756, 166, 4739, 4739, -402, 166, 175, 195,
977 -402, 119, -402, 199, 178, 124, 3485, 3485, -402, -402,
978 3485, 128, 40, -402, 4739, 2022, -402, -402, 3485, -402,
979 4739, 3485, 4552, -402, 3485, -402, -402, -402, -402, 2022,
980 -402, 4739, 2288, -402, 3485, -402, -27, -402, -90, -32,
981 -402, 27, 3485, -402, 3485, 186, -402, -402, 3485, -402,
982 -402, 3485, -402, 162, -402, 3485, 3485, 262, -402, 131,
983 4117, -402, 136, 4151, 4242, 3485, 4276, -402, -402, 4367,
984 -402, 265, -402, 268, 166, 3485, 3485, 4739, 4739, 3485,
985 4739, 4739, -402, 220, 4739, 4594, -402, 3485, -402, -32,
986 -402, -402, 4739, -402, -402, -402, -402, -402, 4685, 4648,
987 4739, 3485, 3485, 166, -402, 3485, 4739, 4739, -402, 4739
988};
989
990 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
991 Performed when YYTABLE does not specify something else to do. Zero
992 means the default is an error. */
993static const yytype_int16 yydefact[] =
994{
995 0, 0, 179, 178, 181, 174, 198, 0, 96, 97,
996 88, 11, 88, 88, 182, 94, 0, 0, 91, 0,
997 0, 92, 88, 0, 0, 180, 90, 0, 0, 89,
998 0, 0, 286, 93, 0, 176, 0, 0, 0, 0,
999 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
1000 247, 248, 249, 250, 251, 252, 253, 254, 0, 255,
1001 256, 257, 259, 260, 261, 262, 258, 264, 263, 0,
1002 0, 0, 2, 13, 88, 5, 16, 17, 18, 19,
1003 20, 21, 22, 23, 24, 25, 286, 0, 78, 0,
1004 81, 95, 108, 170, 171, 183, 185, 187, 189, 191,
1005 193, 0, 268, 196, 195, 88, 0, 0, 0, 175,
1006 174, 0, 0, 0, 0, 0, 106, 131, 199, 15,
1007 89, 0, 0, 63, 88, 0, 49, 38, 0, 0,
1008 35, 88, 88, 82, 54, 63, 0, 0, 287, 63,
1009 177, 221, 0, 70, 106, 223, 0, 230, 0, 0,
1010 129, 130, 0, 204, 0, 106, 0, 1, 14, 4,
1011 12, 6, 34, 29, 27, 32, 26, 28, 31, 30,
1012 33, 9, 36, 0, 0, 0, 0, 0, 0, 0,
1013 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1014 0, 0, 0, 0, 184, 186, 188, 190, 192, 194,
1015 0, 197, 10, 102, 0, 70, 99, 101, 48, 267,
1016 272, 0, 70, 0, 168, 169, 167, 0, 0, 200,
1017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1020 0, 0, 0, 0, 0, 0, 84, 0, 83, 0,
1021 59, 0, 70, 76, 0, 0, 0, 0, 279, 286,
1022 0, 0, 278, 80, 286, 288, 289, 290, 0, 0,
1023 51, 0, 286, 222, 71, 105, 0, 227, 0, 226,
1024 0, 224, 0, 0, 205, 0, 172, 88, 7, 0,
1025 74, 0, 128, 127, 110, 111, 112, 113, 117, 118,
1026 124, 125, 119, 120, 121, 122, 115, 126, 123, 116,
1027 109, 0, 103, 202, 71, 98, 104, 0, 269, 71,
1028 271, 0, 0, 201, 107, 166, 133, 134, 135, 136,
1029 137, 138, 139, 140, 141, 142, 143, 144, 165, 145,
1030 146, 147, 148, 149, 150, 151, 155, 156, 162, 163,
1031 157, 158, 159, 160, 153, 164, 161, 154, 132, 0,
1032 0, 0, 0, 70, 68, 72, 73, 0, 0, 71,
1033 75, 50, 0, 42, 45, 292, 293, 294, 295, 296,
1034 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
1035 307, 308, 309, 310, 311, 312, 313, 314, 316, 317,
1036 318, 319, 315, 320, 321, 63, 235, 284, 0, 283,
1037 0, 282, 88, 61, 53, 52, 291, 61, 219, 0,
1038 207, 70, 209, 210, 0, 70, 228, 0, 225, 231,
1039 0, 0, 173, 8, 37, 66, 85, 266, 0, 100,
1040 273, 0, 274, 203, 0, 87, 86, 65, 64, 71,
1041 67, 60, 88, 77, 0, 43, 0, 46, 0, 286,
1042 233, 0, 0, 74, 0, 0, 281, 280, 0, 55,
1043 56, 0, 232, 71, 208, 0, 0, 71, 218, 0,
1044 0, 206, 0, 0, 0, 0, 0, 69, 79, 0,
1045 40, 0, 39, 0, 61, 0, 0, 285, 276, 0,
1046 62, 217, 212, 213, 211, 215, 220, 229, 114, 286,
1047 265, 270, 275, 152, 41, 44, 47, 57, 0, 0,
1048 277, 0, 0, 61, 234, 0, 214, 216, 58, 236
1049};
1050
1051 /* YYPGOTO[NTERM-NUM]. */
1052static const yytype_int16 yypgoto[] =
1053{
1054 -402, -402, -402, -402, 117, -402, -62, 267, -402, -402,
1055 -402, -402, -402, -402, -123, -402, -402, -402, -402, -402,
1056 -401, -121, -167, -402, -185, -178, -125, -402, -402, -17,
1057 -130, 49, -22, 69, -402, -41, -35, 18, 342, -19,
1058 317, -117, -112, 67, -25, -402, -402, -7, -402, -402,
1059 -197, -196, -402, -402, -402, -402, -402, -137, -402, -402,
1060 -402, -402, -402, -402, -402, -402, -402, -402, -402, -133,
1061 -83, -170, -402, -402
1062};
1063
1064 /* YYDEFGOTO[NTERM-NUM]. */
1065static const yytype_int16 yydefgoto[] =
1066{
1067 0, 71, 72, 73, 74, 159, 75, 76, 171, 77,
1068 78, 466, 468, 79, 80, 81, 82, 83, 84, 85,
1069 479, 260, 372, 373, 285, 374, 86, 261, 262, 87,
1070 88, 89, 90, 204, 205, 206, 147, 143, 91, 116,
1071 117, 93, 94, 118, 109, 95, 96, 429, 430, 431,
1072 432, 433, 434, 435, 97, 98, 148, 149, 99, 100,
1073 471, 101, 102, 103, 211, 212, 104, 271, 422, 272,
1074 137, 277, 138, 415
1075};
1076
1077 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1078 positive, shift that token. If negative, reduce the rule whose
1079 number is the opposite. If YYTABLE_NINF, syntax error. */
1080static const yytype_int16 yytable[] =
1081{
1082 126, 142, 273, 172, 129, 128, 269, 133, 268, 288,
1083 140, 134, 161, 264, 274, 175, 382, 144, 282, 275,
1084 325, 218, 219, 320, 276, 115, 480, 330, 106, 105,
1085 291, 221, 500, 120, 154, 419, 175, 420, 175, 123,
1086 421, 278, 279, 202, 502, 280, 175, 503, 221, 106,
1087 155, 156, 6, 7, 505, 506, 124, 127, 289, 131,
1088 175, 121, 122, 130, 221, 135, 132, 383, 136, 107,
1089 194, 195, 196, 197, 198, 199, 275, 380, 201, 139,
1090 106, 276, 152, 157, 368, 158, 221, 207, 208, 210,
1091 173, 200, 214, 215, 216, 174, 298, 213, 217, 256,
1092 258, 259, 266, 527, 281, 265, 108, 263, 193, 292,
1093 501, 426, 299, 283, 270, 180, 181, 182, 183, 184,
1094 185, 186, 187, 188, 254, 190, 191, 108, 192, 193,
1095 192, 193, 538, 293, 375, 290, 191, 275, 192, 193,
1096 253, 254, 276, 384, 185, 186, 187, 188, 220, 190,
1097 191, 284, 192, 193, 252, 294, 253, 254, 300, 301,
1098 323, 369, 370, 324, 275, 377, 328, 378, 428, 276,
1099 246, 247, 248, 249, 329, 251, 252, 436, 253, 254,
1100 379, 321, 445, 418, 322, 437, 417, 193, 460, 453,
1101 254, 423, 457, 451, 207, 462, 458, 464, 332, 427,
1102 459, 334, 335, 336, 337, 338, 339, 340, 341, 342,
1103 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
1104 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
1105 363, 364, 365, 366, 367, 443, 115, 465, 467, 162,
1106 472, 473, 376, 478, 163, 381, 484, 474, 416, 164,
1107 488, 165, 481, 166, 482, 485, 483, 439, 486, 424,
1108 425, 487, 491, 167, 168, 334, 509, 169, 516, 170,
1109 517, 442, 519, 525, 526, 297, 531, 119, 492, 446,
1110 444, 497, 331, 449, 175, 333, 512, 513, 441, 477,
1111 0, 0, 0, 0, 469, 0, 0, 269, 0, 476,
1112 489, 0, 0, 0, 0, 207, 0, 355, 450, 0,
1113 452, 0, 0, 0, 0, 0, 0, 92, 0, 0,
1114 375, 0, 0, 0, 0, 0, 0, 92, 0, 0,
1115 0, 0, 498, 0, 375, 0, 0, 0, 0, 92,
1116 0, 0, 0, 0, 0, 0, 92, 455, 456, 0,
1117 0, 0, 0, 0, 0, 92, 92, 0, 461, 0,
1118 0, 0, 463, -89, 181, 182, 183, 184, 185, 186,
1119 187, 188, 0, 190, 191, 0, 192, 193, 0, 0,
1120 150, 151, 0, 0, 0, 0, 504, 0, 0, 0,
1121 0, 92, 0, 0, 0, 0, 0, 0, 0, 0,
1122 0, 439, 0, 0, 0, 270, 0, 0, 0, 0,
1123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1124 0, 490, 92, 0, 0, 0, 0, 0, 376, 493,
1125 0, 0, 494, 0, 0, 496, 533, 0, 92, 92,
1126 0, 92, 376, 0, 0, 499, 0, 0, 92, 92,
1127 0, 0, 0, 507, 0, 508, 0, 0, 0, 510,
1128 0, 0, 511, 0, 0, 0, 514, 515, 0, 0,
1129 0, 0, 0, 0, 0, 92, 522, 0, 0, 0,
1130 0, 0, 439, 0, 0, 0, 528, 529, 0, 0,
1131 530, 0, 92, 92, 92, 92, 92, 92, 92, 92,
1132 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
1133 0, 0, 536, 537, 221, 0, 539, 302, 303, 304,
1134 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1135 315, 316, 317, 318, 319, 2, 3, 4, 110, 0,
1136 6, 7, 0, 0, 0, 0, 0, 0, 0, 0,
1137 14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1138 0, 0, 0, 0, 0, 23, 0, 25, 0, 27,
1139 0, 0, 0, 0, 0, 0, 92, 0, 0, 0,
1140 0, 0, 0, 0, 0, 0, 35, 0, 0, 36,
1141 37, 0, 145, 241, 242, 243, 244, 245, 246, 247,
1142 248, 249, 0, 251, 252, 0, 253, 254, 0, 0,
1143 0, 0, 0, 0, 92, 0, 0, 0, 92, 111,
1144 112, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1145 113, 0, 0, 0, 40, 41, 42, 43, 44, 45,
1146 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
1147 56, 57, 114, 59, 60, 61, 62, 63, 64, 65,
1148 66, 67, 0, 68, 0, 69, 221, 70, 0, 0,
1149 0, 146, 0, 0, 0, 0, 0, 0, 0, 0,
1150 0, 0, 0, 0, 0, 0, 92, 92, 0, 2,
1151 3, 4, 110, 0, 6, 7, 92, 0, 0, 0,
1152 0, 0, 0, 0, 14, 0, 0, 0, 0, 0,
1153 0, 0, 0, 0, 0, 0, 0, 0, 0, 23,
1154 0, 25, 0, 27, 0, 0, 0, 0, 0, 0,
1155 0, 0, 0, 0, 0, 0, 0, 0, 0, 92,
1156 35, 0, 0, 36, 37, -89, 242, 243, 244, 245,
1157 246, 247, 248, 249, 0, 251, 252, 0, 253, 254,
1158 0, 0, 92, 0, 0, 0, 0, 0, 0, 0,
1159 0, 0, 0, 111, 112, 0, 92, 0, 0, 92,
1160 0, 0, 0, 0, 113, 0, 0, 0, 40, 41,
1161 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
1162 52, 53, 54, 55, 56, 57, 114, 59, 60, 61,
1163 62, 63, 64, 65, 66, 67, 221, 68, 0, 69,
1164 0, 70, 0, -3, 1, 287, 2, 3, 4, 5,
1165 0, 6, 7, 0, 0, 8, 9, 10, 11, 12,
1166 13, 14, 15, 16, 0, 17, 18, 0, 19, 0,
1167 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
1168 27, 28, 0, 0, 0, 29, 0, 30, 31, 0,
1169 -88, 32, 33, 34, 0, 0, 0, 35, 0, 0,
1170 36, 37, 228, 229, 230, 231, 232, 233, 234, 235,
1171 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
1172 246, 247, 248, 249, 250, 251, 252, 0, 253, 254,
1173 38, 39, 0, 0, 0, 0, 0, 0, 0, 0,
1174 0, 0, 0, 0, 0, 40, 41, 42, 43, 44,
1175 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1176 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1177 65, 66, 67, 0, 68, 0, 69, 371, 70, 2,
1178 3, 4, 110, 0, 6, 7, 0, 0, 8, 9,
1179 0, 0, 12, 13, 14, 15, 0, 0, 17, 18,
1180 0, 0, 0, 0, 0, 0, 0, 21, 0, 23,
1181 0, 25, 26, 27, 28, 0, 0, 0, 29, 0,
1182 0, 0, 0, -88, 0, 33, 0, 0, 0, 0,
1183 35, 0, 0, 36, 37, 0, 0, 0, 0, 0,
1184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1185 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1186 0, 0, 0, 38, 39, 0, 0, 0, 0, 0,
1187 0, 0, 0, 0, 0, 0, 0, 0, 40, 41,
1188 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
1189 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
1190 62, 63, 64, 65, 66, 67, 0, 68, 0, 69,
1191 0, 70, -66, 2, 3, 4, 110, 0, 6, 7,
1192 0, 0, 0, 0, 0, 0, 0, 0, 14, 0,
1193 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1194 0, 0, 0, 23, 0, 25, 0, 27, 0, 0,
1195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1196 0, 0, 0, 0, 35, 0, 0, 36, 37, 0,
1197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1198 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1199 0, 0, 0, 0, 0, 0, 0, 111, 112, 0,
1200 0, 0, 0, 0, 0, 0, 0, 0, 113, 0,
1201 0, 0, 40, 41, 42, 43, 44, 45, 46, 47,
1202 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
1203 114, 59, 60, 61, 62, 63, 64, 65, 66, 67,
1204 0, 68, 0, 69, 0, 70, 209, 2, 3, 4,
1205 5, 0, 6, 7, 0, 0, 8, 9, 10, 11,
1206 12, 13, 14, 15, 16, 0, 17, 18, 0, 19,
1207 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
1208 26, 27, 28, 0, 0, 0, 29, 0, 30, 31,
1209 0, -88, 32, 33, 34, 0, 0, 0, 35, 0,
1210 0, 36, 37, 0, 0, 0, 0, 0, 0, 0,
1211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1213 0, 38, 39, 0, 0, 0, 0, 0, 0, 0,
1214 0, 0, 0, 0, 0, 0, 40, 41, 42, 43,
1215 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
1216 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1217 64, 65, 66, 67, 0, 68, 0, 69, 0, 70,
1218 2, 3, 4, 5, 0, 6, 7, 0, 0, 8,
1219 9, 10, 160, 12, 13, 14, 15, 16, 0, 17,
1220 18, 0, 19, 0, 0, 0, 0, 20, 21, 22,
1221 23, 24, 25, 26, 27, 28, 0, 0, 0, 29,
1222 0, 30, 31, 0, 0, 32, 33, 34, 0, 0,
1223 0, 35, 0, 0, 36, 37, 0, 0, 0, 0,
1224 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1226 0, 0, 0, 0, 38, 39, 0, 0, 0, 0,
1227 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,
1228 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
1229 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
1230 61, 62, 63, 64, 65, 66, 67, 0, 68, 0,
1231 69, 0, 70, 2, 3, 4, 5, 0, 6, 7,
1232 0, 0, 8, 9, 10, 0, 12, 13, 14, 15,
1233 16, 0, 17, 18, 0, 19, 0, 0, 0, 0,
1234 20, 21, 22, 23, 24, 25, 26, 27, 28, 0,
1235 0, 0, 29, 0, 30, 31, 0, 0, 32, 33,
1236 34, 0, 0, 0, 35, 0, 0, 36, 37, 0,
1237 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1238 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1239 0, 0, 0, 0, 0, 0, 0, 38, 39, 0,
1240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1241 0, 0, 40, 41, 42, 43, 44, 45, 46, 47,
1242 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
1243 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
1244 0, 68, 0, 69, 0, 70, 2, 3, 4, 5,
1245 0, 6, 7, 0, 0, 8, 9, 0, 0, 12,
1246 13, 14, 15, 16, 0, 17, 18, 0, 19, 0,
1247 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
1248 27, 28, 0, 0, 0, 29, 0, 30, 31, 0,
1249 0, 32, 33, 34, 0, 0, 0, 35, 0, 0,
1250 36, 37, 0, 0, 0, 0, 0, 0, 0, 0,
1251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1252 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1253 38, 39, 0, 0, 0, 0, 0, 0, 0, 0,
1254 0, 0, 0, 0, 0, 40, 41, 42, 43, 44,
1255 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1256 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1257 65, 66, 67, 0, 68, 0, 69, 0, 70, 2,
1258 3, 4, 110, 0, 6, 7, 0, 0, 8, 9,
1259 0, 0, 12, 13, 14, 15, 0, 0, 17, 18,
1260 0, 19, 0, 0, 0, 0, 0, 21, 0, 23,
1261 0, 25, 26, 27, 28, 0, 0, 0, 29, 0,
1262 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
1263 35, 0, 0, 36, 37, 0, 0, 0, 0, 0,
1264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1266 0, 0, 0, 38, 39, 0, 0, 0, 0, 0,
1267 0, 0, 0, 0, 0, 0, 0, 0, 40, 41,
1268 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
1269 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
1270 62, 63, 64, 65, 66, 67, 0, 68, 0, 69,
1271 475, 70, 2, 3, 4, 110, 0, 6, 7, 0,
1272 0, 8, 9, 0, 0, 12, 13, 14, 15, 0,
1273 0, 17, 18, 0, 19, 0, 0, 0, 0, 0,
1274 21, 0, 23, 0, 25, 26, 27, 28, 0, 0,
1275 0, 29, 0, 0, 0, 0, 0, 0, 33, 0,
1276 0, 0, 0, 35, 0, 0, 36, 37, 0, 0,
1277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1279 0, 0, 0, 0, 0, 0, 38, 39, 0, 0,
1280 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1281 0, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1282 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
1283 59, 60, 61, 62, 63, 64, 65, 66, 67, 0,
1284 68, 0, 69, 0, 70, 2, 3, 4, 110, 0,
1285 6, 7, 0, 0, 8, 9, 0, 0, 12, 13,
1286 14, 15, 0, 0, 17, 18, 0, 0, 0, 0,
1287 0, 0, 0, 21, 0, 23, 0, 25, 26, 27,
1288 28, 0, 0, 0, 29, 0, 0, 0, 0, -88,
1289 0, 33, 0, 0, 0, 0, 35, 0, 0, 36,
1290 37, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1291 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1292 0, 0, 0, 0, 0, 0, 0, 0, 0, 38,
1293 39, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1294 0, 0, 0, 0, 40, 41, 42, 43, 44, 45,
1295 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
1296 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
1297 66, 67, 0, 68, 0, 69, 0, 70, 2, 3,
1298 4, 110, 0, 6, 7, 0, 0, 8, 9, 0,
1299 0, 12, 13, 14, 15, 0, 0, 17, 18, 0,
1300 0, 0, 0, 0, 0, 0, 21, 0, 23, 0,
1301 25, 26, 27, 28, 0, 0, 0, 29, 0, 0,
1302 0, 0, 0, 0, 33, 0, 0, 0, 0, 35,
1303 0, 0, 36, 37, 0, 0, 0, 0, 0, 0,
1304 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1306 0, 0, 38, 39, 0, 0, 0, 0, 0, 0,
1307 0, 0, 0, 0, 0, 0, 0, 40, 41, 42,
1308 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
1309 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1310 63, 64, 65, 66, 67, 0, 68, 0, 69, 0,
1311 70, 2, 3, 4, 110, 0, 6, 7, 0, 0,
1312 8, 9, 0, 0, 12, 13, 14, 15, 0, 0,
1313 0, 18, 0, 0, 0, 0, 0, 0, 0, 21,
1314 0, 23, 0, 25, 26, 27, 0, 0, 0, 0,
1315 29, 0, 0, 0, 0, 0, 0, 33, 0, 0,
1316 0, 0, 35, 0, 0, 36, 37, 0, 0, 0,
1317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1318 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1319 0, 0, 0, 0, 0, 38, 39, 0, 0, 0,
1320 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1321 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1322 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
1323 60, 61, 62, 63, 64, 65, 66, 67, 0, 68,
1324 0, 69, 0, 70, 2, 3, 4, 110, 0, 6,
1325 7, 0, 0, 8, 9, 0, 0, 0, 0, 14,
1326 15, 0, 0, 0, 18, 0, 0, 0, 0, 0,
1327 0, 0, 21, 0, 23, 0, 25, 26, 27, 0,
1328 0, 0, 0, 0, 0, 0, 0, 0, 255, 0,
1329 33, 0, 0, 0, 0, 35, 0, 0, 36, 37,
1330 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1332 0, 0, 0, 0, 0, 0, 0, 0, 38, 39,
1333 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1334 0, 0, 0, 40, 41, 42, 43, 44, 45, 46,
1335 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
1336 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
1337 67, 0, 68, 0, 69, 0, 70, 2, 3, 4,
1338 110, 0, 6, 7, 0, 0, 8, 9, 0, 0,
1339 0, 0, 14, 15, 0, 0, 0, 18, 0, 0,
1340 0, 0, 0, 0, 0, 21, 0, 23, 0, 25,
1341 26, 27, 0, 0, 0, 0, 0, 0, 0, 0,
1342 0, 257, 0, 33, 0, 0, 0, 0, 35, 0,
1343 0, 36, 37, 0, 0, 0, 0, 0, 0, 0,
1344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1346 0, 38, 39, 0, 0, 0, 0, 0, 0, 0,
1347 0, 0, 0, 0, 0, 0, 40, 41, 42, 43,
1348 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
1349 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1350 64, 65, 66, 67, 0, 68, 0, 69, 0, 70,
1351 2, 3, 4, 110, 0, 6, 7, 0, 0, 8,
1352 9, 0, 0, 0, 0, 14, 15, 0, 0, 0,
1353 18, 0, 0, 0, 0, 0, 0, 0, 21, 0,
1354 23, 0, 25, 26, 27, 0, 0, 0, 0, 0,
1355 0, 0, 0, 0, 0, 0, 33, 0, 0, 0,
1356 0, 35, 0, 0, 36, 37, 0, 0, 0, 0,
1357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1359 0, 0, 0, 0, 38, 39, 0, 0, 0, 0,
1360 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,
1361 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
1362 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
1363 61, 62, 63, 64, 65, 66, 67, 0, 68, 0,
1364 69, 0, 70, 2, 3, 4, 110, 0, 6, 7,
1365 0, 0, 0, 0, 0, 0, 0, 0, 14, 0,
1366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1367 0, 0, 0, 23, 0, 25, 0, 27, 0, 0,
1368 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1369 0, 0, 0, 0, 35, 0, 0, 36, 37, 0,
1370 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1371 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1372 0, 0, 0, 0, 0, 0, 0, 111, 112, 0,
1373 0, 0, 0, 0, 0, 0, 0, 0, 113, 0,
1374 125, 0, 40, 41, 42, 43, 44, 45, 46, 47,
1375 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
1376 114, 59, 60, 61, 62, 63, 64, 65, 66, 67,
1377 0, 68, 0, 69, 0, 70, 2, 3, 4, 110,
1378 0, 6, 7, 0, 0, 0, 0, 0, 0, 0,
1379 0, 14, 0, 0, 0, 0, 0, 0, 0, 0,
1380 0, 0, 0, 0, 0, 0, 23, 0, 25, 0,
1381 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1382 0, 0, 0, 0, 0, 0, 0, 35, 0, 0,
1383 36, 37, 141, 0, 0, 0, 0, 0, 0, 0,
1384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1386 111, 112, 0, 0, 0, 0, 0, 0, 0, 0,
1387 0, 113, 0, 0, 0, 40, 41, 42, 43, 44,
1388 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1389 55, 56, 57, 114, 59, 60, 61, 62, 63, 64,
1390 65, 66, 67, 0, 68, 0, 69, 0, 70, 2,
1391 3, 4, 110, 0, 6, 7, 0, 0, 0, 0,
1392 0, 0, 0, 0, 14, 0, 0, 0, 0, 0,
1393 0, 0, 0, 0, 0, 0, 0, 0, 0, 23,
1394 0, 25, 0, 27, 0, 0, 0, 0, 0, 0,
1395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1396 35, 0, 0, 36, 37, 0, 0, 0, 0, 0,
1397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1399 0, 0, 0, 111, 112, 0, 0, 0, 0, 0,
1400 0, 0, 0, 0, 113, 0, 0, 0, 40, 41,
1401 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
1402 52, 53, 54, 55, 56, 57, 114, 59, 60, 61,
1403 62, 63, 64, 65, 66, 67, 0, 68, 0, 69,
1404 153, 70, 2, 3, 4, 110, 0, 6, 7, 0,
1405 0, 0, 0, 0, 0, 0, 0, 14, 0, 0,
1406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1407 0, 0, 23, 0, 25, 0, 27, 0, 0, 0,
1408 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1409 0, 0, 0, 35, 0, 0, 36, 37, 0, 0,
1410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1412 0, 0, 0, 0, 0, 203, 111, 112, 0, 0,
1413 0, 0, 0, 0, 0, 0, 0, 113, 0, 0,
1414 0, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1415 49, 50, 51, 52, 53, 54, 55, 56, 57, 114,
1416 59, 60, 61, 62, 63, 64, 65, 66, 67, 0,
1417 68, 0, 69, 0, 70, 2, 3, 4, 110, 0,
1418 6, 7, 0, 0, 0, 0, 0, 0, 0, 0,
1419 14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1420 0, 0, 0, 0, 0, 23, 0, 25, 0, 27,
1421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1422 0, 0, 0, 0, 0, 0, 35, 0, 0, 36,
1423 37, 0, 438, 0, 0, 0, 0, 0, 0, 0,
1424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1425 0, 0, 0, 0, 0, 0, 0, 0, 0, 111,
1426 112, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1427 113, 0, 0, 0, 40, 41, 42, 43, 44, 45,
1428 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
1429 56, 57, 114, 59, 60, 61, 62, 63, 64, 65,
1430 66, 67, 0, 68, 0, 69, 0, 70, 2, 3,
1431 4, 110, 0, 6, 7, 0, 0, 0, 0, 0,
1432 0, 0, 0, 14, 0, 0, 0, 0, 0, 0,
1433 0, 0, 0, 0, 0, 0, 0, 0, 23, 0,
1434 25, 0, 27, 0, 0, 0, 0, 0, 0, 0,
1435 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,
1436 0, 0, 36, 37, 0, 0, 0, 0, 0, 0,
1437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1439 0, 0, 111, 112, 0, 0, 0, 0, 0, 0,
1440 0, 0, 0, 113, 0, 0, 0, 40, 41, 42,
1441 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
1442 53, 54, 55, 56, 57, 114, 59, 60, 61, 62,
1443 63, 64, 65, 66, 67, 0, 68, 0, 69, 0,
1444 70, 2, 3, 4, 110, 0, 6, 7, 0, 0,
1445 0, 0, 0, 0, 0, 0, 14, 0, 0, 0,
1446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1447 0, 23, 0, 25, 0, 27, 2, 3, 4, 110,
1448 0, 6, 7, 0, 0, 0, 0, 0, 0, 0,
1449 0, 14, 35, 0, 0, 36, 37, 0, 0, 0,
1450 0, 0, 0, 0, 0, 0, 23, 0, 25, 0,
1451 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1452 0, 0, 0, 0, 0, 38, 39, 35, 0, 0,
1453 36, 37, 0, 175, 0, 0, 0, 0, 0, 0,
1454 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1455 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
1456 60, 61, 62, 63, 64, 65, 66, 67, 221, 68,
1457 0, 69, 0, 70, 0, 40, 41, 42, 43, 44,
1458 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1459 55, 56, 57, 0, 59, 60, 61, 62, 63, 64,
1460 65, 66, 67, 221, 68, 176, 69, 0, 70, 177,
1461 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
1462 188, 189, 190, 191, 0, 192, 193, 175, 222, 223,
1463 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
1464 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
1465 244, 245, 246, 247, 248, 249, 250, 251, 252, 0,
1466 253, 254, 0, 222, 223, 224, 225, 226, 227, 228,
1467 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
1468 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
1469 249, 250, 251, 252, 221, 253, 254, 0, 0, -89,
1470 286, 0, 0, 177, 178, 179, 180, 181, 182, 183,
1471 184, 185, 186, 187, 188, 189, 190, 191, 0, 192,
1472 193, 0, 0, 0, 0, 0, 0, 0, 221, 385,
1473 0, 0, 0, 0, 0, 295, 0, 0, 0, 0,
1474 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1475 0, 0, 0, 0, 222, 223, 224, 225, 226, 227,
1476 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
1477 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
1478 248, 249, 250, 251, 252, 0, 253, 254, 222, 223,
1479 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
1480 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
1481 244, 245, 246, 247, 248, 249, 250, 251, 252, 221,
1482 253, 254, 0, 447, 448, 386, 387, 388, 389, 390,
1483 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
1484 401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
1485 411, 412, 413, 221, 414, 0, 0, 0, 440, 0,
1486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1487 0, 0, 0, 0, 0, 0, 0, 221, 0, 222,
1488 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
1489 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
1490 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
1491 0, 253, 254, 222, 223, 224, 225, 226, 227, 228,
1492 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
1493 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
1494 249, 250, 251, 252, 221, 253, 254, 0, 0, 454,
1495 -89, -89, -89, 238, 239, 240, 241, 242, 243, 244,
1496 245, 246, 247, 248, 249, 250, 251, 252, 0, 253,
1497 254, 0, 0, 0, 0, 0, 0, 0, 221, 0,
1498 0, 0, 296, 0, 0, 0, 0, 0, 0, 0,
1499 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1500 0, 0, 0, 0, 222, 223, 224, 225, 226, 227,
1501 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
1502 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
1503 248, 249, 250, 251, 252, 0, 253, 254, 222, 223,
1504 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
1505 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
1506 244, 245, 246, 247, 248, 249, 250, 251, 252, 221,
1507 253, 254, 0, 518, 0, 0, 0, 0, 0, 0,
1508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1509 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1510 0, 0, 0, 221, 0, 0, 0, 520, 0, 0,
1511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1512 0, 0, 0, 0, 0, 0, 0, 0, 0, 222,
1513 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
1514 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
1515 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
1516 0, 253, 254, 222, 223, 224, 225, 226, 227, 228,
1517 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
1518 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
1519 249, 250, 251, 252, 221, 253, 254, 0, 521, 0,
1520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1522 0, 0, 0, 0, 0, 0, 0, 0, 221, 0,
1523 0, 0, 523, 0, 0, 0, 0, 0, 0, 0,
1524 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1525 470, 0, 0, 0, 222, 223, 224, 225, 226, 227,
1526 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
1527 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
1528 248, 249, 250, 251, 252, 221, 253, 254, 222, 223,
1529 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
1530 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
1531 244, 245, 246, 247, 248, 249, 250, 251, 252, 0,
1532 253, 254, 0, 524, 0, 0, 0, 221, 0, 267,
1533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1534 0, 0, 0, 0, 0, 222, 223, 224, 225, 226,
1535 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
1536 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
1537 247, 248, 249, 250, 251, 252, 327, 253, 254, 221,
1538 0, 0, 0, 0, 0, 0, 0, 222, 223, 224,
1539 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
1540 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
1541 245, 246, 247, 248, 249, 250, 251, 252, 0, 253,
1542 254, 221, 0, 0, 0, 0, 0, 0, 495, 0,
1543 0, 0, 0, 0, 0, 0, 0, 0, 0, 222,
1544 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
1545 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
1546 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
1547 532, 253, 254, 0, 0, 221, 0, 0, 0, 0,
1548 0, 222, 223, 224, 225, 226, 227, 228, 229, 230,
1549 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
1550 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
1551 251, 252, 221, 253, 254, 0, 0, 0, 0, 535,
1552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1553 0, 0, 0, 0, 534, 222, 223, 224, 225, 226,
1554 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
1555 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
1556 247, 248, 249, 250, 251, 252, 221, 253, 254, 0,
1557 0, 0, 222, 223, 224, 225, 226, 227, 228, 229,
1558 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
1559 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
1560 250, 251, 252, 221, 253, 254, 0, 0, 0, 0,
1561 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1562 0, 0, 0, 0, 0, 0, 222, 223, 224, 225,
1563 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
1564 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
1565 246, 247, 248, 249, 250, 251, 252, 221, 253, 254,
1566 0, 0, 0, 222, 223, 224, 225, 226, 227, 228,
1567 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
1568 239, 240, 326, 242, 243, 244, 245, 246, 247, 248,
1569 249, 250, 251, 252, 221, 253, 254, 0, 0, 0,
1570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1571 0, 0, 0, 0, 0, 0, 0, 0, 223, 224,
1572 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
1573 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
1574 245, 246, 247, 248, 249, 250, 251, 252, 221, 253,
1575 254, 0, 0, 0, 0, 0, 0, 225, 226, 227,
1576 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
1577 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
1578 248, 249, 250, 251, 252, 221, 253, 254, 0, 0,
1579 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1581 0, 0, 0, 227, 228, 229, 230, 231, 232, 233,
1582 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
1583 244, 245, 246, 247, 248, 249, 250, 251, 252, 0,
1584 253, 254, 0, 0, 0, 0, 0, 0, 0, 0,
1585 0, -89, -89, -89, -89, -89, -89, -89, 235, 236,
1586 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
1587 247, 248, 249, 250, 251, 252, 0, 253, 254
1588};
1589
1590static const yytype_int16 yycheck[] =
1591{
1592 19, 36, 132, 86, 23, 22, 131, 29, 131, 146,
1593 35, 30, 74, 125, 135, 7, 6, 36, 139, 136,
1594 205, 10, 11, 193, 136, 7, 427, 212, 57, 132,
1595 60, 7, 59, 42, 69, 132, 7, 134, 7, 6,
1596 137, 39, 40, 105, 134, 43, 7, 137, 7, 57,
1597 69, 70, 8, 9, 27, 28, 57, 6, 60, 133,
1598 7, 12, 13, 8, 7, 6, 41, 57, 100, 77,
1599 95, 96, 97, 98, 99, 100, 193, 262, 103, 6,
1600 57, 193, 135, 0, 254, 132, 7, 106, 107, 108,
1601 138, 135, 111, 112, 113, 47, 158, 57, 135, 121,
1602 122, 135, 138, 504, 100, 77, 135, 124, 100, 139,
1603 137, 281, 77, 59, 131, 86, 87, 88, 89, 90,
1604 91, 92, 93, 94, 100, 96, 97, 135, 99, 100,
1605 99, 100, 533, 152, 259, 137, 97, 254, 99, 100,
1606 99, 100, 254, 133, 91, 92, 93, 94, 137, 96,
1607 97, 137, 99, 100, 97, 134, 99, 100, 6, 41,
1608 59, 41, 41, 137, 281, 77, 136, 59, 6, 281,
1609 91, 92, 93, 94, 137, 96, 97, 139, 99, 100,
1610 137, 200, 135, 138, 203, 139, 269, 100, 373, 59,
1611 100, 274, 136, 135, 213, 41, 136, 135, 217, 282,
1612 137, 220, 221, 222, 223, 224, 225, 226, 227, 228,
1613 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
1614 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
1615 249, 250, 251, 252, 253, 297, 218, 8, 6, 20,
1616 77, 6, 259, 77, 25, 264, 431, 80, 267, 30,
1617 435, 32, 77, 34, 59, 56, 137, 292, 80, 278,
1618 279, 137, 134, 44, 45, 284, 80, 48, 6, 50,
1619 139, 296, 136, 8, 6, 158, 56, 10, 445, 301,
1620 299, 459, 213, 324, 7, 218, 483, 483, 295, 422,
1621 -1, -1, -1, -1, 415, -1, -1, 422, -1, 422,
1622 437, -1, -1, -1, -1, 324, -1, 326, 327, -1,
1623 329, -1, -1, -1, -1, -1, -1, 0, -1, -1,
1624 445, -1, -1, -1, -1, -1, -1, 10, -1, -1,
1625 -1, -1, 462, -1, 459, -1, -1, -1, -1, 22,
1626 -1, -1, -1, -1, -1, -1, 29, 369, 370, -1,
1627 -1, -1, -1, -1, -1, 38, 39, -1, 377, -1,
1628 -1, -1, 379, 86, 87, 88, 89, 90, 91, 92,
1629 93, 94, -1, 96, 97, -1, 99, 100, -1, -1,
1630 38, 39, -1, -1, -1, -1, 469, -1, -1, -1,
1631 -1, 74, -1, -1, -1, -1, -1, -1, -1, -1,
1632 -1, 436, -1, -1, -1, 422, -1, -1, -1, -1,
1633 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1634 -1, 440, 105, -1, -1, -1, -1, -1, 445, 448,
1635 -1, -1, 451, -1, -1, 454, 519, -1, 121, 122,
1636 -1, 124, 459, -1, -1, 464, -1, -1, 131, 132,
1637 -1, -1, -1, 472, -1, 474, -1, -1, -1, 478,
1638 -1, -1, 481, -1, -1, -1, 485, 486, -1, -1,
1639 -1, -1, -1, -1, -1, 158, 495, -1, -1, -1,
1640 -1, -1, 517, -1, -1, -1, 505, 506, -1, -1,
1641 509, -1, 175, 176, 177, 178, 179, 180, 181, 182,
1642 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
1643 -1, -1, 531, 532, 7, -1, 535, 175, 176, 177,
1644 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
1645 188, 189, 190, 191, 192, 3, 4, 5, 6, -1,
1646 8, 9, -1, -1, -1, -1, -1, -1, -1, -1,
1647 18, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1648 -1, -1, -1, -1, -1, 33, -1, 35, -1, 37,
1649 -1, -1, -1, -1, -1, -1, 259, -1, -1, -1,
1650 -1, -1, -1, -1, -1, -1, 54, -1, -1, 57,
1651 58, -1, 60, 86, 87, 88, 89, 90, 91, 92,
1652 93, 94, -1, 96, 97, -1, 99, 100, -1, -1,
1653 -1, -1, -1, -1, 297, -1, -1, -1, 301, 87,
1654 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1655 98, -1, -1, -1, 102, 103, 104, 105, 106, 107,
1656 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
1657 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
1658 128, 129, -1, 131, -1, 133, 7, 135, -1, -1,
1659 -1, 139, -1, -1, -1, -1, -1, -1, -1, -1,
1660 -1, -1, -1, -1, -1, -1, 369, 370, -1, 3,
1661 4, 5, 6, -1, 8, 9, 379, -1, -1, -1,
1662 -1, -1, -1, -1, 18, -1, -1, -1, -1, -1,
1663 -1, -1, -1, -1, -1, -1, -1, -1, -1, 33,
1664 -1, 35, -1, 37, -1, -1, -1, -1, -1, -1,
1665 -1, -1, -1, -1, -1, -1, -1, -1, -1, 422,
1666 54, -1, -1, 57, 58, 86, 87, 88, 89, 90,
1667 91, 92, 93, 94, -1, 96, 97, -1, 99, 100,
1668 -1, -1, 445, -1, -1, -1, -1, -1, -1, -1,
1669 -1, -1, -1, 87, 88, -1, 459, -1, -1, 462,
1670 -1, -1, -1, -1, 98, -1, -1, -1, 102, 103,
1671 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1672 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1673 124, 125, 126, 127, 128, 129, 7, 131, -1, 133,
1674 -1, 135, -1, 0, 1, 139, 3, 4, 5, 6,
1675 -1, 8, 9, -1, -1, 12, 13, 14, 15, 16,
1676 17, 18, 19, 20, -1, 22, 23, -1, 25, -1,
1677 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
1678 37, 38, -1, -1, -1, 42, -1, 44, 45, -1,
1679 47, 48, 49, 50, -1, -1, -1, 54, -1, -1,
1680 57, 58, 73, 74, 75, 76, 77, 78, 79, 80,
1681 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
1682 91, 92, 93, 94, 95, 96, 97, -1, 99, 100,
1683 87, 88, -1, -1, -1, -1, -1, -1, -1, -1,
1684 -1, -1, -1, -1, -1, 102, 103, 104, 105, 106,
1685 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1686 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
1687 127, 128, 129, -1, 131, -1, 133, 1, 135, 3,
1688 4, 5, 6, -1, 8, 9, -1, -1, 12, 13,
1689 -1, -1, 16, 17, 18, 19, -1, -1, 22, 23,
1690 -1, -1, -1, -1, -1, -1, -1, 31, -1, 33,
1691 -1, 35, 36, 37, 38, -1, -1, -1, 42, -1,
1692 -1, -1, -1, 47, -1, 49, -1, -1, -1, -1,
1693 54, -1, -1, 57, 58, -1, -1, -1, -1, -1,
1694 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1695 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1696 -1, -1, -1, 87, 88, -1, -1, -1, -1, -1,
1697 -1, -1, -1, -1, -1, -1, -1, -1, 102, 103,
1698 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1699 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1700 124, 125, 126, 127, 128, 129, -1, 131, -1, 133,
1701 -1, 135, 136, 3, 4, 5, 6, -1, 8, 9,
1702 -1, -1, -1, -1, -1, -1, -1, -1, 18, -1,
1703 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1704 -1, -1, -1, 33, -1, 35, -1, 37, -1, -1,
1705 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1706 -1, -1, -1, -1, 54, -1, -1, 57, 58, -1,
1707 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1708 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1709 -1, -1, -1, -1, -1, -1, -1, 87, 88, -1,
1710 -1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
1711 -1, -1, 102, 103, 104, 105, 106, 107, 108, 109,
1712 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1713 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
1714 -1, 131, -1, 133, -1, 135, 136, 3, 4, 5,
1715 6, -1, 8, 9, -1, -1, 12, 13, 14, 15,
1716 16, 17, 18, 19, 20, -1, 22, 23, -1, 25,
1717 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
1718 36, 37, 38, -1, -1, -1, 42, -1, 44, 45,
1719 -1, 47, 48, 49, 50, -1, -1, -1, 54, -1,
1720 -1, 57, 58, -1, -1, -1, -1, -1, -1, -1,
1721 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1722 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1723 -1, 87, 88, -1, -1, -1, -1, -1, -1, -1,
1724 -1, -1, -1, -1, -1, -1, 102, 103, 104, 105,
1725 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
1726 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
1727 126, 127, 128, 129, -1, 131, -1, 133, -1, 135,
1728 3, 4, 5, 6, -1, 8, 9, -1, -1, 12,
1729 13, 14, 15, 16, 17, 18, 19, 20, -1, 22,
1730 23, -1, 25, -1, -1, -1, -1, 30, 31, 32,
1731 33, 34, 35, 36, 37, 38, -1, -1, -1, 42,
1732 -1, 44, 45, -1, -1, 48, 49, 50, -1, -1,
1733 -1, 54, -1, -1, 57, 58, -1, -1, -1, -1,
1734 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1735 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1736 -1, -1, -1, -1, 87, 88, -1, -1, -1, -1,
1737 -1, -1, -1, -1, -1, -1, -1, -1, -1, 102,
1738 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
1739 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1740 123, 124, 125, 126, 127, 128, 129, -1, 131, -1,
1741 133, -1, 135, 3, 4, 5, 6, -1, 8, 9,
1742 -1, -1, 12, 13, 14, -1, 16, 17, 18, 19,
1743 20, -1, 22, 23, -1, 25, -1, -1, -1, -1,
1744 30, 31, 32, 33, 34, 35, 36, 37, 38, -1,
1745 -1, -1, 42, -1, 44, 45, -1, -1, 48, 49,
1746 50, -1, -1, -1, 54, -1, -1, 57, 58, -1,
1747 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1748 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1749 -1, -1, -1, -1, -1, -1, -1, 87, 88, -1,
1750 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1751 -1, -1, 102, 103, 104, 105, 106, 107, 108, 109,
1752 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1753 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
1754 -1, 131, -1, 133, -1, 135, 3, 4, 5, 6,
1755 -1, 8, 9, -1, -1, 12, 13, -1, -1, 16,
1756 17, 18, 19, 20, -1, 22, 23, -1, 25, -1,
1757 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
1758 37, 38, -1, -1, -1, 42, -1, 44, 45, -1,
1759 -1, 48, 49, 50, -1, -1, -1, 54, -1, -1,
1760 57, 58, -1, -1, -1, -1, -1, -1, -1, -1,
1761 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1762 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1763 87, 88, -1, -1, -1, -1, -1, -1, -1, -1,
1764 -1, -1, -1, -1, -1, 102, 103, 104, 105, 106,
1765 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1766 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
1767 127, 128, 129, -1, 131, -1, 133, -1, 135, 3,
1768 4, 5, 6, -1, 8, 9, -1, -1, 12, 13,
1769 -1, -1, 16, 17, 18, 19, -1, -1, 22, 23,
1770 -1, 25, -1, -1, -1, -1, -1, 31, -1, 33,
1771 -1, 35, 36, 37, 38, -1, -1, -1, 42, -1,
1772 -1, -1, -1, -1, -1, 49, -1, -1, -1, -1,
1773 54, -1, -1, 57, 58, -1, -1, -1, -1, -1,
1774 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1775 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1776 -1, -1, -1, 87, 88, -1, -1, -1, -1, -1,
1777 -1, -1, -1, -1, -1, -1, -1, -1, 102, 103,
1778 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1779 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1780 124, 125, 126, 127, 128, 129, -1, 131, -1, 133,
1781 134, 135, 3, 4, 5, 6, -1, 8, 9, -1,
1782 -1, 12, 13, -1, -1, 16, 17, 18, 19, -1,
1783 -1, 22, 23, -1, 25, -1, -1, -1, -1, -1,
1784 31, -1, 33, -1, 35, 36, 37, 38, -1, -1,
1785 -1, 42, -1, -1, -1, -1, -1, -1, 49, -1,
1786 -1, -1, -1, 54, -1, -1, 57, 58, -1, -1,
1787 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1788 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1789 -1, -1, -1, -1, -1, -1, 87, 88, -1, -1,
1790 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1791 -1, 102, 103, 104, 105, 106, 107, 108, 109, 110,
1792 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
1793 121, 122, 123, 124, 125, 126, 127, 128, 129, -1,
1794 131, -1, 133, -1, 135, 3, 4, 5, 6, -1,
1795 8, 9, -1, -1, 12, 13, -1, -1, 16, 17,
1796 18, 19, -1, -1, 22, 23, -1, -1, -1, -1,
1797 -1, -1, -1, 31, -1, 33, -1, 35, 36, 37,
1798 38, -1, -1, -1, 42, -1, -1, -1, -1, 47,
1799 -1, 49, -1, -1, -1, -1, 54, -1, -1, 57,
1800 58, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1801 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1802 -1, -1, -1, -1, -1, -1, -1, -1, -1, 87,
1803 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1804 -1, -1, -1, -1, 102, 103, 104, 105, 106, 107,
1805 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
1806 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
1807 128, 129, -1, 131, -1, 133, -1, 135, 3, 4,
1808 5, 6, -1, 8, 9, -1, -1, 12, 13, -1,
1809 -1, 16, 17, 18, 19, -1, -1, 22, 23, -1,
1810 -1, -1, -1, -1, -1, -1, 31, -1, 33, -1,
1811 35, 36, 37, 38, -1, -1, -1, 42, -1, -1,
1812 -1, -1, -1, -1, 49, -1, -1, -1, -1, 54,
1813 -1, -1, 57, 58, -1, -1, -1, -1, -1, -1,
1814 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1815 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1816 -1, -1, 87, 88, -1, -1, -1, -1, -1, -1,
1817 -1, -1, -1, -1, -1, -1, -1, 102, 103, 104,
1818 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1819 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1820 125, 126, 127, 128, 129, -1, 131, -1, 133, -1,
1821 135, 3, 4, 5, 6, -1, 8, 9, -1, -1,
1822 12, 13, -1, -1, 16, 17, 18, 19, -1, -1,
1823 -1, 23, -1, -1, -1, -1, -1, -1, -1, 31,
1824 -1, 33, -1, 35, 36, 37, -1, -1, -1, -1,
1825 42, -1, -1, -1, -1, -1, -1, 49, -1, -1,
1826 -1, -1, 54, -1, -1, 57, 58, -1, -1, -1,
1827 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1828 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1829 -1, -1, -1, -1, -1, 87, 88, -1, -1, -1,
1830 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1831 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
1832 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
1833 122, 123, 124, 125, 126, 127, 128, 129, -1, 131,
1834 -1, 133, -1, 135, 3, 4, 5, 6, -1, 8,
1835 9, -1, -1, 12, 13, -1, -1, -1, -1, 18,
1836 19, -1, -1, -1, 23, -1, -1, -1, -1, -1,
1837 -1, -1, 31, -1, 33, -1, 35, 36, 37, -1,
1838 -1, -1, -1, -1, -1, -1, -1, -1, 47, -1,
1839 49, -1, -1, -1, -1, 54, -1, -1, 57, 58,
1840 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1841 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1842 -1, -1, -1, -1, -1, -1, -1, -1, 87, 88,
1843 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1844 -1, -1, -1, 102, 103, 104, 105, 106, 107, 108,
1845 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
1846 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
1847 129, -1, 131, -1, 133, -1, 135, 3, 4, 5,
1848 6, -1, 8, 9, -1, -1, 12, 13, -1, -1,
1849 -1, -1, 18, 19, -1, -1, -1, 23, -1, -1,
1850 -1, -1, -1, -1, -1, 31, -1, 33, -1, 35,
1851 36, 37, -1, -1, -1, -1, -1, -1, -1, -1,
1852 -1, 47, -1, 49, -1, -1, -1, -1, 54, -1,
1853 -1, 57, 58, -1, -1, -1, -1, -1, -1, -1,
1854 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1855 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1856 -1, 87, 88, -1, -1, -1, -1, -1, -1, -1,
1857 -1, -1, -1, -1, -1, -1, 102, 103, 104, 105,
1858 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
1859 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
1860 126, 127, 128, 129, -1, 131, -1, 133, -1, 135,
1861 3, 4, 5, 6, -1, 8, 9, -1, -1, 12,
1862 13, -1, -1, -1, -1, 18, 19, -1, -1, -1,
1863 23, -1, -1, -1, -1, -1, -1, -1, 31, -1,
1864 33, -1, 35, 36, 37, -1, -1, -1, -1, -1,
1865 -1, -1, -1, -1, -1, -1, 49, -1, -1, -1,
1866 -1, 54, -1, -1, 57, 58, -1, -1, -1, -1,
1867 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1868 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1869 -1, -1, -1, -1, 87, 88, -1, -1, -1, -1,
1870 -1, -1, -1, -1, -1, -1, -1, -1, -1, 102,
1871 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
1872 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1873 123, 124, 125, 126, 127, 128, 129, -1, 131, -1,
1874 133, -1, 135, 3, 4, 5, 6, -1, 8, 9,
1875 -1, -1, -1, -1, -1, -1, -1, -1, 18, -1,
1876 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1877 -1, -1, -1, 33, -1, 35, -1, 37, -1, -1,
1878 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1879 -1, -1, -1, -1, 54, -1, -1, 57, 58, -1,
1880 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1881 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1882 -1, -1, -1, -1, -1, -1, -1, 87, 88, -1,
1883 -1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
1884 100, -1, 102, 103, 104, 105, 106, 107, 108, 109,
1885 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1886 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
1887 -1, 131, -1, 133, -1, 135, 3, 4, 5, 6,
1888 -1, 8, 9, -1, -1, -1, -1, -1, -1, -1,
1889 -1, 18, -1, -1, -1, -1, -1, -1, -1, -1,
1890 -1, -1, -1, -1, -1, -1, 33, -1, 35, -1,
1891 37, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1892 -1, -1, -1, -1, -1, -1, -1, 54, -1, -1,
1893 57, 58, 59, -1, -1, -1, -1, -1, -1, -1,
1894 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1895 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1896 87, 88, -1, -1, -1, -1, -1, -1, -1, -1,
1897 -1, 98, -1, -1, -1, 102, 103, 104, 105, 106,
1898 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1899 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
1900 127, 128, 129, -1, 131, -1, 133, -1, 135, 3,
1901 4, 5, 6, -1, 8, 9, -1, -1, -1, -1,
1902 -1, -1, -1, -1, 18, -1, -1, -1, -1, -1,
1903 -1, -1, -1, -1, -1, -1, -1, -1, -1, 33,
1904 -1, 35, -1, 37, -1, -1, -1, -1, -1, -1,
1905 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1906 54, -1, -1, 57, 58, -1, -1, -1, -1, -1,
1907 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1908 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1909 -1, -1, -1, 87, 88, -1, -1, -1, -1, -1,
1910 -1, -1, -1, -1, 98, -1, -1, -1, 102, 103,
1911 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1912 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1913 124, 125, 126, 127, 128, 129, -1, 131, -1, 133,
1914 134, 135, 3, 4, 5, 6, -1, 8, 9, -1,
1915 -1, -1, -1, -1, -1, -1, -1, 18, -1, -1,
1916 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1917 -1, -1, 33, -1, 35, -1, 37, -1, -1, -1,
1918 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1919 -1, -1, -1, 54, -1, -1, 57, 58, -1, -1,
1920 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1921 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1922 -1, -1, -1, -1, -1, 86, 87, 88, -1, -1,
1923 -1, -1, -1, -1, -1, -1, -1, 98, -1, -1,
1924 -1, 102, 103, 104, 105, 106, 107, 108, 109, 110,
1925 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
1926 121, 122, 123, 124, 125, 126, 127, 128, 129, -1,
1927 131, -1, 133, -1, 135, 3, 4, 5, 6, -1,
1928 8, 9, -1, -1, -1, -1, -1, -1, -1, -1,
1929 18, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1930 -1, -1, -1, -1, -1, 33, -1, 35, -1, 37,
1931 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1932 -1, -1, -1, -1, -1, -1, 54, -1, -1, 57,
1933 58, -1, 60, -1, -1, -1, -1, -1, -1, -1,
1934 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1935 -1, -1, -1, -1, -1, -1, -1, -1, -1, 87,
1936 88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1937 98, -1, -1, -1, 102, 103, 104, 105, 106, 107,
1938 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
1939 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
1940 128, 129, -1, 131, -1, 133, -1, 135, 3, 4,
1941 5, 6, -1, 8, 9, -1, -1, -1, -1, -1,
1942 -1, -1, -1, 18, -1, -1, -1, -1, -1, -1,
1943 -1, -1, -1, -1, -1, -1, -1, -1, 33, -1,
1944 35, -1, 37, -1, -1, -1, -1, -1, -1, -1,
1945 -1, -1, -1, -1, -1, -1, -1, -1, -1, 54,
1946 -1, -1, 57, 58, -1, -1, -1, -1, -1, -1,
1947 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1948 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1949 -1, -1, 87, 88, -1, -1, -1, -1, -1, -1,
1950 -1, -1, -1, 98, -1, -1, -1, 102, 103, 104,
1951 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1952 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1953 125, 126, 127, 128, 129, -1, 131, -1, 133, -1,
1954 135, 3, 4, 5, 6, -1, 8, 9, -1, -1,
1955 -1, -1, -1, -1, -1, -1, 18, -1, -1, -1,
1956 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1957 -1, 33, -1, 35, -1, 37, 3, 4, 5, 6,
1958 -1, 8, 9, -1, -1, -1, -1, -1, -1, -1,
1959 -1, 18, 54, -1, -1, 57, 58, -1, -1, -1,
1960 -1, -1, -1, -1, -1, -1, 33, -1, 35, -1,
1961 37, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1962 -1, -1, -1, -1, -1, 87, 88, 54, -1, -1,
1963 57, 58, -1, 7, -1, -1, -1, -1, -1, -1,
1964 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
1965 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
1966 122, 123, 124, 125, 126, 127, 128, 129, 7, 131,
1967 -1, 133, -1, 135, -1, 102, 103, 104, 105, 106,
1968 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1969 117, 118, 119, -1, 121, 122, 123, 124, 125, 126,
1970 127, 128, 129, 7, 131, 79, 133, -1, 135, 83,
1971 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
1972 94, 95, 96, 97, -1, 99, 100, 7, 67, 68,
1973 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1974 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
1975 89, 90, 91, 92, 93, 94, 95, 96, 97, -1,
1976 99, 100, -1, 67, 68, 69, 70, 71, 72, 73,
1977 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
1978 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
1979 94, 95, 96, 97, 7, 99, 100, -1, -1, 79,
1980 139, -1, -1, 83, 84, 85, 86, 87, 88, 89,
1981 90, 91, 92, 93, 94, 95, 96, 97, -1, 99,
1982 100, -1, -1, -1, -1, -1, -1, -1, 7, 6,
1983 -1, -1, -1, -1, -1, 139, -1, -1, -1, -1,
1984 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1985 -1, -1, -1, -1, 67, 68, 69, 70, 71, 72,
1986 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1987 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
1988 93, 94, 95, 96, 97, -1, 99, 100, 67, 68,
1989 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1990 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
1991 89, 90, 91, 92, 93, 94, 95, 96, 97, 7,
1992 99, 100, -1, 136, 137, 102, 103, 104, 105, 106,
1993 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1994 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
1995 127, 128, 129, 7, 131, -1, -1, -1, 137, -1,
1996 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1997 -1, -1, -1, -1, -1, -1, -1, 7, -1, 67,
1998 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
1999 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
2000 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
2001 -1, 99, 100, 67, 68, 69, 70, 71, 72, 73,
2002 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
2003 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
2004 94, 95, 96, 97, 7, 99, 100, -1, -1, 137,
2005 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
2006 90, 91, 92, 93, 94, 95, 96, 97, -1, 99,
2007 100, -1, -1, -1, -1, -1, -1, -1, 7, -1,
2008 -1, -1, 136, -1, -1, -1, -1, -1, -1, -1,
2009 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2010 -1, -1, -1, -1, 67, 68, 69, 70, 71, 72,
2011 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
2012 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
2013 93, 94, 95, 96, 97, -1, 99, 100, 67, 68,
2014 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
2015 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
2016 89, 90, 91, 92, 93, 94, 95, 96, 97, 7,
2017 99, 100, -1, 136, -1, -1, -1, -1, -1, -1,
2018 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2019 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2020 -1, -1, -1, 7, -1, -1, -1, 136, -1, -1,
2021 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2022 -1, -1, -1, -1, -1, -1, -1, -1, -1, 67,
2023 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
2024 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
2025 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
2026 -1, 99, 100, 67, 68, 69, 70, 71, 72, 73,
2027 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
2028 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
2029 94, 95, 96, 97, 7, 99, 100, -1, 136, -1,
2030 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2031 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2032 -1, -1, -1, -1, -1, -1, -1, -1, 7, -1,
2033 -1, -1, 136, -1, -1, -1, -1, -1, -1, -1,
2034 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2035 29, -1, -1, -1, 67, 68, 69, 70, 71, 72,
2036 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
2037 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
2038 93, 94, 95, 96, 97, 7, 99, 100, 67, 68,
2039 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
2040 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
2041 89, 90, 91, 92, 93, 94, 95, 96, 97, -1,
2042 99, 100, -1, 136, -1, -1, -1, 7, -1, 51,
2043 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2044 -1, -1, -1, -1, -1, 67, 68, 69, 70, 71,
2045 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
2046 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
2047 92, 93, 94, 95, 96, 97, 56, 99, 100, 7,
2048 -1, -1, -1, -1, -1, -1, -1, 67, 68, 69,
2049 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
2050 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
2051 90, 91, 92, 93, 94, 95, 96, 97, -1, 99,
2052 100, 7, -1, -1, -1, -1, -1, -1, 56, -1,
2053 -1, -1, -1, -1, -1, -1, -1, -1, -1, 67,
2054 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
2055 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
2056 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
2057 56, 99, 100, -1, -1, 7, -1, -1, -1, -1,
2058 -1, 67, 68, 69, 70, 71, 72, 73, 74, 75,
2059 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
2060 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
2061 96, 97, 7, 99, 100, -1, -1, -1, -1, 51,
2062 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2063 -1, -1, -1, -1, 29, 67, 68, 69, 70, 71,
2064 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
2065 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
2066 92, 93, 94, 95, 96, 97, 7, 99, 100, -1,
2067 -1, -1, 67, 68, 69, 70, 71, 72, 73, 74,
2068 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
2069 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
2070 95, 96, 97, 7, 99, 100, -1, -1, -1, -1,
2071 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2072 -1, -1, -1, -1, -1, -1, 67, 68, 69, 70,
2073 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
2074 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
2075 91, 92, 93, 94, 95, 96, 97, 7, 99, 100,
2076 -1, -1, -1, 67, 68, 69, 70, 71, 72, 73,
2077 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
2078 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
2079 94, 95, 96, 97, 7, 99, 100, -1, -1, -1,
2080 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2081 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
2082 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
2083 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
2084 90, 91, 92, 93, 94, 95, 96, 97, 7, 99,
2085 100, -1, -1, -1, -1, -1, -1, 70, 71, 72,
2086 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
2087 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
2088 93, 94, 95, 96, 97, 7, 99, 100, -1, -1,
2089 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2090 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2091 -1, -1, -1, 72, 73, 74, 75, 76, 77, 78,
2092 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
2093 89, 90, 91, 92, 93, 94, 95, 96, 97, -1,
2094 99, 100, -1, -1, -1, -1, -1, -1, -1, -1,
2095 -1, 73, 74, 75, 76, 77, 78, 79, 80, 81,
2096 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
2097 92, 93, 94, 95, 96, 97, -1, 99, 100
2098};
2099
2100 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2101 symbol of state STATE-NUM. */
2102static const yytype_uint8 yystos[] =
2103{
2104 0, 1, 3, 4, 5, 6, 8, 9, 12, 13,
2105 14, 15, 16, 17, 18, 19, 20, 22, 23, 25,
2106 30, 31, 32, 33, 34, 35, 36, 37, 38, 42,
2107 44, 45, 48, 49, 50, 54, 57, 58, 87, 88,
2108 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
2109 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
2110 122, 123, 124, 125, 126, 127, 128, 129, 131, 133,
2111 135, 141, 142, 143, 144, 146, 147, 149, 150, 153,
2112 154, 155, 156, 157, 158, 159, 166, 169, 170, 171,
2113 172, 178, 180, 181, 182, 185, 186, 194, 195, 198,
2114 199, 201, 202, 203, 206, 132, 57, 77, 135, 184,
2115 6, 87, 88, 98, 120, 177, 179, 180, 183, 147,
2116 42, 171, 171, 6, 57, 100, 179, 6, 169, 179,
2117 8, 133, 41, 172, 179, 6, 100, 210, 212, 6,
2118 184, 59, 176, 177, 179, 60, 139, 176, 196, 197,
2119 178, 178, 135, 134, 176, 179, 179, 0, 132, 145,
2120 15, 146, 20, 25, 30, 32, 34, 44, 45, 48,
2121 50, 148, 210, 138, 47, 7, 79, 83, 84, 85,
2122 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
2123 96, 97, 99, 100, 184, 184, 184, 184, 184, 184,
2124 135, 184, 146, 86, 173, 174, 175, 179, 179, 136,
2125 179, 204, 205, 57, 179, 179, 179, 135, 10, 11,
2126 137, 7, 67, 68, 69, 70, 71, 72, 73, 74,
2127 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
2128 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
2129 95, 96, 97, 99, 100, 47, 172, 47, 172, 135,
2130 161, 167, 168, 169, 182, 77, 138, 51, 154, 166,
2131 169, 207, 209, 170, 161, 181, 182, 211, 39, 40,
2132 43, 100, 161, 59, 137, 164, 139, 139, 197, 60,
2133 137, 60, 139, 179, 134, 139, 136, 144, 146, 77,
2134 6, 41, 178, 178, 178, 178, 178, 178, 178, 178,
2135 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
2136 211, 179, 179, 59, 137, 164, 86, 56, 136, 137,
2137 164, 173, 179, 183, 179, 179, 179, 179, 179, 179,
2138 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
2139 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
2140 179, 179, 179, 179, 179, 179, 179, 179, 211, 41,
2141 41, 1, 162, 163, 165, 166, 169, 77, 59, 137,
2142 164, 179, 6, 57, 133, 6, 102, 103, 104, 105,
2143 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
2144 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
2145 126, 127, 128, 129, 131, 213, 179, 210, 138, 132,
2146 134, 137, 208, 210, 179, 179, 211, 210, 6, 187,
2147 188, 189, 190, 191, 192, 193, 139, 139, 60, 176,
2148 137, 187, 184, 146, 179, 135, 172, 136, 137, 175,
2149 179, 135, 179, 59, 137, 172, 172, 136, 136, 137,
2150 164, 179, 41, 169, 135, 8, 151, 6, 152, 161,
2151 29, 200, 77, 6, 80, 134, 154, 209, 77, 160,
2152 160, 77, 59, 137, 164, 56, 80, 137, 164, 197,
2153 179, 134, 162, 179, 179, 56, 179, 165, 170, 179,
2154 59, 137, 134, 137, 210, 27, 28, 179, 179, 80,
2155 179, 179, 190, 191, 179, 179, 6, 139, 136, 136,
2156 136, 136, 179, 136, 136, 8, 6, 160, 179, 179,
2157 179, 56, 56, 210, 29, 51, 179, 179, 160, 179
2158};
2159
2160 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
2161static const yytype_uint8 yyr1[] =
2162{
2163 0, 140, 141, 142, 142, 143, 143, 143, 143, 143,
2164 143, 144, 144, 145, 145, 146, 146, 147, 147, 147,
2165 147, 147, 147, 147, 147, 147, 148, 148, 148, 148,
2166 148, 148, 148, 148, 148, 149, 150, 150, 150, 150,
2167 150, 150, 151, 151, 151, 152, 152, 152, 153, 154,
2168 154, 155, 155, 155, 156, 157, 157, 158, 158, 159,
2169 159, 160, 160, 161, 161, 161, 162, 162, 163, 163,
2170 164, 164, 165, 165, 166, 167, 168, 168, 169, 169,
2171 169, 170, 170, 170, 170, 170, 170, 170, 171, 171,
2172 172, 172, 172, 172, 172, 172, 172, 172, 173, 174,
2173 174, 175, 175, 175, 175, 176, 177, 177, 178, 178,
2174 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
2175 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
2176 178, 179, 179, 179, 179, 179, 179, 179, 179, 179,
2177 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
2178 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
2179 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,
2180 180, 180, 181, 181, 181, 181, 181, 181, 181, 181,
2181 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
2182 181, 181, 181, 181, 181, 181, 181, 181, 182, 182,
2183 183, 183, 184, 184, 185, 185, 186, 187, 188, 189,
2184 189, 189, 189, 189, 189, 190, 190, 191, 192, 193,
2185 193, 194, 194, 195, 195, 195, 195, 196, 196, 196,
2186 197, 197, 198, 199, 199, 200, 200, 201, 201, 201,
2187 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
2188 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
2189 201, 201, 201, 201, 201, 202, 202, 203, 203, 203,
2190 203, 204, 205, 205, 205, 205, 206, 206, 207, 207,
2191 207, 207, 208, 208, 209, 209, 210, 210, 211, 211,
2192 212, 212, 213, 213, 213, 213, 213, 213, 213, 213,
2193 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
2194 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
2195 213, 213
2196};
2197
2198 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
2199static const yytype_int8 yyr2[] =
2200{
2201 0, 2, 1, 0, 2, 1, 2, 3, 4, 2,
2202 3, 1, 2, 0, 1, 2, 1, 1, 1, 1,
2203 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2204 1, 1, 1, 1, 1, 2, 2, 4, 2, 6,
2205 6, 7, 0, 1, 3, 0, 1, 3, 3, 2,
2206 4, 3, 4, 4, 2, 5, 5, 7, 8, 3,
2207 5, 0, 2, 0, 3, 3, 0, 2, 1, 3,
2208 0, 1, 1, 1, 3, 2, 1, 3, 1, 6,
2209 3, 1, 2, 3, 3, 4, 5, 5, 0, 1,
2210 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
2211 3, 1, 1, 2, 2, 2, 1, 3, 1, 3,
2212 3, 3, 3, 3, 6, 3, 3, 3, 3, 3,
2213 3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
2214 2, 1, 3, 3, 3, 3, 3, 3, 3, 3,
2215 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2216 3, 3, 6, 3, 3, 3, 3, 3, 3, 3,
2217 3, 3, 3, 3, 3, 3, 3, 2, 2, 2,
2218 1, 1, 3, 4, 1, 2, 1, 2, 1, 1,
2219 1, 1, 1, 1, 2, 1, 2, 1, 2, 1,
2220 2, 1, 2, 1, 2, 1, 1, 2, 1, 2,
2221 2, 3, 3, 4, 2, 3, 5, 1, 2, 1,
2222 1, 3, 3, 3, 5, 3, 5, 3, 2, 1,
2223 3, 2, 3, 2, 3, 4, 3, 2, 3, 5,
2224 1, 3, 5, 5, 8, 0, 5, 1, 1, 1,
2225 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2226 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2227 1, 1, 1, 1, 1, 6, 4, 3, 1, 4,
2228 7, 2, 1, 3, 3, 5, 6, 7, 1, 1,
2229 3, 3, 1, 1, 2, 4, 0, 1, 1, 1,
2230 2, 3, 1, 1, 1, 1, 1, 1, 1, 1,
2231 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2232 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2233 1, 1
2234};
2235
2236
2237enum { YYENOMEM = -2 };
2238
2239#define yyerrok (yyerrstatus = 0)
2240#define yyclearin (yychar = YYEMPTY)
2241
2242#define YYACCEPT goto yyacceptlab
2243#define YYABORT goto yyabortlab
2244#define YYERROR goto yyerrorlab
2245
2246
2247#define YYRECOVERING() (!!yyerrstatus)
2248
2249#define YYBACKUP(Token, Value) \
2250 do \
2251 if (yychar == YYEMPTY) \
2252 { \
2253 yychar = (Token); \
2254 yylval = (Value); \
2255 YYPOPSTACK (yylen); \
2256 yystate = *yyssp; \
2257 goto yybackup; \
2258 } \
2259 else \
2260 { \
2261 yyerror (&yylloc, parm, YY_("syntax error: cannot back up")); \
2262 YYERROR; \
2263 } \
2264 while (0)
2265
2266/* Backward compatibility with an undocumented macro.
2267 Use YYerror or YYUNDEF. */
2268#define YYERRCODE YYUNDEF
2269
2270/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2271 If N is 0, then set CURRENT to the empty location which ends
2272 the previous symbol: RHS[0] (always defined). */
2273
2274#ifndef YYLLOC_DEFAULT
2275# define YYLLOC_DEFAULT(Current, Rhs, N) \
2276 do \
2277 if (N) \
2278 { \
2279 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2280 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2281 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2282 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2283 } \
2284 else \
2285 { \
2286 (Current).first_line = (Current).last_line = \
2287 YYRHSLOC (Rhs, 0).last_line; \
2288 (Current).first_column = (Current).last_column = \
2289 YYRHSLOC (Rhs, 0).last_column; \
2290 } \
2291 while (0)
2292#endif
2293
2294#define YYRHSLOC(Rhs, K) ((Rhs)[K])
2295
2296
2297/* Enable debugging if requested. */
2298#if YYDEBUG
2299
2300# ifndef YYFPRINTF
2301# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2302# define YYFPRINTF fprintf
2303# endif
2304
2305# define YYDPRINTF(Args) \
2306do { \
2307 if (yydebug) \
2308 YYFPRINTF Args; \
2309} while (0)
2310
2311
2312/* YY_LOCATION_PRINT -- Print the location on the stream.
2313 This macro was not mandated originally: define only if we know
2314 we won't break user code: when these are the locations we know. */
2315
2316# ifndef YY_LOCATION_PRINT
2317# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2318
2319/* Print *YYLOCP on YYO. Private, do not rely on its existence. */
2320
2321YY_ATTRIBUTE_UNUSED
2322static int
2323yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
2324{
2325 int res = 0;
2326 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
2327 if (0 <= yylocp->first_line)
2328 {
2329 res += YYFPRINTF (yyo, "%d", yylocp->first_line);
2330 if (0 <= yylocp->first_column)
2331 res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
2332 }
2333 if (0 <= yylocp->last_line)
2334 {
2335 if (yylocp->first_line < yylocp->last_line)
2336 {
2337 res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
2338 if (0 <= end_col)
2339 res += YYFPRINTF (yyo, ".%d", end_col);
2340 }
2341 else if (0 <= end_col && yylocp->first_column < end_col)
2342 res += YYFPRINTF (yyo, "-%d", end_col);
2343 }
2344 return res;
2345 }
2346
2347# define YY_LOCATION_PRINT(File, Loc) \
2348 yy_location_print_ (File, &(Loc))
2349
2350# else
2351# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2352# endif
2353# endif /* !defined YY_LOCATION_PRINT */
2354
2355
2356# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
2357do { \
2358 if (yydebug) \
2359 { \
2360 YYFPRINTF (stderr, "%s ", Title); \
2361 yy_symbol_print (stderr, \
2362 Kind, Value, Location, parm); \
2363 YYFPRINTF (stderr, "\n"); \
2364 } \
2365} while (0)
2366
2367
2368/*-----------------------------------.
2369| Print this symbol's value on YYO. |
2370`-----------------------------------*/
2371
2372static void
2373yy_symbol_value_print (FILE *yyo,
2374 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, void *parm)
2375{
2376 FILE *yyoutput = yyo;
2377 YY_USE (yyoutput);
2378 YY_USE (yylocationp);
2379 YY_USE (parm);
2380 if (!yyvaluep)
2381 return;
2382# ifdef YYPRINT
2383 if (yykind < YYNTOKENS)
2384 YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
2385# endif
2386 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2387 YY_USE (yykind);
2388 YY_IGNORE_MAYBE_UNINITIALIZED_END
2389}
2390
2391
2392/*---------------------------.
2393| Print this symbol on YYO. |
2394`---------------------------*/
2395
2396static void
2397yy_symbol_print (FILE *yyo,
2398 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, void *parm)
2399{
2400 YYFPRINTF (yyo, "%s %s (",
2401 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2402
2403 YY_LOCATION_PRINT (yyo, *yylocationp);
2404 YYFPRINTF (yyo, ": ");
2405 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, parm);
2406 YYFPRINTF (yyo, ")");
2407}
2408
2409/*------------------------------------------------------------------.
2410| yy_stack_print -- Print the state stack from its BOTTOM up to its |
2411| TOP (included). |
2412`------------------------------------------------------------------*/
2413
2414static void
2415yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
2416{
2417 YYFPRINTF (stderr, "Stack now");
2418 for (; yybottom <= yytop; yybottom++)
2419 {
2420 int yybot = *yybottom;
2421 YYFPRINTF (stderr, " %d", yybot);
2422 }
2423 YYFPRINTF (stderr, "\n");
2424}
2425
2426# define YY_STACK_PRINT(Bottom, Top) \
2427do { \
2428 if (yydebug) \
2429 yy_stack_print ((Bottom), (Top)); \
2430} while (0)
2431
2432
2433/*------------------------------------------------.
2434| Report that the YYRULE is going to be reduced. |
2435`------------------------------------------------*/
2436
2437static void
2438yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp,
2439 int yyrule, void *parm)
2440{
2441 int yylno = yyrline[yyrule];
2442 int yynrhs = yyr2[yyrule];
2443 int yyi;
2444 YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
2445 yyrule - 1, yylno);
2446 /* The symbols being reduced. */
2447 for (yyi = 0; yyi < yynrhs; yyi++)
2448 {
2449 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2450 yy_symbol_print (stderr,
2451 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
2452 &yyvsp[(yyi + 1) - (yynrhs)],
2453 &(yylsp[(yyi + 1) - (yynrhs)]), parm);
2454 YYFPRINTF (stderr, "\n");
2455 }
2456}
2457
2458# define YY_REDUCE_PRINT(Rule) \
2459do { \
2460 if (yydebug) \
2461 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, parm); \
2462} while (0)
2463
2464/* Nonzero means print parse trace. It is left uninitialized so that
2465 multiple parsers can coexist. */
2466int yydebug;
2467#else /* !YYDEBUG */
2468# define YYDPRINTF(Args) ((void) 0)
2469# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2470# define YY_STACK_PRINT(Bottom, Top)
2471# define YY_REDUCE_PRINT(Rule)
2472#endif /* !YYDEBUG */
2473
2474
2475/* YYINITDEPTH -- initial size of the parser's stacks. */
2476#ifndef YYINITDEPTH
2477# define YYINITDEPTH 200
2478#endif
2479
2480/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2481 if the built-in stack extension method is used).
2482
2483 Do not make this value too large; the results are undefined if
2484 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2485 evaluated with infinite-precision integer arithmetic. */
2486
2487#ifndef YYMAXDEPTH
2488# define YYMAXDEPTH 10000
2489#endif
2490
2491
2492/* Context of a parse error. */
2493typedef struct
2494{
2495 yy_state_t *yyssp;
2496 yysymbol_kind_t yytoken;
2497 YYLTYPE *yylloc;
2498} yypcontext_t;
2499
2500/* Put in YYARG at most YYARGN of the expected tokens given the
2501 current YYCTX, and return the number of tokens stored in YYARG. If
2502 YYARG is null, return the number of expected tokens (guaranteed to
2503 be less than YYNTOKENS). Return YYENOMEM on memory exhaustion.
2504 Return 0 if there are more than YYARGN expected tokens, yet fill
2505 YYARG up to YYARGN. */
2506static int
2507yypcontext_expected_tokens (const yypcontext_t *yyctx,
2508 yysymbol_kind_t yyarg[], int yyargn)
2509{
2510 /* Actual size of YYARG. */
2511 int yycount = 0;
2512 int yyn = yypact[+*yyctx->yyssp];
2513 if (!yypact_value_is_default (yyn))
2514 {
2515 /* Start YYX at -YYN if negative to avoid negative indexes in
2516 YYCHECK. In other words, skip the first -YYN actions for
2517 this state because they are default actions. */
2518 int yyxbegin = yyn < 0 ? -yyn : 0;
2519 /* Stay within bounds of both yycheck and yytname. */
2520 int yychecklim = YYLAST - yyn + 1;
2521 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2522 int yyx;
2523 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2524 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
2525 && !yytable_value_is_error (yytable[yyx + yyn]))
2526 {
2527 if (!yyarg)
2528 ++yycount;
2529 else if (yycount == yyargn)
2530 return 0;
2531 else
2532 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
2533 }
2534 }
2535 if (yyarg && yycount == 0 && 0 < yyargn)
2536 yyarg[0] = YYSYMBOL_YYEMPTY;
2537 return yycount;
2538}
2539
2540
2541
2542
2543#ifndef yystrlen
2544# if defined __GLIBC__ && defined _STRING_H
2545# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2546# else
2547/* Return the length of YYSTR. */
2548static YYPTRDIFF_T
2549yystrlen (const char *yystr)
2550{
2551 YYPTRDIFF_T yylen;
2552 for (yylen = 0; yystr[yylen]; yylen++)
2553 continue;
2554 return yylen;
2555}
2556# endif
2557#endif
2558
2559#ifndef yystpcpy
2560# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2561# define yystpcpy stpcpy
2562# else
2563/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2564 YYDEST. */
2565static char *
2566yystpcpy (char *yydest, const char *yysrc)
2567{
2568 char *yyd = yydest;
2569 const char *yys = yysrc;
2570
2571 while ((*yyd++ = *yys++) != '\0')
2572 continue;
2573
2574 return yyd - 1;
2575}
2576# endif
2577#endif
2578
2579#ifndef yytnamerr
2580/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2581 quotes and backslashes, so that it's suitable for yyerror. The
2582 heuristic is that double-quoting is unnecessary unless the string
2583 contains an apostrophe, a comma, or backslash (other than
2584 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2585 null, do not copy; instead, return the length of what the result
2586 would have been. */
2587static YYPTRDIFF_T
2588yytnamerr (char *yyres, const char *yystr)
2589{
2590 if (*yystr == '"')
2591 {
2592 YYPTRDIFF_T yyn = 0;
2593 char const *yyp = yystr;
2594 for (;;)
2595 switch (*++yyp)
2596 {
2597 case '\'':
2598 case ',':
2599 goto do_not_strip_quotes;
2600
2601 case '\\':
2602 if (*++yyp != '\\')
2603 goto do_not_strip_quotes;
2604 else
2605 goto append;
2606
2607 append:
2608 default:
2609 if (yyres)
2610 yyres[yyn] = *yyp;
2611 yyn++;
2612 break;
2613
2614 case '"':
2615 if (yyres)
2616 yyres[yyn] = '\0';
2617 return yyn;
2618 }
2619 do_not_strip_quotes: ;
2620 }
2621
2622 if (yyres)
2623 return yystpcpy (yyres, yystr) - yyres;
2624 else
2625 return yystrlen (yystr);
2626}
2627#endif
2628
2629
2630static int
2631yy_syntax_error_arguments (const yypcontext_t *yyctx,
2632 yysymbol_kind_t yyarg[], int yyargn)
2633{
2634 /* Actual size of YYARG. */
2635 int yycount = 0;
2636 /* There are many possibilities here to consider:
2637 - If this state is a consistent state with a default action, then
2638 the only way this function was invoked is if the default action
2639 is an error action. In that case, don't check for expected
2640 tokens because there are none.
2641 - The only way there can be no lookahead present (in yychar) is if
2642 this state is a consistent state with a default action. Thus,
2643 detecting the absence of a lookahead is sufficient to determine
2644 that there is no unexpected or expected token to report. In that
2645 case, just report a simple "syntax error".
2646 - Don't assume there isn't a lookahead just because this state is a
2647 consistent state with a default action. There might have been a
2648 previous inconsistent state, consistent state with a non-default
2649 action, or user semantic action that manipulated yychar.
2650 - Of course, the expected token list depends on states to have
2651 correct lookahead information, and it depends on the parser not
2652 to perform extra reductions after fetching a lookahead from the
2653 scanner and before detecting a syntax error. Thus, state merging
2654 (from LALR or IELR) and default reductions corrupt the expected
2655 token list. However, the list is correct for canonical LR with
2656 one exception: it will still contain any token that will not be
2657 accepted due to an error action in a later state.
2658 */
2659 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
2660 {
2661 int yyn;
2662 if (yyarg)
2663 yyarg[yycount] = yyctx->yytoken;
2664 ++yycount;
2665 yyn = yypcontext_expected_tokens (yyctx,
2666 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
2667 if (yyn == YYENOMEM)
2668 return YYENOMEM;
2669 else
2670 yycount += yyn;
2671 }
2672 return yycount;
2673}
2674
2675/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2676 about the unexpected token YYTOKEN for the state stack whose top is
2677 YYSSP.
2678
2679 Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is
2680 not large enough to hold the message. In that case, also set
2681 *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the
2682 required number of bytes is too large to store. */
2683static int
2684yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
2685 const yypcontext_t *yyctx)
2686{
2687 enum { YYARGS_MAX = 5 };
2688 /* Internationalized format string. */
2689 const char *yyformat = YY_NULLPTR;
2690 /* Arguments of yyformat: reported tokens (one for the "unexpected",
2691 one per "expected"). */
2692 yysymbol_kind_t yyarg[YYARGS_MAX];
2693 /* Cumulated lengths of YYARG. */
2694 YYPTRDIFF_T yysize = 0;
2695
2696 /* Actual size of YYARG. */
2697 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
2698 if (yycount == YYENOMEM)
2699 return YYENOMEM;
2700
2701 switch (yycount)
2702 {
2703#define YYCASE_(N, S) \
2704 case N: \
2705 yyformat = S; \
2706 break
2707 default: /* Avoid compiler warnings. */
2708 YYCASE_(0, YY_("syntax error"));
2709 YYCASE_(1, YY_("syntax error, unexpected %s"));
2710 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2711 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2712 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2713 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2714#undef YYCASE_
2715 }
2716
2717 /* Compute error message size. Don't count the "%s"s, but reserve
2718 room for the terminator. */
2719 yysize = yystrlen (yyformat) - 2 * yycount + 1;
2720 {
2721 int yyi;
2722 for (yyi = 0; yyi < yycount; ++yyi)
2723 {
2724 YYPTRDIFF_T yysize1
2725 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
2726 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
2727 yysize = yysize1;
2728 else
2729 return YYENOMEM;
2730 }
2731 }
2732
2733 if (*yymsg_alloc < yysize)
2734 {
2735 *yymsg_alloc = 2 * yysize;
2736 if (! (yysize <= *yymsg_alloc
2737 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2738 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2739 return -1;
2740 }
2741
2742 /* Avoid sprintf, as that infringes on the user's name space.
2743 Don't have undefined behavior even if the translation
2744 produced a string with the wrong number of "%s"s. */
2745 {
2746 char *yyp = *yymsg;
2747 int yyi = 0;
2748 while ((*yyp = *yyformat) != '\0')
2749 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2750 {
2751 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
2752 yyformat += 2;
2753 }
2754 else
2755 {
2756 ++yyp;
2757 ++yyformat;
2758 }
2759 }
2760 return 0;
2761}
2762
2763
2764/*-----------------------------------------------.
2765| Release the memory associated to this symbol. |
2766`-----------------------------------------------*/
2767
2768static void
2769yydestruct (const char *yymsg,
2770 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, void *parm)
2771{
2772 YY_USE (yyvaluep);
2773 YY_USE (yylocationp);
2774 YY_USE (parm);
2775 if (!yymsg)
2776 yymsg = "Deleting";
2777 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
2778
2779 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2780 YY_USE (yykind);
2781 YY_IGNORE_MAYBE_UNINITIALIZED_END
2782}
2783
2784
2785
2786
2787
2788
2789/*----------.
2790| yyparse. |
2791`----------*/
2792
2793int
2794yyparse (void *parm)
2795{
2796/* Lookahead token kind. */
2797int yychar;
2798
2799
2800/* The semantic value of the lookahead symbol. */
2801/* Default value used for initialization, for pacifying older GCCs
2802 or non-GCC compilers. */
2803YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
2804YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
2805
2806/* Location data for the lookahead symbol. */
2807static YYLTYPE yyloc_default
2808# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2809 = { 1, 1, 1, 1 }
2810# endif
2811;
2812YYLTYPE yylloc = yyloc_default;
2813
2814 /* Number of syntax errors so far. */
2815 int yynerrs = 0;
2816
2817 yy_state_fast_t yystate = 0;
2818 /* Number of tokens to shift before error messages enabled. */
2819 int yyerrstatus = 0;
2820
2821 /* Refer to the stacks through separate pointers, to allow yyoverflow
2822 to reallocate them elsewhere. */
2823
2824 /* Their size. */
2825 YYPTRDIFF_T yystacksize = YYINITDEPTH;
2826
2827 /* The state stack: array, bottom, top. */
2828 yy_state_t yyssa[YYINITDEPTH];
2829 yy_state_t *yyss = yyssa;
2830 yy_state_t *yyssp = yyss;
2831
2832 /* The semantic value stack: array, bottom, top. */
2833 YYSTYPE yyvsa[YYINITDEPTH];
2834 YYSTYPE *yyvs = yyvsa;
2835 YYSTYPE *yyvsp = yyvs;
2836
2837 /* The location stack: array, bottom, top. */
2838 YYLTYPE yylsa[YYINITDEPTH];
2839 YYLTYPE *yyls = yylsa;
2840 YYLTYPE *yylsp = yyls;
2841
2842 int yyn;
2843 /* The return value of yyparse. */
2844 int yyresult;
2845 /* Lookahead symbol kind. */
2846 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
2847 /* The variables used to return semantic value and location from the
2848 action routines. */
2849 YYSTYPE yyval;
2850 YYLTYPE yyloc;
2851
2852 /* The locations where the error started and ended. */
2853 YYLTYPE yyerror_range[3];
2854
2855 /* Buffer for error messages, and its allocated size. */
2856 char yymsgbuf[128];
2857 char *yymsg = yymsgbuf;
2858 YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
2859
2860#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
2861
2862 /* The number of symbols on the RHS of the reduced rule.
2863 Keep to zero when no symbol should be popped. */
2864 int yylen = 0;
2865
2866 YYDPRINTF ((stderr, "Starting parse\n"));
2867
2868 yychar = YYEMPTY; /* Cause a token to be read. */
2869
2870/* User initialization code. */
2871{
2872 GCLock lock;
2873 yylloc.filename(ASTString(static_cast<ParserState*>(parm)->filename));
2874}
2875
2876
2877 yylsp[0] = yylloc;
2878 goto yysetstate;
2879
2880
2881/*------------------------------------------------------------.
2882| yynewstate -- push a new state, which is found in yystate. |
2883`------------------------------------------------------------*/
2884yynewstate:
2885 /* In all cases, when you get here, the value and location stacks
2886 have just been pushed. So pushing a state here evens the stacks. */
2887 yyssp++;
2888
2889
2890/*--------------------------------------------------------------------.
2891| yysetstate -- set current state (the top of the stack) to yystate. |
2892`--------------------------------------------------------------------*/
2893yysetstate:
2894 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2895 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
2896 YY_IGNORE_USELESS_CAST_BEGIN
2897 *yyssp = YY_CAST (yy_state_t, yystate);
2898 YY_IGNORE_USELESS_CAST_END
2899 YY_STACK_PRINT (yyss, yyssp);
2900
2901 if (yyss + yystacksize - 1 <= yyssp)
2902#if !defined yyoverflow && !defined YYSTACK_RELOCATE
2903 goto yyexhaustedlab;
2904#else
2905 {
2906 /* Get the current used size of the three stacks, in elements. */
2907 YYPTRDIFF_T yysize = yyssp - yyss + 1;
2908
2909# if defined yyoverflow
2910 {
2911 /* Give user a chance to reallocate the stack. Use copies of
2912 these so that the &'s don't force the real ones into
2913 memory. */
2914 yy_state_t *yyss1 = yyss;
2915 YYSTYPE *yyvs1 = yyvs;
2916 YYLTYPE *yyls1 = yyls;
2917
2918 /* Each stack pointer address is followed by the size of the
2919 data in use in that stack, in bytes. This used to be a
2920 conditional around just the two extra args, but that might
2921 be undefined if yyoverflow is a macro. */
2922 yyoverflow (YY_("memory exhausted"),
2923 &yyss1, yysize * YYSIZEOF (*yyssp),
2924 &yyvs1, yysize * YYSIZEOF (*yyvsp),
2925 &yyls1, yysize * YYSIZEOF (*yylsp),
2926 &yystacksize);
2927 yyss = yyss1;
2928 yyvs = yyvs1;
2929 yyls = yyls1;
2930 }
2931# else /* defined YYSTACK_RELOCATE */
2932 /* Extend the stack our own way. */
2933 if (YYMAXDEPTH <= yystacksize)
2934 goto yyexhaustedlab;
2935 yystacksize *= 2;
2936 if (YYMAXDEPTH < yystacksize)
2937 yystacksize = YYMAXDEPTH;
2938
2939 {
2940 yy_state_t *yyss1 = yyss;
2941 union yyalloc *yyptr =
2942 YY_CAST (union yyalloc *,
2943 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
2944 if (! yyptr)
2945 goto yyexhaustedlab;
2946 YYSTACK_RELOCATE (yyss_alloc, yyss);
2947 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2948 YYSTACK_RELOCATE (yyls_alloc, yyls);
2949# undef YYSTACK_RELOCATE
2950 if (yyss1 != yyssa)
2951 YYSTACK_FREE (yyss1);
2952 }
2953# endif
2954
2955 yyssp = yyss + yysize - 1;
2956 yyvsp = yyvs + yysize - 1;
2957 yylsp = yyls + yysize - 1;
2958
2959 YY_IGNORE_USELESS_CAST_BEGIN
2960 YYDPRINTF ((stderr, "Stack size increased to %ld\n",
2961 YY_CAST (long, yystacksize)));
2962 YY_IGNORE_USELESS_CAST_END
2963
2964 if (yyss + yystacksize - 1 <= yyssp)
2965 YYABORT;
2966 }
2967#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
2968
2969 if (yystate == YYFINAL)
2970 YYACCEPT;
2971
2972 goto yybackup;
2973
2974
2975/*-----------.
2976| yybackup. |
2977`-----------*/
2978yybackup:
2979 /* Do appropriate processing given the current state. Read a
2980 lookahead token if we need one and don't already have one. */
2981
2982 /* First try to decide what to do without reference to lookahead token. */
2983 yyn = yypact[yystate];
2984 if (yypact_value_is_default (yyn))
2985 goto yydefault;
2986
2987 /* Not known => get a lookahead token if don't already have one. */
2988
2989 /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
2990 if (yychar == YYEMPTY)
2991 {
2992 YYDPRINTF ((stderr, "Reading a token\n"));
2993 yychar = yylex (&yylval, &yylloc, SCANNER);
2994 }
2995
2996 if (yychar <= END)
2997 {
2998 yychar = END;
2999 yytoken = YYSYMBOL_YYEOF;
3000 YYDPRINTF ((stderr, "Now at end of input.\n"));
3001 }
3002 else if (yychar == YYerror)
3003 {
3004 /* The scanner already issued an error message, process directly
3005 to error recovery. But do not keep the error token as
3006 lookahead, it is too special and may lead us to an endless
3007 loop in error recovery. */
3008 yychar = YYUNDEF;
3009 yytoken = YYSYMBOL_YYerror;
3010 yyerror_range[1] = yylloc;
3011 goto yyerrlab1;
3012 }
3013 else
3014 {
3015 yytoken = YYTRANSLATE (yychar);
3016 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3017 }
3018
3019 /* If the proper action on seeing token YYTOKEN is to reduce or to
3020 detect an error, take that action. */
3021 yyn += yytoken;
3022 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3023 goto yydefault;
3024 yyn = yytable[yyn];
3025 if (yyn <= 0)
3026 {
3027 if (yytable_value_is_error (yyn))
3028 goto yyerrlab;
3029 yyn = -yyn;
3030 goto yyreduce;
3031 }
3032
3033 /* Count tokens shifted since error; after three, turn off error
3034 status. */
3035 if (yyerrstatus)
3036 yyerrstatus--;
3037
3038 /* Shift the lookahead token. */
3039 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3040 yystate = yyn;
3041 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3042 *++yyvsp = yylval;
3043 YY_IGNORE_MAYBE_UNINITIALIZED_END
3044 *++yylsp = yylloc;
3045
3046 /* Discard the shifted token. */
3047 yychar = YYEMPTY;
3048 goto yynewstate;
3049
3050
3051/*-----------------------------------------------------------.
3052| yydefault -- do the default action for the current state. |
3053`-----------------------------------------------------------*/
3054yydefault:
3055 yyn = yydefact[yystate];
3056 if (yyn == 0)
3057 goto yyerrlab;
3058 goto yyreduce;
3059
3060
3061/*-----------------------------.
3062| yyreduce -- do a reduction. |
3063`-----------------------------*/
3064yyreduce:
3065 /* yyn is the number of a rule to reduce with. */
3066 yylen = yyr2[yyn];
3067
3068 /* If YYLEN is nonzero, implement the default value of the action:
3069 '$$ = $1'.
3070
3071 Otherwise, the following line sets YYVAL to garbage.
3072 This behavior is undocumented and Bison
3073 users should not rely upon it. Assigning to YYVAL
3074 unconditionally makes the parser a bit smaller, and it avoids a
3075 GCC warning that YYVAL may be used uninitialized. */
3076 yyval = yyvsp[1-yylen];
3077
3078 /* Default location. */
3079 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
3080 yyerror_range[1] = yyloc;
3081 YY_REDUCE_PRINT (yyn);
3082 switch (yyn)
3083 {
3084 case 5: /* item_list_head: item */
3085 {
3086 ParserState* pp = static_cast<ParserState*>(parm);
3087 if ((yyvsp[0].item)) {
3088 pp->model->addItem((yyvsp[0].item));
3089 GC::unlock();
3090 GC::lock();
3091 }
3092 }
3093 break;
3094
3095 case 6: /* item_list_head: doc_file_comments item */
3096 {
3097 ParserState* pp = static_cast<ParserState*>(parm);
3098 if ((yyvsp[0].item)) {
3099 pp->model->addItem((yyvsp[0].item));
3100 GC::unlock();
3101 GC::lock();
3102 }
3103 }
3104 break;
3105
3106 case 7: /* item_list_head: item_list_head ';' item */
3107 {
3108 ParserState* pp = static_cast<ParserState*>(parm);
3109 if ((yyvsp[0].item)) {
3110 pp->model->addItem((yyvsp[0].item));
3111 GC::unlock();
3112 GC::lock();
3113 }
3114 }
3115 break;
3116
3117 case 8: /* item_list_head: item_list_head ';' doc_file_comments item */
3118 {
3119 ParserState* pp = static_cast<ParserState*>(parm);
3120 if ((yyvsp[0].item)) {
3121 pp->model->addItem((yyvsp[0].item));
3122 GC::unlock();
3123 GC::lock();
3124 }
3125 }
3126 break;
3127
3128 case 9: /* item_list_head: item error_item_start */
3129{ yyerror(&(yylsp[0]), parm, "unexpected item, expecting ';' or end of file"); YYERROR; }
3130 break;
3131
3132 case 11: /* doc_file_comments: "file-level documentation comment" */
3133 {
3134 ParserState* pp = static_cast<ParserState*>(parm);
3135 if (pp->parseDocComments && (yyvsp[0].sValue)) {
3136 pp->model->addDocComment((yyvsp[0].sValue));
3137 }
3138 free((yyvsp[0].sValue));
3139 }
3140 break;
3141
3142 case 12: /* doc_file_comments: doc_file_comments "file-level documentation comment" */
3143 {
3144 ParserState* pp = static_cast<ParserState*>(parm);
3145 if (pp->parseDocComments && (yyvsp[0].sValue)) {
3146 pp->model->addDocComment((yyvsp[0].sValue));
3147 }
3148 free((yyvsp[0].sValue));
3149 }
3150 break;
3151
3152 case 15: /* item: "documentation comment" item_tail */
3153 { (yyval.item) = (yyvsp[0].item);
3154 ParserState* pp = static_cast<ParserState*>(parm);
3155 if (FunctionI* fi = Item::dyn_cast<FunctionI>((yyval.item))) {
3156 if (pp->parseDocComments) {
3157 fi->ann().add(createDocComment((yylsp[-1]),(yyvsp[-1].sValue)));
3158 }
3159 } else if (VarDeclI* vdi = Item::dyn_cast<VarDeclI>((yyval.item))) {
3160 if (pp->parseDocComments) {
3161 vdi->e()->addAnnotation(createDocComment((yylsp[-1]),(yyvsp[-1].sValue)));
3162 }
3163 } else {
3164 yyerror(&(yylsp[0]), parm, "documentation comments are only supported for function, predicate and variable declarations");
3165 }
3166 free((yyvsp[-1].sValue));
3167 }
3168 break;
3169
3170 case 16: /* item: item_tail */
3171 { (yyval.item) = (yyvsp[0].item); }
3172 break;
3173
3174 case 17: /* item_tail: include_item */
3175 { (yyval.item)=notInDatafile(&(yyloc),parm,"include") ? (yyvsp[0].item) : NULL; }
3176 break;
3177
3178 case 18: /* item_tail: vardecl_item */
3179 { (yyval.item)=notInDatafile(&(yyloc),parm,"variable declaration") ? (yyvsp[0].item) : NULL; }
3180 break;
3181
3182 case 20: /* item_tail: constraint_item */
3183 { (yyval.item)=notInDatafile(&(yyloc),parm,"constraint") ? (yyvsp[0].item) : NULL; }
3184 break;
3185
3186 case 21: /* item_tail: solve_item */
3187 { (yyval.item)=notInDatafile(&(yyloc),parm,"solve") ? (yyvsp[0].item) : NULL; }
3188 break;
3189
3190 case 22: /* item_tail: output_item */
3191 { (yyval.item)=notInDatafile(&(yyloc),parm,"output") ? (yyvsp[0].item) : NULL; }
3192 break;
3193
3194 case 23: /* item_tail: predicate_item */
3195 { (yyval.item)=notInDatafile(&(yyloc),parm,"predicate") ? (yyvsp[0].item) : NULL; }
3196 break;
3197
3198 case 24: /* item_tail: function_item */
3199 { (yyval.item)=notInDatafile(&(yyloc),parm,"predicate") ? (yyvsp[0].item) : NULL; }
3200 break;
3201
3202 case 25: /* item_tail: annotation_item */
3203 { (yyval.item)=notInDatafile(&(yyloc),parm,"annotation") ? (yyvsp[0].item) : NULL; }
3204 break;
3205
3206 case 35: /* include_item: "include" "string literal" */
3207 { ParserState* pp = static_cast<ParserState*>(parm);
3208 map<string,Model*>::iterator ret = pp->seenModels.find((yyvsp[0].sValue));
3209 IncludeI* ii = new IncludeI((yyloc),ASTString((yyvsp[0].sValue)));
3210 (yyval.item) = ii;
3211 if (ret == pp->seenModels.end()) {
3212 Model* im = new Model;
3213 im->setParent(pp->model);
3214 im->setFilename((yyvsp[0].sValue));
3215 string fpath = FileUtils::dir_name(pp->filename);
3216 string fbase = FileUtils::base_name(pp->filename);
3217 if (fpath=="")
3218 fpath="./";
3219 ParseWorkItem pm(im, ii, fpath, (yyvsp[0].sValue));
3220 pp->files.push_back(pm);
3221 ii->m(im);
3222 pp->seenModels.insert(pair<string,Model*>((yyvsp[0].sValue),im));
3223 } else {
3224 ii->m(ret->second, false);
3225 }
3226 free((yyvsp[0].sValue));
3227 }
3228 break;
3229
3230 case 36: /* vardecl_item: ti_expr_and_id annotations */
3231 { if ((yyvsp[-1].vardeclexpr) && (yyvsp[0].expression_v)) (yyvsp[-1].vardeclexpr)->addAnnotations(*(yyvsp[0].expression_v));
3232 if ((yyvsp[-1].vardeclexpr))
3233 (yyval.item) = new VarDeclI((yyloc),(yyvsp[-1].vardeclexpr));
3234 delete (yyvsp[0].expression_v);
3235 }
3236 break;
3237
3238 case 37: /* vardecl_item: ti_expr_and_id annotations "=" expr */
3239 { if ((yyvsp[-3].vardeclexpr)) (yyvsp[-3].vardeclexpr)->e((yyvsp[0].expression));
3240 if ((yyvsp[-3].vardeclexpr) && (yyvsp[-2].expression_v)) (yyvsp[-3].vardeclexpr)->addAnnotations(*(yyvsp[-2].expression_v));
3241 if ((yyvsp[-3].vardeclexpr))
3242 (yyval.item) = new VarDeclI((yyloc),(yyvsp[-3].vardeclexpr));
3243 delete (yyvsp[-2].expression_v);
3244 }
3245 break;
3246
3247 case 38: /* vardecl_item: "enum" "identifier" */
3248 {
3249 TypeInst* ti = new TypeInst((yyloc),Type::parsetint());
3250 ti->setIsEnum(true);
3251 VarDecl* vd = new VarDecl((yyloc),ti,(yyvsp[0].sValue));
3252 free((yyvsp[0].sValue));
3253 (yyval.item) = new VarDeclI((yyloc),vd);
3254 }
3255 break;
3256
3257 case 39: /* vardecl_item: "enum" "identifier" "=" '{' enum_id_list '}' */
3258 {
3259 TypeInst* ti = new TypeInst((yyloc),Type::parsetint());
3260 ti->setIsEnum(true);
3261 SetLit* sl = new SetLit((yyloc), *(yyvsp[-1].expression_v));
3262 VarDecl* vd = new VarDecl((yyloc),ti,(yyvsp[-4].sValue),sl);
3263 free((yyvsp[-4].sValue));
3264 delete (yyvsp[-1].expression_v);
3265 (yyval.item) = new VarDeclI((yyloc),vd);
3266 }
3267 break;
3268
3269 case 40: /* vardecl_item: "enum" "identifier" "=" "[" string_lit_list "]" */
3270 {
3271 TypeInst* ti = new TypeInst((yyloc),Type::parsetint());
3272 ti->setIsEnum(true);
3273 vector<Expression*> args;
3274 args.push_back(new ArrayLit((yyloc),*(yyvsp[-1].expression_v)));
3275 Call* sl = new Call((yyloc), constants().ids.anonEnumFromStrings, args);
3276 VarDecl* vd = new VarDecl((yyloc),ti,(yyvsp[-4].sValue),sl);
3277 free((yyvsp[-4].sValue));
3278 delete (yyvsp[-1].expression_v);
3279 (yyval.item) = new VarDeclI((yyloc),vd);
3280 }
3281 break;
3282
3283 case 41: /* vardecl_item: "enum" "identifier" "=" "identifier" '(' expr ')' */
3284 {
3285 TypeInst* ti = new TypeInst((yyloc),Type::parsetint());
3286 ti->setIsEnum(true);
3287 vector<Expression*> args;
3288 args.push_back((yyvsp[-1].expression));
3289 Call* sl = new Call((yyloc), ASTString((yyvsp[-3].sValue)), args);
3290 VarDecl* vd = new VarDecl((yyloc),ti,(yyvsp[-5].sValue),sl);
3291 free((yyvsp[-5].sValue));
3292 free((yyvsp[-3].sValue));
3293 (yyval.item) = new VarDeclI((yyloc),vd);
3294 }
3295 break;
3296
3297 case 42: /* string_lit_list: %empty */
3298 { (yyval.expression_v) = new std::vector<Expression*>(); }
3299 break;
3300
3301 case 43: /* string_lit_list: "string literal" */
3302 { (yyval.expression_v) = new std::vector<Expression*>();
3303 (yyval.expression_v)->push_back(new StringLit((yyloc), (yyvsp[0].sValue))); free((yyvsp[0].sValue));
3304 }
3305 break;
3306
3307 case 44: /* string_lit_list: string_lit_list ',' "string literal" */
3308 { (yyval.expression_v) = (yyvsp[-2].expression_v);
3309 if ((yyval.expression_v)) (yyval.expression_v)->push_back(new StringLit((yyloc), (yyvsp[0].sValue)));
3310 free((yyvsp[0].sValue));
3311 }
3312 break;
3313
3314 case 45: /* enum_id_list: %empty */
3315 { (yyval.expression_v) = new std::vector<Expression*>(); }
3316 break;
3317
3318 case 46: /* enum_id_list: "identifier" */
3319 { (yyval.expression_v) = new std::vector<Expression*>();
3320 (yyval.expression_v)->push_back(new Id((yyloc),(yyvsp[0].sValue),NULL)); free((yyvsp[0].sValue));
3321 }
3322 break;
3323
3324 case 47: /* enum_id_list: enum_id_list ',' "identifier" */
3325 { (yyval.expression_v) = (yyvsp[-2].expression_v); if ((yyval.expression_v)) (yyval.expression_v)->push_back(new Id((yyloc),(yyvsp[0].sValue),NULL)); free((yyvsp[0].sValue)); }
3326 break;
3327
3328 case 48: /* assign_item: "identifier" "=" expr */
3329 { (yyval.item) = new AssignI((yyloc),(yyvsp[-2].sValue),(yyvsp[0].expression));
3330 free((yyvsp[-2].sValue));
3331 }
3332 break;
3333
3334 case 49: /* constraint_item: "constraint" expr */
3335 { (yyval.item) = new ConstraintI((yyloc),(yyvsp[0].expression));}
3336 break;
3337
3338 case 50: /* constraint_item: "constraint" "::" string_expr expr */
3339 { (yyval.item) = new ConstraintI((yyloc),(yyvsp[0].expression));
3340 if ((yyvsp[0].expression) && (yyvsp[-1].expression))
3341 (yyval.item)->cast<ConstraintI>()->e()->ann().add(new Call((yylsp[-2]), ASTString("mzn_constraint_name"), {(yyvsp[-1].expression)}));
3342 }
3343 break;
3344
3345 case 51: /* solve_item: "solve" annotations "satisfy" */
3346 { (yyval.item) = SolveI::sat((yyloc));
3347 if ((yyval.item) && (yyvsp[-1].expression_v)) (yyval.item)->cast<SolveI>()->ann().add(*(yyvsp[-1].expression_v));
3348 delete (yyvsp[-1].expression_v);
3349 }
3350 break;
3351
3352 case 52: /* solve_item: "solve" annotations "minimize" expr */
3353 { (yyval.item) = SolveI::min((yyloc),(yyvsp[0].expression));
3354 if ((yyval.item) && (yyvsp[-2].expression_v)) (yyval.item)->cast<SolveI>()->ann().add(*(yyvsp[-2].expression_v));
3355 delete (yyvsp[-2].expression_v);
3356 }
3357 break;
3358
3359 case 53: /* solve_item: "solve" annotations "maximize" expr */
3360 { (yyval.item) = SolveI::max((yyloc),(yyvsp[0].expression));
3361 if ((yyval.item) && (yyvsp[-2].expression_v)) (yyval.item)->cast<SolveI>()->ann().add(*(yyvsp[-2].expression_v));
3362 delete (yyvsp[-2].expression_v);
3363 }
3364 break;
3365
3366 case 54: /* output_item: "output" expr */
3367 { (yyval.item) = new OutputI((yyloc),(yyvsp[0].expression));}
3368 break;
3369
3370 case 55: /* predicate_item: "predicate" "identifier" params annotations operation_item_tail */
3371 { if ((yyvsp[-2].vardeclexpr_v)) (yyval.item) = new FunctionI((yyloc),(yyvsp[-3].sValue),new TypeInst((yyloc),
3372 Type::varbool()),*(yyvsp[-2].vardeclexpr_v),(yyvsp[0].expression));
3373 if ((yyval.item) && (yyvsp[-1].expression_v)) (yyval.item)->cast<FunctionI>()->ann().add(*(yyvsp[-1].expression_v));
3374 free((yyvsp[-3].sValue));
3375 delete (yyvsp[-2].vardeclexpr_v);
3376 delete (yyvsp[-1].expression_v);
3377 }
3378 break;
3379
3380 case 56: /* predicate_item: "test" "identifier" params annotations operation_item_tail */
3381 { if ((yyvsp[-2].vardeclexpr_v)) (yyval.item) = new FunctionI((yyloc),(yyvsp[-3].sValue),new TypeInst((yyloc),
3382 Type::parbool()),*(yyvsp[-2].vardeclexpr_v),(yyvsp[0].expression));
3383 if ((yyval.item) && (yyvsp[-1].expression_v)) (yyval.item)->cast<FunctionI>()->ann().add(*(yyvsp[-1].expression_v));
3384 free((yyvsp[-3].sValue));
3385 delete (yyvsp[-2].vardeclexpr_v);
3386 delete (yyvsp[-1].expression_v);
3387 }
3388 break;
3389
3390 case 57: /* function_item: "function" ti_expr ':' id_or_quoted_op params annotations operation_item_tail */
3391 { if ((yyvsp[-2].vardeclexpr_v)) (yyval.item) = new FunctionI((yyloc),(yyvsp[-3].sValue),(yyvsp[-5].tiexpr),*(yyvsp[-2].vardeclexpr_v),(yyvsp[0].expression));
3392 if ((yyval.item) && (yyvsp[-1].expression_v)) (yyval.item)->cast<FunctionI>()->ann().add(*(yyvsp[-1].expression_v));
3393 free((yyvsp[-3].sValue));
3394 delete (yyvsp[-2].vardeclexpr_v);
3395 delete (yyvsp[-1].expression_v);
3396 }
3397 break;
3398
3399 case 58: /* function_item: ti_expr ':' "identifier" '(' params_list ')' annotations operation_item_tail */
3400 { if ((yyvsp[-3].vardeclexpr_v)) (yyval.item) = new FunctionI((yyloc),(yyvsp[-5].sValue),(yyvsp[-7].tiexpr),*(yyvsp[-3].vardeclexpr_v),(yyvsp[0].expression));
3401 if ((yyval.item) && (yyvsp[-1].expression_v)) (yyval.item)->cast<FunctionI>()->ann().add(*(yyvsp[-1].expression_v));
3402 free((yyvsp[-5].sValue));
3403 delete (yyvsp[-3].vardeclexpr_v);
3404 delete (yyvsp[-1].expression_v);
3405 }
3406 break;
3407
3408 case 59: /* annotation_item: "annotation" "identifier" params */
3409 {
3410 TypeInst* ti=new TypeInst((yylsp[-2]),Type::ann());
3411 if ((yyvsp[0].vardeclexpr_v)==NULL || (yyvsp[0].vardeclexpr_v)->empty()) {
3412 VarDecl* vd = new VarDecl((yyloc),ti,(yyvsp[-1].sValue));
3413 (yyval.item) = new VarDeclI((yyloc),vd);
3414 } else {
3415 (yyval.item) = new FunctionI((yyloc),(yyvsp[-1].sValue),ti,*(yyvsp[0].vardeclexpr_v),NULL);
3416 }
3417 free((yyvsp[-1].sValue));
3418 delete (yyvsp[0].vardeclexpr_v);
3419 }
3420 break;
3421
3422 case 60: /* annotation_item: "annotation" "identifier" params "=" expr */
3423 { TypeInst* ti=new TypeInst((yylsp[-4]),Type::ann());
3424 if ((yyvsp[-2].vardeclexpr_v)) (yyval.item) = new FunctionI((yyloc),(yyvsp[-3].sValue),ti,*(yyvsp[-2].vardeclexpr_v),(yyvsp[0].expression));
3425 delete (yyvsp[-2].vardeclexpr_v);
3426 }
3427 break;
3428
3429 case 61: /* operation_item_tail: %empty */
3430 { (yyval.expression)=NULL; }
3431 break;
3432
3433 case 62: /* operation_item_tail: "=" expr */
3434 { (yyval.expression)=(yyvsp[0].expression); }
3435 break;
3436
3437 case 63: /* params: %empty */
3438 { (yyval.vardeclexpr_v)=new vector<VarDecl*>(); }
3439 break;
3440
3441 case 64: /* params: '(' params_list ')' */
3442 { (yyval.vardeclexpr_v)=(yyvsp[-1].vardeclexpr_v); }
3443 break;
3444
3445 case 65: /* params: '(' error ')' */
3446 { (yyval.vardeclexpr_v)=new vector<VarDecl*>(); }
3447 break;
3448
3449 case 66: /* params_list: %empty */
3450 { (yyval.vardeclexpr_v)=new vector<VarDecl*>(); }
3451 break;
3452
3453 case 67: /* params_list: params_list_head comma_or_none */
3454 { (yyval.vardeclexpr_v)=(yyvsp[-1].vardeclexpr_v); }
3455 break;
3456
3457 case 68: /* params_list_head: ti_expr_and_id_or_anon */
3458 { (yyval.vardeclexpr_v)=new vector<VarDecl*>();
3459 if ((yyvsp[0].vardeclexpr)) (yyvsp[0].vardeclexpr)->toplevel(false);
3460 if ((yyvsp[0].vardeclexpr)) (yyval.vardeclexpr_v)->push_back((yyvsp[0].vardeclexpr)); }
3461 break;
3462
3463 case 69: /* params_list_head: params_list_head ',' ti_expr_and_id_or_anon */
3464 { (yyval.vardeclexpr_v)=(yyvsp[-2].vardeclexpr_v);
3465 if ((yyvsp[0].vardeclexpr)) (yyvsp[0].vardeclexpr)->toplevel(false);
3466 if ((yyvsp[-2].vardeclexpr_v) && (yyvsp[0].vardeclexpr)) (yyvsp[-2].vardeclexpr_v)->push_back((yyvsp[0].vardeclexpr)); }
3467 break;
3468
3469 case 72: /* ti_expr_and_id_or_anon: ti_expr_and_id */
3470 { (yyval.vardeclexpr)=(yyvsp[0].vardeclexpr); }
3471 break;
3472
3473 case 73: /* ti_expr_and_id_or_anon: ti_expr */
3474 { if ((yyvsp[0].tiexpr)) (yyval.vardeclexpr)=new VarDecl((yyloc), (yyvsp[0].tiexpr), ""); }
3475 break;
3476
3477 case 74: /* ti_expr_and_id: ti_expr ':' "identifier" */
3478 { if ((yyvsp[-2].tiexpr) && (yyvsp[0].sValue)) (yyval.vardeclexpr) = new VarDecl((yyloc), (yyvsp[-2].tiexpr), (yyvsp[0].sValue));
3479 free((yyvsp[0].sValue));
3480 }
3481 break;
3482
3483 case 75: /* ti_expr_list: ti_expr_list_head comma_or_none */
3484 { (yyval.tiexpr_v)=(yyvsp[-1].tiexpr_v); }
3485 break;
3486
3487 case 76: /* ti_expr_list_head: ti_expr */
3488 { (yyval.tiexpr_v)=new vector<TypeInst*>(); (yyval.tiexpr_v)->push_back((yyvsp[0].tiexpr)); }
3489 break;
3490
3491 case 77: /* ti_expr_list_head: ti_expr_list_head ',' ti_expr */
3492 { (yyval.tiexpr_v)=(yyvsp[-2].tiexpr_v); if ((yyvsp[-2].tiexpr_v) && (yyvsp[0].tiexpr)) (yyvsp[-2].tiexpr_v)->push_back((yyvsp[0].tiexpr)); }
3493 break;
3494
3495 case 79: /* ti_expr: "array" "[" ti_expr_list "]" "of" base_ti_expr */
3496 {
3497 (yyval.tiexpr) = (yyvsp[0].tiexpr);
3498 if ((yyval.tiexpr) && (yyvsp[-3].tiexpr_v)) (yyval.tiexpr)->setRanges(*(yyvsp[-3].tiexpr_v));
3499 delete (yyvsp[-3].tiexpr_v);
3500 }
3501 break;
3502
3503 case 80: /* ti_expr: "list" "of" base_ti_expr */
3504 {
3505 (yyval.tiexpr) = (yyvsp[0].tiexpr);
3506 std::vector<TypeInst*> ti(1);
3507 ti[0] = new TypeInst((yyloc),Type::parint());
3508 if ((yyval.tiexpr)) (yyval.tiexpr)->setRanges(ti);
3509 }
3510 break;
3511
3512 case 81: /* base_ti_expr: base_ti_expr_tail */
3513 { (yyval.tiexpr) = (yyvsp[0].tiexpr);
3514 }
3515 break;
3516
3517 case 82: /* base_ti_expr: "opt" base_ti_expr_tail */
3518 { (yyval.tiexpr) = (yyvsp[0].tiexpr);
3519 if ((yyval.tiexpr)) {
3520 Type tt = (yyval.tiexpr)->type();
3521 tt.ot(Type::OT_OPTIONAL);
3522 (yyval.tiexpr)->type(tt);
3523 }
3524 }
3525 break;
3526
3527 case 83: /* base_ti_expr: "par" opt_opt base_ti_expr_tail */
3528 { (yyval.tiexpr) = (yyvsp[0].tiexpr);
3529 if ((yyval.tiexpr) && (yyvsp[-1].bValue)) {
3530 Type tt = (yyval.tiexpr)->type();
3531 tt.ot(Type::OT_OPTIONAL);
3532 (yyval.tiexpr)->type(tt);
3533 }
3534 }
3535 break;
3536
3537 case 84: /* base_ti_expr: "var" opt_opt base_ti_expr_tail */
3538 { (yyval.tiexpr) = (yyvsp[0].tiexpr);
3539 if ((yyval.tiexpr)) {
3540 Type tt = (yyval.tiexpr)->type();
3541 tt.ti(Type::TI_VAR);
3542 if ((yyvsp[-1].bValue)) tt.ot(Type::OT_OPTIONAL);
3543 (yyval.tiexpr)->type(tt);
3544 }
3545 }
3546 break;
3547
3548 case 85: /* base_ti_expr: opt_opt "set" "of" base_ti_expr_tail */
3549 { (yyval.tiexpr) = (yyvsp[0].tiexpr);
3550 if ((yyval.tiexpr)) {
3551 Type tt = (yyval.tiexpr)->type();
3552 tt.st(Type::ST_SET);
3553 if ((yyvsp[-3].bValue)) tt.ot(Type::OT_OPTIONAL);
3554 (yyval.tiexpr)->type(tt);
3555 }
3556 }
3557 break;
3558
3559 case 86: /* base_ti_expr: "par" opt_opt "set" "of" base_ti_expr_tail */
3560 { (yyval.tiexpr) = (yyvsp[0].tiexpr);
3561 if ((yyval.tiexpr)) {
3562 Type tt = (yyval.tiexpr)->type();
3563 tt.st(Type::ST_SET);
3564 if ((yyvsp[-3].bValue)) tt.ot(Type::OT_OPTIONAL);
3565 (yyval.tiexpr)->type(tt);
3566 }
3567 }
3568 break;
3569
3570 case 87: /* base_ti_expr: "var" opt_opt "set" "of" base_ti_expr_tail */
3571 { (yyval.tiexpr) = (yyvsp[0].tiexpr);
3572 if ((yyval.tiexpr)) {
3573 Type tt = (yyval.tiexpr)->type();
3574 tt.ti(Type::TI_VAR);
3575 tt.st(Type::ST_SET);
3576 if ((yyvsp[-3].bValue)) tt.ot(Type::OT_OPTIONAL);
3577 (yyval.tiexpr)->type(tt);
3578 }
3579 }
3580 break;
3581
3582 case 88: /* opt_opt: %empty */
3583 { (yyval.bValue) = false; }
3584 break;
3585
3586 case 89: /* opt_opt: "opt" */
3587 { (yyval.bValue) = true; }
3588 break;
3589
3590 case 90: /* base_ti_expr_tail: "int" */
3591 { (yyval.tiexpr) = new TypeInst((yyloc),Type::parint()); }
3592 break;
3593
3594 case 91: /* base_ti_expr_tail: "bool" */
3595 { (yyval.tiexpr) = new TypeInst((yyloc),Type::parbool()); }
3596 break;
3597
3598 case 92: /* base_ti_expr_tail: "float" */
3599 { (yyval.tiexpr) = new TypeInst((yyloc),Type::parfloat()); }
3600 break;
3601
3602 case 93: /* base_ti_expr_tail: "string" */
3603 { (yyval.tiexpr) = new TypeInst((yyloc),Type::parstring()); }
3604 break;
3605
3606 case 94: /* base_ti_expr_tail: "ann" */
3607 { (yyval.tiexpr) = new TypeInst((yyloc),Type::ann()); }
3608 break;
3609
3610 case 95: /* base_ti_expr_tail: set_expr */
3611 { if ((yyvsp[0].expression)) (yyval.tiexpr) = new TypeInst((yyloc),Type(),(yyvsp[0].expression)); }
3612 break;
3613
3614 case 96: /* base_ti_expr_tail: "type-inst identifier" */
3615 { (yyval.tiexpr) = new TypeInst((yyloc),Type::top(),
3616 new TIId((yyloc), (yyvsp[0].sValue)));
3617 free((yyvsp[0].sValue));
3618 }
3619 break;
3620
3621 case 97: /* base_ti_expr_tail: "type-inst enum identifier" */
3622 { (yyval.tiexpr) = new TypeInst((yyloc),Type::parint(),
3623 new TIId((yyloc), (yyvsp[0].sValue)));
3624 free((yyvsp[0].sValue));
3625 }
3626 break;
3627
3628 case 99: /* array_access_expr_list_head: array_access_expr */
3629 { (yyval.expression_v)=new std::vector<MiniZinc::Expression*>; (yyval.expression_v)->push_back((yyvsp[0].expression)); }
3630 break;
3631
3632 case 100: /* array_access_expr_list_head: array_access_expr_list_head ',' array_access_expr */
3633 { (yyval.expression_v)=(yyvsp[-2].expression_v); if ((yyval.expression_v) && (yyvsp[0].expression)) (yyval.expression_v)->push_back((yyvsp[0].expression)); }
3634 break;
3635
3636 case 101: /* array_access_expr: expr */
3637 { (yyval.expression) = (yyvsp[0].expression); }
3638 break;
3639
3640 case 102: /* array_access_expr: ".." */
3641 { (yyval.expression)=new SetLit((yyloc), IntSetVal::a(-IntVal::infinity(),IntVal::infinity())); }
3642 break;
3643
3644 case 103: /* array_access_expr: ".." expr */
3645 { if ((yyvsp[0].expression)==NULL) {
3646 (yyval.expression) = NULL;
3647 } else if ((yyvsp[0].expression)->isa<IntLit>()) {
3648 (yyval.expression)=new SetLit((yyloc), IntSetVal::a(-IntVal::infinity(),(yyvsp[0].expression)->cast<IntLit>()->v()));
3649 } else {
3650 (yyval.expression)=new BinOp((yyloc), IntLit::a(-IntVal::infinity()), BOT_DOTDOT, (yyvsp[0].expression));
3651 }
3652 }
3653 break;
3654
3655 case 104: /* array_access_expr: expr ".." */
3656 { if ((yyvsp[-1].expression)==NULL) {
3657 (yyval.expression) = NULL;
3658 } else if ((yyvsp[-1].expression)->isa<IntLit>()) {
3659 (yyval.expression)=new SetLit((yyloc), IntSetVal::a((yyvsp[-1].expression)->cast<IntLit>()->v(),IntVal::infinity()));
3660 } else {
3661 (yyval.expression)=new BinOp((yyloc), (yyvsp[-1].expression), BOT_DOTDOT, IntLit::a(IntVal::infinity()));
3662 }
3663 }
3664 break;
3665
3666 case 106: /* expr_list_head: expr */
3667 { (yyval.expression_v)=new std::vector<MiniZinc::Expression*>; (yyval.expression_v)->push_back((yyvsp[0].expression)); }
3668 break;
3669
3670 case 107: /* expr_list_head: expr_list_head ',' expr */
3671 { (yyval.expression_v)=(yyvsp[-2].expression_v); if ((yyval.expression_v) && (yyvsp[0].expression)) (yyval.expression_v)->push_back((yyvsp[0].expression)); }
3672 break;
3673
3674 case 109: /* set_expr: set_expr "::" annotation_expr */
3675 { if ((yyvsp[-2].expression) && (yyvsp[0].expression)) (yyvsp[-2].expression)->addAnnotation((yyvsp[0].expression)); (yyval.expression)=(yyvsp[-2].expression); }
3676 break;
3677
3678 case 110: /* set_expr: set_expr "union" set_expr */
3679 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_UNION, (yyvsp[0].expression)); }
3680 break;
3681
3682 case 111: /* set_expr: set_expr "diff" set_expr */
3683 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_DIFF, (yyvsp[0].expression)); }
3684 break;
3685
3686 case 112: /* set_expr: set_expr "symdiff" set_expr */
3687 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_SYMDIFF, (yyvsp[0].expression)); }
3688 break;
3689
3690 case 113: /* set_expr: set_expr ".." set_expr */
3691 { if ((yyvsp[-2].expression)==NULL || (yyvsp[0].expression)==NULL) {
3692 (yyval.expression) = NULL;
3693 } else if ((yyvsp[-2].expression)->isa<IntLit>() && (yyvsp[0].expression)->isa<IntLit>()) {
3694 (yyval.expression)=new SetLit((yyloc), IntSetVal::a((yyvsp[-2].expression)->cast<IntLit>()->v(),(yyvsp[0].expression)->cast<IntLit>()->v()));
3695 } else {
3696 (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_DOTDOT, (yyvsp[0].expression));
3697 }
3698 }
3699 break;
3700
3701 case 114: /* set_expr: "'..'" '(' expr ',' expr ')' */
3702 { if ((yyvsp[-3].expression)==NULL || (yyvsp[-1].expression)==NULL) {
3703 (yyval.expression) = NULL;
3704 } else if ((yyvsp[-3].expression)->isa<IntLit>() && (yyvsp[-1].expression)->isa<IntLit>()) {
3705 (yyval.expression)=new SetLit((yyloc), IntSetVal::a((yyvsp[-3].expression)->cast<IntLit>()->v(),(yyvsp[-1].expression)->cast<IntLit>()->v()));
3706 } else {
3707 (yyval.expression)=new BinOp((yyloc), (yyvsp[-3].expression), BOT_DOTDOT, (yyvsp[-1].expression));
3708 }
3709 }
3710 break;
3711
3712 case 115: /* set_expr: set_expr "intersect" set_expr */
3713 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_INTERSECT, (yyvsp[0].expression)); }
3714 break;
3715
3716 case 116: /* set_expr: set_expr "++" set_expr */
3717 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_PLUSPLUS, (yyvsp[0].expression)); }
3718 break;
3719
3720 case 117: /* set_expr: set_expr "+" set_expr */
3721 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_PLUS, (yyvsp[0].expression)); }
3722 break;
3723
3724 case 118: /* set_expr: set_expr "-" set_expr */
3725 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_MINUS, (yyvsp[0].expression)); }
3726 break;
3727
3728 case 119: /* set_expr: set_expr "*" set_expr */
3729 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_MULT, (yyvsp[0].expression)); }
3730 break;
3731
3732 case 120: /* set_expr: set_expr "/" set_expr */
3733 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_DIV, (yyvsp[0].expression)); }
3734 break;
3735
3736 case 121: /* set_expr: set_expr "div" set_expr */
3737 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_IDIV, (yyvsp[0].expression)); }
3738 break;
3739
3740 case 122: /* set_expr: set_expr "mod" set_expr */
3741 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_MOD, (yyvsp[0].expression)); }
3742 break;
3743
3744 case 123: /* set_expr: set_expr "^" set_expr */
3745 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_POW, (yyvsp[0].expression)); }
3746 break;
3747
3748 case 124: /* set_expr: set_expr "~+" set_expr */
3749 { vector<Expression*> args;
3750 args.push_back((yyvsp[-2].expression)); args.push_back((yyvsp[0].expression));
3751 (yyval.expression)=new Call((yyloc), ASTString("~+"), args);
3752 }
3753 break;
3754
3755 case 125: /* set_expr: set_expr "~-" set_expr */
3756 { vector<Expression*> args;
3757 args.push_back((yyvsp[-2].expression)); args.push_back((yyvsp[0].expression));
3758 (yyval.expression)=new Call((yyloc), ASTString("~-"), args);
3759 }
3760 break;
3761
3762 case 126: /* set_expr: set_expr "~*" set_expr */
3763 { vector<Expression*> args;
3764 args.push_back((yyvsp[-2].expression)); args.push_back((yyvsp[0].expression));
3765 (yyval.expression)=new Call((yyloc), ASTString("~*"), args);
3766 }
3767 break;
3768
3769 case 127: /* set_expr: set_expr "~=" set_expr */
3770 { vector<Expression*> args;
3771 args.push_back((yyvsp[-2].expression)); args.push_back((yyvsp[0].expression));
3772 (yyval.expression)=new Call((yyloc), ASTString("~="), args);
3773 }
3774 break;
3775
3776 case 128: /* set_expr: set_expr "quoted identifier" set_expr */
3777 { vector<Expression*> args;
3778 args.push_back((yyvsp[-2].expression)); args.push_back((yyvsp[0].expression));
3779 (yyval.expression)=new Call((yyloc), (yyvsp[-1].sValue), args);
3780 free((yyvsp[-1].sValue));
3781 }
3782 break;
3783
3784 case 129: /* set_expr: "+" set_expr */
3785 { (yyval.expression)=new UnOp((yyloc), UOT_PLUS, (yyvsp[0].expression)); }
3786 break;
3787
3788 case 130: /* set_expr: "-" set_expr */
3789 { if ((yyvsp[0].expression) && (yyvsp[0].expression)->isa<IntLit>()) {
3790 (yyval.expression) = IntLit::a(-(yyvsp[0].expression)->cast<IntLit>()->v());
3791 } else if ((yyvsp[0].expression) && (yyvsp[0].expression)->isa<FloatLit>()) {
3792 (yyval.expression) = FloatLit::a(-(yyvsp[0].expression)->cast<FloatLit>()->v());
3793 } else {
3794 (yyval.expression)=new UnOp((yyloc), UOT_MINUS, (yyvsp[0].expression));
3795 }
3796 }
3797 break;
3798
3799 case 132: /* expr: expr "::" annotation_expr */
3800 { if ((yyvsp[-2].expression) && (yyvsp[0].expression)) (yyvsp[-2].expression)->addAnnotation((yyvsp[0].expression)); (yyval.expression)=(yyvsp[-2].expression); }
3801 break;
3802
3803 case 133: /* expr: expr "<->" expr */
3804 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_EQUIV, (yyvsp[0].expression)); }
3805 break;
3806
3807 case 134: /* expr: expr "->" expr */
3808 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_IMPL, (yyvsp[0].expression)); }
3809 break;
3810
3811 case 135: /* expr: expr "<-" expr */
3812 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_RIMPL, (yyvsp[0].expression)); }
3813 break;
3814
3815 case 136: /* expr: expr "\\/" expr */
3816 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_OR, (yyvsp[0].expression)); }
3817 break;
3818
3819 case 137: /* expr: expr "xor" expr */
3820 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_XOR, (yyvsp[0].expression)); }
3821 break;
3822
3823 case 138: /* expr: expr "/\\" expr */
3824 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_AND, (yyvsp[0].expression)); }
3825 break;
3826
3827 case 139: /* expr: expr "<" expr */
3828 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_LE, (yyvsp[0].expression)); }
3829 break;
3830
3831 case 140: /* expr: expr ">" expr */
3832 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_GR, (yyvsp[0].expression)); }
3833 break;
3834
3835 case 141: /* expr: expr "<=" expr */
3836 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_LQ, (yyvsp[0].expression)); }
3837 break;
3838
3839 case 142: /* expr: expr ">=" expr */
3840 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_GQ, (yyvsp[0].expression)); }
3841 break;
3842
3843 case 143: /* expr: expr "=" expr */
3844 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_EQ, (yyvsp[0].expression)); }
3845 break;
3846
3847 case 144: /* expr: expr "!=" expr */
3848 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_NQ, (yyvsp[0].expression)); }
3849 break;
3850
3851 case 145: /* expr: expr "in" expr */
3852 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_IN, (yyvsp[0].expression)); }
3853 break;
3854
3855 case 146: /* expr: expr "subset" expr */
3856 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_SUBSET, (yyvsp[0].expression)); }
3857 break;
3858
3859 case 147: /* expr: expr "superset" expr */
3860 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_SUPERSET, (yyvsp[0].expression)); }
3861 break;
3862
3863 case 148: /* expr: expr "union" expr */
3864 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_UNION, (yyvsp[0].expression)); }
3865 break;
3866
3867 case 149: /* expr: expr "diff" expr */
3868 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_DIFF, (yyvsp[0].expression)); }
3869 break;
3870
3871 case 150: /* expr: expr "symdiff" expr */
3872 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_SYMDIFF, (yyvsp[0].expression)); }
3873 break;
3874
3875 case 151: /* expr: expr ".." expr */
3876 { if ((yyvsp[-2].expression)==NULL || (yyvsp[0].expression)==NULL) {
3877 (yyval.expression) = NULL;
3878 } else if ((yyvsp[-2].expression)->isa<IntLit>() && (yyvsp[0].expression)->isa<IntLit>()) {
3879 (yyval.expression)=new SetLit((yyloc), IntSetVal::a((yyvsp[-2].expression)->cast<IntLit>()->v(),(yyvsp[0].expression)->cast<IntLit>()->v()));
3880 } else {
3881 (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_DOTDOT, (yyvsp[0].expression));
3882 }
3883 }
3884 break;
3885
3886 case 152: /* expr: "'..'" '(' expr ',' expr ')' */
3887 { if ((yyvsp[-3].expression)==NULL || (yyvsp[-1].expression)==NULL) {
3888 (yyval.expression) = NULL;
3889 } else if ((yyvsp[-3].expression)->isa<IntLit>() && (yyvsp[-1].expression)->isa<IntLit>()) {
3890 (yyval.expression)=new SetLit((yyloc), IntSetVal::a((yyvsp[-3].expression)->cast<IntLit>()->v(),(yyvsp[-1].expression)->cast<IntLit>()->v()));
3891 } else {
3892 (yyval.expression)=new BinOp((yyloc), (yyvsp[-3].expression), BOT_DOTDOT, (yyvsp[-1].expression));
3893 }
3894 }
3895 break;
3896
3897 case 153: /* expr: expr "intersect" expr */
3898 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_INTERSECT, (yyvsp[0].expression)); }
3899 break;
3900
3901 case 154: /* expr: expr "++" expr */
3902 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_PLUSPLUS, (yyvsp[0].expression)); }
3903 break;
3904
3905 case 155: /* expr: expr "+" expr */
3906 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_PLUS, (yyvsp[0].expression)); }
3907 break;
3908
3909 case 156: /* expr: expr "-" expr */
3910 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_MINUS, (yyvsp[0].expression)); }
3911 break;
3912
3913 case 157: /* expr: expr "*" expr */
3914 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_MULT, (yyvsp[0].expression)); }
3915 break;
3916
3917 case 158: /* expr: expr "/" expr */
3918 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_DIV, (yyvsp[0].expression)); }
3919 break;
3920
3921 case 159: /* expr: expr "div" expr */
3922 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_IDIV, (yyvsp[0].expression)); }
3923 break;
3924
3925 case 160: /* expr: expr "mod" expr */
3926 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_MOD, (yyvsp[0].expression)); }
3927 break;
3928
3929 case 161: /* expr: expr "^" expr */
3930 { (yyval.expression)=new BinOp((yyloc), (yyvsp[-2].expression), BOT_POW, (yyvsp[0].expression)); }
3931 break;
3932
3933 case 162: /* expr: expr "~+" expr */
3934 { vector<Expression*> args;
3935 args.push_back((yyvsp[-2].expression)); args.push_back((yyvsp[0].expression));
3936 (yyval.expression)=new Call((yyloc), ASTString("~+"), args);
3937 }
3938 break;
3939
3940 case 163: /* expr: expr "~-" expr */
3941 { vector<Expression*> args;
3942 args.push_back((yyvsp[-2].expression)); args.push_back((yyvsp[0].expression));
3943 (yyval.expression)=new Call((yyloc), ASTString("~-"), args);
3944 }
3945 break;
3946
3947 case 164: /* expr: expr "~*" expr */
3948 { vector<Expression*> args;
3949 args.push_back((yyvsp[-2].expression)); args.push_back((yyvsp[0].expression));
3950 (yyval.expression)=new Call((yyloc), ASTString("~*"), args);
3951 }
3952 break;
3953
3954 case 165: /* expr: expr "~=" expr */
3955 { vector<Expression*> args;
3956 args.push_back((yyvsp[-2].expression)); args.push_back((yyvsp[0].expression));
3957 (yyval.expression)=new Call((yyloc), ASTString("~="), args);
3958 }
3959 break;
3960
3961 case 166: /* expr: expr "quoted identifier" expr */
3962 { vector<Expression*> args;
3963 args.push_back((yyvsp[-2].expression)); args.push_back((yyvsp[0].expression));
3964 (yyval.expression)=new Call((yyloc), (yyvsp[-1].sValue), args);
3965 free((yyvsp[-1].sValue));
3966 }
3967 break;
3968
3969 case 167: /* expr: "not" expr */
3970 { (yyval.expression)=new UnOp((yyloc), UOT_NOT, (yyvsp[0].expression)); }
3971 break;
3972
3973 case 168: /* expr: "+" expr */
3974 { if (((yyvsp[0].expression) && (yyvsp[0].expression)->isa<IntLit>()) || ((yyvsp[0].expression) && (yyvsp[0].expression)->isa<FloatLit>())) {
3975 (yyval.expression) = (yyvsp[0].expression);
3976 } else {
3977 (yyval.expression)=new UnOp((yyloc), UOT_PLUS, (yyvsp[0].expression));
3978 }
3979 }
3980 break;
3981
3982 case 169: /* expr: "-" expr */
3983 { if ((yyvsp[0].expression) && (yyvsp[0].expression)->isa<IntLit>()) {
3984 (yyval.expression) = IntLit::a(-(yyvsp[0].expression)->cast<IntLit>()->v());
3985 } else if ((yyvsp[0].expression) && (yyvsp[0].expression)->isa<FloatLit>()) {
3986 (yyval.expression) = FloatLit::a(-(yyvsp[0].expression)->cast<FloatLit>()->v());
3987 } else {
3988 (yyval.expression)=new UnOp((yyloc), UOT_MINUS, (yyvsp[0].expression));
3989 }
3990 }
3991 break;
3992
3993 case 170: /* expr_atom_head: expr_atom_head_nonstring */
3994 { (yyval.expression)=(yyvsp[0].expression); }
3995 break;
3996
3997 case 171: /* expr_atom_head: string_expr */
3998 { (yyval.expression)=(yyvsp[0].expression); }
3999 break;
4000
4001 case 172: /* expr_atom_head_nonstring: '(' expr ')' */
4002 { (yyval.expression)=(yyvsp[-1].expression); }
4003 break;
4004
4005 case 173: /* expr_atom_head_nonstring: '(' expr ')' array_access_tail */
4006 { if ((yyvsp[0].expression_vv)) (yyval.expression)=createArrayAccess((yyloc), (yyvsp[-2].expression), *(yyvsp[0].expression_vv)); delete (yyvsp[0].expression_vv); }
4007 break;
4008
4009 case 174: /* expr_atom_head_nonstring: "identifier" */
4010 { (yyval.expression)=new Id((yyloc), (yyvsp[0].sValue), NULL); free((yyvsp[0].sValue)); }
4011 break;
4012
4013 case 175: /* expr_atom_head_nonstring: "identifier" array_access_tail */
4014 { if ((yyvsp[0].expression_vv)) (yyval.expression)=createArrayAccess((yyloc), new Id((yylsp[-1]),(yyvsp[-1].sValue),NULL), *(yyvsp[0].expression_vv));
4015 free((yyvsp[-1].sValue)); delete (yyvsp[0].expression_vv); }
4016 break;
4017
4018 case 176: /* expr_atom_head_nonstring: "_" */
4019 { (yyval.expression)=new AnonVar((yyloc)); }
4020 break;
4021
4022 case 177: /* expr_atom_head_nonstring: "_" array_access_tail */
4023 { if ((yyvsp[0].expression_vv)) (yyval.expression)=createArrayAccess((yyloc), new AnonVar((yyloc)), *(yyvsp[0].expression_vv));
4024 delete (yyvsp[0].expression_vv); }
4025 break;
4026
4027 case 178: /* expr_atom_head_nonstring: "bool literal" */
4028 { (yyval.expression)=constants().boollit(((yyvsp[0].iValue)!=0)); }
4029 break;
4030
4031 case 179: /* expr_atom_head_nonstring: "integer literal" */
4032 { (yyval.expression)=IntLit::a((yyvsp[0].iValue)); }
4033 break;
4034
4035 case 180: /* expr_atom_head_nonstring: "infinity" */
4036 { (yyval.expression)=IntLit::a(IntVal::infinity()); }
4037 break;
4038
4039 case 181: /* expr_atom_head_nonstring: "float literal" */
4040 { (yyval.expression)=FloatLit::a((yyvsp[0].dValue)); }
4041 break;
4042
4043 case 182: /* expr_atom_head_nonstring: "<>" */
4044 { (yyval.expression)=constants().absent; }
4045 break;
4046
4047 case 184: /* expr_atom_head_nonstring: set_literal array_access_tail */
4048 { if ((yyvsp[0].expression_vv)) (yyval.expression)=createArrayAccess((yyloc), (yyvsp[-1].expression), *(yyvsp[0].expression_vv));
4049 delete (yyvsp[0].expression_vv); }
4050 break;
4051
4052 case 186: /* expr_atom_head_nonstring: set_comp array_access_tail */
4053 { if ((yyvsp[0].expression_vv)) (yyval.expression)=createArrayAccess((yyloc), (yyvsp[-1].expression), *(yyvsp[0].expression_vv));
4054 delete (yyvsp[0].expression_vv); }
4055 break;
4056
4057 case 188: /* expr_atom_head_nonstring: simple_array_literal array_access_tail */
4058 { if ((yyvsp[0].expression_vv)) (yyval.expression)=createArrayAccess((yyloc), (yyvsp[-1].expression), *(yyvsp[0].expression_vv));
4059 delete (yyvsp[0].expression_vv); }
4060 break;
4061
4062 case 190: /* expr_atom_head_nonstring: simple_array_literal_2d array_access_tail */
4063 { if ((yyvsp[0].expression_vv)) (yyval.expression)=createArrayAccess((yyloc), (yyvsp[-1].expression), *(yyvsp[0].expression_vv));
4064 delete (yyvsp[0].expression_vv); }
4065 break;
4066
4067 case 192: /* expr_atom_head_nonstring: simple_array_comp array_access_tail */
4068 { if ((yyvsp[0].expression_vv)) (yyval.expression)=createArrayAccess((yyloc), (yyvsp[-1].expression), *(yyvsp[0].expression_vv));
4069 delete (yyvsp[0].expression_vv); }
4070 break;
4071
4072 case 194: /* expr_atom_head_nonstring: if_then_else_expr array_access_tail */
4073 { if ((yyvsp[0].expression_vv)) (yyval.expression)=createArrayAccess((yyloc), (yyvsp[-1].expression), *(yyvsp[0].expression_vv));
4074 delete (yyvsp[0].expression_vv); }
4075 break;
4076
4077 case 197: /* expr_atom_head_nonstring: call_expr array_access_tail */
4078 { if ((yyvsp[0].expression_vv)) (yyval.expression)=createArrayAccess((yyloc), (yyvsp[-1].expression), *(yyvsp[0].expression_vv));
4079 delete (yyvsp[0].expression_vv); }
4080 break;
4081
4082 case 198: /* string_expr: "string literal" */
4083 { (yyval.expression)=new StringLit((yyloc), (yyvsp[0].sValue)); free((yyvsp[0].sValue)); }
4084 break;
4085
4086 case 199: /* string_expr: "interpolated string start" string_quote_rest */
4087 { (yyval.expression)=new BinOp((yyloc), new StringLit((yyloc), (yyvsp[-1].sValue)), BOT_PLUSPLUS, (yyvsp[0].expression));
4088 free((yyvsp[-1].sValue));
4089 }
4090 break;
4091
4092 case 200: /* string_quote_rest: expr_list_head "interpolated string end" */
4093 { if ((yyvsp[-1].expression_v)) (yyval.expression)=new BinOp((yyloc), new Call((yyloc), ASTString("format"), *(yyvsp[-1].expression_v)), BOT_PLUSPLUS, new StringLit((yyloc),(yyvsp[0].sValue)));
4094 free((yyvsp[0].sValue));
4095 delete (yyvsp[-1].expression_v);
4096 }
4097 break;
4098
4099 case 201: /* string_quote_rest: expr_list_head "interpolated string middle" string_quote_rest */
4100 { if ((yyvsp[-2].expression_v)) (yyval.expression)=new BinOp((yyloc), new Call((yyloc), ASTString("format"), *(yyvsp[-2].expression_v)), BOT_PLUSPLUS,
4101 new BinOp((yyloc), new StringLit((yyloc),(yyvsp[-1].sValue)), BOT_PLUSPLUS, (yyvsp[0].expression)));
4102 free((yyvsp[-1].sValue));
4103 delete (yyvsp[-2].expression_v);
4104 }
4105 break;
4106
4107 case 202: /* array_access_tail: "[" array_access_expr_list "]" */
4108 { (yyval.expression_vv)=new std::vector<std::vector<Expression*> >();
4109 if ((yyvsp[-1].expression_v)) {
4110 (yyval.expression_vv)->push_back(*(yyvsp[-1].expression_v));
4111 delete (yyvsp[-1].expression_v);
4112 }
4113 }
4114 break;
4115
4116 case 203: /* array_access_tail: array_access_tail "[" array_access_expr_list "]" */
4117 { (yyval.expression_vv)=(yyvsp[-3].expression_vv);
4118 if ((yyval.expression_vv) && (yyvsp[-1].expression_v)) {
4119 (yyval.expression_vv)->push_back(*(yyvsp[-1].expression_v));
4120 delete (yyvsp[-1].expression_v);
4121 }
4122 }
4123 break;
4124
4125 case 204: /* set_literal: '{' '}' */
4126 { (yyval.expression) = new SetLit((yyloc), std::vector<Expression*>()); }
4127 break;
4128
4129 case 205: /* set_literal: '{' expr_list '}' */
4130 { if ((yyvsp[-1].expression_v)) (yyval.expression) = new SetLit((yyloc), *(yyvsp[-1].expression_v));
4131 delete (yyvsp[-1].expression_v); }
4132 break;
4133
4134 case 206: /* set_comp: '{' expr '|' comp_tail '}' */
4135 { if ((yyvsp[-1].generators)) (yyval.expression) = new Comprehension((yyloc), (yyvsp[-3].expression), *(yyvsp[-1].generators), true);
4136 delete (yyvsp[-1].generators);
4137 }
4138 break;
4139
4140 case 207: /* comp_tail: generator_list */
4141 { if ((yyvsp[0].generator_v)) (yyval.generators)=new Generators; (yyval.generators)->_g = *(yyvsp[0].generator_v); delete (yyvsp[0].generator_v); }
4142 break;
4143
4144 case 209: /* generator_list_head: generator */
4145 { (yyval.generator_v)=new std::vector<Generator>; if ((yyvsp[0].generator)) (yyval.generator_v)->push_back(*(yyvsp[0].generator)); delete (yyvsp[0].generator); }
4146 break;
4147
4148 case 210: /* generator_list_head: generator_eq */
4149 { (yyval.generator_v)=new std::vector<Generator>; if ((yyvsp[0].generator)) (yyval.generator_v)->push_back(*(yyvsp[0].generator)); delete (yyvsp[0].generator); }
4150 break;
4151
4152 case 211: /* generator_list_head: generator_eq "where" expr */
4153 { (yyval.generator_v)=new std::vector<Generator>;
4154 if ((yyvsp[-2].generator)) (yyval.generator_v)->push_back(*(yyvsp[-2].generator));
4155 if ((yyvsp[-2].generator) && (yyvsp[0].expression)) (yyval.generator_v)->push_back(Generator((yyval.generator_v)->size(),(yyvsp[0].expression)));
4156 delete (yyvsp[-2].generator);
4157 }
4158 break;
4159
4160 case 212: /* generator_list_head: generator_list_head ',' generator */
4161 { (yyval.generator_v)=(yyvsp[-2].generator_v); if ((yyval.generator_v) && (yyvsp[0].generator)) (yyval.generator_v)->push_back(*(yyvsp[0].generator)); delete (yyvsp[0].generator); }
4162 break;
4163
4164 case 213: /* generator_list_head: generator_list_head ',' generator_eq */
4165 { (yyval.generator_v)=(yyvsp[-2].generator_v); if ((yyval.generator_v) && (yyvsp[0].generator)) (yyval.generator_v)->push_back(*(yyvsp[0].generator)); delete (yyvsp[0].generator); }
4166 break;
4167
4168 case 214: /* generator_list_head: generator_list_head ',' generator_eq "where" expr */
4169 { (yyval.generator_v)=(yyvsp[-4].generator_v);
4170 if ((yyval.generator_v) && (yyvsp[-2].generator)) (yyval.generator_v)->push_back(*(yyvsp[-2].generator));
4171 if ((yyval.generator_v) && (yyvsp[-2].generator) && (yyvsp[0].expression)) (yyval.generator_v)->push_back(Generator((yyval.generator_v)->size(),(yyvsp[0].expression)));
4172 delete (yyvsp[-2].generator);
4173 }
4174 break;
4175
4176 case 215: /* generator: id_list "in" expr */
4177 { if ((yyvsp[-2].string_v) && (yyvsp[0].expression)) (yyval.generator)=new Generator(*(yyvsp[-2].string_v),(yyvsp[0].expression),NULL); else (yyval.generator)=NULL; delete (yyvsp[-2].string_v); }
4178 break;
4179
4180 case 216: /* generator: id_list "in" expr "where" expr */
4181 { if ((yyvsp[-4].string_v) && (yyvsp[-2].expression)) (yyval.generator)=new Generator(*(yyvsp[-4].string_v),(yyvsp[-2].expression),(yyvsp[0].expression)); else (yyval.generator)=NULL; delete (yyvsp[-4].string_v); }
4182 break;
4183
4184 case 217: /* generator_eq: "identifier" "=" expr */
4185 { if ((yyvsp[0].expression)) (yyval.generator)=new Generator({(yyvsp[-2].sValue)},NULL,(yyvsp[0].expression)); else (yyval.generator)=NULL; free((yyvsp[-2].sValue)); }
4186 break;
4187
4188 case 219: /* id_list_head: "identifier" */
4189 { (yyval.string_v)=new std::vector<std::string>; (yyval.string_v)->push_back((yyvsp[0].sValue)); free((yyvsp[0].sValue)); }
4190 break;
4191
4192 case 220: /* id_list_head: id_list_head ',' "identifier" */
4193 { (yyval.string_v)=(yyvsp[-2].string_v); if ((yyval.string_v) && (yyvsp[0].sValue)) (yyval.string_v)->push_back((yyvsp[0].sValue)); free((yyvsp[0].sValue)); }
4194 break;
4195
4196 case 221: /* simple_array_literal: "[" "]" */
4197 { (yyval.expression)=new ArrayLit((yyloc), std::vector<MiniZinc::Expression*>()); }
4198 break;
4199
4200 case 222: /* simple_array_literal: "[" expr_list "]" */
4201 { if ((yyvsp[-1].expression_v)) (yyval.expression)=new ArrayLit((yyloc), *(yyvsp[-1].expression_v)); delete (yyvsp[-1].expression_v); }
4202 break;
4203
4204 case 223: /* simple_array_literal_2d: "[|" "|]" */
4205 { (yyval.expression)=new ArrayLit((yyloc), std::vector<std::vector<Expression*> >()); }
4206 break;
4207
4208 case 224: /* simple_array_literal_2d: "[|" simple_array_literal_2d_list "|]" */
4209 { if ((yyvsp[-1].expression_vv)) {
4210 (yyval.expression)=new ArrayLit((yyloc), *(yyvsp[-1].expression_vv));
4211 for (unsigned int i=1; i<(yyvsp[-1].expression_vv)->size(); i++)
4212 if ((*(yyvsp[-1].expression_vv))[i].size() != (*(yyvsp[-1].expression_vv))[i-1].size())
4213 yyerror(&(yylsp[-1]), parm, "syntax error, all sub-arrays of 2d array literal must have the same length");
4214 delete (yyvsp[-1].expression_vv);
4215 } else {
4216 (yyval.expression) = NULL;
4217 }
4218 }
4219 break;
4220
4221 case 225: /* simple_array_literal_2d: "[|" simple_array_literal_2d_list '|' "|]" */
4222 { if ((yyvsp[-2].expression_vv)) {
4223 (yyval.expression)=new ArrayLit((yyloc), *(yyvsp[-2].expression_vv));
4224 for (unsigned int i=1; i<(yyvsp[-2].expression_vv)->size(); i++)
4225 if ((*(yyvsp[-2].expression_vv))[i].size() != (*(yyvsp[-2].expression_vv))[i-1].size())
4226 yyerror(&(yylsp[-2]), parm, "syntax error, all sub-arrays of 2d array literal must have the same length");
4227 delete (yyvsp[-2].expression_vv);
4228 } else {
4229 (yyval.expression) = NULL;
4230 }
4231 }
4232 break;
4233
4234 case 226: /* simple_array_literal_2d: "[|" simple_array_literal_3d_list "|]" */
4235 {
4236 if ((yyvsp[-1].expression_vvv)) {
4237 std::vector<std::pair<int,int> > dims(3);
4238 dims[0] = std::pair<int,int>(1,static_cast<int>((yyvsp[-1].expression_vvv)->size()));
4239 if ((yyvsp[-1].expression_vvv)->size()==0) {
4240 dims[1] = std::pair<int,int>(1,0);
4241 dims[2] = std::pair<int,int>(1,0);
4242 } else {
4243 dims[1] = std::pair<int,int>(1,static_cast<int>((*(yyvsp[-1].expression_vvv))[0].size()));
4244 if ((*(yyvsp[-1].expression_vvv))[0].size()==0) {
4245 dims[2] = std::pair<int,int>(1,0);
4246 } else {
4247 dims[2] = std::pair<int,int>(1,static_cast<int>((*(yyvsp[-1].expression_vvv))[0][0].size()));
4248 }
4249 }
4250 std::vector<Expression*> a;
4251 for (int i=0; i<dims[0].second; i++) {
4252 if ((*(yyvsp[-1].expression_vvv))[i].size() != dims[1].second) {
4253 yyerror(&(yylsp[-1]), parm, "syntax error, all sub-arrays of 3d array literal must have the same length");
4254 } else {
4255 for (int j=0; j<dims[1].second; j++) {
4256 if ((*(yyvsp[-1].expression_vvv))[i][j].size() != dims[2].second) {
4257 yyerror(&(yylsp[-1]), parm, "syntax error, all sub-arrays of 3d array literal must have the same length");
4258 } else {
4259 for (int k=0; k<dims[2].second; k++) {
4260 a.push_back((*(yyvsp[-1].expression_vvv))[i][j][k]);
4261 }
4262 }
4263 }
4264 }
4265 }
4266 (yyval.expression) = new ArrayLit((yyloc),a,dims);
4267 delete (yyvsp[-1].expression_vvv);
4268 } else {
4269 (yyval.expression) = NULL;
4270 }
4271 }
4272 break;
4273
4274 case 227: /* simple_array_literal_3d_list: '|' '|' */
4275 { (yyval.expression_vvv)=new std::vector<std::vector<std::vector<MiniZinc::Expression*> > >;
4276 }
4277 break;
4278
4279 case 228: /* simple_array_literal_3d_list: '|' simple_array_literal_2d_list '|' */
4280 { (yyval.expression_vvv)=new std::vector<std::vector<std::vector<MiniZinc::Expression*> > >;
4281 if ((yyvsp[-1].expression_vv)) (yyval.expression_vvv)->push_back(*(yyvsp[-1].expression_vv));
4282 delete (yyvsp[-1].expression_vv);
4283 }
4284 break;
4285
4286 case 229: /* simple_array_literal_3d_list: simple_array_literal_3d_list ',' '|' simple_array_literal_2d_list '|' */
4287 { (yyval.expression_vvv)=(yyvsp[-4].expression_vvv);
4288 if ((yyval.expression_vvv) && (yyvsp[-1].expression_vv)) (yyval.expression_vvv)->push_back(*(yyvsp[-1].expression_vv));
4289 delete (yyvsp[-1].expression_vv);
4290 }
4291 break;
4292
4293 case 230: /* simple_array_literal_2d_list: expr_list */
4294 { (yyval.expression_vv)=new std::vector<std::vector<MiniZinc::Expression*> >;
4295 if ((yyvsp[0].expression_v)) (yyval.expression_vv)->push_back(*(yyvsp[0].expression_v));
4296 delete (yyvsp[0].expression_v);
4297 }
4298 break;
4299
4300 case 231: /* simple_array_literal_2d_list: simple_array_literal_2d_list '|' expr_list */
4301 { (yyval.expression_vv)=(yyvsp[-2].expression_vv); if ((yyval.expression_vv) && (yyvsp[0].expression_v)) (yyval.expression_vv)->push_back(*(yyvsp[0].expression_v)); delete (yyvsp[0].expression_v); }
4302 break;
4303
4304 case 232: /* simple_array_comp: "[" expr '|' comp_tail "]" */
4305 { if ((yyvsp[-1].generators)) (yyval.expression)=new Comprehension((yyloc), (yyvsp[-3].expression), *(yyvsp[-1].generators), false);
4306 delete (yyvsp[-1].generators);
4307 }
4308 break;
4309
4310 case 233: /* if_then_else_expr: "if" expr "then" expr "endif" */
4311 {
4312 std::vector<Expression*> iexps;
4313 iexps.push_back((yyvsp[-3].expression));
4314 iexps.push_back((yyvsp[-1].expression));
4315 (yyval.expression)=new ITE((yyloc), iexps, NULL);
4316 }
4317 break;
4318
4319 case 234: /* if_then_else_expr: "if" expr "then" expr elseif_list "else" expr "endif" */
4320 {
4321 std::vector<Expression*> iexps;
4322 iexps.push_back((yyvsp[-6].expression));
4323 iexps.push_back((yyvsp[-4].expression));
4324 if ((yyvsp[-3].expression_v)) {
4325 for (unsigned int i=0; i<(yyvsp[-3].expression_v)->size(); i+=2) {
4326 iexps.push_back((*(yyvsp[-3].expression_v))[i]);
4327 iexps.push_back((*(yyvsp[-3].expression_v))[i+1]);
4328 }
4329 }
4330 (yyval.expression)=new ITE((yyloc), iexps,(yyvsp[-1].expression));
4331 delete (yyvsp[-3].expression_v);
4332 }
4333 break;
4334
4335 case 235: /* elseif_list: %empty */
4336 { (yyval.expression_v)=new std::vector<MiniZinc::Expression*>; }
4337 break;
4338
4339 case 236: /* elseif_list: elseif_list "elseif" expr "then" expr */
4340 { (yyval.expression_v)=(yyvsp[-4].expression_v); if ((yyval.expression_v) && (yyvsp[-2].expression) && (yyvsp[0].expression)) { (yyval.expression_v)->push_back((yyvsp[-2].expression)); (yyval.expression_v)->push_back((yyvsp[0].expression)); } }
4341 break;
4342
4343 case 237: /* quoted_op: "'<->'" */
4344 { (yyval.iValue)=BOT_EQUIV; }
4345 break;
4346
4347 case 238: /* quoted_op: "'->'" */
4348 { (yyval.iValue)=BOT_IMPL; }
4349 break;
4350
4351 case 239: /* quoted_op: "'<-'" */
4352 { (yyval.iValue)=BOT_RIMPL; }
4353 break;
4354
4355 case 240: /* quoted_op: "'\\/'" */
4356 { (yyval.iValue)=BOT_OR; }
4357 break;
4358
4359 case 241: /* quoted_op: "'xor'" */
4360 { (yyval.iValue)=BOT_XOR; }
4361 break;
4362
4363 case 242: /* quoted_op: "'/\\'" */
4364 { (yyval.iValue)=BOT_AND; }
4365 break;
4366
4367 case 243: /* quoted_op: "'<'" */
4368 { (yyval.iValue)=BOT_LE; }
4369 break;
4370
4371 case 244: /* quoted_op: "'>'" */
4372 { (yyval.iValue)=BOT_GR; }
4373 break;
4374
4375 case 245: /* quoted_op: "'<='" */
4376 { (yyval.iValue)=BOT_LQ; }
4377 break;
4378
4379 case 246: /* quoted_op: "'>='" */
4380 { (yyval.iValue)=BOT_GQ; }
4381 break;
4382
4383 case 247: /* quoted_op: "'='" */
4384 { (yyval.iValue)=BOT_EQ; }
4385 break;
4386
4387 case 248: /* quoted_op: "'!='" */
4388 { (yyval.iValue)=BOT_NQ; }
4389 break;
4390
4391 case 249: /* quoted_op: "'in'" */
4392 { (yyval.iValue)=BOT_IN; }
4393 break;
4394
4395 case 250: /* quoted_op: "'subset'" */
4396 { (yyval.iValue)=BOT_SUBSET; }
4397 break;
4398
4399 case 251: /* quoted_op: "'superset'" */
4400 { (yyval.iValue)=BOT_SUPERSET; }
4401 break;
4402
4403 case 252: /* quoted_op: "'union'" */
4404 { (yyval.iValue)=BOT_UNION; }
4405 break;
4406
4407 case 253: /* quoted_op: "'diff'" */
4408 { (yyval.iValue)=BOT_DIFF; }
4409 break;
4410
4411 case 254: /* quoted_op: "'symdiff'" */
4412 { (yyval.iValue)=BOT_SYMDIFF; }
4413 break;
4414
4415 case 255: /* quoted_op: "'+'" */
4416 { (yyval.iValue)=BOT_PLUS; }
4417 break;
4418
4419 case 256: /* quoted_op: "'-'" */
4420 { (yyval.iValue)=BOT_MINUS; }
4421 break;
4422
4423 case 257: /* quoted_op: "'*'" */
4424 { (yyval.iValue)=BOT_MULT; }
4425 break;
4426
4427 case 258: /* quoted_op: "'^'" */
4428 { (yyval.iValue)=BOT_POW; }
4429 break;
4430
4431 case 259: /* quoted_op: "'/'" */
4432 { (yyval.iValue)=BOT_DIV; }
4433 break;
4434
4435 case 260: /* quoted_op: "'div'" */
4436 { (yyval.iValue)=BOT_IDIV; }
4437 break;
4438
4439 case 261: /* quoted_op: "'mod'" */
4440 { (yyval.iValue)=BOT_MOD; }
4441 break;
4442
4443 case 262: /* quoted_op: "'intersect'" */
4444 { (yyval.iValue)=BOT_INTERSECT; }
4445 break;
4446
4447 case 263: /* quoted_op: "'++'" */
4448 { (yyval.iValue)=BOT_PLUSPLUS; }
4449 break;
4450
4451 case 264: /* quoted_op: "'not'" */
4452 { (yyval.iValue)=-1; }
4453 break;
4454
4455 case 265: /* quoted_op_call: quoted_op '(' expr ',' expr ')' */
4456 { if ((yyvsp[-5].iValue)==-1) {
4457 (yyval.expression)=NULL;
4458 yyerror(&(yylsp[-3]), parm, "syntax error, unary operator with two arguments");
4459 } else {
4460 (yyval.expression)=new BinOp((yyloc), (yyvsp[-3].expression),static_cast<BinOpType>((yyvsp[-5].iValue)),(yyvsp[-1].expression));
4461 }
4462 }
4463 break;
4464
4465 case 266: /* quoted_op_call: quoted_op '(' expr ')' */
4466 { int uot=-1;
4467 switch ((yyvsp[-3].iValue)) {
4468 case -1:
4469 uot = UOT_NOT;
4470 break;
4471 case BOT_MINUS:
4472 uot = UOT_MINUS;
4473 break;
4474 case BOT_PLUS:
4475 uot = UOT_PLUS;
4476 break;
4477 default:
4478 yyerror(&(yylsp[-1]), parm, "syntax error, binary operator with unary argument list");
4479 break;
4480 }
4481 if (uot==-1)
4482 (yyval.expression)=NULL;
4483 else {
4484 if (uot==UOT_PLUS && (yyvsp[-1].expression) && ((yyvsp[-1].expression)->isa<IntLit>() || (yyvsp[-1].expression)->isa<FloatLit>())) {
4485 (yyval.expression) = (yyvsp[-1].expression);
4486 } else if (uot==UOT_MINUS && (yyvsp[-1].expression) && (yyvsp[-1].expression)->isa<IntLit>()) {
4487 (yyval.expression) = IntLit::a(-(yyvsp[-1].expression)->cast<IntLit>()->v());
4488 } else if (uot==UOT_MINUS && (yyvsp[-1].expression) && (yyvsp[-1].expression)->isa<FloatLit>()) {
4489 (yyval.expression) = FloatLit::a(-(yyvsp[-1].expression)->cast<FloatLit>()->v());
4490 } else {
4491 (yyval.expression)=new UnOp((yyloc), static_cast<UnOpType>(uot),(yyvsp[-1].expression));
4492 }
4493 }
4494 }
4495 break;
4496
4497 case 267: /* call_expr: "identifier" '(' ')' */
4498 { (yyval.expression)=new Call((yyloc), (yyvsp[-2].sValue), std::vector<Expression*>()); free((yyvsp[-2].sValue)); }
4499 break;
4500
4501 case 269: /* call_expr: "identifier" '(' comp_or_expr ')' */
4502 {
4503 if ((yyvsp[-1].expression_p)!=NULL) {
4504 bool hadWhere = false;
4505 std::vector<Expression*> args;
4506 for (unsigned int i=0; i<(yyvsp[-1].expression_p)->size(); i++) {
4507 if ((*(yyvsp[-1].expression_p))[i].second) {
4508 yyerror(&(yylsp[-1]), parm, "syntax error, 'where' expression outside generator call");
4509 hadWhere = true;
4510 (yyval.expression)=NULL;
4511 }
4512 args.push_back((*(yyvsp[-1].expression_p))[i].first);
4513 }
4514 if (!hadWhere) {
4515 (yyval.expression)=new Call((yyloc), (yyvsp[-3].sValue), args);
4516 }
4517 }
4518 free((yyvsp[-3].sValue));
4519 delete (yyvsp[-1].expression_p);
4520 }
4521 break;
4522
4523 case 270: /* call_expr: "identifier" '(' comp_or_expr ')' '(' expr ')' */
4524 {
4525 vector<Generator> gens;
4526 vector<Id*> ids;
4527 if ((yyvsp[-4].expression_p)) {
4528 for (unsigned int i=0; i<(yyvsp[-4].expression_p)->size(); i++) {
4529 if (Id* id = Expression::dyn_cast<Id>((*(yyvsp[-4].expression_p))[i].first)) {
4530 if ((*(yyvsp[-4].expression_p))[i].second) {
4531 ParserLocation loc = (*(yyvsp[-4].expression_p))[i].second->loc().parserLocation();
4532 yyerror(&loc, parm, "illegal where expression in generator call");
4533 }
4534 ids.push_back(id);
4535 } else {
4536 if (BinOp* boe = Expression::dyn_cast<BinOp>((*(yyvsp[-4].expression_p))[i].first)) {
4537 if (boe->lhs() && boe->rhs()) {
4538 Id* id = Expression::dyn_cast<Id>(boe->lhs());
4539 if (id && boe->op() == BOT_IN) {
4540 ids.push_back(id);
4541 gens.push_back(Generator(ids,boe->rhs(),(*(yyvsp[-4].expression_p))[i].second));
4542 ids = vector<Id*>();
4543 } else if (id && boe->op() == BOT_EQ && ids.empty()) {
4544 ids.push_back(id);
4545 gens.push_back(Generator(ids,NULL,boe->rhs()));
4546 if ((*(yyvsp[-4].expression_p))[i].second) {
4547 gens.push_back(Generator(gens.size(),(*(yyvsp[-4].expression_p))[i].second));
4548 }
4549 ids = vector<Id*>();
4550 } else {
4551 ParserLocation loc = (*(yyvsp[-4].expression_p))[i].first->loc().parserLocation();
4552 yyerror(&loc, parm, "illegal expression in generator call");
4553 }
4554 }
4555 } else {
4556 ParserLocation loc = (*(yyvsp[-4].expression_p))[i].first->loc().parserLocation();
4557 yyerror(&loc, parm, "illegal expression in generator call");
4558 }
4559 }
4560 }
4561 }
4562 if (ids.size() != 0) {
4563 yyerror(&(yylsp[-4]), parm, "illegal expression in generator call");
4564 }
4565 ParserState* pp = static_cast<ParserState*>(parm);
4566 if (pp->hadError) {
4567 (yyval.expression)=NULL;
4568 } else {
4569 Generators g; g._g = gens;
4570 Comprehension* ac = new Comprehension((yyloc), (yyvsp[-1].expression),g,false);
4571 vector<Expression*> args; args.push_back(ac);
4572 (yyval.expression)=new Call((yyloc), (yyvsp[-6].sValue), args);
4573 }
4574 free((yyvsp[-6].sValue));
4575 delete (yyvsp[-4].expression_p);
4576 }
4577 break;
4578
4579 case 272: /* comp_or_expr_head: expr */
4580 { (yyval.expression_p)=new vector<pair<Expression*,Expression*> >;
4581 if ((yyvsp[0].expression)) {
4582 (yyval.expression_p)->push_back(pair<Expression*,Expression*>((yyvsp[0].expression),NULL));
4583 }
4584 }
4585 break;
4586
4587 case 273: /* comp_or_expr_head: expr "where" expr */
4588 { (yyval.expression_p)=new vector<pair<Expression*,Expression*> >;
4589 if ((yyvsp[-2].expression) && (yyvsp[0].expression)) {
4590 (yyval.expression_p)->push_back(pair<Expression*,Expression*>((yyvsp[-2].expression),(yyvsp[0].expression)));
4591 }
4592 }
4593 break;
4594
4595 case 274: /* comp_or_expr_head: comp_or_expr_head ',' expr */
4596 { (yyval.expression_p)=(yyvsp[-2].expression_p); if ((yyval.expression_p) && (yyvsp[0].expression)) (yyval.expression_p)->push_back(pair<Expression*,Expression*>((yyvsp[0].expression),NULL)); }
4597 break;
4598
4599 case 275: /* comp_or_expr_head: comp_or_expr_head ',' expr "where" expr */
4600 { (yyval.expression_p)=(yyvsp[-4].expression_p); if ((yyval.expression_p) && (yyvsp[-2].expression) && (yyvsp[0].expression)) (yyval.expression_p)->push_back(pair<Expression*,Expression*>((yyvsp[-2].expression),(yyvsp[0].expression))); }
4601 break;
4602
4603 case 276: /* let_expr: "let" '{' let_vardecl_item_list '}' "in" expr */
4604 { if ((yyvsp[-3].expression_v) && (yyvsp[0].expression)) {
4605 (yyval.expression)=new Let((yyloc), *(yyvsp[-3].expression_v), (yyvsp[0].expression)); delete (yyvsp[-3].expression_v);
4606 } else {
4607 (yyval.expression)=NULL;
4608 }
4609 }
4610 break;
4611
4612 case 277: /* let_expr: "let" '{' let_vardecl_item_list comma_or_semi '}' "in" expr */
4613 { if ((yyvsp[-4].expression_v) && (yyvsp[0].expression)) {
4614 (yyval.expression)=new Let((yyloc), *(yyvsp[-4].expression_v), (yyvsp[0].expression)); delete (yyvsp[-4].expression_v);
4615 } else {
4616 (yyval.expression)=NULL;
4617 }
4618 }
4619 break;
4620
4621 case 278: /* let_vardecl_item_list: let_vardecl_item */
4622 { (yyval.expression_v)=new vector<Expression*>; (yyval.expression_v)->push_back((yyvsp[0].vardeclexpr)); }
4623 break;
4624
4625 case 279: /* let_vardecl_item_list: constraint_item */
4626 { (yyval.expression_v)=new vector<Expression*>;
4627 if ((yyvsp[0].item)) {
4628 ConstraintI* ce = (yyvsp[0].item)->cast<ConstraintI>();
4629 (yyval.expression_v)->push_back(ce->e());
4630 ce->e(NULL);
4631 }
4632 }
4633 break;
4634
4635 case 280: /* let_vardecl_item_list: let_vardecl_item_list comma_or_semi let_vardecl_item */
4636 { (yyval.expression_v)=(yyvsp[-2].expression_v); if ((yyval.expression_v) && (yyvsp[0].vardeclexpr)) (yyval.expression_v)->push_back((yyvsp[0].vardeclexpr)); }
4637 break;
4638
4639 case 281: /* let_vardecl_item_list: let_vardecl_item_list comma_or_semi constraint_item */
4640 { (yyval.expression_v)=(yyvsp[-2].expression_v);
4641 if ((yyval.expression_v) && (yyvsp[0].item)) {
4642 ConstraintI* ce = (yyvsp[0].item)->cast<ConstraintI>();
4643 (yyval.expression_v)->push_back(ce->e());
4644 ce->e(NULL);
4645 }
4646 }
4647 break;
4648
4649 case 284: /* let_vardecl_item: ti_expr_and_id annotations */
4650 { (yyval.vardeclexpr) = (yyvsp[-1].vardeclexpr);
4651 if ((yyval.vardeclexpr)) (yyval.vardeclexpr)->toplevel(false);
4652 if ((yyval.vardeclexpr) && (yyvsp[0].expression_v)) (yyval.vardeclexpr)->addAnnotations(*(yyvsp[0].expression_v));
4653 delete (yyvsp[0].expression_v);
4654 }
4655 break;
4656
4657 case 285: /* let_vardecl_item: ti_expr_and_id annotations "=" expr */
4658 { if ((yyvsp[-3].vardeclexpr)) (yyvsp[-3].vardeclexpr)->e((yyvsp[0].expression));
4659 (yyval.vardeclexpr) = (yyvsp[-3].vardeclexpr);
4660 if ((yyval.vardeclexpr)) (yyval.vardeclexpr)->loc((yyloc));
4661 if ((yyval.vardeclexpr)) (yyval.vardeclexpr)->toplevel(false);
4662 if ((yyval.vardeclexpr) && (yyvsp[-2].expression_v)) (yyval.vardeclexpr)->addAnnotations(*(yyvsp[-2].expression_v));
4663 delete (yyvsp[-2].expression_v);
4664 }
4665 break;
4666
4667 case 286: /* annotations: %empty */
4668 { (yyval.expression_v)=NULL; }
4669 break;
4670
4671 case 288: /* annotation_expr: expr_atom_head_nonstring */
4672 { (yyval.expression) = (yyvsp[0].expression); }
4673 break;
4674
4675 case 289: /* annotation_expr: string_expr */
4676 { (yyval.expression) = new Call((yylsp[0]), ASTString("mzn_expression_name"), {(yyvsp[0].expression)}); }
4677 break;
4678
4679 case 290: /* ne_annotations: "::" annotation_expr */
4680 { (yyval.expression_v)=new std::vector<Expression*>(1);
4681 (*(yyval.expression_v))[0] = (yyvsp[0].expression);
4682 }
4683 break;
4684
4685 case 291: /* ne_annotations: ne_annotations "::" annotation_expr */
4686 { (yyval.expression_v)=(yyvsp[-2].expression_v); if ((yyval.expression_v)) (yyval.expression_v)->push_back((yyvsp[0].expression)); }
4687 break;
4688
4689 case 292: /* id_or_quoted_op: "identifier" */
4690 { (yyval.sValue)=(yyvsp[0].sValue); }
4691 break;
4692
4693 case 293: /* id_or_quoted_op: "'<->'" */
4694 { (yyval.sValue)=strdup("'<->'"); }
4695 break;
4696
4697 case 294: /* id_or_quoted_op: "'->'" */
4698 { (yyval.sValue)=strdup("'->'"); }
4699 break;
4700
4701 case 295: /* id_or_quoted_op: "'<-'" */
4702 { (yyval.sValue)=strdup("'<-'"); }
4703 break;
4704
4705 case 296: /* id_or_quoted_op: "'\\/'" */
4706 { (yyval.sValue)=strdup("'\\/'"); }
4707 break;
4708
4709 case 297: /* id_or_quoted_op: "'xor'" */
4710 { (yyval.sValue)=strdup("'xor'"); }
4711 break;
4712
4713 case 298: /* id_or_quoted_op: "'/\\'" */
4714 { (yyval.sValue)=strdup("'/\\'"); }
4715 break;
4716
4717 case 299: /* id_or_quoted_op: "'<'" */
4718 { (yyval.sValue)=strdup("'<'"); }
4719 break;
4720
4721 case 300: /* id_or_quoted_op: "'>'" */
4722 { (yyval.sValue)=strdup("'>'"); }
4723 break;
4724
4725 case 301: /* id_or_quoted_op: "'<='" */
4726 { (yyval.sValue)=strdup("'<='"); }
4727 break;
4728
4729 case 302: /* id_or_quoted_op: "'>='" */
4730 { (yyval.sValue)=strdup("'>='"); }
4731 break;
4732
4733 case 303: /* id_or_quoted_op: "'='" */
4734 { (yyval.sValue)=strdup("'='"); }
4735 break;
4736
4737 case 304: /* id_or_quoted_op: "'!='" */
4738 { (yyval.sValue)=strdup("'!='"); }
4739 break;
4740
4741 case 305: /* id_or_quoted_op: "'in'" */
4742 { (yyval.sValue)=strdup("'in'"); }
4743 break;
4744
4745 case 306: /* id_or_quoted_op: "'subset'" */
4746 { (yyval.sValue)=strdup("'subset'"); }
4747 break;
4748
4749 case 307: /* id_or_quoted_op: "'superset'" */
4750 { (yyval.sValue)=strdup("'superset'"); }
4751 break;
4752
4753 case 308: /* id_or_quoted_op: "'union'" */
4754 { (yyval.sValue)=strdup("'union'"); }
4755 break;
4756
4757 case 309: /* id_or_quoted_op: "'diff'" */
4758 { (yyval.sValue)=strdup("'diff'"); }
4759 break;
4760
4761 case 310: /* id_or_quoted_op: "'symdiff'" */
4762 { (yyval.sValue)=strdup("'symdiff'"); }
4763 break;
4764
4765 case 311: /* id_or_quoted_op: "'..'" */
4766 { (yyval.sValue)=strdup("'..'"); }
4767 break;
4768
4769 case 312: /* id_or_quoted_op: "'+'" */
4770 { (yyval.sValue)=strdup("'+'"); }
4771 break;
4772
4773 case 313: /* id_or_quoted_op: "'-'" */
4774 { (yyval.sValue)=strdup("'-'"); }
4775 break;
4776
4777 case 314: /* id_or_quoted_op: "'*'" */
4778 { (yyval.sValue)=strdup("'*'"); }
4779 break;
4780
4781 case 315: /* id_or_quoted_op: "'^'" */
4782 { (yyval.sValue)=strdup("'^'"); }
4783 break;
4784
4785 case 316: /* id_or_quoted_op: "'/'" */
4786 { (yyval.sValue)=strdup("'/'"); }
4787 break;
4788
4789 case 317: /* id_or_quoted_op: "'div'" */
4790 { (yyval.sValue)=strdup("'div'"); }
4791 break;
4792
4793 case 318: /* id_or_quoted_op: "'mod'" */
4794 { (yyval.sValue)=strdup("'mod'"); }
4795 break;
4796
4797 case 319: /* id_or_quoted_op: "'intersect'" */
4798 { (yyval.sValue)=strdup("'intersect'"); }
4799 break;
4800
4801 case 320: /* id_or_quoted_op: "'not'" */
4802 { (yyval.sValue)=strdup("'not'"); }
4803 break;
4804
4805 case 321: /* id_or_quoted_op: "'++'" */
4806 { (yyval.sValue)=strdup("'++'"); }
4807 break;
4808
4809
4810
4811 default: break;
4812 }
4813 /* User semantic actions sometimes alter yychar, and that requires
4814 that yytoken be updated with the new translation. We take the
4815 approach of translating immediately before every use of yytoken.
4816 One alternative is translating here after every semantic action,
4817 but that translation would be missed if the semantic action invokes
4818 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
4819 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
4820 incorrect destructor might then be invoked immediately. In the
4821 case of YYERROR or YYBACKUP, subsequent parser actions might lead
4822 to an incorrect destructor call or verbose syntax error message
4823 before the lookahead is translated. */
4824 YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
4825
4826 YYPOPSTACK (yylen);
4827 yylen = 0;
4828
4829 *++yyvsp = yyval;
4830 *++yylsp = yyloc;
4831
4832 /* Now 'shift' the result of the reduction. Determine what state
4833 that goes to, based on the state we popped back to and the rule
4834 number reduced by. */
4835 {
4836 const int yylhs = yyr1[yyn] - YYNTOKENS;
4837 const int yyi = yypgoto[yylhs] + *yyssp;
4838 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
4839 ? yytable[yyi]
4840 : yydefgoto[yylhs]);
4841 }
4842
4843 goto yynewstate;
4844
4845
4846/*--------------------------------------.
4847| yyerrlab -- here on detecting error. |
4848`--------------------------------------*/
4849yyerrlab:
4850 /* Make sure we have latest lookahead translation. See comments at
4851 user semantic actions for why this is necessary. */
4852 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
4853 /* If not already recovering from an error, report this error. */
4854 if (!yyerrstatus)
4855 {
4856 ++yynerrs;
4857 {
4858 yypcontext_t yyctx
4859 = {yyssp, yytoken, &yylloc};
4860 char const *yymsgp = YY_("syntax error");
4861 int yysyntax_error_status;
4862 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
4863 if (yysyntax_error_status == 0)
4864 yymsgp = yymsg;
4865 else if (yysyntax_error_status == -1)
4866 {
4867 if (yymsg != yymsgbuf)
4868 YYSTACK_FREE (yymsg);
4869 yymsg = YY_CAST (char *,
4870 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
4871 if (yymsg)
4872 {
4873 yysyntax_error_status
4874 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
4875 yymsgp = yymsg;
4876 }
4877 else
4878 {
4879 yymsg = yymsgbuf;
4880 yymsg_alloc = sizeof yymsgbuf;
4881 yysyntax_error_status = YYENOMEM;
4882 }
4883 }
4884 yyerror (&yylloc, parm, yymsgp);
4885 if (yysyntax_error_status == YYENOMEM)
4886 goto yyexhaustedlab;
4887 }
4888 }
4889
4890 yyerror_range[1] = yylloc;
4891 if (yyerrstatus == 3)
4892 {
4893 /* If just tried and failed to reuse lookahead token after an
4894 error, discard it. */
4895
4896 if (yychar <= END)
4897 {
4898 /* Return failure if at end of input. */
4899 if (yychar == END)
4900 YYABORT;
4901 }
4902 else
4903 {
4904 yydestruct ("Error: discarding",
4905 yytoken, &yylval, &yylloc, parm);
4906 yychar = YYEMPTY;
4907 }
4908 }
4909
4910 /* Else will try to reuse lookahead token after shifting the error
4911 token. */
4912 goto yyerrlab1;
4913
4914
4915/*---------------------------------------------------.
4916| yyerrorlab -- error raised explicitly by YYERROR. |
4917`---------------------------------------------------*/
4918yyerrorlab:
4919 /* Pacify compilers when the user code never invokes YYERROR and the
4920 label yyerrorlab therefore never appears in user code. */
4921 if (0)
4922 YYERROR;
4923
4924 /* Do not reclaim the symbols of the rule whose action triggered
4925 this YYERROR. */
4926 YYPOPSTACK (yylen);
4927 yylen = 0;
4928 YY_STACK_PRINT (yyss, yyssp);
4929 yystate = *yyssp;
4930 goto yyerrlab1;
4931
4932
4933/*-------------------------------------------------------------.
4934| yyerrlab1 -- common code for both syntax error and YYERROR. |
4935`-------------------------------------------------------------*/
4936yyerrlab1:
4937 yyerrstatus = 3; /* Each real token shifted decrements this. */
4938
4939 /* Pop stack until we find a state that shifts the error token. */
4940 for (;;)
4941 {
4942 yyn = yypact[yystate];
4943 if (!yypact_value_is_default (yyn))
4944 {
4945 yyn += YYSYMBOL_YYerror;
4946 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
4947 {
4948 yyn = yytable[yyn];
4949 if (0 < yyn)
4950 break;
4951 }
4952 }
4953
4954 /* Pop the current state because it cannot handle the error token. */
4955 if (yyssp == yyss)
4956 YYABORT;
4957
4958 yyerror_range[1] = *yylsp;
4959 yydestruct ("Error: popping",
4960 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, parm);
4961 YYPOPSTACK (1);
4962 yystate = *yyssp;
4963 YY_STACK_PRINT (yyss, yyssp);
4964 }
4965
4966 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
4967 *++yyvsp = yylval;
4968 YY_IGNORE_MAYBE_UNINITIALIZED_END
4969
4970 yyerror_range[2] = yylloc;
4971 ++yylsp;
4972 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
4973
4974 /* Shift the error token. */
4975 YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
4976
4977 yystate = yyn;
4978 goto yynewstate;
4979
4980
4981/*-------------------------------------.
4982| yyacceptlab -- YYACCEPT comes here. |
4983`-------------------------------------*/
4984yyacceptlab:
4985 yyresult = 0;
4986 goto yyreturn;
4987
4988
4989/*-----------------------------------.
4990| yyabortlab -- YYABORT comes here. |
4991`-----------------------------------*/
4992yyabortlab:
4993 yyresult = 1;
4994 goto yyreturn;
4995
4996
4997#if 1
4998/*-------------------------------------------------.
4999| yyexhaustedlab -- memory exhaustion comes here. |
5000`-------------------------------------------------*/
5001yyexhaustedlab:
5002 yyerror (&yylloc, parm, YY_("memory exhausted"));
5003 yyresult = 2;
5004 goto yyreturn;
5005#endif
5006
5007
5008/*-------------------------------------------------------.
5009| yyreturn -- parsing is finished, clean up and return. |
5010`-------------------------------------------------------*/
5011yyreturn:
5012 if (yychar != YYEMPTY)
5013 {
5014 /* Make sure we have latest lookahead translation. See comments at
5015 user semantic actions for why this is necessary. */
5016 yytoken = YYTRANSLATE (yychar);
5017 yydestruct ("Cleanup: discarding lookahead",
5018 yytoken, &yylval, &yylloc, parm);
5019 }
5020 /* Do not reclaim the symbols of the rule whose action triggered
5021 this YYABORT or YYACCEPT. */
5022 YYPOPSTACK (yylen);
5023 YY_STACK_PRINT (yyss, yyssp);
5024 while (yyssp != yyss)
5025 {
5026 yydestruct ("Cleanup: popping",
5027 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, parm);
5028 YYPOPSTACK (1);
5029 }
5030#ifndef yyoverflow
5031 if (yyss != yyssa)
5032 YYSTACK_FREE (yyss);
5033#endif
5034 if (yymsg != yymsgbuf)
5035 YYSTACK_FREE (yymsg);
5036 return yyresult;
5037}
5038