1 module graphql.visitor; 2 3 import graphql.ast; 4 import graphql.tokenmodule; 5 6 @safe: 7 8 class Visitor : ConstVisitor { 9 alias accept = ConstVisitor.accept; 10 11 alias enter = ConstVisitor.enter; 12 13 alias exit = ConstVisitor.exit; 14 15 16 void enter(Document obj) {} 17 void exit(Document obj) {} 18 19 void accept(Document obj) { 20 enter(obj); 21 final switch(obj.ruleSelection) { 22 case DocumentEnum.Defi: 23 obj.defs.visit(this); 24 break; 25 } 26 exit(obj); 27 } 28 29 void enter(Definitions obj) {} 30 void exit(Definitions obj) {} 31 32 void accept(Definitions obj) { 33 enter(obj); 34 final switch(obj.ruleSelection) { 35 case DefinitionsEnum.Def: 36 obj.def.visit(this); 37 break; 38 case DefinitionsEnum.Defs: 39 obj.def.visit(this); 40 obj.follow.visit(this); 41 break; 42 } 43 exit(obj); 44 } 45 46 void enter(Definition obj) {} 47 void exit(Definition obj) {} 48 49 void accept(Definition obj) { 50 enter(obj); 51 final switch(obj.ruleSelection) { 52 case DefinitionEnum.O: 53 obj.op.visit(this); 54 break; 55 case DefinitionEnum.F: 56 obj.frag.visit(this); 57 break; 58 case DefinitionEnum.T: 59 obj.type.visit(this); 60 break; 61 } 62 exit(obj); 63 } 64 65 void enter(OperationDefinition obj) {} 66 void exit(OperationDefinition obj) {} 67 68 void accept(OperationDefinition obj) { 69 enter(obj); 70 final switch(obj.ruleSelection) { 71 case OperationDefinitionEnum.SelSet: 72 obj.ss.visit(this); 73 break; 74 case OperationDefinitionEnum.OT_N_VD: 75 obj.ot.visit(this); 76 obj.name.visit(this); 77 obj.vd.visit(this); 78 obj.d.visit(this); 79 obj.ss.visit(this); 80 break; 81 case OperationDefinitionEnum.OT_N_V: 82 obj.ot.visit(this); 83 obj.name.visit(this); 84 obj.vd.visit(this); 85 obj.ss.visit(this); 86 break; 87 case OperationDefinitionEnum.OT_N_D: 88 obj.ot.visit(this); 89 obj.name.visit(this); 90 obj.d.visit(this); 91 obj.ss.visit(this); 92 break; 93 case OperationDefinitionEnum.OT_N: 94 obj.ot.visit(this); 95 obj.name.visit(this); 96 obj.ss.visit(this); 97 break; 98 case OperationDefinitionEnum.OT_VD: 99 obj.ot.visit(this); 100 obj.vd.visit(this); 101 obj.d.visit(this); 102 obj.ss.visit(this); 103 break; 104 case OperationDefinitionEnum.OT_V: 105 obj.ot.visit(this); 106 obj.vd.visit(this); 107 obj.ss.visit(this); 108 break; 109 case OperationDefinitionEnum.OT_D: 110 obj.ot.visit(this); 111 obj.d.visit(this); 112 obj.ss.visit(this); 113 break; 114 case OperationDefinitionEnum.OT: 115 obj.ot.visit(this); 116 obj.ss.visit(this); 117 break; 118 } 119 exit(obj); 120 } 121 122 void enter(SelectionSet obj) {} 123 void exit(SelectionSet obj) {} 124 125 void accept(SelectionSet obj) { 126 enter(obj); 127 final switch(obj.ruleSelection) { 128 case SelectionSetEnum.SS: 129 obj.sel.visit(this); 130 break; 131 } 132 exit(obj); 133 } 134 135 void enter(OperationType obj) {} 136 void exit(OperationType obj) {} 137 138 void accept(OperationType obj) { 139 enter(obj); 140 final switch(obj.ruleSelection) { 141 case OperationTypeEnum.Query: 142 obj.tok.visit(this); 143 break; 144 case OperationTypeEnum.Mutation: 145 obj.tok.visit(this); 146 break; 147 case OperationTypeEnum.Sub: 148 obj.tok.visit(this); 149 break; 150 } 151 exit(obj); 152 } 153 154 void enter(Selections obj) {} 155 void exit(Selections obj) {} 156 157 void accept(Selections obj) { 158 enter(obj); 159 final switch(obj.ruleSelection) { 160 case SelectionsEnum.Sel: 161 obj.sel.visit(this); 162 break; 163 case SelectionsEnum.Sels: 164 obj.sel.visit(this); 165 obj.follow.visit(this); 166 break; 167 case SelectionsEnum.Selsc: 168 obj.sel.visit(this); 169 obj.follow.visit(this); 170 break; 171 } 172 exit(obj); 173 } 174 175 void enter(Selection obj) {} 176 void exit(Selection obj) {} 177 178 void accept(Selection obj) { 179 enter(obj); 180 final switch(obj.ruleSelection) { 181 case SelectionEnum.Field: 182 obj.field.visit(this); 183 break; 184 case SelectionEnum.Spread: 185 obj.frag.visit(this); 186 break; 187 case SelectionEnum.IFrag: 188 obj.ifrag.visit(this); 189 break; 190 } 191 exit(obj); 192 } 193 194 void enter(FragmentSpread obj) {} 195 void exit(FragmentSpread obj) {} 196 197 void accept(FragmentSpread obj) { 198 enter(obj); 199 final switch(obj.ruleSelection) { 200 case FragmentSpreadEnum.FD: 201 obj.name.visit(this); 202 obj.dirs.visit(this); 203 break; 204 case FragmentSpreadEnum.F: 205 obj.name.visit(this); 206 break; 207 } 208 exit(obj); 209 } 210 211 void enter(InlineFragment obj) {} 212 void exit(InlineFragment obj) {} 213 214 void accept(InlineFragment obj) { 215 enter(obj); 216 final switch(obj.ruleSelection) { 217 case InlineFragmentEnum.TDS: 218 obj.tc.visit(this); 219 obj.dirs.visit(this); 220 obj.ss.visit(this); 221 break; 222 case InlineFragmentEnum.TS: 223 obj.tc.visit(this); 224 obj.ss.visit(this); 225 break; 226 case InlineFragmentEnum.DS: 227 obj.dirs.visit(this); 228 obj.ss.visit(this); 229 break; 230 case InlineFragmentEnum.S: 231 obj.ss.visit(this); 232 break; 233 } 234 exit(obj); 235 } 236 237 void enter(Field obj) {} 238 void exit(Field obj) {} 239 240 void accept(Field obj) { 241 enter(obj); 242 final switch(obj.ruleSelection) { 243 case FieldEnum.FADS: 244 obj.name.visit(this); 245 obj.args.visit(this); 246 obj.dirs.visit(this); 247 obj.ss.visit(this); 248 break; 249 case FieldEnum.FAS: 250 obj.name.visit(this); 251 obj.args.visit(this); 252 obj.ss.visit(this); 253 break; 254 case FieldEnum.FAD: 255 obj.name.visit(this); 256 obj.args.visit(this); 257 obj.dirs.visit(this); 258 break; 259 case FieldEnum.FDS: 260 obj.name.visit(this); 261 obj.dirs.visit(this); 262 obj.ss.visit(this); 263 break; 264 case FieldEnum.FS: 265 obj.name.visit(this); 266 obj.ss.visit(this); 267 break; 268 case FieldEnum.FD: 269 obj.name.visit(this); 270 obj.dirs.visit(this); 271 break; 272 case FieldEnum.FA: 273 obj.name.visit(this); 274 obj.args.visit(this); 275 break; 276 case FieldEnum.F: 277 obj.name.visit(this); 278 break; 279 } 280 exit(obj); 281 } 282 283 void enter(FieldName obj) {} 284 void exit(FieldName obj) {} 285 286 void accept(FieldName obj) { 287 enter(obj); 288 final switch(obj.ruleSelection) { 289 case FieldNameEnum.A: 290 obj.name.visit(this); 291 obj.aka.visit(this); 292 break; 293 case FieldNameEnum.N: 294 obj.name.visit(this); 295 break; 296 } 297 exit(obj); 298 } 299 300 void enter(Arguments obj) {} 301 void exit(Arguments obj) {} 302 303 void accept(Arguments obj) { 304 enter(obj); 305 final switch(obj.ruleSelection) { 306 case ArgumentsEnum.List: 307 obj.arg.visit(this); 308 break; 309 case ArgumentsEnum.Empty: 310 break; 311 } 312 exit(obj); 313 } 314 315 void enter(ArgumentList obj) {} 316 void exit(ArgumentList obj) {} 317 318 void accept(ArgumentList obj) { 319 enter(obj); 320 final switch(obj.ruleSelection) { 321 case ArgumentListEnum.A: 322 obj.arg.visit(this); 323 break; 324 case ArgumentListEnum.ACS: 325 obj.arg.visit(this); 326 obj.follow.visit(this); 327 break; 328 case ArgumentListEnum.AS: 329 obj.arg.visit(this); 330 obj.follow.visit(this); 331 break; 332 } 333 exit(obj); 334 } 335 336 void enter(Argument obj) {} 337 void exit(Argument obj) {} 338 339 void accept(Argument obj) { 340 enter(obj); 341 final switch(obj.ruleSelection) { 342 case ArgumentEnum.Name: 343 obj.name.visit(this); 344 obj.vv.visit(this); 345 break; 346 } 347 exit(obj); 348 } 349 350 void enter(FragmentDefinition obj) {} 351 void exit(FragmentDefinition obj) {} 352 353 void accept(FragmentDefinition obj) { 354 enter(obj); 355 final switch(obj.ruleSelection) { 356 case FragmentDefinitionEnum.FTDS: 357 obj.name.visit(this); 358 obj.tc.visit(this); 359 obj.dirs.visit(this); 360 obj.ss.visit(this); 361 break; 362 case FragmentDefinitionEnum.FTS: 363 obj.name.visit(this); 364 obj.tc.visit(this); 365 obj.ss.visit(this); 366 break; 367 } 368 exit(obj); 369 } 370 371 void enter(Directives obj) {} 372 void exit(Directives obj) {} 373 374 void accept(Directives obj) { 375 enter(obj); 376 final switch(obj.ruleSelection) { 377 case DirectivesEnum.Dir: 378 obj.dir.visit(this); 379 break; 380 case DirectivesEnum.Dirs: 381 obj.dir.visit(this); 382 obj.follow.visit(this); 383 break; 384 } 385 exit(obj); 386 } 387 388 void enter(Directive obj) {} 389 void exit(Directive obj) {} 390 391 void accept(Directive obj) { 392 enter(obj); 393 final switch(obj.ruleSelection) { 394 case DirectiveEnum.NArg: 395 obj.name.visit(this); 396 obj.arg.visit(this); 397 break; 398 case DirectiveEnum.N: 399 obj.name.visit(this); 400 break; 401 } 402 exit(obj); 403 } 404 405 void enter(VariableDefinitions obj) {} 406 void exit(VariableDefinitions obj) {} 407 408 void accept(VariableDefinitions obj) { 409 enter(obj); 410 final switch(obj.ruleSelection) { 411 case VariableDefinitionsEnum.Empty: 412 break; 413 case VariableDefinitionsEnum.Vars: 414 obj.vars.visit(this); 415 break; 416 } 417 exit(obj); 418 } 419 420 void enter(VariableDefinitionList obj) {} 421 void exit(VariableDefinitionList obj) {} 422 423 void accept(VariableDefinitionList obj) { 424 enter(obj); 425 final switch(obj.ruleSelection) { 426 case VariableDefinitionListEnum.V: 427 obj.var.visit(this); 428 break; 429 case VariableDefinitionListEnum.VCF: 430 obj.var.visit(this); 431 obj.follow.visit(this); 432 break; 433 case VariableDefinitionListEnum.VF: 434 obj.var.visit(this); 435 obj.follow.visit(this); 436 break; 437 } 438 exit(obj); 439 } 440 441 void enter(VariableDefinition obj) {} 442 void exit(VariableDefinition obj) {} 443 444 void accept(VariableDefinition obj) { 445 enter(obj); 446 final switch(obj.ruleSelection) { 447 case VariableDefinitionEnum.VarD: 448 obj.var.visit(this); 449 obj.type.visit(this); 450 obj.dvalue.visit(this); 451 break; 452 case VariableDefinitionEnum.Var: 453 obj.var.visit(this); 454 obj.type.visit(this); 455 break; 456 } 457 exit(obj); 458 } 459 460 void enter(Variable obj) {} 461 void exit(Variable obj) {} 462 463 void accept(Variable obj) { 464 enter(obj); 465 final switch(obj.ruleSelection) { 466 case VariableEnum.Var: 467 obj.name.visit(this); 468 break; 469 } 470 exit(obj); 471 } 472 473 void enter(DefaultValue obj) {} 474 void exit(DefaultValue obj) {} 475 476 void accept(DefaultValue obj) { 477 enter(obj); 478 final switch(obj.ruleSelection) { 479 case DefaultValueEnum.DV: 480 obj.value.visit(this); 481 break; 482 } 483 exit(obj); 484 } 485 486 void enter(ValueOrVariable obj) {} 487 void exit(ValueOrVariable obj) {} 488 489 void accept(ValueOrVariable obj) { 490 enter(obj); 491 final switch(obj.ruleSelection) { 492 case ValueOrVariableEnum.Val: 493 obj.val.visit(this); 494 break; 495 case ValueOrVariableEnum.Var: 496 obj.var.visit(this); 497 break; 498 } 499 exit(obj); 500 } 501 502 void enter(Value obj) {} 503 void exit(Value obj) {} 504 505 void accept(Value obj) { 506 enter(obj); 507 final switch(obj.ruleSelection) { 508 case ValueEnum.STR: 509 obj.tok.visit(this); 510 break; 511 case ValueEnum.INT: 512 obj.tok.visit(this); 513 break; 514 case ValueEnum.FLOAT: 515 obj.tok.visit(this); 516 break; 517 case ValueEnum.T: 518 obj.tok.visit(this); 519 break; 520 case ValueEnum.F: 521 obj.tok.visit(this); 522 break; 523 case ValueEnum.ARR: 524 obj.arr.visit(this); 525 break; 526 case ValueEnum.O: 527 obj.obj.visit(this); 528 break; 529 case ValueEnum.E: 530 obj.tok.visit(this); 531 break; 532 } 533 exit(obj); 534 } 535 536 void enter(Type obj) {} 537 void exit(Type obj) {} 538 539 void accept(Type obj) { 540 enter(obj); 541 final switch(obj.ruleSelection) { 542 case TypeEnum.TN: 543 obj.tname.visit(this); 544 break; 545 case TypeEnum.LN: 546 obj.list.visit(this); 547 break; 548 case TypeEnum.T: 549 obj.tname.visit(this); 550 break; 551 case TypeEnum.L: 552 obj.list.visit(this); 553 break; 554 } 555 exit(obj); 556 } 557 558 void enter(ListType obj) {} 559 void exit(ListType obj) {} 560 561 void accept(ListType obj) { 562 enter(obj); 563 final switch(obj.ruleSelection) { 564 case ListTypeEnum.T: 565 obj.type.visit(this); 566 break; 567 } 568 exit(obj); 569 } 570 571 void enter(Values obj) {} 572 void exit(Values obj) {} 573 574 void accept(Values obj) { 575 enter(obj); 576 final switch(obj.ruleSelection) { 577 case ValuesEnum.Val: 578 obj.val.visit(this); 579 break; 580 case ValuesEnum.Vals: 581 obj.val.visit(this); 582 obj.follow.visit(this); 583 break; 584 } 585 exit(obj); 586 } 587 588 void enter(Array obj) {} 589 void exit(Array obj) {} 590 591 void accept(Array obj) { 592 enter(obj); 593 final switch(obj.ruleSelection) { 594 case ArrayEnum.Empty: 595 break; 596 case ArrayEnum.Value: 597 obj.vals.visit(this); 598 break; 599 } 600 exit(obj); 601 } 602 603 void enter(ObjectValues obj) {} 604 void exit(ObjectValues obj) {} 605 606 void accept(ObjectValues obj) { 607 enter(obj); 608 final switch(obj.ruleSelection) { 609 case ObjectValuesEnum.V: 610 obj.name.visit(this); 611 obj.val.visit(this); 612 break; 613 case ObjectValuesEnum.Vsc: 614 obj.name.visit(this); 615 obj.val.visit(this); 616 obj.follow.visit(this); 617 break; 618 case ObjectValuesEnum.Vs: 619 obj.name.visit(this); 620 obj.val.visit(this); 621 obj.follow.visit(this); 622 break; 623 } 624 exit(obj); 625 } 626 627 void enter(ObjectType obj) {} 628 void exit(ObjectType obj) {} 629 630 void accept(ObjectType obj) { 631 enter(obj); 632 final switch(obj.ruleSelection) { 633 case ObjectTypeEnum.Var: 634 obj.vals.visit(this); 635 break; 636 } 637 exit(obj); 638 } 639 640 void enter(TypeSystemDefinition obj) {} 641 void exit(TypeSystemDefinition obj) {} 642 643 void accept(TypeSystemDefinition obj) { 644 enter(obj); 645 final switch(obj.ruleSelection) { 646 case TypeSystemDefinitionEnum.S: 647 obj.sch.visit(this); 648 break; 649 case TypeSystemDefinitionEnum.T: 650 obj.td.visit(this); 651 break; 652 case TypeSystemDefinitionEnum.TE: 653 obj.ted.visit(this); 654 break; 655 case TypeSystemDefinitionEnum.D: 656 obj.dd.visit(this); 657 break; 658 } 659 exit(obj); 660 } 661 662 void enter(TypeDefinition obj) {} 663 void exit(TypeDefinition obj) {} 664 665 void accept(TypeDefinition obj) { 666 enter(obj); 667 final switch(obj.ruleSelection) { 668 case TypeDefinitionEnum.S: 669 obj.std.visit(this); 670 break; 671 case TypeDefinitionEnum.O: 672 obj.otd.visit(this); 673 break; 674 case TypeDefinitionEnum.I: 675 obj.itd.visit(this); 676 break; 677 case TypeDefinitionEnum.U: 678 obj.utd.visit(this); 679 break; 680 case TypeDefinitionEnum.E: 681 obj.etd.visit(this); 682 break; 683 case TypeDefinitionEnum.IO: 684 obj.iod.visit(this); 685 break; 686 } 687 exit(obj); 688 } 689 690 void enter(SchemaDefinition obj) {} 691 void exit(SchemaDefinition obj) {} 692 693 void accept(SchemaDefinition obj) { 694 enter(obj); 695 final switch(obj.ruleSelection) { 696 case SchemaDefinitionEnum.DO: 697 obj.dir.visit(this); 698 obj.otds.visit(this); 699 break; 700 case SchemaDefinitionEnum.O: 701 obj.otds.visit(this); 702 break; 703 } 704 exit(obj); 705 } 706 707 void enter(OperationTypeDefinitions obj) {} 708 void exit(OperationTypeDefinitions obj) {} 709 710 void accept(OperationTypeDefinitions obj) { 711 enter(obj); 712 final switch(obj.ruleSelection) { 713 case OperationTypeDefinitionsEnum.O: 714 obj.otd.visit(this); 715 break; 716 case OperationTypeDefinitionsEnum.OCS: 717 obj.otd.visit(this); 718 obj.follow.visit(this); 719 break; 720 case OperationTypeDefinitionsEnum.OS: 721 obj.otd.visit(this); 722 obj.follow.visit(this); 723 break; 724 } 725 exit(obj); 726 } 727 728 void enter(OperationTypeDefinition obj) {} 729 void exit(OperationTypeDefinition obj) {} 730 731 void accept(OperationTypeDefinition obj) { 732 enter(obj); 733 final switch(obj.ruleSelection) { 734 case OperationTypeDefinitionEnum.O: 735 obj.ot.visit(this); 736 obj.nt.visit(this); 737 break; 738 } 739 exit(obj); 740 } 741 742 void enter(ScalarTypeDefinition obj) {} 743 void exit(ScalarTypeDefinition obj) {} 744 745 void accept(ScalarTypeDefinition obj) { 746 enter(obj); 747 final switch(obj.ruleSelection) { 748 case ScalarTypeDefinitionEnum.D: 749 obj.name.visit(this); 750 obj.dir.visit(this); 751 break; 752 case ScalarTypeDefinitionEnum.S: 753 obj.name.visit(this); 754 break; 755 } 756 exit(obj); 757 } 758 759 void enter(ObjectTypeDefinition obj) {} 760 void exit(ObjectTypeDefinition obj) {} 761 762 void accept(ObjectTypeDefinition obj) { 763 enter(obj); 764 final switch(obj.ruleSelection) { 765 case ObjectTypeDefinitionEnum.ID: 766 obj.name.visit(this); 767 obj.ii.visit(this); 768 obj.dir.visit(this); 769 obj.fds.visit(this); 770 break; 771 case ObjectTypeDefinitionEnum.I: 772 obj.name.visit(this); 773 obj.ii.visit(this); 774 obj.fds.visit(this); 775 break; 776 case ObjectTypeDefinitionEnum.D: 777 obj.name.visit(this); 778 obj.dir.visit(this); 779 obj.fds.visit(this); 780 break; 781 case ObjectTypeDefinitionEnum.F: 782 obj.name.visit(this); 783 obj.fds.visit(this); 784 break; 785 } 786 exit(obj); 787 } 788 789 void enter(FieldDefinitions obj) {} 790 void exit(FieldDefinitions obj) {} 791 792 void accept(FieldDefinitions obj) { 793 enter(obj); 794 final switch(obj.ruleSelection) { 795 case FieldDefinitionsEnum.F: 796 obj.fd.visit(this); 797 break; 798 case FieldDefinitionsEnum.FC: 799 obj.fd.visit(this); 800 obj.follow.visit(this); 801 break; 802 case FieldDefinitionsEnum.FNC: 803 obj.fd.visit(this); 804 obj.follow.visit(this); 805 break; 806 } 807 exit(obj); 808 } 809 810 void enter(FieldDefinition obj) {} 811 void exit(FieldDefinition obj) {} 812 813 void accept(FieldDefinition obj) { 814 enter(obj); 815 final switch(obj.ruleSelection) { 816 case FieldDefinitionEnum.AD: 817 obj.name.visit(this); 818 obj.arg.visit(this); 819 obj.typ.visit(this); 820 obj.dir.visit(this); 821 break; 822 case FieldDefinitionEnum.A: 823 obj.name.visit(this); 824 obj.arg.visit(this); 825 obj.typ.visit(this); 826 break; 827 case FieldDefinitionEnum.D: 828 obj.name.visit(this); 829 obj.typ.visit(this); 830 obj.dir.visit(this); 831 break; 832 case FieldDefinitionEnum.T: 833 obj.name.visit(this); 834 obj.typ.visit(this); 835 break; 836 } 837 exit(obj); 838 } 839 840 void enter(ImplementsInterfaces obj) {} 841 void exit(ImplementsInterfaces obj) {} 842 843 void accept(ImplementsInterfaces obj) { 844 enter(obj); 845 final switch(obj.ruleSelection) { 846 case ImplementsInterfacesEnum.N: 847 obj.nts.visit(this); 848 break; 849 } 850 exit(obj); 851 } 852 853 void enter(NamedTypes obj) {} 854 void exit(NamedTypes obj) {} 855 856 void accept(NamedTypes obj) { 857 enter(obj); 858 final switch(obj.ruleSelection) { 859 case NamedTypesEnum.N: 860 obj.name.visit(this); 861 break; 862 case NamedTypesEnum.NCS: 863 obj.name.visit(this); 864 obj.follow.visit(this); 865 break; 866 case NamedTypesEnum.NS: 867 obj.name.visit(this); 868 obj.follow.visit(this); 869 break; 870 } 871 exit(obj); 872 } 873 874 void enter(ArgumentsDefinition obj) {} 875 void exit(ArgumentsDefinition obj) {} 876 877 void accept(ArgumentsDefinition obj) { 878 enter(obj); 879 final switch(obj.ruleSelection) { 880 case ArgumentsDefinitionEnum.A: 881 break; 882 } 883 exit(obj); 884 } 885 886 void enter(InputValueDefinitions obj) {} 887 void exit(InputValueDefinitions obj) {} 888 889 void accept(InputValueDefinitions obj) { 890 enter(obj); 891 final switch(obj.ruleSelection) { 892 case InputValueDefinitionsEnum.I: 893 obj.iv.visit(this); 894 break; 895 case InputValueDefinitionsEnum.ICF: 896 obj.iv.visit(this); 897 obj.follow.visit(this); 898 break; 899 case InputValueDefinitionsEnum.IF: 900 obj.iv.visit(this); 901 obj.follow.visit(this); 902 break; 903 } 904 exit(obj); 905 } 906 907 void enter(InputValueDefinition obj) {} 908 void exit(InputValueDefinition obj) {} 909 910 void accept(InputValueDefinition obj) { 911 enter(obj); 912 final switch(obj.ruleSelection) { 913 case InputValueDefinitionEnum.TVD: 914 obj.name.visit(this); 915 obj.type.visit(this); 916 obj.df.visit(this); 917 obj.dirs.visit(this); 918 break; 919 case InputValueDefinitionEnum.TD: 920 obj.name.visit(this); 921 obj.type.visit(this); 922 obj.dirs.visit(this); 923 break; 924 case InputValueDefinitionEnum.TV: 925 obj.name.visit(this); 926 obj.type.visit(this); 927 obj.df.visit(this); 928 break; 929 case InputValueDefinitionEnum.T: 930 obj.name.visit(this); 931 obj.type.visit(this); 932 break; 933 } 934 exit(obj); 935 } 936 937 void enter(InterfaceTypeDefinition obj) {} 938 void exit(InterfaceTypeDefinition obj) {} 939 940 void accept(InterfaceTypeDefinition obj) { 941 enter(obj); 942 final switch(obj.ruleSelection) { 943 case InterfaceTypeDefinitionEnum.NDF: 944 obj.name.visit(this); 945 obj.dirs.visit(this); 946 obj.fds.visit(this); 947 break; 948 case InterfaceTypeDefinitionEnum.NF: 949 obj.name.visit(this); 950 obj.fds.visit(this); 951 break; 952 } 953 exit(obj); 954 } 955 956 void enter(UnionTypeDefinition obj) {} 957 void exit(UnionTypeDefinition obj) {} 958 959 void accept(UnionTypeDefinition obj) { 960 enter(obj); 961 final switch(obj.ruleSelection) { 962 case UnionTypeDefinitionEnum.NDU: 963 obj.name.visit(this); 964 obj.dirs.visit(this); 965 obj.um.visit(this); 966 break; 967 case UnionTypeDefinitionEnum.NU: 968 obj.name.visit(this); 969 obj.um.visit(this); 970 break; 971 } 972 exit(obj); 973 } 974 975 void enter(UnionMembers obj) {} 976 void exit(UnionMembers obj) {} 977 978 void accept(UnionMembers obj) { 979 enter(obj); 980 final switch(obj.ruleSelection) { 981 case UnionMembersEnum.S: 982 obj.name.visit(this); 983 break; 984 case UnionMembersEnum.SPF: 985 obj.name.visit(this); 986 obj.follow.visit(this); 987 break; 988 case UnionMembersEnum.SF: 989 obj.name.visit(this); 990 obj.follow.visit(this); 991 break; 992 } 993 exit(obj); 994 } 995 996 void enter(EnumTypeDefinition obj) {} 997 void exit(EnumTypeDefinition obj) {} 998 999 void accept(EnumTypeDefinition obj) { 1000 enter(obj); 1001 final switch(obj.ruleSelection) { 1002 case EnumTypeDefinitionEnum.NDE: 1003 obj.name.visit(this); 1004 obj.dir.visit(this); 1005 obj.evds.visit(this); 1006 break; 1007 case EnumTypeDefinitionEnum.NE: 1008 obj.name.visit(this); 1009 obj.evds.visit(this); 1010 break; 1011 } 1012 exit(obj); 1013 } 1014 1015 void enter(EnumValueDefinitions obj) {} 1016 void exit(EnumValueDefinitions obj) {} 1017 1018 void accept(EnumValueDefinitions obj) { 1019 enter(obj); 1020 final switch(obj.ruleSelection) { 1021 case EnumValueDefinitionsEnum.D: 1022 obj.evd.visit(this); 1023 break; 1024 case EnumValueDefinitionsEnum.DCE: 1025 obj.evd.visit(this); 1026 obj.follow.visit(this); 1027 break; 1028 case EnumValueDefinitionsEnum.DE: 1029 obj.evd.visit(this); 1030 obj.follow.visit(this); 1031 break; 1032 } 1033 exit(obj); 1034 } 1035 1036 void enter(EnumValueDefinition obj) {} 1037 void exit(EnumValueDefinition obj) {} 1038 1039 void accept(EnumValueDefinition obj) { 1040 enter(obj); 1041 final switch(obj.ruleSelection) { 1042 case EnumValueDefinitionEnum.ED: 1043 obj.name.visit(this); 1044 obj.dirs.visit(this); 1045 break; 1046 case EnumValueDefinitionEnum.E: 1047 obj.name.visit(this); 1048 break; 1049 } 1050 exit(obj); 1051 } 1052 1053 void enter(InputTypeDefinition obj) {} 1054 void exit(InputTypeDefinition obj) {} 1055 1056 void accept(InputTypeDefinition obj) { 1057 enter(obj); 1058 final switch(obj.ruleSelection) { 1059 case InputTypeDefinitionEnum.NDE: 1060 obj.name.visit(this); 1061 obj.dir.visit(this); 1062 obj.ivds.visit(this); 1063 break; 1064 case InputTypeDefinitionEnum.NE: 1065 obj.name.visit(this); 1066 obj.ivds.visit(this); 1067 break; 1068 } 1069 exit(obj); 1070 } 1071 1072 void enter(TypeExtensionDefinition obj) {} 1073 void exit(TypeExtensionDefinition obj) {} 1074 1075 void accept(TypeExtensionDefinition obj) { 1076 enter(obj); 1077 final switch(obj.ruleSelection) { 1078 case TypeExtensionDefinitionEnum.O: 1079 obj.otd.visit(this); 1080 break; 1081 } 1082 exit(obj); 1083 } 1084 1085 void enter(DirectiveDefinition obj) {} 1086 void exit(DirectiveDefinition obj) {} 1087 1088 void accept(DirectiveDefinition obj) { 1089 enter(obj); 1090 final switch(obj.ruleSelection) { 1091 case DirectiveDefinitionEnum.AD: 1092 obj.name.visit(this); 1093 obj.ad.visit(this); 1094 obj.dl.visit(this); 1095 break; 1096 case DirectiveDefinitionEnum.D: 1097 obj.name.visit(this); 1098 obj.dl.visit(this); 1099 break; 1100 } 1101 exit(obj); 1102 } 1103 1104 void enter(DirectiveLocations obj) {} 1105 void exit(DirectiveLocations obj) {} 1106 1107 void accept(DirectiveLocations obj) { 1108 enter(obj); 1109 final switch(obj.ruleSelection) { 1110 case DirectiveLocationsEnum.N: 1111 obj.name.visit(this); 1112 break; 1113 case DirectiveLocationsEnum.NPF: 1114 obj.name.visit(this); 1115 obj.follow.visit(this); 1116 break; 1117 case DirectiveLocationsEnum.NF: 1118 obj.name.visit(this); 1119 obj.follow.visit(this); 1120 break; 1121 } 1122 exit(obj); 1123 } 1124 1125 void enter(InputObjectTypeDefinition obj) {} 1126 void exit(InputObjectTypeDefinition obj) {} 1127 1128 void accept(InputObjectTypeDefinition obj) { 1129 enter(obj); 1130 final switch(obj.ruleSelection) { 1131 case InputObjectTypeDefinitionEnum.NDI: 1132 obj.name.visit(this); 1133 obj.dirs.visit(this); 1134 break; 1135 case InputObjectTypeDefinitionEnum.NI: 1136 obj.name.visit(this); 1137 break; 1138 } 1139 exit(obj); 1140 } 1141 } 1142 1143 class ConstVisitor { 1144 1145 void enter(const(Document) obj) {} 1146 void exit(const(Document) obj) {} 1147 1148 void accept(const(Document) obj) { 1149 enter(obj); 1150 final switch(obj.ruleSelection) { 1151 case DocumentEnum.Defi: 1152 obj.defs.visit(this); 1153 break; 1154 } 1155 exit(obj); 1156 } 1157 1158 void enter(const(Definitions) obj) {} 1159 void exit(const(Definitions) obj) {} 1160 1161 void accept(const(Definitions) obj) { 1162 enter(obj); 1163 final switch(obj.ruleSelection) { 1164 case DefinitionsEnum.Def: 1165 obj.def.visit(this); 1166 break; 1167 case DefinitionsEnum.Defs: 1168 obj.def.visit(this); 1169 obj.follow.visit(this); 1170 break; 1171 } 1172 exit(obj); 1173 } 1174 1175 void enter(const(Definition) obj) {} 1176 void exit(const(Definition) obj) {} 1177 1178 void accept(const(Definition) obj) { 1179 enter(obj); 1180 final switch(obj.ruleSelection) { 1181 case DefinitionEnum.O: 1182 obj.op.visit(this); 1183 break; 1184 case DefinitionEnum.F: 1185 obj.frag.visit(this); 1186 break; 1187 case DefinitionEnum.T: 1188 obj.type.visit(this); 1189 break; 1190 } 1191 exit(obj); 1192 } 1193 1194 void enter(const(OperationDefinition) obj) {} 1195 void exit(const(OperationDefinition) obj) {} 1196 1197 void accept(const(OperationDefinition) obj) { 1198 enter(obj); 1199 final switch(obj.ruleSelection) { 1200 case OperationDefinitionEnum.SelSet: 1201 obj.ss.visit(this); 1202 break; 1203 case OperationDefinitionEnum.OT_N_VD: 1204 obj.ot.visit(this); 1205 obj.name.visit(this); 1206 obj.vd.visit(this); 1207 obj.d.visit(this); 1208 obj.ss.visit(this); 1209 break; 1210 case OperationDefinitionEnum.OT_N_V: 1211 obj.ot.visit(this); 1212 obj.name.visit(this); 1213 obj.vd.visit(this); 1214 obj.ss.visit(this); 1215 break; 1216 case OperationDefinitionEnum.OT_N_D: 1217 obj.ot.visit(this); 1218 obj.name.visit(this); 1219 obj.d.visit(this); 1220 obj.ss.visit(this); 1221 break; 1222 case OperationDefinitionEnum.OT_N: 1223 obj.ot.visit(this); 1224 obj.name.visit(this); 1225 obj.ss.visit(this); 1226 break; 1227 case OperationDefinitionEnum.OT_VD: 1228 obj.ot.visit(this); 1229 obj.vd.visit(this); 1230 obj.d.visit(this); 1231 obj.ss.visit(this); 1232 break; 1233 case OperationDefinitionEnum.OT_V: 1234 obj.ot.visit(this); 1235 obj.vd.visit(this); 1236 obj.ss.visit(this); 1237 break; 1238 case OperationDefinitionEnum.OT_D: 1239 obj.ot.visit(this); 1240 obj.d.visit(this); 1241 obj.ss.visit(this); 1242 break; 1243 case OperationDefinitionEnum.OT: 1244 obj.ot.visit(this); 1245 obj.ss.visit(this); 1246 break; 1247 } 1248 exit(obj); 1249 } 1250 1251 void enter(const(SelectionSet) obj) {} 1252 void exit(const(SelectionSet) obj) {} 1253 1254 void accept(const(SelectionSet) obj) { 1255 enter(obj); 1256 final switch(obj.ruleSelection) { 1257 case SelectionSetEnum.SS: 1258 obj.sel.visit(this); 1259 break; 1260 } 1261 exit(obj); 1262 } 1263 1264 void enter(const(OperationType) obj) {} 1265 void exit(const(OperationType) obj) {} 1266 1267 void accept(const(OperationType) obj) { 1268 enter(obj); 1269 final switch(obj.ruleSelection) { 1270 case OperationTypeEnum.Query: 1271 obj.tok.visit(this); 1272 break; 1273 case OperationTypeEnum.Mutation: 1274 obj.tok.visit(this); 1275 break; 1276 case OperationTypeEnum.Sub: 1277 obj.tok.visit(this); 1278 break; 1279 } 1280 exit(obj); 1281 } 1282 1283 void enter(const(Selections) obj) {} 1284 void exit(const(Selections) obj) {} 1285 1286 void accept(const(Selections) obj) { 1287 enter(obj); 1288 final switch(obj.ruleSelection) { 1289 case SelectionsEnum.Sel: 1290 obj.sel.visit(this); 1291 break; 1292 case SelectionsEnum.Sels: 1293 obj.sel.visit(this); 1294 obj.follow.visit(this); 1295 break; 1296 case SelectionsEnum.Selsc: 1297 obj.sel.visit(this); 1298 obj.follow.visit(this); 1299 break; 1300 } 1301 exit(obj); 1302 } 1303 1304 void enter(const(Selection) obj) {} 1305 void exit(const(Selection) obj) {} 1306 1307 void accept(const(Selection) obj) { 1308 enter(obj); 1309 final switch(obj.ruleSelection) { 1310 case SelectionEnum.Field: 1311 obj.field.visit(this); 1312 break; 1313 case SelectionEnum.Spread: 1314 obj.frag.visit(this); 1315 break; 1316 case SelectionEnum.IFrag: 1317 obj.ifrag.visit(this); 1318 break; 1319 } 1320 exit(obj); 1321 } 1322 1323 void enter(const(FragmentSpread) obj) {} 1324 void exit(const(FragmentSpread) obj) {} 1325 1326 void accept(const(FragmentSpread) obj) { 1327 enter(obj); 1328 final switch(obj.ruleSelection) { 1329 case FragmentSpreadEnum.FD: 1330 obj.name.visit(this); 1331 obj.dirs.visit(this); 1332 break; 1333 case FragmentSpreadEnum.F: 1334 obj.name.visit(this); 1335 break; 1336 } 1337 exit(obj); 1338 } 1339 1340 void enter(const(InlineFragment) obj) {} 1341 void exit(const(InlineFragment) obj) {} 1342 1343 void accept(const(InlineFragment) obj) { 1344 enter(obj); 1345 final switch(obj.ruleSelection) { 1346 case InlineFragmentEnum.TDS: 1347 obj.tc.visit(this); 1348 obj.dirs.visit(this); 1349 obj.ss.visit(this); 1350 break; 1351 case InlineFragmentEnum.TS: 1352 obj.tc.visit(this); 1353 obj.ss.visit(this); 1354 break; 1355 case InlineFragmentEnum.DS: 1356 obj.dirs.visit(this); 1357 obj.ss.visit(this); 1358 break; 1359 case InlineFragmentEnum.S: 1360 obj.ss.visit(this); 1361 break; 1362 } 1363 exit(obj); 1364 } 1365 1366 void enter(const(Field) obj) {} 1367 void exit(const(Field) obj) {} 1368 1369 void accept(const(Field) obj) { 1370 enter(obj); 1371 final switch(obj.ruleSelection) { 1372 case FieldEnum.FADS: 1373 obj.name.visit(this); 1374 obj.args.visit(this); 1375 obj.dirs.visit(this); 1376 obj.ss.visit(this); 1377 break; 1378 case FieldEnum.FAS: 1379 obj.name.visit(this); 1380 obj.args.visit(this); 1381 obj.ss.visit(this); 1382 break; 1383 case FieldEnum.FAD: 1384 obj.name.visit(this); 1385 obj.args.visit(this); 1386 obj.dirs.visit(this); 1387 break; 1388 case FieldEnum.FDS: 1389 obj.name.visit(this); 1390 obj.dirs.visit(this); 1391 obj.ss.visit(this); 1392 break; 1393 case FieldEnum.FS: 1394 obj.name.visit(this); 1395 obj.ss.visit(this); 1396 break; 1397 case FieldEnum.FD: 1398 obj.name.visit(this); 1399 obj.dirs.visit(this); 1400 break; 1401 case FieldEnum.FA: 1402 obj.name.visit(this); 1403 obj.args.visit(this); 1404 break; 1405 case FieldEnum.F: 1406 obj.name.visit(this); 1407 break; 1408 } 1409 exit(obj); 1410 } 1411 1412 void enter(const(FieldName) obj) {} 1413 void exit(const(FieldName) obj) {} 1414 1415 void accept(const(FieldName) obj) { 1416 enter(obj); 1417 final switch(obj.ruleSelection) { 1418 case FieldNameEnum.A: 1419 obj.name.visit(this); 1420 obj.aka.visit(this); 1421 break; 1422 case FieldNameEnum.N: 1423 obj.name.visit(this); 1424 break; 1425 } 1426 exit(obj); 1427 } 1428 1429 void enter(const(Arguments) obj) {} 1430 void exit(const(Arguments) obj) {} 1431 1432 void accept(const(Arguments) obj) { 1433 enter(obj); 1434 final switch(obj.ruleSelection) { 1435 case ArgumentsEnum.List: 1436 obj.arg.visit(this); 1437 break; 1438 case ArgumentsEnum.Empty: 1439 break; 1440 } 1441 exit(obj); 1442 } 1443 1444 void enter(const(ArgumentList) obj) {} 1445 void exit(const(ArgumentList) obj) {} 1446 1447 void accept(const(ArgumentList) obj) { 1448 enter(obj); 1449 final switch(obj.ruleSelection) { 1450 case ArgumentListEnum.A: 1451 obj.arg.visit(this); 1452 break; 1453 case ArgumentListEnum.ACS: 1454 obj.arg.visit(this); 1455 obj.follow.visit(this); 1456 break; 1457 case ArgumentListEnum.AS: 1458 obj.arg.visit(this); 1459 obj.follow.visit(this); 1460 break; 1461 } 1462 exit(obj); 1463 } 1464 1465 void enter(const(Argument) obj) {} 1466 void exit(const(Argument) obj) {} 1467 1468 void accept(const(Argument) obj) { 1469 enter(obj); 1470 final switch(obj.ruleSelection) { 1471 case ArgumentEnum.Name: 1472 obj.name.visit(this); 1473 obj.vv.visit(this); 1474 break; 1475 } 1476 exit(obj); 1477 } 1478 1479 void enter(const(FragmentDefinition) obj) {} 1480 void exit(const(FragmentDefinition) obj) {} 1481 1482 void accept(const(FragmentDefinition) obj) { 1483 enter(obj); 1484 final switch(obj.ruleSelection) { 1485 case FragmentDefinitionEnum.FTDS: 1486 obj.name.visit(this); 1487 obj.tc.visit(this); 1488 obj.dirs.visit(this); 1489 obj.ss.visit(this); 1490 break; 1491 case FragmentDefinitionEnum.FTS: 1492 obj.name.visit(this); 1493 obj.tc.visit(this); 1494 obj.ss.visit(this); 1495 break; 1496 } 1497 exit(obj); 1498 } 1499 1500 void enter(const(Directives) obj) {} 1501 void exit(const(Directives) obj) {} 1502 1503 void accept(const(Directives) obj) { 1504 enter(obj); 1505 final switch(obj.ruleSelection) { 1506 case DirectivesEnum.Dir: 1507 obj.dir.visit(this); 1508 break; 1509 case DirectivesEnum.Dirs: 1510 obj.dir.visit(this); 1511 obj.follow.visit(this); 1512 break; 1513 } 1514 exit(obj); 1515 } 1516 1517 void enter(const(Directive) obj) {} 1518 void exit(const(Directive) obj) {} 1519 1520 void accept(const(Directive) obj) { 1521 enter(obj); 1522 final switch(obj.ruleSelection) { 1523 case DirectiveEnum.NArg: 1524 obj.name.visit(this); 1525 obj.arg.visit(this); 1526 break; 1527 case DirectiveEnum.N: 1528 obj.name.visit(this); 1529 break; 1530 } 1531 exit(obj); 1532 } 1533 1534 void enter(const(VariableDefinitions) obj) {} 1535 void exit(const(VariableDefinitions) obj) {} 1536 1537 void accept(const(VariableDefinitions) obj) { 1538 enter(obj); 1539 final switch(obj.ruleSelection) { 1540 case VariableDefinitionsEnum.Empty: 1541 break; 1542 case VariableDefinitionsEnum.Vars: 1543 obj.vars.visit(this); 1544 break; 1545 } 1546 exit(obj); 1547 } 1548 1549 void enter(const(VariableDefinitionList) obj) {} 1550 void exit(const(VariableDefinitionList) obj) {} 1551 1552 void accept(const(VariableDefinitionList) obj) { 1553 enter(obj); 1554 final switch(obj.ruleSelection) { 1555 case VariableDefinitionListEnum.V: 1556 obj.var.visit(this); 1557 break; 1558 case VariableDefinitionListEnum.VCF: 1559 obj.var.visit(this); 1560 obj.follow.visit(this); 1561 break; 1562 case VariableDefinitionListEnum.VF: 1563 obj.var.visit(this); 1564 obj.follow.visit(this); 1565 break; 1566 } 1567 exit(obj); 1568 } 1569 1570 void enter(const(VariableDefinition) obj) {} 1571 void exit(const(VariableDefinition) obj) {} 1572 1573 void accept(const(VariableDefinition) obj) { 1574 enter(obj); 1575 final switch(obj.ruleSelection) { 1576 case VariableDefinitionEnum.VarD: 1577 obj.var.visit(this); 1578 obj.type.visit(this); 1579 obj.dvalue.visit(this); 1580 break; 1581 case VariableDefinitionEnum.Var: 1582 obj.var.visit(this); 1583 obj.type.visit(this); 1584 break; 1585 } 1586 exit(obj); 1587 } 1588 1589 void enter(const(Variable) obj) {} 1590 void exit(const(Variable) obj) {} 1591 1592 void accept(const(Variable) obj) { 1593 enter(obj); 1594 final switch(obj.ruleSelection) { 1595 case VariableEnum.Var: 1596 obj.name.visit(this); 1597 break; 1598 } 1599 exit(obj); 1600 } 1601 1602 void enter(const(DefaultValue) obj) {} 1603 void exit(const(DefaultValue) obj) {} 1604 1605 void accept(const(DefaultValue) obj) { 1606 enter(obj); 1607 final switch(obj.ruleSelection) { 1608 case DefaultValueEnum.DV: 1609 obj.value.visit(this); 1610 break; 1611 } 1612 exit(obj); 1613 } 1614 1615 void enter(const(ValueOrVariable) obj) {} 1616 void exit(const(ValueOrVariable) obj) {} 1617 1618 void accept(const(ValueOrVariable) obj) { 1619 enter(obj); 1620 final switch(obj.ruleSelection) { 1621 case ValueOrVariableEnum.Val: 1622 obj.val.visit(this); 1623 break; 1624 case ValueOrVariableEnum.Var: 1625 obj.var.visit(this); 1626 break; 1627 } 1628 exit(obj); 1629 } 1630 1631 void enter(const(Value) obj) {} 1632 void exit(const(Value) obj) {} 1633 1634 void accept(const(Value) obj) { 1635 enter(obj); 1636 final switch(obj.ruleSelection) { 1637 case ValueEnum.STR: 1638 obj.tok.visit(this); 1639 break; 1640 case ValueEnum.INT: 1641 obj.tok.visit(this); 1642 break; 1643 case ValueEnum.FLOAT: 1644 obj.tok.visit(this); 1645 break; 1646 case ValueEnum.T: 1647 obj.tok.visit(this); 1648 break; 1649 case ValueEnum.F: 1650 obj.tok.visit(this); 1651 break; 1652 case ValueEnum.ARR: 1653 obj.arr.visit(this); 1654 break; 1655 case ValueEnum.O: 1656 obj.obj.visit(this); 1657 break; 1658 case ValueEnum.E: 1659 obj.tok.visit(this); 1660 break; 1661 } 1662 exit(obj); 1663 } 1664 1665 void enter(const(Type) obj) {} 1666 void exit(const(Type) obj) {} 1667 1668 void accept(const(Type) obj) { 1669 enter(obj); 1670 final switch(obj.ruleSelection) { 1671 case TypeEnum.TN: 1672 obj.tname.visit(this); 1673 break; 1674 case TypeEnum.LN: 1675 obj.list.visit(this); 1676 break; 1677 case TypeEnum.T: 1678 obj.tname.visit(this); 1679 break; 1680 case TypeEnum.L: 1681 obj.list.visit(this); 1682 break; 1683 } 1684 exit(obj); 1685 } 1686 1687 void enter(const(ListType) obj) {} 1688 void exit(const(ListType) obj) {} 1689 1690 void accept(const(ListType) obj) { 1691 enter(obj); 1692 final switch(obj.ruleSelection) { 1693 case ListTypeEnum.T: 1694 obj.type.visit(this); 1695 break; 1696 } 1697 exit(obj); 1698 } 1699 1700 void enter(const(Values) obj) {} 1701 void exit(const(Values) obj) {} 1702 1703 void accept(const(Values) obj) { 1704 enter(obj); 1705 final switch(obj.ruleSelection) { 1706 case ValuesEnum.Val: 1707 obj.val.visit(this); 1708 break; 1709 case ValuesEnum.Vals: 1710 obj.val.visit(this); 1711 obj.follow.visit(this); 1712 break; 1713 } 1714 exit(obj); 1715 } 1716 1717 void enter(const(Array) obj) {} 1718 void exit(const(Array) obj) {} 1719 1720 void accept(const(Array) obj) { 1721 enter(obj); 1722 final switch(obj.ruleSelection) { 1723 case ArrayEnum.Empty: 1724 break; 1725 case ArrayEnum.Value: 1726 obj.vals.visit(this); 1727 break; 1728 } 1729 exit(obj); 1730 } 1731 1732 void enter(const(ObjectValues) obj) {} 1733 void exit(const(ObjectValues) obj) {} 1734 1735 void accept(const(ObjectValues) obj) { 1736 enter(obj); 1737 final switch(obj.ruleSelection) { 1738 case ObjectValuesEnum.V: 1739 obj.name.visit(this); 1740 obj.val.visit(this); 1741 break; 1742 case ObjectValuesEnum.Vsc: 1743 obj.name.visit(this); 1744 obj.val.visit(this); 1745 obj.follow.visit(this); 1746 break; 1747 case ObjectValuesEnum.Vs: 1748 obj.name.visit(this); 1749 obj.val.visit(this); 1750 obj.follow.visit(this); 1751 break; 1752 } 1753 exit(obj); 1754 } 1755 1756 void enter(const(ObjectType) obj) {} 1757 void exit(const(ObjectType) obj) {} 1758 1759 void accept(const(ObjectType) obj) { 1760 enter(obj); 1761 final switch(obj.ruleSelection) { 1762 case ObjectTypeEnum.Var: 1763 obj.vals.visit(this); 1764 break; 1765 } 1766 exit(obj); 1767 } 1768 1769 void enter(const(TypeSystemDefinition) obj) {} 1770 void exit(const(TypeSystemDefinition) obj) {} 1771 1772 void accept(const(TypeSystemDefinition) obj) { 1773 enter(obj); 1774 final switch(obj.ruleSelection) { 1775 case TypeSystemDefinitionEnum.S: 1776 obj.sch.visit(this); 1777 break; 1778 case TypeSystemDefinitionEnum.T: 1779 obj.td.visit(this); 1780 break; 1781 case TypeSystemDefinitionEnum.TE: 1782 obj.ted.visit(this); 1783 break; 1784 case TypeSystemDefinitionEnum.D: 1785 obj.dd.visit(this); 1786 break; 1787 } 1788 exit(obj); 1789 } 1790 1791 void enter(const(TypeDefinition) obj) {} 1792 void exit(const(TypeDefinition) obj) {} 1793 1794 void accept(const(TypeDefinition) obj) { 1795 enter(obj); 1796 final switch(obj.ruleSelection) { 1797 case TypeDefinitionEnum.S: 1798 obj.std.visit(this); 1799 break; 1800 case TypeDefinitionEnum.O: 1801 obj.otd.visit(this); 1802 break; 1803 case TypeDefinitionEnum.I: 1804 obj.itd.visit(this); 1805 break; 1806 case TypeDefinitionEnum.U: 1807 obj.utd.visit(this); 1808 break; 1809 case TypeDefinitionEnum.E: 1810 obj.etd.visit(this); 1811 break; 1812 case TypeDefinitionEnum.IO: 1813 obj.iod.visit(this); 1814 break; 1815 } 1816 exit(obj); 1817 } 1818 1819 void enter(const(SchemaDefinition) obj) {} 1820 void exit(const(SchemaDefinition) obj) {} 1821 1822 void accept(const(SchemaDefinition) obj) { 1823 enter(obj); 1824 final switch(obj.ruleSelection) { 1825 case SchemaDefinitionEnum.DO: 1826 obj.dir.visit(this); 1827 obj.otds.visit(this); 1828 break; 1829 case SchemaDefinitionEnum.O: 1830 obj.otds.visit(this); 1831 break; 1832 } 1833 exit(obj); 1834 } 1835 1836 void enter(const(OperationTypeDefinitions) obj) {} 1837 void exit(const(OperationTypeDefinitions) obj) {} 1838 1839 void accept(const(OperationTypeDefinitions) obj) { 1840 enter(obj); 1841 final switch(obj.ruleSelection) { 1842 case OperationTypeDefinitionsEnum.O: 1843 obj.otd.visit(this); 1844 break; 1845 case OperationTypeDefinitionsEnum.OCS: 1846 obj.otd.visit(this); 1847 obj.follow.visit(this); 1848 break; 1849 case OperationTypeDefinitionsEnum.OS: 1850 obj.otd.visit(this); 1851 obj.follow.visit(this); 1852 break; 1853 } 1854 exit(obj); 1855 } 1856 1857 void enter(const(OperationTypeDefinition) obj) {} 1858 void exit(const(OperationTypeDefinition) obj) {} 1859 1860 void accept(const(OperationTypeDefinition) obj) { 1861 enter(obj); 1862 final switch(obj.ruleSelection) { 1863 case OperationTypeDefinitionEnum.O: 1864 obj.ot.visit(this); 1865 obj.nt.visit(this); 1866 break; 1867 } 1868 exit(obj); 1869 } 1870 1871 void enter(const(ScalarTypeDefinition) obj) {} 1872 void exit(const(ScalarTypeDefinition) obj) {} 1873 1874 void accept(const(ScalarTypeDefinition) obj) { 1875 enter(obj); 1876 final switch(obj.ruleSelection) { 1877 case ScalarTypeDefinitionEnum.D: 1878 obj.name.visit(this); 1879 obj.dir.visit(this); 1880 break; 1881 case ScalarTypeDefinitionEnum.S: 1882 obj.name.visit(this); 1883 break; 1884 } 1885 exit(obj); 1886 } 1887 1888 void enter(const(ObjectTypeDefinition) obj) {} 1889 void exit(const(ObjectTypeDefinition) obj) {} 1890 1891 void accept(const(ObjectTypeDefinition) obj) { 1892 enter(obj); 1893 final switch(obj.ruleSelection) { 1894 case ObjectTypeDefinitionEnum.ID: 1895 obj.name.visit(this); 1896 obj.ii.visit(this); 1897 obj.dir.visit(this); 1898 obj.fds.visit(this); 1899 break; 1900 case ObjectTypeDefinitionEnum.I: 1901 obj.name.visit(this); 1902 obj.ii.visit(this); 1903 obj.fds.visit(this); 1904 break; 1905 case ObjectTypeDefinitionEnum.D: 1906 obj.name.visit(this); 1907 obj.dir.visit(this); 1908 obj.fds.visit(this); 1909 break; 1910 case ObjectTypeDefinitionEnum.F: 1911 obj.name.visit(this); 1912 obj.fds.visit(this); 1913 break; 1914 } 1915 exit(obj); 1916 } 1917 1918 void enter(const(FieldDefinitions) obj) {} 1919 void exit(const(FieldDefinitions) obj) {} 1920 1921 void accept(const(FieldDefinitions) obj) { 1922 enter(obj); 1923 final switch(obj.ruleSelection) { 1924 case FieldDefinitionsEnum.F: 1925 obj.fd.visit(this); 1926 break; 1927 case FieldDefinitionsEnum.FC: 1928 obj.fd.visit(this); 1929 obj.follow.visit(this); 1930 break; 1931 case FieldDefinitionsEnum.FNC: 1932 obj.fd.visit(this); 1933 obj.follow.visit(this); 1934 break; 1935 } 1936 exit(obj); 1937 } 1938 1939 void enter(const(FieldDefinition) obj) {} 1940 void exit(const(FieldDefinition) obj) {} 1941 1942 void accept(const(FieldDefinition) obj) { 1943 enter(obj); 1944 final switch(obj.ruleSelection) { 1945 case FieldDefinitionEnum.AD: 1946 obj.name.visit(this); 1947 obj.arg.visit(this); 1948 obj.typ.visit(this); 1949 obj.dir.visit(this); 1950 break; 1951 case FieldDefinitionEnum.A: 1952 obj.name.visit(this); 1953 obj.arg.visit(this); 1954 obj.typ.visit(this); 1955 break; 1956 case FieldDefinitionEnum.D: 1957 obj.name.visit(this); 1958 obj.typ.visit(this); 1959 obj.dir.visit(this); 1960 break; 1961 case FieldDefinitionEnum.T: 1962 obj.name.visit(this); 1963 obj.typ.visit(this); 1964 break; 1965 } 1966 exit(obj); 1967 } 1968 1969 void enter(const(ImplementsInterfaces) obj) {} 1970 void exit(const(ImplementsInterfaces) obj) {} 1971 1972 void accept(const(ImplementsInterfaces) obj) { 1973 enter(obj); 1974 final switch(obj.ruleSelection) { 1975 case ImplementsInterfacesEnum.N: 1976 obj.nts.visit(this); 1977 break; 1978 } 1979 exit(obj); 1980 } 1981 1982 void enter(const(NamedTypes) obj) {} 1983 void exit(const(NamedTypes) obj) {} 1984 1985 void accept(const(NamedTypes) obj) { 1986 enter(obj); 1987 final switch(obj.ruleSelection) { 1988 case NamedTypesEnum.N: 1989 obj.name.visit(this); 1990 break; 1991 case NamedTypesEnum.NCS: 1992 obj.name.visit(this); 1993 obj.follow.visit(this); 1994 break; 1995 case NamedTypesEnum.NS: 1996 obj.name.visit(this); 1997 obj.follow.visit(this); 1998 break; 1999 } 2000 exit(obj); 2001 } 2002 2003 void enter(const(ArgumentsDefinition) obj) {} 2004 void exit(const(ArgumentsDefinition) obj) {} 2005 2006 void accept(const(ArgumentsDefinition) obj) { 2007 enter(obj); 2008 final switch(obj.ruleSelection) { 2009 case ArgumentsDefinitionEnum.A: 2010 break; 2011 } 2012 exit(obj); 2013 } 2014 2015 void enter(const(InputValueDefinitions) obj) {} 2016 void exit(const(InputValueDefinitions) obj) {} 2017 2018 void accept(const(InputValueDefinitions) obj) { 2019 enter(obj); 2020 final switch(obj.ruleSelection) { 2021 case InputValueDefinitionsEnum.I: 2022 obj.iv.visit(this); 2023 break; 2024 case InputValueDefinitionsEnum.ICF: 2025 obj.iv.visit(this); 2026 obj.follow.visit(this); 2027 break; 2028 case InputValueDefinitionsEnum.IF: 2029 obj.iv.visit(this); 2030 obj.follow.visit(this); 2031 break; 2032 } 2033 exit(obj); 2034 } 2035 2036 void enter(const(InputValueDefinition) obj) {} 2037 void exit(const(InputValueDefinition) obj) {} 2038 2039 void accept(const(InputValueDefinition) obj) { 2040 enter(obj); 2041 final switch(obj.ruleSelection) { 2042 case InputValueDefinitionEnum.TVD: 2043 obj.name.visit(this); 2044 obj.type.visit(this); 2045 obj.df.visit(this); 2046 obj.dirs.visit(this); 2047 break; 2048 case InputValueDefinitionEnum.TD: 2049 obj.name.visit(this); 2050 obj.type.visit(this); 2051 obj.dirs.visit(this); 2052 break; 2053 case InputValueDefinitionEnum.TV: 2054 obj.name.visit(this); 2055 obj.type.visit(this); 2056 obj.df.visit(this); 2057 break; 2058 case InputValueDefinitionEnum.T: 2059 obj.name.visit(this); 2060 obj.type.visit(this); 2061 break; 2062 } 2063 exit(obj); 2064 } 2065 2066 void enter(const(InterfaceTypeDefinition) obj) {} 2067 void exit(const(InterfaceTypeDefinition) obj) {} 2068 2069 void accept(const(InterfaceTypeDefinition) obj) { 2070 enter(obj); 2071 final switch(obj.ruleSelection) { 2072 case InterfaceTypeDefinitionEnum.NDF: 2073 obj.name.visit(this); 2074 obj.dirs.visit(this); 2075 obj.fds.visit(this); 2076 break; 2077 case InterfaceTypeDefinitionEnum.NF: 2078 obj.name.visit(this); 2079 obj.fds.visit(this); 2080 break; 2081 } 2082 exit(obj); 2083 } 2084 2085 void enter(const(UnionTypeDefinition) obj) {} 2086 void exit(const(UnionTypeDefinition) obj) {} 2087 2088 void accept(const(UnionTypeDefinition) obj) { 2089 enter(obj); 2090 final switch(obj.ruleSelection) { 2091 case UnionTypeDefinitionEnum.NDU: 2092 obj.name.visit(this); 2093 obj.dirs.visit(this); 2094 obj.um.visit(this); 2095 break; 2096 case UnionTypeDefinitionEnum.NU: 2097 obj.name.visit(this); 2098 obj.um.visit(this); 2099 break; 2100 } 2101 exit(obj); 2102 } 2103 2104 void enter(const(UnionMembers) obj) {} 2105 void exit(const(UnionMembers) obj) {} 2106 2107 void accept(const(UnionMembers) obj) { 2108 enter(obj); 2109 final switch(obj.ruleSelection) { 2110 case UnionMembersEnum.S: 2111 obj.name.visit(this); 2112 break; 2113 case UnionMembersEnum.SPF: 2114 obj.name.visit(this); 2115 obj.follow.visit(this); 2116 break; 2117 case UnionMembersEnum.SF: 2118 obj.name.visit(this); 2119 obj.follow.visit(this); 2120 break; 2121 } 2122 exit(obj); 2123 } 2124 2125 void enter(const(EnumTypeDefinition) obj) {} 2126 void exit(const(EnumTypeDefinition) obj) {} 2127 2128 void accept(const(EnumTypeDefinition) obj) { 2129 enter(obj); 2130 final switch(obj.ruleSelection) { 2131 case EnumTypeDefinitionEnum.NDE: 2132 obj.name.visit(this); 2133 obj.dir.visit(this); 2134 obj.evds.visit(this); 2135 break; 2136 case EnumTypeDefinitionEnum.NE: 2137 obj.name.visit(this); 2138 obj.evds.visit(this); 2139 break; 2140 } 2141 exit(obj); 2142 } 2143 2144 void enter(const(EnumValueDefinitions) obj) {} 2145 void exit(const(EnumValueDefinitions) obj) {} 2146 2147 void accept(const(EnumValueDefinitions) obj) { 2148 enter(obj); 2149 final switch(obj.ruleSelection) { 2150 case EnumValueDefinitionsEnum.D: 2151 obj.evd.visit(this); 2152 break; 2153 case EnumValueDefinitionsEnum.DCE: 2154 obj.evd.visit(this); 2155 obj.follow.visit(this); 2156 break; 2157 case EnumValueDefinitionsEnum.DE: 2158 obj.evd.visit(this); 2159 obj.follow.visit(this); 2160 break; 2161 } 2162 exit(obj); 2163 } 2164 2165 void enter(const(EnumValueDefinition) obj) {} 2166 void exit(const(EnumValueDefinition) obj) {} 2167 2168 void accept(const(EnumValueDefinition) obj) { 2169 enter(obj); 2170 final switch(obj.ruleSelection) { 2171 case EnumValueDefinitionEnum.ED: 2172 obj.name.visit(this); 2173 obj.dirs.visit(this); 2174 break; 2175 case EnumValueDefinitionEnum.E: 2176 obj.name.visit(this); 2177 break; 2178 } 2179 exit(obj); 2180 } 2181 2182 void enter(const(InputTypeDefinition) obj) {} 2183 void exit(const(InputTypeDefinition) obj) {} 2184 2185 void accept(const(InputTypeDefinition) obj) { 2186 enter(obj); 2187 final switch(obj.ruleSelection) { 2188 case InputTypeDefinitionEnum.NDE: 2189 obj.name.visit(this); 2190 obj.dir.visit(this); 2191 obj.ivds.visit(this); 2192 break; 2193 case InputTypeDefinitionEnum.NE: 2194 obj.name.visit(this); 2195 obj.ivds.visit(this); 2196 break; 2197 } 2198 exit(obj); 2199 } 2200 2201 void enter(const(TypeExtensionDefinition) obj) {} 2202 void exit(const(TypeExtensionDefinition) obj) {} 2203 2204 void accept(const(TypeExtensionDefinition) obj) { 2205 enter(obj); 2206 final switch(obj.ruleSelection) { 2207 case TypeExtensionDefinitionEnum.O: 2208 obj.otd.visit(this); 2209 break; 2210 } 2211 exit(obj); 2212 } 2213 2214 void enter(const(DirectiveDefinition) obj) {} 2215 void exit(const(DirectiveDefinition) obj) {} 2216 2217 void accept(const(DirectiveDefinition) obj) { 2218 enter(obj); 2219 final switch(obj.ruleSelection) { 2220 case DirectiveDefinitionEnum.AD: 2221 obj.name.visit(this); 2222 obj.ad.visit(this); 2223 obj.dl.visit(this); 2224 break; 2225 case DirectiveDefinitionEnum.D: 2226 obj.name.visit(this); 2227 obj.dl.visit(this); 2228 break; 2229 } 2230 exit(obj); 2231 } 2232 2233 void enter(const(DirectiveLocations) obj) {} 2234 void exit(const(DirectiveLocations) obj) {} 2235 2236 void accept(const(DirectiveLocations) obj) { 2237 enter(obj); 2238 final switch(obj.ruleSelection) { 2239 case DirectiveLocationsEnum.N: 2240 obj.name.visit(this); 2241 break; 2242 case DirectiveLocationsEnum.NPF: 2243 obj.name.visit(this); 2244 obj.follow.visit(this); 2245 break; 2246 case DirectiveLocationsEnum.NF: 2247 obj.name.visit(this); 2248 obj.follow.visit(this); 2249 break; 2250 } 2251 exit(obj); 2252 } 2253 2254 void enter(const(InputObjectTypeDefinition) obj) {} 2255 void exit(const(InputObjectTypeDefinition) obj) {} 2256 2257 void accept(const(InputObjectTypeDefinition) obj) { 2258 enter(obj); 2259 final switch(obj.ruleSelection) { 2260 case InputObjectTypeDefinitionEnum.NDI: 2261 obj.name.visit(this); 2262 obj.dirs.visit(this); 2263 break; 2264 case InputObjectTypeDefinitionEnum.NI: 2265 obj.name.visit(this); 2266 break; 2267 } 2268 exit(obj); 2269 } 2270 } 2271