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