on master help sign in
3782 lines 82 kB history raw
1{
2 "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
3 "name": "knot",
4 "word": "lower_identifier",
5 "rules": {
6 "source_file": {
7 "type": "SEQ",
8 "members": [
9 {
10 "type": "CHOICE",
11 "members": [
12 {
13 "type": "SEQ",
14 "members": [
15 {
16 "type": "SYMBOL",
17 "name": "module_declaration"
18 },
19 {
20 "type": "SYMBOL",
21 "name": "_newline"
22 }
23 ]
24 },
25 {
26 "type": "BLANK"
27 }
28 ]
29 },
30 {
31 "type": "CHOICE",
32 "members": [
33 {
34 "type": "SEQ",
35 "members": [
36 {
37 "type": "SYMBOL",
38 "name": "_declaration"
39 },
40 {
41 "type": "REPEAT",
42 "content": {
43 "type": "SEQ",
44 "members": [
45 {
46 "type": "SYMBOL",
47 "name": "_newline"
48 },
49 {
50 "type": "SYMBOL",
51 "name": "_declaration"
52 }
53 ]
54 }
55 }
56 ]
57 },
58 {
59 "type": "BLANK"
60 }
61 ]
62 }
63 ]
64 },
65 "module_declaration": {
66 "type": "SEQ",
67 "members": [
68 {
69 "type": "STRING",
70 "value": "module"
71 },
72 {
73 "type": "FIELD",
74 "name": "name",
75 "content": {
76 "type": "SYMBOL",
77 "name": "upper_identifier"
78 }
79 }
80 ]
81 },
82 "_declaration": {
83 "type": "CHOICE",
84 "members": [
85 {
86 "type": "SYMBOL",
87 "name": "import_declaration"
88 },
89 {
90 "type": "SYMBOL",
91 "name": "export_declaration"
92 },
93 {
94 "type": "SYMBOL",
95 "name": "_declaration_body"
96 }
97 ]
98 },
99 "_declaration_body": {
100 "type": "CHOICE",
101 "members": [
102 {
103 "type": "SYMBOL",
104 "name": "data_declaration"
105 },
106 {
107 "type": "SYMBOL",
108 "name": "type_alias_declaration"
109 },
110 {
111 "type": "SYMBOL",
112 "name": "source_declaration"
113 },
114 {
115 "type": "SYMBOL",
116 "name": "view_declaration"
117 },
118 {
119 "type": "SYMBOL",
120 "name": "derived_declaration"
121 },
122 {
123 "type": "SYMBOL",
124 "name": "fun_declaration"
125 },
126 {
127 "type": "SYMBOL",
128 "name": "trait_declaration"
129 },
130 {
131 "type": "SYMBOL",
132 "name": "impl_declaration"
133 },
134 {
135 "type": "SYMBOL",
136 "name": "migrate_declaration"
137 },
138 {
139 "type": "SYMBOL",
140 "name": "route_declaration"
141 },
142 {
143 "type": "SYMBOL",
144 "name": "route_composite_declaration"
145 },
146 {
147 "type": "SYMBOL",
148 "name": "subset_constraint"
149 }
150 ]
151 },
152 "import_declaration": {
153 "type": "SEQ",
154 "members": [
155 {
156 "type": "STRING",
157 "value": "import"
158 },
159 {
160 "type": "FIELD",
161 "name": "path",
162 "content": {
163 "type": "SYMBOL",
164 "name": "import_path"
165 }
166 },
167 {
168 "type": "CHOICE",
169 "members": [
170 {
171 "type": "SEQ",
172 "members": [
173 {
174 "type": "STRING",
175 "value": "("
176 },
177 {
178 "type": "SEQ",
179 "members": [
180 {
181 "type": "SYMBOL",
182 "name": "import_item"
183 },
184 {
185 "type": "REPEAT",
186 "content": {
187 "type": "SEQ",
188 "members": [
189 {
190 "type": "STRING",
191 "value": ","
192 },
193 {
194 "type": "SYMBOL",
195 "name": "import_item"
196 }
197 ]
198 }
199 }
200 ]
201 },
202 {
203 "type": "STRING",
204 "value": ")"
205 }
206 ]
207 },
208 {
209 "type": "BLANK"
210 }
211 ]
212 }
213 ]
214 },
215 "import_path": {
216 "type": "SEQ",
217 "members": [
218 {
219 "type": "STRING",
220 "value": "."
221 },
222 {
223 "type": "STRING",
224 "value": "/"
225 },
226 {
227 "type": "SEQ",
228 "members": [
229 {
230 "type": "SYMBOL",
231 "name": "lower_identifier"
232 },
233 {
234 "type": "REPEAT",
235 "content": {
236 "type": "SEQ",
237 "members": [
238 {
239 "type": "STRING",
240 "value": "/"
241 },
242 {
243 "type": "SYMBOL",
244 "name": "lower_identifier"
245 }
246 ]
247 }
248 }
249 ]
250 }
251 ]
252 },
253 "import_item": {
254 "type": "CHOICE",
255 "members": [
256 {
257 "type": "SYMBOL",
258 "name": "lower_identifier"
259 },
260 {
261 "type": "SYMBOL",
262 "name": "upper_identifier"
263 }
264 ]
265 },
266 "export_declaration": {
267 "type": "SEQ",
268 "members": [
269 {
270 "type": "STRING",
271 "value": "export"
272 },
273 {
274 "type": "SYMBOL",
275 "name": "_declaration_body"
276 }
277 ]
278 },
279 "data_declaration": {
280 "type": "SEQ",
281 "members": [
282 {
283 "type": "STRING",
284 "value": "data"
285 },
286 {
287 "type": "FIELD",
288 "name": "name",
289 "content": {
290 "type": "SYMBOL",
291 "name": "upper_identifier"
292 }
293 },
294 {
295 "type": "FIELD",
296 "name": "params",
297 "content": {
298 "type": "REPEAT",
299 "content": {
300 "type": "SYMBOL",
301 "name": "lower_identifier"
302 }
303 }
304 },
305 {
306 "type": "CHOICE",
307 "members": [
308 {
309 "type": "SEQ",
310 "members": [
311 {
312 "type": "SYMBOL",
313 "name": "_indent"
314 },
315 {
316 "type": "SEQ",
317 "members": [
318 {
319 "type": "SYMBOL",
320 "name": "constructor_def"
321 },
322 {
323 "type": "REPEAT",
324 "content": {
325 "type": "SEQ",
326 "members": [
327 {
328 "type": "SYMBOL",
329 "name": "_newline"
330 },
331 {
332 "type": "SYMBOL",
333 "name": "constructor_def"
334 }
335 ]
336 }
337 }
338 ]
339 },
340 {
341 "type": "CHOICE",
342 "members": [
343 {
344 "type": "SEQ",
345 "members": [
346 {
347 "type": "SYMBOL",
348 "name": "_newline"
349 },
350 {
351 "type": "SYMBOL",
352 "name": "deriving_clause"
353 }
354 ]
355 },
356 {
357 "type": "BLANK"
358 }
359 ]
360 },
361 {
362 "type": "SYMBOL",
363 "name": "_dedent"
364 }
365 ]
366 },
367 {
368 "type": "SEQ",
369 "members": [
370 {
371 "type": "REPEAT1",
372 "content": {
373 "type": "SYMBOL",
374 "name": "constructor_def"
375 }
376 },
377 {
378 "type": "CHOICE",
379 "members": [
380 {
381 "type": "SYMBOL",
382 "name": "deriving_clause"
383 },
384 {
385 "type": "BLANK"
386 }
387 ]
388 }
389 ]
390 }
391 ]
392 }
393 ]
394 },
395 "constructor_def": {
396 "type": "SEQ",
397 "members": [
398 {
399 "type": "CHOICE",
400 "members": [
401 {
402 "type": "STRING",
403 "value": "="
404 },
405 {
406 "type": "STRING",
407 "value": "|"
408 }
409 ]
410 },
411 {
412 "type": "FIELD",
413 "name": "name",
414 "content": {
415 "type": "SYMBOL",
416 "name": "upper_identifier"
417 }
418 },
419 {
420 "type": "FIELD",
421 "name": "fields",
422 "content": {
423 "type": "SYMBOL",
424 "name": "record_type_body"
425 }
426 }
427 ]
428 },
429 "deriving_clause": {
430 "type": "SEQ",
431 "members": [
432 {
433 "type": "STRING",
434 "value": "deriving"
435 },
436 {
437 "type": "STRING",
438 "value": "("
439 },
440 {
441 "type": "SEQ",
442 "members": [
443 {
444 "type": "SYMBOL",
445 "name": "upper_identifier"
446 },
447 {
448 "type": "REPEAT",
449 "content": {
450 "type": "SEQ",
451 "members": [
452 {
453 "type": "STRING",
454 "value": ","
455 },
456 {
457 "type": "SYMBOL",
458 "name": "upper_identifier"
459 }
460 ]
461 }
462 }
463 ]
464 },
465 {
466 "type": "STRING",
467 "value": ")"
468 }
469 ]
470 },
471 "type_alias_declaration": {
472 "type": "SEQ",
473 "members": [
474 {
475 "type": "STRING",
476 "value": "type"
477 },
478 {
479 "type": "FIELD",
480 "name": "name",
481 "content": {
482 "type": "SYMBOL",
483 "name": "upper_identifier"
484 }
485 },
486 {
487 "type": "FIELD",
488 "name": "params",
489 "content": {
490 "type": "REPEAT",
491 "content": {
492 "type": "SYMBOL",
493 "name": "lower_identifier"
494 }
495 }
496 },
497 {
498 "type": "STRING",
499 "value": "="
500 },
501 {
502 "type": "FIELD",
503 "name": "type",
504 "content": {
505 "type": "SYMBOL",
506 "name": "_type"
507 }
508 }
509 ]
510 },
511 "source_declaration": {
512 "type": "SEQ",
513 "members": [
514 {
515 "type": "SYMBOL",
516 "name": "source_ref"
517 },
518 {
519 "type": "STRING",
520 "value": ":"
521 },
522 {
523 "type": "FIELD",
524 "name": "type",
525 "content": {
526 "type": "SYMBOL",
527 "name": "_type"
528 }
529 },
530 {
531 "type": "CHOICE",
532 "members": [
533 {
534 "type": "SEQ",
535 "members": [
536 {
537 "type": "STRING",
538 "value": "with"
539 },
540 {
541 "type": "STRING",
542 "value": "history"
543 }
544 ]
545 },
546 {
547 "type": "BLANK"
548 }
549 ]
550 }
551 ]
552 },
553 "view_declaration": {
554 "type": "SEQ",
555 "members": [
556 {
557 "type": "SYMBOL",
558 "name": "source_ref"
559 },
560 {
561 "type": "STRING",
562 "value": "="
563 },
564 {
565 "type": "FIELD",
566 "name": "body",
567 "content": {
568 "type": "SYMBOL",
569 "name": "_block_body"
570 }
571 }
572 ]
573 },
574 "derived_declaration": {
575 "type": "SEQ",
576 "members": [
577 {
578 "type": "SYMBOL",
579 "name": "derived_ref"
580 },
581 {
582 "type": "STRING",
583 "value": "="
584 },
585 {
586 "type": "FIELD",
587 "name": "body",
588 "content": {
589 "type": "SYMBOL",
590 "name": "_block_body"
591 }
592 }
593 ]
594 },
595 "fun_declaration": {
596 "type": "SEQ",
597 "members": [
598 {
599 "type": "FIELD",
600 "name": "name",
601 "content": {
602 "type": "SYMBOL",
603 "name": "lower_identifier"
604 }
605 },
606 {
607 "type": "CHOICE",
608 "members": [
609 {
610 "type": "SEQ",
611 "members": [
612 {
613 "type": "CHOICE",
614 "members": [
615 {
616 "type": "SEQ",
617 "members": [
618 {
619 "type": "STRING",
620 "value": ":"
621 },
622 {
623 "type": "FIELD",
624 "name": "type",
625 "content": {
626 "type": "SYMBOL",
627 "name": "type_scheme"
628 }
629 }
630 ]
631 },
632 {
633 "type": "BLANK"
634 }
635 ]
636 },
637 {
638 "type": "STRING",
639 "value": "="
640 },
641 {
642 "type": "FIELD",
643 "name": "body",
644 "content": {
645 "type": "SYMBOL",
646 "name": "_block_body"
647 }
648 }
649 ]
650 },
651 {
652 "type": "SEQ",
653 "members": [
654 {
655 "type": "STRING",
656 "value": ":"
657 },
658 {
659 "type": "FIELD",
660 "name": "type",
661 "content": {
662 "type": "SYMBOL",
663 "name": "type_scheme"
664 }
665 }
666 ]
667 }
668 ]
669 }
670 ]
671 },
672 "trait_declaration": {
673 "type": "SEQ",
674 "members": [
675 {
676 "type": "STRING",
677 "value": "trait"
678 },
679 {
680 "type": "REPEAT",
681 "content": {
682 "type": "SYMBOL",
683 "name": "supertrait"
684 }
685 },
686 {
687 "type": "FIELD",
688 "name": "name",
689 "content": {
690 "type": "SYMBOL",
691 "name": "upper_identifier"
692 }
693 },
694 {
695 "type": "FIELD",
696 "name": "params",
697 "content": {
698 "type": "REPEAT1",
699 "content": {
700 "type": "SYMBOL",
701 "name": "_trait_param"
702 }
703 }
704 },
705 {
706 "type": "STRING",
707 "value": "where"
708 },
709 {
710 "type": "SYMBOL",
711 "name": "_indent"
712 },
713 {
714 "type": "SEQ",
715 "members": [
716 {
717 "type": "SYMBOL",
718 "name": "_trait_item"
719 },
720 {
721 "type": "REPEAT",
722 "content": {
723 "type": "SEQ",
724 "members": [
725 {
726 "type": "SYMBOL",
727 "name": "_newline"
728 },
729 {
730 "type": "SYMBOL",
731 "name": "_trait_item"
732 }
733 ]
734 }
735 }
736 ]
737 },
738 {
739 "type": "SYMBOL",
740 "name": "_dedent"
741 }
742 ]
743 },
744 "supertrait": {
745 "type": "PREC_DYNAMIC",
746 "value": 1,
747 "content": {
748 "type": "SEQ",
749 "members": [
750 {
751 "type": "SYMBOL",
752 "name": "upper_identifier"
753 },
754 {
755 "type": "REPEAT1",
756 "content": {
757 "type": "SYMBOL",
758 "name": "_type_atom"
759 }
760 },
761 {
762 "type": "STRING",
763 "value": "=>"
764 }
765 ]
766 }
767 },
768 "_trait_param": {
769 "type": "CHOICE",
770 "members": [
771 {
772 "type": "SYMBOL",
773 "name": "lower_identifier"
774 },
775 {
776 "type": "SEQ",
777 "members": [
778 {
779 "type": "STRING",
780 "value": "("
781 },
782 {
783 "type": "SYMBOL",
784 "name": "lower_identifier"
785 },
786 {
787 "type": "STRING",
788 "value": ":"
789 },
790 {
791 "type": "SYMBOL",
792 "name": "_type"
793 },
794 {
795 "type": "STRING",
796 "value": ")"
797 }
798 ]
799 }
800 ]
801 },
802 "_trait_item": {
803 "type": "CHOICE",
804 "members": [
805 {
806 "type": "SYMBOL",
807 "name": "trait_method"
808 },
809 {
810 "type": "SYMBOL",
811 "name": "trait_associated_type"
812 },
813 {
814 "type": "SYMBOL",
815 "name": "trait_default_body"
816 }
817 ]
818 },
819 "trait_method": {
820 "type": "PREC_RIGHT",
821 "value": 0,
822 "content": {
823 "type": "SEQ",
824 "members": [
825 {
826 "type": "FIELD",
827 "name": "name",
828 "content": {
829 "type": "SYMBOL",
830 "name": "lower_identifier"
831 }
832 },
833 {
834 "type": "CHOICE",
835 "members": [
836 {
837 "type": "SEQ",
838 "members": [
839 {
840 "type": "STRING",
841 "value": ":"
842 },
843 {
844 "type": "FIELD",
845 "name": "type",
846 "content": {
847 "type": "SYMBOL",
848 "name": "type_scheme"
849 }
850 }
851 ]
852 },
853 {
854 "type": "SEQ",
855 "members": [
856 {
857 "type": "REPEAT",
858 "content": {
859 "type": "SYMBOL",
860 "name": "_pattern_atom"
861 }
862 },
863 {
864 "type": "STRING",
865 "value": "="
866 },
867 {
868 "type": "SYMBOL",
869 "name": "_expression"
870 }
871 ]
872 }
873 ]
874 }
875 ]
876 }
877 },
878 "trait_associated_type": {
879 "type": "SEQ",
880 "members": [
881 {
882 "type": "STRING",
883 "value": "type"
884 },
885 {
886 "type": "SYMBOL",
887 "name": "upper_identifier"
888 },
889 {
890 "type": "REPEAT",
891 "content": {
892 "type": "SYMBOL",
893 "name": "lower_identifier"
894 }
895 }
896 ]
897 },
898 "trait_default_body": {
899 "type": "SEQ",
900 "members": [
901 {
902 "type": "SYMBOL",
903 "name": "lower_identifier"
904 },
905 {
906 "type": "REPEAT",
907 "content": {
908 "type": "SYMBOL",
909 "name": "_pattern_atom"
910 }
911 },
912 {
913 "type": "STRING",
914 "value": "="
915 },
916 {
917 "type": "SYMBOL",
918 "name": "_expression"
919 }
920 ]
921 },
922 "impl_declaration": {
923 "type": "SEQ",
924 "members": [
925 {
926 "type": "STRING",
927 "value": "impl"
928 },
929 {
930 "type": "REPEAT",
931 "content": {
932 "type": "SEQ",
933 "members": [
934 {
935 "type": "SYMBOL",
936 "name": "constraint"
937 },
938 {
939 "type": "STRING",
940 "value": "=>"
941 }
942 ]
943 }
944 },
945 {
946 "type": "FIELD",
947 "name": "trait",
948 "content": {
949 "type": "SYMBOL",
950 "name": "upper_identifier"
951 }
952 },
953 {
954 "type": "FIELD",
955 "name": "args",
956 "content": {
957 "type": "REPEAT1",
958 "content": {
959 "type": "SYMBOL",
960 "name": "_type_atom"
961 }
962 }
963 },
964 {
965 "type": "STRING",
966 "value": "where"
967 },
968 {
969 "type": "SYMBOL",
970 "name": "_indent"
971 },
972 {
973 "type": "SEQ",
974 "members": [
975 {
976 "type": "SYMBOL",
977 "name": "_impl_item"
978 },
979 {
980 "type": "REPEAT",
981 "content": {
982 "type": "SEQ",
983 "members": [
984 {
985 "type": "SYMBOL",
986 "name": "_newline"
987 },
988 {
989 "type": "SYMBOL",
990 "name": "_impl_item"
991 }
992 ]
993 }
994 }
995 ]
996 },
997 {
998 "type": "SYMBOL",
999 "name": "_dedent"
1002 },
1003 "_impl_item": {
1004 "type": "CHOICE",
1005 "members": [
1007 "type": "SYMBOL",
1008 "name": "impl_method"
1009 },
1011 "type": "SYMBOL",
1012 "name": "impl_associated_type"
1015 },
1016 "impl_method": {
1017 "type": "SEQ",
1018 "members": [
1020 "type": "FIELD",
1021 "name": "name",
1022 "content": {
1023 "type": "SYMBOL",
1024 "name": "lower_identifier"
1026 },
1028 "type": "FIELD",
1029 "name": "params",
1030 "content": {
1031 "type": "REPEAT",
1032 "content": {
1033 "type": "SYMBOL",
1034 "name": "_pattern_atom"
1037 },
1039 "type": "STRING",
1040 "value": "="
1041 },
1043 "type": "FIELD",
1044 "name": "body",
1045 "content": {
1046 "type": "SYMBOL",
1047 "name": "_block_body"
1051 },
1052 "impl_associated_type": {
1053 "type": "SEQ",
1054 "members": [
1056 "type": "STRING",
1057 "value": "type"
1058 },
1060 "type": "SYMBOL",
1061 "name": "upper_identifier"
1062 },
1064 "type": "REPEAT",
1065 "content": {
1066 "type": "SYMBOL",
1067 "name": "_type_atom"
1069 },
1071 "type": "STRING",
1072 "value": "="
1073 },
1075 "type": "SYMBOL",
1076 "name": "_type"
1079 },
1080 "migrate_declaration": {
1081 "type": "SEQ",
1082 "members": [
1084 "type": "STRING",
1085 "value": "migrate"
1086 },
1088 "type": "FIELD",
1089 "name": "relation",
1090 "content": {
1091 "type": "SYMBOL",
1092 "name": "source_ref"
1094 },
1096 "type": "STRING",
1097 "value": "from"
1098 },
1100 "type": "FIELD",
1101 "name": "from",
1102 "content": {
1103 "type": "SYMBOL",
1104 "name": "_type"
1106 },
1108 "type": "STRING",
1109 "value": "to"
1110 },
1112 "type": "FIELD",
1113 "name": "to",
1114 "content": {
1115 "type": "SYMBOL",
1116 "name": "_type"
1118 },
1120 "type": "STRING",
1121 "value": "using"
1122 },
1124 "type": "FIELD",
1125 "name": "using",
1126 "content": {
1127 "type": "SYMBOL",
1128 "name": "_expression"
1132 },
1133 "route_declaration": {
1134 "type": "SEQ",
1135 "members": [
1137 "type": "STRING",
1138 "value": "route"
1139 },
1141 "type": "FIELD",
1142 "name": "name",
1143 "content": {
1144 "type": "SYMBOL",
1145 "name": "upper_identifier"
1147 },
1149 "type": "STRING",
1150 "value": "where"
1151 },
1153 "type": "SYMBOL",
1154 "name": "_indent"
1155 },
1157 "type": "SEQ",
1158 "members": [
1160 "type": "SYMBOL",
1161 "name": "_route_item"
1162 },
1164 "type": "REPEAT",
1165 "content": {
1166 "type": "SEQ",
1167 "members": [
1169 "type": "SYMBOL",
1170 "name": "_newline"
1171 },
1173 "type": "SYMBOL",
1174 "name": "_route_item"
1180 },
1182 "type": "SYMBOL",
1183 "name": "_dedent"
1186 },
1187 "route_composite_declaration": {
1188 "type": "SEQ",
1189 "members": [
1191 "type": "STRING",
1192 "value": "route"
1193 },
1195 "type": "FIELD",
1196 "name": "name",
1197 "content": {
1198 "type": "SYMBOL",
1199 "name": "upper_identifier"
1201 },
1203 "type": "STRING",
1204 "value": "="
1205 },
1207 "type": "SEQ",
1208 "members": [
1210 "type": "SYMBOL",
1211 "name": "upper_identifier"
1212 },
1214 "type": "REPEAT",
1215 "content": {
1216 "type": "SEQ",
1217 "members": [
1219 "type": "STRING",
1220 "value": "|"
1221 },
1223 "type": "SYMBOL",
1224 "name": "upper_identifier"
1232 },
1233 "_route_item": {
1234 "type": "CHOICE",
1235 "members": [
1237 "type": "SYMBOL",
1238 "name": "route_entry"
1239 },
1241 "type": "SYMBOL",
1242 "name": "route_path_group"
1245 },
1246 "route_path_group": {
1247 "type": "SEQ",
1248 "members": [
1250 "type": "REPEAT1",
1251 "content": {
1252 "type": "SYMBOL",
1253 "name": "_route_path_segment"
1255 },
1257 "type": "SYMBOL",
1258 "name": "_indent"
1259 },
1261 "type": "SEQ",
1262 "members": [
1264 "type": "SYMBOL",
1265 "name": "_route_item"
1266 },
1268 "type": "REPEAT",
1269 "content": {
1270 "type": "SEQ",
1271 "members": [
1273 "type": "SYMBOL",
1274 "name": "_newline"
1275 },
1277 "type": "SYMBOL",
1278 "name": "_route_item"
1284 },
1286 "type": "SYMBOL",
1287 "name": "_dedent"
1290 },
1291 "route_entry": {
1292 "type": "PREC_RIGHT",
1293 "value": 0,
1294 "content": {
1295 "type": "SEQ",
1296 "members": [
1298 "type": "FIELD",
1299 "name": "method",
1300 "content": {
1301 "type": "SYMBOL",
1302 "name": "http_method"
1304 },
1306 "type": "REPEAT",
1307 "content": {
1308 "type": "CHOICE",
1309 "members": [
1311 "type": "SYMBOL",
1312 "name": "_route_path_segment"
1313 },
1315 "type": "FIELD",
1316 "name": "body",
1317 "content": {
1318 "type": "SYMBOL",
1319 "name": "record_type_body"
1321 },
1323 "type": "SEQ",
1324 "members": [
1326 "type": "STRING",
1327 "value": "?"
1328 },
1330 "type": "FIELD",
1331 "name": "query",
1332 "content": {
1333 "type": "SYMBOL",
1334 "name": "record_type_body"
1338 },
1340 "type": "SEQ",
1341 "members": [
1343 "type": "STRING",
1344 "value": "headers"
1345 },
1347 "type": "SYMBOL",
1348 "name": "record_type_body"
1354 },
1356 "type": "STRING",
1357 "value": "->"
1358 },
1360 "type": "FIELD",
1361 "name": "response",
1362 "content": {
1363 "type": "SYMBOL",
1364 "name": "_type"
1366 },
1368 "type": "CHOICE",
1369 "members": [
1371 "type": "SEQ",
1372 "members": [
1374 "type": "STRING",
1375 "value": "headers"
1376 },
1378 "type": "SYMBOL",
1379 "name": "record_type_body"
1382 },
1384 "type": "BLANK"
1387 },
1389 "type": "STRING",
1390 "value": "="
1391 },
1393 "type": "FIELD",
1394 "name": "constructor",
1395 "content": {
1396 "type": "SYMBOL",
1397 "name": "upper_identifier"
1402 },
1403 "_route_path_segment": {
1404 "type": "CHOICE",
1405 "members": [
1407 "type": "SEQ",
1408 "members": [
1410 "type": "STRING",
1411 "value": "/"
1412 },
1414 "type": "FIELD",
1415 "name": "name",
1416 "content": {
1417 "type": "SYMBOL",
1418 "name": "lower_identifier"
1422 },
1424 "type": "SEQ",
1425 "members": [
1427 "type": "STRING",
1428 "value": "/"
1429 },
1431 "type": "IMMEDIATE_TOKEN",
1432 "content": {
1433 "type": "STRING",
1434 "value": "{"
1436 },
1438 "type": "FIELD",
1439 "name": "name",
1440 "content": {
1441 "type": "SYMBOL",
1442 "name": "lower_identifier"
1444 },
1446 "type": "STRING",
1447 "value": ":"
1448 },
1450 "type": "FIELD",
1451 "name": "type",
1452 "content": {
1453 "type": "SYMBOL",
1454 "name": "_type"
1456 },
1458 "type": "STRING",
1459 "value": "}"
1462 },
1464 "type": "STRING",
1465 "value": "/"
1468 },
1469 "http_method": {
1470 "type": "CHOICE",
1471 "members": [
1473 "type": "STRING",
1474 "value": "GET"
1475 },
1477 "type": "STRING",
1478 "value": "POST"
1479 },
1481 "type": "STRING",
1482 "value": "PUT"
1483 },
1485 "type": "STRING",
1486 "value": "DELETE"
1487 },
1489 "type": "STRING",
1490 "value": "PATCH"
1493 },
1494 "subset_constraint": {
1495 "type": "SEQ",
1496 "members": [
1498 "type": "SYMBOL",
1499 "name": "_constraint_path"
1500 },
1502 "type": "STRING",
1503 "value": "<="
1504 },
1506 "type": "SYMBOL",
1507 "name": "_constraint_path"
1510 },
1511 "_constraint_path": {
1512 "type": "CHOICE",
1513 "members": [
1515 "type": "SEQ",
1516 "members": [
1518 "type": "SYMBOL",
1519 "name": "source_ref"
1520 },
1522 "type": "STRING",
1523 "value": "."
1524 },
1526 "type": "SYMBOL",
1527 "name": "lower_identifier"
1530 },
1532 "type": "SYMBOL",
1533 "name": "source_ref"
1536 },
1537 "type_scheme": {
1538 "type": "SEQ",
1539 "members": [
1541 "type": "REPEAT",
1542 "content": {
1543 "type": "SEQ",
1544 "members": [
1546 "type": "SYMBOL",
1547 "name": "constraint"
1548 },
1550 "type": "STRING",
1551 "value": "=>"
1555 },
1557 "type": "SYMBOL",
1558 "name": "_type"
1561 },
1562 "constraint": {
1563 "type": "SEQ",
1564 "members": [
1566 "type": "SYMBOL",
1567 "name": "upper_identifier"
1568 },
1570 "type": "REPEAT1",
1571 "content": {
1572 "type": "SYMBOL",
1573 "name": "_type_atom"
1577 },
1578 "_type": {
1579 "type": "CHOICE",
1580 "members": [
1582 "type": "SYMBOL",
1583 "name": "function_type"
1584 },
1586 "type": "SYMBOL",
1587 "name": "refined_type"
1588 },
1590 "type": "SYMBOL",
1591 "name": "_type_app"
1594 },
1595 "function_type": {
1596 "type": "PREC_RIGHT",
1597 "value": 0,
1598 "content": {
1599 "type": "SEQ",
1600 "members": [
1602 "type": "FIELD",
1603 "name": "param",
1604 "content": {
1605 "type": "SYMBOL",
1606 "name": "refined_type"
1608 },
1610 "type": "STRING",
1611 "value": "->"
1612 },
1614 "type": "FIELD",
1615 "name": "result",
1616 "content": {
1617 "type": "SYMBOL",
1618 "name": "_type"
1623 },
1624 "refined_type": {
1625 "type": "CHOICE",
1626 "members": [
1628 "type": "SEQ",
1629 "members": [
1631 "type": "FIELD",
1632 "name": "base",
1633 "content": {
1634 "type": "SYMBOL",
1635 "name": "_type_app"
1637 },
1639 "type": "STRING",
1640 "value": "where"
1641 },
1643 "type": "FIELD",
1644 "name": "predicate",
1645 "content": {
1646 "type": "SYMBOL",
1647 "name": "_expression"
1651 },
1653 "type": "SYMBOL",
1654 "name": "_type_app"
1657 },
1658 "_type_app": {
1659 "type": "CHOICE",
1660 "members": [
1662 "type": "SYMBOL",
1663 "name": "type_application"
1664 },
1666 "type": "SYMBOL",
1667 "name": "_type_atom"
1670 },
1671 "type_application": {
1672 "type": "PREC_LEFT",
1673 "value": 18,
1674 "content": {
1675 "type": "SEQ",
1676 "members": [
1678 "type": "CHOICE",
1679 "members": [
1681 "type": "SYMBOL",
1682 "name": "named_type"
1683 },
1685 "type": "SYMBOL",
1686 "name": "type_application"
1689 },
1691 "type": "SYMBOL",
1692 "name": "_type_atom"
1696 },
1697 "_type_atom": {
1698 "type": "CHOICE",
1699 "members": [
1701 "type": "SYMBOL",
1702 "name": "named_type"
1703 },
1705 "type": "SYMBOL",
1706 "name": "type_variable"
1707 },
1709 "type": "SYMBOL",
1710 "name": "record_type"
1711 },
1713 "type": "SYMBOL",
1714 "name": "relation_type"
1715 },
1717 "type": "SYMBOL",
1718 "name": "variant_type"
1719 },
1721 "type": "SYMBOL",
1722 "name": "type_hole"
1723 },
1725 "type": "SYMBOL",
1726 "name": "parenthesized_type"
1729 },
1730 "named_type": {
1731 "type": "SYMBOL",
1732 "name": "upper_identifier"
1733 },
1734 "type_variable": {
1735 "type": "SYMBOL",
1736 "name": "lower_identifier"
1737 },
1738 "record_type": {
1739 "type": "SEQ",
1740 "members": [
1742 "type": "STRING",
1743 "value": "{"
1744 },
1746 "type": "CHOICE",
1747 "members": [
1749 "type": "CHOICE",
1750 "members": [
1752 "type": "SEQ",
1753 "members": [
1755 "type": "SEQ",
1756 "members": [
1758 "type": "SYMBOL",
1759 "name": "type_field"
1760 },
1762 "type": "REPEAT",
1763 "content": {
1764 "type": "SEQ",
1765 "members": [
1767 "type": "STRING",
1768 "value": ","
1769 },
1771 "type": "SYMBOL",
1772 "name": "type_field"
1778 },
1780 "type": "CHOICE",
1781 "members": [
1783 "type": "SEQ",
1784 "members": [
1786 "type": "STRING",
1787 "value": "|"
1788 },
1790 "type": "SYMBOL",
1791 "name": "lower_identifier"
1794 },
1796 "type": "BLANK"
1801 },
1803 "type": "SEQ",
1804 "members": [
1806 "type": "SYMBOL",
1807 "name": "effect"
1808 },
1810 "type": "REPEAT",
1811 "content": {
1812 "type": "SEQ",
1813 "members": [
1815 "type": "STRING",
1816 "value": ","
1817 },
1819 "type": "SYMBOL",
1820 "name": "effect"
1828 },
1830 "type": "BLANK"
1833 },
1835 "type": "STRING",
1836 "value": "}"
1839 },
1840 "effect": {
1841 "type": "CHOICE",
1842 "members": [
1844 "type": "SEQ",
1845 "members": [
1847 "type": "SYMBOL",
1848 "name": "lower_identifier"
1849 },
1851 "type": "SYMBOL",
1852 "name": "source_ref"
1855 },
1857 "type": "SYMBOL",
1858 "name": "lower_identifier"
1861 },
1862 "record_type_body": {
1863 "type": "SEQ",
1864 "members": [
1866 "type": "STRING",
1867 "value": "{"
1868 },
1870 "type": "CHOICE",
1871 "members": [
1873 "type": "SEQ",
1874 "members": [
1876 "type": "SYMBOL",
1877 "name": "type_field"
1878 },
1880 "type": "REPEAT",
1881 "content": {
1882 "type": "SEQ",
1883 "members": [
1885 "type": "STRING",
1886 "value": ","
1887 },
1889 "type": "SYMBOL",
1890 "name": "type_field"
1896 },
1898 "type": "BLANK"
1901 },
1903 "type": "STRING",
1904 "value": "}"
1907 },
1908 "type_field": {
1909 "type": "SEQ",
1910 "members": [
1912 "type": "FIELD",
1913 "name": "name",
1914 "content": {
1915 "type": "SYMBOL",
1916 "name": "lower_identifier"
1918 },
1920 "type": "STRING",
1921 "value": ":"
1922 },
1924 "type": "FIELD",
1925 "name": "type",
1926 "content": {
1927 "type": "SYMBOL",
1928 "name": "_type"
1932 },
1933 "relation_type": {
1934 "type": "SEQ",
1935 "members": [
1937 "type": "STRING",
1938 "value": "["
1939 },
1941 "type": "CHOICE",
1942 "members": [
1944 "type": "SYMBOL",
1945 "name": "_type"
1946 },
1948 "type": "BLANK"
1951 },
1953 "type": "STRING",
1954 "value": "]"
1957 },
1958 "variant_type": {
1959 "type": "SEQ",
1960 "members": [
1962 "type": "STRING",
1963 "value": "<"
1964 },
1966 "type": "SEQ",
1967 "members": [
1969 "type": "SYMBOL",
1970 "name": "variant_constructor"
1971 },
1973 "type": "REPEAT",
1974 "content": {
1975 "type": "SEQ",
1976 "members": [
1978 "type": "STRING",
1979 "value": "|"
1980 },
1982 "type": "SYMBOL",
1983 "name": "variant_constructor"
1989 },
1991 "type": "CHOICE",
1992 "members": [
1994 "type": "SEQ",
1995 "members": [
1997 "type": "STRING",
1998 "value": "|"
1999 },
2001 "type": "SYMBOL",
2002 "name": "lower_identifier"
2005 },
2007 "type": "BLANK"
2010 },
2012 "type": "STRING",
2013 "value": ">"
2016 },
2017 "variant_constructor": {
2018 "type": "SEQ",
2019 "members": [
2021 "type": "SYMBOL",
2022 "name": "upper_identifier"
2023 },
2025 "type": "CHOICE",
2026 "members": [
2028 "type": "SYMBOL",
2029 "name": "record_type_body"
2030 },
2032 "type": "BLANK"
2037 },
2038 "type_hole": {
2039 "type": "STRING",
2040 "value": "_"
2041 },
2042 "parenthesized_type": {
2043 "type": "SEQ",
2044 "members": [
2046 "type": "STRING",
2047 "value": "("
2048 },
2050 "type": "SYMBOL",
2051 "name": "_type"
2052 },
2054 "type": "STRING",
2055 "value": ")"
2058 },
2059 "_block_body": {
2060 "type": "CHOICE",
2061 "members": [
2063 "type": "SYMBOL",
2064 "name": "_expression"
2065 },
2067 "type": "SEQ",
2068 "members": [
2070 "type": "SYMBOL",
2071 "name": "_indent"
2072 },
2074 "type": "SYMBOL",
2075 "name": "_expression"
2076 },
2078 "type": "SYMBOL",
2079 "name": "_dedent"
2084 },
2085 "_expression": {
2086 "type": "CHOICE",
2087 "members": [
2089 "type": "SYMBOL",
2090 "name": "lambda_expression"
2091 },
2093 "type": "SYMBOL",
2094 "name": "if_expression"
2095 },
2097 "type": "SYMBOL",
2098 "name": "case_expression"
2099 },
2101 "type": "SYMBOL",
2102 "name": "do_expression"
2103 },
2105 "type": "SYMBOL",
2106 "name": "set_expression"
2107 },
2109 "type": "SYMBOL",
2110 "name": "replace_set_expression"
2111 },
2113 "type": "SYMBOL",
2114 "name": "yield_expression"
2115 },
2117 "type": "SYMBOL",
2118 "name": "atomic_expression"
2119 },
2121 "type": "SYMBOL",
2122 "name": "refine_expression"
2123 },
2125 "type": "SYMBOL",
2126 "name": "let_in_expression"
2127 },
2129 "type": "SYMBOL",
2130 "name": "_binary_expression"
2133 },
2134 "lambda_expression": {
2135 "type": "PREC_RIGHT",
2136 "value": 0,
2137 "content": {
2138 "type": "SEQ",
2139 "members": [
2141 "type": "STRING",
2142 "value": "\\"
2143 },
2145 "type": "REPEAT1",
2146 "content": {
2147 "type": "SYMBOL",
2148 "name": "_pattern_atom"
2150 },
2152 "type": "STRING",
2153 "value": "->"
2154 },
2156 "type": "FIELD",
2157 "name": "body",
2158 "content": {
2159 "type": "SYMBOL",
2160 "name": "_expression"
2165 },
2166 "if_expression": {
2167 "type": "PREC_RIGHT",
2168 "value": 0,
2169 "content": {
2170 "type": "SEQ",
2171 "members": [
2173 "type": "STRING",
2174 "value": "if"
2175 },
2177 "type": "FIELD",
2178 "name": "condition",
2179 "content": {
2180 "type": "SYMBOL",
2181 "name": "_expression"
2183 },
2185 "type": "STRING",
2186 "value": "then"
2187 },
2189 "type": "FIELD",
2190 "name": "then",
2191 "content": {
2192 "type": "SYMBOL",
2193 "name": "_expression"
2195 },
2197 "type": "STRING",
2198 "value": "else"
2199 },
2201 "type": "FIELD",
2202 "name": "else",
2203 "content": {
2204 "type": "SYMBOL",
2205 "name": "_expression"
2210 },
2211 "case_expression": {
2212 "type": "PREC_RIGHT",
2213 "value": 0,
2214 "content": {
2215 "type": "SEQ",
2216 "members": [
2218 "type": "STRING",
2219 "value": "case"
2220 },
2222 "type": "FIELD",
2223 "name": "scrutinee",
2224 "content": {
2225 "type": "SYMBOL",
2226 "name": "_expression"
2228 },
2230 "type": "STRING",
2231 "value": "of"
2232 },
2234 "type": "SYMBOL",
2235 "name": "_indent"
2236 },
2238 "type": "SEQ",
2239 "members": [
2241 "type": "SYMBOL",
2242 "name": "case_arm"
2243 },
2245 "type": "REPEAT",
2246 "content": {
2247 "type": "SEQ",
2248 "members": [
2250 "type": "SYMBOL",
2251 "name": "_newline"
2252 },
2254 "type": "SYMBOL",
2255 "name": "case_arm"
2261 },
2263 "type": "SYMBOL",
2264 "name": "_dedent"
2268 },
2269 "case_arm": {
2270 "type": "PREC_RIGHT",
2271 "value": 0,
2272 "content": {
2273 "type": "SEQ",
2274 "members": [
2276 "type": "FIELD",
2277 "name": "pattern",
2278 "content": {
2279 "type": "SYMBOL",
2280 "name": "_pattern"
2282 },
2284 "type": "STRING",
2285 "value": "->"
2286 },
2288 "type": "FIELD",
2289 "name": "body",
2290 "content": {
2291 "type": "SYMBOL",
2292 "name": "_expression"
2297 },
2298 "do_expression": {
2299 "type": "SEQ",
2300 "members": [
2302 "type": "STRING",
2303 "value": "do"
2304 },
2306 "type": "SYMBOL",
2307 "name": "_indent"
2308 },
2310 "type": "SEQ",
2311 "members": [
2313 "type": "SYMBOL",
2314 "name": "_statement"
2315 },
2317 "type": "REPEAT",
2318 "content": {
2319 "type": "SEQ",
2320 "members": [
2322 "type": "SYMBOL",
2323 "name": "_newline"
2324 },
2326 "type": "SYMBOL",
2327 "name": "_statement"
2333 },
2335 "type": "SYMBOL",
2336 "name": "_dedent"
2339 },
2340 "_statement": {
2341 "type": "CHOICE",
2342 "members": [
2344 "type": "SYMBOL",
2345 "name": "bind_statement"
2346 },
2348 "type": "SYMBOL",
2349 "name": "let_statement"
2350 },
2352 "type": "SYMBOL",
2353 "name": "where_statement"
2354 },
2356 "type": "SYMBOL",
2357 "name": "_expression"
2360 },
2361 "bind_statement": {
2362 "type": "PREC_DYNAMIC",
2363 "value": 1,
2364 "content": {
2365 "type": "SEQ",
2366 "members": [
2368 "type": "FIELD",
2369 "name": "pattern",
2370 "content": {
2371 "type": "SYMBOL",
2372 "name": "_bind_pattern"
2374 },
2376 "type": "STRING",
2377 "value": "<-"
2378 },
2380 "type": "FIELD",
2381 "name": "value",
2382 "content": {
2383 "type": "SYMBOL",
2384 "name": "_expression"
2389 },
2390 "_bind_pattern": {
2391 "type": "CHOICE",
2392 "members": [
2394 "type": "SYMBOL",
2395 "name": "constructor_pattern"
2396 },
2398 "type": "SYMBOL",
2399 "name": "variable_pattern"
2400 },
2402 "type": "SYMBOL",
2403 "name": "wildcard_pattern"
2404 },
2406 "type": "SYMBOL",
2407 "name": "record_pattern"
2408 },
2410 "type": "SYMBOL",
2411 "name": "list_pattern"
2412 },
2414 "type": "SYMBOL",
2415 "name": "parenthesized_pattern"
2418 },
2419 "let_statement": {
2420 "type": "SEQ",
2421 "members": [
2423 "type": "STRING",
2424 "value": "let"
2425 },
2427 "type": "FIELD",
2428 "name": "pattern",
2429 "content": {
2430 "type": "SYMBOL",
2431 "name": "_pattern"
2433 },
2435 "type": "STRING",
2436 "value": "="
2437 },
2439 "type": "FIELD",
2440 "name": "value",
2441 "content": {
2442 "type": "SYMBOL",
2443 "name": "_expression"
2447 },
2448 "where_statement": {
2449 "type": "PREC_RIGHT",
2450 "value": 0,
2451 "content": {
2452 "type": "SEQ",
2453 "members": [
2455 "type": "STRING",
2456 "value": "where"
2457 },
2459 "type": "FIELD",
2460 "name": "condition",
2461 "content": {
2462 "type": "SYMBOL",
2463 "name": "_expression"
2468 },
2469 "set_expression": {
2470 "type": "PREC_RIGHT",
2471 "value": 0,
2472 "content": {
2473 "type": "SEQ",
2474 "members": [
2476 "type": "STRING",
2477 "value": "set"
2478 },
2480 "type": "FIELD",
2481 "name": "target",
2482 "content": {
2483 "type": "SYMBOL",
2484 "name": "source_ref"
2486 },
2488 "type": "STRING",
2489 "value": "="
2490 },
2492 "type": "FIELD",
2493 "name": "value",
2494 "content": {
2495 "type": "SYMBOL",
2496 "name": "_expression"
2501 },
2502 "replace_set_expression": {
2503 "type": "PREC_RIGHT",
2504 "value": 0,
2505 "content": {
2506 "type": "SEQ",
2507 "members": [
2509 "type": "STRING",
2510 "value": "replace"
2511 },
2513 "type": "STRING",
2514 "value": "set"
2515 },
2517 "type": "FIELD",
2518 "name": "target",
2519 "content": {
2520 "type": "SYMBOL",
2521 "name": "source_ref"
2523 },
2525 "type": "STRING",
2526 "value": "="
2527 },
2529 "type": "FIELD",
2530 "name": "value",
2531 "content": {
2532 "type": "SYMBOL",
2533 "name": "_expression"
2538 },
2539 "yield_expression": {
2540 "type": "PREC_RIGHT",
2541 "value": 0,
2542 "content": {
2543 "type": "SEQ",
2544 "members": [
2546 "type": "STRING",
2547 "value": "yield"
2548 },
2550 "type": "FIELD",
2551 "name": "value",
2552 "content": {
2553 "type": "SYMBOL",
2554 "name": "_expression"
2559 },
2560 "atomic_expression": {
2561 "type": "PREC_RIGHT",
2562 "value": 0,
2563 "content": {
2564 "type": "SEQ",
2565 "members": [
2567 "type": "STRING",
2568 "value": "atomic"
2569 },
2571 "type": "FIELD",
2572 "name": "body",
2573 "content": {
2574 "type": "SYMBOL",
2575 "name": "_expression"
2580 },
2581 "refine_expression": {
2582 "type": "PREC_RIGHT",
2583 "value": 0,
2584 "content": {
2585 "type": "SEQ",
2586 "members": [
2588 "type": "STRING",
2589 "value": "refine"
2590 },
2592 "type": "FIELD",
2593 "name": "value",
2594 "content": {
2595 "type": "SYMBOL",
2596 "name": "_expression"
2601 },
2602 "let_in_expression": {
2603 "type": "PREC_RIGHT",
2604 "value": 0,
2605 "content": {
2606 "type": "SEQ",
2607 "members": [
2609 "type": "STRING",
2610 "value": "let"
2611 },
2613 "type": "SYMBOL",
2614 "name": "_pattern"
2615 },
2617 "type": "STRING",
2618 "value": "="
2619 },
2621 "type": "SYMBOL",
2622 "name": "_expression"
2623 },
2625 "type": "STRING",
2626 "value": "in"
2627 },
2629 "type": "SYMBOL",
2630 "name": "_expression"
2634 },
2635 "_binary_expression": {
2636 "type": "CHOICE",
2637 "members": [
2639 "type": "SYMBOL",
2640 "name": "pipe_expression"
2641 },
2643 "type": "SYMBOL",
2644 "name": "or_expression"
2645 },
2647 "type": "SYMBOL",
2648 "name": "and_expression"
2649 },
2651 "type": "SYMBOL",
2652 "name": "equality_expression"
2653 },
2655 "type": "SYMBOL",
2656 "name": "comparison_expression"
2657 },
2659 "type": "SYMBOL",
2660 "name": "concat_expression"
2661 },
2663 "type": "SYMBOL",
2664 "name": "add_expression"
2665 },
2667 "type": "SYMBOL",
2668 "name": "mul_expression"
2669 },
2671 "type": "SYMBOL",
2672 "name": "_unary_expression"
2675 },
2676 "pipe_expression": {
2677 "type": "PREC_LEFT",
2678 "value": 1,
2679 "content": {
2680 "type": "SEQ",
2681 "members": [
2683 "type": "SYMBOL",
2684 "name": "_binary_expression"
2685 },
2687 "type": "STRING",
2688 "value": "|>"
2689 },
2691 "type": "SYMBOL",
2692 "name": "_binary_expression"
2696 },
2697 "or_expression": {
2698 "type": "PREC_LEFT",
2699 "value": 3,
2700 "content": {
2701 "type": "SEQ",
2702 "members": [
2704 "type": "SYMBOL",
2705 "name": "_binary_expression"
2706 },
2708 "type": "STRING",
2709 "value": "||"
2710 },
2712 "type": "SYMBOL",
2713 "name": "_binary_expression"
2717 },
2718 "and_expression": {
2719 "type": "PREC_LEFT",
2720 "value": 5,
2721 "content": {
2722 "type": "SEQ",
2723 "members": [
2725 "type": "SYMBOL",
2726 "name": "_binary_expression"
2727 },
2729 "type": "STRING",
2730 "value": "&&"
2731 },
2733 "type": "SYMBOL",
2734 "name": "_binary_expression"
2738 },
2739 "equality_expression": {
2740 "type": "PREC_LEFT",
2741 "value": 7,
2742 "content": {
2743 "type": "SEQ",
2744 "members": [
2746 "type": "SYMBOL",
2747 "name": "_binary_expression"
2748 },
2750 "type": "CHOICE",
2751 "members": [
2753 "type": "STRING",
2754 "value": "=="
2755 },
2757 "type": "STRING",
2758 "value": "!="
2761 },
2763 "type": "SYMBOL",
2764 "name": "_binary_expression"
2768 },
2769 "comparison_expression": {
2770 "type": "PREC_LEFT",
2771 "value": 9,
2772 "content": {
2773 "type": "SEQ",
2774 "members": [
2776 "type": "SYMBOL",
2777 "name": "_binary_expression"
2778 },
2780 "type": "CHOICE",
2781 "members": [
2783 "type": "STRING",
2784 "value": "<"
2785 },
2787 "type": "STRING",
2788 "value": ">"
2789 },
2791 "type": "STRING",
2792 "value": "<="
2793 },
2795 "type": "STRING",
2796 "value": ">="
2799 },
2801 "type": "SYMBOL",
2802 "name": "_binary_expression"
2806 },
2807 "concat_expression": {
2808 "type": "PREC_RIGHT",
2809 "value": 11,
2810 "content": {
2811 "type": "SEQ",
2812 "members": [
2814 "type": "SYMBOL",
2815 "name": "_binary_expression"
2816 },
2818 "type": "STRING",
2819 "value": "++"
2820 },
2822 "type": "SYMBOL",
2823 "name": "_binary_expression"
2827 },
2828 "add_expression": {
2829 "type": "PREC_LEFT",
2830 "value": 13,
2831 "content": {
2832 "type": "SEQ",
2833 "members": [
2835 "type": "SYMBOL",
2836 "name": "_binary_expression"
2837 },
2839 "type": "CHOICE",
2840 "members": [
2842 "type": "STRING",
2843 "value": "+"
2844 },
2846 "type": "STRING",
2847 "value": "-"
2850 },
2852 "type": "SYMBOL",
2853 "name": "_binary_expression"
2857 },
2858 "mul_expression": {
2859 "type": "PREC_LEFT",
2860 "value": 15,
2861 "content": {
2862 "type": "SEQ",
2863 "members": [
2865 "type": "SYMBOL",
2866 "name": "_binary_expression"
2867 },
2869 "type": "CHOICE",
2870 "members": [
2872 "type": "STRING",
2873 "value": "*"
2874 },
2876 "type": "STRING",
2877 "value": "/"
2880 },
2882 "type": "SYMBOL",
2883 "name": "_binary_expression"
2887 },
2888 "_unary_expression": {
2889 "type": "CHOICE",
2890 "members": [
2892 "type": "SYMBOL",
2893 "name": "negation_expression"
2894 },
2896 "type": "SYMBOL",
2897 "name": "not_expression"
2898 },
2900 "type": "SYMBOL",
2901 "name": "_application_expression"
2904 },
2905 "negation_expression": {
2906 "type": "PREC",
2907 "value": 17,
2908 "content": {
2909 "type": "SEQ",
2910 "members": [
2912 "type": "STRING",
2913 "value": "-"
2914 },
2916 "type": "SYMBOL",
2917 "name": "_application_expression"
2921 },
2922 "not_expression": {
2923 "type": "PREC",
2924 "value": 17,
2925 "content": {
2926 "type": "SEQ",
2927 "members": [
2929 "type": "STRING",
2930 "value": "not"
2931 },
2933 "type": "SYMBOL",
2934 "name": "_application_expression"
2938 },
2939 "_application_expression": {
2940 "type": "CHOICE",
2941 "members": [
2943 "type": "SYMBOL",
2944 "name": "application_expression"
2945 },
2947 "type": "SYMBOL",
2948 "name": "_postfix_expression"
2951 },
2952 "application_expression": {
2953 "type": "PREC_LEFT",
2954 "value": 18,
2955 "content": {
2956 "type": "SEQ",
2957 "members": [
2959 "type": "SYMBOL",
2960 "name": "_application_expression"
2961 },
2963 "type": "SYMBOL",
2964 "name": "_postfix_expression"
2968 },
2969 "_postfix_expression": {
2970 "type": "CHOICE",
2971 "members": [
2973 "type": "SYMBOL",
2974 "name": "field_access_expression"
2975 },
2977 "type": "SYMBOL",
2978 "name": "temporal_expression"
2979 },
2981 "type": "SYMBOL",
2982 "name": "_atom_expression"
2985 },
2986 "field_access_expression": {
2987 "type": "PREC_LEFT",
2988 "value": 19,
2989 "content": {
2990 "type": "SEQ",
2991 "members": [
2993 "type": "SYMBOL",
2994 "name": "_postfix_expression"
2995 },
2997 "type": "STRING",
2998 "value": "."
2999 },
3001 "type": "SYMBOL",
3002 "name": "lower_identifier"
3006 },
3007 "temporal_expression": {
3008 "type": "PREC_LEFT",
3009 "value": 19,
3010 "content": {
3011 "type": "SEQ",
3012 "members": [
3014 "type": "SYMBOL",
3015 "name": "_postfix_expression"
3016 },
3018 "type": "STRING",
3019 "value": "@"
3020 },
3022 "type": "STRING",
3023 "value": "("
3024 },
3026 "type": "SYMBOL",
3027 "name": "_expression"
3028 },
3030 "type": "STRING",
3031 "value": ")"
3035 },
3036 "_atom_expression": {
3037 "type": "CHOICE",
3038 "members": [
3040 "type": "SYMBOL",
3041 "name": "_literal"
3042 },
3044 "type": "SYMBOL",
3045 "name": "variable_expression"
3046 },
3048 "type": "SYMBOL",
3049 "name": "constructor_expression"
3050 },
3052 "type": "SYMBOL",
3053 "name": "source_ref"
3054 },
3056 "type": "SYMBOL",
3057 "name": "derived_ref"
3058 },
3060 "type": "SYMBOL",
3061 "name": "record_expression"
3062 },
3064 "type": "SYMBOL",
3065 "name": "record_update_expression"
3066 },
3068 "type": "SYMBOL",
3069 "name": "list_expression"
3070 },
3072 "type": "SYMBOL",
3073 "name": "parenthesized_expression"
3076 },
3077 "variable_expression": {
3078 "type": "SYMBOL",
3079 "name": "lower_identifier"
3080 },
3081 "constructor_expression": {
3082 "type": "SYMBOL",
3083 "name": "upper_identifier"
3084 },
3085 "source_ref": {
3086 "type": "TOKEN",
3087 "content": {
3088 "type": "SEQ",
3089 "members": [
3091 "type": "STRING",
3092 "value": "*"
3093 },
3095 "type": "PATTERN",
3096 "value": "[a-z_][a-zA-Z0-9_']*"
3100 },
3101 "derived_ref": {
3102 "type": "TOKEN",
3103 "content": {
3104 "type": "SEQ",
3105 "members": [
3107 "type": "STRING",
3108 "value": "&"
3109 },
3111 "type": "PATTERN",
3112 "value": "[a-z_][a-zA-Z0-9_']*"
3116 },
3117 "record_expression": {
3118 "type": "SEQ",
3119 "members": [
3121 "type": "STRING",
3122 "value": "{"
3123 },
3125 "type": "CHOICE",
3126 "members": [
3128 "type": "SEQ",
3129 "members": [
3131 "type": "SYMBOL",
3132 "name": "record_field"
3133 },
3135 "type": "REPEAT",
3136 "content": {
3137 "type": "SEQ",
3138 "members": [
3140 "type": "STRING",
3141 "value": ","
3142 },
3144 "type": "SYMBOL",
3145 "name": "record_field"
3151 },
3153 "type": "BLANK"
3156 },
3158 "type": "STRING",
3159 "value": "}"
3162 },
3163 "record_field": {
3164 "type": "CHOICE",
3165 "members": [
3167 "type": "SEQ",
3168 "members": [
3170 "type": "FIELD",
3171 "name": "name",
3172 "content": {
3173 "type": "SYMBOL",
3174 "name": "lower_identifier"
3176 },
3178 "type": "STRING",
3179 "value": ":"
3180 },
3182 "type": "FIELD",
3183 "name": "value",
3184 "content": {
3185 "type": "SYMBOL",
3186 "name": "_expression"
3190 },
3192 "type": "FIELD",
3193 "name": "value",
3194 "content": {
3195 "type": "SYMBOL",
3196 "name": "_expression"
3200 },
3201 "record_update_expression": {
3202 "type": "SEQ",
3203 "members": [
3205 "type": "STRING",
3206 "value": "{"
3207 },
3209 "type": "FIELD",
3210 "name": "base",
3211 "content": {
3212 "type": "SYMBOL",
3213 "name": "_expression"
3215 },
3217 "type": "STRING",
3218 "value": "|"
3219 },
3221 "type": "SEQ",
3222 "members": [
3224 "type": "SYMBOL",
3225 "name": "update_field"
3226 },
3228 "type": "REPEAT",
3229 "content": {
3230 "type": "SEQ",
3231 "members": [
3233 "type": "STRING",
3234 "value": ","
3235 },
3237 "type": "SYMBOL",
3238 "name": "update_field"
3244 },
3246 "type": "STRING",
3247 "value": "}"
3250 },
3251 "update_field": {
3252 "type": "SEQ",
3253 "members": [
3255 "type": "FIELD",
3256 "name": "name",
3257 "content": {
3258 "type": "SYMBOL",
3259 "name": "lower_identifier"
3261 },
3263 "type": "STRING",
3264 "value": ":"
3265 },
3267 "type": "FIELD",
3268 "name": "value",
3269 "content": {
3270 "type": "SYMBOL",
3271 "name": "_expression"
3275 },
3276 "list_expression": {
3277 "type": "SEQ",
3278 "members": [
3280 "type": "STRING",
3281 "value": "["
3282 },
3284 "type": "CHOICE",
3285 "members": [
3287 "type": "SEQ",
3288 "members": [
3290 "type": "SYMBOL",
3291 "name": "_expression"
3292 },
3294 "type": "REPEAT",
3295 "content": {
3296 "type": "SEQ",
3297 "members": [
3299 "type": "STRING",
3300 "value": ","
3301 },
3303 "type": "SYMBOL",
3304 "name": "_expression"
3310 },
3312 "type": "BLANK"
3315 },
3317 "type": "STRING",
3318 "value": "]"
3321 },
3322 "parenthesized_expression": {
3323 "type": "SEQ",
3324 "members": [
3326 "type": "STRING",
3327 "value": "("
3328 },
3330 "type": "SYMBOL",
3331 "name": "_expression"
3332 },
3334 "type": "STRING",
3335 "value": ")"
3338 },
3339 "_pattern": {
3340 "type": "CHOICE",
3341 "members": [
3343 "type": "SYMBOL",
3344 "name": "constructor_pattern"
3345 },
3347 "type": "SYMBOL",
3348 "name": "_pattern_atom"
3351 },
3352 "constructor_pattern": {
3353 "type": "PREC",
3354 "value": 18,
3355 "content": {
3356 "type": "SEQ",
3357 "members": [
3359 "type": "FIELD",
3360 "name": "constructor",
3361 "content": {
3362 "type": "SYMBOL",
3363 "name": "upper_identifier"
3365 },
3367 "type": "FIELD",
3368 "name": "payload",
3369 "content": {
3370 "type": "SYMBOL",
3371 "name": "_pattern_atom"
3376 },
3377 "_pattern_atom": {
3378 "type": "CHOICE",
3379 "members": [
3381 "type": "SYMBOL",
3382 "name": "variable_pattern"
3383 },
3385 "type": "SYMBOL",
3386 "name": "wildcard_pattern"
3387 },
3389 "type": "SYMBOL",
3390 "name": "literal_pattern"
3391 },
3393 "type": "SYMBOL",
3394 "name": "record_pattern"
3395 },
3397 "type": "SYMBOL",
3398 "name": "list_pattern"
3399 },
3401 "type": "SYMBOL",
3402 "name": "parenthesized_pattern"
3405 },
3406 "variable_pattern": {
3407 "type": "SYMBOL",
3408 "name": "lower_identifier"
3409 },
3410 "wildcard_pattern": {
3411 "type": "STRING",
3412 "value": "_"
3413 },
3414 "literal_pattern": {
3415 "type": "SYMBOL",
3416 "name": "_literal"
3417 },
3418 "record_pattern": {
3419 "type": "SEQ",
3420 "members": [
3422 "type": "STRING",
3423 "value": "{"
3424 },
3426 "type": "CHOICE",
3427 "members": [
3429 "type": "SEQ",
3430 "members": [
3432 "type": "SYMBOL",
3433 "name": "field_pattern"
3434 },
3436 "type": "REPEAT",
3437 "content": {
3438 "type": "SEQ",
3439 "members": [
3441 "type": "STRING",
3442 "value": ","
3443 },
3445 "type": "SYMBOL",
3446 "name": "field_pattern"
3452 },
3454 "type": "BLANK"
3457 },
3459 "type": "STRING",
3460 "value": "}"
3463 },
3464 "field_pattern": {
3465 "type": "CHOICE",
3466 "members": [
3468 "type": "SEQ",
3469 "members": [
3471 "type": "FIELD",
3472 "name": "name",
3473 "content": {
3474 "type": "SYMBOL",
3475 "name": "lower_identifier"
3477 },
3479 "type": "STRING",
3480 "value": ":"
3481 },
3483 "type": "FIELD",
3484 "name": "pattern",
3485 "content": {
3486 "type": "SYMBOL",
3487 "name": "_pattern"
3491 },
3493 "type": "SYMBOL",
3494 "name": "lower_identifier"
3497 },
3498 "list_pattern": {
3499 "type": "SEQ",
3500 "members": [
3502 "type": "STRING",
3503 "value": "["
3504 },
3506 "type": "CHOICE",
3507 "members": [
3509 "type": "SEQ",
3510 "members": [
3512 "type": "SYMBOL",
3513 "name": "_pattern"
3514 },
3516 "type": "REPEAT",
3517 "content": {
3518 "type": "SEQ",
3519 "members": [
3521 "type": "STRING",
3522 "value": ","
3523 },
3525 "type": "SYMBOL",
3526 "name": "_pattern"
3532 },
3534 "type": "BLANK"
3537 },
3539 "type": "STRING",
3540 "value": "]"
3543 },
3544 "parenthesized_pattern": {
3545 "type": "SEQ",
3546 "members": [
3548 "type": "STRING",
3549 "value": "("
3550 },
3552 "type": "SYMBOL",
3553 "name": "_pattern"
3554 },
3556 "type": "STRING",
3557 "value": ")"
3560 },
3561 "_literal": {
3562 "type": "CHOICE",
3563 "members": [
3565 "type": "SYMBOL",
3566 "name": "integer_literal"
3567 },
3569 "type": "SYMBOL",
3570 "name": "float_literal"
3571 },
3573 "type": "SYMBOL",
3574 "name": "string_literal"
3575 },
3577 "type": "SYMBOL",
3578 "name": "boolean_literal"
3579 },
3581 "type": "SYMBOL",
3582 "name": "bytes_literal"
3585 },
3586 "integer_literal": {
3587 "type": "PATTERN",
3588 "value": "[0-9][0-9_]*"
3589 },
3590 "float_literal": {
3591 "type": "PATTERN",
3592 "value": "[0-9][0-9_]*\\.[0-9][0-9_]*"
3593 },
3594 "string_literal": {
3595 "type": "SEQ",
3596 "members": [
3598 "type": "STRING",
3599 "value": "\""
3600 },
3602 "type": "REPEAT",
3603 "content": {
3604 "type": "CHOICE",
3605 "members": [
3607 "type": "SYMBOL",
3608 "name": "escape_sequence"
3609 },
3611 "type": "SYMBOL",
3612 "name": "string_content"
3616 },
3618 "type": "STRING",
3619 "value": "\""
3622 },
3623 "boolean_literal": {
3624 "type": "CHOICE",
3625 "members": [
3627 "type": "STRING",
3628 "value": "true"
3629 },
3631 "type": "STRING",
3632 "value": "false"
3635 },
3636 "bytes_literal": {
3637 "type": "SEQ",
3638 "members": [
3640 "type": "STRING",
3641 "value": "b\""
3642 },
3644 "type": "REPEAT",
3645 "content": {
3646 "type": "CHOICE",
3647 "members": [
3649 "type": "SYMBOL",
3650 "name": "escape_sequence"
3651 },
3653 "type": "SYMBOL",
3654 "name": "string_content"
3658 },
3660 "type": "STRING",
3661 "value": "\""
3664 },
3665 "escape_sequence": {
3666 "type": "IMMEDIATE_TOKEN",
3667 "content": {
3668 "type": "PREC",
3669 "value": 1,
3670 "content": {
3671 "type": "PATTERN",
3672 "value": "\\\\([\\\\\\\"ntr]|x[0-9a-fA-F]{2})"
3675 },
3676 "string_content": {
3677 "type": "IMMEDIATE_TOKEN",
3678 "content": {
3679 "type": "PREC",
3680 "value": 0,
3681 "content": {
3682 "type": "PATTERN",
3683 "value": "[^\"\\\\]+"
3686 },
3687 "lower_identifier": {
3688 "type": "PATTERN",
3689 "value": "[a-z_][a-zA-Z0-9_']*"
3690 },
3691 "upper_identifier": {
3692 "type": "PATTERN",
3693 "value": "[A-Z][a-zA-Z0-9_']*"
3694 },
3695 "comment": {
3696 "type": "TOKEN",
3697 "content": {
3698 "type": "SEQ",
3699 "members": [
3701 "type": "STRING",
3702 "value": "--"
3703 },
3705 "type": "PATTERN",
3706 "value": ".*"
3711 },
3712 "extras": [
3714 "type": "PATTERN",
3715 "value": "[ \\t\\r]"
3716 },
3718 "type": "SYMBOL",
3719 "name": "comment"
3720 },
3722 "type": "SYMBOL",
3723 "name": "_line_cont"
3725 ],
3726 "conflicts": [
3728 "constraint",
3729 "named_type"
3730 ],
3732 "variable_pattern",
3733 "variable_expression"
3734 ],
3736 "record_pattern",
3737 "record_expression"
3738 ],
3740 "list_pattern",
3741 "list_expression"
3742 ],
3744 "literal_pattern",
3745 "_atom_expression"
3746 ],
3748 "field_pattern",
3749 "variable_expression"
3750 ],
3752 "_trait_param",
3753 "type_variable"
3754 ],
3756 "trait_method",
3757 "trait_default_body"
3759 ],
3760 "precedences": [],
3761 "externals": [
3763 "type": "SYMBOL",
3764 "name": "_newline"
3765 },
3767 "type": "SYMBOL",
3768 "name": "_indent"
3769 },
3771 "type": "SYMBOL",
3772 "name": "_dedent"
3773 },
3775 "type": "SYMBOL",
3776 "name": "_line_cont"
3778 ],
3779 "inline": [],
3780 "supertypes": [],
3781 "reserved": {}