diff --git a/parser.src/DynareBison.cc b/parser.src/DynareBison.cc index f131040db..10706ddcf 100644 --- a/parser.src/DynareBison.cc +++ b/parser.src/DynareBison.cc @@ -695,506 +695,511 @@ namespace yy break; case 112: +#line 297 "DynareBison.yy" + { driver.add_unknown_function_arg((yysemantic_stack_[(3) - (3)].node_val)); ;} + break; + + case 113: #line 301 "DynareBison.yy" { driver.end_initval(); ;} break; - case 113: + case 114: #line 303 "DynareBison.yy" { driver.end_initval(); ;} break; - case 114: + case 115: #line 306 "DynareBison.yy" { driver.init_val_filename((yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 115: + case 116: #line 308 "DynareBison.yy" { driver.end_endval(); ;} break; - case 118: + case 119: #line 314 "DynareBison.yy" { driver.init_val((yysemantic_stack_[(4) - (1)].string_val), (yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 119: + case 120: #line 316 "DynareBison.yy" { driver.end_histval(); ;} break; - case 122: + case 123: #line 322 "DynareBison.yy" { driver.hist_val((yysemantic_stack_[(7) - (1)].string_val), (yysemantic_stack_[(7) - (3)].string_val), (yysemantic_stack_[(7) - (6)].node_val)); ;} break; - case 125: + case 126: #line 329 "DynareBison.yy" { driver.init_compiler(0); ;} break; - case 126: + case 127: #line 331 "DynareBison.yy" { driver.init_compiler(1); ;} break; - case 127: + case 128: #line 333 "DynareBison.yy" { driver.init_compiler(2); ;} break; - case 130: + case 131: #line 338 "DynareBison.yy" { driver.begin_model(); ;} break; - case 131: + case 132: #line 339 "DynareBison.yy" { driver.reset_data_tree(); ;} break; - case 132: + case 133: #line 340 "DynareBison.yy" { driver.begin_model(); ;} break; - case 133: + case 134: #line 341 "DynareBison.yy" { driver.reset_data_tree(); ;} break; - case 134: + case 135: #line 342 "DynareBison.yy" { driver.begin_model(); driver.use_dll(); ;} break; - case 135: + case 136: #line 343 "DynareBison.yy" { driver.reset_data_tree(); ;} break; - case 136: + case 137: #line 345 "DynareBison.yy" { driver.begin_model(); driver.sparse_dll(); ;} break; - case 137: + case 138: #line 346 "DynareBison.yy" { driver.reset_data_tree(); ;} break; - case 138: + case 139: #line 347 "DynareBison.yy" { driver.begin_model(); driver.sparse_dll(); ;} break; - case 139: + case 140: #line 348 "DynareBison.yy" { driver.reset_data_tree(); ;} break; - case 144: + case 145: #line 358 "DynareBison.yy" { (yyval.node_val) = driver.add_model_equal((yysemantic_stack_[(4) - (1)].node_val), (yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 145: + case 146: #line 360 "DynareBison.yy" { (yyval.node_val) = driver.add_model_equal_with_zero_rhs((yysemantic_stack_[(2) - (1)].node_val)); ;} break; - case 146: + case 147: #line 364 "DynareBison.yy" { (yyval.node_val) = (yysemantic_stack_[(3) - (2)].node_val);;} break; - case 148: + case 149: #line 367 "DynareBison.yy" { (yyval.node_val) = driver.add_constant((yysemantic_stack_[(1) - (1)].string_val)); ;} break; - case 149: + case 150: #line 369 "DynareBison.yy" { (yyval.node_val) = driver.add_constant((yysemantic_stack_[(1) - (1)].string_val)); ;} break; - case 150: + case 151: #line 371 "DynareBison.yy" { (yyval.node_val) = driver.add_plus((yysemantic_stack_[(3) - (1)].node_val), (yysemantic_stack_[(3) - (3)].node_val)); ;} break; - case 151: + case 152: #line 373 "DynareBison.yy" { (yyval.node_val) = driver.add_minus((yysemantic_stack_[(3) - (1)].node_val), (yysemantic_stack_[(3) - (3)].node_val)); ;} break; - case 152: + case 153: #line 375 "DynareBison.yy" { (yyval.node_val) = driver.add_divide((yysemantic_stack_[(3) - (1)].node_val), (yysemantic_stack_[(3) - (3)].node_val)); ;} break; - case 153: + case 154: #line 377 "DynareBison.yy" { (yyval.node_val) = driver.add_times((yysemantic_stack_[(3) - (1)].node_val), (yysemantic_stack_[(3) - (3)].node_val)); ;} break; - case 154: + case 155: #line 379 "DynareBison.yy" { (yyval.node_val) = driver.add_power((yysemantic_stack_[(3) - (1)].node_val), (yysemantic_stack_[(3) - (3)].node_val)); ;} break; - case 155: + case 156: #line 381 "DynareBison.yy" { (yyval.node_val) = driver.add_uminus((yysemantic_stack_[(2) - (2)].node_val)); ;} break; - case 156: + case 157: #line 383 "DynareBison.yy" { (yyval.node_val) = (yysemantic_stack_[(2) - (2)].node_val); ;} break; - case 157: + case 158: #line 385 "DynareBison.yy" { (yyval.node_val) = driver.add_exp((yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 158: + case 159: #line 387 "DynareBison.yy" { (yyval.node_val) = driver.add_log((yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 159: + case 160: #line 389 "DynareBison.yy" { (yyval.node_val) = driver.add_log10((yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 160: + case 161: #line 391 "DynareBison.yy" { (yyval.node_val) = driver.add_sin((yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 161: + case 162: #line 393 "DynareBison.yy" { (yyval.node_val) = driver.add_cos((yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 162: + case 163: #line 395 "DynareBison.yy" { (yyval.node_val) = driver.add_tan((yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 163: + case 164: #line 397 "DynareBison.yy" { (yyval.node_val) = driver.add_asin((yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 164: + case 165: #line 399 "DynareBison.yy" { (yyval.node_val) = driver.add_acos((yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 165: + case 166: #line 401 "DynareBison.yy" { (yyval.node_val) = driver.add_atan((yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 166: + case 167: #line 403 "DynareBison.yy" { (yyval.node_val) = driver.add_sqrt((yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 167: + case 168: #line 405 "DynareBison.yy" { (yyval.node_val) = driver.add_dummy((yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 168: + case 169: #line 407 "DynareBison.yy" { (yyval.node_val) = driver.add_max((yysemantic_stack_[(6) - (3)].node_val) , (yysemantic_stack_[(6) - (5)].node_val)); ;} break; - case 169: + case 170: #line 409 "DynareBison.yy" { (yyval.node_val) = driver.add_min((yysemantic_stack_[(6) - (3)].node_val) , (yysemantic_stack_[(6) - (5)].node_val)); ;} break; - case 170: + case 171: #line 413 "DynareBison.yy" { driver.declare_and_init_model_local_variable((yysemantic_stack_[(5) - (2)].string_val), (yysemantic_stack_[(5) - (4)].node_val)); ;} break; - case 171: + case 172: #line 416 "DynareBison.yy" { (yyval.node_val) = driver.add_model_variable((yysemantic_stack_[(1) - (1)].string_val)); ;} break; - case 172: + case 173: #line 418 "DynareBison.yy" { (yyval.node_val) = driver.add_model_variable((yysemantic_stack_[(4) - (1)].string_val), (yysemantic_stack_[(4) - (3)].string_val)); ;} break; - case 173: + case 174: #line 421 "DynareBison.yy" { driver.end_shocks(); ;} break; - case 174: + case 175: #line 423 "DynareBison.yy" { driver.end_mshocks(); ;} break; - case 177: + case 178: #line 430 "DynareBison.yy" { driver.add_det_shock((yysemantic_stack_[(9) - (2)].string_val)); ;} break; - case 178: + case 179: #line 432 "DynareBison.yy" { driver.add_stderr_shock((yysemantic_stack_[(6) - (2)].string_val), (yysemantic_stack_[(6) - (5)].node_val)); ;} break; - case 179: + case 180: #line 434 "DynareBison.yy" { driver.add_var_shock((yysemantic_stack_[(5) - (2)].string_val), (yysemantic_stack_[(5) - (4)].node_val)); ;} break; - case 180: + case 181: #line 436 "DynareBison.yy" { driver.add_covar_shock((yysemantic_stack_[(7) - (2)].string_val), (yysemantic_stack_[(7) - (4)].string_val), (yysemantic_stack_[(7) - (6)].node_val)); ;} break; - case 181: + case 182: #line 438 "DynareBison.yy" { driver.add_correl_shock((yysemantic_stack_[(7) - (2)].string_val), (yysemantic_stack_[(7) - (4)].string_val), (yysemantic_stack_[(7) - (6)].node_val)); ;} break; - case 182: + case 183: #line 442 "DynareBison.yy" { driver.add_period((yysemantic_stack_[(2) - (2)].string_val)); ;} break; - case 183: + case 184: #line 444 "DynareBison.yy" { driver.add_period((yysemantic_stack_[(4) - (2)].string_val), (yysemantic_stack_[(4) - (4)].string_val)); ;} break; - case 184: + case 185: #line 446 "DynareBison.yy" { driver.add_period((yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 185: + case 186: #line 448 "DynareBison.yy" { driver.add_period((yysemantic_stack_[(5) - (3)].string_val), (yysemantic_stack_[(5) - (5)].string_val)); ;} break; - case 186: + case 187: #line 450 "DynareBison.yy" { driver.add_period((yysemantic_stack_[(3) - (1)].string_val), (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 187: + case 188: #line 452 "DynareBison.yy" { driver.add_period((yysemantic_stack_[(1) - (1)].string_val)); ;} break; - case 188: + case 189: #line 456 "DynareBison.yy" { driver.add_value((yysemantic_stack_[(2) - (2)].node_val)); ;} break; - case 189: + case 190: #line 458 "DynareBison.yy" { driver.add_value((yysemantic_stack_[(1) - (1)].node_val)); ;} break; - case 190: + case 191: #line 461 "DynareBison.yy" { driver.do_sigma_e(); ;} break; - case 191: + case 192: #line 464 "DynareBison.yy" { driver.end_of_row(); ;} break; - case 192: + case 193: #line 466 "DynareBison.yy" { driver.end_of_row(); ;} break; - case 193: + case 194: #line 470 "DynareBison.yy" { driver.add_to_row((yysemantic_stack_[(5) - (4)].node_val)); ;} break; - case 194: + case 195: #line 472 "DynareBison.yy" { driver.add_to_row_const((yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 195: + case 196: #line 474 "DynareBison.yy" { driver.add_to_row_const((yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 196: + case 197: #line 476 "DynareBison.yy" { driver.add_to_row((yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 197: + case 198: #line 478 "DynareBison.yy" { driver.add_to_row_const((yysemantic_stack_[(2) - (2)].string_val)); ;} break; - case 198: + case 199: #line 480 "DynareBison.yy" { driver.add_to_row_const((yysemantic_stack_[(2) - (2)].string_val)); ;} break; - case 199: + case 200: #line 482 "DynareBison.yy" { driver.add_to_row((yysemantic_stack_[(3) - (2)].node_val)); ;} break; - case 200: + case 201: #line 484 "DynareBison.yy" { driver.add_to_row_const((yysemantic_stack_[(1) - (1)].string_val)); ;} break; - case 201: + case 202: #line 486 "DynareBison.yy" { driver.add_to_row_const((yysemantic_stack_[(1) - (1)].string_val)); ;} break; - case 202: + case 203: #line 490 "DynareBison.yy" { driver.steady(); ;} break; - case 203: + case 204: #line 492 "DynareBison.yy" { driver.steady(); ;} break; - case 207: + case 208: #line 502 "DynareBison.yy" { driver.check(); ;} break; - case 208: + case 209: #line 504 "DynareBison.yy" { driver.check(); ;} break; - case 212: + case 213: #line 514 "DynareBison.yy" { driver.simulate(); ;} break; - case 213: + case 214: #line 516 "DynareBison.yy" { driver.simulate(); ;} break; - case 218: + case 219: #line 528 "DynareBison.yy" { driver.stoch_simul(); ;} break; - case 219: + case 220: #line 530 "DynareBison.yy" { driver.stoch_simul(); ;} break; - case 220: + case 221: #line 532 "DynareBison.yy" { driver.stoch_simul(); ;} break; - case 221: + case 222: #line 534 "DynareBison.yy" { driver.stoch_simul(); ;} break; - case 247: + case 248: #line 567 "DynareBison.yy" { driver.add_tmp_var((yysemantic_stack_[(2) - (2)].string_val)); ;} break; - case 248: + case 249: #line 569 "DynareBison.yy" { driver.add_tmp_var((yysemantic_stack_[(4) - (2)].string_val), (yysemantic_stack_[(4) - (4)].string_val)); ;} break; - case 249: + case 250: #line 571 "DynareBison.yy" { driver.add_tmp_var((yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 250: + case 251: #line 573 "DynareBison.yy" { driver.add_tmp_var((yysemantic_stack_[(5) - (3)].string_val), (yysemantic_stack_[(5) - (5)].string_val)); ;} break; - case 251: + case 252: #line 575 "DynareBison.yy" { driver.add_tmp_var((yysemantic_stack_[(1) - (1)].string_val)); ;} break; - case 252: + case 253: #line 577 "DynareBison.yy" { driver.add_tmp_var((yysemantic_stack_[(3) - (1)].string_val), (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 253: + case 254: #line 581 "DynareBison.yy" { (yyval.string_val) = (yysemantic_stack_[(2) - (2)].string_val); ;} break; - case 254: + case 255: #line 583 "DynareBison.yy" { (yysemantic_stack_[(2) - (2)].string_val)->insert(0, "-"); (yyval.string_val) = (yysemantic_stack_[(2) - (2)].string_val); ;} break; - case 255: + case 256: #line 585 "DynareBison.yy" { (yyval.string_val) = (yysemantic_stack_[(1) - (1)].string_val); ;} break; - case 256: + case 257: #line 589 "DynareBison.yy" { (yyval.string_val) = (yysemantic_stack_[(2) - (2)].string_val); ;} break; - case 257: + case 258: #line 591 "DynareBison.yy" { (yysemantic_stack_[(2) - (2)].string_val)->insert(0, "-"); (yyval.string_val) = (yysemantic_stack_[(2) - (2)].string_val); ;} break; - case 258: + case 259: #line 593 "DynareBison.yy" { (yyval.string_val) = (yysemantic_stack_[(1) - (1)].string_val); ;} break; - case 259: + case 260: #line 596 "DynareBison.yy" { driver.estimated_params(); ;} break; - case 260: + case 261: #line 599 "DynareBison.yy" { driver.add_estimated_params_element(); ;} break; - case 261: + case 262: #line 601 "DynareBison.yy" { driver.add_estimated_params_element(); ;} break; - case 263: + case 264: #line 607 "DynareBison.yy" { driver.estim_params.type = 1; @@ -1203,7 +1208,7 @@ namespace yy ;} break; - case 264: + case 265: #line 613 "DynareBison.yy" { driver.estim_params.type = 2; @@ -1212,7 +1217,7 @@ namespace yy ;} break; - case 265: + case 266: #line 619 "DynareBison.yy" { driver.estim_params.type = 3; @@ -1223,7 +1228,7 @@ namespace yy ;} break; - case 266: + case 267: #line 629 "DynareBison.yy" { driver.estim_params.prior = *(yysemantic_stack_[(3) - (1)].string_val); @@ -1231,7 +1236,7 @@ namespace yy ;} break; - case 267: + case 268: #line 634 "DynareBison.yy" { driver.estim_params.init_val = *(yysemantic_stack_[(5) - (1)].string_val); @@ -1241,7 +1246,7 @@ namespace yy ;} break; - case 268: + case 269: #line 641 "DynareBison.yy" { driver.estim_params.init_val = *(yysemantic_stack_[(9) - (1)].string_val); @@ -1255,7 +1260,7 @@ namespace yy ;} break; - case 269: + case 270: #line 652 "DynareBison.yy" { driver.estim_params.init_val = *(yysemantic_stack_[(1) - (1)].string_val); @@ -1263,7 +1268,7 @@ namespace yy ;} break; - case 270: + case 271: #line 657 "DynareBison.yy" { driver.estim_params.init_val = *(yysemantic_stack_[(5) - (1)].string_val); @@ -1275,7 +1280,7 @@ namespace yy ;} break; - case 271: + case 272: #line 668 "DynareBison.yy" { driver.estim_params.mean = *(yysemantic_stack_[(3) - (1)].string_val); @@ -1285,7 +1290,7 @@ namespace yy ;} break; - case 272: + case 273: #line 675 "DynareBison.yy" { driver.estim_params.mean = *(yysemantic_stack_[(5) - (1)].string_val); @@ -1297,7 +1302,7 @@ namespace yy ;} break; - case 273: + case 274: #line 684 "DynareBison.yy" { driver.estim_params.mean = *(yysemantic_stack_[(7) - (1)].string_val); @@ -1311,7 +1316,7 @@ namespace yy ;} break; - case 274: + case 275: #line 695 "DynareBison.yy" { driver.estim_params.mean = *(yysemantic_stack_[(9) - (1)].string_val); @@ -1327,22 +1332,22 @@ namespace yy ;} break; - case 275: + case 276: #line 710 "DynareBison.yy" { driver.estimated_params_init(); ;} break; - case 276: + case 277: #line 713 "DynareBison.yy" { driver.add_estimated_params_element(); ;} break; - case 277: + case 278: #line 715 "DynareBison.yy" { driver.add_estimated_params_element(); ;} break; - case 278: + case 279: #line 719 "DynareBison.yy" { driver.estim_params.type = 1; @@ -1353,7 +1358,7 @@ namespace yy ;} break; - case 279: + case 280: #line 727 "DynareBison.yy" { driver.estim_params.type = 3; @@ -1366,7 +1371,7 @@ namespace yy ;} break; - case 280: + case 281: #line 737 "DynareBison.yy" { driver.estim_params.type = 2; @@ -1377,22 +1382,22 @@ namespace yy ;} break; - case 281: + case 282: #line 747 "DynareBison.yy" { driver.estimated_params_bounds(); ;} break; - case 282: + case 283: #line 750 "DynareBison.yy" { driver.add_estimated_params_element(); ;} break; - case 283: + case 284: #line 752 "DynareBison.yy" { driver.add_estimated_params_element(); ;} break; - case 284: + case 285: #line 756 "DynareBison.yy" { driver.estim_params.type = 1; @@ -1405,7 +1410,7 @@ namespace yy ;} break; - case 285: + case 286: #line 766 "DynareBison.yy" { driver.estim_params.type = 3; @@ -1420,7 +1425,7 @@ namespace yy ;} break; - case 286: + case 287: #line 778 "DynareBison.yy" { driver.estim_params.type = 2; @@ -1433,882 +1438,882 @@ namespace yy ;} break; - case 287: + case 288: #line 790 "DynareBison.yy" { (yyval.string_val) = new string("1"); ;} break; - case 288: + case 289: #line 792 "DynareBison.yy" { (yyval.string_val) = new string("2"); ;} break; - case 289: + case 290: #line 794 "DynareBison.yy" { (yyval.string_val) = new string("3"); ;} break; - case 290: + case 291: #line 796 "DynareBison.yy" { (yyval.string_val) = new string("4"); ;} break; - case 291: + case 292: #line 798 "DynareBison.yy" { (yyval.string_val) = new string("5"); ;} break; - case 292: + case 293: #line 801 "DynareBison.yy" { (yyval.string_val) = new string("NaN"); ;} break; - case 296: + case 297: #line 806 "DynareBison.yy" { (yysemantic_stack_[(2) - (2)].string_val)->insert(0, "-"); (yyval.string_val) = (yysemantic_stack_[(2) - (2)].string_val); ;} break; - case 297: + case 298: #line 808 "DynareBison.yy" { (yysemantic_stack_[(2) - (2)].string_val)->insert(0, "-"); (yyval.string_val) = (yysemantic_stack_[(2) - (2)].string_val); ;} break; - case 298: + case 299: #line 812 "DynareBison.yy" { driver.run_estimation(); ;} break; - case 299: + case 300: #line 814 "DynareBison.yy" { driver.run_estimation(); ;} break; - case 300: + case 301: #line 816 "DynareBison.yy" { driver.run_estimation(); ;} break; - case 301: + case 302: #line 818 "DynareBison.yy" { driver.run_estimation(); ;} break; - case 343: + case 344: #line 867 "DynareBison.yy" { driver.run_prior_analysis(); ;} break; - case 344: + case 345: #line 869 "DynareBison.yy" { driver.run_prior_analysis(); ;} break; - case 360: + case 361: #line 892 "DynareBison.yy" { driver.run_posterior_analysis(); ;} break; - case 361: + case 362: #line 894 "DynareBison.yy" { driver.run_posterior_analysis(); ;} break; - case 362: + case 363: #line 898 "DynareBison.yy" { driver.optim_options_string((yysemantic_stack_[(7) - (2)].string_val), (yysemantic_stack_[(7) - (6)].string_val)); ;} break; - case 363: + case 364: #line 900 "DynareBison.yy" { driver.optim_options_num((yysemantic_stack_[(5) - (2)].string_val), (yysemantic_stack_[(5) - (5)].string_val)); ;} break; - case 366: + case 367: #line 907 "DynareBison.yy" { driver.set_varobs(); ;} break; - case 367: + case 368: #line 909 "DynareBison.yy" { driver.set_trends(); ;} break; - case 370: + case 371: #line 915 "DynareBison.yy" { driver.set_trend_element((yysemantic_stack_[(5) - (1)].string_val), (yysemantic_stack_[(5) - (3)].node_val)); ;} break; - case 371: + case 372: #line 917 "DynareBison.yy" { driver.set_unit_root_vars(); ;} break; - case 372: + case 373: #line 919 "DynareBison.yy" { driver.optim_weights(); ;} break; - case 373: + case 374: #line 922 "DynareBison.yy" { driver.set_optim_weights((yysemantic_stack_[(4) - (2)].string_val), (yysemantic_stack_[(4) - (3)].node_val)); ;} break; - case 374: + case 375: #line 924 "DynareBison.yy" { driver.set_optim_weights((yysemantic_stack_[(6) - (2)].string_val), (yysemantic_stack_[(6) - (4)].string_val), (yysemantic_stack_[(6) - (5)].node_val)); ;} break; - case 375: + case 376: #line 926 "DynareBison.yy" { driver.set_optim_weights((yysemantic_stack_[(3) - (1)].string_val), (yysemantic_stack_[(3) - (2)].node_val)); ;} break; - case 376: + case 377: #line 928 "DynareBison.yy" { driver.set_optim_weights((yysemantic_stack_[(5) - (1)].string_val), (yysemantic_stack_[(5) - (3)].string_val), (yysemantic_stack_[(5) - (4)].node_val)); ;} break; - case 377: + case 378: #line 931 "DynareBison.yy" { driver.set_osr_params(); ;} break; - case 378: + case 379: #line 934 "DynareBison.yy" { driver.run_osr(); ;} break; - case 379: + case 380: #line 936 "DynareBison.yy" { driver.run_osr(); ;} break; - case 380: + case 381: #line 938 "DynareBison.yy" { driver.run_osr(); ;} break; - case 381: + case 382: #line 940 "DynareBison.yy" {driver.run_osr(); ;} break; - case 382: + case 383: #line 943 "DynareBison.yy" { driver.run_calib_var(); ;} break; - case 385: + case 386: #line 950 "DynareBison.yy" { driver.set_calib_var((yysemantic_stack_[(5) - (1)].string_val), (yysemantic_stack_[(5) - (2)].string_val), (yysemantic_stack_[(5) - (4)].node_val)); ;} break; - case 386: + case 387: #line 952 "DynareBison.yy" { driver.set_calib_covar((yysemantic_stack_[(7) - (1)].string_val), (yysemantic_stack_[(7) - (3)].string_val), (yysemantic_stack_[(7) - (4)].string_val), (yysemantic_stack_[(7) - (6)].node_val)); ;} break; - case 387: + case 388: #line 954 "DynareBison.yy" { driver.set_calib_ac((yysemantic_stack_[(9) - (2)].string_val), (yysemantic_stack_[(9) - (4)].string_val), (yysemantic_stack_[(9) - (6)].string_val), (yysemantic_stack_[(9) - (8)].node_val)); ;} break; - case 388: + case 389: #line 957 "DynareBison.yy" { (yyval.string_val) = new string("1"); ;} break; - case 389: + case 390: #line 959 "DynareBison.yy" { (yyval.string_val) = (yysemantic_stack_[(3) - (2)].string_val); ;} break; - case 390: + case 391: #line 961 "DynareBison.yy" { (yyval.string_val) = (yysemantic_stack_[(3) - (2)].string_val); ;} break; - case 391: + case 392: #line 965 "DynareBison.yy" { driver.run_calib(0); ;} break; - case 392: + case 393: #line 967 "DynareBison.yy" { driver.run_calib(1); ;} break; - case 393: + case 394: #line 971 "DynareBison.yy" { driver.run_dynatype((yysemantic_stack_[(5) - (3)].string_val)); ;} break; - case 394: + case 395: #line 973 "DynareBison.yy" { driver.run_dynatype((yysemantic_stack_[(6) - (3)].string_val)); ;} break; - case 395: + case 396: #line 975 "DynareBison.yy" { driver.run_dynatype((yysemantic_stack_[(3) - (2)].string_val)); ;} break; - case 396: + case 397: #line 977 "DynareBison.yy" { driver.run_dynatype((yysemantic_stack_[(7) - (3)].string_val), (yysemantic_stack_[(7) - (5)].string_val)); ;} break; - case 397: + case 398: #line 979 "DynareBison.yy" { driver.run_dynatype((yysemantic_stack_[(8) - (3)].string_val), (yysemantic_stack_[(8) - (5)].string_val)); ;} break; - case 398: + case 399: #line 981 "DynareBison.yy" { driver.run_dynatype((yysemantic_stack_[(5) - (2)].string_val),(yysemantic_stack_[(5) - (4)].string_val)); ;} break; - case 399: + case 400: #line 985 "DynareBison.yy" { driver.run_dynasave((yysemantic_stack_[(5) - (3)].string_val)); ;} break; - case 400: + case 401: #line 987 "DynareBison.yy" { driver.run_dynasave((yysemantic_stack_[(6) - (3)].string_val)); ;} break; - case 401: + case 402: #line 989 "DynareBison.yy" { driver.run_dynasave((yysemantic_stack_[(3) - (2)].string_val)); ;} break; - case 402: + case 403: #line 991 "DynareBison.yy" { driver.run_dynasave((yysemantic_stack_[(7) - (3)].string_val), (yysemantic_stack_[(7) - (5)].string_val)); ;} break; - case 403: + case 404: #line 993 "DynareBison.yy" { driver.run_dynasave((yysemantic_stack_[(8) - (3)].string_val), (yysemantic_stack_[(8) - (5)].string_val)); ;} break; - case 404: + case 405: #line 995 "DynareBison.yy" { driver.run_dynasave((yysemantic_stack_[(5) - (2)].string_val), (yysemantic_stack_[(5) - (4)].string_val)); ;} break; - case 405: + case 406: #line 999 "DynareBison.yy" { driver.run_model_comparison(); ;} break; - case 411: + case 412: #line 1011 "DynareBison.yy" { driver.add_mc_filename((yysemantic_stack_[(1) - (1)].string_val)); ;} break; - case 412: + case 413: #line 1013 "DynareBison.yy" { driver.add_mc_filename((yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 413: + case 414: #line 1015 "DynareBison.yy" { driver.add_mc_filename((yysemantic_stack_[(4) - (1)].string_val), (yysemantic_stack_[(4) - (3)].string_val)); ;} break; - case 414: + case 415: #line 1017 "DynareBison.yy" { driver.add_mc_filename((yysemantic_stack_[(6) - (3)].string_val), (yysemantic_stack_[(6) - (5)].string_val)); ;} break; - case 415: + case 416: #line 1021 "DynareBison.yy" { (yyval.string_val) = (yysemantic_stack_[(1) - (1)].string_val); ;} break; - case 416: + case 417: #line 1023 "DynareBison.yy" { (yysemantic_stack_[(2) - (1)].string_val)->append(*(yysemantic_stack_[(2) - (2)].string_val)); delete (yysemantic_stack_[(2) - (2)].string_val); (yyval.string_val) = (yysemantic_stack_[(2) - (1)].string_val); ;} break; - case 418: + case 419: #line 1028 "DynareBison.yy" { (yyval.string_val) = new string("\\"); ;} break; - case 419: + case 420: #line 1030 "DynareBison.yy" { (yyval.string_val) = new string("/"); ;} break; - case 420: + case 421: #line 1032 "DynareBison.yy" { (yyval.string_val) = new string(":"); ;} break; - case 421: + case 422: #line 1034 "DynareBison.yy" { (yyval.string_val) = new string("."); ;} break; - case 422: + case 423: #line 1037 "DynareBison.yy" { driver.begin_planner_objective(); ;} break; - case 423: + case 424: #line 1038 "DynareBison.yy" { driver.end_planner_objective((yysemantic_stack_[(3) - (3)].node_val)); ;} break; - case 425: + case 426: #line 1041 "DynareBison.yy" { driver.ramsey_policy(); ;} break; - case 426: + case 427: #line 1043 "DynareBison.yy" { driver.ramsey_policy(); ;} break; - case 427: + case 428: #line 1045 "DynareBison.yy" { driver.ramsey_policy(); ;} break; - case 428: + case 429: #line 1047 "DynareBison.yy" { driver.ramsey_policy(); ;} break; - case 452: + case 453: #line 1084 "DynareBison.yy" { driver.bvar_density((yysemantic_stack_[(3) - (2)].string_val)); ;} break; - case 453: + case 454: #line 1086 "DynareBison.yy" { driver.bvar_density((yysemantic_stack_[(6) - (5)].string_val)); ;} break; - case 460: + case 461: #line 1100 "DynareBison.yy" { driver.bvar_forecast((yysemantic_stack_[(3) - (2)].string_val)); ;} break; - case 461: + case 462: #line 1102 "DynareBison.yy" { driver.bvar_forecast((yysemantic_stack_[(6) - (5)].string_val)); ;} break; - case 462: + case 463: #line 1106 "DynareBison.yy" { driver.dynare_sensitivity(); ;} break; - case 463: + case 464: #line 1108 "DynareBison.yy" { driver.dynare_sensitivity(); ;} break; - case 495: + case 496: #line 1148 "DynareBison.yy" { driver.option_num("dr_algo", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 496: + case 497: #line 1149 "DynareBison.yy" { driver.option_num("solve_algo", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 497: + case 498: #line 1150 "DynareBison.yy" { driver.option_num("simul_algo", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 498: + case 499: #line 1151 "DynareBison.yy" { driver.linear(); ;} break; - case 499: + case 500: #line 1152 "DynareBison.yy" { driver.option_num("order", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 500: + case 501: #line 1153 "DynareBison.yy" { driver.option_num("replic", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 501: + case 502: #line 1154 "DynareBison.yy" { driver.option_num("drop", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 502: + case 503: #line 1155 "DynareBison.yy" { driver.option_num("ar", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 503: + case 504: #line 1156 "DynareBison.yy" { driver.option_num("nocorr", "1"); ;} break; - case 504: + case 505: #line 1157 "DynareBison.yy" { driver.option_num("nofunctions", "1"); ;} break; - case 505: + case 506: #line 1158 "DynareBison.yy" { driver.option_num("nomoments", "1"); ;} break; - case 506: + case 507: #line 1159 "DynareBison.yy" { driver.option_num("irf", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 507: + case 508: #line 1160 "DynareBison.yy" { driver.option_num("hp_filter", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 508: + case 509: #line 1161 "DynareBison.yy" { driver.option_num("hp_ngrid", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 509: + case 510: #line 1163 "DynareBison.yy" { driver.option_num("periods", (yysemantic_stack_[(3) - (3)].string_val)); driver.option_num("simul", "1"); ;} break; - case 510: + case 511: #line 1164 "DynareBison.yy" { driver.option_num("cutoff", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 511: + case 512: #line 1165 "DynareBison.yy" { driver.option_num("markowitz", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 512: + case 513: #line 1166 "DynareBison.yy" { driver.option_num("simul", "1"); ;} break; - case 513: + case 514: #line 1167 "DynareBison.yy" { driver.option_num("simul_seed", (yysemantic_stack_[(3) - (3)].string_val));} break; - case 514: + case 515: #line 1168 "DynareBison.yy" { driver.option_num("qz_criterium", (yysemantic_stack_[(3) - (3)].string_val)) ;} break; - case 515: + case 516: #line 1169 "DynareBison.yy" { driver.option_str("datafile", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 516: + case 517: #line 1171 "DynareBison.yy" { driver.option_num("nobs", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 517: + case 518: #line 1173 "DynareBison.yy" { driver.option_num("nobs", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 518: + case 519: #line 1175 "DynareBison.yy" { driver.option_num("first_obs", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 519: + case 520: #line 1176 "DynareBison.yy" { driver.option_num("prefilter", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 520: + case 521: #line 1177 "DynareBison.yy" { driver.option_num("presample", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 521: + case 522: #line 1178 "DynareBison.yy" { driver.option_num("lik_algo", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 522: + case 523: #line 1179 "DynareBison.yy" { driver.option_num("lik_init", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 523: + case 524: #line 1181 "DynareBison.yy" { driver.option_num("nograph","1"); ;} break; - case 524: + case 525: #line 1183 "DynareBison.yy" { driver.option_num("nograph", "0"); ;} break; - case 525: + case 526: #line 1185 "DynareBison.yy" { driver.option_num("conf_sig", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 526: + case 527: #line 1186 "DynareBison.yy" { driver.option_num("mh_replic", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 527: + case 528: #line 1187 "DynareBison.yy" { driver.option_num("mh_drop", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 528: + case 529: #line 1188 "DynareBison.yy" { driver.option_num("mh_jscale", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 530: + case 531: #line 1190 "DynareBison.yy" { driver.option_num("mh_init_scale", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 531: + case 532: #line 1191 "DynareBison.yy" { driver.option_str("mode_file", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 532: + case 533: #line 1192 "DynareBison.yy" { driver.option_num("mode_compute", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 533: + case 534: #line 1193 "DynareBison.yy" { driver.option_num("mode_check", "1"); ;} break; - case 534: + case 535: #line 1194 "DynareBison.yy" { driver.option_num("prior_trunc", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 535: + case 536: #line 1195 "DynareBison.yy" { driver.option_num("mh_mode", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 536: + case 537: #line 1196 "DynareBison.yy" { driver.option_num("mh_nblck", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 537: + case 538: #line 1197 "DynareBison.yy" { driver.option_num("load_mh_file", "1"); ;} break; - case 538: + case 539: #line 1198 "DynareBison.yy" { driver.option_num("loglinear", "1"); ;} break; - case 539: + case 540: #line 1199 "DynareBison.yy" { driver.option_num("nodiagnostic", "1"); ;} break; - case 540: + case 541: #line 1200 "DynareBison.yy" { driver.option_num("bayesian_irf", "1"); ;} break; - case 541: + case 542: #line 1201 "DynareBison.yy" { driver.option_num("TeX", "1"); ;} break; - case 542: + case 543: #line 1202 "DynareBison.yy" { driver.option_num("forecast", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 543: + case 544: #line 1203 "DynareBison.yy" { driver.option_num("smoother", "1"); ;} break; - case 544: + case 545: #line 1204 "DynareBison.yy" { driver.option_num("moments_varendo", "1"); ;} break; - case 545: + case 546: #line 1205 "DynareBison.yy" { driver.option_num("filtered_vars", "1"); ;} break; - case 546: + case 547: #line 1206 "DynareBison.yy" { driver.option_num("relative_irf", "1"); ;} break; - case 547: + case 548: #line 1207 "DynareBison.yy" { driver.option_num("kalman_algo", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 548: + case 549: #line 1208 "DynareBison.yy" { driver.option_num("kalman_tol", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 549: + case 550: #line 1210 "DynareBison.yy" { driver.option_str("model_comparison_approximation", "Laplace"); ;} break; - case 550: + case 551: #line 1212 "DynareBison.yy" { driver.option_str("model_comparison_approximation", "MODIFIEDHARMONICMEAN"); ;} break; - case 551: + case 552: #line 1214 "DynareBison.yy" { driver.option_num("noprint", "0"); ;} break; - case 552: + case 553: #line 1215 "DynareBison.yy" { driver.option_num("noprint", "1"); ;} break; - case 553: + case 554: #line 1216 "DynareBison.yy" { driver.option_str("xls_sheet", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 554: + case 555: #line 1217 "DynareBison.yy" { driver.option_str("xls_range", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 555: + case 556: #line 1218 "DynareBison.yy" { driver.option_num("filter_step_ahead", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 556: + case 557: #line 1219 "DynareBison.yy" { driver.option_num("noconstant", "0"); ;} break; - case 557: + case 558: #line 1220 "DynareBison.yy" { driver.option_num("noconstant", "1"); ;} break; - case 558: + case 559: #line 1221 "DynareBison.yy" { driver.option_num("mh_recover", "1"); ;} break; - case 559: + case 560: #line 1222 "DynareBison.yy" { driver.option_num("planner_discount",(yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 560: + case 561: #line 1224 "DynareBison.yy" { driver.option_num("bvar_prior_tau", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 561: + case 562: #line 1225 "DynareBison.yy" { driver.option_num("bvar_prior_decay", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 562: + case 563: #line 1226 "DynareBison.yy" { driver.option_num("bvar_prior_lambda", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 563: + case 564: #line 1227 "DynareBison.yy" { driver.option_num("bvar_prior_mu", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 564: + case 565: #line 1228 "DynareBison.yy" { driver.option_num("bvar_prior_omega", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 565: + case 566: #line 1229 "DynareBison.yy" { driver.option_num("bvar_prior_flat", "1"); ;} break; - case 566: + case 567: #line 1230 "DynareBison.yy" { driver.option_num("bvar_prior_train", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 567: + case 568: #line 1231 "DynareBison.yy" { driver.option_num("bvar_replic", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 568: + case 569: #line 1233 "DynareBison.yy" { driver.option_num("identification", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 569: + case 570: #line 1234 "DynareBison.yy" { driver.option_num("morris", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 570: + case 571: #line 1235 "DynareBison.yy" { driver.option_num("stab", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 571: + case 572: #line 1236 "DynareBison.yy" { driver.option_num("redform", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 572: + case 573: #line 1237 "DynareBison.yy" { driver.option_num("pprior", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 573: + case 574: #line 1238 "DynareBison.yy" { driver.option_num("prior_range", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 574: + case 575: #line 1239 "DynareBison.yy" { driver.option_num("ppost", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 575: + case 576: #line 1240 "DynareBison.yy" { driver.option_num("ilptau", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 576: + case 577: #line 1241 "DynareBison.yy" { driver.option_num("glue", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 577: + case 578: #line 1242 "DynareBison.yy" { driver.option_num("morris_nliv", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 578: + case 579: #line 1243 "DynareBison.yy" { driver.option_num("morris_ntra", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 579: + case 580: #line 1244 "DynareBison.yy" { driver.option_num("identification", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 580: + case 581: #line 1245 "DynareBison.yy" { driver.option_num("identification", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 581: + case 582: #line 1246 "DynareBison.yy" { driver.option_num("load_rmse", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 582: + case 583: #line 1247 "DynareBison.yy" { driver.option_num("load_stab", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 583: + case 584: #line 1248 "DynareBison.yy" { driver.option_num("identification", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 584: + case 585: #line 1249 "DynareBison.yy" { driver.option_num("ksstat", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 585: + case 586: #line 1250 "DynareBison.yy" { driver.option_num("logtrans_redform", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 586: + case 587: #line 1251 "DynareBison.yy" { driver.option_num("threshold_redfor",(yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 587: + case 588: #line 1253 "DynareBison.yy" { driver.option_num("ksstat_redfrom", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 588: + case 589: #line 1254 "DynareBison.yy" { driver.option_num("alpha2_redform", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 589: + case 590: #line 1260 "DynareBison.yy" { driver.option_num("rmse", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 590: + case 591: #line 1261 "DynareBison.yy" { driver.option_num("lik_only", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 591: + case 592: #line 1265 "DynareBison.yy" { driver.option_num("pfilt_rmse", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 592: + case 593: #line 1266 "DynareBison.yy" { driver.option_num("istart_rmse", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 593: + case 594: #line 1267 "DynareBison.yy" { driver.option_num("alpha_rmse", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 594: + case 595: #line 1268 "DynareBison.yy" { driver.option_num("alpha2_rmse", (yysemantic_stack_[(3) - (3)].string_val)); ;} break; - case 595: + case 596: #line 1272 "DynareBison.yy" { (yysemantic_stack_[(3) - (1)].string_val)->append(":"); @@ -2318,7 +2323,7 @@ namespace yy ;} break; - case 597: + case 598: #line 1281 "DynareBison.yy" { (yysemantic_stack_[(3) - (1)].string_val)->append(":"); @@ -2328,12 +2333,12 @@ namespace yy ;} break; - case 598: + case 599: #line 1290 "DynareBison.yy" { (yysemantic_stack_[(2) - (2)].string_val)->insert(0, "["); (yyval.string_val) = (yysemantic_stack_[(2) - (2)].string_val);;} break; - case 599: + case 600: #line 1292 "DynareBison.yy" { (yysemantic_stack_[(2) - (1)].string_val)->append(" "); @@ -2343,14 +2348,14 @@ namespace yy ;} break; - case 600: + case 601: #line 1300 "DynareBison.yy" { (yysemantic_stack_[(2) - (1)].string_val)->append("]"); (yyval.string_val) = (yysemantic_stack_[(2) - (1)].string_val); ;} break; /* Line 675 of lalr1.cc. */ -#line 2354 "DynareBison.cc" +#line 2359 "DynareBison.cc" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc); @@ -2557,134 +2562,134 @@ namespace yy /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ - const short int parser::yypact_ninf_ = -1068; + const short int parser::yypact_ninf_ = -1072; const short int parser::yypact_[] = { - 1236, 26, 45, -42, -77, 288, 98, 69, 28, 64, - -19, 34, 81, 85, 103, 119, 335, 106, 370, -56, - 221, 111, 242, 246, 36, 374, 375, 78, -1068, 267, - 274, 374, 301, 479, 420, 433, 75, 77, 374, 437, - 454, 458, 374, 447, 1117, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - 337, 1472, 351, 1452, -1068, 535, 72, -1068, 436, 517, - 378, 48, -79, 482, 259, 494, 497, 570, -1068, 1352, - 180, 52, 372, 386, 537, 497, 583, 581, 443, -1068, - 416, 538, 49, 937, 561, 562, -1068, 1576, 182, 206, - 525, 210, 602, 462, 963, 306, 306, 217, 49, 459, - -1068, 58, -1068, 436, -1068, 1576, 218, -1068, 1523, 220, - 225, 531, 266, 533, 269, 534, 271, 281, -1068, 1562, - -1068, -1068, -1068, 629, -1068, 630, 632, 633, 634, 636, - -1068, 641, 643, 648, -1068, 658, 660, 661, 667, -1068, - 550, 510, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, 674, - 675, 676, -1068, 576, 516, -1068, -1068, -1068, 520, 645, - -37, 71, -1068, 696, -39, -1068, -1068, 542, -1068, 543, - -1068, -1068, 649, -62, -1068, 656, 118, 707, 59, -1068, - 679, -1068, 709, -1068, -1068, 731, 732, 734, 736, 738, - -1068, -1068, 739, 744, 746, 747, 748, 750, -1068, -1068, - 758, 763, -1068, -1068, -1068, 765, 766, -1068, -1068, -34, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - 767, 702, -1068, 719, -1068, 723, 400, -1068, 669, 735, - 681, 740, 401, -1068, 742, 693, 743, 405, -1068, 638, - 204, -1068, 384, 810, 650, 653, -1068, 688, -1068, -4, - 652, 655, 817, -1068, -1068, 5, -1068, -1068, -1068, -1068, - 785, 786, 105, -1068, 677, -1068, -1068, 678, 680, 683, - 937, 937, 684, 685, 686, 687, 691, 692, 694, 700, - 704, 706, 937, 545, 711, 404, -1068, 800, 415, 841, - 862, 874, 875, 881, 884, -1068, -1068, -1068, 885, 886, - 887, -1068, 888, -1068, 893, 901, 741, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, 814, 854, -1068, 761, -1068, 749, -1068, - -1068, 764, 774, 787, 963, 963, 788, 789, 793, 794, - 796, 797, 799, 801, 803, 804, 963, 558, -1068, 12, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, 166, -1068, 140, 30, 249, -1068, - -1068, -1068, 268, -1068, -1068, 296, -1068, -1068, 921, -1068, - 300, -1068, -1068, -1068, -1068, -1068, 832, 878, -1068, -1068, - 873, 920, -1068, -1068, 877, 922, -1068, -1068, 973, 974, - 975, 983, 985, 987, 992, 1000, 1007, 1009, 1010, 1011, - 1013, 1014, 1015, 1016, 1017, 1020, 1021, 1022, 1023, 1041, - 1045, 1047, 1057, 1058, 1060, 900, 942, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, 101, 314, 101, 1044, 314, 1048, - 1018, 1052, 20, 1053, 1066, 1036, 1037, 1472, 1069, 1070, - 101, 1074, 1452, 1081, 905, 949, 1061, 233, 1065, -1068, - -1068, 1094, 436, 956, -1068, -1068, 958, 80, 1073, 969, - 84, 1083, 937, -1068, -1068, -1068, 966, 1115, 1122, 1124, - 1132, 1137, 101, 101, 101, 1139, 1140, 1145, 1146, 1086, - 1005, 101, 1352, 86, 1138, 1171, 1082, -1068, -1068, -1068, - 199, 1084, 346, 1085, -1068, -1068, 1089, 346, 1090, -1068, - -1068, 350, -1068, -1068, -1068, 1151, 1042, -1068, 1153, 37, - -1068, 54, -1068, 575, -1068, 1054, 1055, 50, 538, 65, - 1099, 33, -1068, -1068, 937, 937, 937, 937, 1101, 465, - 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, - 428, 937, 937, 937, 937, 937, -1068, 937, -1068, -1068, - 1155, 751, -1068, 824, 1204, 101, 1206, 1207, 1209, 1210, - 1213, 1216, 101, 1218, 1223, 1224, 87, -1068, 1159, -1068, - 937, 937, 937, 350, 1133, 493, 963, 963, 963, 963, - 963, 963, 963, 963, 963, 963, 434, 963, 963, 963, - 963, 963, 1095, 306, 95, 109, -1068, -1068, -1068, 937, - 247, 41, 58, 1100, 436, 1102, 1576, 121, 101, 1523, - 198, -1068, 1175, -1068, 1176, -1068, 1183, 1256, 1259, 1260, - 1264, 1265, 1266, 1272, 1281, 1287, 1288, 1289, 1290, 1294, - 1295, 1301, 101, 101, 1302, 966, 101, 101, 1303, 1304, - 101, 1310, 101, 101, 1170, 1562, -1068, -1068, -1068, -1068, - 1321, 1323, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - 1315, 18, -1068, -1068, -1068, -1068, 1177, -1068, -1068, 1182, - -1068, -1068, -1068, -1068, 1185, -1068, 1327, 1186, 1192, 1194, - 937, -1068, -1068, -1068, -1068, -1068, 282, 1195, -1068, -1068, - 293, 1196, 1261, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, 1198, -1068, -1068, - -1068, 303, -1068, 1298, 1312, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, 264, 1211, 1271, 1275, 1333, 1279, 346, - 1342, 1217, 346, -1068, 1384, 1389, 1248, -1068, 497, 1410, - -1068, -1068, -1068, 963, -1068, -1068, -1068, 1411, -1068, 311, - -1068, -1068, -1068, 1253, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, 279, 97, -1068, 1369, 937, 1374, - 8, 509, 891, 930, 616, 1274, 532, 539, 610, 635, - 647, 654, 715, 722, 762, 772, -1068, 465, 465, 1101, - 1101, 1316, 784, 937, -1068, 1391, 1309, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - 307, -1068, 790, 1141, 1291, 1280, 872, 883, 898, 988, - 998, 1019, 1031, 1038, 1046, 1062, -1068, 493, 493, 1133, - 1133, 1316, -1068, -1068, -1068, 310, -1068, 312, 1068, 30, - 1285, -1068, -1068, 38, 937, -1068, -1068, -1068, -1068, -1068, - -1068, 318, -1068, -1068, -1068, 332, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - 1262, -1068, -1068, -1068, 1396, -1068, -1068, 1296, 1446, -1068, - -1068, 1359, -1068, 207, -1068, 212, -1068, 1407, -1068, 328, - -1068, -1068, -1068, -1068, -1068, -1068, 346, 199, 1354, 346, - 1357, 1371, -1068, 1311, -1068, -1068, 1477, 419, 963, 1366, - 101, 575, -1068, 688, 688, 688, 65, -1068, 346, -1068, - 1478, 1376, 1479, 1467, 937, -1068, 937, 937, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, 1328, - 1388, 937, -1068, -1068, -1068, 937, 937, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, 41, -1068, -1068, -1068, 937, 1150, -1068, -1068, 1470, - -1068, 1186, 937, -1068, -1068, 338, -1068, 342, 1324, 1198, - -1068, -1068, 1385, 1387, 1393, 346, 1340, 346, 346, -1068, - 937, -1068, 1400, -1068, -1068, -1068, 1341, 63, 232, 573, - 165, 1348, 937, -1068, 937, 1338, 61, 1423, 1157, 1165, - -1068, -1068, 1455, 1181, 1187, 1244, -1068, -1068, 1502, 1511, - -1068, -1068, 1408, -1068, 346, 346, 346, 1413, -1068, 1355, - 1360, 1517, -1068, 688, -1068, -1068, -1068, 346, -1068, 1530, - 1557, 1493, 1363, 1509, 1435, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, 937, -1068, 25, 1416, -1068, 1430, 346, -1068, - -1068, -1068, 664, 1379, -1068, -1068, -1068, 1519, 1381, 937, - 1567, 1497, -1068, 346, 73, 1390, -1068, -1068, -1068, 1533, - 616, 913, -1068, 1382, 1448, 1449, -1068, -1068, -1068, 616, - -1068, 346, 346, 1453, -1068, 346, -1068 + 1308, 24, 38, -68, -78, 111, 106, 59, 62, 65, + -64, -4, -57, -52, -31, 91, 226, 108, 323, 92, + 127, 410, 248, 269, 11, 368, 386, 68, -1072, 285, + 294, 368, 306, 469, 351, 357, 40, 45, 368, 438, + 441, 444, 368, 407, 1189, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + 343, 1544, 345, 1524, -1072, 523, 99, -1072, 439, 506, + 375, 30, 271, 490, 289, 495, 497, 570, -1072, 1424, + 22, 355, 356, 372, 524, 497, 569, 568, 419, -1072, + 381, 42, 137, 976, 533, 538, -1072, 1595, 160, 179, + 496, 206, 576, 436, 1035, 653, 653, 208, 137, 446, + -1072, 82, -1072, 439, -1072, 1595, 209, -1072, 1043, 210, + 211, 510, 216, 518, 218, 525, 219, 220, -1072, 1565, + -1072, -1072, -1072, 620, -1072, 621, 622, 625, 626, 627, + -1072, 629, 631, 632, -1072, 633, 635, 636, 637, -1072, + 534, 483, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, 650, + 652, 658, -1072, 549, 493, -1072, -1072, -1072, 501, 616, + -3, 74, -1072, 667, -40, -1072, -1072, 512, -1072, 515, + -1072, -1072, 619, -91, -1072, 628, 239, 676, 87, -1072, + 645, -1072, 678, -1072, -1072, 681, 682, 683, 695, 699, + -1072, -1072, 703, 704, 707, 716, 721, 723, -1072, -1072, + 724, 732, -1072, -1072, -1072, 735, 738, -1072, -1072, -37, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + 745, 649, -1072, 657, -1072, 705, 376, -1072, 648, 709, + 659, 720, 383, -1072, 725, 672, 741, 401, -1072, 593, + 244, -1072, 400, 793, 630, 661, -1072, 791, -1072, -30, + 646, 656, 794, -1072, -1072, 93, -1072, -1072, -1072, -1072, + 769, 770, 139, -1072, 663, -1072, -1072, 665, 669, 671, + 976, 976, 674, 675, 677, 688, 689, 690, 696, 697, + 700, 701, 976, 706, 712, 413, -1072, 815, 422, 827, + 832, 836, 841, 851, 858, -1072, -1072, -1072, 863, 866, + 874, -1072, 876, -1072, 877, 878, 729, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, 792, 843, -1072, 736, -1072, 734, -1072, + -1072, 751, 752, 753, 1035, 1035, 755, 756, 758, 762, + 765, 779, 780, 783, 785, 786, 1035, 1627, -1072, 258, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, 276, -1072, 153, 41, 290, -1072, + -1072, -1072, 292, -1072, -1072, 299, -1072, -1072, 901, -1072, + 305, -1072, -1072, -1072, -1072, -1072, 854, 903, -1072, -1072, + 873, 915, -1072, -1072, 875, 920, -1072, -1072, 972, 973, + 974, 980, 982, 983, 984, 990, 992, 993, 999, 1001, + 1002, 1003, 1005, 1006, 1008, 1009, 1013, 1014, 1026, 1027, + 1028, 1029, 1034, 1045, 1046, 893, 951, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, 75, 321, 75, 1039, 321, 1042, + 1012, 1044, 21, 1049, 1050, 1020, 1022, 1544, 1054, 1055, + 75, 1061, 1524, 1065, 926, 937, 1037, 100, 1104, -1072, + -1072, 1087, 439, 948, -1072, -1072, 949, 84, 1060, 952, + 97, 1063, 976, -1072, -1072, -1072, 953, 1095, 1097, 1098, + 1105, 1109, 75, 75, 75, 1111, 1112, 1114, 1115, 1072, + 962, 75, 1424, 103, 1085, 1137, 1038, -1072, -1072, -1072, + 307, 1040, 384, 1041, -1072, -1072, 1052, 384, 1053, -1072, + -1072, 267, -1072, -1072, -1072, 1089, 1000, -1072, 1090, 48, + -1072, 37, -1072, 428, -1072, 1011, 1023, 57, 42, 73, + 1056, 35, -1072, -1072, 976, 976, 976, 976, 1033, 478, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 423, 976, 976, 976, 976, 976, -1072, 976, -1072, -1072, + 1119, 1235, -1072, 844, 1153, 75, 1163, 1169, 1171, 1176, + 1182, 1184, 75, 1186, 1187, 1194, 172, -1072, 1121, -1072, + 1035, 1035, 1035, 267, 1048, 499, 1035, 1035, 1035, 1035, + 1035, 1035, 1035, 1035, 1035, 1035, 430, 1035, 1035, 1035, + 1035, 1035, 1025, 653, 175, 180, -1072, -1072, -1072, 976, + 264, 31, 82, 1057, 439, 1058, 1595, 183, 75, 1043, + 196, -1072, 1122, -1072, 1125, -1072, 1128, 1204, 1209, 1211, + 1212, 1217, 1218, 1219, 1225, 1240, 1241, 1242, 1243, 1247, + 1248, 1257, 75, 75, 1265, 953, 75, 75, 1267, 1268, + 75, 1276, 75, 75, 1138, 1565, -1072, -1072, -1072, -1072, + 1198, 1287, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + 1281, 23, -1072, -1072, -1072, -1072, 1143, -1072, -1072, 1141, + -1072, -1072, -1072, -1072, 1144, -1072, 1290, 1154, 1152, 1165, + 976, -1072, -1072, -1072, -1072, -1072, 223, 1183, -1072, -1072, + 224, 1185, 1253, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, 1149, -1072, -1072, + -1072, 228, -1072, 1275, 1283, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, 404, 1188, 1244, 1245, 1301, 1250, 384, + 1306, 1197, 384, -1072, 1344, 1353, 1216, -1072, 497, 1378, + -1072, -1072, -1072, 1035, -1072, -1072, -1072, 1379, -1072, 311, + -1072, -1072, -1072, 1221, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -29, 9, -1072, 1334, 976, 1336, + 16, 494, 623, 933, 1633, 312, 509, 535, 541, 612, + 634, 641, 654, 660, 691, 698, -1072, 478, 478, 1033, + 1033, 1282, 737, 976, -1072, 1342, 1259, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + 229, -1072, 763, 1213, 1620, 1232, 774, 781, 871, 881, + 890, 942, 970, 1059, 1070, 1091, -1072, 499, 499, 1048, + 1048, 1282, -1072, -1072, -1072, 231, -1072, 232, 1103, 41, + 1239, -1072, -1072, 43, 976, -1072, -1072, -1072, -1072, -1072, + -1072, 233, -1072, -1072, -1072, 255, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + 1237, -1072, -1072, -1072, 1352, -1072, -1072, 1252, 1402, -1072, + -1072, 1314, -1072, 198, -1072, 199, -1072, 1355, -1072, 320, + -1072, -1072, -1072, -1072, -1072, -1072, 384, 307, 1310, 384, + 1312, 1313, -1072, 1246, -1072, -1072, 1423, 443, 1035, 1333, + 75, 428, -1072, 791, 791, 791, 73, -1072, 384, -1072, + 1425, 1381, 1426, 1409, 976, -1072, 976, 976, 976, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + 1269, 1431, 976, -1072, -1072, -1072, 1035, 1035, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, 31, -1072, -1072, -1072, 976, 1118, -1072, -1072, + 1411, -1072, 1154, 976, -1072, -1072, 272, -1072, 280, 1270, + 1149, -1072, -1072, 1329, 1338, 1343, 384, 1289, 384, 384, + -1072, 976, -1072, 1438, -1072, -1072, -1072, 1292, 101, 235, + 574, 71, 1293, 976, -1072, 976, 1300, 64, 1448, 1134, + 1140, 1633, -1072, -1072, 1460, 1166, 1223, 1229, -1072, -1072, + 1455, 1472, -1072, -1072, 1363, -1072, 384, 384, 384, 1364, + -1072, 1311, 1315, 1495, -1072, 791, -1072, -1072, -1072, 384, + -1072, 1527, 1533, 1451, 1316, 1453, 1380, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, 976, -1072, 29, 1377, -1072, 1386, + 384, -1072, -1072, -1072, 666, 1321, -1072, -1072, -1072, 1465, + 1332, 976, 1577, 1435, -1072, 384, 79, 1339, -1072, -1072, + -1072, 1479, 1633, 905, -1072, 1341, 1408, 1412, -1072, -1072, + -1072, 1633, -1072, 384, 384, 1413, -1072, 384, -1072 }; /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE @@ -2695,157 +2700,157 @@ namespace yy { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 422, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 29, 30, 45, 46, 47, 44, 5, 6, 7, 12, 9, 10, 11, 8, 13, 14, 15, 16, 17, 18, 19, 23, 25, 24, 20, 21, 22, 26, 27, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 0, 0, 0, 0, 391, 0, 0, 207, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 251, 298, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, - 0, 0, 0, 0, 0, 0, 378, 0, 0, 0, + 0, 0, 0, 0, 392, 0, 0, 208, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 252, 299, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, + 0, 0, 0, 0, 0, 0, 379, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 212, 0, 202, 0, 218, 0, 0, 425, 0, 0, - 0, 57, 0, 63, 0, 69, 0, 0, 462, 0, - 1, 3, 452, 0, 565, 0, 0, 0, 0, 0, - 556, 0, 0, 0, 557, 0, 0, 0, 0, 440, - 451, 0, 441, 446, 444, 447, 445, 442, 443, 448, - 449, 433, 434, 435, 436, 437, 438, 439, 460, 0, - 0, 0, 454, 459, 0, 456, 455, 457, 0, 0, - 388, 0, 384, 0, 0, 210, 211, 0, 81, 0, - 48, 401, 0, 0, 395, 0, 0, 0, 0, 117, - 0, 540, 0, 545, 524, 0, 0, 0, 0, 0, - 537, 538, 0, 0, 0, 0, 0, 0, 558, 533, - 0, 0, 544, 539, 523, 0, 0, 543, 541, 0, - 303, 339, 328, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 340, 341, 342, - 247, 0, 300, 0, 264, 0, 0, 261, 0, 0, - 0, 0, 0, 283, 0, 0, 0, 0, 277, 0, - 0, 121, 0, 0, 0, 0, 83, 0, 498, 0, - 0, 0, 0, 552, 551, 0, 407, 408, 409, 410, - 0, 0, 0, 176, 0, 88, 89, 0, 0, 87, + 213, 0, 203, 0, 219, 0, 0, 426, 0, 0, + 0, 57, 0, 63, 0, 69, 0, 0, 463, 0, + 1, 3, 453, 0, 566, 0, 0, 0, 0, 0, + 557, 0, 0, 0, 558, 0, 0, 0, 0, 441, + 452, 0, 442, 447, 445, 448, 446, 443, 444, 449, + 450, 434, 435, 436, 437, 438, 439, 440, 461, 0, + 0, 0, 455, 460, 0, 457, 456, 458, 0, 0, + 389, 0, 385, 0, 0, 211, 212, 0, 81, 0, + 48, 402, 0, 0, 396, 0, 0, 0, 0, 118, + 0, 541, 0, 546, 525, 0, 0, 0, 0, 0, + 538, 539, 0, 0, 0, 0, 0, 0, 559, 534, + 0, 0, 545, 540, 524, 0, 0, 544, 542, 0, + 304, 340, 329, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, + 248, 0, 301, 0, 265, 0, 0, 262, 0, 0, + 0, 0, 0, 284, 0, 0, 0, 0, 278, 0, + 0, 122, 0, 0, 0, 0, 83, 0, 499, 0, + 0, 0, 0, 553, 552, 0, 408, 409, 410, 411, + 0, 0, 0, 177, 0, 88, 89, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 369, 0, 0, 0, - 0, 0, 0, 0, 0, 503, 504, 505, 0, 0, - 0, 546, 0, 512, 0, 0, 0, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 236, 238, - 239, 240, 241, 242, 243, 244, 235, 237, 245, 246, - 380, 377, 78, 73, 0, 54, 0, 79, 0, 148, - 149, 0, 0, 171, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 423, 147, 0, - 346, 351, 347, 348, 349, 350, 352, 353, 354, 355, - 356, 357, 358, 359, 0, 50, 0, 0, 0, 215, - 216, 217, 0, 205, 206, 0, 223, 220, 0, 431, - 0, 430, 432, 427, 371, 60, 55, 0, 51, 66, - 61, 0, 52, 72, 67, 0, 53, 366, 0, 0, + 0, 0, 0, 0, 0, 0, 370, 0, 0, 0, + 0, 0, 0, 0, 0, 504, 505, 506, 0, 0, + 0, 547, 0, 513, 0, 0, 0, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 237, 239, + 240, 241, 242, 243, 244, 245, 236, 238, 246, 247, + 381, 378, 78, 73, 0, 54, 0, 79, 0, 149, + 150, 0, 0, 172, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 424, 148, 0, + 347, 352, 348, 349, 350, 351, 353, 354, 355, 356, + 357, 358, 359, 360, 0, 50, 0, 0, 0, 216, + 217, 218, 0, 206, 207, 0, 224, 221, 0, 432, + 0, 431, 433, 428, 372, 60, 55, 0, 51, 66, + 61, 0, 52, 72, 67, 0, 53, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 492, 484, 485, 486, 487, - 488, 489, 490, 491, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, + 480, 481, 482, 483, 484, 493, 485, 486, 487, 488, + 489, 490, 491, 492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 383, 0, 0, 0, 82, 49, 0, 0, 0, 0, - 0, 0, 0, 115, 116, 252, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 383, + 384, 0, 0, 0, 82, 49, 0, 0, 0, 0, + 0, 0, 0, 116, 117, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 249, 0, 263, 259, 260, - 292, 0, 292, 0, 281, 282, 0, 292, 0, 275, - 276, 0, 119, 120, 112, 0, 0, 84, 0, 0, - 142, 0, 143, 0, 138, 0, 0, 0, 0, 0, - 0, 0, 174, 175, 0, 0, 0, 0, 95, 96, + 0, 0, 0, 0, 0, 250, 0, 264, 260, 261, + 293, 0, 293, 0, 282, 283, 0, 293, 0, 276, + 277, 0, 120, 121, 113, 0, 0, 84, 0, 0, + 143, 0, 144, 0, 139, 0, 0, 0, 0, 0, + 0, 0, 175, 176, 0, 0, 0, 0, 95, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 85, 0, 367, 368, - 0, 0, 372, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 85, 0, 368, 369, + 0, 0, 373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 74, 80, - 0, 0, 0, 0, 155, 156, 0, 0, 0, 0, + 0, 0, 0, 0, 156, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 173, 200, 201, 0, - 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 174, 201, 202, 0, + 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 56, 64, 62, 70, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 494, 493, 561, 258, - 0, 0, 562, 563, 564, 560, 566, 515, 518, 517, - 0, 0, 516, 519, 520, 553, 0, 554, 450, 0, - 567, 525, 542, 458, 0, 392, 0, 388, 0, 0, - 0, 496, 209, 208, 404, 399, 0, 0, 398, 393, - 0, 0, 0, 555, 506, 547, 548, 521, 522, 527, - 530, 528, 535, 536, 526, 532, 531, 0, 534, 302, - 299, 0, 248, 0, 0, 287, 294, 288, 293, 290, - 295, 289, 291, 0, 0, 0, 269, 0, 0, 292, - 0, 0, 292, 255, 0, 0, 0, 114, 0, 0, - 131, 140, 141, 0, 145, 126, 125, 0, 127, 0, - 124, 128, 129, 0, 134, 132, 549, 550, 406, 417, - 419, 420, 421, 418, 0, 411, 415, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 495, 494, 562, 259, + 0, 0, 563, 564, 565, 561, 567, 516, 519, 518, + 0, 0, 517, 520, 521, 554, 0, 555, 451, 0, + 568, 526, 543, 459, 0, 393, 0, 389, 0, 0, + 0, 497, 210, 209, 405, 400, 0, 0, 399, 394, + 0, 0, 0, 556, 507, 548, 549, 522, 523, 528, + 531, 529, 536, 537, 527, 533, 532, 0, 535, 303, + 300, 0, 249, 0, 0, 288, 295, 289, 294, 291, + 296, 290, 292, 0, 0, 0, 270, 0, 0, 293, + 0, 0, 293, 256, 0, 0, 0, 115, 0, 0, + 132, 141, 142, 0, 146, 127, 126, 0, 128, 0, + 125, 129, 130, 0, 135, 133, 550, 551, 407, 418, + 420, 421, 422, 419, 0, 412, 416, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 91, 90, 92, - 93, 94, 0, 0, 375, 0, 0, 502, 510, 495, - 501, 507, 508, 499, 509, 514, 500, 497, 513, 379, + 93, 94, 0, 0, 376, 0, 0, 503, 511, 496, + 502, 508, 509, 500, 510, 515, 501, 498, 514, 380, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 146, 151, 150, 152, - 153, 154, 424, 345, 343, 0, 360, 0, 0, 0, - 0, 197, 198, 0, 0, 214, 213, 204, 203, 222, - 219, 0, 559, 429, 426, 0, 59, 65, 71, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, 594, 463, 464, 257, 256, - 596, 598, 600, 599, 0, 453, 461, 0, 0, 390, - 389, 0, 400, 0, 394, 0, 118, 0, 364, 0, - 301, 250, 265, 297, 296, 262, 292, 292, 0, 292, - 0, 0, 280, 0, 254, 253, 0, 0, 0, 0, - 0, 0, 136, 0, 0, 0, 0, 405, 292, 416, - 0, 0, 0, 0, 0, 107, 0, 0, 110, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 0, - 0, 0, 373, 381, 167, 0, 0, 172, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 344, 361, - 199, 191, 190, 194, 195, 0, 0, 221, 428, 0, - 595, 388, 0, 385, 402, 0, 396, 0, 0, 0, - 529, 266, 0, 0, 0, 292, 0, 292, 292, 278, - 0, 113, 0, 144, 511, 123, 0, 0, 0, 0, - 412, 0, 0, 179, 0, 187, 0, 0, 0, 0, - 370, 376, 0, 0, 0, 0, 196, 597, 0, 0, - 403, 397, 0, 365, 292, 292, 292, 0, 286, 0, - 0, 0, 170, 0, 139, 135, 133, 292, 413, 0, - 0, 0, 182, 0, 0, 178, 108, 109, 374, 168, - 169, 193, 0, 386, 292, 271, 267, 270, 292, 284, - 279, 122, 0, 0, 181, 180, 186, 0, 184, 0, - 0, 0, 363, 292, 0, 0, 137, 414, 183, 0, - 189, 0, 387, 0, 272, 0, 285, 185, 177, 188, - 362, 292, 292, 273, 268, 292, 274 + 0, 0, 0, 0, 0, 0, 147, 152, 151, 153, + 154, 155, 425, 346, 344, 0, 361, 0, 0, 0, + 0, 198, 199, 0, 0, 215, 214, 205, 204, 223, + 220, 0, 560, 430, 427, 0, 59, 65, 71, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 595, 464, 465, 258, 257, + 597, 599, 601, 600, 0, 454, 462, 0, 0, 391, + 390, 0, 401, 0, 395, 0, 119, 0, 365, 0, + 302, 251, 266, 298, 297, 263, 293, 293, 0, 293, + 0, 0, 281, 0, 255, 254, 0, 0, 0, 0, + 0, 0, 137, 0, 0, 0, 0, 406, 293, 417, + 0, 0, 0, 0, 0, 107, 0, 0, 0, 110, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 0, 0, 0, 374, 382, 168, 0, 0, 173, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 345, + 362, 200, 192, 191, 195, 196, 0, 0, 222, 429, + 0, 596, 389, 0, 386, 403, 0, 397, 0, 0, + 0, 530, 267, 0, 0, 0, 293, 0, 293, 293, + 279, 0, 114, 0, 145, 512, 124, 0, 0, 0, + 0, 413, 0, 0, 180, 0, 188, 0, 0, 0, + 0, 112, 371, 377, 0, 0, 0, 0, 197, 598, + 0, 0, 404, 398, 0, 366, 293, 293, 293, 0, + 287, 0, 0, 0, 171, 0, 140, 136, 134, 293, + 414, 0, 0, 0, 183, 0, 0, 179, 108, 109, + 375, 169, 170, 194, 0, 387, 293, 272, 268, 271, + 293, 285, 280, 123, 0, 0, 182, 181, 187, 0, + 185, 0, 0, 0, 364, 293, 0, 0, 138, 415, + 184, 0, 190, 0, 388, 0, 273, 0, 286, 186, + 178, 189, 363, 293, 293, 274, 269, 293, 275 }; /* YYPGOTO[NTERM-NUM]. */ const short int parser::yypgoto_[] = { - -1068, -1068, 1546, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -322, -1068, - -1068, -1068, -1068, -112, -226, -1068, -1068, 1278, -1068, 541, - -1068, -1068, -1068, -1068, -1068, -1068, -930, -605, -115, -599, - -1068, -1068, -1068, 1463, -237, -1068, -1068, -1068, -1068, 646, - -1068, -1068, 880, -1068, -1068, 1034, -1068, -1068, 889, -1068, - -1068, -118, -24, 914, 1071, -1068, -1068, 1325, -1068, -1068, - -1067, -1068, -1068, 1300, -1068, -1068, 1306, -974, -566, -1068, - -1068, 1025, -1068, 1485, 909, -1068, 522, -1068, -1068, -1068, - -1068, 1270, -1068, -1068, -1068, -1068, -1068, -1068, -1068, 1418, - -737, -1068, -1068, -1068, -1068, -1068, 1006, -1068, 580, -823, - -1068, -1068, -1068, -1068, -1068, 916, -1068, -44, 1097, -1068, - -1068, 1098, -1068, -1068, 882, -1068, -507, -1068, -93, -1068, - 1526, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -103, -1068, - -1068, -121, -586, -1068, -1068, -1068, -1068, -105, -92, -88, - -87, -86, -1068, -1068, -101, -50, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -83, -1068, -1068, -1068, -1068, -1068, - -78, -57, -45, -55, -54, -53, -1068, -1068, -1068, -1068, - -111, -96, -98, -94, -52, -51, -48, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, -1068, - -1068, -1068, -1068, -1068, -1068, 894, -1068, -521 + -1072, -1072, 1503, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -322, -1072, + -1072, -1072, -1072, -111, -225, -1072, -1072, 1256, -1072, 511, + -1072, -1072, -1072, -1072, -1072, -1072, -966, -606, -115, -599, + -1072, -1072, -1072, 1414, -243, -1072, -1072, -1072, -1072, 604, + -1072, -1072, 840, -1072, -1072, 995, -1072, -1072, 859, -1072, + -1072, -112, -24, 891, 1047, -1072, -1072, 1277, -1072, -1072, + -1071, -1072, -1072, 1274, -1072, -1072, 1273, -971, -569, -1072, + -1072, 991, -1072, 1458, 883, -1072, 477, -1072, -1072, -1072, + -1072, 1238, -1072, -1072, -1072, -1072, -1072, -1072, -1072, 1394, + -733, -1072, -1072, -1072, -1072, -1072, 968, -1072, 551, -815, + -1072, -1072, -1072, -1072, -1072, 879, -1072, -33, 1066, -1072, + -1072, 1064, -1072, -1072, 850, -1072, -536, -1072, -92, -1072, + 1497, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -104, -1072, + -1072, -120, -570, -1072, -1072, -1072, -1072, -107, -93, -84, + -82, -72, -1072, -1072, -100, -71, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -67, -1072, -1072, -1072, -1072, -1072, + -65, -60, -54, -59, -55, -50, -1072, -1072, -1072, -1072, + -113, -110, -89, -83, -48, -47, -41, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, -1072, + -1072, -1072, -1072, -1072, -1072, 837, -1072, -519 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -2855,11 +2860,11 @@ namespace yy -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 152, 154, 156, 131, 53, 54, 55, 56, 363, 895, 57, 324, 58, 228, 229, 59, 320, 321, 869, 870, - 60, 327, 1055, 1054, 1136, 873, 629, 630, 631, 632, - 438, 61, 62, 342, 343, 1146, 1221, 63, 720, 721, + 60, 327, 1055, 1054, 1137, 873, 629, 630, 631, 632, + 438, 61, 62, 342, 343, 1147, 1223, 63, 720, 721, 64, 462, 463, 65, 214, 215, 66, 458, 459, 67, 465, 469, 110, 856, 772, 68, 306, 307, 308, 844, - 1121, 69, 317, 318, 70, 312, 313, 845, 1122, 71, + 1122, 69, 317, 318, 70, 312, 313, 845, 1123, 71, 259, 260, 72, 439, 440, 73, 1028, 1029, 74, 75, 365, 366, 76, 77, 368, 78, 79, 80, 211, 212, 568, 81, 82, 83, 84, 335, 336, 884, 885, 886, @@ -2884,366 +2889,368 @@ namespace yy const short int parser::yytable_[] = { - 128, 129, 584, 322, 263, 216, 262, 137, 270, 386, - 338, 294, 146, 149, 150, 295, 261, 264, 157, 437, - 460, 265, 266, 267, 861, 339, 280, 466, 648, 649, - 862, 286, 441, 441, 442, 442, 461, 451, 451, 773, - 660, 452, 452, 205, 846, 671, 848, 871, 206, 202, - 464, 851, 287, 791, 289, 290, 291, 296, 297, 271, - 1018, 298, 1059, 1123, 288, 813, 418, 888, 836, 860, - 1010, 340, 779, 717, 303, 209, 209, 838, 90, 835, - 419, 1103, 718, 171, 961, 819, 820, 821, 863, 420, - 1104, 583, 418, 962, 828, 1174, 584, 92, 1196, 572, - 219, 566, 421, 569, 602, 643, 419, 876, 840, 1063, - 422, 102, 132, 1182, 221, 420, 96, 107, 837, 107, - 423, 101, 222, 1137, 1138, 1139, 839, 340, 421, 1064, - 133, 877, 99, 577, 633, 304, 422, 642, 121, 578, - 117, 100, 227, 638, 766, 123, 423, 104, 879, 118, - 713, 94, 95, 767, 210, 210, 573, 567, 107, 379, - 107, 603, 340, 107, 843, 1234, 841, 107, 918, 107, - 107, 889, 716, 305, 106, 925, 424, 425, 107, 963, - 879, 341, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 634, 107, 707, 708, 709, 710, 435, 711, 1183, - 639, 842, 424, 425, 107, 835, 880, 714, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 1012, 780, 643, - 91, 972, 103, 435, 719, 1211, 890, 108, 109, 126, - 127, 436, 1105, 628, 997, 964, 622, 341, 880, 93, - 1225, 220, 836, 1202, 837, 994, 995, 864, 879, 998, - 999, 838, 839, 1002, 1184, 1004, 1005, 436, 105, 628, - 812, 418, 881, 300, 1175, 300, 882, 883, 144, 145, - 147, 148, 341, 805, 111, 419, 798, 809, 112, 830, - 929, 107, 840, 1040, 420, 799, 1043, 319, 954, 300, - 107, 1058, 841, 413, 881, 107, 113, 421, 882, 883, - 300, 300, 956, 300, 713, 422, 880, 1033, 300, 694, - 695, 231, 114, 580, 970, 423, 1034, 1059, 301, 581, - 301, 706, 891, 892, 893, 894, 200, 842, 896, 897, - 898, 899, 900, 901, 902, 903, 904, 905, 843, 907, - 908, 909, 910, 911, 301, 912, 232, 233, 414, 476, - 201, 916, 480, 234, 484, 301, 301, 769, 301, 1177, - 235, 715, 881, 301, 300, 300, 882, 883, 932, 933, - 934, 424, 425, 302, 1158, 410, 300, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 300, 722, 252, 836, - 300, 974, 435, 300, 309, 300, 254, 958, 838, 411, - 1114, 300, 853, 415, 477, 1116, 724, 481, 314, 485, - 455, 467, 256, 473, 122, 300, 624, 1056, 474, 301, - 301, 300, 303, 309, 257, 300, 436, 314, 628, 840, - 258, 301, 608, 614, 726, 124, 668, 619, 729, 125, - 959, 301, 177, 178, 723, 301, 960, 672, 301, 1051, - 301, 1131, 224, 770, 771, 310, 301, 107, 130, 478, - 225, 135, 482, 725, 486, 871, 1119, 227, 136, 315, - 301, 1124, 1057, 1126, 487, 1022, 301, 328, 1021, 216, - 301, 97, 98, 304, 310, 843, 1024, 364, 315, 854, - 855, 727, 1141, 311, 138, 730, 1030, 263, 673, 262, - 1083, 270, 227, 1098, 294, 1099, 1052, 316, 295, 261, - 264, 1107, 205, 139, 265, 266, 267, 206, 202, 280, - 151, 305, 311, 1120, 286, 1108, 316, 338, 115, 116, - 162, 1160, 861, 861, 861, 1161, 329, 153, 862, 862, - 862, 155, 339, 1134, 198, 287, 330, 289, 290, 291, - 296, 297, 271, 806, 298, 213, 810, 288, 208, 1167, - 217, 1169, 1170, 119, 120, 223, 1061, 661, 662, 663, - 664, 218, 665, 707, 708, 709, 710, 226, 711, 831, + 128, 129, 263, 584, 322, 262, 216, 137, 338, 270, + 773, 339, 146, 149, 150, 386, 264, 261, 157, 437, + 294, 460, 205, 861, 791, 265, 295, 266, 648, 649, + 862, 441, 441, 466, 461, 442, 442, 267, 271, 206, + 660, 846, 280, 848, 286, 671, 451, 451, 851, 287, + 289, 464, 452, 452, 290, 288, 819, 820, 821, 291, + 202, 296, 297, 871, 1018, 828, 1124, 813, 298, 888, + 1059, 863, 836, 779, 961, 1010, 90, 418, 209, 107, + 860, 838, 219, 962, 717, 835, 1104, 1138, 1139, 1140, + 92, 419, 879, 718, 107, 1105, 1198, 584, 572, 643, + 420, 602, 132, 209, 577, 300, 569, 171, 633, 1056, + 578, 101, 840, 421, 876, 96, 1184, 1063, 766, 583, + 133, 422, 332, 107, 837, 94, 95, 767, 107, 106, + 418, 423, 839, 1176, 333, 566, 111, 1064, 877, 918, + 99, 112, 117, 798, 419, 102, 925, 334, 104, 100, + 880, 118, 799, 420, 879, 573, 879, 210, 603, 340, + 301, 340, 113, 1236, 1057, 634, 421, 107, 843, 963, + 227, 642, 841, 889, 422, 340, 707, 708, 709, 710, + 107, 711, 210, 379, 423, 716, 107, 424, 425, 108, + 109, 567, 972, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 1185, 1058, 126, 127, 881, 842, 435, 1204, + 882, 883, 880, 643, 880, 302, 994, 995, 91, 780, + 998, 999, 1012, 220, 1002, 964, 1004, 1005, 890, 1213, + 864, 638, 93, 144, 145, 719, 997, 1106, 147, 148, + 424, 425, 436, 300, 628, 1227, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 107, 103, 1186, 107, 105, + 812, 435, 300, 107, 418, 1179, 107, 1177, 881, 341, + 881, 341, 882, 883, 882, 883, 622, 805, 419, 107, + 1040, 107, 107, 1043, 114, 341, 121, 420, 639, 413, + 809, 300, 300, 300, 300, 436, 830, 628, 301, 476, + 421, 480, 484, 300, 97, 98, 300, 300, 422, 694, + 695, 300, 300, 835, 300, 300, 300, 301, 423, 853, + 122, 706, 891, 892, 893, 894, 1059, 319, 896, 897, + 898, 899, 900, 901, 902, 903, 904, 905, 300, 907, + 908, 909, 910, 911, 414, 912, 301, 301, 301, 301, + 836, 916, 837, 410, 477, 300, 481, 485, 301, 838, + 839, 301, 301, 300, 769, 929, 301, 301, 954, 301, + 301, 301, 411, 956, 424, 425, 970, 303, 309, 1160, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 974, + 840, 1115, 1117, 301, 314, 435, 713, 958, 303, 415, + 841, 455, 467, 473, 474, 309, 854, 855, 608, 478, + 301, 482, 486, 487, 713, 614, 1022, 1024, 301, 115, + 116, 1030, 1084, 314, 1099, 1100, 1108, 836, 722, 436, + 724, 628, 624, 619, 580, 842, 838, 726, 304, 310, + 581, 124, 328, 729, 123, 668, 843, 1033, 1109, 1051, + 1068, 107, 370, 714, 672, 315, 1034, 959, 1120, 304, + 770, 771, 125, 960, 221, 1162, 310, 840, 1125, 130, + 1127, 715, 222, 1163, 865, 1132, 305, 311, 1021, 135, + 216, 871, 224, 227, 315, 723, 866, 725, 136, 1142, + 225, 205, 867, 316, 727, 263, 364, 305, 262, 138, + 730, 329, 270, 139, 311, 673, 1052, 1069, 206, 264, + 261, 330, 868, 294, 1135, 1121, 119, 120, 265, 295, + 266, 151, 316, 843, 153, 338, 227, 155, 339, 202, + 267, 271, 861, 861, 861, 280, 162, 286, 198, 862, + 862, 862, 287, 289, 140, 141, 208, 290, 288, 217, + 142, 143, 291, 806, 296, 297, 810, 1169, 213, 1171, + 1172, 298, 661, 662, 663, 664, 1061, 665, 218, 707, + 708, 709, 710, 223, 711, 932, 933, 934, 226, 831, 227, 936, 937, 938, 939, 940, 941, 942, 943, 944, - 945, 1080, 947, 948, 949, 950, 951, 861, 1195, 370, - 1197, 460, 418, 862, 230, 1176, 663, 664, 969, 665, - 441, 1203, 442, 140, 141, 451, 419, 461, 332, 452, - 319, 865, 323, 906, 325, 420, 142, 143, 1212, 946, - 333, 464, 1215, 866, 709, 710, 326, 711, 421, 867, - 158, 159, 1106, 334, 364, 367, 422, 1224, 661, 662, - 663, 664, 412, 665, 416, 417, 423, 457, 475, 868, - 479, 483, 930, 544, 545, 1233, 546, 547, 548, 1236, - 549, 661, 662, 663, 664, 550, 665, 551, 661, 662, - 663, 664, 552, 665, 661, 662, 663, 664, 557, 665, - 955, 957, 553, 418, 554, 555, 1216, 707, 708, 709, - 710, 556, 711, 971, 1065, 558, 975, 419, 559, 560, - 561, 563, 424, 425, 562, 564, 420, 418, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 1069, 565, 421, - 571, 419, 576, 435, 1070, 574, 575, 422, 666, 579, - 420, 582, 1147, 586, 1148, 1149, 1047, 423, 1049, 661, - 662, 663, 664, 421, 665, 661, 662, 663, 664, 1152, - 665, 422, 585, 1153, 1154, 587, 588, 436, 589, 628, - 590, 423, 591, 592, 661, 662, 663, 664, 593, 665, - 594, 595, 596, 1155, 597, 605, 661, 662, 663, 664, - 1159, 665, 598, 661, 662, 663, 664, 599, 665, 600, - 601, 604, 606, 424, 425, 1071, 607, 610, 1171, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 611, 612, - 1179, 584, 1180, 613, 435, 616, 618, 424, 425, 344, - 1072, 617, 621, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 1073, 345, 625, 626, 627, 635, 435, 1074, - 636, 637, 346, 344, 661, 662, 663, 664, 436, 665, - 628, 661, 662, 663, 664, 347, 665, 345, 640, 641, - 1210, 644, 645, 348, 646, 674, 346, 647, 650, 651, - 652, 653, 436, 349, 628, 654, 655, 1220, 656, 347, - 661, 662, 663, 664, 657, 665, 675, 348, 658, 1229, - 659, 661, 662, 663, 664, 667, 665, 349, 676, 677, - 1075, 661, 662, 663, 664, 678, 665, 1076, 679, 680, - 681, 682, 683, 661, 662, 663, 664, 684, 665, 661, - 662, 663, 664, 1132, 665, 685, 686, 688, 670, 350, - 351, 687, 344, 690, 914, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 689, 728, 345, 1077, 691, 731, - 361, 732, 915, 350, 351, 346, 344, 1078, 692, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 347, 1079, - 345, 693, 696, 697, 361, 1084, 348, 698, 699, 346, - 700, 701, 418, 702, 362, 703, 349, 704, 705, 1115, - 733, 1117, 347, 734, 735, 736, 419, 737, 738, 739, - 348, 707, 708, 709, 710, 420, 711, 740, 362, 741, - 349, 742, 707, 708, 709, 710, 743, 711, 421, 1066, - 661, 662, 663, 664, 744, 665, 422, 707, 708, 709, - 710, 745, 711, 746, 747, 748, 423, 749, 750, 751, - 752, 753, 350, 351, 754, 755, 756, 757, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 1088, 1067, 661, - 662, 663, 664, 361, 665, 758, 350, 351, 1089, 759, - 765, 760, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 761, 762, 1090, 763, 764, 774, 361, 795, 800, - 776, 777, 424, 425, 778, 783, 1228, 362, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 160, 784, 785, - 786, 789, 790, 435, 1, 2, 792, 707, 708, 709, - 710, 362, 711, 794, 3, 4, 5, 707, 708, 709, - 710, 6, 711, 796, 797, 7, 801, 8, 9, 803, - 10, 804, 11, 12, 13, 14, 807, 436, 707, 708, - 709, 710, 808, 711, 780, 15, 811, 814, 16, 826, - 707, 708, 709, 710, 815, 711, 816, 707, 708, 709, - 710, 17, 711, 1091, 817, 707, 708, 709, 710, 818, - 711, 822, 823, 1092, 18, 19, 20, 824, 825, 827, - 21, 707, 708, 709, 710, 833, 711, 661, 662, 663, - 664, 22, 665, 23, 1093, 24, 25, 26, 27, 28, - 834, 832, 847, 849, 29, 30, 1094, 850, 852, 31, - 32, 33, 34, 1095, 857, 858, 859, 887, 913, 35, - 36, 1096, 37, 1, 2, 665, 38, 874, 875, 39, - 40, 41, 42, 3, 4, 5, 917, 1097, 919, 920, - 6, 921, 922, 1100, 7, 923, 8, 9, 924, 10, - 926, 11, 12, 13, 14, 927, 928, 711, 43, 1085, - 661, 662, 663, 664, 15, 665, 931, 16, 952, 661, - 662, 663, 664, 966, 665, 968, 661, 662, 663, 664, - 17, 665, 976, 977, 661, 662, 663, 664, 979, 665, - 978, 980, 981, 18, 19, 20, 982, 983, 984, 21, - 661, 662, 663, 664, 985, 665, 661, 662, 663, 664, - 22, 665, 23, 986, 24, 25, 26, 27, 28, 987, - 988, 989, 990, 29, 30, 1156, 991, 992, 31, 32, - 33, 34, 1186, 993, 996, 1000, 1001, 231, 35, 36, - 1187, 37, 1003, 1006, 1008, 38, 1009, 1010, 39, 40, - 41, 42, 200, 170, 1014, 1015, 1189, 171, 1016, 1017, - 567, 1031, 1190, 661, 662, 663, 664, 1019, 665, 1020, - 1023, 1025, 232, 233, 172, 1032, 201, 43, 1027, 234, - 661, 662, 663, 664, 1035, 665, 235, 236, 237, 1036, - 1042, 238, 239, 1037, 240, 241, 1038, 1039, 242, 243, - 244, 245, 246, 247, 248, 1041, 249, 250, 251, 1086, - 661, 662, 663, 664, 252, 665, 1044, 173, 174, 1191, - 253, 1045, 254, 1046, 1048, 1050, 1053, 255, 661, 662, - 663, 664, 1060, 665, 1026, 175, 176, 1062, 256, 1109, - -1, 163, 164, 165, 166, 167, 168, 169, 199, 1068, - 257, 213, 200, 170, 1081, 1087, 258, 171, 1102, 1110, - 1112, 163, 164, 165, 166, 167, 168, 169, 177, 178, - 1118, 1111, 1125, 170, 172, 1127, 201, 171, 661, 662, - 663, 664, 1082, 665, 1129, 707, 708, 709, 710, 1128, - 711, 1130, 1142, 1144, 172, 661, 662, 663, 664, 1145, - 665, 1150, 1157, 1164, 1162, 1165, 369, 661, 662, 663, - 664, 1166, 665, 1168, 1173, 1181, 1192, 173, 174, 707, - 708, 709, 710, 1178, 711, 1206, 1194, 370, 1199, 371, - 372, 1198, 1113, 1200, 1213, 175, 176, 173, 174, 1133, - 1207, 1208, 661, 662, 663, 664, 1209, 665, 1214, 1143, - 234, 1218, 373, 374, 1217, 175, 176, 235, 1219, 369, - 1223, 1151, 1230, 1226, 328, 1227, 1231, 1232, 177, 178, - 161, 1235, 1135, 1172, 661, 662, 663, 664, 623, 665, - 370, 456, 371, 372, 967, 1101, 802, 935, 177, 178, - 375, 965, 376, 254, 377, 333, 1185, 620, 615, 775, - 378, 454, 953, 234, 379, 373, 374, 829, 334, 570, - 235, 609, 380, 381, 382, 669, 1140, 328, 383, 384, - 385, 1163, 213, 0, 878, 973, 331, 1007, 1188, 468, - 661, 662, 663, 664, 788, 665, 661, 662, 663, 664, - 793, 665, 0, 375, 0, 376, 254, 377, 333, 661, - 662, 663, 664, 378, 665, 1013, 0, 379, 0, 0, - 0, 334, 0, 0, 0, 380, 381, 382, 0, 0, - 0, 383, 384, 385, 0, 213, 661, 662, 663, 664, - 0, 665, 0, 0, 1193, 0, 661, 662, 663, 664, - 1201, 665, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1204, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 0, 0, 0, 509, 510, - 1205, 511, 512, 513, 514, 0, 0, 0, 0, 0, - 1222 + 945, 1081, 947, 948, 949, 950, 951, 1197, 861, 1199, + 158, 159, 460, 418, 230, 862, 1178, 319, 323, 441, + 1205, 325, 326, 442, 969, 461, 364, 419, 906, 663, + 664, 367, 665, 412, 451, 946, 420, 1214, 416, 417, + 452, 1217, 464, 661, 662, 663, 664, 475, 665, 421, + 709, 710, 1107, 711, 457, 479, 1226, 422, 661, 662, + 663, 664, 483, 665, 544, 545, 546, 423, 231, 547, + 548, 549, 930, 550, 1235, 551, 552, 553, 1238, 554, + 555, 556, 557, 200, 661, 662, 663, 664, 558, 665, + 661, 662, 663, 664, 559, 665, 560, 562, 563, 1065, + 955, 957, 561, 232, 233, 418, 564, 201, 1218, 565, + 234, 571, 576, 971, 1070, 574, 975, 235, 575, 419, + 582, 579, 586, 424, 425, 587, 588, 589, 420, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 585, 590, + 1071, 421, 605, 591, 435, 252, 1072, 592, 593, 422, + 606, 594, 1148, 254, 1149, 1150, 1151, 1047, 1049, 423, + 595, 661, 662, 663, 664, 596, 665, 597, 598, 256, + 1154, 1066, 661, 662, 663, 664, 599, 665, 436, 600, + 628, 257, 601, 661, 662, 663, 664, 258, 665, 604, + 661, 662, 663, 664, 1157, 665, 610, 621, 607, 177, + 178, 1161, 611, 661, 662, 663, 664, 612, 665, 661, + 662, 663, 664, 613, 665, 424, 425, 1073, 616, 1173, + 617, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 418, 1181, 584, 1182, 618, 626, 435, 625, 637, 1074, + 661, 662, 663, 664, 419, 665, 1075, 661, 662, 663, + 664, 635, 665, 420, 344, 661, 662, 663, 664, 1076, + 665, 636, 640, 641, 627, 1077, 421, 644, 345, 645, + 436, 674, 628, 646, 422, 647, 675, 346, 650, 651, + 676, 652, 1212, 344, 423, 677, 661, 662, 663, 664, + 347, 665, 653, 654, 655, 678, 1078, 345, 348, 1222, + 656, 657, 679, 1079, 658, 659, 346, 680, 349, 666, + 681, 1231, 707, 708, 709, 710, 667, 711, 682, 347, + 683, 684, 685, 707, 708, 709, 710, 348, 711, 687, + 707, 708, 709, 710, 686, 711, 688, 349, 690, 689, + 424, 425, 1080, 1133, 344, 728, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 691, 692, 693, 345, 696, + 697, 435, 698, 670, 350, 351, 699, 346, 1085, 700, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 1089, + 347, 1155, 1156, 701, 702, 361, 1090, 703, 348, 704, + 705, 731, 915, 350, 351, 436, 732, 628, 349, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 734, 1116, + 733, 1118, 735, 736, 361, 344, 737, 738, 739, 362, + 707, 708, 709, 710, 740, 711, 741, 742, 743, 345, + 707, 708, 709, 710, 744, 711, 745, 746, 346, 707, + 708, 709, 710, 747, 711, 748, 749, 750, 362, 751, + 752, 347, 753, 754, 350, 351, 369, 755, 756, 348, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 349, + 757, 758, 759, 760, 418, 361, 1091, 370, 761, 371, + 372, 1067, 661, 662, 663, 664, 1092, 665, 419, 762, + 763, 707, 708, 709, 710, 1093, 711, 420, 764, 765, + 234, 774, 373, 374, 776, 777, 778, 235, 1230, 362, + 421, 783, 784, 785, 328, 786, 789, 790, 422, 707, + 708, 709, 710, 792, 711, 350, 351, 794, 423, 795, + 797, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 375, 796, 376, 254, 377, 333, 361, 1094, 800, 801, + 378, 803, 804, 807, 379, 808, 811, 814, 334, 815, + 816, 780, 380, 381, 382, 826, 827, 817, 383, 384, + 385, 818, 213, 822, 823, 1095, 824, 825, 832, 468, + 362, 833, 857, 859, 424, 425, 834, 665, 847, 849, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 160, + 850, 852, 711, 858, 887, 435, 1, 2, 707, 708, + 709, 710, 913, 711, 874, 917, 3, 4, 5, 707, + 708, 709, 710, 6, 711, 919, 875, 7, 952, 8, + 9, 920, 10, 921, 11, 12, 13, 14, 922, 436, + 707, 708, 709, 710, 923, 711, 924, 15, 926, 927, + 16, 1008, 661, 662, 663, 664, 928, 665, 931, 976, + 966, 968, 977, 17, 1096, 978, 979, 661, 662, 663, + 664, 980, 665, 981, 982, 1097, 18, 19, 20, 983, + 984, 985, 21, 661, 662, 663, 664, 986, 665, 661, + 662, 663, 664, 22, 665, 23, 1098, 24, 25, 26, + 27, 28, 987, 988, 989, 990, 29, 30, 1101, 991, + 992, 31, 32, 33, 34, 707, 708, 709, 710, 993, + 711, 35, 36, 1158, 37, 1, 2, 996, 38, 1000, + 1001, 39, 40, 41, 42, 3, 4, 5, 1003, 1188, + 1009, 1006, 6, 1010, 1015, 1189, 7, 1016, 8, 9, + 1014, 10, 1017, 11, 12, 13, 14, 1019, 567, 1027, + 43, 1086, 707, 708, 709, 710, 15, 711, 1031, 16, + 1020, 1191, 707, 708, 709, 710, 1032, 711, 661, 662, + 663, 664, 17, 665, 661, 662, 663, 664, 1023, 665, + 1025, 1035, 1036, 1037, 1038, 18, 19, 20, 1039, 1041, + 1042, 21, 661, 662, 663, 664, 1044, 665, 661, 662, + 663, 664, 22, 665, 23, 1045, 24, 25, 26, 27, + 28, 1046, 1048, 1050, 1053, 29, 30, 1060, 1192, 1062, + 31, 32, 33, 34, 1193, 1082, -1, 1088, 914, 231, + 35, 36, 1103, 37, 1110, 1111, 1113, 38, 1119, 1130, + 39, 40, 41, 42, 200, 170, 1026, 1112, 1126, 171, + 1128, 1129, 1083, 661, 662, 663, 664, 1131, 665, 1143, + 1145, 1146, 1152, 1159, 232, 233, 172, 1166, 201, 43, + 1164, 234, 707, 708, 709, 710, 1167, 711, 235, 236, + 237, 1168, 1170, 238, 239, 1175, 240, 241, 1180, 1194, + 242, 243, 244, 245, 246, 247, 248, 1183, 249, 250, + 251, 1196, 1200, 1208, 1201, 1210, 252, 1114, 1202, 173, + 174, 1211, 253, 1209, 254, 1215, 1219, 1220, 1225, 255, + 661, 662, 663, 664, 1216, 665, 1134, 175, 176, 1221, + 256, 1229, 1228, 163, 164, 165, 166, 167, 168, 169, + 199, 1232, 257, 213, 200, 170, 1233, 161, 258, 171, + 1234, 1237, 456, 163, 164, 165, 166, 167, 168, 169, + 177, 178, 1136, 1102, 967, 170, 172, 802, 201, 171, + 661, 662, 663, 664, 1144, 665, 623, 707, 708, 709, + 710, 965, 711, 609, 935, 615, 172, 661, 662, 663, + 664, 620, 665, 829, 454, 775, 953, 1165, 369, 661, + 662, 663, 664, 669, 665, 570, 878, 1141, 973, 173, + 174, 661, 662, 663, 664, 1007, 665, 331, 1013, 370, + 0, 371, 372, 788, 1153, 0, 793, 175, 176, 173, + 174, 1174, 0, 0, 661, 662, 663, 664, 0, 665, + 0, 1187, 234, 0, 373, 374, 0, 175, 176, 235, + 0, 0, 0, 1190, 0, 0, 328, 0, 0, 0, + 177, 178, 0, 0, 0, 1195, 661, 662, 663, 664, + 0, 665, 661, 662, 663, 664, 0, 665, 0, 0, + 177, 178, 375, 0, 376, 254, 377, 333, 1203, 0, + 0, 0, 378, 0, 0, 0, 379, 0, 0, 0, + 334, 0, 0, 0, 380, 381, 382, 0, 0, 0, + 383, 384, 385, 0, 213, 0, 661, 662, 663, 664, + 1206, 665, 0, 0, 0, 0, 1207, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 508, 0, 0, + 0, 509, 510, 0, 511, 512, 513, 514, 1087, 707, + 708, 709, 710, 0, 711, 0, 707, 708, 709, 710, + 1224, 711, 661, 662, 663, 664, 0, 665 }; /* YYCHECK. */ const short int parser::yycheck_[] = { - 24, 25, 228, 115, 109, 98, 109, 31, 109, 127, - 121, 109, 36, 37, 38, 109, 109, 109, 42, 134, - 141, 109, 109, 109, 629, 121, 109, 145, 350, 351, - 629, 109, 135, 136, 135, 136, 141, 135, 136, 546, - 362, 135, 136, 93, 610, 367, 612, 633, 93, 93, - 143, 617, 109, 560, 109, 109, 109, 109, 109, 109, - 797, 109, 885, 1037, 109, 586, 29, 34, 43, 32, - 52, 22, 52, 43, 22, 4, 4, 52, 52, 6, - 43, 43, 52, 25, 43, 592, 593, 594, 34, 52, - 52, 32, 29, 52, 601, 32, 322, 52, 1165, 138, - 52, 138, 65, 32, 138, 342, 43, 57, 83, 101, - 73, 83, 34, 52, 193, 52, 193, 83, 45, 83, - 83, 52, 201, 1053, 1054, 1055, 53, 22, 65, 121, - 52, 81, 34, 195, 138, 83, 73, 32, 194, 201, - 34, 43, 83, 138, 43, 34, 83, 83, 83, 43, - 138, 193, 194, 52, 83, 83, 195, 194, 83, 101, - 83, 195, 22, 83, 139, 1232, 93, 83, 675, 83, - 83, 138, 32, 121, 193, 682, 139, 140, 83, 138, - 83, 132, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 195, 83, 139, 140, 141, 142, 160, 144, 138, - 195, 128, 139, 140, 83, 6, 141, 195, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 199, 198, 456, - 194, 728, 194, 160, 194, 200, 193, 193, 194, 193, - 194, 194, 194, 196, 755, 194, 32, 132, 141, 194, - 1214, 193, 43, 1173, 45, 752, 753, 193, 83, 756, - 757, 52, 53, 760, 193, 762, 763, 194, 194, 196, - 582, 29, 197, 83, 32, 83, 201, 202, 193, 194, - 193, 194, 132, 193, 193, 43, 43, 193, 193, 193, - 193, 83, 83, 849, 52, 52, 852, 83, 193, 83, - 83, 194, 93, 83, 197, 83, 193, 65, 201, 202, - 83, 83, 193, 83, 138, 73, 141, 43, 83, 424, - 425, 5, 193, 195, 193, 83, 52, 1140, 138, 201, - 138, 436, 644, 645, 646, 647, 20, 128, 650, 651, - 652, 653, 654, 655, 656, 657, 658, 659, 139, 661, - 662, 663, 664, 665, 138, 667, 40, 41, 138, 83, - 44, 673, 83, 47, 83, 138, 138, 43, 138, 194, - 54, 195, 197, 138, 83, 83, 201, 202, 690, 691, - 692, 139, 140, 193, 1111, 193, 83, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 83, 138, 82, 43, - 83, 193, 160, 83, 22, 83, 90, 719, 52, 193, - 193, 83, 52, 193, 138, 193, 138, 138, 22, 138, - 193, 193, 106, 193, 193, 83, 32, 138, 193, 138, - 138, 83, 22, 22, 118, 83, 194, 22, 196, 83, - 124, 138, 32, 32, 138, 193, 32, 32, 138, 193, - 193, 138, 136, 137, 195, 138, 199, 32, 138, 138, - 138, 32, 193, 139, 140, 83, 138, 83, 83, 193, - 201, 194, 193, 195, 193, 1051, 138, 83, 194, 83, - 138, 1037, 193, 1039, 193, 193, 138, 61, 800, 572, - 138, 193, 194, 83, 83, 139, 193, 83, 83, 139, - 140, 195, 1058, 121, 193, 195, 193, 602, 83, 602, - 193, 602, 83, 193, 602, 193, 195, 121, 602, 602, - 602, 193, 562, 34, 602, 602, 602, 562, 562, 602, - 83, 121, 121, 195, 602, 193, 121, 638, 193, 194, - 193, 193, 1137, 1138, 1139, 193, 120, 83, 1137, 1138, - 1139, 83, 638, 1050, 193, 602, 130, 602, 602, 602, - 602, 602, 602, 577, 602, 119, 580, 602, 23, 1125, - 43, 1127, 1128, 193, 194, 83, 888, 139, 140, 141, - 142, 193, 144, 139, 140, 141, 142, 83, 144, 603, + 24, 25, 109, 228, 115, 109, 98, 31, 121, 109, + 546, 121, 36, 37, 38, 127, 109, 109, 42, 134, + 109, 141, 93, 629, 560, 109, 109, 109, 350, 351, + 629, 135, 136, 145, 141, 135, 136, 109, 109, 93, + 362, 610, 109, 612, 109, 367, 135, 136, 617, 109, + 109, 143, 135, 136, 109, 109, 592, 593, 594, 109, + 93, 109, 109, 633, 797, 601, 1037, 586, 109, 34, + 885, 34, 43, 52, 43, 52, 52, 29, 4, 83, + 32, 52, 52, 52, 43, 6, 43, 1053, 1054, 1055, + 52, 43, 83, 52, 83, 52, 1167, 322, 138, 342, + 52, 138, 34, 4, 195, 83, 32, 25, 138, 138, + 201, 52, 83, 65, 57, 193, 52, 101, 43, 32, + 52, 73, 80, 83, 45, 193, 194, 52, 83, 193, + 29, 83, 53, 32, 92, 138, 193, 121, 81, 675, + 34, 193, 34, 43, 43, 83, 682, 105, 83, 43, + 141, 43, 52, 52, 83, 195, 83, 83, 195, 22, + 138, 22, 193, 1234, 193, 195, 65, 83, 139, 138, + 83, 32, 93, 138, 73, 22, 139, 140, 141, 142, + 83, 144, 83, 101, 83, 32, 83, 139, 140, 193, + 194, 194, 728, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 138, 194, 193, 194, 197, 128, 160, 1175, + 201, 202, 141, 456, 141, 193, 752, 753, 194, 198, + 756, 757, 199, 193, 760, 194, 762, 763, 193, 200, + 193, 138, 194, 193, 194, 194, 755, 194, 193, 194, + 139, 140, 194, 83, 196, 1216, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 83, 194, 193, 83, 194, + 582, 160, 83, 83, 29, 194, 83, 32, 197, 132, + 197, 132, 201, 202, 201, 202, 32, 193, 43, 83, + 849, 83, 83, 852, 193, 132, 194, 52, 195, 83, + 193, 83, 83, 83, 83, 194, 193, 196, 138, 83, + 65, 83, 83, 83, 193, 194, 83, 83, 73, 424, + 425, 83, 83, 6, 83, 83, 83, 138, 83, 52, + 193, 436, 644, 645, 646, 647, 1141, 83, 650, 651, + 652, 653, 654, 655, 656, 657, 658, 659, 83, 661, + 662, 663, 664, 665, 138, 667, 138, 138, 138, 138, + 43, 673, 45, 193, 138, 83, 138, 138, 138, 52, + 53, 138, 138, 83, 43, 193, 138, 138, 193, 138, + 138, 138, 193, 193, 139, 140, 193, 22, 22, 1112, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 193, + 83, 193, 193, 138, 22, 160, 138, 719, 22, 193, + 93, 193, 193, 193, 193, 22, 139, 140, 32, 193, + 138, 193, 193, 193, 138, 32, 193, 193, 138, 193, + 194, 193, 193, 22, 193, 193, 193, 43, 138, 194, + 138, 196, 32, 32, 195, 128, 52, 138, 83, 83, + 201, 193, 61, 138, 34, 32, 139, 43, 193, 138, + 138, 83, 24, 195, 32, 83, 52, 193, 138, 83, + 139, 140, 193, 199, 193, 193, 83, 83, 1037, 83, + 1039, 195, 201, 193, 46, 32, 121, 121, 800, 194, + 572, 1051, 193, 83, 83, 195, 58, 195, 194, 1058, + 201, 562, 64, 121, 195, 602, 83, 121, 602, 193, + 195, 120, 602, 34, 121, 83, 195, 195, 562, 602, + 602, 130, 84, 602, 1050, 195, 193, 194, 602, 602, + 602, 83, 121, 139, 83, 638, 83, 83, 638, 562, + 602, 602, 1138, 1139, 1140, 602, 193, 602, 193, 1138, + 1139, 1140, 602, 602, 193, 194, 23, 602, 602, 43, + 193, 194, 602, 577, 602, 602, 580, 1126, 119, 1128, + 1129, 602, 139, 140, 141, 142, 888, 144, 193, 139, + 140, 141, 142, 83, 144, 690, 691, 692, 83, 603, 83, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 913, 707, 708, 709, 710, 711, 1202, 1164, 24, - 1166, 722, 29, 1202, 34, 32, 141, 142, 726, 144, - 713, 1177, 713, 193, 194, 713, 43, 722, 80, 713, - 83, 46, 39, 195, 43, 52, 193, 194, 1194, 195, - 92, 724, 1198, 58, 141, 142, 193, 144, 65, 64, - 193, 194, 964, 105, 83, 83, 73, 1213, 139, 140, - 141, 142, 127, 144, 52, 193, 83, 198, 127, 84, - 127, 127, 686, 34, 34, 1231, 34, 34, 34, 1235, - 34, 139, 140, 141, 142, 34, 144, 34, 139, 140, - 141, 142, 34, 144, 139, 140, 141, 142, 138, 144, - 714, 715, 34, 29, 34, 34, 32, 139, 140, 141, - 142, 34, 144, 727, 195, 195, 730, 43, 34, 34, - 34, 195, 139, 140, 138, 195, 52, 29, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 195, 83, 65, - 34, 43, 83, 160, 195, 193, 193, 73, 193, 83, - 52, 34, 1064, 34, 1066, 1067, 858, 83, 863, 139, - 140, 141, 142, 65, 144, 139, 140, 141, 142, 1081, - 144, 73, 83, 1085, 1086, 34, 34, 194, 34, 196, - 34, 83, 34, 34, 139, 140, 141, 142, 34, 144, - 34, 34, 34, 1105, 34, 83, 139, 140, 141, 142, - 1112, 144, 34, 139, 140, 141, 142, 34, 144, 34, - 34, 34, 83, 139, 140, 195, 83, 138, 1130, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 83, 138, - 1142, 1047, 1144, 83, 160, 83, 83, 139, 140, 29, - 195, 138, 194, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 195, 43, 34, 195, 193, 195, 160, 195, - 195, 34, 52, 29, 139, 140, 141, 142, 194, 144, - 196, 139, 140, 141, 142, 65, 144, 43, 83, 83, - 1192, 194, 194, 73, 194, 34, 52, 194, 194, 194, - 194, 194, 194, 83, 196, 194, 194, 1209, 194, 65, - 139, 140, 141, 142, 194, 144, 34, 73, 194, 1221, - 194, 139, 140, 141, 142, 194, 144, 83, 34, 34, - 195, 139, 140, 141, 142, 34, 144, 195, 34, 34, - 34, 34, 34, 139, 140, 141, 142, 34, 144, 139, - 140, 141, 142, 1048, 144, 34, 195, 83, 138, 139, - 140, 127, 29, 194, 193, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 193, 34, 43, 195, 194, 127, - 160, 83, 138, 139, 140, 52, 29, 195, 194, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 65, 195, - 43, 194, 194, 194, 160, 195, 73, 194, 194, 52, - 194, 194, 29, 194, 194, 194, 83, 194, 194, 1023, - 127, 1025, 65, 83, 127, 83, 43, 34, 34, 34, - 73, 139, 140, 141, 142, 52, 144, 34, 194, 34, - 83, 34, 139, 140, 141, 142, 34, 144, 65, 138, - 139, 140, 141, 142, 34, 144, 73, 139, 140, 141, - 142, 34, 144, 34, 34, 34, 83, 34, 34, 34, - 34, 34, 139, 140, 34, 34, 34, 34, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 195, 138, 139, - 140, 141, 142, 160, 144, 34, 139, 140, 195, 34, - 138, 34, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 34, 34, 195, 34, 195, 52, 160, 193, 34, - 52, 83, 139, 140, 52, 52, 193, 194, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 0, 52, 83, - 83, 52, 52, 160, 7, 8, 52, 139, 140, 141, - 142, 194, 144, 52, 17, 18, 19, 139, 140, 141, - 142, 24, 144, 194, 83, 28, 52, 30, 31, 193, - 33, 193, 35, 36, 37, 38, 83, 194, 139, 140, - 141, 142, 193, 144, 198, 48, 83, 52, 51, 83, - 139, 140, 141, 142, 52, 144, 52, 139, 140, 141, - 142, 64, 144, 195, 52, 139, 140, 141, 142, 52, - 144, 52, 52, 195, 77, 78, 79, 52, 52, 194, - 83, 139, 140, 141, 142, 34, 144, 139, 140, 141, - 142, 94, 144, 96, 195, 98, 99, 100, 101, 102, - 138, 83, 138, 138, 107, 108, 195, 138, 138, 112, - 113, 114, 115, 195, 83, 193, 83, 138, 83, 122, - 123, 195, 125, 7, 8, 144, 129, 193, 193, 132, - 133, 134, 135, 17, 18, 19, 52, 195, 52, 52, - 24, 52, 52, 195, 28, 52, 30, 31, 52, 33, - 52, 35, 36, 37, 38, 52, 52, 144, 161, 138, - 139, 140, 141, 142, 48, 144, 127, 51, 193, 139, - 140, 141, 142, 193, 144, 193, 139, 140, 141, 142, - 64, 144, 127, 127, 139, 140, 141, 142, 52, 144, - 127, 52, 52, 77, 78, 79, 52, 52, 52, 83, - 139, 140, 141, 142, 52, 144, 139, 140, 141, 142, - 94, 144, 96, 52, 98, 99, 100, 101, 102, 52, - 52, 52, 52, 107, 108, 195, 52, 52, 112, 113, - 114, 115, 195, 52, 52, 52, 52, 5, 122, 123, - 195, 125, 52, 193, 43, 129, 43, 52, 132, 133, - 134, 135, 20, 21, 197, 193, 195, 25, 193, 52, - 194, 83, 195, 139, 140, 141, 142, 195, 144, 195, - 195, 195, 40, 41, 42, 83, 44, 161, 200, 47, - 139, 140, 141, 142, 193, 144, 54, 55, 56, 138, - 193, 59, 60, 138, 62, 63, 83, 138, 66, 67, - 68, 69, 70, 71, 72, 83, 74, 75, 76, 138, - 139, 140, 141, 142, 82, 144, 52, 85, 86, 195, - 88, 52, 90, 195, 34, 34, 193, 95, 139, 140, - 141, 142, 83, 144, 193, 103, 104, 83, 106, 197, - 144, 9, 10, 11, 12, 13, 14, 15, 16, 195, - 118, 119, 20, 21, 83, 195, 124, 25, 193, 83, - 34, 9, 10, 11, 12, 13, 14, 15, 136, 137, - 83, 195, 138, 21, 42, 138, 44, 25, 139, 140, - 141, 142, 193, 144, 193, 139, 140, 141, 142, 138, - 144, 34, 34, 34, 42, 139, 140, 141, 142, 52, - 144, 193, 52, 138, 200, 138, 3, 139, 140, 141, - 142, 138, 144, 193, 193, 197, 34, 85, 86, 139, - 140, 141, 142, 195, 144, 52, 138, 24, 193, 26, - 27, 138, 193, 193, 138, 103, 104, 85, 86, 193, - 197, 52, 139, 140, 141, 142, 131, 144, 138, 193, - 47, 52, 49, 50, 195, 103, 104, 54, 197, 3, - 83, 193, 200, 193, 61, 52, 138, 138, 136, 137, - 44, 138, 1051, 193, 139, 140, 141, 142, 320, 144, - 24, 138, 26, 27, 724, 959, 572, 693, 136, 137, - 87, 722, 89, 90, 91, 92, 193, 317, 312, 548, - 97, 136, 713, 47, 101, 49, 50, 602, 105, 211, - 54, 306, 109, 110, 111, 365, 1056, 61, 115, 116, - 117, 1119, 119, -1, 638, 729, 120, 765, 193, 126, - 139, 140, 141, 142, 557, 144, 139, 140, 141, 142, - 562, 144, -1, 87, -1, 89, 90, 91, 92, 139, - 140, 141, 142, 97, 144, 781, -1, 101, -1, -1, - -1, 105, -1, -1, -1, 109, 110, 111, -1, -1, - -1, 115, 116, 117, -1, 119, 139, 140, 141, 142, - -1, 144, -1, -1, 193, -1, 139, 140, 141, 142, - 193, 144, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 193, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, -1, -1, -1, 186, 187, - 193, 189, 190, 191, 192, -1, -1, -1, -1, -1, - 193 + 705, 913, 707, 708, 709, 710, 711, 1166, 1204, 1168, + 193, 194, 722, 29, 34, 1204, 32, 83, 39, 713, + 1179, 43, 193, 713, 726, 722, 83, 43, 195, 141, + 142, 83, 144, 127, 713, 195, 52, 1196, 52, 193, + 713, 1200, 724, 139, 140, 141, 142, 127, 144, 65, + 141, 142, 964, 144, 198, 127, 1215, 73, 139, 140, + 141, 142, 127, 144, 34, 34, 34, 83, 5, 34, + 34, 34, 686, 34, 1233, 34, 34, 34, 1237, 34, + 34, 34, 138, 20, 139, 140, 141, 142, 195, 144, + 139, 140, 141, 142, 34, 144, 34, 138, 195, 195, + 714, 715, 34, 40, 41, 29, 195, 44, 32, 83, + 47, 34, 83, 727, 195, 193, 730, 54, 193, 43, + 34, 83, 34, 139, 140, 34, 34, 34, 52, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 83, 34, + 195, 65, 83, 34, 160, 82, 195, 34, 34, 73, + 83, 34, 1064, 90, 1066, 1067, 1068, 858, 863, 83, + 34, 139, 140, 141, 142, 34, 144, 34, 34, 106, + 1082, 138, 139, 140, 141, 142, 34, 144, 194, 34, + 196, 118, 34, 139, 140, 141, 142, 124, 144, 34, + 139, 140, 141, 142, 1106, 144, 138, 194, 83, 136, + 137, 1113, 83, 139, 140, 141, 142, 138, 144, 139, + 140, 141, 142, 83, 144, 139, 140, 195, 83, 1131, + 138, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 29, 1143, 1047, 1145, 83, 195, 160, 34, 34, 195, + 139, 140, 141, 142, 43, 144, 195, 139, 140, 141, + 142, 195, 144, 52, 29, 139, 140, 141, 142, 195, + 144, 195, 83, 83, 193, 195, 65, 194, 43, 194, + 194, 34, 196, 194, 73, 194, 34, 52, 194, 194, + 34, 194, 1194, 29, 83, 34, 139, 140, 141, 142, + 65, 144, 194, 194, 194, 34, 195, 43, 73, 1211, + 194, 194, 34, 195, 194, 194, 52, 34, 83, 193, + 34, 1223, 139, 140, 141, 142, 194, 144, 34, 65, + 34, 34, 34, 139, 140, 141, 142, 73, 144, 127, + 139, 140, 141, 142, 195, 144, 83, 83, 194, 193, + 139, 140, 195, 1048, 29, 34, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 194, 194, 194, 43, 194, + 194, 160, 194, 138, 139, 140, 194, 52, 195, 194, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 195, + 65, 1086, 1087, 194, 194, 160, 195, 194, 73, 194, + 194, 127, 138, 139, 140, 194, 83, 196, 83, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 83, 1023, + 127, 1025, 127, 83, 160, 29, 34, 34, 34, 194, + 139, 140, 141, 142, 34, 144, 34, 34, 34, 43, + 139, 140, 141, 142, 34, 144, 34, 34, 52, 139, + 140, 141, 142, 34, 144, 34, 34, 34, 194, 34, + 34, 65, 34, 34, 139, 140, 3, 34, 34, 73, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 83, + 34, 34, 34, 34, 29, 160, 195, 24, 34, 26, + 27, 138, 139, 140, 141, 142, 195, 144, 43, 34, + 34, 139, 140, 141, 142, 195, 144, 52, 195, 138, + 47, 52, 49, 50, 52, 83, 52, 54, 193, 194, + 65, 52, 52, 83, 61, 83, 52, 52, 73, 139, + 140, 141, 142, 52, 144, 139, 140, 52, 83, 193, + 83, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 87, 194, 89, 90, 91, 92, 160, 195, 34, 52, + 97, 193, 193, 83, 101, 193, 83, 52, 105, 52, + 52, 198, 109, 110, 111, 83, 194, 52, 115, 116, + 117, 52, 119, 52, 52, 195, 52, 52, 83, 126, + 194, 34, 83, 83, 139, 140, 138, 144, 138, 138, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 0, + 138, 138, 144, 193, 138, 160, 7, 8, 139, 140, + 141, 142, 83, 144, 193, 52, 17, 18, 19, 139, + 140, 141, 142, 24, 144, 52, 193, 28, 193, 30, + 31, 52, 33, 52, 35, 36, 37, 38, 52, 194, + 139, 140, 141, 142, 52, 144, 52, 48, 52, 52, + 51, 43, 139, 140, 141, 142, 52, 144, 127, 127, + 193, 193, 127, 64, 195, 127, 52, 139, 140, 141, + 142, 52, 144, 52, 52, 195, 77, 78, 79, 52, + 52, 52, 83, 139, 140, 141, 142, 52, 144, 139, + 140, 141, 142, 94, 144, 96, 195, 98, 99, 100, + 101, 102, 52, 52, 52, 52, 107, 108, 195, 52, + 52, 112, 113, 114, 115, 139, 140, 141, 142, 52, + 144, 122, 123, 195, 125, 7, 8, 52, 129, 52, + 52, 132, 133, 134, 135, 17, 18, 19, 52, 195, + 43, 193, 24, 52, 193, 195, 28, 193, 30, 31, + 197, 33, 52, 35, 36, 37, 38, 195, 194, 200, + 161, 138, 139, 140, 141, 142, 48, 144, 83, 51, + 195, 195, 139, 140, 141, 142, 83, 144, 139, 140, + 141, 142, 64, 144, 139, 140, 141, 142, 195, 144, + 195, 193, 138, 138, 83, 77, 78, 79, 138, 83, + 193, 83, 139, 140, 141, 142, 52, 144, 139, 140, + 141, 142, 94, 144, 96, 52, 98, 99, 100, 101, + 102, 195, 34, 34, 193, 107, 108, 83, 195, 83, + 112, 113, 114, 115, 195, 83, 144, 195, 193, 5, + 122, 123, 193, 125, 197, 83, 34, 129, 83, 193, + 132, 133, 134, 135, 20, 21, 193, 195, 138, 25, + 138, 138, 193, 139, 140, 141, 142, 34, 144, 34, + 34, 52, 193, 52, 40, 41, 42, 138, 44, 161, + 200, 47, 139, 140, 141, 142, 138, 144, 54, 55, + 56, 138, 193, 59, 60, 193, 62, 63, 195, 34, + 66, 67, 68, 69, 70, 71, 72, 197, 74, 75, + 76, 138, 138, 52, 193, 52, 82, 193, 193, 85, + 86, 131, 88, 197, 90, 138, 195, 52, 83, 95, + 139, 140, 141, 142, 138, 144, 193, 103, 104, 197, + 106, 52, 193, 9, 10, 11, 12, 13, 14, 15, + 16, 200, 118, 119, 20, 21, 138, 44, 124, 25, + 138, 138, 138, 9, 10, 11, 12, 13, 14, 15, + 136, 137, 1051, 959, 724, 21, 42, 572, 44, 25, + 139, 140, 141, 142, 193, 144, 320, 139, 140, 141, + 142, 722, 144, 306, 693, 312, 42, 139, 140, 141, + 142, 317, 144, 602, 136, 548, 713, 1120, 3, 139, + 140, 141, 142, 365, 144, 211, 638, 1056, 729, 85, + 86, 139, 140, 141, 142, 765, 144, 120, 781, 24, + -1, 26, 27, 557, 193, -1, 562, 103, 104, 85, + 86, 193, -1, -1, 139, 140, 141, 142, -1, 144, + -1, 193, 47, -1, 49, 50, -1, 103, 104, 54, + -1, -1, -1, 193, -1, -1, 61, -1, -1, -1, + 136, 137, -1, -1, -1, 193, 139, 140, 141, 142, + -1, 144, 139, 140, 141, 142, -1, 144, -1, -1, + 136, 137, 87, -1, 89, 90, 91, 92, 193, -1, + -1, -1, 97, -1, -1, -1, 101, -1, -1, -1, + 105, -1, -1, -1, 109, 110, 111, -1, -1, -1, + 115, 116, 117, -1, 119, -1, 139, 140, 141, 142, + 193, 144, -1, -1, -1, -1, 193, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, -1, -1, + -1, 186, 187, -1, 189, 190, 191, 192, 138, 139, + 140, 141, 142, -1, 144, -1, 139, 140, 141, 142, + 193, 144, 139, 140, 141, 142, -1, 144 }; /* STOS_[STATE-NUM] -- The (internal number of the) accessing @@ -3344,7 +3351,7 @@ namespace yy 221, 221, 221, 221, 221, 221, 195, 221, 221, 221, 221, 221, 221, 83, 193, 138, 221, 52, 329, 52, 52, 52, 52, 52, 52, 329, 52, 52, 52, 193, - 265, 127, 221, 221, 221, 266, 241, 241, 241, 241, + 265, 127, 241, 241, 241, 266, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 195, 241, 241, 241, 241, 241, 193, 287, 193, 265, 193, 265, 221, 193, 199, 43, 52, 138, 194, 261, 193, 255, 193, 264, @@ -3357,24 +3364,24 @@ namespace yy 193, 83, 83, 43, 52, 193, 138, 138, 83, 138, 281, 83, 193, 281, 52, 52, 195, 226, 34, 241, 34, 138, 195, 193, 236, 235, 138, 193, 194, 312, - 83, 221, 83, 101, 121, 195, 138, 138, 195, 195, + 83, 221, 83, 101, 121, 195, 138, 138, 138, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 221, 83, 193, 193, 195, 138, 138, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 193, 193, - 195, 252, 193, 43, 52, 194, 221, 193, 193, 197, - 83, 195, 34, 193, 193, 265, 193, 265, 83, 138, - 195, 273, 281, 280, 281, 138, 281, 138, 138, 193, - 34, 32, 241, 193, 329, 232, 237, 239, 239, 239, - 311, 281, 34, 193, 34, 52, 248, 221, 221, 221, - 193, 193, 221, 221, 221, 221, 195, 52, 303, 221, - 193, 193, 200, 289, 138, 138, 138, 281, 193, 281, - 281, 221, 193, 193, 32, 32, 32, 194, 195, 221, - 221, 197, 52, 138, 193, 193, 195, 195, 193, 195, - 195, 195, 34, 193, 138, 281, 273, 281, 138, 193, - 193, 193, 239, 281, 193, 193, 52, 197, 52, 131, - 221, 200, 281, 138, 138, 281, 32, 195, 52, 197, - 221, 249, 193, 83, 281, 280, 193, 52, 193, 221, - 200, 138, 138, 281, 273, 138, 281 + 195, 221, 83, 193, 193, 195, 138, 138, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 193, + 193, 195, 252, 193, 43, 52, 194, 221, 193, 193, + 197, 83, 195, 34, 193, 193, 265, 193, 265, 83, + 138, 195, 273, 281, 280, 281, 138, 281, 138, 138, + 193, 34, 32, 241, 193, 329, 232, 237, 239, 239, + 239, 311, 281, 34, 193, 34, 52, 248, 221, 221, + 221, 221, 193, 193, 221, 241, 241, 221, 195, 52, + 303, 221, 193, 193, 200, 289, 138, 138, 138, 281, + 193, 281, 281, 221, 193, 193, 32, 32, 32, 194, + 195, 221, 221, 197, 52, 138, 193, 193, 195, 195, + 193, 195, 195, 195, 34, 193, 138, 281, 273, 281, + 138, 193, 193, 193, 239, 281, 193, 193, 52, 197, + 52, 131, 221, 200, 281, 138, 138, 281, 32, 195, + 52, 197, 221, 249, 193, 83, 281, 280, 193, 52, + 193, 221, 200, 138, 138, 281, 273, 138, 281 }; #if YYDEBUG @@ -3422,56 +3429,56 @@ namespace yy 217, 218, 218, 219, 219, 220, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 222, 223, 223, 224, 225, 226, 226, 227, 228, - 229, 229, 230, 231, 231, 232, 232, 232, 232, 232, - 234, 233, 235, 233, 236, 233, 237, 233, 238, 233, - 239, 239, 239, 239, 240, 240, 241, 241, 241, 241, + 221, 222, 222, 223, 223, 224, 225, 226, 226, 227, + 228, 229, 229, 230, 231, 231, 232, 232, 232, 232, + 232, 234, 233, 235, 233, 236, 233, 237, 233, 238, + 233, 239, 239, 239, 239, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 242, 243, 243, 244, 245, 246, 246, 247, 247, 247, - 247, 247, 248, 248, 248, 248, 248, 248, 249, 249, - 250, 251, 251, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 253, 253, 254, 254, 255, 256, 256, 257, - 257, 258, 259, 259, 260, 260, 261, 261, 262, 262, - 262, 262, 263, 263, 264, 264, 264, 264, 264, 264, + 241, 242, 243, 243, 244, 245, 246, 246, 247, 247, + 247, 247, 247, 248, 248, 248, 248, 248, 248, 249, + 249, 250, 251, 251, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 253, 253, 254, 254, 255, 256, 256, + 257, 257, 258, 259, 259, 260, 260, 261, 261, 262, + 262, 262, 262, 263, 263, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, - 264, 264, 264, 264, 264, 264, 264, 265, 265, 265, - 265, 265, 265, 266, 266, 266, 267, 267, 267, 268, - 269, 269, 270, 271, 271, 271, 272, 272, 272, 272, - 272, 273, 273, 273, 273, 274, 275, 275, 276, 276, - 276, 277, 278, 278, 279, 279, 279, 280, 280, 280, - 280, 280, 281, 281, 281, 281, 281, 281, 282, 282, - 282, 282, 283, 283, 284, 284, 284, 284, 284, 284, + 264, 264, 264, 264, 264, 264, 264, 264, 265, 265, + 265, 265, 265, 265, 266, 266, 266, 267, 267, 267, + 268, 269, 269, 270, 271, 271, 271, 272, 272, 272, + 272, 272, 273, 273, 273, 273, 274, 275, 275, 276, + 276, 276, 277, 278, 278, 279, 279, 279, 280, 280, + 280, 280, 280, 281, 281, 281, 281, 281, 281, 282, + 282, 282, 282, 283, 283, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 285, 285, 286, 286, 287, 287, 287, + 284, 284, 284, 284, 285, 285, 286, 286, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 288, 288, 289, 289, 290, 290, 291, 292, 293, 293, - 294, 295, 296, 297, 297, 297, 297, 298, 299, 299, - 299, 299, 300, 301, 301, 302, 302, 302, 303, 303, - 303, 304, 304, 305, 305, 305, 305, 305, 305, 306, - 306, 306, 306, 306, 306, 307, 308, 308, 309, 309, - 309, 310, 310, 310, 310, 311, 311, 312, 312, 312, - 312, 312, 314, 315, 313, 316, 316, 316, 316, 317, - 317, 318, 318, 319, 319, 319, 319, 319, 319, 319, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 321, 321, 322, 322, 323, 323, 323, 323, 324, 324, - 325, 325, 326, 326, 327, 327, 328, 328, 328, 328, + 287, 288, 288, 289, 289, 290, 290, 291, 292, 293, + 293, 294, 295, 296, 297, 297, 297, 297, 298, 299, + 299, 299, 299, 300, 301, 301, 302, 302, 302, 303, + 303, 303, 304, 304, 305, 305, 305, 305, 305, 305, + 306, 306, 306, 306, 306, 306, 307, 308, 308, 309, + 309, 309, 310, 310, 310, 310, 311, 311, 312, 312, + 312, 312, 312, 314, 315, 313, 316, 316, 316, 316, + 317, 317, 318, 318, 319, 319, 319, 319, 319, 319, + 319, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 321, 321, 322, 322, 323, 323, 323, 323, 324, + 324, 325, 325, 326, 326, 327, 327, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 329, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 351, 352, 353, - 354, 355, 356, 357, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 428, 429, 429, - 430 + 328, 328, 328, 328, 329, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 351, 352, + 353, 354, 355, 356, 357, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 428, 429, + 429, 430 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -3489,56 +3496,56 @@ namespace yy 4, 3, 4, 3, 4, 4, 3, 1, 1, 1, 3, 3, 3, 3, 3, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, - 4, 1, 4, 7, 3, 4, 2, 1, 4, 4, - 2, 1, 7, 3, 1, 1, 1, 1, 1, 1, - 0, 5, 0, 8, 0, 8, 0, 10, 0, 8, - 2, 2, 1, 1, 4, 2, 3, 1, 1, 1, - 3, 3, 3, 3, 3, 2, 2, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, - 5, 1, 4, 4, 4, 2, 1, 9, 6, 5, - 7, 7, 2, 4, 3, 5, 3, 1, 2, 1, - 6, 3, 1, 5, 3, 3, 4, 2, 2, 3, - 1, 1, 2, 5, 3, 1, 1, 2, 5, 3, - 1, 1, 2, 5, 3, 1, 1, 1, 2, 5, - 3, 6, 3, 1, 1, 1, 1, 1, 1, 1, + 4, 1, 3, 4, 7, 3, 4, 2, 1, 4, + 4, 2, 1, 7, 3, 1, 1, 1, 1, 1, + 1, 0, 5, 0, 8, 0, 8, 0, 10, 0, + 8, 2, 2, 1, 1, 4, 2, 3, 1, 1, + 1, 3, 3, 3, 3, 3, 2, 2, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, + 6, 5, 1, 4, 4, 4, 2, 1, 9, 6, + 5, 7, 7, 2, 4, 3, 5, 3, 1, 2, + 1, 6, 3, 1, 5, 3, 3, 4, 2, 2, + 3, 1, 1, 2, 5, 3, 1, 1, 2, 5, + 3, 1, 1, 2, 5, 3, 1, 1, 1, 2, + 5, 3, 6, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 4, 3, - 5, 1, 3, 2, 2, 1, 2, 2, 1, 4, - 2, 1, 4, 2, 1, 4, 3, 5, 9, 1, - 5, 3, 5, 7, 9, 4, 2, 1, 5, 7, - 4, 4, 2, 1, 7, 9, 6, 1, 1, 1, - 1, 1, 0, 1, 1, 1, 2, 2, 2, 5, - 3, 6, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, + 3, 5, 1, 3, 2, 2, 1, 2, 2, 1, + 4, 2, 1, 4, 2, 1, 4, 3, 5, 9, + 1, 5, 3, 5, 7, 9, 4, 2, 1, 5, + 7, 4, 4, 2, 1, 7, 9, 6, 1, 1, + 1, 1, 1, 0, 1, 1, 1, 2, 2, 2, + 5, 3, 6, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 5, 6, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 5, 6, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 5, 6, 7, 5, 1, 3, 3, 4, 2, 1, - 5, 3, 4, 4, 6, 3, 5, 3, 2, 5, - 3, 6, 4, 2, 1, 5, 7, 9, 0, 3, - 3, 2, 5, 5, 6, 3, 7, 8, 5, 5, - 6, 3, 7, 8, 5, 6, 3, 1, 1, 1, - 1, 1, 3, 4, 6, 1, 2, 1, 1, 1, - 1, 1, 0, 0, 5, 2, 5, 3, 6, 3, + 1, 5, 6, 7, 5, 1, 3, 3, 4, 2, + 1, 5, 3, 4, 4, 6, 3, 5, 3, 2, + 5, 3, 6, 4, 2, 1, 5, 7, 9, 0, + 3, 3, 2, 5, 5, 6, 3, 7, 8, 5, + 5, 6, 3, 7, 8, 5, 6, 3, 1, 1, + 1, 1, 1, 3, 4, 6, 1, 2, 1, 1, + 1, 1, 1, 0, 0, 5, 2, 5, 3, 6, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 1, 3, 6, 1, 1, 1, 1, 3, + 1, 3, 6, 2, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 1, 3, 6, 1, 1, 1, 1, 3, 1, - 3, 6, 2, 5, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 3, 3, 1, 3, - 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, - 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 1, 1, 3, 3, 3, 3, 5, - 3, 3, 3, 1, 3, 3, 3, 1, 1, 1, - 1, 1, 3, 1, 1, 1, 1, 3, 3, 3, - 3, 1, 1, 3, 3, 3, 1, 1, 1, 3, - 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 3, 3, 3, 1, + 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, + 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, + 5, 3, 3, 3, 1, 3, 3, 3, 1, 1, + 1, 1, 1, 3, 1, 1, 1, 1, 3, 3, + 3, 3, 1, 1, 3, 3, 3, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 1, 3, 2, 2, - 2 + 3, 3, 3, 3, 3, 3, 3, 1, 3, 2, + 2, 2 }; #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE @@ -3685,178 +3692,179 @@ namespace yy 195, -1, 160, 194, 221, 195, -1, 29, 194, 221, 195, -1, 65, 194, 221, 138, 221, 195, -1, 73, 194, 221, 138, 221, 195, -1, 83, 194, 222, 195, - -1, 221, -1, 51, 193, 226, 32, -1, 51, 194, - 224, 195, 193, 226, 32, -1, 39, 34, 83, -1, - 33, 193, 226, 32, -1, 226, 227, -1, 227, -1, - 83, 34, 221, 193, -1, 48, 193, 229, 32, -1, - 229, 230, -1, 230, -1, 83, 194, 266, 195, 34, - 221, 193, -1, 231, 138, 232, -1, 232, -1, 58, - -1, 46, -1, 84, -1, 345, -1, 346, -1, -1, - 77, 193, 234, 239, 32, -1, -1, 77, 194, 333, - 195, 193, 235, 239, 32, -1, -1, 77, 194, 130, - 195, 193, 236, 239, 32, -1, -1, 77, 194, 120, - 138, 231, 195, 237, 193, 239, 32, -1, -1, 77, - 194, 120, 195, 238, 193, 239, 32, -1, 239, 240, - -1, 239, 242, -1, 240, -1, 242, -1, 241, 34, - 241, 193, -1, 241, 193, -1, 194, 241, 195, -1, - 243, -1, 43, -1, 52, -1, 241, 140, 241, -1, - 241, 139, 241, -1, 241, 141, 241, -1, 241, 142, - 241, -1, 241, 144, 241, -1, 139, 241, -1, 140, - 241, -1, 145, 194, 241, 195, -1, 146, 194, 241, - 195, -1, 147, 194, 241, 195, -1, 148, 194, 241, - 195, -1, 149, 194, 241, 195, -1, 150, 194, 241, - 195, -1, 151, 194, 241, 195, -1, 152, 194, 241, - 195, -1, 153, 194, 241, 195, -1, 160, 194, 241, - 195, -1, 29, 194, 221, 195, -1, 65, 194, 221, - 138, 221, 195, -1, 73, 194, 221, 138, 221, 195, - -1, 196, 83, 34, 241, 193, -1, 83, -1, 83, - 194, 266, 195, -1, 113, 193, 246, 32, -1, 79, - 193, 246, 32, -1, 246, 247, -1, 247, -1, 132, - 83, 193, 101, 248, 193, 131, 249, 193, -1, 132, - 83, 193, 121, 221, 193, -1, 132, 83, 34, 221, - 193, -1, 132, 83, 138, 83, 34, 221, 193, -1, - 22, 83, 138, 83, 34, 221, 193, -1, 248, 52, - -1, 248, 52, 197, 52, -1, 248, 138, 52, -1, - 248, 138, 52, 197, 52, -1, 52, 197, 52, -1, - 52, -1, 249, 221, -1, 221, -1, 114, 34, 198, - 251, 199, 193, -1, 251, 193, 252, -1, 252, -1, - 252, 138, 194, 221, 195, -1, 252, 138, 43, -1, - 252, 138, 52, -1, 252, 194, 221, 195, -1, 252, - 43, -1, 252, 52, -1, 194, 221, 195, -1, 43, - -1, 52, -1, 122, 193, -1, 122, 194, 254, 195, - 193, -1, 254, 138, 255, -1, 255, -1, 331, -1, - 19, 193, -1, 19, 194, 257, 195, 193, -1, 257, - 138, 258, -1, 258, -1, 331, -1, 115, 193, -1, - 115, 194, 260, 195, 193, -1, 260, 138, 261, -1, - 261, -1, 344, -1, 350, -1, 123, 193, -1, 123, - 194, 263, 195, 193, -1, 123, 265, 193, -1, 123, - 194, 263, 195, 265, 193, -1, 263, 138, 264, -1, - 264, -1, 330, -1, 331, -1, 332, -1, 333, -1, - 334, -1, 335, -1, 336, -1, 337, -1, 338, -1, - 339, -1, 340, -1, 357, -1, 341, -1, 379, -1, - 342, -1, 343, -1, 344, -1, 345, -1, 347, -1, - 348, -1, 349, -1, 383, -1, 384, -1, 265, 83, - -1, 265, 83, 34, 83, -1, 265, 138, 83, -1, - 265, 138, 83, 34, 83, -1, 83, -1, 83, 34, - 83, -1, 140, 52, -1, 139, 52, -1, 52, -1, - 140, 43, -1, 139, 43, -1, 43, -1, 36, 193, - 269, 32, -1, 269, 270, -1, 270, -1, 271, 138, - 272, 193, -1, 121, 83, -1, 83, -1, 22, 83, - 138, 83, -1, 280, 138, 273, -1, 281, 138, 280, - 138, 273, -1, 281, 138, 281, 138, 281, 138, 280, - 138, 273, -1, 281, -1, 281, 138, 281, 138, 281, - -1, 281, 138, 281, -1, 281, 138, 281, 138, 281, - -1, 281, 138, 281, 138, 281, 138, 281, -1, 281, - 138, 281, 138, 281, 138, 281, 138, 281, -1, 38, - 193, 275, 32, -1, 275, 276, -1, 276, -1, 121, - 83, 138, 281, 193, -1, 22, 83, 138, 83, 138, - 281, 193, -1, 83, 138, 281, 193, -1, 37, 193, - 278, 32, -1, 278, 279, -1, 279, -1, 121, 83, - 138, 281, 138, 281, 193, -1, 22, 83, 138, 83, - 138, 281, 138, 281, 193, -1, 83, 138, 281, 138, - 281, 193, -1, 6, -1, 45, -1, 93, -1, 53, - -1, 128, -1, -1, 52, -1, 43, -1, 83, -1, - 139, 52, -1, 139, 43, -1, 35, 193, -1, 35, - 194, 283, 195, 193, -1, 35, 265, 193, -1, 35, - 194, 283, 195, 265, 193, -1, 283, 138, 284, -1, - 284, -1, 350, -1, 351, -1, 352, -1, 353, -1, - 354, -1, 355, -1, 356, -1, 357, -1, 358, -1, - 359, -1, 360, -1, 361, -1, 362, -1, 363, -1, - 364, -1, 365, -1, 366, -1, 367, -1, 368, -1, - 369, -1, 370, -1, 371, -1, 372, -1, 373, -1, - 341, -1, 374, -1, 375, -1, 376, -1, 377, -1, - 378, -1, 380, -1, 381, -1, 385, -1, 386, -1, - 387, -1, 331, -1, 388, -1, 389, -1, 390, -1, - 107, 194, 286, 195, 193, -1, 107, 194, 286, 195, - 265, 193, -1, 286, 138, 287, -1, 287, -1, 357, - -1, 358, -1, 367, -1, 373, -1, 341, -1, 374, - -1, 375, -1, 376, -1, 377, -1, 378, -1, 385, - -1, 386, -1, 387, -1, 108, 194, 286, 195, 193, - -1, 108, 194, 286, 195, 265, 193, -1, 200, 83, - 200, 138, 200, 83, 200, -1, 200, 83, 200, 138, - 281, -1, 289, -1, 290, 138, 289, -1, 135, 265, - 193, -1, 94, 193, 293, 32, -1, 293, 294, -1, - 294, -1, 83, 194, 221, 195, 193, -1, 129, 265, - 193, -1, 96, 193, 297, 32, -1, 297, 83, 221, - 193, -1, 297, 83, 138, 83, 221, 193, -1, 83, - 221, 193, -1, 83, 138, 83, 221, 193, -1, 99, - 265, 193, -1, 98, 193, -1, 98, 194, 264, 195, - 193, -1, 98, 265, 193, -1, 98, 194, 264, 195, - 265, 193, -1, 18, 193, 301, 32, -1, 301, 302, - -1, 302, -1, 83, 303, 34, 221, 193, -1, 83, - 138, 83, 303, 34, 221, 193, -1, 4, 83, 194, - 52, 195, 303, 34, 221, 193, -1, -1, 194, 52, - 195, -1, 194, 43, 195, -1, 17, 193, -1, 17, - 194, 23, 195, 193, -1, 31, 194, 83, 195, 193, - -1, 31, 194, 83, 195, 265, 193, -1, 31, 83, - 193, -1, 31, 194, 83, 201, 83, 195, 193, -1, - 31, 194, 83, 201, 83, 195, 265, 193, -1, 31, - 83, 201, 83, 193, -1, 30, 194, 83, 195, 193, - -1, 30, 194, 83, 195, 265, 193, -1, 30, 83, - 193, -1, 30, 194, 83, 201, 83, 195, 193, -1, - 30, 194, 83, 201, 83, 195, 265, 193, -1, 30, - 83, 201, 83, 193, -1, 78, 194, 308, 195, 310, - 193, -1, 308, 138, 309, -1, 309, -1, 382, -1, - 383, -1, 384, -1, 311, -1, 310, 138, 311, -1, - 311, 194, 281, 195, -1, 310, 138, 311, 194, 281, - 195, -1, 312, -1, 311, 312, -1, 83, -1, 202, - -1, 141, -1, 197, -1, 201, -1, -1, -1, 102, - 314, 241, 315, 193, -1, 125, 193, -1, 125, 194, - 317, 195, 193, -1, 125, 265, 193, -1, 125, 194, - 317, 195, 265, 193, -1, 317, 138, 318, -1, 318, - -1, 264, -1, 391, -1, 392, -1, 393, -1, 394, - -1, 395, -1, 396, -1, 397, -1, 398, -1, 319, - -1, 350, -1, 385, -1, 386, -1, 352, -1, 354, - -1, 351, -1, 353, -1, 388, -1, 389, -1, 320, - 138, 321, -1, 320, -1, 7, 52, 193, -1, 7, - 194, 321, 195, 52, 193, -1, 320, -1, 375, -1, - 358, -1, 399, -1, 323, 138, 324, -1, 323, -1, - 8, 52, 193, -1, 8, 194, 324, 195, 52, 193, - -1, 161, 193, -1, 161, 194, 327, 195, 193, -1, - 328, 138, 327, -1, 328, -1, 400, -1, 401, -1, - 402, -1, 403, -1, 404, -1, 405, -1, 406, -1, - 407, -1, 408, -1, 409, -1, 410, -1, 411, -1, - 412, -1, 413, -1, 414, -1, 415, -1, 416, -1, - 417, -1, 419, -1, 420, -1, 421, -1, 422, -1, - 423, -1, 424, -1, 425, -1, 426, -1, 418, -1, - 52, -1, 43, -1, 26, 34, 52, -1, 119, 34, - 52, -1, 116, 34, 52, -1, 61, -1, 97, 34, - 52, -1, 111, 34, 52, -1, 27, 34, 52, -1, - 3, 34, 52, -1, 87, -1, 89, -1, 91, -1, - 54, 34, 52, -1, 49, 34, 52, -1, 50, 34, - 52, -1, 101, 34, 52, -1, 24, 34, 329, -1, - 64, 34, 329, -1, 115, -1, 117, 34, 52, -1, - 109, 34, 329, -1, 25, 34, 83, -1, 85, 34, - 430, -1, 85, 34, 52, -1, 42, 34, 52, -1, - 103, 34, 52, -1, 104, 34, 52, -1, 59, 34, - 52, -1, 60, 34, 52, -1, 90, -1, 47, -1, - 20, 34, 329, -1, 71, 34, 52, -1, 66, 34, - 329, -1, 68, 34, 329, -1, 95, 34, 194, 290, - 195, -1, 67, 34, 329, -1, 76, 34, 83, -1, - 75, 34, 52, -1, 74, -1, 106, 34, 329, -1, - 69, 34, 52, -1, 70, 34, 52, -1, 62, -1, - 63, -1, 88, -1, 5, -1, 124, -1, 44, 34, - 52, -1, 118, -1, 82, -1, 41, -1, 110, -1, - 55, 34, 52, -1, 56, 34, 52, -1, 80, 34, - 57, -1, 80, 34, 81, -1, 105, -1, 92, -1, - 136, 34, 83, -1, 137, 34, 427, -1, 40, 34, - 430, -1, 21, -1, 86, -1, 72, -1, 126, 34, - 329, -1, 14, 34, 267, -1, 9, 34, 329, -1, - 11, 34, 267, -1, 12, 34, 329, -1, 13, 34, - 52, -1, 10, -1, 15, 34, 52, -1, 16, 34, - 52, -1, 162, 34, 52, -1, 163, 34, 52, -1, - 164, 34, 52, -1, 165, 34, 52, -1, 166, 34, - 52, -1, 167, 34, 52, -1, 168, 34, 52, -1, - 169, 34, 52, -1, 170, 34, 52, -1, 171, 34, - 52, -1, 172, 34, 52, -1, 173, 34, 52, -1, - 174, 34, 52, -1, 175, 34, 52, -1, 176, 34, - 52, -1, 177, 34, 329, -1, 178, 34, 329, -1, - 179, 34, 52, -1, 180, 34, 430, -1, 181, 34, - 329, -1, 182, 34, 329, -1, 186, 34, 52, -1, - 187, 34, 52, -1, 189, 34, 329, -1, 190, 34, - 52, -1, 191, 34, 329, -1, 192, 34, 329, -1, - 83, 197, 83, -1, 52, -1, 52, 197, 52, -1, - 198, 428, -1, 429, 428, -1, 429, 199, -1 + -1, 221, -1, 222, 138, 221, -1, 51, 193, 226, + 32, -1, 51, 194, 224, 195, 193, 226, 32, -1, + 39, 34, 83, -1, 33, 193, 226, 32, -1, 226, + 227, -1, 227, -1, 83, 34, 221, 193, -1, 48, + 193, 229, 32, -1, 229, 230, -1, 230, -1, 83, + 194, 266, 195, 34, 221, 193, -1, 231, 138, 232, + -1, 232, -1, 58, -1, 46, -1, 84, -1, 345, + -1, 346, -1, -1, 77, 193, 234, 239, 32, -1, + -1, 77, 194, 333, 195, 193, 235, 239, 32, -1, + -1, 77, 194, 130, 195, 193, 236, 239, 32, -1, + -1, 77, 194, 120, 138, 231, 195, 237, 193, 239, + 32, -1, -1, 77, 194, 120, 195, 238, 193, 239, + 32, -1, 239, 240, -1, 239, 242, -1, 240, -1, + 242, -1, 241, 34, 241, 193, -1, 241, 193, -1, + 194, 241, 195, -1, 243, -1, 43, -1, 52, -1, + 241, 140, 241, -1, 241, 139, 241, -1, 241, 141, + 241, -1, 241, 142, 241, -1, 241, 144, 241, -1, + 139, 241, -1, 140, 241, -1, 145, 194, 241, 195, + -1, 146, 194, 241, 195, -1, 147, 194, 241, 195, + -1, 148, 194, 241, 195, -1, 149, 194, 241, 195, + -1, 150, 194, 241, 195, -1, 151, 194, 241, 195, + -1, 152, 194, 241, 195, -1, 153, 194, 241, 195, + -1, 160, 194, 241, 195, -1, 29, 194, 241, 195, + -1, 65, 194, 241, 138, 241, 195, -1, 73, 194, + 241, 138, 241, 195, -1, 196, 83, 34, 241, 193, + -1, 83, -1, 83, 194, 266, 195, -1, 113, 193, + 246, 32, -1, 79, 193, 246, 32, -1, 246, 247, + -1, 247, -1, 132, 83, 193, 101, 248, 193, 131, + 249, 193, -1, 132, 83, 193, 121, 221, 193, -1, + 132, 83, 34, 221, 193, -1, 132, 83, 138, 83, + 34, 221, 193, -1, 22, 83, 138, 83, 34, 221, + 193, -1, 248, 52, -1, 248, 52, 197, 52, -1, + 248, 138, 52, -1, 248, 138, 52, 197, 52, -1, + 52, 197, 52, -1, 52, -1, 249, 221, -1, 221, + -1, 114, 34, 198, 251, 199, 193, -1, 251, 193, + 252, -1, 252, -1, 252, 138, 194, 221, 195, -1, + 252, 138, 43, -1, 252, 138, 52, -1, 252, 194, + 221, 195, -1, 252, 43, -1, 252, 52, -1, 194, + 221, 195, -1, 43, -1, 52, -1, 122, 193, -1, + 122, 194, 254, 195, 193, -1, 254, 138, 255, -1, + 255, -1, 331, -1, 19, 193, -1, 19, 194, 257, + 195, 193, -1, 257, 138, 258, -1, 258, -1, 331, + -1, 115, 193, -1, 115, 194, 260, 195, 193, -1, + 260, 138, 261, -1, 261, -1, 344, -1, 350, -1, + 123, 193, -1, 123, 194, 263, 195, 193, -1, 123, + 265, 193, -1, 123, 194, 263, 195, 265, 193, -1, + 263, 138, 264, -1, 264, -1, 330, -1, 331, -1, + 332, -1, 333, -1, 334, -1, 335, -1, 336, -1, + 337, -1, 338, -1, 339, -1, 340, -1, 357, -1, + 341, -1, 379, -1, 342, -1, 343, -1, 344, -1, + 345, -1, 347, -1, 348, -1, 349, -1, 383, -1, + 384, -1, 265, 83, -1, 265, 83, 34, 83, -1, + 265, 138, 83, -1, 265, 138, 83, 34, 83, -1, + 83, -1, 83, 34, 83, -1, 140, 52, -1, 139, + 52, -1, 52, -1, 140, 43, -1, 139, 43, -1, + 43, -1, 36, 193, 269, 32, -1, 269, 270, -1, + 270, -1, 271, 138, 272, 193, -1, 121, 83, -1, + 83, -1, 22, 83, 138, 83, -1, 280, 138, 273, + -1, 281, 138, 280, 138, 273, -1, 281, 138, 281, + 138, 281, 138, 280, 138, 273, -1, 281, -1, 281, + 138, 281, 138, 281, -1, 281, 138, 281, -1, 281, + 138, 281, 138, 281, -1, 281, 138, 281, 138, 281, + 138, 281, -1, 281, 138, 281, 138, 281, 138, 281, + 138, 281, -1, 38, 193, 275, 32, -1, 275, 276, + -1, 276, -1, 121, 83, 138, 281, 193, -1, 22, + 83, 138, 83, 138, 281, 193, -1, 83, 138, 281, + 193, -1, 37, 193, 278, 32, -1, 278, 279, -1, + 279, -1, 121, 83, 138, 281, 138, 281, 193, -1, + 22, 83, 138, 83, 138, 281, 138, 281, 193, -1, + 83, 138, 281, 138, 281, 193, -1, 6, -1, 45, + -1, 93, -1, 53, -1, 128, -1, -1, 52, -1, + 43, -1, 83, -1, 139, 52, -1, 139, 43, -1, + 35, 193, -1, 35, 194, 283, 195, 193, -1, 35, + 265, 193, -1, 35, 194, 283, 195, 265, 193, -1, + 283, 138, 284, -1, 284, -1, 350, -1, 351, -1, + 352, -1, 353, -1, 354, -1, 355, -1, 356, -1, + 357, -1, 358, -1, 359, -1, 360, -1, 361, -1, + 362, -1, 363, -1, 364, -1, 365, -1, 366, -1, + 367, -1, 368, -1, 369, -1, 370, -1, 371, -1, + 372, -1, 373, -1, 341, -1, 374, -1, 375, -1, + 376, -1, 377, -1, 378, -1, 380, -1, 381, -1, + 385, -1, 386, -1, 387, -1, 331, -1, 388, -1, + 389, -1, 390, -1, 107, 194, 286, 195, 193, -1, + 107, 194, 286, 195, 265, 193, -1, 286, 138, 287, + -1, 287, -1, 357, -1, 358, -1, 367, -1, 373, + -1, 341, -1, 374, -1, 375, -1, 376, -1, 377, + -1, 378, -1, 385, -1, 386, -1, 387, -1, 108, + 194, 286, 195, 193, -1, 108, 194, 286, 195, 265, + 193, -1, 200, 83, 200, 138, 200, 83, 200, -1, + 200, 83, 200, 138, 281, -1, 289, -1, 290, 138, + 289, -1, 135, 265, 193, -1, 94, 193, 293, 32, + -1, 293, 294, -1, 294, -1, 83, 194, 221, 195, + 193, -1, 129, 265, 193, -1, 96, 193, 297, 32, + -1, 297, 83, 221, 193, -1, 297, 83, 138, 83, + 221, 193, -1, 83, 221, 193, -1, 83, 138, 83, + 221, 193, -1, 99, 265, 193, -1, 98, 193, -1, + 98, 194, 264, 195, 193, -1, 98, 265, 193, -1, + 98, 194, 264, 195, 265, 193, -1, 18, 193, 301, + 32, -1, 301, 302, -1, 302, -1, 83, 303, 34, + 221, 193, -1, 83, 138, 83, 303, 34, 221, 193, + -1, 4, 83, 194, 52, 195, 303, 34, 221, 193, + -1, -1, 194, 52, 195, -1, 194, 43, 195, -1, + 17, 193, -1, 17, 194, 23, 195, 193, -1, 31, + 194, 83, 195, 193, -1, 31, 194, 83, 195, 265, + 193, -1, 31, 83, 193, -1, 31, 194, 83, 201, + 83, 195, 193, -1, 31, 194, 83, 201, 83, 195, + 265, 193, -1, 31, 83, 201, 83, 193, -1, 30, + 194, 83, 195, 193, -1, 30, 194, 83, 195, 265, + 193, -1, 30, 83, 193, -1, 30, 194, 83, 201, + 83, 195, 193, -1, 30, 194, 83, 201, 83, 195, + 265, 193, -1, 30, 83, 201, 83, 193, -1, 78, + 194, 308, 195, 310, 193, -1, 308, 138, 309, -1, + 309, -1, 382, -1, 383, -1, 384, -1, 311, -1, + 310, 138, 311, -1, 311, 194, 281, 195, -1, 310, + 138, 311, 194, 281, 195, -1, 312, -1, 311, 312, + -1, 83, -1, 202, -1, 141, -1, 197, -1, 201, + -1, -1, -1, 102, 314, 241, 315, 193, -1, 125, + 193, -1, 125, 194, 317, 195, 193, -1, 125, 265, + 193, -1, 125, 194, 317, 195, 265, 193, -1, 317, + 138, 318, -1, 318, -1, 264, -1, 391, -1, 392, + -1, 393, -1, 394, -1, 395, -1, 396, -1, 397, + -1, 398, -1, 319, -1, 350, -1, 385, -1, 386, + -1, 352, -1, 354, -1, 351, -1, 353, -1, 388, + -1, 389, -1, 320, 138, 321, -1, 320, -1, 7, + 52, 193, -1, 7, 194, 321, 195, 52, 193, -1, + 320, -1, 375, -1, 358, -1, 399, -1, 323, 138, + 324, -1, 323, -1, 8, 52, 193, -1, 8, 194, + 324, 195, 52, 193, -1, 161, 193, -1, 161, 194, + 327, 195, 193, -1, 328, 138, 327, -1, 328, -1, + 400, -1, 401, -1, 402, -1, 403, -1, 404, -1, + 405, -1, 406, -1, 407, -1, 408, -1, 409, -1, + 410, -1, 411, -1, 412, -1, 413, -1, 414, -1, + 415, -1, 416, -1, 417, -1, 419, -1, 420, -1, + 421, -1, 422, -1, 423, -1, 424, -1, 425, -1, + 426, -1, 418, -1, 52, -1, 43, -1, 26, 34, + 52, -1, 119, 34, 52, -1, 116, 34, 52, -1, + 61, -1, 97, 34, 52, -1, 111, 34, 52, -1, + 27, 34, 52, -1, 3, 34, 52, -1, 87, -1, + 89, -1, 91, -1, 54, 34, 52, -1, 49, 34, + 52, -1, 50, 34, 52, -1, 101, 34, 52, -1, + 24, 34, 329, -1, 64, 34, 329, -1, 115, -1, + 117, 34, 52, -1, 109, 34, 329, -1, 25, 34, + 83, -1, 85, 34, 430, -1, 85, 34, 52, -1, + 42, 34, 52, -1, 103, 34, 52, -1, 104, 34, + 52, -1, 59, 34, 52, -1, 60, 34, 52, -1, + 90, -1, 47, -1, 20, 34, 329, -1, 71, 34, + 52, -1, 66, 34, 329, -1, 68, 34, 329, -1, + 95, 34, 194, 290, 195, -1, 67, 34, 329, -1, + 76, 34, 83, -1, 75, 34, 52, -1, 74, -1, + 106, 34, 329, -1, 69, 34, 52, -1, 70, 34, + 52, -1, 62, -1, 63, -1, 88, -1, 5, -1, + 124, -1, 44, 34, 52, -1, 118, -1, 82, -1, + 41, -1, 110, -1, 55, 34, 52, -1, 56, 34, + 52, -1, 80, 34, 57, -1, 80, 34, 81, -1, + 105, -1, 92, -1, 136, 34, 83, -1, 137, 34, + 427, -1, 40, 34, 430, -1, 21, -1, 86, -1, + 72, -1, 126, 34, 329, -1, 14, 34, 267, -1, + 9, 34, 329, -1, 11, 34, 267, -1, 12, 34, + 329, -1, 13, 34, 52, -1, 10, -1, 15, 34, + 52, -1, 16, 34, 52, -1, 162, 34, 52, -1, + 163, 34, 52, -1, 164, 34, 52, -1, 165, 34, + 52, -1, 166, 34, 52, -1, 167, 34, 52, -1, + 168, 34, 52, -1, 169, 34, 52, -1, 170, 34, + 52, -1, 171, 34, 52, -1, 172, 34, 52, -1, + 173, 34, 52, -1, 174, 34, 52, -1, 175, 34, + 52, -1, 176, 34, 52, -1, 177, 34, 329, -1, + 178, 34, 329, -1, 179, 34, 52, -1, 180, 34, + 430, -1, 181, 34, 329, -1, 182, 34, 329, -1, + 186, 34, 52, -1, 187, 34, 52, -1, 189, 34, + 329, -1, 190, 34, 52, -1, 191, 34, 329, -1, + 192, 34, 329, -1, 83, 197, 83, -1, 52, -1, + 52, 197, 52, -1, 198, 428, -1, 429, 428, -1, + 429, 199, -1 }; /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in @@ -3875,56 +3883,56 @@ namespace yy 213, 218, 222, 227, 231, 236, 241, 245, 247, 249, 251, 255, 259, 263, 267, 271, 274, 277, 282, 287, 292, 297, 302, 307, 312, 317, 322, 327, 332, 339, - 346, 351, 353, 358, 366, 370, 375, 378, 380, 385, - 390, 393, 395, 403, 407, 409, 411, 413, 415, 417, - 419, 420, 426, 427, 436, 437, 446, 447, 458, 459, - 468, 471, 474, 476, 478, 483, 486, 490, 492, 494, - 496, 500, 504, 508, 512, 516, 519, 522, 527, 532, - 537, 542, 547, 552, 557, 562, 567, 572, 577, 584, - 591, 597, 599, 604, 609, 614, 617, 619, 629, 636, - 642, 650, 658, 661, 666, 670, 676, 680, 682, 685, - 687, 694, 698, 700, 706, 710, 714, 719, 722, 725, - 729, 731, 733, 736, 742, 746, 748, 750, 753, 759, - 763, 765, 767, 770, 776, 780, 782, 784, 786, 789, - 795, 799, 806, 810, 812, 814, 816, 818, 820, 822, - 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, - 844, 846, 848, 850, 852, 854, 856, 858, 861, 866, - 870, 876, 878, 882, 885, 888, 890, 893, 896, 898, - 903, 906, 908, 913, 916, 918, 923, 927, 933, 943, - 945, 951, 955, 961, 969, 979, 984, 987, 989, 995, - 1003, 1008, 1013, 1016, 1018, 1026, 1036, 1043, 1045, 1047, - 1049, 1051, 1053, 1054, 1056, 1058, 1060, 1063, 1066, 1069, - 1075, 1079, 1086, 1090, 1092, 1094, 1096, 1098, 1100, 1102, - 1104, 1106, 1108, 1110, 1112, 1114, 1116, 1118, 1120, 1122, - 1124, 1126, 1128, 1130, 1132, 1134, 1136, 1138, 1140, 1142, - 1144, 1146, 1148, 1150, 1152, 1154, 1156, 1158, 1160, 1162, - 1164, 1166, 1168, 1170, 1176, 1183, 1187, 1189, 1191, 1193, - 1195, 1197, 1199, 1201, 1203, 1205, 1207, 1209, 1211, 1213, - 1215, 1221, 1228, 1236, 1242, 1244, 1248, 1252, 1257, 1260, - 1262, 1268, 1272, 1277, 1282, 1289, 1293, 1299, 1303, 1306, - 1312, 1316, 1323, 1328, 1331, 1333, 1339, 1347, 1357, 1358, - 1362, 1366, 1369, 1375, 1381, 1388, 1392, 1400, 1409, 1415, - 1421, 1428, 1432, 1440, 1449, 1455, 1462, 1466, 1468, 1470, - 1472, 1474, 1476, 1480, 1485, 1492, 1494, 1497, 1499, 1501, - 1503, 1505, 1507, 1508, 1509, 1515, 1518, 1524, 1528, 1535, - 1539, 1541, 1543, 1545, 1547, 1549, 1551, 1553, 1555, 1557, - 1559, 1561, 1563, 1565, 1567, 1569, 1571, 1573, 1575, 1577, - 1579, 1583, 1585, 1589, 1596, 1598, 1600, 1602, 1604, 1608, - 1610, 1614, 1621, 1624, 1630, 1634, 1636, 1638, 1640, 1642, - 1644, 1646, 1648, 1650, 1652, 1654, 1656, 1658, 1660, 1662, - 1664, 1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, 1682, - 1684, 1686, 1688, 1690, 1692, 1694, 1698, 1702, 1706, 1708, - 1712, 1716, 1720, 1724, 1726, 1728, 1730, 1734, 1738, 1742, - 1746, 1750, 1754, 1756, 1760, 1764, 1768, 1772, 1776, 1780, - 1784, 1788, 1792, 1796, 1798, 1800, 1804, 1808, 1812, 1816, - 1822, 1826, 1830, 1834, 1836, 1840, 1844, 1848, 1850, 1852, - 1854, 1856, 1858, 1862, 1864, 1866, 1868, 1870, 1874, 1878, - 1882, 1886, 1888, 1890, 1894, 1898, 1902, 1904, 1906, 1908, - 1912, 1916, 1920, 1924, 1928, 1932, 1934, 1938, 1942, 1946, + 346, 351, 353, 357, 362, 370, 374, 379, 382, 384, + 389, 394, 397, 399, 407, 411, 413, 415, 417, 419, + 421, 423, 424, 430, 431, 440, 441, 450, 451, 462, + 463, 472, 475, 478, 480, 482, 487, 490, 494, 496, + 498, 500, 504, 508, 512, 516, 520, 523, 526, 531, + 536, 541, 546, 551, 556, 561, 566, 571, 576, 581, + 588, 595, 601, 603, 608, 613, 618, 621, 623, 633, + 640, 646, 654, 662, 665, 670, 674, 680, 684, 686, + 689, 691, 698, 702, 704, 710, 714, 718, 723, 726, + 729, 733, 735, 737, 740, 746, 750, 752, 754, 757, + 763, 767, 769, 771, 774, 780, 784, 786, 788, 790, + 793, 799, 803, 810, 814, 816, 818, 820, 822, 824, + 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, + 846, 848, 850, 852, 854, 856, 858, 860, 862, 865, + 870, 874, 880, 882, 886, 889, 892, 894, 897, 900, + 902, 907, 910, 912, 917, 920, 922, 927, 931, 937, + 947, 949, 955, 959, 965, 973, 983, 988, 991, 993, + 999, 1007, 1012, 1017, 1020, 1022, 1030, 1040, 1047, 1049, + 1051, 1053, 1055, 1057, 1058, 1060, 1062, 1064, 1067, 1070, + 1073, 1079, 1083, 1090, 1094, 1096, 1098, 1100, 1102, 1104, + 1106, 1108, 1110, 1112, 1114, 1116, 1118, 1120, 1122, 1124, + 1126, 1128, 1130, 1132, 1134, 1136, 1138, 1140, 1142, 1144, + 1146, 1148, 1150, 1152, 1154, 1156, 1158, 1160, 1162, 1164, + 1166, 1168, 1170, 1172, 1174, 1180, 1187, 1191, 1193, 1195, + 1197, 1199, 1201, 1203, 1205, 1207, 1209, 1211, 1213, 1215, + 1217, 1219, 1225, 1232, 1240, 1246, 1248, 1252, 1256, 1261, + 1264, 1266, 1272, 1276, 1281, 1286, 1293, 1297, 1303, 1307, + 1310, 1316, 1320, 1327, 1332, 1335, 1337, 1343, 1351, 1361, + 1362, 1366, 1370, 1373, 1379, 1385, 1392, 1396, 1404, 1413, + 1419, 1425, 1432, 1436, 1444, 1453, 1459, 1466, 1470, 1472, + 1474, 1476, 1478, 1480, 1484, 1489, 1496, 1498, 1501, 1503, + 1505, 1507, 1509, 1511, 1512, 1513, 1519, 1522, 1528, 1532, + 1539, 1543, 1545, 1547, 1549, 1551, 1553, 1555, 1557, 1559, + 1561, 1563, 1565, 1567, 1569, 1571, 1573, 1575, 1577, 1579, + 1581, 1583, 1587, 1589, 1593, 1600, 1602, 1604, 1606, 1608, + 1612, 1614, 1618, 1625, 1628, 1634, 1638, 1640, 1642, 1644, + 1646, 1648, 1650, 1652, 1654, 1656, 1658, 1660, 1662, 1664, + 1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, 1682, 1684, + 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1702, 1706, 1710, + 1712, 1716, 1720, 1724, 1728, 1730, 1732, 1734, 1738, 1742, + 1746, 1750, 1754, 1758, 1760, 1764, 1768, 1772, 1776, 1780, + 1784, 1788, 1792, 1796, 1800, 1802, 1804, 1808, 1812, 1816, + 1820, 1826, 1830, 1834, 1838, 1840, 1844, 1848, 1852, 1854, + 1856, 1858, 1860, 1862, 1866, 1868, 1870, 1872, 1874, 1878, + 1882, 1886, 1890, 1892, 1894, 1898, 1902, 1906, 1908, 1910, + 1912, 1916, 1920, 1924, 1928, 1932, 1936, 1938, 1942, 1946, 1950, 1954, 1958, 1962, 1966, 1970, 1974, 1978, 1982, 1986, 1990, 1994, 1998, 2002, 2006, 2010, 2014, 2018, 2022, 2026, - 2030, 2034, 2038, 2042, 2046, 2050, 2054, 2056, 2060, 2063, - 2066 + 2030, 2034, 2038, 2042, 2046, 2050, 2054, 2058, 2060, 2064, + 2067, 2070 }; /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ @@ -3942,56 +3950,56 @@ namespace yy 223, 227, 229, 233, 235, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, - 290, 294, 300, 302, 306, 308, 310, 311, 314, 316, - 318, 319, 322, 324, 325, 328, 330, 332, 334, 335, - 338, 338, 340, 340, 342, 342, 345, 344, 347, 347, - 351, 352, 353, 354, 357, 359, 363, 365, 366, 368, - 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, - 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, - 412, 415, 417, 421, 423, 425, 426, 429, 431, 433, - 435, 437, 441, 443, 445, 447, 449, 451, 455, 457, - 461, 463, 465, 469, 471, 473, 475, 477, 479, 481, - 483, 485, 489, 491, 495, 496, 499, 501, 503, 507, - 508, 511, 513, 515, 519, 520, 523, 524, 527, 529, - 531, 533, 537, 538, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 563, 566, 568, 570, - 572, 574, 576, 580, 582, 584, 588, 590, 592, 596, - 598, 600, 604, 606, 612, 618, 628, 633, 640, 651, - 656, 667, 674, 683, 694, 709, 712, 714, 718, 726, - 736, 746, 749, 751, 755, 765, 777, 789, 791, 793, - 795, 797, 801, 802, 803, 804, 805, 807, 811, 813, - 815, 817, 821, 822, 825, 826, 827, 828, 829, 830, - 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, - 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, - 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, - 861, 862, 863, 866, 868, 872, 873, 876, 877, 878, - 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, - 891, 893, 897, 899, 903, 904, 907, 909, 911, 912, - 915, 917, 919, 921, 923, 925, 927, 931, 933, 935, - 937, 939, 943, 945, 946, 949, 951, 953, 957, 958, - 960, 964, 966, 970, 972, 974, 976, 978, 980, 984, - 986, 988, 990, 992, 994, 998, 1001, 1002, 1005, 1006, - 1007, 1010, 1012, 1014, 1016, 1020, 1022, 1026, 1027, 1029, - 1031, 1033, 1037, 1038, 1037, 1040, 1042, 1044, 1046, 1050, - 1051, 1054, 1055, 1058, 1059, 1060, 1061, 1062, 1063, 1064, - 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, - 1079, 1080, 1083, 1085, 1089, 1090, 1091, 1092, 1095, 1096, - 1099, 1101, 1105, 1107, 1111, 1112, 1115, 1116, 1117, 1118, - 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, - 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, - 1139, 1140, 1141, 1144, 1145, 1148, 1149, 1150, 1151, 1152, - 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, - 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1172, 1175, 1176, - 1177, 1178, 1179, 1180, 1182, 1185, 1186, 1187, 1188, 1189, - 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, - 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, - 1211, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, - 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1233, 1234, - 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, - 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1253, 1254, 1260, - 1261, 1265, 1266, 1267, 1268, 1271, 1279, 1280, 1289, 1291, - 1300 + 290, 294, 296, 300, 302, 306, 308, 310, 311, 314, + 316, 318, 319, 322, 324, 325, 328, 330, 332, 334, + 335, 338, 338, 340, 340, 342, 342, 345, 344, 347, + 347, 351, 352, 353, 354, 357, 359, 363, 365, 366, + 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, + 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, + 408, 412, 415, 417, 421, 423, 425, 426, 429, 431, + 433, 435, 437, 441, 443, 445, 447, 449, 451, 455, + 457, 461, 463, 465, 469, 471, 473, 475, 477, 479, + 481, 483, 485, 489, 491, 495, 496, 499, 501, 503, + 507, 508, 511, 513, 515, 519, 520, 523, 524, 527, + 529, 531, 533, 537, 538, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 558, 559, 560, 561, 562, 563, 566, 568, + 570, 572, 574, 576, 580, 582, 584, 588, 590, 592, + 596, 598, 600, 604, 606, 612, 618, 628, 633, 640, + 651, 656, 667, 674, 683, 694, 709, 712, 714, 718, + 726, 736, 746, 749, 751, 755, 765, 777, 789, 791, + 793, 795, 797, 801, 802, 803, 804, 805, 807, 811, + 813, 815, 817, 821, 822, 825, 826, 827, 828, 829, + 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, + 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, + 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, + 860, 861, 862, 863, 866, 868, 872, 873, 876, 877, + 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, + 888, 891, 893, 897, 899, 903, 904, 907, 909, 911, + 912, 915, 917, 919, 921, 923, 925, 927, 931, 933, + 935, 937, 939, 943, 945, 946, 949, 951, 953, 957, + 958, 960, 964, 966, 970, 972, 974, 976, 978, 980, + 984, 986, 988, 990, 992, 994, 998, 1001, 1002, 1005, + 1006, 1007, 1010, 1012, 1014, 1016, 1020, 1022, 1026, 1027, + 1029, 1031, 1033, 1037, 1038, 1037, 1040, 1042, 1044, 1046, + 1050, 1051, 1054, 1055, 1058, 1059, 1060, 1061, 1062, 1063, + 1064, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, + 1076, 1079, 1080, 1083, 1085, 1089, 1090, 1091, 1092, 1095, + 1096, 1099, 1101, 1105, 1107, 1111, 1112, 1115, 1116, 1117, + 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, + 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, + 1138, 1139, 1140, 1141, 1144, 1145, 1148, 1149, 1150, 1151, + 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, + 1162, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1172, 1175, + 1176, 1177, 1178, 1179, 1180, 1182, 1185, 1186, 1187, 1188, + 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, + 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, + 1209, 1211, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, + 1222, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1233, + 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, + 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1253, 1254, + 1260, 1261, 1265, 1266, 1267, 1268, 1271, 1279, 1280, 1289, + 1291, 1300 }; // Print the state stack on the debug stream. @@ -4084,7 +4092,7 @@ namespace yy } const int parser::yyeof_ = 0; - const int parser::yylast_ = 1760; + const int parser::yylast_ = 1777; const int parser::yynnts_ = 228; const int parser::yyempty_ = -2; const int parser::yyfinal_ = 160; diff --git a/parser.src/DynareBison.yy b/parser.src/DynareBison.yy index fe70bfdf8..9ecbe9426 100644 --- a/parser.src/DynareBison.yy +++ b/parser.src/DynareBison.yy @@ -293,8 +293,8 @@ expression : '(' expression ')' comma_expression : expression { driver.add_unknown_function_arg($1); } -/* | comma_expression COMMA expression - { driver.add_unknown_function_arg($3); }*/ + | comma_expression COMMA expression + { driver.add_unknown_function_arg($3); } ; initval : INITVAL ';' initval_list END @@ -401,11 +401,11 @@ hand_side : '(' hand_side ')' { $$ = driver.add_atan($3); } | SQRT '(' hand_side ')' { $$ = driver.add_sqrt($3); } - | DUMMY '(' expression ')' + | DUMMY '(' hand_side ')' { $$ = driver.add_dummy($3); } - | MAX '(' expression COMMA expression ')' + | MAX '(' hand_side COMMA hand_side ')' { $$ = driver.add_max($3 , $5); } - | MIN '(' expression COMMA expression ')' + | MIN '(' hand_side COMMA hand_side ')' { $$ = driver.add_min($3 , $5); } ; diff --git a/parser.src/ModelTree.cc b/parser.src/ModelTree.cc index 906359a9d..6f069cb9e 100644 --- a/parser.src/ModelTree.cc +++ b/parser.src/ModelTree.cc @@ -625,7 +625,7 @@ ModelTree::writeModelEquationsCodeOrdered(const string file_name, const Model_Bl prev_Simulation_Type=ModelBlock->Block_List[j].Simulation_Type; } ModelBlock_Aggregated_Count++; - cout << "ModelBlock_Aggregated_Count=" << ModelBlock_Aggregated_Count << "\n"; + //cout << "ModelBlock_Aggregated_Count=" << ModelBlock_Aggregated_Count << "\n"; //For each block j=0; for(k0 = 0;k0 < ModelBlock_Aggregated_Count;k0++) @@ -638,7 +638,7 @@ ModelTree::writeModelEquationsCodeOrdered(const string file_name, const Model_Bl code_file.write(reinterpret_cast(&v),sizeof(v)); v=ModelBlock->Block_List[j].Simulation_Type; code_file.write(reinterpret_cast(&v),sizeof(v)); - cout << "FBEGINBLOCK j=" << j << " size=" << ModelBlock_Aggregated_Number[k0] << " type=" << v << "\n"; + //cout << "FBEGINBLOCK j=" << j << " size=" << ModelBlock_Aggregated_Number[k0] << " type=" << v << "\n"; for(k=0; kBlock_List[j].Size;i++) @@ -1458,28 +1458,29 @@ ModelTree::Write_Inf_To_Bin_File(const string &dynamic_basename, const string &b } for(j=0;jBlock_List[num].Size;j++) { - //int eq=block_triangular.ModelBlock->Block_List[i].Equation[j]; int eqr1=j; int varr=block_triangular.ModelBlock->Block_List[num].Size*(block_triangular.periods - +/*block_triangular.ModelBlock->Block_List[num].Max_Lead*/block_triangular.Model_Max_Lead); + +block_triangular.Model_Max_Lead); int k1=0; - //mDynamicModelFile << " var_in_equ_and_lag[std::make_pair(std::make_pair(" << j << ", 0)] = -1;\n"; - //mDynamicModelFile << " /*periods=" << block_triangular.periods << " Size=" << block_triangular.ModelBlock->Block_List[i].Size << "*/\n"; - //mDynamicModelFile << " var_in_equ_and_lag.insert(std::make_pair(std::make_pair(" << eqr1 << ", 0), " << block_triangular.ModelBlock->Block_List[i].Size*block_triangular.periods << "));\n"; - //mDynamicModelFile << " equ_in_var_and_lag[std::make_pair(std::make_pair(-1, " << k1 << ")] = " << equ << ";\n"; SaveCode.write(reinterpret_cast(&eqr1), sizeof(eqr1)); SaveCode.write(reinterpret_cast(&varr), sizeof(varr)); SaveCode.write(reinterpret_cast(&k1), sizeof(k1)); SaveCode.write(reinterpret_cast(&eqr1), sizeof(eqr1)); - //cout << " IM_i[std::make_pair(std::make_pair(" << eqr1 << ", " << varr << "), " << k1 << ")] = " << eqr1 << ";\n"; u_count_int++; } + //cout << "u_count_int = " << u_count_int << endl; for(j=0;jBlock_List[num].Size;j++) { //mDynamicModelFile << " index_var[" << j << "]=" << block_triangular.ModelBlock->Block_List[i].Variable[j] << ";\n"; int varr=block_triangular.ModelBlock->Block_List[num].Variable[j]; SaveCode.write(reinterpret_cast(&varr), sizeof(varr)); } + for(j=0;jBlock_List[num].Size;j++) + { + //mDynamicModelFile << " index_var[" << j << "]=" << block_triangular.ModelBlock->Block_List[i].Variable[j] << ";\n"; + int eqr1=block_triangular.ModelBlock->Block_List[num].Equation[j]; + SaveCode.write(reinterpret_cast(&eqr1), sizeof(eqr1)); + } SaveCode.close(); } @@ -2413,6 +2414,7 @@ ModelTree::evaluateJacobian(const eval_context_type &eval_context, jacob_map *j_ int j=0; bool *IM=NULL; int a_variable_lag=-9999; + //block_triangular.Print_IM(2); for(first_derivatives_type::iterator it = first_derivatives.begin(); it != first_derivatives.end(); it++) { @@ -2435,7 +2437,7 @@ ModelTree::evaluateJacobian(const eval_context_type &eval_context, jacob_map *j_ } if (IM[eq*symbol_table.endo_nbr+var] && (fabs(val) < cutoff)) { - //cout << "the coefficient related to variable " << var << " with lag " << k1 << " in equation " << eq << " is equal to " << interprete_.u1 << " and is set to 0 in the incidence matrix\n"; + //cout << "the coefficient related to variable " << var << " with lag " << k1 << " in equation " << eq << " is equal to " << val << " and is set to 0 in the incidence matrix\n"; block_triangular.unfill_IM(eq, var, k1); i++; } diff --git a/parser.src/include/linbcg.hh b/parser.src/include/linbcg.hh new file mode 100644 index 000000000..1bce4c739 --- /dev/null +++ b/parser.src/include/linbcg.hh @@ -0,0 +1,135 @@ +#ifndef LINBCG_HH_INCLUDED +#define LINBCG_HH_INCLUDED + +#include +#include +#include +#include +#include "mex.h" +using namespace std; + +const int debile=10; + +typedef double DP; + + +template +class NRVec { +private: + int nn; // size of array. upper index is nn-1 + T *v; +public: + NRVec(); + explicit NRVec(int n); // Zero-based array + NRVec(const T &a, int n); //initialize to constant value + NRVec(const T *a, int n); // Initialize to array + NRVec(const NRVec &rhs); // Copy constructor + NRVec & operator=(const NRVec &rhs); //assignment + NRVec & operator=(const T &a); //assign a to every element + inline T & operator[](const int i); //i'th element + inline const T & operator[](const int i) const; + inline int size() const; + ~NRVec(); +}; + +template +NRVec::NRVec() : nn(0), v(0) {} + +template +NRVec::NRVec(int n) : nn(n), v(new T[n]) {} + +template +NRVec::NRVec(const T& a, int n) : nn(n), v(new T[n]) +{ + for(int i=0; i +NRVec::NRVec(const T *a, int n) : nn(n), v(new T[n]) +{ + for(int i=0; i +NRVec::NRVec(const NRVec &rhs) : nn(rhs.nn), v(new T[nn]) +{ + for(int i=0; i +NRVec & NRVec::operator=(const NRVec &rhs) +// postcondition: normal assignment via copying has been performed; +// if vector and rhs were different sizes, vector +// has been resized to match the size of rhs +{ + if (this != &rhs) + { + if (nn != rhs.nn) { + if (v != 0) delete [] (v); + nn=rhs.nn; + v= new T[nn]; + } + for (int i=0; i +NRVec & NRVec::operator=(const T &a) //assign a to every element +{ + for (int i=0; i +inline T & NRVec::operator[](const int i) //subscripting +{ + return v[i]; +} + +template +inline const T & NRVec::operator[](const int i) const //subscripting +{ + return v[i]; +} + +template +inline int NRVec::size() const +{ + return nn; +} + +extern double *u; +template +NRVec::~NRVec() +{ + if (v != 0) + delete[] (v); +} + +typedef const NRVec Vec_I_INT; +typedef NRVec Vec_INT, Vec_O_INT, Vec_IO_INT; +typedef const NRVec Vec_I_DP; +typedef NRVec Vec_DP, Vec_O_DP, Vec_IO_DP; + +class LinBCG +{ + Vec_INT *ija_p; + Vec_DP *sa_p; + public: + LinBCG(); + void Init(int periods, int y_kmin, int y_kmax, int Size, std::map ,int>, int> IM, int* index_vara, int* index_equa); + void asolve(Vec_I_DP &b, Vec_O_DP &x, const int itrnsp); + void atimes(Vec_I_DP &x, Vec_O_DP &r, const int itrnsp); + DP snrm(Vec_I_DP &sx, const int itol); + void sprsax(Vec_I_DP &sa, Vec_I_INT &ija, Vec_I_DP &x, Vec_O_DP &b); + void sprstx(Vec_I_DP &sa, Vec_I_INT &ija, Vec_I_DP &x, Vec_O_DP &b); + void linbcg(Vec_I_DP &b, Vec_IO_DP &x, const int itol, const DP tol, + const int itmax, int &iter, DP &err); +}; +#endif diff --git a/parser.src/include/simulate.hh b/parser.src/include/simulate.hh index 0dc7474aa..0d7407857 100644 --- a/parser.src/include/simulate.hh +++ b/parser.src/include/simulate.hh @@ -1,14 +1,12 @@ #ifndef SIMULATE_HH_INCLUDED #define SIMULATE_HH_INCLUDED -#include #include #include #include #include #include #include -//#include "pctimer_h.hh" #include #include #include @@ -20,11 +18,6 @@ #define pow_ pow //#define pow pow1 -// typedef struct IM_compact -// { -// int size, u_init, u_finish, nb_endo; -// int *u, *Var, *Equ, *Var_Index, *Equ_Index, *Var_dyn_Index; -// }; typedef struct Variable_l { int* Index; @@ -98,7 +91,7 @@ typedef struct NonZeroElem std::map ,int>, int> IM_i; std::multimap, int> var_in_equ_and_lag_i, equ_in_var_and_lag_i; -int *index_vara, *pivota=NULL, *save_op_all=NULL, *b, *g_save_op=NULL; +int *index_vara, *index_equa, *pivota=NULL, *save_op_all=NULL, *b, *g_save_op=NULL; int *pivot, *pivotk; longd *pivotv, *pivotva=NULL; bool *line_done; @@ -189,6 +182,7 @@ class SparseMatrix NonZeroElem* NZE_Mem; }; + #define get_code_int *((int*)Code); Code+=sizeof(int); #define get_code_double *((double*)Code); Code+=sizeof(double); #define get_code_pdouble (double*)Code; Code+=sizeof(double); @@ -210,7 +204,7 @@ class Interpreter { protected : void compute_block_time(); - void simulate_a_block(int size,int type, string file_name, string bin_basename); + void simulate_a_block(int size,int type, string file_name, string bin_basename, bool Gaussian_Elimination); longd *T; vector Block_Contain; vector Block; diff --git a/parser.src/linbcg.cc b/parser.src/linbcg.cc new file mode 100644 index 000000000..89c8db98d --- /dev/null +++ b/parser.src/linbcg.cc @@ -0,0 +1,304 @@ +#include "linbcg.hh" + +LinBCG::LinBCG() +{ +} + +void LinBCG::Init(int periods, int y_kmin, int y_kmax, int Size, std::map ,int>, int> IM, int* index_vara, int* index_equa) +{ + std::map ,int>, int>::iterator it4; + int Non_Zero_By_Lag[y_kmax+y_kmin+1]; + memset(Non_Zero_By_Lag, 0, sizeof(int)*(y_kmax+y_kmin+1)); + int i, j, k, nz_diag_count, eq, eqp, eq_count, var, lag, pos_u; + it4=IM.begin(); + // count the non zero diagonal elements + j=0; + nz_diag_count=0; + eqp=it4->first.first.first; + mexPrintf("IM.size()=%d\n",IM.size()); + for(i=0;ifirst.first.first; + // Assumption no Row is completly null + if(eq!=eqp) + j++; + var=it4->first.first.second; + lag=it4->first.second; + mexPrintf("eq=%d var=%d lag=%d \n",eq, var, lag); + if(!lag) + { + if(var==index_vara[j] && eq==index_equa[j]) + nz_diag_count++; + else + Non_Zero_By_Lag[y_kmin+lag]++; + } + else + Non_Zero_By_Lag[y_kmin+lag]++; + it4++; + } + int Size_SparseMatrixRow=Size*periods; + mexPrintf("En lag 0 Size*periods=%d\n",Size*periods); + for(lag=-y_kmin;lag<0;lag++) + { + Size_SparseMatrixRow+=-min(-(periods+lag),0)*Non_Zero_By_Lag[y_kmin+lag]; + mexPrintf("En lag %d -min(-(periods+lag),0)*Non_Zero_By_Lag[y_kmin+lag]=%d\n",lag,-min(-(periods+lag),0)*Non_Zero_By_Lag[y_kmin+lag]); + } + Size_SparseMatrixRow+=Non_Zero_By_Lag[y_kmin]; + for(lag=1;lag<=y_kmax;lag++) + { + Size_SparseMatrixRow+=-min(-(periods-lag),0)*Non_Zero_By_Lag[y_kmin+lag]; + mexPrintf("En lag %d -min(-(periods-lag),0)*Non_Zero_By_Lag[y_kmin+lag]=%d\n",lag,-min(-(periods-lag),0)*Non_Zero_By_Lag[y_kmin+lag]); + } + mexPrintf("Size_SparseMatrixRow=%d periods=%d\n",Size_SparseMatrixRow,periods); + //ija_p=new Vec_INT(Size_SparseMatrixRow); + //sa_p=new Vec_DP(Size_SparseMatrixRow); + Vec_INT ija_p[Size_SparseMatrixRow]; + Vec_DP sa_p[Size_SparseMatrixRow]; + int *cumulate_past_block; + cumulate_past_block=(int*)mxMalloc((periods+1)*sizeof(int)); + memset(cumulate_past_block, 0, sizeof(int)*(periods)); + mexPrintf("OK-1\n"); + cumulate_past_block[0]=0; + for(j=1;j<=periods;j++) + { + for(i=-y_kmin;i<=y_kmax;i++) + { + if(j+i>0 && j+ifirst.first.first; + // Assumption no Row is completly null + /*if(eq!=eqp) + j++;*/ + var=it4->first.first.second; + lag=it4->first.second; + pos_u=it4->second; + //mexPrintf("eq=%d var=%d lag=%d \n",eq, var, lag); + if(!lag) + { + if(var==index_vara[eq_count-1] && eq==index_equa[eq_count-1]) + //nz_diag_count++; + { + //Diagonal elements + for(j=0;j0 && j+lag fabs(sx[isamax])) isamax=i; + } + return fabs(sx[isamax]); + } +} + +void LinBCG::sprsax(Vec_I_DP &sa, Vec_I_INT &ija, Vec_I_DP &x, Vec_O_DP &b) +{ + int i,k; + + int n=x.size(); + if (ija[0] != n+1) + mexPrintf("Error: \n sprsax: mismatched vector and matrix\n"); + for (i=0;i EPS*znrm) { + dxnrm=fabs(ak)*snrm(p,itol); + err=znrm/fabs(zm1nrm-znrm)*dxnrm; + } else { + err=znrm/bnrm; + continue; + } + xnrm=snrm(x,itol); + if (err <= 0.5*xnrm) err /= xnrm; + else { + err=znrm/bnrm; + continue; + } + } + cout << "iter=" << setw(4) << iter+1 << setw(12) << err << endl; + if (err <= tol) break; + } +} + diff --git a/parser.src/simulate.cc b/parser.src/simulate.cc index 2e9d4f509..09150ce95 100644 --- a/parser.src/simulate.cc +++ b/parser.src/simulate.cc @@ -4,6 +4,7 @@ // use NO_COMPILER option in MODEL command // //////////////////////////////////////////////////////////////////////// #include "simulate.hh" +#include "linbcg.hh" longd @@ -29,6 +30,34 @@ max(int a, int b) return(b); } +int +min(int a, int b) +{ + if (ab) + return(a); + else + return(b); +} + +double +min(double a, double b) +{ + if (a(&index_vara[j]), sizeof(*index_vara)); + //mexPrintf("index_vara[%d]=%d\n",j,index_vara[j]); } for (i=1;i(&index_equa[j]), sizeof(*index_equa)); + //mexPrintf("index_equa[%d]=%d\n",j,index_equa[j]); + } } @@ -3510,283 +3546,17 @@ simulate_NG1(int blck, int y_size, int it_, int y_kmin, int y_kmax, int Size, in return(0); } -/* - -void SparseMatrixRow::Init(int periods, int y_kmin, int y_kmax, int Size, std::map ,int>, int> IM, double* sa, int* ija) -{ - std::map ,int>, int>::iterator it4; - int Non_Zero_Elem=IM.size(); - it4=IM.begin(); - // count the non zero diagonal elements - while (it4!=IM.end()) - { - eq= it4->first.first.first; - var=it4->first.first.second; - lag=it4->first.second; - for (t=0;tfirst.first.second; - if (eq!=it4->first.first.first+Size*t) - tmp_b=0; - eq=it4->first.first.first+Size*t; -#ifdef PRINT_OUT - mexPrintf("eq=%d, var=%d",eq,var); -#endif - if (var<(periods+y_kmax)*Size) - { - lag=it4->first.second; -#ifdef PRINT_OUT - mexPrintf(", lag =%d, ti_y_kmin=%d, ti_y_kmax=%d ", lag, ti_y_kmin, ti_y_kmax); -#endif - if (lag<=ti_y_kmax && lag>=ti_y_kmin) - { - //mexPrintf("u_index=%d, eq=%d, var=%d, lag=%d ",it4->second+u_count_init*t, eq, var, lag); - var+=Size*t; - //mexPrintf("u_index=%d, eq=%d, var=%d, lag=%d ",it4->second+u_count_init*t, eq, var, lag); - NbNZRow[eq]++; - NbNZCol[var]++; -#ifdef NEW_ALLOC - first=mxMalloc_NZE(); -#else - first=(NonZeroElem*)mxMalloc(sizeof(NonZeroElem)); -#endif - first->NZE_C_N=NULL; - first->NZE_R_N=NULL; - first->u_index=it4->second+u_count_init*t; - first->r_index=eq; - first->c_index=var; - first->lag_index=lag; - if (FNZE_R[eq]==NULL) - { - FNZE_R[eq]=first; - } - if (FNZE_C[var]==NULL) - FNZE_C[var]=first; - if (temp_NZE_R[eq]!=NULL) - temp_NZE_R[eq]->NZE_R_N=first; - if (temp_NZE_C[var]!=NULL) - temp_NZE_C[var]->NZE_C_N=first; - temp_NZE_R[eq]=first; - temp_NZE_C[var]=first; -#ifdef PRINT_OUT - mexPrintf("=> "); -#endif - } - else - { -#ifdef PRINT_OUT - mexPrintf("nn "); - mexPrintf("tmp_b+=u[%d]*y[index_var[%d]]\n",it4->second+u_count_init*t,var+Size*(y_kmin+t)); - mexPrintf("tmp_b+=u[%d](%f)*y[%d(%d)](%f)",it4->second+u_count_init*t,u[it4->second+u_count_init*t], index_vara[var+Size*(y_kmin+t)],var+Size*(y_kmin+t),y[index_vara[var+Size*(y_kmin+t)]]); -#endif - tmp_b+=u[it4->second+u_count_init*t]*y[index_vara[var+Size*(y_kmin+t)]]; - } - } - else - { -#ifdef PRINT_OUT - mexPrintf(""); -#endif - b[eq]=it4->second+u_count_init*t; - u[b[eq]]+=tmp_b; -#ifdef PRINT_OUT - mexPrintf("=> b"); -#endif - } -#ifdef PRINT_OUT - mexPrintf(" u[%d] = %e\n",it4->second+u_count_init*t,double(u[it4->second+u_count_init*t])); -#endif - it4++; - } - } - int t,i, eq, var, lag; - longd tmp_b=0.0; - - NonZeroElem* first; -#ifdef MEM_ALLOC_CHK - mexPrintf("pivot=(int*)mxMalloc(%d*sizeof(int))\n",Size*periods); -#endif - pivot=(int*)mxMalloc(Size*periods*sizeof(int)); -#ifdef MEM_ALLOC_CHK - mexPrintf("pivota=(int*)mxMalloc(%d*sizeof(int))\n",Size*periods); -#endif - pivotk=(int*)mxMalloc(Size*periods*sizeof(int)); -#ifdef MEM_ALLOC_CHK - mexPrintf("pivotv=(longd*)mxMalloc(%d*sizeof(longd))\n",Size*periods); -#endif - pivotv=(longd*)mxMalloc(Size*periods*sizeof(longd)); -#ifdef MEM_ALLOC_CHK - mexPrintf("pivotva=(longd*)mxMalloc(%d*sizeof(longd))\n",Size*periods); -#endif - pivotva=(longd*)mxMalloc(Size*periods*sizeof(longd)); -#ifdef MEM_ALLOC_CHK - mexPrintf("b=(int*)mxMalloc(%d*sizeof(int))\n",Size*periods); -#endif - b=(int*)mxMalloc(Size*periods*sizeof(int)); -#ifdef MEM_ALLOC_CHK - mexPrintf("line_done=(bool*)mxMalloc(%d*sizeof(bool))\n",Size*periods); -#endif - line_done=(bool*)mxMalloc(Size*periods*sizeof(bool)); - memset(line_done, 0, periods*Size*sizeof(*line_done)); - CHUNK_BLCK_SIZE=u_count; - print_err=true; - swp_f=false; - g_save_op=NULL; - g_nop_all=0; -#ifdef PRINT_OUT - mexPrintf("sizeof(NonZeroElem)=%d sizeof(NonZeroElem*)=%d\n",sizeof(NonZeroElem),sizeof(NonZeroElem*)); -#endif - i=(periods+y_kmax+1)*Size*sizeof(NonZeroElem*); -#ifdef MEM_ALLOC_CHK - mexPrintf("FNZE_R=(NonZeroElem**)mxMalloc(%d)\n",i); -#endif - FNZE_R=(NonZeroElem**)mxMalloc(i); -#ifdef MEM_ALLOC_CHK - mexPrintf("FNZE_C=(NonZeroElem**)mxMalloc(%d)\n",i); -#endif - FNZE_C=(NonZeroElem**)mxMalloc(i); - memset(FNZE_R, 0, i); - memset(FNZE_C, 0, i); -#ifdef MEM_ALLOC_CHK - mexPrintf("temp_NZE_R=(NonZeroElem**)(%d)\n",i); -#endif - NonZeroElem** temp_NZE_R=(NonZeroElem**)mxMalloc(i); -#ifdef MEM_ALLOC_CHK - mexPrintf("temp_NZE_R=(NonZeroElem**)(%d)\n",i); -#endif - NonZeroElem** temp_NZE_C=(NonZeroElem**)mxMalloc(i); - memset(temp_NZE_R, 0, i); - memset(temp_NZE_C, 0, i); - i=(periods+y_kmax+1)*Size*sizeof(int); -#ifdef MEM_ALLOC_CHK - mexPrintf("NbNZRow=(int*)mxMalloc(%d)\n",i); -#endif - NbNZRow=(int*)mxMalloc(i); -#ifdef MEM_ALLOC_CHK - mexPrintf("NbNZCol=(int*)mxMalloc(%d)\n",i); -#endif - NbNZCol=(int*)mxMalloc(i); -#ifdef MEM_ALLOC_CHK - mexPrintf("ok\n"); -#endif - memset(NbNZRow, 0, i); - memset(NbNZCol, 0, i); - i=periods*Size*sizeof(*b); - memset(b,0,i); -#ifdef PRINT_OUT - mexPrintf("Now looping\n"); -#endif - for (t=0;tfirst.first.second; - if (eq!=it4->first.first.first+Size*t) - tmp_b=0; - eq=it4->first.first.first+Size*t; -#ifdef PRINT_OUT - mexPrintf("eq=%d, var=%d",eq,var); -#endif - if (var<(periods+y_kmax)*Size) - { - lag=it4->first.second; -#ifdef PRINT_OUT - mexPrintf(", lag =%d, ti_y_kmin=%d, ti_y_kmax=%d ", lag, ti_y_kmin, ti_y_kmax); -#endif - if (lag<=ti_y_kmax && lag>=ti_y_kmin) - { - //mexPrintf("u_index=%d, eq=%d, var=%d, lag=%d ",it4->second+u_count_init*t, eq, var, lag); - var+=Size*t; - //mexPrintf("u_index=%d, eq=%d, var=%d, lag=%d ",it4->second+u_count_init*t, eq, var, lag); - NbNZRow[eq]++; - NbNZCol[var]++; -#ifdef NEW_ALLOC - first=mxMalloc_NZE(); -#else - first=(NonZeroElem*)mxMalloc(sizeof(NonZeroElem)); -#endif - first->NZE_C_N=NULL; - first->NZE_R_N=NULL; - first->u_index=it4->second+u_count_init*t; - first->r_index=eq; - first->c_index=var; - first->lag_index=lag; - - if (FNZE_R[eq]==NULL) - { - FNZE_R[eq]=first; - } - if (FNZE_C[var]==NULL) - FNZE_C[var]=first; - if (temp_NZE_R[eq]!=NULL) - temp_NZE_R[eq]->NZE_R_N=first; - if (temp_NZE_C[var]!=NULL) - temp_NZE_C[var]->NZE_C_N=first; - temp_NZE_R[eq]=first; - temp_NZE_C[var]=first; -#ifdef PRINT_OUT - mexPrintf("=> "); -#endif - } - else - { -#ifdef PRINT_OUT - mexPrintf("nn "); - mexPrintf("tmp_b+=u[%d]*y[index_var[%d]]\n",it4->second+u_count_init*t,var+Size*(y_kmin+t)); - mexPrintf("tmp_b+=u[%d](%f)*y[%d(%d)](%f)",it4->second+u_count_init*t,u[it4->second+u_count_init*t], index_vara[var+Size*(y_kmin+t)],var+Size*(y_kmin+t),y[index_vara[var+Size*(y_kmin+t)]]); -#endif - tmp_b+=u[it4->second+u_count_init*t]*y[index_vara[var+Size*(y_kmin+t)]]; - } - } - else - { -#ifdef PRINT_OUT - mexPrintf(""); -#endif - b[eq]=it4->second+u_count_init*t; - u[b[eq]]+=tmp_b; -#ifdef PRINT_OUT - mexPrintf("=> b"); -#endif - } -#ifdef PRINT_OUT - mexPrintf(" u[%d] = %e\n",it4->second+u_count_init*t,double(u[it4->second+u_count_init*t])); -#endif - it4++; - } - } - mxFree(temp_NZE_R); - mxFree(temp_NZE_C); -} - -*/ /*class EvalException { };*/ Interpreter::Interpreter() { - GaussSeidel=true; + //GaussSeidel=true; } void @@ -4187,7 +3957,7 @@ Interpreter::compute_block_time() /*throw(EvalException)*/ } void -Interpreter::simulate_a_block(int size,int type, string file_name, string bin_basename) +Interpreter::simulate_a_block(int size,int type, string file_name, string bin_basename, bool Gaussian_Elimination) { char *begining; int i; @@ -4199,8 +3969,10 @@ Interpreter::simulate_a_block(int size,int type, string file_name, string bin_ba int giter; int u_count_int; double *y_save; + LinBCG linbcg; + //mexPrintf("%d\n",debile); - GaussSeidel=false; + //GaussSeidel=false; //slowc_save=slowc/2; switch (type) { @@ -4546,7 +4318,7 @@ Interpreter::simulate_a_block(int size,int type, string file_name, string bin_ba mexPrintf("u_count=%d\n",u_count); #endif begining=get_code_pointer; - GaussSeidel=false; + //GaussSeidel=false; giter=0; //mexPrintf("GaussSeidel=%d\n",GaussSeidel); if (!is_linear) @@ -4571,7 +4343,7 @@ Interpreter::simulate_a_block(int size,int type, string file_name, string bin_ba if (isnan(res1)||isinf(res1)) { memcpy(y, y_save, y_size*sizeof(longd)*(periods+y_kmax+y_kmin)); - GaussSeidel=false; + //GaussSeidel=false; break; } for (i=0; i< size; i++) @@ -4585,32 +4357,27 @@ Interpreter::simulate_a_block(int size,int type, string file_name, string bin_ba max_res=fabs(rr); res2+=rr*rr; res1+=fabs(rr); - if (GaussSeidel && giter) + /*if (GaussSeidel && giter) { //mexPrintf("y[%d]-=r[%d]/u[%d]\n",Block_Contain[i].Variable,i,Block_Contain[i].Own_Derivative,); y[Per_y_+Block_Contain[i].Variable]-=r[i]/u[Per_u_+Block_Contain[i].Own_Derivative]; //mexPrintf("y[%d]-=r[%d](%f)/u[%d](%f)=%f\n",Block_Contain[i].Variable,i,r[i],Block_Contain[i].Own_Derivative,u[Per_u_+Block_Contain[i].Own_Derivative], y[Per_y_+Block_Contain[i].Variable]); - } + }*/ } } cvg=(max_resres1a) - { - memcpy(y, y_save, nb_endo*sizeof(longd)*(periods+y_kmax+y_kmin)); - GaussSeidel=false; - } - giter++; - res1a=res1; - } - if (!GaussSeidel) - { - simulate_NG1(Block_Count, symbol_table_endo_nbr, it_, y_kmin, y_kmax, size, periods, true, cvg); - //GaussSeidel=true; - iter++; + int ITMAX=75; + double TOL=1e-9; + int ITOL=1; + linbcg.Init(periods, y_kmin, y_kmax, size, IM_i, index_vara, index_equa); + /*Vec_DP b(NP),x(NP); + linbcg.linbcg(b,x,ITOL,TOL,ITMAX,iter,err);*/ } + iter++; } if (!cvg) { @@ -4641,7 +4408,7 @@ Interpreter::simulate_a_block(int size,int type, string file_name, string bin_ba mxFree(u); mxFree(index_vara); memset(direction,0,size_of_direction); - GaussSeidel=false; + //GaussSeidel=false; break; default: mexPrintf("Unknow type =%d\n",type); @@ -4732,7 +4499,7 @@ Interpreter::compute_blocks(string file_name, string bin_basename) //mexPrintf("Block_Contain[%d].Own_Derivative=%d\n",i,lBlock_Contain.Own_Derivative); Block_Contain.push_back(lBlock_Contain); } - simulate_a_block(lBlock.size,lBlock.type, file_name, bin_basename); + simulate_a_block(lBlock.size,lBlock.type, file_name, bin_basename,/*false*/true); break; case FEND : //mexPrintf("FEND\n");