1# Do not edit this file - Generated by Perlito6 9.0 2use v5; 3use utf8; 4use strict; 5use warnings; 6no warnings ('redefine', 'once', 'void', 'uninitialized', 'misc', 'recursion'); 7use Perlito6::Perl5::Runtime; 8use Perlito6::Perl5::Prelude; 9our $MATCH = Perlito6::Match->new(); 10{ 11package GLOBAL; 12 sub new { shift; bless { @_ }, "GLOBAL" } 13 14 # use v6 15; 16 { 17 package Perlito6::Grammar; 18 sub new { shift; bless { @_ }, "Perlito6::Grammar" } 19 use Perlito6::Expression; 20 use Perlito6::Grammar::Regex; 21 use Perlito6::Grammar::Control; 22 sub is_newline { 23 my $grammar = $_[0]; 24 my $str = $_[1]; 25 my $pos = $_[2]; 26 (my $MATCH); 27 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 28 (($MATCH)->{bool} = ((do { 29 ((my $pos1) = $MATCH->to()); 30 ((do { 31 ((((chr(10) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 32 ((my $last_pos) = $MATCH->to()); 33 if (!((do { 34 ((chr(13) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 35}))) { 36 (($MATCH)->{to} = $last_pos) 37 }; 38 1 39})) 40}) || (do { 41 (($MATCH)->{to} = $pos1); 42 (((((chr(13) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 43 ((my $last_pos) = $MATCH->to()); 44 if (!((do { 45 ((chr(10) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 46}))) { 47 (($MATCH)->{to} = $last_pos) 48 }; 49 1 50}))) 51})) 52}))); 53 $MATCH 54 }; 55 sub not_newline { 56 my $grammar = $_[0]; 57 my $str = $_[1]; 58 my $pos = $_[2]; 59 (my $MATCH); 60 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 61 (($MATCH)->{bool} = ((do { 62 ((my $pos1) = $MATCH->to()); 63 (do { 64 ((do { 65 ((my $tmp) = $MATCH); 66 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1))); 67 (($MATCH)->{bool} = (do { 68 ((my $pos1) = $MATCH->to()); 69 (do { 70 ((my $m2) = $grammar->is_newline($str, $MATCH->to())); 71 if ($m2) { 72 (($MATCH)->{to} = $m2->to()); 73 1 74 } 75 else { 76 0 77 } 78}) 79})); 80 (($tmp)->{bool} = !($MATCH)); 81 ($MATCH = $tmp); 82 !!($MATCH) 83}) && ((('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 84}) 85}))); 86 $MATCH 87 }; 88 sub ident { 89 my $grammar = $_[0]; 90 my $str = $_[1]; 91 my $pos = $_[2]; 92 (my $MATCH); 93 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 94 (($MATCH)->{bool} = ((do { 95 ((my $pos1) = $MATCH->to()); 96 (do { 97 ((do { 98 ((my $tmp) = $MATCH); 99 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1))); 100 (($MATCH)->{bool} = (do { 101 ((my $pos1) = $MATCH->to()); 102 (do { 103 ((my $m2) = $grammar->digit($str, $MATCH->to())); 104 if ($m2) { 105 (($MATCH)->{to} = $m2->to()); 106 1 107 } 108 else { 109 0 110 } 111}) 112})); 113 (($tmp)->{bool} = !($MATCH)); 114 ($MATCH = $tmp); 115 !!($MATCH) 116}) && (do { 117 ((my $last_match_null) = 0); 118 ((my $last_pos) = $MATCH->to()); 119 ((my $count) = 0); 120 for ( ; ((do { 121 ((my $m2) = $grammar->word($str, $MATCH->to())); 122 if ($m2) { 123 (($MATCH)->{to} = $m2->to()); 124 1 125 } 126 else { 127 0 128 } 129}) && (($last_match_null < 2))); ) { 130 if (($last_pos == $MATCH->to())) { 131 ($last_match_null = ($last_match_null + 1)) 132 } 133 else { 134 ($last_match_null = 0) 135 }; 136 ($last_pos = $MATCH->to()); 137 ($count = ($count + 1)) 138 }; 139 (($MATCH)->{to} = $last_pos); 140 ($count > 0) 141})) 142}) 143}))); 144 $MATCH 145 }; 146 sub full_ident { 147 my $grammar = $_[0]; 148 my $str = $_[1]; 149 my $pos = $_[2]; 150 (my $MATCH); 151 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 152 (($MATCH)->{bool} = ((do { 153 ((my $pos1) = $MATCH->to()); 154 (do { 155 ((do { 156 ((my $m2) = $grammar->ident($str, $MATCH->to())); 157 if ($m2) { 158 (($MATCH)->{to} = $m2->to()); 159 1 160 } 161 else { 162 0 163 } 164}) && (do { 165 ((my $last_match_null) = 0); 166 ((my $last_pos) = $MATCH->to()); 167 for ( ; ((do { 168 ((my $pos1) = $MATCH->to()); 169 (do { 170 (((('::' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))) && (do { 171 ((my $m2) = $grammar->ident($str, $MATCH->to())); 172 if ($m2) { 173 (($MATCH)->{to} = $m2->to()); 174 1 175 } 176 else { 177 0 178 } 179})) 180}) 181}) && (($last_match_null < 2))); ) { 182 if (($last_pos == $MATCH->to())) { 183 ($last_match_null = ($last_match_null + 1)) 184 } 185 else { 186 ($last_match_null = 0) 187 }; 188 ($last_pos = $MATCH->to()) 189 }; 190 (($MATCH)->{to} = $last_pos); 191 1 192})) 193}) 194}))); 195 $MATCH 196 }; 197 sub namespace_before_ident { 198 my $grammar = $_[0]; 199 my $str = $_[1]; 200 my $pos = $_[2]; 201 (my $MATCH); 202 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 203 (($MATCH)->{bool} = ((do { 204 ((my $pos1) = $MATCH->to()); 205 (do { 206 (((do { 207 ((my $m2) = $grammar->ident($str, $MATCH->to())); 208 if ($m2) { 209 (($MATCH)->{to} = $m2->to()); 210 1 211 } 212 else { 213 0 214 } 215}) && (do { 216 ((my $tmp) = $MATCH); 217 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1))); 218 (($MATCH)->{bool} = (do { 219 ((my $pos1) = $MATCH->to()); 220 (do { 221 (('::' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to())))) 222}) 223})); 224 (($tmp)->{bool} = !!($MATCH)); 225 ($MATCH = $tmp); 226 !!($MATCH) 227})) && (do { 228 ((my $last_match_null) = 0); 229 ((my $last_pos) = $MATCH->to()); 230 for ( ; ((do { 231 ((my $pos1) = $MATCH->to()); 232 (do { 233 ((((('::' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))) && (do { 234 ((my $m2) = $grammar->ident($str, $MATCH->to())); 235 if ($m2) { 236 (($MATCH)->{to} = $m2->to()); 237 1 238 } 239 else { 240 0 241 } 242})) && (do { 243 ((my $tmp) = $MATCH); 244 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1))); 245 (($MATCH)->{bool} = (do { 246 ((my $pos1) = $MATCH->to()); 247 (do { 248 (('::' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to())))) 249}) 250})); 251 (($tmp)->{bool} = !!($MATCH)); 252 ($MATCH = $tmp); 253 !!($MATCH) 254})) 255}) 256}) && (($last_match_null < 2))); ) { 257 if (($last_pos == $MATCH->to())) { 258 ($last_match_null = ($last_match_null + 1)) 259 } 260 else { 261 ($last_match_null = 0) 262 }; 263 ($last_pos = $MATCH->to()) 264 }; 265 (($MATCH)->{to} = $last_pos); 266 1 267})) 268}) 269}))); 270 $MATCH 271 }; 272 sub optional_namespace_before_ident { 273 my $grammar = $_[0]; 274 my $str = $_[1]; 275 my $pos = $_[2]; 276 (my $MATCH); 277 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 278 (($MATCH)->{bool} = ((do { 279 ((my $pos1) = $MATCH->to()); 280 ((do { 281 (((do { 282 ((my $m2) = $grammar->namespace_before_ident($str, $MATCH->to())); 283 if ($m2) { 284 (($MATCH)->{to} = $m2->to()); 285 ($MATCH->{'namespace_before_ident'} = $m2); 286 1 287 } 288 else { 289 0 290 } 291}) && ((('::' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to())))))) && (((do { 292 ($MATCH->{capture} = ("".($MATCH->{'namespace_before_ident'}))) 293}) || 1))) 294}) || (do { 295 (($MATCH)->{to} = $pos1); 296 ((1 && (((do { 297 ($MATCH->{capture} = ('')) 298}) || 1)))) 299})) 300}))); 301 $MATCH 302 }; 303 sub pod_begin { 304 my $grammar = $_[0]; 305 my $str = $_[1]; 306 my $pos = $_[2]; 307 (my $MATCH); 308 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 309 (($MATCH)->{bool} = ((do { 310 ((my $pos1) = $MATCH->to()); 311 ((do { 312 (((do { 313 ((my $m2) = $grammar->is_newline($str, $MATCH->to())); 314 if ($m2) { 315 (($MATCH)->{to} = $m2->to()); 316 1 317 } 318 else { 319 0 320 } 321}) && (((chr(61) . 'end' eq substr($str, $MATCH->to(), 4)) && ((($MATCH)->{to} = (4 + $MATCH->to())))))) && (do { 322 ((my $last_match_null) = 0); 323 ((my $last_pos) = $MATCH->to()); 324 for ( ; ((do { 325 ((my $m2) = $grammar->not_newline($str, $MATCH->to())); 326 if ($m2) { 327 (($MATCH)->{to} = $m2->to()); 328 1 329 } 330 else { 331 0 332 } 333}) && (($last_match_null < 2))); ) { 334 if (($last_pos == $MATCH->to())) { 335 ($last_match_null = ($last_match_null + 1)) 336 } 337 else { 338 ($last_match_null = 0) 339 }; 340 ($last_pos = $MATCH->to()) 341 }; 342 (($MATCH)->{to} = $last_pos); 343 1 344})) 345}) || (do { 346 (($MATCH)->{to} = $pos1); 347 (((((('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 348 ((my $last_match_null) = 0); 349 ((my $last_pos) = $MATCH->to()); 350 for ( ; ((do { 351 ((my $m2) = $grammar->not_newline($str, $MATCH->to())); 352 if ($m2) { 353 (($MATCH)->{to} = $m2->to()); 354 1 355 } 356 else { 357 0 358 } 359}) && (($last_match_null < 2))); ) { 360 if (($last_pos == $MATCH->to())) { 361 ($last_match_null = ($last_match_null + 1)) 362 } 363 else { 364 ($last_match_null = 0) 365 }; 366 ($last_pos = $MATCH->to()) 367 }; 368 (($MATCH)->{to} = $last_pos); 369 1 370})) && (do { 371 ((my $m2) = $grammar->pod_begin($str, $MATCH->to())); 372 if ($m2) { 373 (($MATCH)->{to} = $m2->to()); 374 1 375 } 376 else { 377 0 378 } 379}))) 380})) 381}))); 382 $MATCH 383 }; 384 sub ws { 385 my $grammar = $_[0]; 386 my $str = $_[1]; 387 my $pos = $_[2]; 388 (my $MATCH); 389 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 390 (($MATCH)->{bool} = ((do { 391 ((my $pos1) = $MATCH->to()); 392 (do { 393 ((my $last_match_null) = 0); 394 ((my $last_pos) = $MATCH->to()); 395 ((my $count) = 0); 396 for ( ; ((do { 397 ((my $pos1) = $MATCH->to()); 398 (((do { 399 ((((chr(35) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 400 ((my $last_match_null) = 0); 401 ((my $last_pos) = $MATCH->to()); 402 for ( ; ((do { 403 ((my $m2) = $grammar->not_newline($str, $MATCH->to())); 404 if ($m2) { 405 (($MATCH)->{to} = $m2->to()); 406 1 407 } 408 else { 409 0 410 } 411}) && (($last_match_null < 2))); ) { 412 if (($last_pos == $MATCH->to())) { 413 ($last_match_null = ($last_match_null + 1)) 414 } 415 else { 416 ($last_match_null = 0) 417 }; 418 ($last_pos = $MATCH->to()) 419 }; 420 (($MATCH)->{to} = $last_pos); 421 1 422})) 423}) || (do { 424 (($MATCH)->{to} = $pos1); 425 (((do { 426 ((my $m2) = $grammar->is_newline($str, $MATCH->to())); 427 if ($m2) { 428 (($MATCH)->{to} = $m2->to()); 429 1 430 } 431 else { 432 0 433 } 434}) && (do { 435 ((my $pos1) = $MATCH->to()); 436 (((do { 437 ((((chr(61) . 'begin' eq substr($str, $MATCH->to(), 6)) && ((($MATCH)->{to} = (6 + $MATCH->to()))))) && (do { 438 ((my $m2) = $grammar->pod_begin($str, $MATCH->to())); 439 if ($m2) { 440 (($MATCH)->{to} = $m2->to()); 441 1 442 } 443 else { 444 0 445 } 446})) 447}) || (do { 448 (($MATCH)->{to} = $pos1); 449 (((((chr(61) . 'for' eq substr($str, $MATCH->to(), 4)) && ((($MATCH)->{to} = (4 + $MATCH->to()))))) && (do { 450 ((my $m2) = $grammar->pod_begin($str, $MATCH->to())); 451 if ($m2) { 452 (($MATCH)->{to} = $m2->to()); 453 1 454 } 455 else { 456 0 457 } 458}))) 459})) || (do { 460 (($MATCH)->{to} = $pos1); 461 (1) 462})) 463}))) 464})) || (do { 465 (($MATCH)->{to} = $pos1); 466 ((do { 467 ((my $m2) = $grammar->space($str, $MATCH->to())); 468 if ($m2) { 469 (($MATCH)->{to} = $m2->to()); 470 1 471 } 472 else { 473 0 474 } 475})) 476})) 477}) && (($last_match_null < 2))); ) { 478 if (($last_pos == $MATCH->to())) { 479 ($last_match_null = ($last_match_null + 1)) 480 } 481 else { 482 ($last_match_null = 0) 483 }; 484 ($last_pos = $MATCH->to()); 485 ($count = ($count + 1)) 486 }; 487 (($MATCH)->{to} = $last_pos); 488 ($count > 0) 489}) 490}))); 491 $MATCH 492 }; 493 sub opt_ws { 494 my $grammar = $_[0]; 495 my $str = $_[1]; 496 my $pos = $_[2]; 497 (my $MATCH); 498 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 499 (($MATCH)->{bool} = ((do { 500 ((my $pos1) = $MATCH->to()); 501 (do { 502 ((my $last_pos) = $MATCH->to()); 503 if (!((do { 504 ((my $m2) = $grammar->ws($str, $MATCH->to())); 505 if ($m2) { 506 (($MATCH)->{to} = $m2->to()); 507 1 508 } 509 else { 510 0 511 } 512}))) { 513 (($MATCH)->{to} = $last_pos) 514 }; 515 1 516}) 517}))); 518 $MATCH 519 }; 520 sub opt_ws2 { 521 my $grammar = $_[0]; 522 my $str = $_[1]; 523 my $pos = $_[2]; 524 (my $MATCH); 525 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 526 (($MATCH)->{bool} = ((do { 527 ((my $pos1) = $MATCH->to()); 528 (do { 529 ((my $last_pos) = $MATCH->to()); 530 if (!((do { 531 ((my $m2) = $grammar->ws($str, $MATCH->to())); 532 if ($m2) { 533 (($MATCH)->{to} = $m2->to()); 534 1 535 } 536 else { 537 0 538 } 539}))) { 540 (($MATCH)->{to} = $last_pos) 541 }; 542 1 543}) 544}))); 545 $MATCH 546 }; 547 sub opt_ws3 { 548 my $grammar = $_[0]; 549 my $str = $_[1]; 550 my $pos = $_[2]; 551 (my $MATCH); 552 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 553 (($MATCH)->{bool} = ((do { 554 ((my $pos1) = $MATCH->to()); 555 (do { 556 ((my $last_pos) = $MATCH->to()); 557 if (!((do { 558 ((my $m2) = $grammar->ws($str, $MATCH->to())); 559 if ($m2) { 560 (($MATCH)->{to} = $m2->to()); 561 1 562 } 563 else { 564 0 565 } 566}))) { 567 (($MATCH)->{to} = $last_pos) 568 }; 569 1 570}) 571}))); 572 $MATCH 573 }; 574 sub grammar { 575 my $grammar = $_[0]; 576 my $str = $_[1]; 577 my $pos = $_[2]; 578 (my $MATCH); 579 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 580 (($MATCH)->{bool} = ((do { 581 ((my $pos1) = $MATCH->to()); 582 (do { 583 ((((((((do { 584 ((my $m2) = $grammar->full_ident($str, $MATCH->to())); 585 if ($m2) { 586 (($MATCH)->{to} = $m2->to()); 587 ($MATCH->{'full_ident'} = $m2); 588 1 589 } 590 else { 591 0 592 } 593}) && (do { 594 ((my $last_pos) = $MATCH->to()); 595 if (!((do { 596 ((my $m2) = $grammar->ws($str, $MATCH->to())); 597 if ($m2) { 598 (($MATCH)->{to} = $m2->to()); 599 1 600 } 601 else { 602 0 603 } 604}))) { 605 (($MATCH)->{to} = $last_pos) 606 }; 607 1 608})) && (((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do { 609 ((my $last_pos) = $MATCH->to()); 610 if (!((do { 611 ((my $m2) = $grammar->ws($str, $MATCH->to())); 612 if ($m2) { 613 (($MATCH)->{to} = $m2->to()); 614 1 615 } 616 else { 617 0 618 } 619}))) { 620 (($MATCH)->{to} = $last_pos) 621 }; 622 1 623})) && (do { 624 ((my $m2) = $grammar->exp_stmts($str, $MATCH->to())); 625 if ($m2) { 626 (($MATCH)->{to} = $m2->to()); 627 ($MATCH->{'exp_stmts'} = $m2); 628 1 629 } 630 else { 631 0 632 } 633})) && (do { 634 ((my $last_pos) = $MATCH->to()); 635 if (!((do { 636 ((my $m2) = $grammar->ws($str, $MATCH->to())); 637 if ($m2) { 638 (($MATCH)->{to} = $m2->to()); 639 1 640 } 641 else { 642 0 643 } 644}))) { 645 (($MATCH)->{to} = $last_pos) 646 }; 647 1 648})) && (((chr(125) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do { 649 ($MATCH->{capture} = (CompUnit->new(('name' => ${$MATCH->{'full_ident'}}), ('body' => ${$MATCH->{'exp_stmts'}})))) 650}) || 1))) 651}) 652}))); 653 $MATCH 654 }; 655 sub declarator { 656 my $grammar = $_[0]; 657 my $str = $_[1]; 658 my $pos = $_[2]; 659 (my $MATCH); 660 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 661 (($MATCH)->{bool} = ((do { 662 ((my $pos1) = $MATCH->to()); 663 (((do { 664 (('my' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to())))) 665}) || (do { 666 (($MATCH)->{to} = $pos1); 667 (((('state' eq substr($str, $MATCH->to(), 5)) && ((($MATCH)->{to} = (5 + $MATCH->to())))))) 668})) || (do { 669 (($MATCH)->{to} = $pos1); 670 (((('has' eq substr($str, $MATCH->to(), 3)) && ((($MATCH)->{to} = (3 + $MATCH->to())))))) 671})) 672}))); 673 $MATCH 674 }; 675 sub exp_stmts2 { 676 my $grammar = $_[0]; 677 my $str = $_[1]; 678 my $pos = $_[2]; 679 (my $MATCH); 680 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 681 (($MATCH)->{bool} = ((do { 682 ((my $pos1) = $MATCH->to()); 683 (do { 684 ((do { 685 ((my $m2) = $grammar->exp_stmts($str, $MATCH->to())); 686 if ($m2) { 687 (($MATCH)->{to} = $m2->to()); 688 ($MATCH->{'exp_stmts'} = $m2); 689 1 690 } 691 else { 692 0 693 } 694}) && (((do { 695 ($MATCH->{capture} = (${$MATCH->{'exp_stmts'}})) 696}) || 1))) 697}) 698}))); 699 $MATCH 700 }; 701 sub exp { 702 my $grammar = $_[0]; 703 my $str = $_[1]; 704 my $pos = $_[2]; 705 (my $MATCH); 706 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 707 (($MATCH)->{bool} = ((do { 708 ((my $pos1) = $MATCH->to()); 709 (do { 710 ((do { 711 ((my $m2) = Perlito6::Expression->exp_parse($str, $MATCH->to())); 712 if ($m2) { 713 (($MATCH)->{to} = $m2->to()); 714 ($MATCH->{'Perlito6::Expression.exp_parse'} = $m2); 715 1 716 } 717 else { 718 0 719 } 720}) && (((do { 721 ($MATCH->{capture} = (${$MATCH->{'Perlito6::Expression.exp_parse'}})) 722}) || 1))) 723}) 724}))); 725 $MATCH 726 }; 727 sub exp2 { 728 my $grammar = $_[0]; 729 my $str = $_[1]; 730 my $pos = $_[2]; 731 (my $MATCH); 732 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 733 (($MATCH)->{bool} = ((do { 734 ((my $pos1) = $MATCH->to()); 735 (do { 736 ((do { 737 ((my $m2) = Perlito6::Expression->exp_parse($str, $MATCH->to())); 738 if ($m2) { 739 (($MATCH)->{to} = $m2->to()); 740 ($MATCH->{'Perlito6::Expression.exp_parse'} = $m2); 741 1 742 } 743 else { 744 0 745 } 746}) && (((do { 747 ($MATCH->{capture} = (${$MATCH->{'Perlito6::Expression.exp_parse'}})) 748}) || 1))) 749}) 750}))); 751 $MATCH 752 }; 753 sub opt_ident { 754 my $grammar = $_[0]; 755 my $str = $_[1]; 756 my $pos = $_[2]; 757 (my $MATCH); 758 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 759 (($MATCH)->{bool} = ((do { 760 ((my $pos1) = $MATCH->to()); 761 ((do { 762 ((do { 763 ((my $m2) = $grammar->ident($str, $MATCH->to())); 764 if ($m2) { 765 (($MATCH)->{to} = $m2->to()); 766 ($MATCH->{'ident'} = $m2); 767 1 768 } 769 else { 770 0 771 } 772}) && (((do { 773 ($MATCH->{capture} = (${$MATCH->{'ident'}})) 774}) || 1))) 775}) || (do { 776 (($MATCH)->{to} = $pos1); 777 ((1 && (((do { 778 ($MATCH->{capture} = ('postcircumfix:<( )>')) 779}) || 1)))) 780})) 781}))); 782 $MATCH 783 }; 784 sub opt_type { 785 my $grammar = $_[0]; 786 my $str = $_[1]; 787 my $pos = $_[2]; 788 (my $MATCH); 789 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 790 (($MATCH)->{bool} = ((do { 791 ((my $pos1) = $MATCH->to()); 792 ((do { 793 (((do { 794 ((my $last_pos) = $MATCH->to()); 795 if (!((do { 796 (('::' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to())))) 797}))) { 798 (($MATCH)->{to} = $last_pos) 799 }; 800 1 801}) && (do { 802 ((my $m2) = $grammar->full_ident($str, $MATCH->to())); 803 if ($m2) { 804 (($MATCH)->{to} = $m2->to()); 805 ($MATCH->{'full_ident'} = $m2); 806 1 807 } 808 else { 809 0 810 } 811})) && (((do { 812 ($MATCH->{capture} = (${$MATCH->{'full_ident'}})) 813}) || 1))) 814}) || (do { 815 (($MATCH)->{to} = $pos1); 816 ((1 && (((do { 817 ($MATCH->{capture} = ('')) 818}) || 1)))) 819})) 820}))); 821 $MATCH 822 }; 823 sub var_sigil { 824 my $grammar = $_[0]; 825 my $str = $_[1]; 826 my $pos = $_[2]; 827 (my $MATCH); 828 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 829 (($MATCH)->{bool} = ((do { 830 ((my $pos1) = $MATCH->to()); 831 ((((do { 832 ((chr(36) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 833}) || (do { 834 (($MATCH)->{to} = $pos1); 835 ((((chr(37) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 836})) || (do { 837 (($MATCH)->{to} = $pos1); 838 ((((chr(64) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 839})) || (do { 840 (($MATCH)->{to} = $pos1); 841 ((((chr(38) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 842})) 843}))); 844 $MATCH 845 }; 846 sub var_twigil { 847 my $grammar = $_[0]; 848 my $str = $_[1]; 849 my $pos = $_[2]; 850 (my $MATCH); 851 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 852 (($MATCH)->{bool} = ((do { 853 ((my $pos1) = $MATCH->to()); 854 (do { 855 ((my $last_pos) = $MATCH->to()); 856 if (!((do { 857 ((my $pos1) = $MATCH->to()); 858 ((((do { 859 (('.' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 860}) || (do { 861 (($MATCH)->{to} = $pos1); 862 ((((chr(33) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 863})) || (do { 864 (($MATCH)->{to} = $pos1); 865 ((((chr(94) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 866})) || (do { 867 (($MATCH)->{to} = $pos1); 868 (((('*' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 869})) 870}))) { 871 (($MATCH)->{to} = $last_pos) 872 }; 873 1 874}) 875}))); 876 $MATCH 877 }; 878 sub var_name { 879 my $grammar = $_[0]; 880 my $str = $_[1]; 881 my $pos = $_[2]; 882 (my $MATCH); 883 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 884 (($MATCH)->{bool} = ((do { 885 ((my $pos1) = $MATCH->to()); 886 (((do { 887 ((my $m2) = $grammar->full_ident($str, $MATCH->to())); 888 if ($m2) { 889 (($MATCH)->{to} = $m2->to()); 890 ($MATCH->{'full_ident'} = $m2); 891 1 892 } 893 else { 894 0 895 } 896}) || (do { 897 (($MATCH)->{to} = $pos1); 898 ((((chr(47) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 899})) || (do { 900 (($MATCH)->{to} = $pos1); 901 ((do { 902 ((my $m2) = $grammar->digit($str, $MATCH->to())); 903 if ($m2) { 904 (($MATCH)->{to} = $m2->to()); 905 ($MATCH->{'digit'} = $m2); 906 1 907 } 908 else { 909 0 910 } 911})) 912})) 913}))); 914 $MATCH 915 }; 916 sub var_ident { 917 my $grammar = $_[0]; 918 my $str = $_[1]; 919 my $pos = $_[2]; 920 (my $MATCH); 921 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 922 (($MATCH)->{bool} = ((do { 923 ((my $pos1) = $MATCH->to()); 924 (do { 925 (((((do { 926 ((my $m2) = $grammar->var_sigil($str, $MATCH->to())); 927 if ($m2) { 928 (($MATCH)->{to} = $m2->to()); 929 ($MATCH->{'var_sigil'} = $m2); 930 1 931 } 932 else { 933 0 934 } 935}) && (do { 936 ((my $m2) = $grammar->var_twigil($str, $MATCH->to())); 937 if ($m2) { 938 (($MATCH)->{to} = $m2->to()); 939 ($MATCH->{'var_twigil'} = $m2); 940 1 941 } 942 else { 943 0 944 } 945})) && (do { 946 ((my $m2) = $grammar->optional_namespace_before_ident($str, $MATCH->to())); 947 if ($m2) { 948 (($MATCH)->{to} = $m2->to()); 949 ($MATCH->{'optional_namespace_before_ident'} = $m2); 950 1 951 } 952 else { 953 0 954 } 955})) && (do { 956 ((my $m2) = $grammar->var_name($str, $MATCH->to())); 957 if ($m2) { 958 (($MATCH)->{to} = $m2->to()); 959 ($MATCH->{'var_name'} = $m2); 960 1 961 } 962 else { 963 0 964 } 965})) && (((do { 966 ($MATCH->{capture} = (Var->new(('sigil' => "".($MATCH->{'var_sigil'})), ('twigil' => "".($MATCH->{'var_twigil'})), ('namespace' => ${$MATCH->{'optional_namespace_before_ident'}}), ('name' => "".($MATCH->{'var_name'}))))) 967}) || 1))) 968}) 969}))); 970 $MATCH 971 }; 972 sub exponent { 973 my $grammar = $_[0]; 974 my $str = $_[1]; 975 my $pos = $_[2]; 976 (my $MATCH); 977 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 978 (($MATCH)->{bool} = ((do { 979 ((my $pos1) = $MATCH->to()); 980 (do { 981 (((do { 982 ((my $pos1) = $MATCH->to()); 983 ((do { 984 (('e' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 985}) || (do { 986 (($MATCH)->{to} = $pos1); 987 (((('E' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 988})) 989}) && (do { 990 ((my $pos1) = $MATCH->to()); 991 (((do { 992 (('+' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 993}) || (do { 994 (($MATCH)->{to} = $pos1); 995 (((('-' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 996})) || (do { 997 (($MATCH)->{to} = $pos1); 998 (1) 999})) 1000})) && (do { 1001 ((my $last_match_null) = 0); 1002 ((my $last_pos) = $MATCH->to()); 1003 ((my $count) = 0); 1004 for ( ; ((do { 1005 ((my $m2) = $grammar->digit($str, $MATCH->to())); 1006 if ($m2) { 1007 (($MATCH)->{to} = $m2->to()); 1008 1 1009 } 1010 else { 1011 0 1012 } 1013}) && (($last_match_null < 2))); ) { 1014 if (($last_pos == $MATCH->to())) { 1015 ($last_match_null = ($last_match_null + 1)) 1016 } 1017 else { 1018 ($last_match_null = 0) 1019 }; 1020 ($last_pos = $MATCH->to()); 1021 ($count = ($count + 1)) 1022 }; 1023 (($MATCH)->{to} = $last_pos); 1024 ($count > 0) 1025})) 1026}) 1027}))); 1028 $MATCH 1029 }; 1030 sub val_num { 1031 my $grammar = $_[0]; 1032 my $str = $_[1]; 1033 my $pos = $_[2]; 1034 (my $MATCH); 1035 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 1036 (($MATCH)->{bool} = ((do { 1037 ((my $pos1) = $MATCH->to()); 1038 (do { 1039 ((do { 1040 ((my $pos1) = $MATCH->to()); 1041 ((do { 1042 ((((('.' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 1043 ((my $last_match_null) = 0); 1044 ((my $last_pos) = $MATCH->to()); 1045 ((my $count) = 0); 1046 for ( ; ((do { 1047 ((my $m2) = $grammar->digit($str, $MATCH->to())); 1048 if ($m2) { 1049 (($MATCH)->{to} = $m2->to()); 1050 1 1051 } 1052 else { 1053 0 1054 } 1055}) && (($last_match_null < 2))); ) { 1056 if (($last_pos == $MATCH->to())) { 1057 ($last_match_null = ($last_match_null + 1)) 1058 } 1059 else { 1060 ($last_match_null = 0) 1061 }; 1062 ($last_pos = $MATCH->to()); 1063 ($count = ($count + 1)) 1064 }; 1065 (($MATCH)->{to} = $last_pos); 1066 ($count > 0) 1067})) && (do { 1068 ((my $last_pos) = $MATCH->to()); 1069 if (!((do { 1070 ((my $m2) = $grammar->exponent($str, $MATCH->to())); 1071 if ($m2) { 1072 (($MATCH)->{to} = $m2->to()); 1073 1 1074 } 1075 else { 1076 0 1077 } 1078}))) { 1079 (($MATCH)->{to} = $last_pos) 1080 }; 1081 1 1082})) 1083}) || (do { 1084 (($MATCH)->{to} = $pos1); 1085 (((do { 1086 ((my $last_match_null) = 0); 1087 ((my $last_pos) = $MATCH->to()); 1088 ((my $count) = 0); 1089 for ( ; ((do { 1090 ((my $m2) = $grammar->digit($str, $MATCH->to())); 1091 if ($m2) { 1092 (($MATCH)->{to} = $m2->to()); 1093 1 1094 } 1095 else { 1096 0 1097 } 1098}) && (($last_match_null < 2))); ) { 1099 if (($last_pos == $MATCH->to())) { 1100 ($last_match_null = ($last_match_null + 1)) 1101 } 1102 else { 1103 ($last_match_null = 0) 1104 }; 1105 ($last_pos = $MATCH->to()); 1106 ($count = ($count + 1)) 1107 }; 1108 (($MATCH)->{to} = $last_pos); 1109 ($count > 0) 1110}) && (do { 1111 ((my $pos1) = $MATCH->to()); 1112 ((do { 1113 ((my $m2) = $grammar->exponent($str, $MATCH->to())); 1114 if ($m2) { 1115 (($MATCH)->{to} = $m2->to()); 1116 1 1117 } 1118 else { 1119 0 1120 } 1121}) || (do { 1122 (($MATCH)->{to} = $pos1); 1123 (((((('.' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 1124 ((my $last_match_null) = 0); 1125 ((my $last_pos) = $MATCH->to()); 1126 ((my $count) = 0); 1127 for ( ; ((do { 1128 ((my $m2) = $grammar->digit($str, $MATCH->to())); 1129 if ($m2) { 1130 (($MATCH)->{to} = $m2->to()); 1131 1 1132 } 1133 else { 1134 0 1135 } 1136}) && (($last_match_null < 2))); ) { 1137 if (($last_pos == $MATCH->to())) { 1138 ($last_match_null = ($last_match_null + 1)) 1139 } 1140 else { 1141 ($last_match_null = 0) 1142 }; 1143 ($last_pos = $MATCH->to()); 1144 ($count = ($count + 1)) 1145 }; 1146 (($MATCH)->{to} = $last_pos); 1147 ($count > 0) 1148})) && (do { 1149 ((my $last_pos) = $MATCH->to()); 1150 if (!((do { 1151 ((my $m2) = $grammar->exponent($str, $MATCH->to())); 1152 if ($m2) { 1153 (($MATCH)->{to} = $m2->to()); 1154 1 1155 } 1156 else { 1157 0 1158 } 1159}))) { 1160 (($MATCH)->{to} = $last_pos) 1161 }; 1162 1 1163}))) 1164})) 1165}))) 1166})) 1167}) && (((do { 1168 ($MATCH->{capture} = (Val::Num->new(('num' => "".($MATCH))))) 1169}) || 1))) 1170}) 1171}))); 1172 $MATCH 1173 }; 1174 sub char_any { 1175 my $grammar = $_[0]; 1176 my $str = $_[1]; 1177 my $pos = $_[2]; 1178 (my $MATCH); 1179 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 1180 (($MATCH)->{bool} = ((do { 1181 ((my $pos1) = $MATCH->to()); 1182 (do { 1183 (('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 1184}) 1185}))); 1186 $MATCH 1187 }; 1188 sub char_any_single_quote { 1189 my $grammar = $_[0]; 1190 my $str = $_[1]; 1191 my $pos = $_[2]; 1192 (my $MATCH); 1193 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 1194 (($MATCH)->{bool} = ((do { 1195 ((my $pos1) = $MATCH->to()); 1196 (do { 1197 (((do { 1198 ((my $tmp) = $MATCH); 1199 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1))); 1200 (($MATCH)->{bool} = (do { 1201 ((my $pos1) = $MATCH->to()); 1202 (do { 1203 ((chr(39) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 1204}) 1205})); 1206 (($tmp)->{bool} = !($MATCH)); 1207 ($MATCH = $tmp); 1208 !!($MATCH) 1209}) && ((('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do { 1210 ((my $last_match_null) = 0); 1211 ((my $last_pos) = $MATCH->to()); 1212 for ( ; ((do { 1213 ((my $pos1) = $MATCH->to()); 1214 (do { 1215 ((do { 1216 ((my $tmp) = $MATCH); 1217 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1))); 1218 (($MATCH)->{bool} = (do { 1219 ((my $pos1) = $MATCH->to()); 1220 (do { 1221 ((my $pos1) = $MATCH->to()); 1222 ((do { 1223 ((chr(39) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 1224}) || (do { 1225 (($MATCH)->{to} = $pos1); 1226 ((((chr(92) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 1227})) 1228}) 1229})); 1230 (($tmp)->{bool} = !($MATCH)); 1231 ($MATCH = $tmp); 1232 !!($MATCH) 1233}) && ((('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 1234}) 1235}) && (($last_match_null < 2))); ) { 1236 if (($last_pos == $MATCH->to())) { 1237 ($last_match_null = ($last_match_null + 1)) 1238 } 1239 else { 1240 ($last_match_null = 0) 1241 }; 1242 ($last_pos = $MATCH->to()) 1243 }; 1244 (($MATCH)->{to} = $last_pos); 1245 1 1246})) 1247}) 1248}))); 1249 $MATCH 1250 }; 1251 sub single_quoted_unescape { 1252 my $grammar = $_[0]; 1253 my $str = $_[1]; 1254 my $pos = $_[2]; 1255 (my $MATCH); 1256 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 1257 (($MATCH)->{bool} = ((do { 1258 ((my $pos1) = $MATCH->to()); 1259 (((((do { 1260 ((((((chr(92) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (((chr(92) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do { 1261 ((my $m2) = $grammar->single_quoted_unescape($str, $MATCH->to())); 1262 if ($m2) { 1263 (($MATCH)->{to} = $m2->to()); 1264 ($MATCH->{'single_quoted_unescape'} = $m2); 1265 1 1266 } 1267 else { 1268 0 1269 } 1270})) && (((do { 1271 ($MATCH->{capture} = ((chr(92) . $MATCH->{'single_quoted_unescape'}))) 1272}) || 1))) 1273}) || (do { 1274 (($MATCH)->{to} = $pos1); 1275 (((((((chr(92) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (((chr(39) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do { 1276 ((my $m2) = $grammar->single_quoted_unescape($str, $MATCH->to())); 1277 if ($m2) { 1278 (($MATCH)->{to} = $m2->to()); 1279 ($MATCH->{'single_quoted_unescape'} = $m2); 1280 1 1281 } 1282 else { 1283 0 1284 } 1285})) && (((do { 1286 ($MATCH->{capture} = ((chr(39) . $MATCH->{'single_quoted_unescape'}))) 1287}) || 1)))) 1288})) || (do { 1289 (($MATCH)->{to} = $pos1); 1290 ((((((chr(92) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 1291 ((my $m2) = $grammar->single_quoted_unescape($str, $MATCH->to())); 1292 if ($m2) { 1293 (($MATCH)->{to} = $m2->to()); 1294 ($MATCH->{'single_quoted_unescape'} = $m2); 1295 1 1296 } 1297 else { 1298 0 1299 } 1300})) && (((do { 1301 ($MATCH->{capture} = ((chr(92) . $MATCH->{'single_quoted_unescape'}))) 1302}) || 1)))) 1303})) || (do { 1304 (($MATCH)->{to} = $pos1); 1305 ((((do { 1306 ((my $m2) = $grammar->char_any_single_quote($str, $MATCH->to())); 1307 if ($m2) { 1308 (($MATCH)->{to} = $m2->to()); 1309 ($MATCH->{'char_any_single_quote'} = $m2); 1310 1 1311 } 1312 else { 1313 0 1314 } 1315}) && (do { 1316 ((my $m2) = $grammar->single_quoted_unescape($str, $MATCH->to())); 1317 if ($m2) { 1318 (($MATCH)->{to} = $m2->to()); 1319 ($MATCH->{'single_quoted_unescape'} = $m2); 1320 1 1321 } 1322 else { 1323 0 1324 } 1325})) && (((do { 1326 ($MATCH->{capture} = (($MATCH->{'char_any_single_quote'} . $MATCH->{'single_quoted_unescape'}))) 1327}) || 1)))) 1328})) || (do { 1329 (($MATCH)->{to} = $pos1); 1330 (1) 1331})) 1332}))); 1333 $MATCH 1334 }; 1335 sub char_any_double_quote { 1336 my $grammar = $_[0]; 1337 my $str = $_[1]; 1338 my $pos = $_[2]; 1339 (my $MATCH); 1340 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 1341 (($MATCH)->{bool} = ((do { 1342 ((my $pos1) = $MATCH->to()); 1343 (do { 1344 (((do { 1345 ((my $tmp) = $MATCH); 1346 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1))); 1347 (($MATCH)->{bool} = (do { 1348 ((my $pos1) = $MATCH->to()); 1349 (do { 1350 ((my $pos1) = $MATCH->to()); 1351 (((((do { 1352 ((chr(34) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 1353}) || (do { 1354 (($MATCH)->{to} = $pos1); 1355 ((((chr(36) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 1356})) || (do { 1357 (($MATCH)->{to} = $pos1); 1358 ((((chr(64) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 1359})) || (do { 1360 (($MATCH)->{to} = $pos1); 1361 ((((chr(37) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 1362})) || (do { 1363 (($MATCH)->{to} = $pos1); 1364 ((((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 1365})) 1366}) 1367})); 1368 (($tmp)->{bool} = !($MATCH)); 1369 ($MATCH = $tmp); 1370 !!($MATCH) 1371}) && ((('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do { 1372 ((my $last_match_null) = 0); 1373 ((my $last_pos) = $MATCH->to()); 1374 for ( ; ((do { 1375 ((my $pos1) = $MATCH->to()); 1376 (do { 1377 ((do { 1378 ((my $tmp) = $MATCH); 1379 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1))); 1380 (($MATCH)->{bool} = (do { 1381 ((my $pos1) = $MATCH->to()); 1382 (do { 1383 ((my $pos1) = $MATCH->to()); 1384 ((((((do { 1385 ((chr(34) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 1386}) || (do { 1387 (($MATCH)->{to} = $pos1); 1388 ((((chr(36) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 1389})) || (do { 1390 (($MATCH)->{to} = $pos1); 1391 ((((chr(64) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 1392})) || (do { 1393 (($MATCH)->{to} = $pos1); 1394 ((((chr(37) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 1395})) || (do { 1396 (($MATCH)->{to} = $pos1); 1397 ((((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 1398})) || (do { 1399 (($MATCH)->{to} = $pos1); 1400 ((((chr(92) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 1401})) 1402}) 1403})); 1404 (($tmp)->{bool} = !($MATCH)); 1405 ($MATCH = $tmp); 1406 !!($MATCH) 1407}) && ((('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) 1408}) 1409}) && (($last_match_null < 2))); ) { 1410 if (($last_pos == $MATCH->to())) { 1411 ($last_match_null = ($last_match_null + 1)) 1412 } 1413 else { 1414 ($last_match_null = 0) 1415 }; 1416 ($last_pos = $MATCH->to()) 1417 }; 1418 (($MATCH)->{to} = $last_pos); 1419 1 1420})) 1421}) 1422}))); 1423 $MATCH 1424 }; 1425 sub double_quoted_unescape { 1426 my $grammar = $_[0]; 1427 my $str = $_[1]; 1428 my $pos = $_[2]; 1429 (my $MATCH); 1430 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 1431 (($MATCH)->{bool} = ((do { 1432 ((my $pos1) = $MATCH->to()); 1433 ((do { 1434 ((((chr(92) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 1435 ((my $pos1) = $MATCH->to()); 1436 (((((do { 1437 (((('c' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 1438 ((my $pos1) = $MATCH->to()); 1439 ((do { 1440 (((((('[' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 1441 ((my $m2) = $grammar->digits($str, $MATCH->to())); 1442 if ($m2) { 1443 (($MATCH)->{to} = $m2->to()); 1444 ($MATCH->{'digits'} = $m2); 1445 1 1446 } 1447 else { 1448 0 1449 } 1450})) && (((']' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do { 1451 ($MATCH->{capture} = (chr($MATCH->{'digits'}))) 1452}) || 1))) 1453}) || (do { 1454 (($MATCH)->{to} = $pos1); 1455 (((do { 1456 ((my $m2) = $grammar->digits($str, $MATCH->to())); 1457 if ($m2) { 1458 (($MATCH)->{to} = $m2->to()); 1459 ($MATCH->{'digits'} = $m2); 1460 1 1461 } 1462 else { 1463 0 1464 } 1465}) && (((do { 1466 ($MATCH->{capture} = (chr($MATCH->{'digits'}))) 1467}) || 1)))) 1468})) 1469})) 1470}) || (do { 1471 (($MATCH)->{to} = $pos1); 1472 ((((('e' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (((do { 1473 ($MATCH->{capture} = (chr(27))) 1474}) || 1)))) 1475})) || (do { 1476 (($MATCH)->{to} = $pos1); 1477 ((((('n' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (((do { 1478 ($MATCH->{capture} = ((chr(10)))) 1479}) || 1)))) 1480})) || (do { 1481 (($MATCH)->{to} = $pos1); 1482 ((((('t' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (((do { 1483 ($MATCH->{capture} = (chr(9))) 1484}) || 1)))) 1485})) || (do { 1486 (($MATCH)->{to} = $pos1); 1487 (((do { 1488 ((my $m2) = $grammar->char_any($str, $MATCH->to())); 1489 if ($m2) { 1490 (($MATCH)->{to} = $m2->to()); 1491 ($MATCH->{'char_any'} = $m2); 1492 1 1493 } 1494 else { 1495 0 1496 } 1497}) && (((do { 1498 ($MATCH->{capture} = ("".($MATCH->{'char_any'}))) 1499}) || 1)))) 1500})) 1501})) 1502}) || (do { 1503 (($MATCH)->{to} = $pos1); 1504 (((do { 1505 ((my $m2) = $grammar->char_any_double_quote($str, $MATCH->to())); 1506 if ($m2) { 1507 (($MATCH)->{to} = $m2->to()); 1508 ($MATCH->{'char_any_double_quote'} = $m2); 1509 1 1510 } 1511 else { 1512 0 1513 } 1514}) && (((do { 1515 ($MATCH->{capture} = ("".($MATCH->{'char_any_double_quote'}))) 1516}) || 1)))) 1517})) 1518}))); 1519 $MATCH 1520 }; 1521 sub double_quoted_buf { 1522 my $grammar = $_[0]; 1523 my $str = $_[1]; 1524 my $pos = $_[2]; 1525 (my $MATCH); 1526 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 1527 (($MATCH)->{bool} = ((do { 1528 ((my $pos1) = $MATCH->to()); 1529 (((((do { 1530 ((do { 1531 ((my $tmp) = $MATCH); 1532 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1))); 1533 (($MATCH)->{bool} = (do { 1534 ((my $pos1) = $MATCH->to()); 1535 (do { 1536 ((chr(36) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 1537}) 1538})); 1539 (($tmp)->{bool} = !!($MATCH)); 1540 ($MATCH = $tmp); 1541 !!($MATCH) 1542}) && (do { 1543 ((my $pos1) = $MATCH->to()); 1544 ((do { 1545 (((do { 1546 ((my $tmp) = $MATCH); 1547 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1))); 1548 (($MATCH)->{bool} = (do { 1549 ((my $pos1) = $MATCH->to()); 1550 (do { 1551 (((((chr(36) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 1552 ((my $m2) = $grammar->var_twigil($str, $MATCH->to())); 1553 if ($m2) { 1554 (($MATCH)->{to} = $m2->to()); 1555 1 1556 } 1557 else { 1558 0 1559 } 1560})) && (do { 1561 ((my $m2) = $grammar->ident($str, $MATCH->to())); 1562 if ($m2) { 1563 (($MATCH)->{to} = $m2->to()); 1564 1 1565 } 1566 else { 1567 0 1568 } 1569})) 1570}) 1571})); 1572 (($tmp)->{bool} = !!($MATCH)); 1573 ($MATCH = $tmp); 1574 !!($MATCH) 1575}) && (do { 1576 ((my $m2) = Perlito6::Expression->operator($str, $MATCH->to())); 1577 if ($m2) { 1578 (($MATCH)->{to} = $m2->to()); 1579 ($MATCH->{'Perlito6::Expression.operator'} = $m2); 1580 1 1581 } 1582 else { 1583 0 1584 } 1585})) && (((do { 1586 ($MATCH->{capture} = ((${$MATCH->{'Perlito6::Expression.operator'}})->[1])) 1587}) || 1))) 1588}) || (do { 1589 (($MATCH)->{to} = $pos1); 1590 (((do { 1591 ((my $m2) = $grammar->char_any($str, $MATCH->to())); 1592 if ($m2) { 1593 (($MATCH)->{to} = $m2->to()); 1594 ($MATCH->{'char_any'} = $m2); 1595 1 1596 } 1597 else { 1598 0 1599 } 1600}) && (((do { 1601 ($MATCH->{capture} = (Val::Buf->new(('buf' => "".($MATCH->{'char_any'}))))) 1602}) || 1)))) 1603})) 1604})) 1605}) || (do { 1606 (($MATCH)->{to} = $pos1); 1607 (((do { 1608 ((my $tmp) = $MATCH); 1609 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1))); 1610 (($MATCH)->{bool} = (do { 1611 ((my $pos1) = $MATCH->to()); 1612 (do { 1613 ((chr(64) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 1614}) 1615})); 1616 (($tmp)->{bool} = !!($MATCH)); 1617 ($MATCH = $tmp); 1618 !!($MATCH) 1619}) && (do { 1620 ((my $pos1) = $MATCH->to()); 1621 ((do { 1622 ((((do { 1623 ((my $tmp) = $MATCH); 1624 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1))); 1625 (($MATCH)->{bool} = (do { 1626 ((my $pos1) = $MATCH->to()); 1627 (do { 1628 (((((chr(64) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 1629 ((my $m2) = $grammar->var_twigil($str, $MATCH->to())); 1630 if ($m2) { 1631 (($MATCH)->{to} = $m2->to()); 1632 1 1633 } 1634 else { 1635 0 1636 } 1637})) && (do { 1638 ((my $m2) = $grammar->ident($str, $MATCH->to())); 1639 if ($m2) { 1640 (($MATCH)->{to} = $m2->to()); 1641 1 1642 } 1643 else { 1644 0 1645 } 1646})) 1647}) 1648})); 1649 (($tmp)->{bool} = !!($MATCH)); 1650 ($MATCH = $tmp); 1651 !!($MATCH) 1652}) && (do { 1653 ((my $m2) = Perlito6::Expression->operator($str, $MATCH->to())); 1654 if ($m2) { 1655 (($MATCH)->{to} = $m2->to()); 1656 ($MATCH->{'Perlito6::Expression.operator'} = $m2); 1657 1 1658 } 1659 else { 1660 0 1661 } 1662})) && ((('[]' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to())))))) && (((do { 1663 ($MATCH->{capture} = ((${$MATCH->{'Perlito6::Expression.operator'}})->[1])) 1664}) || 1))) 1665}) || (do { 1666 (($MATCH)->{to} = $pos1); 1667 (((do { 1668 ((my $m2) = $grammar->char_any($str, $MATCH->to())); 1669 if ($m2) { 1670 (($MATCH)->{to} = $m2->to()); 1671 ($MATCH->{'char_any'} = $m2); 1672 1 1673 } 1674 else { 1675 0 1676 } 1677}) && (((do { 1678 ($MATCH->{capture} = (Val::Buf->new(('buf' => "".($MATCH->{'char_any'}))))) 1679}) || 1)))) 1680})) 1681}))) 1682})) || (do { 1683 (($MATCH)->{to} = $pos1); 1684 (((do { 1685 ((my $tmp) = $MATCH); 1686 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1))); 1687 (($MATCH)->{bool} = (do { 1688 ((my $pos1) = $MATCH->to()); 1689 (do { 1690 ((chr(37) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 1691}) 1692})); 1693 (($tmp)->{bool} = !!($MATCH)); 1694 ($MATCH = $tmp); 1695 !!($MATCH) 1696}) && (do { 1697 ((my $pos1) = $MATCH->to()); 1698 ((do { 1699 ((((do { 1700 ((my $tmp) = $MATCH); 1701 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1))); 1702 (($MATCH)->{bool} = (do { 1703 ((my $pos1) = $MATCH->to()); 1704 (do { 1705 (((((chr(37) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 1706 ((my $m2) = $grammar->var_twigil($str, $MATCH->to())); 1707 if ($m2) { 1708 (($MATCH)->{to} = $m2->to()); 1709 1 1710 } 1711 else { 1712 0 1713 } 1714})) && (do { 1715 ((my $m2) = $grammar->ident($str, $MATCH->to())); 1716 if ($m2) { 1717 (($MATCH)->{to} = $m2->to()); 1718 1 1719 } 1720 else { 1721 0 1722 } 1723})) 1724}) 1725})); 1726 (($tmp)->{bool} = !!($MATCH)); 1727 ($MATCH = $tmp); 1728 !!($MATCH) 1729}) && (do { 1730 ((my $m2) = Perlito6::Expression->operator($str, $MATCH->to())); 1731 if ($m2) { 1732 (($MATCH)->{to} = $m2->to()); 1733 ($MATCH->{'Perlito6::Expression.operator'} = $m2); 1734 1 1735 } 1736 else { 1737 0 1738 } 1739})) && (((chr(123) . chr(125) eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to())))))) && (((do { 1740 ($MATCH->{capture} = ((${$MATCH->{'Perlito6::Expression.operator'}})->[1])) 1741}) || 1))) 1742}) || (do { 1743 (($MATCH)->{to} = $pos1); 1744 (((do { 1745 ((my $m2) = $grammar->char_any($str, $MATCH->to())); 1746 if ($m2) { 1747 (($MATCH)->{to} = $m2->to()); 1748 ($MATCH->{'char_any'} = $m2); 1749 1 1750 } 1751 else { 1752 0 1753 } 1754}) && (((do { 1755 ($MATCH->{capture} = (Val::Buf->new(('buf' => "".($MATCH->{'char_any'}))))) 1756}) || 1)))) 1757})) 1758}))) 1759})) || (do { 1760 (($MATCH)->{to} = $pos1); 1761 (((((((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 1762 ((my $m2) = $grammar->exp_stmts($str, $MATCH->to())); 1763 if ($m2) { 1764 (($MATCH)->{to} = $m2->to()); 1765 ($MATCH->{'exp_stmts'} = $m2); 1766 1 1767 } 1768 else { 1769 0 1770 } 1771})) && (((chr(125) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do { 1772 ($MATCH->{capture} = (Do->new(('block' => Lit::Block->new(('stmts' => ${$MATCH->{'exp_stmts'}})))))) 1773}) || 1)))) 1774})) || (do { 1775 (($MATCH)->{to} = $pos1); 1776 (((do { 1777 ((my $m2) = $grammar->double_quoted_unescape($str, $MATCH->to())); 1778 if ($m2) { 1779 (($MATCH)->{to} = $m2->to()); 1780 ($MATCH->{'double_quoted_unescape'} = $m2); 1781 1 1782 } 1783 else { 1784 0 1785 } 1786}) && (((do { 1787 ($MATCH->{capture} = (Val::Buf->new(('buf' => ${$MATCH->{'double_quoted_unescape'}})))) 1788}) || 1)))) 1789})) 1790}))); 1791 $MATCH 1792 }; 1793 sub val_buf { 1794 my $grammar = $_[0]; 1795 my $str = $_[1]; 1796 my $pos = $_[2]; 1797 (my $MATCH); 1798 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 1799 (($MATCH)->{bool} = ((do { 1800 ((my $pos1) = $MATCH->to()); 1801 ((do { 1802 ((((((chr(34) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 1803 ((my $last_match_null) = 0); 1804 ((my $last_pos) = $MATCH->to()); 1805 for ( ; ((do { 1806 ((my $m2) = $grammar->double_quoted_buf($str, $MATCH->to())); 1807 if ($m2) { 1808 (($MATCH)->{to} = $m2->to()); 1809 if (exists($MATCH->{'double_quoted_buf'})) { 1810 push( @{($MATCH->{'double_quoted_buf'})}, $m2 ) 1811 } 1812 else { 1813 ($MATCH->{'double_quoted_buf'} = do { 1814 (my $List_a = bless [], 'ARRAY'); 1815 (my $List_v = bless [], 'ARRAY'); 1816 push( @{$List_a}, $m2 ); 1817 $List_a 1818}) 1819 }; 1820 1 1821 } 1822 else { 1823 0 1824 } 1825}) && (($last_match_null < 2))); ) { 1826 if (($last_pos == $MATCH->to())) { 1827 ($last_match_null = ($last_match_null + 1)) 1828 } 1829 else { 1830 ($last_match_null = 0) 1831 }; 1832 ($last_pos = $MATCH->to()) 1833 }; 1834 (($MATCH)->{to} = $last_pos); 1835 1 1836})) && (((chr(34) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do { 1837 ((my $args) = $MATCH->{'double_quoted_buf'}); 1838 if (!($args)) { 1839 ($MATCH->{capture} = (Val::Buf->new(('buf' => '')))) 1840 } 1841 else { 1842 ($MATCH->{capture} = (Apply->new(('namespace' => ''), ('code' => 'list:<' . chr(126) . '>'), ('arguments' => [ map { $_->capture() } @{( ($MATCH->{'double_quoted_buf'}) )} ])))) 1843 } 1844}) || 1))) 1845}) || (do { 1846 (($MATCH)->{to} = $pos1); 1847 (((((((chr(39) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do { 1848 ((my $m2) = $grammar->single_quoted_unescape($str, $MATCH->to())); 1849 if ($m2) { 1850 (($MATCH)->{to} = $m2->to()); 1851 ($MATCH->{'single_quoted_unescape'} = $m2); 1852 1 1853 } 1854 else { 1855 0 1856 } 1857})) && (((chr(39) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do { 1858 ($MATCH->{capture} = (Val::Buf->new(('buf' => ${$MATCH->{'single_quoted_unescape'}})))) 1859}) || 1)))) 1860})) 1861}))); 1862 $MATCH 1863 }; 1864 sub digits { 1865 my $grammar = $_[0]; 1866 my $str = $_[1]; 1867 my $pos = $_[2]; 1868 (my $MATCH); 1869 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 1870 (($MATCH)->{bool} = ((do { 1871 ((my $pos1) = $MATCH->to()); 1872 (do { 1873 ((my $last_match_null) = 0); 1874 ((my $last_pos) = $MATCH->to()); 1875 ((my $count) = 0); 1876 for ( ; ((do { 1877 ((my $m2) = $grammar->digit($str, $MATCH->to())); 1878 if ($m2) { 1879 (($MATCH)->{to} = $m2->to()); 1880 1 1881 } 1882 else { 1883 0 1884 } 1885}) && (($last_match_null < 2))); ) { 1886 if (($last_pos == $MATCH->to())) { 1887 ($last_match_null = ($last_match_null + 1)) 1888 } 1889 else { 1890 ($last_match_null = 0) 1891 }; 1892 ($last_pos = $MATCH->to()); 1893 ($count = ($count + 1)) 1894 }; 1895 (($MATCH)->{to} = $last_pos); 1896 ($count > 0) 1897}) 1898}))); 1899 $MATCH 1900 }; 1901 sub val_int { 1902 my $grammar = $_[0]; 1903 my $str = $_[1]; 1904 my $pos = $_[2]; 1905 (my $MATCH); 1906 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 1907 (($MATCH)->{bool} = ((do { 1908 ((my $pos1) = $MATCH->to()); 1909 (do { 1910 ((do { 1911 ((my $last_match_null) = 0); 1912 ((my $last_pos) = $MATCH->to()); 1913 ((my $count) = 0); 1914 for ( ; ((do { 1915 ((my $m2) = $grammar->digit($str, $MATCH->to())); 1916 if ($m2) { 1917 (($MATCH)->{to} = $m2->to()); 1918 1 1919 } 1920 else { 1921 0 1922 } 1923}) && (($last_match_null < 2))); ) { 1924 if (($last_pos == $MATCH->to())) { 1925 ($last_match_null = ($last_match_null + 1)) 1926 } 1927 else { 1928 ($last_match_null = 0) 1929 }; 1930 ($last_pos = $MATCH->to()); 1931 ($count = ($count + 1)) 1932 }; 1933 (($MATCH)->{to} = $last_pos); 1934 ($count > 0) 1935}) && (((do { 1936 ($MATCH->{capture} = (Val::Int->new(('int' => "".($MATCH))))) 1937}) || 1))) 1938}) 1939}))); 1940 $MATCH 1941 }; 1942 sub exp_stmts { 1943 my $grammar = $_[0]; 1944 my $str = $_[1]; 1945 my $pos = $_[2]; 1946 (my $MATCH); 1947 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 1948 (($MATCH)->{bool} = ((do { 1949 ((my $pos1) = $MATCH->to()); 1950 (do { 1951 ((do { 1952 ((my $last_match_null) = 0); 1953 ((my $last_pos) = $MATCH->to()); 1954 for ( ; ((do { 1955 ((my $m2) = Perlito6::Expression->delimited_statement($str, $MATCH->to())); 1956 if ($m2) { 1957 (($MATCH)->{to} = $m2->to()); 1958 if (exists($MATCH->{'Perlito6::Expression.delimited_statement'})) { 1959 push( @{($MATCH->{'Perlito6::Expression.delimited_statement'})}, $m2 ) 1960 } 1961 else { 1962 ($MATCH->{'Perlito6::Expression.delimited_statement'} = do { 1963 (my $List_a = bless [], 'ARRAY'); 1964 (my $List_v = bless [], 'ARRAY'); 1965 push( @{$List_a}, $m2 ); 1966 $List_a 1967}) 1968 }; 1969 1 1970 } 1971 else { 1972 0 1973 } 1974}) && (($last_match_null < 2))); ) { 1975 if (($last_pos == $MATCH->to())) { 1976 ($last_match_null = ($last_match_null + 1)) 1977 } 1978 else { 1979 ($last_match_null = 0) 1980 }; 1981 ($last_pos = $MATCH->to()) 1982 }; 1983 (($MATCH)->{to} = $last_pos); 1984 1 1985}) && (((do { 1986 ($MATCH->{capture} = ([ map { $_->capture() } @{( $MATCH->{'Perlito6::Expression.delimited_statement'} )} ])) 1987}) || 1))) 1988}) 1989}))); 1990 $MATCH 1991 }; 1992 sub opt_name { 1993 my $grammar = $_[0]; 1994 my $str = $_[1]; 1995 my $pos = $_[2]; 1996 (my $MATCH); 1997 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 1998 (($MATCH)->{bool} = ((do { 1999 ((my $pos1) = $MATCH->to()); 2000 (do { 2001 ((my $last_pos) = $MATCH->to()); 2002 if (!((do { 2003 ((my $m2) = $grammar->ident($str, $MATCH->to())); 2004 if ($m2) { 2005 (($MATCH)->{to} = $m2->to()); 2006 if (exists($MATCH->{'ident'})) { 2007 push( @{($MATCH->{'ident'})}, $m2 ) 2008 } 2009 else { 2010 ($MATCH->{'ident'} = do { 2011 (my $List_a = bless [], 'ARRAY'); 2012 (my $List_v = bless [], 'ARRAY'); 2013 push( @{$List_a}, $m2 ); 2014 $List_a 2015}) 2016 }; 2017 1 2018 } 2019 else { 2020 0 2021 } 2022}))) { 2023 (($MATCH)->{to} = $last_pos) 2024 }; 2025 1 2026}) 2027}))); 2028 $MATCH 2029 }; 2030 sub var_invocant { 2031 my $grammar = $_[0]; 2032 my $str = $_[1]; 2033 my $pos = $_[2]; 2034 (my $MATCH); 2035 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 2036 (($MATCH)->{bool} = ((do { 2037 ((my $pos1) = $MATCH->to()); 2038 ((do { 2039 (((do { 2040 ((my $m2) = $grammar->var_ident($str, $MATCH->to())); 2041 if ($m2) { 2042 (($MATCH)->{to} = $m2->to()); 2043 ($MATCH->{'var_ident'} = $m2); 2044 1 2045 } 2046 else { 2047 0 2048 } 2049}) && (((':' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do { 2050 ($MATCH->{capture} = (${$MATCH->{'var_ident'}})) 2051}) || 1))) 2052}) || (do { 2053 (($MATCH)->{to} = $pos1); 2054 ((((do { 2055 ($MATCH->{capture} = (Var->new(('sigil' => chr(36)), ('twigil' => ''), ('name' => 'self')))) 2056}) || 1))) 2057})) 2058}))); 2059 $MATCH 2060 }; 2061 sub args_sig { 2062 my $grammar = $_[0]; 2063 my $str = $_[1]; 2064 my $pos = $_[2]; 2065 (my $MATCH); 2066 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 2067 (($MATCH)->{bool} = ((do { 2068 ((my $pos1) = $MATCH->to()); 2069 (do { 2070 ((((do { 2071 ((my $m2) = $grammar->var_invocant($str, $MATCH->to())); 2072 if ($m2) { 2073 (($MATCH)->{to} = $m2->to()); 2074 ($MATCH->{'var_invocant'} = $m2); 2075 1 2076 } 2077 else { 2078 0 2079 } 2080}) && (do { 2081 ((my $m2) = $grammar->opt_ws($str, $MATCH->to())); 2082 if ($m2) { 2083 (($MATCH)->{to} = $m2->to()); 2084 1 2085 } 2086 else { 2087 0 2088 } 2089})) && (do { 2090 ((my $m2) = Perlito6::Expression->list_parse($str, $MATCH->to())); 2091 if ($m2) { 2092 (($MATCH)->{to} = $m2->to()); 2093 ($MATCH->{'Perlito6::Expression.list_parse'} = $m2); 2094 1 2095 } 2096 else { 2097 0 2098 } 2099})) && (((do { 2100 ($MATCH->{capture} = (Sig->new(('invocant' => ${$MATCH->{'var_invocant'}}), ('positional' => Perlito6::Expression::expand_list((${$MATCH->{'Perlito6::Expression.list_parse'}})->{'exp'})), ('named' => do { 2101 (my $Hash_a = bless {}, 'HASH'); 2102 $Hash_a 2103})))) 2104}) || 1))) 2105}) 2106}))); 2107 $MATCH 2108 }; 2109 sub method_sig { 2110 my $grammar = $_[0]; 2111 my $str = $_[1]; 2112 my $pos = $_[2]; 2113 (my $MATCH); 2114 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 2115 (($MATCH)->{bool} = ((do { 2116 ((my $pos1) = $MATCH->to()); 2117 ((do { 2118 (((((((do { 2119 ((my $m2) = $grammar->opt_ws($str, $MATCH->to())); 2120 if ($m2) { 2121 (($MATCH)->{to} = $m2->to()); 2122 1 2123 } 2124 else { 2125 0 2126 } 2127}) && ((('(' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do { 2128 ((my $m2) = $grammar->opt_ws($str, $MATCH->to())); 2129 if ($m2) { 2130 (($MATCH)->{to} = $m2->to()); 2131 1 2132 } 2133 else { 2134 0 2135 } 2136})) && (do { 2137 ((my $m2) = $grammar->args_sig($str, $MATCH->to())); 2138 if ($m2) { 2139 (($MATCH)->{to} = $m2->to()); 2140 ($MATCH->{'args_sig'} = $m2); 2141 1 2142 } 2143 else { 2144 0 2145 } 2146})) && (do { 2147 ((my $m2) = $grammar->opt_ws($str, $MATCH->to())); 2148 if ($m2) { 2149 (($MATCH)->{to} = $m2->to()); 2150 1 2151 } 2152 else { 2153 0 2154 } 2155})) && (((')' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do { 2156 ($MATCH->{capture} = (${$MATCH->{'args_sig'}})) 2157}) || 1))) 2158}) || (do { 2159 (($MATCH)->{to} = $pos1); 2160 ((((do { 2161 ($MATCH->{capture} = (Sig->new(('invocant' => Var->new(('sigil' => chr(36)), ('twigil' => ''), ('name' => 'self'))), ('positional' => do { 2162 (my $List_a = bless [], 'ARRAY'); 2163 (my $List_v = bless [], 'ARRAY'); 2164 $List_a 2165}), ('named' => do { 2166 (my $Hash_a = bless {}, 'HASH'); 2167 $Hash_a 2168})))) 2169}) || 1))) 2170})) 2171}))); 2172 $MATCH 2173 }; 2174 sub method_def { 2175 my $grammar = $_[0]; 2176 my $str = $_[1]; 2177 my $pos = $_[2]; 2178 (my $MATCH); 2179 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 2180 (($MATCH)->{bool} = ((do { 2181 ((my $pos1) = $MATCH->to()); 2182 (do { 2183 ((((((((((do { 2184 ((my $m2) = $grammar->opt_name($str, $MATCH->to())); 2185 if ($m2) { 2186 (($MATCH)->{to} = $m2->to()); 2187 ($MATCH->{'opt_name'} = $m2); 2188 1 2189 } 2190 else { 2191 0 2192 } 2193}) && (do { 2194 ((my $m2) = $grammar->opt_ws($str, $MATCH->to())); 2195 if ($m2) { 2196 (($MATCH)->{to} = $m2->to()); 2197 1 2198 } 2199 else { 2200 0 2201 } 2202})) && (do { 2203 ((my $m2) = $grammar->method_sig($str, $MATCH->to())); 2204 if ($m2) { 2205 (($MATCH)->{to} = $m2->to()); 2206 ($MATCH->{'method_sig'} = $m2); 2207 1 2208 } 2209 else { 2210 0 2211 } 2212})) && (do { 2213 ((my $m2) = $grammar->opt_ws($str, $MATCH->to())); 2214 if ($m2) { 2215 (($MATCH)->{to} = $m2->to()); 2216 1 2217 } 2218 else { 2219 0 2220 } 2221})) && (((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do { 2222 ((my $m2) = $grammar->opt_ws($str, $MATCH->to())); 2223 if ($m2) { 2224 (($MATCH)->{to} = $m2->to()); 2225 1 2226 } 2227 else { 2228 0 2229 } 2230})) && (do { 2231 ((my $m2) = $grammar->exp_stmts($str, $MATCH->to())); 2232 if ($m2) { 2233 (($MATCH)->{to} = $m2->to()); 2234 ($MATCH->{'exp_stmts'} = $m2); 2235 1 2236 } 2237 else { 2238 0 2239 } 2240})) && (do { 2241 ((my $m2) = $grammar->opt_ws($str, $MATCH->to())); 2242 if ($m2) { 2243 (($MATCH)->{to} = $m2->to()); 2244 1 2245 } 2246 else { 2247 0 2248 } 2249})) && (do { 2250 ((my $pos1) = $MATCH->to()); 2251 ((do { 2252 ((chr(125) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 2253}) || (do { 2254 (($MATCH)->{to} = $pos1); 2255 ((((do { 2256 die('Syntax Error in method ' . chr(39) . '.', ${$MATCH->{'name'}}, chr(39) . ' near pos' . chr(61), $MATCH->to()) 2257}) || 1))) 2258})) 2259})) && (((do { 2260 ($MATCH->{capture} = (Method->new(('name' => ${$MATCH->{'opt_name'}}), ('sig' => ${$MATCH->{'method_sig'}}), ('block' => ${$MATCH->{'exp_stmts'}})))) 2261}) || 1))) 2262}) 2263}))); 2264 $MATCH 2265 }; 2266 sub sub_def { 2267 my $grammar = $_[0]; 2268 my $str = $_[1]; 2269 my $pos = $_[2]; 2270 (my $MATCH); 2271 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 2272 (($MATCH)->{bool} = ((do { 2273 ((my $pos1) = $MATCH->to()); 2274 (do { 2275 ((((((((((do { 2276 ((my $m2) = $grammar->opt_name($str, $MATCH->to())); 2277 if ($m2) { 2278 (($MATCH)->{to} = $m2->to()); 2279 ($MATCH->{'opt_name'} = $m2); 2280 1 2281 } 2282 else { 2283 0 2284 } 2285}) && (do { 2286 ((my $m2) = $grammar->opt_ws($str, $MATCH->to())); 2287 if ($m2) { 2288 (($MATCH)->{to} = $m2->to()); 2289 1 2290 } 2291 else { 2292 0 2293 } 2294})) && (do { 2295 ((my $m2) = $grammar->method_sig($str, $MATCH->to())); 2296 if ($m2) { 2297 (($MATCH)->{to} = $m2->to()); 2298 ($MATCH->{'method_sig'} = $m2); 2299 1 2300 } 2301 else { 2302 0 2303 } 2304})) && (do { 2305 ((my $m2) = $grammar->opt_ws($str, $MATCH->to())); 2306 if ($m2) { 2307 (($MATCH)->{to} = $m2->to()); 2308 1 2309 } 2310 else { 2311 0 2312 } 2313})) && (((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do { 2314 ((my $m2) = $grammar->opt_ws($str, $MATCH->to())); 2315 if ($m2) { 2316 (($MATCH)->{to} = $m2->to()); 2317 1 2318 } 2319 else { 2320 0 2321 } 2322})) && (do { 2323 ((my $m2) = $grammar->exp_stmts($str, $MATCH->to())); 2324 if ($m2) { 2325 (($MATCH)->{to} = $m2->to()); 2326 ($MATCH->{'exp_stmts'} = $m2); 2327 1 2328 } 2329 else { 2330 0 2331 } 2332})) && (do { 2333 ((my $m2) = $grammar->opt_ws($str, $MATCH->to())); 2334 if ($m2) { 2335 (($MATCH)->{to} = $m2->to()); 2336 1 2337 } 2338 else { 2339 0 2340 } 2341})) && (do { 2342 ((my $pos1) = $MATCH->to()); 2343 ((do { 2344 ((chr(125) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))) 2345}) || (do { 2346 (($MATCH)->{to} = $pos1); 2347 ((((do { 2348 die('Syntax Error in sub ' . chr(39), ${$MATCH->{'name'}}, chr(39)) 2349}) || 1))) 2350})) 2351})) && (((do { 2352 ($MATCH->{capture} = (Sub->new(('name' => ${$MATCH->{'opt_name'}}), ('sig' => ${$MATCH->{'method_sig'}}), ('block' => ${$MATCH->{'exp_stmts'}})))) 2353}) || 1))) 2354}) 2355}))); 2356 $MATCH 2357 }; 2358 sub token { 2359 my $grammar = $_[0]; 2360 my $str = $_[1]; 2361 my $pos = $_[2]; 2362 (my $MATCH); 2363 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1))); 2364 (($MATCH)->{bool} = ((do { 2365 ((my $pos1) = $MATCH->to()); 2366 (do { 2367 ((((((do { 2368 ((my $m2) = $grammar->opt_name($str, $MATCH->to())); 2369 if ($m2) { 2370 (($MATCH)->{to} = $m2->to()); 2371 ($MATCH->{'opt_name'} = $m2); 2372 1 2373 } 2374 else { 2375 0 2376 } 2377}) && (do { 2378 ((my $m2) = $grammar->opt_ws($str, $MATCH->to())); 2379 if ($m2) { 2380 (($MATCH)->{to} = $m2->to()); 2381 1 2382 } 2383 else { 2384 0 2385 } 2386})) && (((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do { 2387 ((my $m2) = Perlito6::Grammar::Regex->rule($str, $MATCH->to())); 2388 if ($m2) { 2389 (($MATCH)->{to} = $m2->to()); 2390 ($MATCH->{'Perlito6::Grammar::Regex.rule'} = $m2); 2391 1 2392 } 2393 else { 2394 0 2395 } 2396})) && (((chr(125) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do { 2397 ((my $source) = ($MATCH->{'opt_name'} . ' ( ' . chr(36) . 'grammar: ' . chr(36) . 'str, ' . chr(36) . 'pos ) ' . chr(123) . ' ' . 'my ' . chr(36) . 'MATCH' . chr(59) . ' ' . chr(36) . 'MATCH ' . chr(61) . ' Perlito6::Match.new( str ' . chr(61) . '> ' . chr(36) . 'str, from ' . chr(61) . '> ' . chr(36) . 'pos, to ' . chr(61) . '> ' . chr(36) . 'pos, bool ' . chr(61) . '> 1 )' . chr(59) . ' ' . chr(36) . 'MATCH.bool ' . chr(61) . ' ( ' . (${$MATCH->{'Perlito6::Grammar::Regex.rule'}})->emit_perl6() . ')' . chr(59) . ' ' . chr(36) . 'MATCH ' . chr(125))); 2398 ((my $ast) = Perlito6::Grammar->method_def($source, 0)); 2399 ($MATCH->{capture} = (${$ast})) 2400}) || 1))) 2401}) 2402}))); 2403 $MATCH 2404 } 2405 } 2406 2407 2408} 2409 24101; 2411