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