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