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