this repo has no description
at develop 238 kB view raw
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