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