1{
2 "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
3 "name": "odin",
4 "word": "identifier",
5 "rules": {
6 "source_file": {
7 "type": "SEQ",
8 "members": [
9 {
10 "type": "REPEAT",
11 "content": {
12 "type": "SEQ",
13 "members": [
14 {
15 "type": "SYMBOL",
16 "name": "declaration"
17 },
18 {
19 "type": "SYMBOL",
20 "name": "_separator"
21 }
22 ]
23 }
24 },
25 {
26 "type": "CHOICE",
27 "members": [
28 {
29 "type": "SYMBOL",
30 "name": "declaration"
31 },
32 {
33 "type": "BLANK"
34 }
35 ]
36 }
37 ]
38 },
39 "block": {
40 "type": "PREC",
41 "value": 2,
42 "content": {
43 "type": "SEQ",
44 "members": [
45 {
46 "type": "STRING",
47 "value": "{"
48 },
49 {
50 "type": "CHOICE",
51 "members": [
52 {
53 "type": "SEQ",
54 "members": [
55 {
56 "type": "SEQ",
57 "members": [
58 {
59 "type": "CHOICE",
60 "members": [
61 {
62 "type": "SYMBOL",
63 "name": "tag"
64 },
65 {
66 "type": "BLANK"
67 }
68 ]
69 },
70 {
71 "type": "SYMBOL",
72 "name": "statement"
73 }
74 ]
75 },
76 {
77 "type": "REPEAT",
78 "content": {
79 "type": "SEQ",
80 "members": [
81 {
82 "type": "SYMBOL",
83 "name": "_separator"
84 },
85 {
86 "type": "CHOICE",
87 "members": [
88 {
89 "type": "SEQ",
90 "members": [
91 {
92 "type": "CHOICE",
93 "members": [
94 {
95 "type": "SYMBOL",
96 "name": "tag"
97 },
98 {
99 "type": "BLANK"
100 }
101 ]
102 },
103 {
104 "type": "SYMBOL",
105 "name": "statement"
106 }
107 ]
108 },
109 {
110 "type": "BLANK"
111 }
112 ]
113 }
114 ]
115 }
116 }
117 ]
118 },
119 {
120 "type": "BLANK"
121 }
122 ]
123 },
124 {
125 "type": "STRING",
126 "value": "}"
127 }
128 ]
129 }
130 },
131 "tagged_block": {
132 "type": "SEQ",
133 "members": [
134 {
135 "type": "SYMBOL",
136 "name": "tag"
137 },
138 {
139 "type": "SYMBOL",
140 "name": "block"
141 }
142 ]
143 },
144 "declaration": {
145 "type": "CHOICE",
146 "members": [
147 {
148 "type": "SYMBOL",
149 "name": "build_tag"
150 },
151 {
152 "type": "SYMBOL",
153 "name": "package_declaration"
154 },
155 {
156 "type": "SYMBOL",
157 "name": "import_declaration"
158 },
159 {
160 "type": "SYMBOL",
161 "name": "procedure_declaration"
162 },
163 {
164 "type": "SYMBOL",
165 "name": "overloaded_procedure_declaration"
166 },
167 {
168 "type": "SYMBOL",
169 "name": "struct_declaration"
170 },
171 {
172 "type": "SYMBOL",
173 "name": "enum_declaration"
174 },
175 {
176 "type": "SYMBOL",
177 "name": "union_declaration"
178 },
179 {
180 "type": "SYMBOL",
181 "name": "bit_field_declaration"
182 },
183 {
184 "type": "SYMBOL",
185 "name": "variable_declaration"
186 },
187 {
188 "type": "SYMBOL",
189 "name": "var_declaration"
190 },
191 {
192 "type": "SYMBOL",
193 "name": "const_declaration"
194 },
195 {
196 "type": "SYMBOL",
197 "name": "const_type_declaration"
198 },
199 {
200 "type": "SYMBOL",
201 "name": "foreign_block"
202 },
203 {
204 "type": "SYMBOL",
205 "name": "when_statement"
206 },
207 {
208 "type": "SYMBOL",
209 "name": "_expression_no_tag"
210 }
211 ]
212 },
213 "build_tag": {
214 "type": "SEQ",
215 "members": [
216 {
217 "type": "STRING",
218 "value": "#+"
219 },
220 {
221 "type": "PATTERN",
222 "value": ".+"
223 }
224 ]
225 },
226 "package_declaration": {
227 "type": "SEQ",
228 "members": [
229 {
230 "type": "STRING",
231 "value": "package"
232 },
233 {
234 "type": "SYMBOL",
235 "name": "identifier"
236 }
237 ]
238 },
239 "import_declaration": {
240 "type": "SEQ",
241 "members": [
242 {
243 "type": "CHOICE",
244 "members": [
245 {
246 "type": "SYMBOL",
247 "name": "attributes"
248 },
249 {
250 "type": "BLANK"
251 }
252 ]
253 },
254 {
255 "type": "CHOICE",
256 "members": [
257 {
258 "type": "STRING",
259 "value": "foreign"
260 },
261 {
262 "type": "BLANK"
263 }
264 ]
265 },
266 {
267 "type": "STRING",
268 "value": "import"
269 },
270 {
271 "type": "CHOICE",
272 "members": [
273 {
274 "type": "FIELD",
275 "name": "alias",
276 "content": {
277 "type": "SYMBOL",
278 "name": "identifier"
279 }
280 },
281 {
282 "type": "BLANK"
283 }
284 ]
285 },
286 {
287 "type": "CHOICE",
288 "members": [
289 {
290 "type": "SYMBOL",
291 "name": "string"
292 },
293 {
294 "type": "SEQ",
295 "members": [
296 {
297 "type": "STRING",
298 "value": "{"
299 },
300 {
301 "type": "SEQ",
302 "members": [
303 {
304 "type": "CHOICE",
305 "members": [
306 {
307 "type": "SYMBOL",
308 "name": "string"
309 },
310 {
311 "type": "SYMBOL",
312 "name": "identifier"
313 }
314 ]
315 },
316 {
317 "type": "REPEAT",
318 "content": {
319 "type": "SEQ",
320 "members": [
321 {
322 "type": "STRING",
323 "value": ","
324 },
325 {
326 "type": "CHOICE",
327 "members": [
328 {
329 "type": "SYMBOL",
330 "name": "string"
331 },
332 {
333 "type": "SYMBOL",
334 "name": "identifier"
335 }
336 ]
337 }
338 ]
339 }
340 }
341 ]
342 },
343 {
344 "type": "CHOICE",
345 "members": [
346 {
347 "type": "STRING",
348 "value": ","
349 },
350 {
351 "type": "BLANK"
352 }
353 ]
354 },
355 {
356 "type": "STRING",
357 "value": "}"
358 }
359 ]
360 }
361 ]
362 }
363 ]
364 },
365 "procedure_declaration": {
366 "type": "SEQ",
367 "members": [
368 {
369 "type": "CHOICE",
370 "members": [
371 {
372 "type": "SYMBOL",
373 "name": "attributes"
374 },
375 {
376 "type": "BLANK"
377 }
378 ]
379 },
380 {
381 "type": "SYMBOL",
382 "name": "expression"
383 },
384 {
385 "type": "STRING",
386 "value": "::"
387 },
388 {
389 "type": "CHOICE",
390 "members": [
391 {
392 "type": "SYMBOL",
393 "name": "tag"
394 },
395 {
396 "type": "BLANK"
397 }
398 ]
399 },
400 {
401 "type": "SYMBOL",
402 "name": "procedure"
403 }
404 ]
405 },
406 "procedure": {
407 "type": "PREC_RIGHT",
408 "value": 0,
409 "content": {
410 "type": "SEQ",
411 "members": [
412 {
413 "type": "STRING",
414 "value": "proc"
415 },
416 {
417 "type": "CHOICE",
418 "members": [
419 {
420 "type": "SYMBOL",
421 "name": "calling_convention"
422 },
423 {
424 "type": "BLANK"
425 }
426 ]
427 },
428 {
429 "type": "SYMBOL",
430 "name": "parameters"
431 },
432 {
433 "type": "CHOICE",
434 "members": [
435 {
436 "type": "SEQ",
437 "members": [
438 {
439 "type": "STRING",
440 "value": "->"
441 },
442 {
443 "type": "CHOICE",
444 "members": [
445 {
446 "type": "SYMBOL",
447 "name": "tag"
448 },
449 {
450 "type": "BLANK"
451 }
452 ]
453 },
454 {
455 "type": "CHOICE",
456 "members": [
457 {
458 "type": "SYMBOL",
459 "name": "type"
460 },
461 {
462 "type": "SYMBOL",
463 "name": "named_type"
464 }
465 ]
466 },
467 {
468 "type": "CHOICE",
469 "members": [
470 {
471 "type": "SYMBOL",
472 "name": "tag"
473 },
474 {
475 "type": "BLANK"
476 }
477 ]
478 }
479 ]
480 },
481 {
482 "type": "BLANK"
483 }
484 ]
485 },
486 {
487 "type": "CHOICE",
488 "members": [
489 {
490 "type": "SYMBOL",
491 "name": "where_clause"
492 },
493 {
494 "type": "BLANK"
495 }
496 ]
497 },
498 {
499 "type": "CHOICE",
500 "members": [
501 {
502 "type": "SYMBOL",
503 "name": "tag"
504 },
505 {
506 "type": "BLANK"
507 }
508 ]
509 },
510 {
511 "type": "CHOICE",
512 "members": [
513 {
514 "type": "CHOICE",
515 "members": [
516 {
517 "type": "SYMBOL",
518 "name": "block"
519 },
520 {
521 "type": "SYMBOL",
522 "name": "uninitialized"
523 }
524 ]
525 },
526 {
527 "type": "BLANK"
528 }
529 ]
530 }
531 ]
532 }
533 },
534 "where_clause": {
535 "type": "PREC_RIGHT",
536 "value": 0,
537 "content": {
538 "type": "SEQ",
539 "members": [
540 {
541 "type": "STRING",
542 "value": "where"
543 },
544 {
545 "type": "SEQ",
546 "members": [
547 {
548 "type": "PREC_RIGHT",
549 "value": 0,
550 "content": {
551 "type": "SYMBOL",
552 "name": "expression"
553 }
554 },
555 {
556 "type": "REPEAT",
557 "content": {
558 "type": "SEQ",
559 "members": [
560 {
561 "type": "STRING",
562 "value": ","
563 },
564 {
565 "type": "PREC_RIGHT",
566 "value": 0,
567 "content": {
568 "type": "SYMBOL",
569 "name": "expression"
570 }
571 }
572 ]
573 }
574 }
575 ]
576 }
577 ]
578 }
579 },
580 "calling_convention": {
581 "type": "CHOICE",
582 "members": [
583 {
584 "type": "STRING",
585 "value": "\"odin\""
586 },
587 {
588 "type": "STRING",
589 "value": "\"contextless\""
590 },
591 {
592 "type": "STRING",
593 "value": "\"stdcall\""
594 },
595 {
596 "type": "STRING",
597 "value": "\"std\""
598 },
599 {
600 "type": "STRING",
601 "value": "\"cdecl\""
602 },
603 {
604 "type": "STRING",
605 "value": "\"c\""
606 },
607 {
608 "type": "STRING",
609 "value": "\"fastcall\""
610 },
611 {
612 "type": "STRING",
613 "value": "\"fast\""
614 },
615 {
616 "type": "STRING",
617 "value": "\"none\""
618 },
619 {
620 "type": "STRING",
621 "value": "\"system\""
622 }
623 ]
624 },
625 "overloaded_procedure_declaration": {
626 "type": "SEQ",
627 "members": [
628 {
629 "type": "CHOICE",
630 "members": [
631 {
632 "type": "SYMBOL",
633 "name": "attributes"
634 },
635 {
636 "type": "BLANK"
637 }
638 ]
639 },
640 {
641 "type": "SYMBOL",
642 "name": "expression"
643 },
644 {
645 "type": "STRING",
646 "value": "::"
647 },
648 {
649 "type": "STRING",
650 "value": "proc"
651 },
652 {
653 "type": "STRING",
654 "value": "{"
655 },
656 {
657 "type": "CHOICE",
658 "members": [
659 {
660 "type": "SEQ",
661 "members": [
662 {
663 "type": "SEQ",
664 "members": [
665 {
666 "type": "SYMBOL",
667 "name": "expression"
668 },
669 {
670 "type": "REPEAT",
671 "content": {
672 "type": "SEQ",
673 "members": [
674 {
675 "type": "STRING",
676 "value": ","
677 },
678 {
679 "type": "SYMBOL",
680 "name": "expression"
681 }
682 ]
683 }
684 }
685 ]
686 },
687 {
688 "type": "CHOICE",
689 "members": [
690 {
691 "type": "STRING",
692 "value": ","
693 },
694 {
695 "type": "BLANK"
696 }
697 ]
698 }
699 ]
700 },
701 {
702 "type": "BLANK"
703 }
704 ]
705 },
706 {
707 "type": "STRING",
708 "value": "}"
709 }
710 ]
711 },
712 "struct_declaration": {
713 "type": "SEQ",
714 "members": [
715 {
716 "type": "CHOICE",
717 "members": [
718 {
719 "type": "SYMBOL",
720 "name": "attributes"
721 },
722 {
723 "type": "BLANK"
724 }
725 ]
726 },
727 {
728 "type": "SYMBOL",
729 "name": "expression"
730 },
731 {
732 "type": "STRING",
733 "value": "::"
734 },
735 {
736 "type": "STRING",
737 "value": "struct"
738 },
739 {
740 "type": "CHOICE",
741 "members": [
742 {
743 "type": "SYMBOL",
744 "name": "polymorphic_parameters"
745 },
746 {
747 "type": "BLANK"
748 }
749 ]
750 },
751 {
752 "type": "REPEAT",
753 "content": {
754 "type": "SEQ",
755 "members": [
756 {
757 "type": "SYMBOL",
758 "name": "tag"
759 },
760 {
761 "type": "CHOICE",
762 "members": [
763 {
764 "type": "CHOICE",
765 "members": [
766 {
767 "type": "SYMBOL",
768 "name": "identifier"
769 },
770 {
771 "type": "SYMBOL",
772 "name": "number"
773 }
774 ]
775 },
776 {
777 "type": "BLANK"
778 }
779 ]
780 }
781 ]
782 }
783 },
784 {
785 "type": "CHOICE",
786 "members": [
787 {
788 "type": "SYMBOL",
789 "name": "where_clause"
790 },
791 {
792 "type": "BLANK"
793 }
794 ]
795 },
796 {
797 "type": "STRING",
798 "value": "{"
799 },
800 {
801 "type": "CHOICE",
802 "members": [
803 {
804 "type": "SEQ",
805 "members": [
806 {
807 "type": "SEQ",
808 "members": [
809 {
810 "type": "SYMBOL",
811 "name": "field"
812 },
813 {
814 "type": "REPEAT",
815 "content": {
816 "type": "SEQ",
817 "members": [
818 {
819 "type": "STRING",
820 "value": ","
821 },
822 {
823 "type": "SYMBOL",
824 "name": "field"
825 }
826 ]
827 }
828 }
829 ]
830 },
831 {
832 "type": "CHOICE",
833 "members": [
834 {
835 "type": "STRING",
836 "value": ","
837 },
838 {
839 "type": "BLANK"
840 }
841 ]
842 }
843 ]
844 },
845 {
846 "type": "BLANK"
847 }
848 ]
849 },
850 {
851 "type": "STRING",
852 "value": "}"
853 }
854 ]
855 },
856 "enum_declaration": {
857 "type": "SEQ",
858 "members": [
859 {
860 "type": "CHOICE",
861 "members": [
862 {
863 "type": "SYMBOL",
864 "name": "attributes"
865 },
866 {
867 "type": "BLANK"
868 }
869 ]
870 },
871 {
872 "type": "CHOICE",
873 "members": [
874 {
875 "type": "STRING",
876 "value": "using"
877 },
878 {
879 "type": "BLANK"
880 }
881 ]
882 },
883 {
884 "type": "SYMBOL",
885 "name": "expression"
886 },
887 {
888 "type": "STRING",
889 "value": "::"
890 },
891 {
892 "type": "STRING",
893 "value": "enum"
894 },
895 {
896 "type": "CHOICE",
897 "members": [
898 {
899 "type": "SYMBOL",
900 "name": "type"
901 },
902 {
903 "type": "BLANK"
904 }
905 ]
906 },
907 {
908 "type": "STRING",
909 "value": "{"
910 },
911 {
912 "type": "CHOICE",
913 "members": [
914 {
915 "type": "SEQ",
916 "members": [
917 {
918 "type": "SEQ",
919 "members": [
920 {
921 "type": "SEQ",
922 "members": [
923 {
924 "type": "SYMBOL",
925 "name": "identifier"
926 },
927 {
928 "type": "CHOICE",
929 "members": [
930 {
931 "type": "SEQ",
932 "members": [
933 {
934 "type": "STRING",
935 "value": "="
936 },
937 {
938 "type": "SYMBOL",
939 "name": "expression"
940 }
941 ]
942 },
943 {
944 "type": "BLANK"
945 }
946 ]
947 }
948 ]
949 },
950 {
951 "type": "REPEAT",
952 "content": {
953 "type": "SEQ",
954 "members": [
955 {
956 "type": "STRING",
957 "value": ","
958 },
959 {
960 "type": "SEQ",
961 "members": [
962 {
963 "type": "SYMBOL",
964 "name": "identifier"
965 },
966 {
967 "type": "CHOICE",
968 "members": [
969 {
970 "type": "SEQ",
971 "members": [
972 {
973 "type": "STRING",
974 "value": "="
975 },
976 {
977 "type": "SYMBOL",
978 "name": "expression"
979 }
980 ]
981 },
982 {
983 "type": "BLANK"
984 }
985 ]
986 }
987 ]
988 }
989 ]
990 }
991 }
992 ]
993 },
994 {
995 "type": "CHOICE",
996 "members": [
997 {
998 "type": "STRING",
999 "value": ","
1000 },
1001 {
1002 "type": "BLANK"
1003 }
1004 ]
1005 }
1006 ]
1007 },
1008 {
1009 "type": "BLANK"
1010 }
1011 ]
1012 },
1013 {
1014 "type": "STRING",
1015 "value": "}"
1016 }
1017 ]
1018 },
1019 "union_declaration": {
1020 "type": "SEQ",
1021 "members": [
1022 {
1023 "type": "CHOICE",
1024 "members": [
1025 {
1026 "type": "SYMBOL",
1027 "name": "attributes"
1028 },
1029 {
1030 "type": "BLANK"
1031 }
1032 ]
1033 },
1034 {
1035 "type": "SYMBOL",
1036 "name": "expression"
1037 },
1038 {
1039 "type": "STRING",
1040 "value": "::"
1041 },
1042 {
1043 "type": "STRING",
1044 "value": "union"
1045 },
1046 {
1047 "type": "CHOICE",
1048 "members": [
1049 {
1050 "type": "SYMBOL",
1051 "name": "polymorphic_parameters"
1052 },
1053 {
1054 "type": "BLANK"
1055 }
1056 ]
1057 },
1058 {
1059 "type": "CHOICE",
1060 "members": [
1061 {
1062 "type": "SYMBOL",
1063 "name": "tag"
1064 },
1065 {
1066 "type": "BLANK"
1067 }
1068 ]
1069 },
1070 {
1071 "type": "STRING",
1072 "value": "{"
1073 },
1074 {
1075 "type": "CHOICE",
1076 "members": [
1077 {
1078 "type": "SEQ",
1079 "members": [
1080 {
1081 "type": "SEQ",
1082 "members": [
1083 {
1084 "type": "SYMBOL",
1085 "name": "type"
1086 },
1087 {
1088 "type": "REPEAT",
1089 "content": {
1090 "type": "SEQ",
1091 "members": [
1092 {
1093 "type": "STRING",
1094 "value": ","
1095 },
1096 {
1097 "type": "SYMBOL",
1098 "name": "type"
1099 }
1100 ]
1101 }
1102 }
1103 ]
1104 },
1105 {
1106 "type": "CHOICE",
1107 "members": [
1108 {
1109 "type": "STRING",
1110 "value": ","
1111 },
1112 {
1113 "type": "BLANK"
1114 }
1115 ]
1116 }
1117 ]
1118 },
1119 {
1120 "type": "BLANK"
1121 }
1122 ]
1123 },
1124 {
1125 "type": "STRING",
1126 "value": "}"
1127 }
1128 ]
1129 },
1130 "bit_field_declaration": {
1131 "type": "SEQ",
1132 "members": [
1133 {
1134 "type": "CHOICE",
1135 "members": [
1136 {
1137 "type": "SYMBOL",
1138 "name": "attributes"
1139 },
1140 {
1141 "type": "BLANK"
1142 }
1143 ]
1144 },
1145 {
1146 "type": "SYMBOL",
1147 "name": "expression"
1148 },
1149 {
1150 "type": "STRING",
1151 "value": "::"
1152 },
1153 {
1154 "type": "STRING",
1155 "value": "bit_field"
1156 },
1157 {
1158 "type": "SYMBOL",
1159 "name": "type"
1160 },
1161 {
1162 "type": "STRING",
1163 "value": "{"
1164 },
1165 {
1166 "type": "CHOICE",
1167 "members": [
1168 {
1169 "type": "SEQ",
1170 "members": [
1171 {
1172 "type": "SEQ",
1173 "members": [
1174 {
1175 "type": "SEQ",
1176 "members": [
1177 {
1178 "type": "SYMBOL",
1179 "name": "identifier"
1180 },
1181 {
1182 "type": "STRING",
1183 "value": ":"
1184 },
1185 {
1186 "type": "SYMBOL",
1187 "name": "type"
1188 },
1189 {
1190 "type": "STRING",
1191 "value": "|"
1192 },
1193 {
1194 "type": "SYMBOL",
1195 "name": "expression"
1196 }
1197 ]
1198 },
1199 {
1200 "type": "REPEAT",
1201 "content": {
1202 "type": "SEQ",
1203 "members": [
1204 {
1205 "type": "STRING",
1206 "value": ","
1207 },
1208 {
1209 "type": "SEQ",
1210 "members": [
1211 {
1212 "type": "SYMBOL",
1213 "name": "identifier"
1214 },
1215 {
1216 "type": "STRING",
1217 "value": ":"
1218 },
1219 {
1220 "type": "SYMBOL",
1221 "name": "type"
1222 },
1223 {
1224 "type": "STRING",
1225 "value": "|"
1226 },
1227 {
1228 "type": "SYMBOL",
1229 "name": "expression"
1230 }
1231 ]
1232 }
1233 ]
1234 }
1235 }
1236 ]
1237 },
1238 {
1239 "type": "CHOICE",
1240 "members": [
1241 {
1242 "type": "STRING",
1243 "value": ","
1244 },
1245 {
1246 "type": "BLANK"
1247 }
1248 ]
1249 }
1250 ]
1251 },
1252 {
1253 "type": "BLANK"
1254 }
1255 ]
1256 },
1257 {
1258 "type": "STRING",
1259 "value": "}"
1260 }
1261 ]
1262 },
1263 "variable_declaration": {
1264 "type": "SEQ",
1265 "members": [
1266 {
1267 "type": "CHOICE",
1268 "members": [
1269 {
1270 "type": "SYMBOL",
1271 "name": "attributes"
1272 },
1273 {
1274 "type": "BLANK"
1275 }
1276 ]
1277 },
1278 {
1279 "type": "SEQ",
1280 "members": [
1281 {
1282 "type": "SYMBOL",
1283 "name": "expression"
1284 },
1285 {
1286 "type": "REPEAT",
1287 "content": {
1288 "type": "SEQ",
1289 "members": [
1290 {
1291 "type": "STRING",
1292 "value": ","
1293 },
1294 {
1295 "type": "SYMBOL",
1296 "name": "expression"
1297 }
1298 ]
1299 }
1300 }
1301 ]
1302 },
1303 {
1304 "type": "STRING",
1305 "value": ":="
1306 },
1307 {
1308 "type": "SEQ",
1309 "members": [
1310 {
1311 "type": "CHOICE",
1312 "members": [
1313 {
1314 "type": "SYMBOL",
1315 "name": "expression"
1316 },
1317 {
1318 "type": "SYMBOL",
1319 "name": "procedure"
1320 }
1321 ]
1322 },
1323 {
1324 "type": "REPEAT",
1325 "content": {
1326 "type": "SEQ",
1327 "members": [
1328 {
1329 "type": "STRING",
1330 "value": ","
1331 },
1332 {
1333 "type": "CHOICE",
1334 "members": [
1335 {
1336 "type": "SYMBOL",
1337 "name": "expression"
1338 },
1339 {
1340 "type": "SYMBOL",
1341 "name": "procedure"
1342 }
1343 ]
1344 }
1345 ]
1346 }
1347 }
1348 ]
1349 },
1350 {
1351 "type": "CHOICE",
1352 "members": [
1353 {
1354 "type": "STRING",
1355 "value": ","
1356 },
1357 {
1358 "type": "BLANK"
1359 }
1360 ]
1361 }
1362 ]
1363 },
1364 "const_declaration": {
1365 "type": "SEQ",
1366 "members": [
1367 {
1368 "type": "CHOICE",
1369 "members": [
1370 {
1371 "type": "SYMBOL",
1372 "name": "attributes"
1373 },
1374 {
1375 "type": "BLANK"
1376 }
1377 ]
1378 },
1379 {
1380 "type": "SEQ",
1381 "members": [
1382 {
1383 "type": "SYMBOL",
1384 "name": "expression"
1385 },
1386 {
1387 "type": "REPEAT",
1388 "content": {
1389 "type": "SEQ",
1390 "members": [
1391 {
1392 "type": "STRING",
1393 "value": ","
1394 },
1395 {
1396 "type": "SYMBOL",
1397 "name": "expression"
1398 }
1399 ]
1400 }
1401 }
1402 ]
1403 },
1404 {
1405 "type": "STRING",
1406 "value": "::"
1407 },
1408 {
1409 "type": "CHOICE",
1410 "members": [
1411 {
1412 "type": "SYMBOL",
1413 "name": "tag"
1414 },
1415 {
1416 "type": "BLANK"
1417 }
1418 ]
1419 },
1420 {
1421 "type": "SEQ",
1422 "members": [
1423 {
1424 "type": "CHOICE",
1425 "members": [
1426 {
1427 "type": "SYMBOL",
1428 "name": "expression"
1429 },
1430 {
1431 "type": "SEQ",
1432 "members": [
1433 {
1434 "type": "ALIAS",
1435 "content": {
1436 "type": "STRING",
1437 "value": "#type"
1438 },
1439 "named": true,
1440 "value": "tag"
1441 },
1442 {
1443 "type": "SYMBOL",
1444 "name": "type"
1445 }
1446 ]
1447 },
1448 {
1449 "type": "SYMBOL",
1450 "name": "array_type"
1451 },
1452 {
1453 "type": "SYMBOL",
1454 "name": "bit_set_type"
1455 },
1456 {
1457 "type": "SYMBOL",
1458 "name": "pointer_type"
1459 }
1460 ]
1461 },
1462 {
1463 "type": "REPEAT",
1464 "content": {
1465 "type": "SEQ",
1466 "members": [
1467 {
1468 "type": "STRING",
1469 "value": ","
1470 },
1471 {
1472 "type": "CHOICE",
1473 "members": [
1474 {
1475 "type": "SYMBOL",
1476 "name": "expression"
1477 },
1478 {
1479 "type": "SEQ",
1480 "members": [
1481 {
1482 "type": "ALIAS",
1483 "content": {
1484 "type": "STRING",
1485 "value": "#type"
1486 },
1487 "named": true,
1488 "value": "tag"
1489 },
1490 {
1491 "type": "SYMBOL",
1492 "name": "type"
1493 }
1494 ]
1495 },
1496 {
1497 "type": "SYMBOL",
1498 "name": "array_type"
1499 },
1500 {
1501 "type": "SYMBOL",
1502 "name": "bit_set_type"
1503 },
1504 {
1505 "type": "SYMBOL",
1506 "name": "pointer_type"
1507 }
1508 ]
1509 }
1510 ]
1511 }
1512 }
1513 ]
1514 }
1515 ]
1516 },
1517 "const_type_declaration": {
1518 "type": "PREC",
1519 "value": 1,
1520 "content": {
1521 "type": "SEQ",
1522 "members": [
1523 {
1524 "type": "CHOICE",
1525 "members": [
1526 {
1527 "type": "SYMBOL",
1528 "name": "attributes"
1529 },
1530 {
1531 "type": "BLANK"
1532 }
1533 ]
1534 },
1535 {
1536 "type": "SYMBOL",
1537 "name": "expression"
1538 },
1539 {
1540 "type": "STRING",
1541 "value": ":"
1542 },
1543 {
1544 "type": "SYMBOL",
1545 "name": "type"
1546 },
1547 {
1548 "type": "STRING",
1549 "value": ":"
1550 },
1551 {
1552 "type": "SYMBOL",
1553 "name": "expression"
1554 }
1555 ]
1556 }
1557 },
1558 "foreign_block": {
1559 "type": "SEQ",
1560 "members": [
1561 {
1562 "type": "CHOICE",
1563 "members": [
1564 {
1565 "type": "SYMBOL",
1566 "name": "attributes"
1567 },
1568 {
1569 "type": "BLANK"
1570 }
1571 ]
1572 },
1573 {
1574 "type": "STRING",
1575 "value": "foreign"
1576 },
1577 {
1578 "type": "CHOICE",
1579 "members": [
1580 {
1581 "type": "SYMBOL",
1582 "name": "identifier"
1583 },
1584 {
1585 "type": "BLANK"
1586 }
1587 ]
1588 },
1589 {
1590 "type": "SYMBOL",
1591 "name": "block"
1592 }
1593 ]
1594 },
1595 "attributes": {
1596 "type": "REPEAT1",
1597 "content": {
1598 "type": "SYMBOL",
1599 "name": "attribute"
1600 }
1601 },
1602 "attribute": {
1603 "type": "SEQ",
1604 "members": [
1605 {
1606 "type": "STRING",
1607 "value": "@"
1608 },
1609 {
1610 "type": "CHOICE",
1611 "members": [
1612 {
1613 "type": "SYMBOL",
1614 "name": "identifier"
1615 },
1616 {
1617 "type": "SEQ",
1618 "members": [
1619 {
1620 "type": "STRING",
1621 "value": "("
1622 },
1623 {
1624 "type": "SEQ",
1625 "members": [
1626 {
1627 "type": "SEQ",
1628 "members": [
1629 {
1630 "type": "SYMBOL",
1631 "name": "identifier"
1632 },
1633 {
1634 "type": "CHOICE",
1635 "members": [
1636 {
1637 "type": "SEQ",
1638 "members": [
1639 {
1640 "type": "STRING",
1641 "value": "="
1642 },
1643 {
1644 "type": "SYMBOL",
1645 "name": "expression"
1646 }
1647 ]
1648 },
1649 {
1650 "type": "BLANK"
1651 }
1652 ]
1653 }
1654 ]
1655 },
1656 {
1657 "type": "REPEAT",
1658 "content": {
1659 "type": "SEQ",
1660 "members": [
1661 {
1662 "type": "STRING",
1663 "value": ","
1664 },
1665 {
1666 "type": "SEQ",
1667 "members": [
1668 {
1669 "type": "SYMBOL",
1670 "name": "identifier"
1671 },
1672 {
1673 "type": "CHOICE",
1674 "members": [
1675 {
1676 "type": "SEQ",
1677 "members": [
1678 {
1679 "type": "STRING",
1680 "value": "="
1681 },
1682 {
1683 "type": "SYMBOL",
1684 "name": "expression"
1685 }
1686 ]
1687 },
1688 {
1689 "type": "BLANK"
1690 }
1691 ]
1692 }
1693 ]
1694 }
1695 ]
1696 }
1697 }
1698 ]
1699 },
1700 {
1701 "type": "STRING",
1702 "value": ")"
1703 }
1704 ]
1705 }
1706 ]
1707 }
1708 ]
1709 },
1710 "parameters": {
1711 "type": "SEQ",
1712 "members": [
1713 {
1714 "type": "STRING",
1715 "value": "("
1716 },
1717 {
1718 "type": "CHOICE",
1719 "members": [
1720 {
1721 "type": "SEQ",
1722 "members": [
1723 {
1724 "type": "SEQ",
1725 "members": [
1726 {
1727 "type": "CHOICE",
1728 "members": [
1729 {
1730 "type": "SYMBOL",
1731 "name": "parameter"
1732 },
1733 {
1734 "type": "SYMBOL",
1735 "name": "default_parameter"
1736 }
1737 ]
1738 },
1739 {
1740 "type": "REPEAT",
1741 "content": {
1742 "type": "SEQ",
1743 "members": [
1744 {
1745 "type": "STRING",
1746 "value": ","
1747 },
1748 {
1749 "type": "CHOICE",
1750 "members": [
1751 {
1752 "type": "SYMBOL",
1753 "name": "parameter"
1754 },
1755 {
1756 "type": "SYMBOL",
1757 "name": "default_parameter"
1758 }
1759 ]
1760 }
1761 ]
1762 }
1763 }
1764 ]
1765 },
1766 {
1767 "type": "CHOICE",
1768 "members": [
1769 {
1770 "type": "STRING",
1771 "value": ","
1772 },
1773 {
1774 "type": "BLANK"
1775 }
1776 ]
1777 }
1778 ]
1779 },
1780 {
1781 "type": "BLANK"
1782 }
1783 ]
1784 },
1785 {
1786 "type": "STRING",
1787 "value": ")"
1788 }
1789 ]
1790 },
1791 "parameter": {
1792 "type": "PREC_RIGHT",
1793 "value": 0,
1794 "content": {
1795 "type": "SEQ",
1796 "members": [
1797 {
1798 "type": "SEQ",
1799 "members": [
1800 {
1801 "type": "SYMBOL",
1802 "name": "_param_header"
1803 },
1804 {
1805 "type": "REPEAT",
1806 "content": {
1807 "type": "SEQ",
1808 "members": [
1809 {
1810 "type": "STRING",
1811 "value": ","
1812 },
1813 {
1814 "type": "SYMBOL",
1815 "name": "_param_header"
1816 }
1817 ]
1818 }
1819 }
1820 ]
1821 },
1822 {
1823 "type": "CHOICE",
1824 "members": [
1825 {
1826 "type": "SYMBOL",
1827 "name": "_param_type"
1828 },
1829 {
1830 "type": "BLANK"
1831 }
1832 ]
1833 }
1834 ]
1835 }
1836 },
1837 "_param_header": {
1838 "type": "SEQ",
1839 "members": [
1840 {
1841 "type": "CHOICE",
1842 "members": [
1843 {
1844 "type": "SYMBOL",
1845 "name": "tag"
1846 },
1847 {
1848 "type": "BLANK"
1849 }
1850 ]
1851 },
1852 {
1853 "type": "CHOICE",
1854 "members": [
1855 {
1856 "type": "STRING",
1857 "value": "using"
1858 },
1859 {
1860 "type": "BLANK"
1861 }
1862 ]
1863 },
1864 {
1865 "type": "CHOICE",
1866 "members": [
1867 {
1868 "type": "STRING",
1869 "value": "$"
1870 },
1871 {
1872 "type": "BLANK"
1873 }
1874 ]
1875 },
1876 {
1877 "type": "CHOICE",
1878 "members": [
1879 {
1880 "type": "SYMBOL",
1881 "name": "identifier"
1882 },
1883 {
1884 "type": "SYMBOL",
1885 "name": "variadic_type"
1886 },
1887 {
1888 "type": "SYMBOL",
1889 "name": "array_type"
1890 },
1891 {
1892 "type": "SYMBOL",
1893 "name": "pointer_type"
1894 },
1895 {
1896 "type": "SYMBOL",
1897 "name": "field_type"
1898 },
1899 {
1900 "type": "SYMBOL",
1901 "name": "_procedure_type"
1902 }
1903 ]
1904 }
1905 ]
1906 },
1907 "_param_type": {
1908 "type": "SEQ",
1909 "members": [
1910 {
1911 "type": "STRING",
1912 "value": ":"
1913 },
1914 {
1915 "type": "CHOICE",
1916 "members": [
1917 {
1918 "type": "SYMBOL",
1919 "name": "tag"
1920 },
1921 {
1922 "type": "BLANK"
1923 }
1924 ]
1925 },
1926 {
1927 "type": "SYMBOL",
1928 "name": "type"
1929 },
1930 {
1931 "type": "CHOICE",
1932 "members": [
1933 {
1934 "type": "SYMBOL",
1935 "name": "identifier"
1936 },
1937 {
1938 "type": "BLANK"
1939 }
1940 ]
1941 },
1942 {
1943 "type": "CHOICE",
1944 "members": [
1945 {
1946 "type": "SEQ",
1947 "members": [
1948 {
1949 "type": "STRING",
1950 "value": "="
1951 },
1952 {
1953 "type": "SYMBOL",
1954 "name": "expression"
1955 }
1956 ]
1957 },
1958 {
1959 "type": "BLANK"
1960 }
1961 ]
1962 }
1963 ]
1964 },
1965 "default_parameter": {
1966 "type": "SEQ",
1967 "members": [
1968 {
1969 "type": "CHOICE",
1970 "members": [
1971 {
1972 "type": "SYMBOL",
1973 "name": "tag"
1974 },
1975 {
1976 "type": "BLANK"
1977 }
1978 ]
1979 },
1980 {
1981 "type": "CHOICE",
1982 "members": [
1983 {
1984 "type": "STRING",
1985 "value": "using"
1986 },
1987 {
1988 "type": "BLANK"
1989 }
1990 ]
1991 },
1992 {
1993 "type": "SYMBOL",
1994 "name": "identifier"
1995 },
1996 {
1997 "type": "STRING",
1998 "value": ":="
1999 },
2000 {
2001 "type": "SYMBOL",
2002 "name": "expression"
2003 }
2004 ]
2005 },
2006 "polymorphic_parameters": {
2007 "type": "SEQ",
2008 "members": [
2009 {
2010 "type": "STRING",
2011 "value": "("
2012 },
2013 {
2014 "type": "SEQ",
2015 "members": [
2016 {
2017 "type": "SEQ",
2018 "members": [
2019 {
2020 "type": "SEQ",
2021 "members": [
2022 {
2023 "type": "SEQ",
2024 "members": [
2025 {
2026 "type": "CHOICE",
2027 "members": [
2028 {
2029 "type": "STRING",
2030 "value": "$"
2031 },
2032 {
2033 "type": "BLANK"
2034 }
2035 ]
2036 },
2037 {
2038 "type": "SYMBOL",
2039 "name": "identifier"
2040 }
2041 ]
2042 },
2043 {
2044 "type": "REPEAT",
2045 "content": {
2046 "type": "SEQ",
2047 "members": [
2048 {
2049 "type": "STRING",
2050 "value": ","
2051 },
2052 {
2053 "type": "SEQ",
2054 "members": [
2055 {
2056 "type": "CHOICE",
2057 "members": [
2058 {
2059 "type": "STRING",
2060 "value": "$"
2061 },
2062 {
2063 "type": "BLANK"
2064 }
2065 ]
2066 },
2067 {
2068 "type": "SYMBOL",
2069 "name": "identifier"
2070 }
2071 ]
2072 }
2073 ]
2074 }
2075 }
2076 ]
2077 },
2078 {
2079 "type": "STRING",
2080 "value": ":"
2081 },
2082 {
2083 "type": "SYMBOL",
2084 "name": "type"
2085 }
2086 ]
2087 },
2088 {
2089 "type": "REPEAT",
2090 "content": {
2091 "type": "SEQ",
2092 "members": [
2093 {
2094 "type": "STRING",
2095 "value": ","
2096 },
2097 {
2098 "type": "SEQ",
2099 "members": [
2100 {
2101 "type": "SEQ",
2102 "members": [
2103 {
2104 "type": "SEQ",
2105 "members": [
2106 {
2107 "type": "CHOICE",
2108 "members": [
2109 {
2110 "type": "STRING",
2111 "value": "$"
2112 },
2113 {
2114 "type": "BLANK"
2115 }
2116 ]
2117 },
2118 {
2119 "type": "SYMBOL",
2120 "name": "identifier"
2121 }
2122 ]
2123 },
2124 {
2125 "type": "REPEAT",
2126 "content": {
2127 "type": "SEQ",
2128 "members": [
2129 {
2130 "type": "STRING",
2131 "value": ","
2132 },
2133 {
2134 "type": "SEQ",
2135 "members": [
2136 {
2137 "type": "CHOICE",
2138 "members": [
2139 {
2140 "type": "STRING",
2141 "value": "$"
2142 },
2143 {
2144 "type": "BLANK"
2145 }
2146 ]
2147 },
2148 {
2149 "type": "SYMBOL",
2150 "name": "identifier"
2151 }
2152 ]
2153 }
2154 ]
2155 }
2156 }
2157 ]
2158 },
2159 {
2160 "type": "STRING",
2161 "value": ":"
2162 },
2163 {
2164 "type": "SYMBOL",
2165 "name": "type"
2166 }
2167 ]
2168 }
2169 ]
2170 }
2171 }
2172 ]
2173 },
2174 {
2175 "type": "STRING",
2176 "value": ")"
2177 }
2178 ]
2179 },
2180 "field": {
2181 "type": "PREC_RIGHT",
2182 "value": 0,
2183 "content": {
2184 "type": "SEQ",
2185 "members": [
2186 {
2187 "type": "SEQ",
2188 "members": [
2189 {
2190 "type": "SEQ",
2191 "members": [
2192 {
2193 "type": "CHOICE",
2194 "members": [
2195 {
2196 "type": "SYMBOL",
2197 "name": "tag"
2198 },
2199 {
2200 "type": "BLANK"
2201 }
2202 ]
2203 },
2204 {
2205 "type": "CHOICE",
2206 "members": [
2207 {
2208 "type": "STRING",
2209 "value": "using"
2210 },
2211 {
2212 "type": "BLANK"
2213 }
2214 ]
2215 },
2216 {
2217 "type": "SYMBOL",
2218 "name": "identifier"
2219 }
2220 ]
2221 },
2222 {
2223 "type": "REPEAT",
2224 "content": {
2225 "type": "SEQ",
2226 "members": [
2227 {
2228 "type": "STRING",
2229 "value": ","
2230 },
2231 {
2232 "type": "SEQ",
2233 "members": [
2234 {
2235 "type": "CHOICE",
2236 "members": [
2237 {
2238 "type": "SYMBOL",
2239 "name": "tag"
2240 },
2241 {
2242 "type": "BLANK"
2243 }
2244 ]
2245 },
2246 {
2247 "type": "CHOICE",
2248 "members": [
2249 {
2250 "type": "STRING",
2251 "value": "using"
2252 },
2253 {
2254 "type": "BLANK"
2255 }
2256 ]
2257 },
2258 {
2259 "type": "SYMBOL",
2260 "name": "identifier"
2261 }
2262 ]
2263 }
2264 ]
2265 }
2266 }
2267 ]
2268 },
2269 {
2270 "type": "STRING",
2271 "value": ":"
2272 },
2273 {
2274 "type": "CHOICE",
2275 "members": [
2276 {
2277 "type": "SYMBOL",
2278 "name": "tag"
2279 },
2280 {
2281 "type": "BLANK"
2282 }
2283 ]
2284 },
2285 {
2286 "type": "SYMBOL",
2287 "name": "type"
2288 },
2289 {
2290 "type": "CHOICE",
2291 "members": [
2292 {
2293 "type": "SYMBOL",
2294 "name": "string"
2295 },
2296 {
2297 "type": "BLANK"
2298 }
2299 ]
2300 }
2301 ]
2302 }
2303 },
2304 "statement": {
2305 "type": "PREC",
2306 "value": 1,
2307 "content": {
2308 "type": "CHOICE",
2309 "members": [
2310 {
2311 "type": "SYMBOL",
2312 "name": "procedure_declaration"
2313 },
2314 {
2315 "type": "SYMBOL",
2316 "name": "overloaded_procedure_declaration"
2317 },
2318 {
2319 "type": "SYMBOL",
2320 "name": "struct_declaration"
2321 },
2322 {
2323 "type": "SYMBOL",
2324 "name": "enum_declaration"
2325 },
2326 {
2327 "type": "SYMBOL",
2328 "name": "union_declaration"
2329 },
2330 {
2331 "type": "SYMBOL",
2332 "name": "bit_field_declaration"
2333 },
2334 {
2335 "type": "SYMBOL",
2336 "name": "const_declaration"
2337 },
2338 {
2339 "type": "SYMBOL",
2340 "name": "import_declaration"
2341 },
2342 {
2343 "type": "SYMBOL",
2344 "name": "assignment_statement"
2345 },
2346 {
2347 "type": "SYMBOL",
2348 "name": "update_statement"
2349 },
2350 {
2351 "type": "SYMBOL",
2352 "name": "if_statement"
2353 },
2354 {
2355 "type": "SYMBOL",
2356 "name": "when_statement"
2357 },
2358 {
2359 "type": "SYMBOL",
2360 "name": "for_statement"
2361 },
2362 {
2363 "type": "SYMBOL",
2364 "name": "switch_statement"
2365 },
2366 {
2367 "type": "SYMBOL",
2368 "name": "defer_statement"
2369 },
2370 {
2371 "type": "SYMBOL",
2372 "name": "break_statement"
2373 },
2374 {
2375 "type": "SYMBOL",
2376 "name": "continue_statement"
2377 },
2378 {
2379 "type": "SYMBOL",
2380 "name": "fallthrough_statement"
2381 },
2382 {
2383 "type": "SYMBOL",
2384 "name": "label_statement"
2385 },
2386 {
2387 "type": "SYMBOL",
2388 "name": "using_statement"
2389 },
2390 {
2391 "type": "SYMBOL",
2392 "name": "return_statement"
2393 },
2394 {
2395 "type": "SYMBOL",
2396 "name": "_expression_no_tag"
2397 },
2398 {
2399 "type": "SYMBOL",
2400 "name": "var_declaration"
2401 },
2402 {
2403 "type": "SYMBOL",
2404 "name": "foreign_block"
2405 },
2406 {
2407 "type": "SYMBOL",
2408 "name": "tagged_block"
2409 },
2410 {
2411 "type": "SYMBOL",
2412 "name": "block"
2413 }
2414 ]
2415 }
2416 },
2417 "assignment_statement": {
2418 "type": "PREC",
2419 "value": 1,
2420 "content": {
2421 "type": "SEQ",
2422 "members": [
2423 {
2424 "type": "CHOICE",
2425 "members": [
2426 {
2427 "type": "SEQ",
2428 "members": [
2429 {
2430 "type": "SYMBOL",
2431 "name": "attributes"
2432 },
2433 {
2434 "type": "CHOICE",
2435 "members": [
2436 {
2437 "type": "SYMBOL",
2438 "name": "tag"
2439 },
2440 {
2441 "type": "BLANK"
2442 }
2443 ]
2444 }
2445 ]
2446 },
2447 {
2448 "type": "BLANK"
2449 }
2450 ]
2451 },
2452 {
2453 "type": "SEQ",
2454 "members": [
2455 {
2456 "type": "SYMBOL",
2457 "name": "expression"
2458 },
2459 {
2460 "type": "REPEAT",
2461 "content": {
2462 "type": "SEQ",
2463 "members": [
2464 {
2465 "type": "STRING",
2466 "value": ","
2467 },
2468 {
2469 "type": "SYMBOL",
2470 "name": "expression"
2471 }
2472 ]
2473 }
2474 }
2475 ]
2476 },
2477 {
2478 "type": "CHOICE",
2479 "members": [
2480 {
2481 "type": "STRING",
2482 "value": "="
2483 },
2484 {
2485 "type": "STRING",
2486 "value": ":="
2487 }
2488 ]
2489 },
2490 {
2491 "type": "CHOICE",
2492 "members": [
2493 {
2494 "type": "SYMBOL",
2495 "name": "tag"
2496 },
2497 {
2498 "type": "BLANK"
2499 }
2500 ]
2501 },
2502 {
2503 "type": "SEQ",
2504 "members": [
2505 {
2506 "type": "CHOICE",
2507 "members": [
2508 {
2509 "type": "SYMBOL",
2510 "name": "expression"
2511 },
2512 {
2513 "type": "SYMBOL",
2514 "name": "procedure"
2515 }
2516 ]
2517 },
2518 {
2519 "type": "REPEAT",
2520 "content": {
2521 "type": "SEQ",
2522 "members": [
2523 {
2524 "type": "STRING",
2525 "value": ","
2526 },
2527 {
2528 "type": "CHOICE",
2529 "members": [
2530 {
2531 "type": "SYMBOL",
2532 "name": "expression"
2533 },
2534 {
2535 "type": "SYMBOL",
2536 "name": "procedure"
2537 }
2538 ]
2539 }
2540 ]
2541 }
2542 }
2543 ]
2544 }
2545 ]
2546 }
2547 },
2548 "update_statement": {
2549 "type": "SEQ",
2550 "members": [
2551 {
2552 "type": "SEQ",
2553 "members": [
2554 {
2555 "type": "SYMBOL",
2556 "name": "expression"
2557 },
2558 {
2559 "type": "REPEAT",
2560 "content": {
2561 "type": "SEQ",
2562 "members": [
2563 {
2564 "type": "STRING",
2565 "value": ","
2566 },
2567 {
2568 "type": "SYMBOL",
2569 "name": "expression"
2570 }
2571 ]
2572 }
2573 }
2574 ]
2575 },
2576 {
2577 "type": "CHOICE",
2578 "members": [
2579 {
2580 "type": "STRING",
2581 "value": "+="
2582 },
2583 {
2584 "type": "STRING",
2585 "value": "-="
2586 },
2587 {
2588 "type": "STRING",
2589 "value": "*="
2590 },
2591 {
2592 "type": "STRING",
2593 "value": "/="
2594 },
2595 {
2596 "type": "STRING",
2597 "value": "%="
2598 },
2599 {
2600 "type": "STRING",
2601 "value": "&="
2602 },
2603 {
2604 "type": "STRING",
2605 "value": "|="
2606 },
2607 {
2608 "type": "STRING",
2609 "value": "^="
2610 },
2611 {
2612 "type": "STRING",
2613 "value": "<<="
2614 },
2615 {
2616 "type": "STRING",
2617 "value": ">>="
2618 },
2619 {
2620 "type": "STRING",
2621 "value": "||="
2622 },
2623 {
2624 "type": "STRING",
2625 "value": "&&="
2626 },
2627 {
2628 "type": "STRING",
2629 "value": "&~="
2630 }
2631 ]
2632 },
2633 {
2634 "type": "SEQ",
2635 "members": [
2636 {
2637 "type": "SYMBOL",
2638 "name": "expression"
2639 },
2640 {
2641 "type": "REPEAT",
2642 "content": {
2643 "type": "SEQ",
2644 "members": [
2645 {
2646 "type": "STRING",
2647 "value": ","
2648 },
2649 {
2650 "type": "SYMBOL",
2651 "name": "expression"
2652 }
2653 ]
2654 }
2655 }
2656 ]
2657 }
2658 ]
2659 },
2660 "if_statement": {
2661 "type": "PREC_RIGHT",
2662 "value": 0,
2663 "content": {
2664 "type": "SEQ",
2665 "members": [
2666 {
2667 "type": "STRING",
2668 "value": "if"
2669 },
2670 {
2671 "type": "CHOICE",
2672 "members": [
2673 {
2674 "type": "SEQ",
2675 "members": [
2676 {
2677 "type": "CHOICE",
2678 "members": [
2679 {
2680 "type": "FIELD",
2681 "name": "initializer",
2682 "content": {
2683 "type": "CHOICE",
2684 "members": [
2685 {
2686 "type": "SYMBOL",
2687 "name": "assignment_statement"
2688 },
2689 {
2690 "type": "SYMBOL",
2691 "name": "update_statement"
2692 },
2693 {
2694 "type": "SYMBOL",
2695 "name": "var_declaration"
2696 }
2697 ]
2698 }
2699 },
2700 {
2701 "type": "BLANK"
2702 }
2703 ]
2704 },
2705 {
2706 "type": "STRING",
2707 "value": ";"
2708 }
2709 ]
2710 },
2711 {
2712 "type": "BLANK"
2713 }
2714 ]
2715 },
2716 {
2717 "type": "CHOICE",
2718 "members": [
2719 {
2720 "type": "SYMBOL",
2721 "name": "tag"
2722 },
2723 {
2724 "type": "BLANK"
2725 }
2726 ]
2727 },
2728 {
2729 "type": "FIELD",
2730 "name": "condition",
2731 "content": {
2732 "type": "SYMBOL",
2733 "name": "expression"
2734 }
2735 },
2736 {
2737 "type": "CHOICE",
2738 "members": [
2739 {
2740 "type": "FIELD",
2741 "name": "consequence",
2742 "content": {
2743 "type": "SYMBOL",
2744 "name": "block"
2745 }
2746 },
2747 {
2748 "type": "SEQ",
2749 "members": [
2750 {
2751 "type": "STRING",
2752 "value": "do"
2753 },
2754 {
2755 "type": "FIELD",
2756 "name": "consequence",
2757 "content": {
2758 "type": "SYMBOL",
2759 "name": "statement"
2760 }
2761 }
2762 ]
2763 }
2764 ]
2765 },
2766 {
2767 "type": "REPEAT",
2768 "content": {
2769 "type": "SYMBOL",
2770 "name": "else_if_clause"
2771 }
2772 },
2773 {
2774 "type": "CHOICE",
2775 "members": [
2776 {
2777 "type": "SYMBOL",
2778 "name": "else_clause"
2779 },
2780 {
2781 "type": "BLANK"
2782 }
2783 ]
2784 }
2785 ]
2786 }
2787 },
2788 "else_if_clause": {
2789 "type": "SEQ",
2790 "members": [
2791 {
2792 "type": "STRING",
2793 "value": "else"
2794 },
2795 {
2796 "type": "STRING",
2797 "value": "if"
2798 },
2799 {
2800 "type": "CHOICE",
2801 "members": [
2802 {
2803 "type": "SEQ",
2804 "members": [
2805 {
2806 "type": "CHOICE",
2807 "members": [
2808 {
2809 "type": "FIELD",
2810 "name": "initializer",
2811 "content": {
2812 "type": "SYMBOL",
2813 "name": "assignment_statement"
2814 }
2815 },
2816 {
2817 "type": "BLANK"
2818 }
2819 ]
2820 },
2821 {
2822 "type": "STRING",
2823 "value": ";"
2824 }
2825 ]
2826 },
2827 {
2828 "type": "BLANK"
2829 }
2830 ]
2831 },
2832 {
2833 "type": "FIELD",
2834 "name": "condition",
2835 "content": {
2836 "type": "SYMBOL",
2837 "name": "expression"
2838 }
2839 },
2840 {
2841 "type": "CHOICE",
2842 "members": [
2843 {
2844 "type": "FIELD",
2845 "name": "consequence",
2846 "content": {
2847 "type": "SYMBOL",
2848 "name": "block"
2849 }
2850 },
2851 {
2852 "type": "SEQ",
2853 "members": [
2854 {
2855 "type": "STRING",
2856 "value": "do"
2857 },
2858 {
2859 "type": "FIELD",
2860 "name": "consequence",
2861 "content": {
2862 "type": "SYMBOL",
2863 "name": "statement"
2864 }
2865 }
2866 ]
2867 }
2868 ]
2869 }
2870 ]
2871 },
2872 "else_clause": {
2873 "type": "SEQ",
2874 "members": [
2875 {
2876 "type": "STRING",
2877 "value": "else"
2878 },
2879 {
2880 "type": "CHOICE",
2881 "members": [
2882 {
2883 "type": "FIELD",
2884 "name": "consequence",
2885 "content": {
2886 "type": "SYMBOL",
2887 "name": "block"
2888 }
2889 },
2890 {
2891 "type": "SEQ",
2892 "members": [
2893 {
2894 "type": "STRING",
2895 "value": "do"
2896 },
2897 {
2898 "type": "FIELD",
2899 "name": "consequence",
2900 "content": {
2901 "type": "SYMBOL",
2902 "name": "statement"
2903 }
2904 }
2905 ]
2906 }
2907 ]
2908 }
2909 ]
2910 },
2911 "when_statement": {
2912 "type": "PREC_RIGHT",
2913 "value": 0,
2914 "content": {
2915 "type": "SEQ",
2916 "members": [
2917 {
2918 "type": "STRING",
2919 "value": "when"
2920 },
2921 {
2922 "type": "SYMBOL",
2923 "name": "expression"
2924 },
2925 {
2926 "type": "CHOICE",
2927 "members": [
2928 {
2929 "type": "SYMBOL",
2930 "name": "block"
2931 },
2932 {
2933 "type": "SEQ",
2934 "members": [
2935 {
2936 "type": "STRING",
2937 "value": "do"
2938 },
2939 {
2940 "type": "SYMBOL",
2941 "name": "statement"
2942 }
2943 ]
2944 }
2945 ]
2946 },
2947 {
2948 "type": "REPEAT",
2949 "content": {
2950 "type": "SYMBOL",
2951 "name": "else_when_clause"
2952 }
2953 },
2954 {
2955 "type": "CHOICE",
2956 "members": [
2957 {
2958 "type": "SYMBOL",
2959 "name": "else_clause"
2960 },
2961 {
2962 "type": "BLANK"
2963 }
2964 ]
2965 }
2966 ]
2967 }
2968 },
2969 "else_when_clause": {
2970 "type": "SEQ",
2971 "members": [
2972 {
2973 "type": "STRING",
2974 "value": "else"
2975 },
2976 {
2977 "type": "STRING",
2978 "value": "when"
2979 },
2980 {
2981 "type": "SYMBOL",
2982 "name": "expression"
2983 },
2984 {
2985 "type": "SYMBOL",
2986 "name": "block"
2987 }
2988 ]
2989 },
2990 "for_statement": {
2991 "type": "SEQ",
2992 "members": [
2993 {
2994 "type": "STRING",
2995 "value": "for"
2996 },
2997 {
2998 "type": "CHOICE",
2999 "members": [
3000 {
3001 "type": "CHOICE",
3002 "members": [
3003 {
3004 "type": "SEQ",
3005 "members": [
3006 {
3007 "type": "CHOICE",
3008 "members": [
3009 {
3010 "type": "SEQ",
3011 "members": [
3012 {
3013 "type": "CHOICE",
3014 "members": [
3015 {
3016 "type": "FIELD",
3017 "name": "initializer",
3018 "content": {
3019 "type": "CHOICE",
3020 "members": [
3021 {
3022 "type": "SYMBOL",
3023 "name": "assignment_statement"
3024 },
3025 {
3026 "type": "SYMBOL",
3027 "name": "update_statement"
3028 },
3029 {
3030 "type": "SYMBOL",
3031 "name": "var_declaration"
3032 }
3033 ]
3034 }
3035 },
3036 {
3037 "type": "BLANK"
3038 }
3039 ]
3040 },
3041 {
3042 "type": "STRING",
3043 "value": ";"
3044 }
3045 ]
3046 },
3047 {
3048 "type": "BLANK"
3049 }
3050 ]
3051 },
3052 {
3053 "type": "CHOICE",
3054 "members": [
3055 {
3056 "type": "FIELD",
3057 "name": "condition",
3058 "content": {
3059 "type": "SYMBOL",
3060 "name": "expression"
3061 }
3062 },
3063 {
3064 "type": "BLANK"
3065 }
3066 ]
3067 },
3068 {
3069 "type": "CHOICE",
3070 "members": [
3071 {
3072 "type": "SEQ",
3073 "members": [
3074 {
3075 "type": "STRING",
3076 "value": ";"
3077 },
3078 {
3079 "type": "CHOICE",
3080 "members": [
3081 {
3082 "type": "FIELD",
3083 "name": "post",
3084 "content": {
3085 "type": "CHOICE",
3086 "members": [
3087 {
3088 "type": "SYMBOL",
3089 "name": "update_statement"
3090 },
3091 {
3092 "type": "ALIAS",
3093 "content": {
3094 "type": "SYMBOL",
3095 "name": "_simple_assignment_statement"
3096 },
3097 "named": true,
3098 "value": "assignment_statement"
3099 }
3100 ]
3101 }
3102 },
3103 {
3104 "type": "BLANK"
3105 }
3106 ]
3107 }
3108 ]
3109 },
3110 {
3111 "type": "BLANK"
3112 }
3113 ]
3114 }
3115 ]
3116 },
3117 {
3118 "type": "SYMBOL",
3119 "name": "_for_in_expression"
3120 }
3121 ]
3122 },
3123 {
3124 "type": "BLANK"
3125 }
3126 ]
3127 },
3128 {
3129 "type": "FIELD",
3130 "name": "consequence",
3131 "content": {
3132 "type": "CHOICE",
3133 "members": [
3134 {
3135 "type": "SYMBOL",
3136 "name": "block"
3137 },
3138 {
3139 "type": "SEQ",
3140 "members": [
3141 {
3142 "type": "STRING",
3143 "value": "do"
3144 },
3145 {
3146 "type": "SYMBOL",
3147 "name": "statement"
3148 }
3149 ]
3150 }
3151 ]
3152 }
3153 }
3154 ]
3155 },
3156 "_for_in_expression": {
3157 "type": "SEQ",
3158 "members": [
3159 {
3160 "type": "CHOICE",
3161 "members": [
3162 {
3163 "type": "SEQ",
3164 "members": [
3165 {
3166 "type": "SYMBOL",
3167 "name": "expression"
3168 },
3169 {
3170 "type": "REPEAT",
3171 "content": {
3172 "type": "SEQ",
3173 "members": [
3174 {
3175 "type": "STRING",
3176 "value": ","
3177 },
3178 {
3179 "type": "SYMBOL",
3180 "name": "expression"
3181 }
3182 ]
3183 }
3184 }
3185 ]
3186 },
3187 {
3188 "type": "BLANK"
3189 }
3190 ]
3191 },
3192 {
3193 "type": "STRING",
3194 "value": "in"
3195 },
3196 {
3197 "type": "SYMBOL",
3198 "name": "expression"
3199 }
3200 ]
3201 },
3202 "_simple_assignment_statement": {
3203 "type": "SEQ",
3204 "members": [
3205 {
3206 "type": "CHOICE",
3207 "members": [
3208 {
3209 "type": "SYMBOL",
3210 "name": "attributes"
3211 },
3212 {
3213 "type": "BLANK"
3214 }
3215 ]
3216 },
3217 {
3218 "type": "SEQ",
3219 "members": [
3220 {
3221 "type": "SYMBOL",
3222 "name": "expression"
3223 },
3224 {
3225 "type": "REPEAT",
3226 "content": {
3227 "type": "SEQ",
3228 "members": [
3229 {
3230 "type": "STRING",
3231 "value": ","
3232 },
3233 {
3234 "type": "SYMBOL",
3235 "name": "expression"
3236 }
3237 ]
3238 }
3239 }
3240 ]
3241 },
3242 {
3243 "type": "CHOICE",
3244 "members": [
3245 {
3246 "type": "STRING",
3247 "value": "="
3248 },
3249 {
3250 "type": "STRING",
3251 "value": ":="
3252 }
3253 ]
3254 },
3255 {
3256 "type": "SEQ",
3257 "members": [
3258 {
3259 "type": "CHOICE",
3260 "members": [
3261 {
3262 "type": "SYMBOL",
3263 "name": "expression"
3264 }
3265 ]
3266 },
3267 {
3268 "type": "REPEAT",
3269 "content": {
3270 "type": "SEQ",
3271 "members": [
3272 {
3273 "type": "STRING",
3274 "value": ","
3275 },
3276 {
3277 "type": "CHOICE",
3278 "members": [
3279 {
3280 "type": "SYMBOL",
3281 "name": "expression"
3282 }
3283 ]
3284 }
3285 ]
3286 }
3287 }
3288 ]
3289 }
3290 ]
3291 },
3292 "switch_statement": {
3293 "type": "SEQ",
3294 "members": [
3295 {
3296 "type": "STRING",
3297 "value": "switch"
3298 },
3299 {
3300 "type": "CHOICE",
3301 "members": [
3302 {
3303 "type": "SEQ",
3304 "members": [
3305 {
3306 "type": "CHOICE",
3307 "members": [
3308 {
3309 "type": "STRING",
3310 "value": "in"
3311 },
3312 {
3313 "type": "BLANK"
3314 }
3315 ]
3316 },
3317 {
3318 "type": "FIELD",
3319 "name": "condition",
3320 "content": {
3321 "type": "CHOICE",
3322 "members": [
3323 {
3324 "type": "SYMBOL",
3325 "name": "expression"
3326 },
3327 {
3328 "type": "SEQ",
3329 "members": [
3330 {
3331 "type": "SYMBOL",
3332 "name": "assignment_statement"
3333 },
3334 {
3335 "type": "SYMBOL",
3336 "name": "_separator"
3337 },
3338 {
3339 "type": "CHOICE",
3340 "members": [
3341 {
3342 "type": "SYMBOL",
3343 "name": "expression"
3344 },
3345 {
3346 "type": "BLANK"
3347 }
3348 ]
3349 }
3350 ]
3351 }
3352 ]
3353 }
3354 }
3355 ]
3356 },
3357 {
3358 "type": "BLANK"
3359 }
3360 ]
3361 },
3362 {
3363 "type": "STRING",
3364 "value": "{"
3365 },
3366 {
3367 "type": "REPEAT",
3368 "content": {
3369 "type": "SYMBOL",
3370 "name": "switch_case"
3371 }
3372 },
3373 {
3374 "type": "STRING",
3375 "value": "}"
3376 }
3377 ]
3378 },
3379 "switch_case": {
3380 "type": "SEQ",
3381 "members": [
3382 {
3383 "type": "STRING",
3384 "value": "case"
3385 },
3386 {
3387 "type": "CHOICE",
3388 "members": [
3389 {
3390 "type": "SEQ",
3391 "members": [
3392 {
3393 "type": "FIELD",
3394 "name": "condition",
3395 "content": {
3396 "type": "CHOICE",
3397 "members": [
3398 {
3399 "type": "SYMBOL",
3400 "name": "expression"
3401 },
3402 {
3403 "type": "SYMBOL",
3404 "name": "array_type"
3405 },
3406 {
3407 "type": "SYMBOL",
3408 "name": "pointer_type"
3409 }
3410 ]
3411 }
3412 },
3413 {
3414 "type": "REPEAT",
3415 "content": {
3416 "type": "SEQ",
3417 "members": [
3418 {
3419 "type": "STRING",
3420 "value": ","
3421 },
3422 {
3423 "type": "FIELD",
3424 "name": "condition",
3425 "content": {
3426 "type": "CHOICE",
3427 "members": [
3428 {
3429 "type": "SYMBOL",
3430 "name": "expression"
3431 },
3432 {
3433 "type": "SYMBOL",
3434 "name": "array_type"
3435 },
3436 {
3437 "type": "SYMBOL",
3438 "name": "pointer_type"
3439 }
3440 ]
3441 }
3442 }
3443 ]
3444 }
3445 }
3446 ]
3447 },
3448 {
3449 "type": "BLANK"
3450 }
3451 ]
3452 },
3453 {
3454 "type": "STRING",
3455 "value": ":"
3456 },
3457 {
3458 "type": "CHOICE",
3459 "members": [
3460 {
3461 "type": "SEQ",
3462 "members": [
3463 {
3464 "type": "SEQ",
3465 "members": [
3466 {
3467 "type": "CHOICE",
3468 "members": [
3469 {
3470 "type": "SYMBOL",
3471 "name": "tag"
3472 },
3473 {
3474 "type": "BLANK"
3475 }
3476 ]
3477 },
3478 {
3479 "type": "SYMBOL",
3480 "name": "statement"
3481 }
3482 ]
3483 },
3484 {
3485 "type": "REPEAT",
3486 "content": {
3487 "type": "SEQ",
3488 "members": [
3489 {
3490 "type": "SYMBOL",
3491 "name": "_separator"
3492 },
3493 {
3494 "type": "CHOICE",
3495 "members": [
3496 {
3497 "type": "SEQ",
3498 "members": [
3499 {
3500 "type": "CHOICE",
3501 "members": [
3502 {
3503 "type": "SYMBOL",
3504 "name": "tag"
3505 },
3506 {
3507 "type": "BLANK"
3508 }
3509 ]
3510 },
3511 {
3512 "type": "SYMBOL",
3513 "name": "statement"
3514 }
3515 ]
3516 },
3517 {
3518 "type": "BLANK"
3519 }
3520 ]
3521 }
3522 ]
3523 }
3524 }
3525 ]
3526 },
3527 {
3528 "type": "BLANK"
3529 }
3530 ]
3531 }
3532 ]
3533 },
3534 "defer_statement": {
3535 "type": "SEQ",
3536 "members": [
3537 {
3538 "type": "STRING",
3539 "value": "defer"
3540 },
3541 {
3542 "type": "SYMBOL",
3543 "name": "statement"
3544 }
3545 ]
3546 },
3547 "break_statement": {
3548 "type": "SEQ",
3549 "members": [
3550 {
3551 "type": "STRING",
3552 "value": "break"
3553 },
3554 {
3555 "type": "CHOICE",
3556 "members": [
3557 {
3558 "type": "SYMBOL",
3559 "name": "identifier"
3560 },
3561 {
3562 "type": "BLANK"
3563 }
3564 ]
3565 }
3566 ]
3567 },
3568 "continue_statement": {
3569 "type": "SEQ",
3570 "members": [
3571 {
3572 "type": "STRING",
3573 "value": "continue"
3574 },
3575 {
3576 "type": "CHOICE",
3577 "members": [
3578 {
3579 "type": "SYMBOL",
3580 "name": "identifier"
3581 },
3582 {
3583 "type": "BLANK"
3584 }
3585 ]
3586 }
3587 ]
3588 },
3589 "fallthrough_statement": {
3590 "type": "STRING",
3591 "value": "fallthrough"
3592 },
3593 "var_declaration": {
3594 "type": "PREC_RIGHT",
3595 "value": 0,
3596 "content": {
3597 "type": "SEQ",
3598 "members": [
3599 {
3600 "type": "CHOICE",
3601 "members": [
3602 {
3603 "type": "SYMBOL",
3604 "name": "attributes"
3605 },
3606 {
3607 "type": "BLANK"
3608 }
3609 ]
3610 },
3611 {
3612 "type": "SEQ",
3613 "members": [
3614 {
3615 "type": "SYMBOL",
3616 "name": "expression"
3617 },
3618 {
3619 "type": "REPEAT",
3620 "content": {
3621 "type": "SEQ",
3622 "members": [
3623 {
3624 "type": "STRING",
3625 "value": ","
3626 },
3627 {
3628 "type": "SYMBOL",
3629 "name": "expression"
3630 }
3631 ]
3632 }
3633 }
3634 ]
3635 },
3636 {
3637 "type": "STRING",
3638 "value": ":"
3639 },
3640 {
3641 "type": "CHOICE",
3642 "members": [
3643 {
3644 "type": "SYMBOL",
3645 "name": "tag"
3646 },
3647 {
3648 "type": "BLANK"
3649 }
3650 ]
3651 },
3652 {
3653 "type": "CHOICE",
3654 "members": [
3655 {
3656 "type": "SEQ",
3657 "members": [
3658 {
3659 "type": "SYMBOL",
3660 "name": "type"
3661 },
3662 {
3663 "type": "CHOICE",
3664 "members": [
3665 {
3666 "type": "SEQ",
3667 "members": [
3668 {
3669 "type": "CHOICE",
3670 "members": [
3671 {
3672 "type": "STRING",
3673 "value": "="
3674 },
3675 {
3676 "type": "STRING",
3677 "value": ":"
3678 }
3679 ]
3680 },
3681 {
3682 "type": "SEQ",
3683 "members": [
3684 {
3685 "type": "SYMBOL",
3686 "name": "expression"
3687 },
3688 {
3689 "type": "REPEAT",
3690 "content": {
3691 "type": "SEQ",
3692 "members": [
3693 {
3694 "type": "STRING",
3695 "value": ","
3696 },
3697 {
3698 "type": "SYMBOL",
3699 "name": "expression"
3700 }
3701 ]
3702 }
3703 }
3704 ]
3705 }
3706 ]
3707 },
3708 {
3709 "type": "BLANK"
3710 }
3711 ]
3712 }
3713 ]
3714 }
3715 ]
3716 }
3717 ]
3718 }
3719 },
3720 "return_statement": {
3721 "type": "PREC_RIGHT",
3722 "value": 1,
3723 "content": {
3724 "type": "SEQ",
3725 "members": [
3726 {
3727 "type": "STRING",
3728 "value": "return"
3729 },
3730 {
3731 "type": "CHOICE",
3732 "members": [
3733 {
3734 "type": "SYMBOL",
3735 "name": "tag"
3736 },
3737 {
3738 "type": "BLANK"
3739 }
3740 ]
3741 },
3742 {
3743 "type": "CHOICE",
3744 "members": [
3745 {
3746 "type": "SEQ",
3747 "members": [
3748 {
3749 "type": "SEQ",
3750 "members": [
3751 {
3752 "type": "CHOICE",
3753 "members": [
3754 {
3755 "type": "SYMBOL",
3756 "name": "expression"
3757 },
3758 {
3759 "type": "SYMBOL",
3760 "name": "_procedure_type"
3761 }
3762 ]
3763 },
3764 {
3765 "type": "REPEAT",
3766 "content": {
3767 "type": "SEQ",
3768 "members": [
3769 {
3770 "type": "CHOICE",
3771 "members": [
3772 {
3773 "type": "STRING",
3774 "value": ","
3775 },
3776 {
3777 "type": "ALIAS",
3778 "content": {
3779 "type": "SYMBOL",
3780 "name": "_nl_comma"
3781 },
3782 "named": false,
3783 "value": ","
3784 }
3785 ]
3786 },
3787 {
3788 "type": "CHOICE",
3789 "members": [
3790 {
3791 "type": "SYMBOL",
3792 "name": "expression"
3793 },
3794 {
3795 "type": "SYMBOL",
3796 "name": "_procedure_type"
3797 }
3798 ]
3799 }
3800 ]
3801 }
3802 }
3803 ]
3804 },
3805 {
3806 "type": "CHOICE",
3807 "members": [
3808 {
3809 "type": "STRING",
3810 "value": ","
3811 },
3812 {
3813 "type": "BLANK"
3814 }
3815 ]
3816 }
3817 ]
3818 },
3819 {
3820 "type": "BLANK"
3821 }
3822 ]
3823 }
3824 ]
3825 }
3826 },
3827 "label_statement": {
3828 "type": "SEQ",
3829 "members": [
3830 {
3831 "type": "SYMBOL",
3832 "name": "expression"
3833 },
3834 {
3835 "type": "STRING",
3836 "value": ":"
3837 },
3838 {
3839 "type": "CHOICE",
3840 "members": [
3841 {
3842 "type": "SYMBOL",
3843 "name": "if_statement"
3844 },
3845 {
3846 "type": "SYMBOL",
3847 "name": "for_statement"
3848 },
3849 {
3850 "type": "SYMBOL",
3851 "name": "switch_statement"
3852 },
3853 {
3854 "type": "SYMBOL",
3855 "name": "block"
3856 }
3857 ]
3858 }
3859 ]
3860 },
3861 "using_statement": {
3862 "type": "SEQ",
3863 "members": [
3864 {
3865 "type": "STRING",
3866 "value": "using"
3867 },
3868 {
3869 "type": "SYMBOL",
3870 "name": "expression"
3871 }
3872 ]
3873 },
3874 "expression": {
3875 "type": "PREC_LEFT",
3876 "value": 0,
3877 "content": {
3878 "type": "CHOICE",
3879 "members": [
3880 {
3881 "type": "SYMBOL",
3882 "name": "_expression_no_tag"
3883 },
3884 {
3885 "type": "SYMBOL",
3886 "name": "tag"
3887 }
3888 ]
3889 }
3890 },
3891 "_expression_no_tag": {
3892 "type": "CHOICE",
3893 "members": [
3894 {
3895 "type": "SYMBOL",
3896 "name": "unary_expression"
3897 },
3898 {
3899 "type": "SYMBOL",
3900 "name": "binary_expression"
3901 },
3902 {
3903 "type": "SYMBOL",
3904 "name": "ternary_expression"
3905 },
3906 {
3907 "type": "SYMBOL",
3908 "name": "call_expression"
3909 },
3910 {
3911 "type": "SYMBOL",
3912 "name": "selector_call_expression"
3913 },
3914 {
3915 "type": "SYMBOL",
3916 "name": "member_expression"
3917 },
3918 {
3919 "type": "SYMBOL",
3920 "name": "index_expression"
3921 },
3922 {
3923 "type": "SYMBOL",
3924 "name": "slice_expression"
3925 },
3926 {
3927 "type": "SYMBOL",
3928 "name": "range_expression"
3929 },
3930 {
3931 "type": "SYMBOL",
3932 "name": "cast_expression"
3933 },
3934 {
3935 "type": "SYMBOL",
3936 "name": "parenthesized_expression"
3937 },
3938 {
3939 "type": "SYMBOL",
3940 "name": "in_expression"
3941 },
3942 {
3943 "type": "SYMBOL",
3944 "name": "variadic_expression"
3945 },
3946 {
3947 "type": "SYMBOL",
3948 "name": "or_return_expression"
3949 },
3950 {
3951 "type": "SYMBOL",
3952 "name": "or_continue_expression"
3953 },
3954 {
3955 "type": "SYMBOL",
3956 "name": "or_break_expression"
3957 },
3958 {
3959 "type": "SYMBOL",
3960 "name": "identifier"
3961 },
3962 {
3963 "type": "SYMBOL",
3964 "name": "address"
3965 },
3966 {
3967 "type": "SYMBOL",
3968 "name": "map_type"
3969 },
3970 {
3971 "type": "SYMBOL",
3972 "name": "distinct_type"
3973 },
3974 {
3975 "type": "SYMBOL",
3976 "name": "matrix_type"
3977 },
3978 {
3979 "type": "SYMBOL",
3980 "name": "literal"
3981 },
3982 {
3983 "type": "STRING",
3984 "value": "?"
3985 }
3986 ]
3987 },
3988 "unary_expression": {
3989 "type": "PREC_RIGHT",
3990 "value": 16,
3991 "content": {
3992 "type": "SEQ",
3993 "members": [
3994 {
3995 "type": "FIELD",
3996 "name": "operator",
3997 "content": {
3998 "type": "CHOICE",
3999 "members": [
4000 {
4001 "type": "STRING",
4002 "value": "+"
4003 },
4004 {
4005 "type": "STRING",
4006 "value": "-"
4007 },
4008 {
4009 "type": "STRING",
4010 "value": "~"
4011 },
4012 {
4013 "type": "STRING",
4014 "value": "!"
4015 },
4016 {
4017 "type": "STRING",
4018 "value": "&"
4019 }
4020 ]
4021 }
4022 },
4023 {
4024 "type": "FIELD",
4025 "name": "argument",
4026 "content": {
4027 "type": "SYMBOL",
4028 "name": "expression"
4029 }
4030 }
4031 ]
4032 }
4033 },
4034 "binary_expression": {
4035 "type": "CHOICE",
4036 "members": [
4037 {
4038 "type": "PREC_LEFT",
4039 "value": 3,
4040 "content": {
4041 "type": "SEQ",
4042 "members": [
4043 {
4044 "type": "FIELD",
4045 "name": "left",
4046 "content": {
4047 "type": "SYMBOL",
4048 "name": "expression"
4049 }
4050 },
4051 {
4052 "type": "FIELD",
4053 "name": "operator",
4054 "content": {
4055 "type": "STRING",
4056 "value": "||"
4057 }
4058 },
4059 {
4060 "type": "FIELD",
4061 "name": "right",
4062 "content": {
4063 "type": "SYMBOL",
4064 "name": "expression"
4065 }
4066 }
4067 ]
4068 }
4069 },
4070 {
4071 "type": "PREC_LEFT",
4072 "value": 3,
4073 "content": {
4074 "type": "SEQ",
4075 "members": [
4076 {
4077 "type": "FIELD",
4078 "name": "left",
4079 "content": {
4080 "type": "SYMBOL",
4081 "name": "expression"
4082 }
4083 },
4084 {
4085 "type": "FIELD",
4086 "name": "operator",
4087 "content": {
4088 "type": "STRING",
4089 "value": "or_else"
4090 }
4091 },
4092 {
4093 "type": "FIELD",
4094 "name": "right",
4095 "content": {
4096 "type": "SYMBOL",
4097 "name": "expression"
4098 }
4099 }
4100 ]
4101 }
4102 },
4103 {
4104 "type": "PREC_LEFT",
4105 "value": 4,
4106 "content": {
4107 "type": "SEQ",
4108 "members": [
4109 {
4110 "type": "FIELD",
4111 "name": "left",
4112 "content": {
4113 "type": "SYMBOL",
4114 "name": "expression"
4115 }
4116 },
4117 {
4118 "type": "FIELD",
4119 "name": "operator",
4120 "content": {
4121 "type": "STRING",
4122 "value": "&&"
4123 }
4124 },
4125 {
4126 "type": "FIELD",
4127 "name": "right",
4128 "content": {
4129 "type": "SYMBOL",
4130 "name": "expression"
4131 }
4132 }
4133 ]
4134 }
4135 },
4136 {
4137 "type": "PREC_LEFT",
4138 "value": 5,
4139 "content": {
4140 "type": "SEQ",
4141 "members": [
4142 {
4143 "type": "FIELD",
4144 "name": "left",
4145 "content": {
4146 "type": "SYMBOL",
4147 "name": "expression"
4148 }
4149 },
4150 {
4151 "type": "FIELD",
4152 "name": "operator",
4153 "content": {
4154 "type": "STRING",
4155 "value": ">"
4156 }
4157 },
4158 {
4159 "type": "FIELD",
4160 "name": "right",
4161 "content": {
4162 "type": "SYMBOL",
4163 "name": "expression"
4164 }
4165 }
4166 ]
4167 }
4168 },
4169 {
4170 "type": "PREC_LEFT",
4171 "value": 5,
4172 "content": {
4173 "type": "SEQ",
4174 "members": [
4175 {
4176 "type": "FIELD",
4177 "name": "left",
4178 "content": {
4179 "type": "SYMBOL",
4180 "name": "expression"
4181 }
4182 },
4183 {
4184 "type": "FIELD",
4185 "name": "operator",
4186 "content": {
4187 "type": "STRING",
4188 "value": ">="
4189 }
4190 },
4191 {
4192 "type": "FIELD",
4193 "name": "right",
4194 "content": {
4195 "type": "SYMBOL",
4196 "name": "expression"
4197 }
4198 }
4199 ]
4200 }
4201 },
4202 {
4203 "type": "PREC_LEFT",
4204 "value": 5,
4205 "content": {
4206 "type": "SEQ",
4207 "members": [
4208 {
4209 "type": "FIELD",
4210 "name": "left",
4211 "content": {
4212 "type": "SYMBOL",
4213 "name": "expression"
4214 }
4215 },
4216 {
4217 "type": "FIELD",
4218 "name": "operator",
4219 "content": {
4220 "type": "STRING",
4221 "value": "<="
4222 }
4223 },
4224 {
4225 "type": "FIELD",
4226 "name": "right",
4227 "content": {
4228 "type": "SYMBOL",
4229 "name": "expression"
4230 }
4231 }
4232 ]
4233 }
4234 },
4235 {
4236 "type": "PREC_LEFT",
4237 "value": 5,
4238 "content": {
4239 "type": "SEQ",
4240 "members": [
4241 {
4242 "type": "FIELD",
4243 "name": "left",
4244 "content": {
4245 "type": "SYMBOL",
4246 "name": "expression"
4247 }
4248 },
4249 {
4250 "type": "FIELD",
4251 "name": "operator",
4252 "content": {
4253 "type": "STRING",
4254 "value": "<"
4255 }
4256 },
4257 {
4258 "type": "FIELD",
4259 "name": "right",
4260 "content": {
4261 "type": "SYMBOL",
4262 "name": "expression"
4263 }
4264 }
4265 ]
4266 }
4267 },
4268 {
4269 "type": "PREC_LEFT",
4270 "value": 6,
4271 "content": {
4272 "type": "SEQ",
4273 "members": [
4274 {
4275 "type": "FIELD",
4276 "name": "left",
4277 "content": {
4278 "type": "SYMBOL",
4279 "name": "expression"
4280 }
4281 },
4282 {
4283 "type": "FIELD",
4284 "name": "operator",
4285 "content": {
4286 "type": "STRING",
4287 "value": "=="
4288 }
4289 },
4290 {
4291 "type": "FIELD",
4292 "name": "right",
4293 "content": {
4294 "type": "SYMBOL",
4295 "name": "expression"
4296 }
4297 }
4298 ]
4299 }
4300 },
4301 {
4302 "type": "PREC_LEFT",
4303 "value": 6,
4304 "content": {
4305 "type": "SEQ",
4306 "members": [
4307 {
4308 "type": "FIELD",
4309 "name": "left",
4310 "content": {
4311 "type": "SYMBOL",
4312 "name": "expression"
4313 }
4314 },
4315 {
4316 "type": "FIELD",
4317 "name": "operator",
4318 "content": {
4319 "type": "STRING",
4320 "value": "!="
4321 }
4322 },
4323 {
4324 "type": "FIELD",
4325 "name": "right",
4326 "content": {
4327 "type": "SYMBOL",
4328 "name": "expression"
4329 }
4330 }
4331 ]
4332 }
4333 },
4334 {
4335 "type": "PREC_LEFT",
4336 "value": 6,
4337 "content": {
4338 "type": "SEQ",
4339 "members": [
4340 {
4341 "type": "FIELD",
4342 "name": "left",
4343 "content": {
4344 "type": "SYMBOL",
4345 "name": "expression"
4346 }
4347 },
4348 {
4349 "type": "FIELD",
4350 "name": "operator",
4351 "content": {
4352 "type": "STRING",
4353 "value": "~="
4354 }
4355 },
4356 {
4357 "type": "FIELD",
4358 "name": "right",
4359 "content": {
4360 "type": "SYMBOL",
4361 "name": "expression"
4362 }
4363 }
4364 ]
4365 }
4366 },
4367 {
4368 "type": "PREC_LEFT",
4369 "value": 7,
4370 "content": {
4371 "type": "SEQ",
4372 "members": [
4373 {
4374 "type": "FIELD",
4375 "name": "left",
4376 "content": {
4377 "type": "SYMBOL",
4378 "name": "expression"
4379 }
4380 },
4381 {
4382 "type": "FIELD",
4383 "name": "operator",
4384 "content": {
4385 "type": "STRING",
4386 "value": "|"
4387 }
4388 },
4389 {
4390 "type": "FIELD",
4391 "name": "right",
4392 "content": {
4393 "type": "SYMBOL",
4394 "name": "expression"
4395 }
4396 }
4397 ]
4398 }
4399 },
4400 {
4401 "type": "PREC_LEFT",
4402 "value": 8,
4403 "content": {
4404 "type": "SEQ",
4405 "members": [
4406 {
4407 "type": "FIELD",
4408 "name": "left",
4409 "content": {
4410 "type": "SYMBOL",
4411 "name": "expression"
4412 }
4413 },
4414 {
4415 "type": "FIELD",
4416 "name": "operator",
4417 "content": {
4418 "type": "STRING",
4419 "value": "~"
4420 }
4421 },
4422 {
4423 "type": "FIELD",
4424 "name": "right",
4425 "content": {
4426 "type": "SYMBOL",
4427 "name": "expression"
4428 }
4429 }
4430 ]
4431 }
4432 },
4433 {
4434 "type": "PREC_LEFT",
4435 "value": 9,
4436 "content": {
4437 "type": "SEQ",
4438 "members": [
4439 {
4440 "type": "FIELD",
4441 "name": "left",
4442 "content": {
4443 "type": "SYMBOL",
4444 "name": "expression"
4445 }
4446 },
4447 {
4448 "type": "FIELD",
4449 "name": "operator",
4450 "content": {
4451 "type": "STRING",
4452 "value": "&"
4453 }
4454 },
4455 {
4456 "type": "FIELD",
4457 "name": "right",
4458 "content": {
4459 "type": "SYMBOL",
4460 "name": "expression"
4461 }
4462 }
4463 ]
4464 }
4465 },
4466 {
4467 "type": "PREC_LEFT",
4468 "value": 10,
4469 "content": {
4470 "type": "SEQ",
4471 "members": [
4472 {
4473 "type": "FIELD",
4474 "name": "left",
4475 "content": {
4476 "type": "SYMBOL",
4477 "name": "expression"
4478 }
4479 },
4480 {
4481 "type": "FIELD",
4482 "name": "operator",
4483 "content": {
4484 "type": "STRING",
4485 "value": "&~"
4486 }
4487 },
4488 {
4489 "type": "FIELD",
4490 "name": "right",
4491 "content": {
4492 "type": "SYMBOL",
4493 "name": "expression"
4494 }
4495 }
4496 ]
4497 }
4498 },
4499 {
4500 "type": "PREC_LEFT",
4501 "value": 11,
4502 "content": {
4503 "type": "SEQ",
4504 "members": [
4505 {
4506 "type": "FIELD",
4507 "name": "left",
4508 "content": {
4509 "type": "SYMBOL",
4510 "name": "expression"
4511 }
4512 },
4513 {
4514 "type": "FIELD",
4515 "name": "operator",
4516 "content": {
4517 "type": "STRING",
4518 "value": "<<"
4519 }
4520 },
4521 {
4522 "type": "FIELD",
4523 "name": "right",
4524 "content": {
4525 "type": "SYMBOL",
4526 "name": "expression"
4527 }
4528 }
4529 ]
4530 }
4531 },
4532 {
4533 "type": "PREC_LEFT",
4534 "value": 11,
4535 "content": {
4536 "type": "SEQ",
4537 "members": [
4538 {
4539 "type": "FIELD",
4540 "name": "left",
4541 "content": {
4542 "type": "SYMBOL",
4543 "name": "expression"
4544 }
4545 },
4546 {
4547 "type": "FIELD",
4548 "name": "operator",
4549 "content": {
4550 "type": "STRING",
4551 "value": ">>"
4552 }
4553 },
4554 {
4555 "type": "FIELD",
4556 "name": "right",
4557 "content": {
4558 "type": "SYMBOL",
4559 "name": "expression"
4560 }
4561 }
4562 ]
4563 }
4564 },
4565 {
4566 "type": "PREC_LEFT",
4567 "value": 12,
4568 "content": {
4569 "type": "SEQ",
4570 "members": [
4571 {
4572 "type": "FIELD",
4573 "name": "left",
4574 "content": {
4575 "type": "SYMBOL",
4576 "name": "expression"
4577 }
4578 },
4579 {
4580 "type": "FIELD",
4581 "name": "operator",
4582 "content": {
4583 "type": "STRING",
4584 "value": "+"
4585 }
4586 },
4587 {
4588 "type": "FIELD",
4589 "name": "right",
4590 "content": {
4591 "type": "SYMBOL",
4592 "name": "expression"
4593 }
4594 }
4595 ]
4596 }
4597 },
4598 {
4599 "type": "PREC_LEFT",
4600 "value": 12,
4601 "content": {
4602 "type": "SEQ",
4603 "members": [
4604 {
4605 "type": "FIELD",
4606 "name": "left",
4607 "content": {
4608 "type": "SYMBOL",
4609 "name": "expression"
4610 }
4611 },
4612 {
4613 "type": "FIELD",
4614 "name": "operator",
4615 "content": {
4616 "type": "STRING",
4617 "value": "-"
4618 }
4619 },
4620 {
4621 "type": "FIELD",
4622 "name": "right",
4623 "content": {
4624 "type": "SYMBOL",
4625 "name": "expression"
4626 }
4627 }
4628 ]
4629 }
4630 },
4631 {
4632 "type": "PREC_LEFT",
4633 "value": 13,
4634 "content": {
4635 "type": "SEQ",
4636 "members": [
4637 {
4638 "type": "FIELD",
4639 "name": "left",
4640 "content": {
4641 "type": "SYMBOL",
4642 "name": "expression"
4643 }
4644 },
4645 {
4646 "type": "FIELD",
4647 "name": "operator",
4648 "content": {
4649 "type": "STRING",
4650 "value": "*"
4651 }
4652 },
4653 {
4654 "type": "FIELD",
4655 "name": "right",
4656 "content": {
4657 "type": "SYMBOL",
4658 "name": "expression"
4659 }
4660 }
4661 ]
4662 }
4663 },
4664 {
4665 "type": "PREC_LEFT",
4666 "value": 13,
4667 "content": {
4668 "type": "SEQ",
4669 "members": [
4670 {
4671 "type": "FIELD",
4672 "name": "left",
4673 "content": {
4674 "type": "SYMBOL",
4675 "name": "expression"
4676 }
4677 },
4678 {
4679 "type": "FIELD",
4680 "name": "operator",
4681 "content": {
4682 "type": "STRING",
4683 "value": "/"
4684 }
4685 },
4686 {
4687 "type": "FIELD",
4688 "name": "right",
4689 "content": {
4690 "type": "SYMBOL",
4691 "name": "expression"
4692 }
4693 }
4694 ]
4695 }
4696 },
4697 {
4698 "type": "PREC_LEFT",
4699 "value": 13,
4700 "content": {
4701 "type": "SEQ",
4702 "members": [
4703 {
4704 "type": "FIELD",
4705 "name": "left",
4706 "content": {
4707 "type": "SYMBOL",
4708 "name": "expression"
4709 }
4710 },
4711 {
4712 "type": "FIELD",
4713 "name": "operator",
4714 "content": {
4715 "type": "STRING",
4716 "value": "%"
4717 }
4718 },
4719 {
4720 "type": "FIELD",
4721 "name": "right",
4722 "content": {
4723 "type": "SYMBOL",
4724 "name": "expression"
4725 }
4726 }
4727 ]
4728 }
4729 },
4730 {
4731 "type": "PREC_LEFT",
4732 "value": 13,
4733 "content": {
4734 "type": "SEQ",
4735 "members": [
4736 {
4737 "type": "FIELD",
4738 "name": "left",
4739 "content": {
4740 "type": "SYMBOL",
4741 "name": "expression"
4742 }
4743 },
4744 {
4745 "type": "FIELD",
4746 "name": "operator",
4747 "content": {
4748 "type": "STRING",
4749 "value": "%%"
4750 }
4751 },
4752 {
4753 "type": "FIELD",
4754 "name": "right",
4755 "content": {
4756 "type": "SYMBOL",
4757 "name": "expression"
4758 }
4759 }
4760 ]
4761 }
4762 }
4763 ]
4764 },
4765 "ternary_expression": {
4766 "type": "PREC_RIGHT",
4767 "value": 0,
4768 "content": {
4769 "type": "SEQ",
4770 "members": [
4771 {
4772 "type": "FIELD",
4773 "name": "condition",
4774 "content": {
4775 "type": "CHOICE",
4776 "members": [
4777 {
4778 "type": "SYMBOL",
4779 "name": "_expression_no_tag"
4780 },
4781 {
4782 "type": "SYMBOL",
4783 "name": "struct"
4784 }
4785 ]
4786 }
4787 },
4788 {
4789 "type": "CHOICE",
4790 "members": [
4791 {
4792 "type": "PREC",
4793 "value": 2,
4794 "content": {
4795 "type": "SEQ",
4796 "members": [
4797 {
4798 "type": "STRING",
4799 "value": "?"
4800 },
4801 {
4802 "type": "FIELD",
4803 "name": "consequence",
4804 "content": {
4805 "type": "SYMBOL",
4806 "name": "expression"
4807 }
4808 },
4809 {
4810 "type": "STRING",
4811 "value": ":"
4812 },
4813 {
4814 "type": "FIELD",
4815 "name": "alternative",
4816 "content": {
4817 "type": "SYMBOL",
4818 "name": "expression"
4819 }
4820 }
4821 ]
4822 }
4823 },
4824 {
4825 "type": "SEQ",
4826 "members": [
4827 {
4828 "type": "CHOICE",
4829 "members": [
4830 {
4831 "type": "STRING",
4832 "value": "if"
4833 },
4834 {
4835 "type": "STRING",
4836 "value": "when"
4837 }
4838 ]
4839 },
4840 {
4841 "type": "FIELD",
4842 "name": "consequence",
4843 "content": {
4844 "type": "SYMBOL",
4845 "name": "expression"
4846 }
4847 },
4848 {
4849 "type": "STRING",
4850 "value": "else"
4851 },
4852 {
4853 "type": "FIELD",
4854 "name": "alternative",
4855 "content": {
4856 "type": "SYMBOL",
4857 "name": "expression"
4858 }
4859 }
4860 ]
4861 }
4862 ]
4863 }
4864 ]
4865 }
4866 },
4867 "call_expression": {
4868 "type": "PREC_LEFT",
4869 "value": 17,
4870 "content": {
4871 "type": "SEQ",
4872 "members": [
4873 {
4874 "type": "FIELD",
4875 "name": "function",
4876 "content": {
4877 "type": "CHOICE",
4878 "members": [
4879 {
4880 "type": "SEQ",
4881 "members": [
4882 {
4883 "type": "SYMBOL",
4884 "name": "tag"
4885 },
4886 {
4887 "type": "SYMBOL",
4888 "name": "identifier"
4889 }
4890 ]
4891 },
4892 {
4893 "type": "SYMBOL",
4894 "name": "_expression_no_tag"
4895 },
4896 {
4897 "type": "SYMBOL",
4898 "name": "tag"
4899 }
4900 ]
4901 }
4902 },
4903 {
4904 "type": "STRING",
4905 "value": "("
4906 },
4907 {
4908 "type": "CHOICE",
4909 "members": [
4910 {
4911 "type": "SEQ",
4912 "members": [
4913 {
4914 "type": "SEQ",
4915 "members": [
4916 {
4917 "type": "SEQ",
4918 "members": [
4919 {
4920 "type": "FIELD",
4921 "name": "argument",
4922 "content": {
4923 "type": "CHOICE",
4924 "members": [
4925 {
4926 "type": "SYMBOL",
4927 "name": "expression"
4928 },
4929 {
4930 "type": "SYMBOL",
4931 "name": "array_type"
4932 },
4933 {
4934 "type": "SYMBOL",
4935 "name": "struct_type"
4936 },
4937 {
4938 "type": "SYMBOL",
4939 "name": "pointer_type"
4940 },
4941 {
4942 "type": "SYMBOL",
4943 "name": "procedure"
4944 }
4945 ]
4946 }
4947 },
4948 {
4949 "type": "CHOICE",
4950 "members": [
4951 {
4952 "type": "SEQ",
4953 "members": [
4954 {
4955 "type": "STRING",
4956 "value": "="
4957 },
4958 {
4959 "type": "CHOICE",
4960 "members": [
4961 {
4962 "type": "SYMBOL",
4963 "name": "expression"
4964 }
4965 ]
4966 }
4967 ]
4968 },
4969 {
4970 "type": "BLANK"
4971 }
4972 ]
4973 }
4974 ]
4975 },
4976 {
4977 "type": "REPEAT",
4978 "content": {
4979 "type": "SEQ",
4980 "members": [
4981 {
4982 "type": "STRING",
4983 "value": ","
4984 },
4985 {
4986 "type": "SEQ",
4987 "members": [
4988 {
4989 "type": "FIELD",
4990 "name": "argument",
4991 "content": {
4992 "type": "CHOICE",
4993 "members": [
4994 {
4995 "type": "SYMBOL",
4996 "name": "expression"
4997 },
4998 {
4999 "type": "SYMBOL",
5000 "name": "array_type"
5001 },
5002 {
5003 "type": "SYMBOL",
5004 "name": "struct_type"
5005 },
5006 {
5007 "type": "SYMBOL",
5008 "name": "pointer_type"
5009 },
5010 {
5011 "type": "SYMBOL",
5012 "name": "procedure"
5013 }
5014 ]
5015 }
5016 },
5017 {
5018 "type": "CHOICE",
5019 "members": [
5020 {
5021 "type": "SEQ",
5022 "members": [
5023 {
5024 "type": "STRING",
5025 "value": "="
5026 },
5027 {
5028 "type": "CHOICE",
5029 "members": [
5030 {
5031 "type": "SYMBOL",
5032 "name": "expression"
5033 }
5034 ]
5035 }
5036 ]
5037 },
5038 {
5039 "type": "BLANK"
5040 }
5041 ]
5042 }
5043 ]
5044 }
5045 ]
5046 }
5047 }
5048 ]
5049 },
5050 {
5051 "type": "CHOICE",
5052 "members": [
5053 {
5054 "type": "STRING",
5055 "value": ","
5056 },
5057 {
5058 "type": "BLANK"
5059 }
5060 ]
5061 }
5062 ]
5063 },
5064 {
5065 "type": "BLANK"
5066 }
5067 ]
5068 },
5069 {
5070 "type": "STRING",
5071 "value": ")"
5072 }
5073 ]
5074 }
5075 },
5076 "selector_call_expression": {
5077 "type": "PREC_LEFT",
5078 "value": 17,
5079 "content": {
5080 "type": "SEQ",
5081 "members": [
5082 {
5083 "type": "FIELD",
5084 "name": "function",
5085 "content": {
5086 "type": "SYMBOL",
5087 "name": "expression"
5088 }
5089 },
5090 {
5091 "type": "STRING",
5092 "value": "->"
5093 },
5094 {
5095 "type": "SYMBOL",
5096 "name": "call_expression"
5097 }
5098 ]
5099 }
5100 },
5101 "member_expression": {
5102 "type": "PREC_LEFT",
5103 "value": 18,
5104 "content": {
5105 "type": "SEQ",
5106 "members": [
5107 {
5108 "type": "CHOICE",
5109 "members": [
5110 {
5111 "type": "SYMBOL",
5112 "name": "expression"
5113 },
5114 {
5115 "type": "BLANK"
5116 }
5117 ]
5118 },
5119 {
5120 "type": "STRING",
5121 "value": "."
5122 },
5123 {
5124 "type": "SYMBOL",
5125 "name": "expression"
5126 }
5127 ]
5128 }
5129 },
5130 "index_expression": {
5131 "type": "PREC_LEFT",
5132 "value": 18,
5133 "content": {
5134 "type": "SEQ",
5135 "members": [
5136 {
5137 "type": "SYMBOL",
5138 "name": "expression"
5139 },
5140 {
5141 "type": "STRING",
5142 "value": "["
5143 },
5144 {
5145 "type": "SYMBOL",
5146 "name": "expression"
5147 },
5148 {
5149 "type": "CHOICE",
5150 "members": [
5151 {
5152 "type": "SEQ",
5153 "members": [
5154 {
5155 "type": "STRING",
5156 "value": ","
5157 },
5158 {
5159 "type": "SYMBOL",
5160 "name": "expression"
5161 }
5162 ]
5163 },
5164 {
5165 "type": "BLANK"
5166 }
5167 ]
5168 },
5169 {
5170 "type": "STRING",
5171 "value": "]"
5172 }
5173 ]
5174 }
5175 },
5176 "slice_expression": {
5177 "type": "PREC_LEFT",
5178 "value": 18,
5179 "content": {
5180 "type": "SEQ",
5181 "members": [
5182 {
5183 "type": "SYMBOL",
5184 "name": "expression"
5185 },
5186 {
5187 "type": "STRING",
5188 "value": "["
5189 },
5190 {
5191 "type": "CHOICE",
5192 "members": [
5193 {
5194 "type": "FIELD",
5195 "name": "start",
5196 "content": {
5197 "type": "SYMBOL",
5198 "name": "expression"
5199 }
5200 },
5201 {
5202 "type": "BLANK"
5203 }
5204 ]
5205 },
5206 {
5207 "type": "STRING",
5208 "value": ":"
5209 },
5210 {
5211 "type": "CHOICE",
5212 "members": [
5213 {
5214 "type": "FIELD",
5215 "name": "end",
5216 "content": {
5217 "type": "SYMBOL",
5218 "name": "expression"
5219 }
5220 },
5221 {
5222 "type": "BLANK"
5223 }
5224 ]
5225 },
5226 {
5227 "type": "STRING",
5228 "value": "]"
5229 }
5230 ]
5231 }
5232 },
5233 "range_expression": {
5234 "type": "PREC_LEFT",
5235 "value": 18,
5236 "content": {
5237 "type": "SEQ",
5238 "members": [
5239 {
5240 "type": "SYMBOL",
5241 "name": "expression"
5242 },
5243 {
5244 "type": "CHOICE",
5245 "members": [
5246 {
5247 "type": "STRING",
5248 "value": "..="
5249 },
5250 {
5251 "type": "STRING",
5252 "value": "..<"
5253 }
5254 ]
5255 },
5256 {
5257 "type": "SYMBOL",
5258 "name": "expression"
5259 }
5260 ]
5261 }
5262 },
5263 "cast_expression": {
5264 "type": "PREC_LEFT",
5265 "value": 14,
5266 "content": {
5267 "type": "SEQ",
5268 "members": [
5269 {
5270 "type": "CHOICE",
5271 "members": [
5272 {
5273 "type": "SEQ",
5274 "members": [
5275 {
5276 "type": "STRING",
5277 "value": "("
5278 },
5279 {
5280 "type": "CHOICE",
5281 "members": [
5282 {
5283 "type": "SYMBOL",
5284 "name": "pointer_type"
5285 },
5286 {
5287 "type": "SYMBOL",
5288 "name": "array_type"
5289 },
5290 {
5291 "type": "SYMBOL",
5292 "name": "_procedure_type"
5293 }
5294 ]
5295 },
5296 {
5297 "type": "STRING",
5298 "value": ")"
5299 },
5300 {
5301 "type": "CHOICE",
5302 "members": [
5303 {
5304 "type": "SYMBOL",
5305 "name": "expression"
5306 },
5307 {
5308 "type": "BLANK"
5309 }
5310 ]
5311 }
5312 ]
5313 },
5314 {
5315 "type": "SEQ",
5316 "members": [
5317 {
5318 "type": "CHOICE",
5319 "members": [
5320 {
5321 "type": "STRING",
5322 "value": "cast"
5323 },
5324 {
5325 "type": "STRING",
5326 "value": "transmute"
5327 }
5328 ]
5329 },
5330 {
5331 "type": "STRING",
5332 "value": "("
5333 },
5334 {
5335 "type": "SYMBOL",
5336 "name": "type"
5337 },
5338 {
5339 "type": "STRING",
5340 "value": ")"
5341 },
5342 {
5343 "type": "SYMBOL",
5344 "name": "expression"
5345 }
5346 ]
5347 },
5348 {
5349 "type": "SEQ",
5350 "members": [
5351 {
5352 "type": "STRING",
5353 "value": "auto_cast"
5354 },
5355 {
5356 "type": "SYMBOL",
5357 "name": "expression"
5358 }
5359 ]
5360 }
5361 ]
5362 }
5363 ]
5364 }
5365 },
5366 "in_expression": {
5367 "type": "PREC_RIGHT",
5368 "value": -1,
5369 "content": {
5370 "type": "SEQ",
5371 "members": [
5372 {
5373 "type": "SYMBOL",
5374 "name": "expression"
5375 },
5376 {
5377 "type": "CHOICE",
5378 "members": [
5379 {
5380 "type": "STRING",
5381 "value": "in"
5382 },
5383 {
5384 "type": "STRING",
5385 "value": "not_in"
5386 }
5387 ]
5388 },
5389 {
5390 "type": "SYMBOL",
5391 "name": "expression"
5392 }
5393 ]
5394 }
5395 },
5396 "variadic_expression": {
5397 "type": "PREC_LEFT",
5398 "value": 20,
5399 "content": {
5400 "type": "SEQ",
5401 "members": [
5402 {
5403 "type": "STRING",
5404 "value": ".."
5405 },
5406 {
5407 "type": "SYMBOL",
5408 "name": "expression"
5409 }
5410 ]
5411 }
5412 },
5413 "parenthesized_expression": {
5414 "type": "SEQ",
5415 "members": [
5416 {
5417 "type": "STRING",
5418 "value": "("
5419 },
5420 {
5421 "type": "SYMBOL",
5422 "name": "expression"
5423 },
5424 {
5425 "type": "STRING",
5426 "value": ")"
5427 }
5428 ]
5429 },
5430 "or_return_expression": {
5431 "type": "SEQ",
5432 "members": [
5433 {
5434 "type": "SYMBOL",
5435 "name": "expression"
5436 },
5437 {
5438 "type": "STRING",
5439 "value": "or_return"
5440 }
5441 ]
5442 },
5443 "or_continue_expression": {
5444 "type": "PREC_RIGHT",
5445 "value": 0,
5446 "content": {
5447 "type": "SEQ",
5448 "members": [
5449 {
5450 "type": "SYMBOL",
5451 "name": "expression"
5452 },
5453 {
5454 "type": "STRING",
5455 "value": "or_continue"
5456 },
5457 {
5458 "type": "FIELD",
5459 "name": "label",
5460 "content": {
5461 "type": "CHOICE",
5462 "members": [
5463 {
5464 "type": "SYMBOL",
5465 "name": "identifier"
5466 },
5467 {
5468 "type": "BLANK"
5469 }
5470 ]
5471 }
5472 }
5473 ]
5474 }
5475 },
5476 "or_break_expression": {
5477 "type": "PREC_RIGHT",
5478 "value": 0,
5479 "content": {
5480 "type": "SEQ",
5481 "members": [
5482 {
5483 "type": "SYMBOL",
5484 "name": "expression"
5485 },
5486 {
5487 "type": "STRING",
5488 "value": "or_break"
5489 },
5490 {
5491 "type": "CHOICE",
5492 "members": [
5493 {
5494 "type": "SYMBOL",
5495 "name": "expression"
5496 },
5497 {
5498 "type": "BLANK"
5499 }
5500 ]
5501 }
5502 ]
5503 }
5504 },
5505 "address": {
5506 "type": "SEQ",
5507 "members": [
5508 {
5509 "type": "SYMBOL",
5510 "name": "expression"
5511 },
5512 {
5513 "type": "STRING",
5514 "value": "^"
5515 }
5516 ]
5517 },
5518 "type": {
5519 "type": "PREC_RIGHT",
5520 "value": 0,
5521 "content": {
5522 "type": "CHOICE",
5523 "members": [
5524 {
5525 "type": "SYMBOL",
5526 "name": "identifier"
5527 },
5528 {
5529 "type": "SYMBOL",
5530 "name": "pointer_type"
5531 },
5532 {
5533 "type": "SYMBOL",
5534 "name": "variadic_type"
5535 },
5536 {
5537 "type": "SYMBOL",
5538 "name": "array_type"
5539 },
5540 {
5541 "type": "SYMBOL",
5542 "name": "map_type"
5543 },
5544 {
5545 "type": "SYMBOL",
5546 "name": "union_type"
5547 },
5548 {
5549 "type": "SYMBOL",
5550 "name": "bit_set_type"
5551 },
5552 {
5553 "type": "SYMBOL",
5554 "name": "matrix_type"
5555 },
5556 {
5557 "type": "SYMBOL",
5558 "name": "field_type"
5559 },
5560 {
5561 "type": "SYMBOL",
5562 "name": "tuple_type"
5563 },
5564 {
5565 "type": "SYMBOL",
5566 "name": "struct_type"
5567 },
5568 {
5569 "type": "SYMBOL",
5570 "name": "enum_type"
5571 },
5572 {
5573 "type": "SYMBOL",
5574 "name": "bit_field_type"
5575 },
5576 {
5577 "type": "SYMBOL",
5578 "name": "constant_type"
5579 },
5580 {
5581 "type": "SYMBOL",
5582 "name": "specialized_type"
5583 },
5584 {
5585 "type": "SYMBOL",
5586 "name": "_procedure_type"
5587 },
5588 {
5589 "type": "SYMBOL",
5590 "name": "distinct_type"
5591 },
5592 {
5593 "type": "SYMBOL",
5594 "name": "empty_type"
5595 },
5596 {
5597 "type": "SYMBOL",
5598 "name": "polymorphic_type"
5599 },
5600 {
5601 "type": "SYMBOL",
5602 "name": "conditional_type"
5603 },
5604 {
5605 "type": "STRING",
5606 "value": "..."
5607 }
5608 ]
5609 }
5610 },
5611 "pointer_type": {
5612 "type": "PREC_LEFT",
5613 "value": 0,
5614 "content": {
5615 "type": "SEQ",
5616 "members": [
5617 {
5618 "type": "STRING",
5619 "value": "^"
5620 },
5621 {
5622 "type": "SYMBOL",
5623 "name": "type"
5624 }
5625 ]
5626 }
5627 },
5628 "variadic_type": {
5629 "type": "PREC_LEFT",
5630 "value": 0,
5631 "content": {
5632 "type": "SEQ",
5633 "members": [
5634 {
5635 "type": "STRING",
5636 "value": ".."
5637 },
5638 {
5639 "type": "SYMBOL",
5640 "name": "type"
5641 }
5642 ]
5643 }
5644 },
5645 "array_type": {
5646 "type": "PREC",
5647 "value": 1,
5648 "content": {
5649 "type": "SEQ",
5650 "members": [
5651 {
5652 "type": "CHOICE",
5653 "members": [
5654 {
5655 "type": "SYMBOL",
5656 "name": "tag"
5657 },
5658 {
5659 "type": "BLANK"
5660 }
5661 ]
5662 },
5663 {
5664 "type": "STRING",
5665 "value": "["
5666 },
5667 {
5668 "type": "CHOICE",
5669 "members": [
5670 {
5671 "type": "SEQ",
5672 "members": [
5673 {
5674 "type": "CHOICE",
5675 "members": [
5676 {
5677 "type": "STRING",
5678 "value": "$"
5679 },
5680 {
5681 "type": "BLANK"
5682 }
5683 ]
5684 },
5685 {
5686 "type": "CHOICE",
5687 "members": [
5688 {
5689 "type": "STRING",
5690 "value": "dynamic"
5691 },
5692 {
5693 "type": "STRING",
5694 "value": "^"
5695 },
5696 {
5697 "type": "STRING",
5698 "value": "?"
5699 },
5700 {
5701 "type": "SYMBOL",
5702 "name": "expression"
5703 }
5704 ]
5705 }
5706 ]
5707 },
5708 {
5709 "type": "BLANK"
5710 }
5711 ]
5712 },
5713 {
5714 "type": "STRING",
5715 "value": "]"
5716 },
5717 {
5718 "type": "CHOICE",
5719 "members": [
5720 {
5721 "type": "SYMBOL",
5722 "name": "type"
5723 },
5724 {
5725 "type": "BLANK"
5726 }
5727 ]
5728 }
5729 ]
5730 }
5731 },
5732 "map_type": {
5733 "type": "PREC_RIGHT",
5734 "value": 0,
5735 "content": {
5736 "type": "SEQ",
5737 "members": [
5738 {
5739 "type": "STRING",
5740 "value": "map"
5741 },
5742 {
5743 "type": "STRING",
5744 "value": "["
5745 },
5746 {
5747 "type": "SYMBOL",
5748 "name": "type"
5749 },
5750 {
5751 "type": "STRING",
5752 "value": "]"
5753 },
5754 {
5755 "type": "SYMBOL",
5756 "name": "type"
5757 }
5758 ]
5759 }
5760 },
5761 "union_type": {
5762 "type": "PREC_RIGHT",
5763 "value": 0,
5764 "content": {
5765 "type": "SEQ",
5766 "members": [
5767 {
5768 "type": "STRING",
5769 "value": "union"
5770 },
5771 {
5772 "type": "STRING",
5773 "value": "{"
5774 },
5775 {
5776 "type": "SEQ",
5777 "members": [
5778 {
5779 "type": "SYMBOL",
5780 "name": "type"
5781 },
5782 {
5783 "type": "REPEAT",
5784 "content": {
5785 "type": "SEQ",
5786 "members": [
5787 {
5788 "type": "STRING",
5789 "value": ","
5790 },
5791 {
5792 "type": "SYMBOL",
5793 "name": "type"
5794 }
5795 ]
5796 }
5797 }
5798 ]
5799 },
5800 {
5801 "type": "CHOICE",
5802 "members": [
5803 {
5804 "type": "STRING",
5805 "value": ","
5806 },
5807 {
5808 "type": "BLANK"
5809 }
5810 ]
5811 },
5812 {
5813 "type": "STRING",
5814 "value": "}"
5815 }
5816 ]
5817 }
5818 },
5819 "bit_set_type": {
5820 "type": "SEQ",
5821 "members": [
5822 {
5823 "type": "STRING",
5824 "value": "bit_set"
5825 },
5826 {
5827 "type": "STRING",
5828 "value": "["
5829 },
5830 {
5831 "type": "CHOICE",
5832 "members": [
5833 {
5834 "type": "SYMBOL",
5835 "name": "constant_type"
5836 },
5837 {
5838 "type": "SYMBOL",
5839 "name": "expression"
5840 }
5841 ]
5842 },
5843 {
5844 "type": "CHOICE",
5845 "members": [
5846 {
5847 "type": "SEQ",
5848 "members": [
5849 {
5850 "type": "STRING",
5851 "value": ";"
5852 },
5853 {
5854 "type": "SYMBOL",
5855 "name": "type"
5856 }
5857 ]
5858 },
5859 {
5860 "type": "BLANK"
5861 }
5862 ]
5863 },
5864 {
5865 "type": "STRING",
5866 "value": "]"
5867 }
5868 ]
5869 },
5870 "matrix_type": {
5871 "type": "PREC_LEFT",
5872 "value": 0,
5873 "content": {
5874 "type": "SEQ",
5875 "members": [
5876 {
5877 "type": "STRING",
5878 "value": "matrix"
5879 },
5880 {
5881 "type": "STRING",
5882 "value": "["
5883 },
5884 {
5885 "type": "CHOICE",
5886 "members": [
5887 {
5888 "type": "SYMBOL",
5889 "name": "constant_type"
5890 },
5891 {
5892 "type": "SYMBOL",
5893 "name": "expression"
5894 }
5895 ]
5896 },
5897 {
5898 "type": "STRING",
5899 "value": ","
5900 },
5901 {
5902 "type": "CHOICE",
5903 "members": [
5904 {
5905 "type": "SYMBOL",
5906 "name": "constant_type"
5907 },
5908 {
5909 "type": "SYMBOL",
5910 "name": "expression"
5911 }
5912 ]
5913 },
5914 {
5915 "type": "STRING",
5916 "value": "]"
5917 },
5918 {
5919 "type": "SYMBOL",
5920 "name": "type"
5921 }
5922 ]
5923 }
5924 },
5925 "field_type": {
5926 "type": "SEQ",
5927 "members": [
5928 {
5929 "type": "SYMBOL",
5930 "name": "identifier"
5931 },
5932 {
5933 "type": "REPEAT1",
5934 "content": {
5935 "type": "SEQ",
5936 "members": [
5937 {
5938 "type": "IMMEDIATE_TOKEN",
5939 "content": {
5940 "type": "STRING",
5941 "value": "."
5942 }
5943 },
5944 {
5945 "type": "SYMBOL",
5946 "name": "identifier"
5947 }
5948 ]
5949 }
5950 }
5951 ]
5952 },
5953 "tuple_type": {
5954 "type": "SEQ",
5955 "members": [
5956 {
5957 "type": "STRING",
5958 "value": "("
5959 },
5960 {
5961 "type": "CHOICE",
5962 "members": [
5963 {
5964 "type": "SEQ",
5965 "members": [
5966 {
5967 "type": "SEQ",
5968 "members": [
5969 {
5970 "type": "CHOICE",
5971 "members": [
5972 {
5973 "type": "SYMBOL",
5974 "name": "type"
5975 },
5976 {
5977 "type": "SYMBOL",
5978 "name": "named_type"
5979 },
5980 {
5981 "type": "SYMBOL",
5982 "name": "default_type"
5983 }
5984 ]
5985 },
5986 {
5987 "type": "REPEAT",
5988 "content": {
5989 "type": "SEQ",
5990 "members": [
5991 {
5992 "type": "STRING",
5993 "value": ","
5994 },
5995 {
5996 "type": "CHOICE",
5997 "members": [
5998 {
5999 "type": "SYMBOL",
6000 "name": "type"
6001 },
6002 {
6003 "type": "SYMBOL",
6004 "name": "named_type"
6005 },
6006 {
6007 "type": "SYMBOL",
6008 "name": "default_type"
6009 }
6010 ]
6011 }
6012 ]
6013 }
6014 }
6015 ]
6016 },
6017 {
6018 "type": "CHOICE",
6019 "members": [
6020 {
6021 "type": "STRING",
6022 "value": ","
6023 },
6024 {
6025 "type": "BLANK"
6026 }
6027 ]
6028 }
6029 ]
6030 },
6031 {
6032 "type": "BLANK"
6033 }
6034 ]
6035 },
6036 {
6037 "type": "STRING",
6038 "value": ")"
6039 }
6040 ]
6041 },
6042 "struct_type": {
6043 "type": "PREC",
6044 "value": 1,
6045 "content": {
6046 "type": "SEQ",
6047 "members": [
6048 {
6049 "type": "STRING",
6050 "value": "struct"
6051 },
6052 {
6053 "type": "CHOICE",
6054 "members": [
6055 {
6056 "type": "SYMBOL",
6057 "name": "polymorphic_parameters"
6058 },
6059 {
6060 "type": "BLANK"
6061 }
6062 ]
6063 },
6064 {
6065 "type": "REPEAT",
6066 "content": {
6067 "type": "SEQ",
6068 "members": [
6069 {
6070 "type": "SYMBOL",
6071 "name": "tag"
6072 },
6073 {
6074 "type": "CHOICE",
6075 "members": [
6076 {
6077 "type": "SYMBOL",
6078 "name": "number"
6079 },
6080 {
6081 "type": "BLANK"
6082 }
6083 ]
6084 }
6085 ]
6086 }
6087 },
6088 {
6089 "type": "REPEAT1",
6090 "content": {
6091 "type": "SEQ",
6092 "members": [
6093 {
6094 "type": "STRING",
6095 "value": "{"
6096 },
6097 {
6098 "type": "CHOICE",
6099 "members": [
6100 {
6101 "type": "SYMBOL",
6102 "name": "_struct_members"
6103 },
6104 {
6105 "type": "BLANK"
6106 }
6107 ]
6108 },
6109 {
6110 "type": "STRING",
6111 "value": "}"
6112 }
6113 ]
6114 }
6115 }
6116 ]
6117 }
6118 },
6119 "_struct_members": {
6120 "type": "SEQ",
6121 "members": [
6122 {
6123 "type": "SEQ",
6124 "members": [
6125 {
6126 "type": "SYMBOL",
6127 "name": "struct_member"
6128 },
6129 {
6130 "type": "REPEAT",
6131 "content": {
6132 "type": "SEQ",
6133 "members": [
6134 {
6135 "type": "STRING",
6136 "value": ","
6137 },
6138 {
6139 "type": "SYMBOL",
6140 "name": "struct_member"
6141 }
6142 ]
6143 }
6144 }
6145 ]
6146 },
6147 {
6148 "type": "CHOICE",
6149 "members": [
6150 {
6151 "type": "STRING",
6152 "value": ","
6153 },
6154 {
6155 "type": "BLANK"
6156 }
6157 ]
6158 }
6159 ]
6160 },
6161 "struct_member": {
6162 "type": "SEQ",
6163 "members": [
6164 {
6165 "type": "SEQ",
6166 "members": [
6167 {
6168 "type": "SEQ",
6169 "members": [
6170 {
6171 "type": "CHOICE",
6172 "members": [
6173 {
6174 "type": "STRING",
6175 "value": "using"
6176 },
6177 {
6178 "type": "BLANK"
6179 }
6180 ]
6181 },
6182 {
6183 "type": "SYMBOL",
6184 "name": "identifier"
6185 }
6186 ]
6187 },
6188 {
6189 "type": "REPEAT",
6190 "content": {
6191 "type": "SEQ",
6192 "members": [
6193 {
6194 "type": "STRING",
6195 "value": ","
6196 },
6197 {
6198 "type": "SEQ",
6199 "members": [
6200 {
6201 "type": "CHOICE",
6202 "members": [
6203 {
6204 "type": "STRING",
6205 "value": "using"
6206 },
6207 {
6208 "type": "BLANK"
6209 }
6210 ]
6211 },
6212 {
6213 "type": "SYMBOL",
6214 "name": "identifier"
6215 }
6216 ]
6217 }
6218 ]
6219 }
6220 }
6221 ]
6222 },
6223 {
6224 "type": "STRING",
6225 "value": ":"
6226 },
6227 {
6228 "type": "CHOICE",
6229 "members": [
6230 {
6231 "type": "SYMBOL",
6232 "name": "tag"
6233 },
6234 {
6235 "type": "BLANK"
6236 }
6237 ]
6238 },
6239 {
6240 "type": "SYMBOL",
6241 "name": "type"
6242 },
6243 {
6244 "type": "CHOICE",
6245 "members": [
6246 {
6247 "type": "SYMBOL",
6248 "name": "string"
6249 },
6250 {
6251 "type": "BLANK"
6252 }
6253 ]
6254 }
6255 ]
6256 },
6257 "enum_type": {
6258 "type": "SEQ",
6259 "members": [
6260 {
6261 "type": "STRING",
6262 "value": "enum"
6263 },
6264 {
6265 "type": "CHOICE",
6266 "members": [
6267 {
6268 "type": "FIELD",
6269 "name": "underlying_type",
6270 "content": {
6271 "type": "SYMBOL",
6272 "name": "type"
6273 }
6274 },
6275 {
6276 "type": "BLANK"
6277 }
6278 ]
6279 },
6280 {
6281 "type": "STRING",
6282 "value": "{"
6283 },
6284 {
6285 "type": "SEQ",
6286 "members": [
6287 {
6288 "type": "SEQ",
6289 "members": [
6290 {
6291 "type": "SYMBOL",
6292 "name": "identifier"
6293 },
6294 {
6295 "type": "CHOICE",
6296 "members": [
6297 {
6298 "type": "SEQ",
6299 "members": [
6300 {
6301 "type": "STRING",
6302 "value": "="
6303 },
6304 {
6305 "type": "SYMBOL",
6306 "name": "expression"
6307 }
6308 ]
6309 },
6310 {
6311 "type": "BLANK"
6312 }
6313 ]
6314 }
6315 ]
6316 },
6317 {
6318 "type": "REPEAT",
6319 "content": {
6320 "type": "SEQ",
6321 "members": [
6322 {
6323 "type": "STRING",
6324 "value": ","
6325 },
6326 {
6327 "type": "SEQ",
6328 "members": [
6329 {
6330 "type": "SYMBOL",
6331 "name": "identifier"
6332 },
6333 {
6334 "type": "CHOICE",
6335 "members": [
6336 {
6337 "type": "SEQ",
6338 "members": [
6339 {
6340 "type": "STRING",
6341 "value": "="
6342 },
6343 {
6344 "type": "SYMBOL",
6345 "name": "expression"
6346 }
6347 ]
6348 },
6349 {
6350 "type": "BLANK"
6351 }
6352 ]
6353 }
6354 ]
6355 }
6356 ]
6357 }
6358 }
6359 ]
6360 },
6361 {
6362 "type": "CHOICE",
6363 "members": [
6364 {
6365 "type": "STRING",
6366 "value": ","
6367 },
6368 {
6369 "type": "BLANK"
6370 }
6371 ]
6372 },
6373 {
6374 "type": "STRING",
6375 "value": "}"
6376 }
6377 ]
6378 },
6379 "bit_field_type": {
6380 "type": "SEQ",
6381 "members": [
6382 {
6383 "type": "STRING",
6384 "value": "bit_field"
6385 },
6386 {
6387 "type": "SYMBOL",
6388 "name": "type"
6389 },
6390 {
6391 "type": "STRING",
6392 "value": "{"
6393 },
6394 {
6395 "type": "SEQ",
6396 "members": [
6397 {
6398 "type": "SEQ",
6399 "members": [
6400 {
6401 "type": "SYMBOL",
6402 "name": "identifier"
6403 },
6404 {
6405 "type": "STRING",
6406 "value": ":"
6407 },
6408 {
6409 "type": "SYMBOL",
6410 "name": "type"
6411 },
6412 {
6413 "type": "STRING",
6414 "value": "|"
6415 },
6416 {
6417 "type": "SYMBOL",
6418 "name": "expression"
6419 }
6420 ]
6421 },
6422 {
6423 "type": "REPEAT",
6424 "content": {
6425 "type": "SEQ",
6426 "members": [
6427 {
6428 "type": "STRING",
6429 "value": ","
6430 },
6431 {
6432 "type": "SEQ",
6433 "members": [
6434 {
6435 "type": "SYMBOL",
6436 "name": "identifier"
6437 },
6438 {
6439 "type": "STRING",
6440 "value": ":"
6441 },
6442 {
6443 "type": "SYMBOL",
6444 "name": "type"
6445 },
6446 {
6447 "type": "STRING",
6448 "value": "|"
6449 },
6450 {
6451 "type": "SYMBOL",
6452 "name": "expression"
6453 }
6454 ]
6455 }
6456 ]
6457 }
6458 }
6459 ]
6460 },
6461 {
6462 "type": "CHOICE",
6463 "members": [
6464 {
6465 "type": "STRING",
6466 "value": ","
6467 },
6468 {
6469 "type": "BLANK"
6470 }
6471 ]
6472 },
6473 {
6474 "type": "STRING",
6475 "value": "}"
6476 }
6477 ]
6478 },
6479 "named_type": {
6480 "type": "PREC_RIGHT",
6481 "value": 0,
6482 "content": {
6483 "type": "SEQ",
6484 "members": [
6485 {
6486 "type": "SYMBOL",
6487 "name": "identifier"
6488 },
6489 {
6490 "type": "STRING",
6491 "value": ":"
6492 },
6493 {
6494 "type": "SYMBOL",
6495 "name": "type"
6496 },
6497 {
6498 "type": "CHOICE",
6499 "members": [
6500 {
6501 "type": "SEQ",
6502 "members": [
6503 {
6504 "type": "STRING",
6505 "value": "="
6506 },
6507 {
6508 "type": "SYMBOL",
6509 "name": "literal"
6510 }
6511 ]
6512 },
6513 {
6514 "type": "BLANK"
6515 }
6516 ]
6517 }
6518 ]
6519 }
6520 },
6521 "default_type": {
6522 "type": "SEQ",
6523 "members": [
6524 {
6525 "type": "SYMBOL",
6526 "name": "identifier"
6527 },
6528 {
6529 "type": "STRING",
6530 "value": ":="
6531 },
6532 {
6533 "type": "SYMBOL",
6534 "name": "expression"
6535 }
6536 ]
6537 },
6538 "constant_type": {
6539 "type": "PREC_RIGHT",
6540 "value": 0,
6541 "content": {
6542 "type": "SEQ",
6543 "members": [
6544 {
6545 "type": "STRING",
6546 "value": "$"
6547 },
6548 {
6549 "type": "SYMBOL",
6550 "name": "type"
6551 }
6552 ]
6553 }
6554 },
6555 "specialized_type": {
6556 "type": "PREC_RIGHT",
6557 "value": 0,
6558 "content": {
6559 "type": "SEQ",
6560 "members": [
6561 {
6562 "type": "SYMBOL",
6563 "name": "type"
6564 },
6565 {
6566 "type": "STRING",
6567 "value": "/"
6568 },
6569 {
6570 "type": "SYMBOL",
6571 "name": "type"
6572 }
6573 ]
6574 }
6575 },
6576 "_procedure_type": {
6577 "type": "ALIAS",
6578 "content": {
6579 "type": "SYMBOL",
6580 "name": "procedure"
6581 },
6582 "named": true,
6583 "value": "procedure_type"
6584 },
6585 "distinct_type": {
6586 "type": "PREC_RIGHT",
6587 "value": 0,
6588 "content": {
6589 "type": "SEQ",
6590 "members": [
6591 {
6592 "type": "STRING",
6593 "value": "distinct"
6594 },
6595 {
6596 "type": "CHOICE",
6597 "members": [
6598 {
6599 "type": "SYMBOL",
6600 "name": "tag"
6601 },
6602 {
6603 "type": "BLANK"
6604 }
6605 ]
6606 },
6607 {
6608 "type": "SYMBOL",
6609 "name": "type"
6610 }
6611 ]
6612 }
6613 },
6614 "empty_type": {
6615 "type": "STRING",
6616 "value": "!"
6617 },
6618 "polymorphic_type": {
6619 "type": "SEQ",
6620 "members": [
6621 {
6622 "type": "SYMBOL",
6623 "name": "type"
6624 },
6625 {
6626 "type": "STRING",
6627 "value": "("
6628 },
6629 {
6630 "type": "SEQ",
6631 "members": [
6632 {
6633 "type": "CHOICE",
6634 "members": [
6635 {
6636 "type": "SYMBOL",
6637 "name": "type"
6638 },
6639 {
6640 "type": "SYMBOL",
6641 "name": "literal"
6642 }
6643 ]
6644 },
6645 {
6646 "type": "REPEAT",
6647 "content": {
6648 "type": "SEQ",
6649 "members": [
6650 {
6651 "type": "STRING",
6652 "value": ","
6653 },
6654 {
6655 "type": "CHOICE",
6656 "members": [
6657 {
6658 "type": "SYMBOL",
6659 "name": "type"
6660 },
6661 {
6662 "type": "SYMBOL",
6663 "name": "literal"
6664 }
6665 ]
6666 }
6667 ]
6668 }
6669 }
6670 ]
6671 },
6672 {
6673 "type": "STRING",
6674 "value": ")"
6675 }
6676 ]
6677 },
6678 "conditional_type": {
6679 "type": "SEQ",
6680 "members": [
6681 {
6682 "type": "STRING",
6683 "value": "("
6684 },
6685 {
6686 "type": "SYMBOL",
6687 "name": "type"
6688 },
6689 {
6690 "type": "STRING",
6691 "value": "when"
6692 },
6693 {
6694 "type": "SYMBOL",
6695 "name": "expression"
6696 },
6697 {
6698 "type": "STRING",
6699 "value": "else"
6700 },
6701 {
6702 "type": "SYMBOL",
6703 "name": "type"
6704 },
6705 {
6706 "type": "STRING",
6707 "value": ")"
6708 }
6709 ]
6710 },
6711 "literal": {
6712 "type": "PREC_RIGHT",
6713 "value": 0,
6714 "content": {
6715 "type": "CHOICE",
6716 "members": [
6717 {
6718 "type": "SYMBOL",
6719 "name": "struct"
6720 },
6721 {
6722 "type": "SYMBOL",
6723 "name": "map"
6724 },
6725 {
6726 "type": "SYMBOL",
6727 "name": "bit_set"
6728 },
6729 {
6730 "type": "SYMBOL",
6731 "name": "matrix"
6732 },
6733 {
6734 "type": "SYMBOL",
6735 "name": "float"
6736 },
6737 {
6738 "type": "SYMBOL",
6739 "name": "number"
6740 },
6741 {
6742 "type": "SYMBOL",
6743 "name": "string"
6744 },
6745 {
6746 "type": "SYMBOL",
6747 "name": "character"
6748 },
6749 {
6750 "type": "SYMBOL",
6751 "name": "boolean"
6752 },
6753 {
6754 "type": "SYMBOL",
6755 "name": "nil"
6756 },
6757 {
6758 "type": "SYMBOL",
6759 "name": "uninitialized"
6760 }
6761 ]
6762 }
6763 },
6764 "struct": {
6765 "type": "SEQ",
6766 "members": [
6767 {
6768 "type": "CHOICE",
6769 "members": [
6770 {
6771 "type": "CHOICE",
6772 "members": [
6773 {
6774 "type": "SEQ",
6775 "members": [
6776 {
6777 "type": "STRING",
6778 "value": "["
6779 },
6780 {
6781 "type": "CHOICE",
6782 "members": [
6783 {
6784 "type": "CHOICE",
6785 "members": [
6786 {
6787 "type": "STRING",
6788 "value": "dynamic"
6789 },
6790 {
6791 "type": "STRING",
6792 "value": "^"
6793 },
6794 {
6795 "type": "STRING",
6796 "value": "?"
6797 },
6798 {
6799 "type": "SYMBOL",
6800 "name": "expression"
6801 }
6802 ]
6803 },
6804 {
6805 "type": "BLANK"
6806 }
6807 ]
6808 },
6809 {
6810 "type": "STRING",
6811 "value": "]"
6812 },
6813 {
6814 "type": "SYMBOL",
6815 "name": "type"
6816 }
6817 ]
6818 },
6819 {
6820 "type": "SEQ",
6821 "members": [
6822 {
6823 "type": "CHOICE",
6824 "members": [
6825 {
6826 "type": "SYMBOL",
6827 "name": "identifier"
6828 },
6829 {
6830 "type": "SYMBOL",
6831 "name": "field_identifier"
6832 }
6833 ]
6834 },
6835 {
6836 "type": "CHOICE",
6837 "members": [
6838 {
6839 "type": "SEQ",
6840 "members": [
6841 {
6842 "type": "STRING",
6843 "value": "("
6844 },
6845 {
6846 "type": "CHOICE",
6847 "members": [
6848 {
6849 "type": "SEQ",
6850 "members": [
6851 {
6852 "type": "SYMBOL",
6853 "name": "identifier"
6854 },
6855 {
6856 "type": "REPEAT",
6857 "content": {
6858 "type": "SEQ",
6859 "members": [
6860 {
6861 "type": "STRING",
6862 "value": ","
6863 },
6864 {
6865 "type": "SYMBOL",
6866 "name": "identifier"
6867 }
6868 ]
6869 }
6870 }
6871 ]
6872 },
6873 {
6874 "type": "BLANK"
6875 }
6876 ]
6877 },
6878 {
6879 "type": "STRING",
6880 "value": ")"
6881 }
6882 ]
6883 },
6884 {
6885 "type": "BLANK"
6886 }
6887 ]
6888 }
6889 ]
6890 }
6891 ]
6892 },
6893 {
6894 "type": "BLANK"
6895 }
6896 ]
6897 },
6898 {
6899 "type": "STRING",
6900 "value": "{"
6901 },
6902 {
6903 "type": "CHOICE",
6904 "members": [
6905 {
6906 "type": "SEQ",
6907 "members": [
6908 {
6909 "type": "SEQ",
6910 "members": [
6911 {
6912 "type": "SYMBOL",
6913 "name": "struct_field"
6914 },
6915 {
6916 "type": "REPEAT",
6917 "content": {
6918 "type": "SEQ",
6919 "members": [
6920 {
6921 "type": "STRING",
6922 "value": ","
6923 },
6924 {
6925 "type": "SYMBOL",
6926 "name": "struct_field"
6927 }
6928 ]
6929 }
6930 }
6931 ]
6932 },
6933 {
6934 "type": "CHOICE",
6935 "members": [
6936 {
6937 "type": "STRING",
6938 "value": ","
6939 },
6940 {
6941 "type": "BLANK"
6942 }
6943 ]
6944 }
6945 ]
6946 },
6947 {
6948 "type": "BLANK"
6949 }
6950 ]
6951 },
6952 {
6953 "type": "STRING",
6954 "value": "}"
6955 }
6956 ]
6957 },
6958 "map": {
6959 "type": "SEQ",
6960 "members": [
6961 {
6962 "type": "STRING",
6963 "value": "map"
6964 },
6965 {
6966 "type": "STRING",
6967 "value": "["
6968 },
6969 {
6970 "type": "SYMBOL",
6971 "name": "type"
6972 },
6973 {
6974 "type": "STRING",
6975 "value": "]"
6976 },
6977 {
6978 "type": "SYMBOL",
6979 "name": "type"
6980 },
6981 {
6982 "type": "STRING",
6983 "value": "{"
6984 },
6985 {
6986 "type": "CHOICE",
6987 "members": [
6988 {
6989 "type": "SEQ",
6990 "members": [
6991 {
6992 "type": "SEQ",
6993 "members": [
6994 {
6995 "type": "SEQ",
6996 "members": [
6997 {
6998 "type": "SYMBOL",
6999 "name": "expression"
7000 },
7001 {
7002 "type": "STRING",
7003 "value": "="
7004 },
7005 {
7006 "type": "SYMBOL",
7007 "name": "expression"
7008 }
7009 ]
7010 },
7011 {
7012 "type": "REPEAT",
7013 "content": {
7014 "type": "SEQ",
7015 "members": [
7016 {
7017 "type": "STRING",
7018 "value": ","
7019 },
7020 {
7021 "type": "SEQ",
7022 "members": [
7023 {
7024 "type": "SYMBOL",
7025 "name": "expression"
7026 },
7027 {
7028 "type": "STRING",
7029 "value": "="
7030 },
7031 {
7032 "type": "SYMBOL",
7033 "name": "expression"
7034 }
7035 ]
7036 }
7037 ]
7038 }
7039 }
7040 ]
7041 },
7042 {
7043 "type": "CHOICE",
7044 "members": [
7045 {
7046 "type": "STRING",
7047 "value": ","
7048 },
7049 {
7050 "type": "BLANK"
7051 }
7052 ]
7053 }
7054 ]
7055 },
7056 {
7057 "type": "BLANK"
7058 }
7059 ]
7060 },
7061 {
7062 "type": "STRING",
7063 "value": "}"
7064 }
7065 ]
7066 },
7067 "bit_set": {
7068 "type": "SEQ",
7069 "members": [
7070 {
7071 "type": "STRING",
7072 "value": "bit_set"
7073 },
7074 {
7075 "type": "STRING",
7076 "value": "["
7077 },
7078 {
7079 "type": "SYMBOL",
7080 "name": "expression"
7081 },
7082 {
7083 "type": "CHOICE",
7084 "members": [
7085 {
7086 "type": "SEQ",
7087 "members": [
7088 {
7089 "type": "STRING",
7090 "value": ";"
7091 },
7092 {
7093 "type": "FIELD",
7094 "name": "underlying_type",
7095 "content": {
7096 "type": "SYMBOL",
7097 "name": "type"
7098 }
7099 }
7100 ]
7101 },
7102 {
7103 "type": "BLANK"
7104 }
7105 ]
7106 },
7107 {
7108 "type": "STRING",
7109 "value": "]"
7110 },
7111 {
7112 "type": "STRING",
7113 "value": "{"
7114 },
7115 {
7116 "type": "CHOICE",
7117 "members": [
7118 {
7119 "type": "SEQ",
7120 "members": [
7121 {
7122 "type": "SYMBOL",
7123 "name": "expression"
7124 },
7125 {
7126 "type": "REPEAT",
7127 "content": {
7128 "type": "SEQ",
7129 "members": [
7130 {
7131 "type": "STRING",
7132 "value": ","
7133 },
7134 {
7135 "type": "SYMBOL",
7136 "name": "expression"
7137 }
7138 ]
7139 }
7140 }
7141 ]
7142 },
7143 {
7144 "type": "BLANK"
7145 }
7146 ]
7147 },
7148 {
7149 "type": "STRING",
7150 "value": "}"
7151 }
7152 ]
7153 },
7154 "matrix": {
7155 "type": "SEQ",
7156 "members": [
7157 {
7158 "type": "STRING",
7159 "value": "matrix"
7160 },
7161 {
7162 "type": "STRING",
7163 "value": "["
7164 },
7165 {
7166 "type": "SYMBOL",
7167 "name": "expression"
7168 },
7169 {
7170 "type": "STRING",
7171 "value": ","
7172 },
7173 {
7174 "type": "SYMBOL",
7175 "name": "expression"
7176 },
7177 {
7178 "type": "STRING",
7179 "value": "]"
7180 },
7181 {
7182 "type": "SYMBOL",
7183 "name": "type"
7184 },
7185 {
7186 "type": "STRING",
7187 "value": "{"
7188 },
7189 {
7190 "type": "CHOICE",
7191 "members": [
7192 {
7193 "type": "SEQ",
7194 "members": [
7195 {
7196 "type": "SEQ",
7197 "members": [
7198 {
7199 "type": "SYMBOL",
7200 "name": "expression"
7201 },
7202 {
7203 "type": "REPEAT",
7204 "content": {
7205 "type": "SEQ",
7206 "members": [
7207 {
7208 "type": "STRING",
7209 "value": ","
7210 },
7211 {
7212 "type": "SYMBOL",
7213 "name": "expression"
7214 }
7215 ]
7216 }
7217 }
7218 ]
7219 },
7220 {
7221 "type": "CHOICE",
7222 "members": [
7223 {
7224 "type": "STRING",
7225 "value": ","
7226 },
7227 {
7228 "type": "BLANK"
7229 }
7230 ]
7231 }
7232 ]
7233 },
7234 {
7235 "type": "BLANK"
7236 }
7237 ]
7238 },
7239 {
7240 "type": "STRING",
7241 "value": "}"
7242 }
7243 ]
7244 },
7245 "struct_field": {
7246 "type": "PREC_RIGHT",
7247 "value": 0,
7248 "content": {
7249 "type": "SEQ",
7250 "members": [
7251 {
7252 "type": "SYMBOL",
7253 "name": "expression"
7254 },
7255 {
7256 "type": "CHOICE",
7257 "members": [
7258 {
7259 "type": "SEQ",
7260 "members": [
7261 {
7262 "type": "STRING",
7263 "value": "="
7264 },
7265 {
7266 "type": "CHOICE",
7267 "members": [
7268 {
7269 "type": "SYMBOL",
7270 "name": "expression"
7271 },
7272 {
7273 "type": "SYMBOL",
7274 "name": "_procedure_type"
7275 }
7276 ]
7277 }
7278 ]
7279 },
7280 {
7281 "type": "BLANK"
7282 }
7283 ]
7284 }
7285 ]
7286 }
7287 },
7288 "number": {
7289 "type": "TOKEN",
7290 "content": {
7291 "type": "CHOICE",
7292 "members": [
7293 {
7294 "type": "SEQ",
7295 "members": [
7296 {
7297 "type": "CHOICE",
7298 "members": [
7299 {
7300 "type": "STRING",
7301 "value": "-"
7302 },
7303 {
7304 "type": "BLANK"
7305 }
7306 ]
7307 },
7308 {
7309 "type": "PATTERN",
7310 "value": "[0-9][0-9_]*[ijk]?"
7311 }
7312 ]
7313 },
7314 {
7315 "type": "SEQ",
7316 "members": [
7317 {
7318 "type": "CHOICE",
7319 "members": [
7320 {
7321 "type": "STRING",
7322 "value": "-"
7323 },
7324 {
7325 "type": "BLANK"
7326 }
7327 ]
7328 },
7329 {
7330 "type": "PATTERN",
7331 "value": "0[xh][0-9a-fA-F_]+[ijk]?"
7332 }
7333 ]
7334 },
7335 {
7336 "type": "SEQ",
7337 "members": [
7338 {
7339 "type": "CHOICE",
7340 "members": [
7341 {
7342 "type": "STRING",
7343 "value": "-"
7344 },
7345 {
7346 "type": "BLANK"
7347 }
7348 ]
7349 },
7350 {
7351 "type": "PATTERN",
7352 "value": "0o[0-7][0-7]*[ijk]?"
7353 }
7354 ]
7355 },
7356 {
7357 "type": "SEQ",
7358 "members": [
7359 {
7360 "type": "CHOICE",
7361 "members": [
7362 {
7363 "type": "STRING",
7364 "value": "-"
7365 },
7366 {
7367 "type": "BLANK"
7368 }
7369 ]
7370 },
7371 {
7372 "type": "PATTERN",
7373 "value": "0b[01][01_]*[ijk]?"
7374 }
7375 ]
7376 }
7377 ]
7378 }
7379 },
7380 "string": {
7381 "type": "CHOICE",
7382 "members": [
7383 {
7384 "type": "SYMBOL",
7385 "name": "_string_literal"
7386 },
7387 {
7388 "type": "SYMBOL",
7389 "name": "_raw_string_literal"
7390 }
7391 ]
7392 },
7393 "_string_literal": {
7394 "type": "SEQ",
7395 "members": [
7396 {
7397 "type": "STRING",
7398 "value": "\""
7399 },
7400 {
7401 "type": "REPEAT",
7402 "content": {
7403 "type": "CHOICE",
7404 "members": [
7405 {
7406 "type": "SYMBOL",
7407 "name": "string_content"
7408 },
7409 {
7410 "type": "SYMBOL",
7411 "name": "escape_sequence"
7412 }
7413 ]
7414 }
7415 },
7416 {
7417 "type": "STRING",
7418 "value": "\""
7419 }
7420 ]
7421 },
7422 "_raw_string_literal": {
7423 "type": "SEQ",
7424 "members": [
7425 {
7426 "type": "STRING",
7427 "value": "`"
7428 },
7429 {
7430 "type": "REPEAT",
7431 "content": {
7432 "type": "ALIAS",
7433 "content": {
7434 "type": "SYMBOL",
7435 "name": "_raw_string_content"
7436 },
7437 "named": true,
7438 "value": "string_content"
7439 }
7440 },
7441 {
7442 "type": "STRING",
7443 "value": "`"
7444 }
7445 ]
7446 },
7447 "character": {
7448 "type": "SEQ",
7449 "members": [
7450 {
7451 "type": "STRING",
7452 "value": "'"
7453 },
7454 {
7455 "type": "CHOICE",
7456 "members": [
7457 {
7458 "type": "PATTERN",
7459 "value": "[^'\\\\]"
7460 },
7461 {
7462 "type": "SYMBOL",
7463 "name": "escape_sequence"
7464 }
7465 ]
7466 },
7467 {
7468 "type": "STRING",
7469 "value": "'"
7470 }
7471 ]
7472 },
7473 "string_content": {
7474 "type": "IMMEDIATE_TOKEN",
7475 "content": {
7476 "type": "PREC",
7477 "value": 1,
7478 "content": {
7479 "type": "PATTERN",
7480 "value": "[^\"\\\\]+"
7481 }
7482 }
7483 },
7484 "_raw_string_content": {
7485 "type": "IMMEDIATE_TOKEN",
7486 "content": {
7487 "type": "PREC",
7488 "value": 1,
7489 "content": {
7490 "type": "PATTERN",
7491 "value": "[^`]+"
7492 }
7493 }
7494 },
7495 "_escape_sequence": {
7496 "type": "CHOICE",
7497 "members": [
7498 {
7499 "type": "PREC",
7500 "value": 2,
7501 "content": {
7502 "type": "IMMEDIATE_TOKEN",
7503 "content": {
7504 "type": "SEQ",
7505 "members": [
7506 {
7507 "type": "STRING",
7508 "value": "\\"
7509 },
7510 {
7511 "type": "PATTERN",
7512 "value": "[^abfnrtvxu'\\\"\\\\\\?]"
7513 }
7514 ]
7515 }
7516 }
7517 },
7518 {
7519 "type": "PREC",
7520 "value": 1,
7521 "content": {
7522 "type": "SYMBOL",
7523 "name": "escape_sequence"
7524 }
7525 }
7526 ]
7527 },
7528 "escape_sequence": {
7529 "type": "IMMEDIATE_TOKEN",
7530 "content": {
7531 "type": "SEQ",
7532 "members": [
7533 {
7534 "type": "STRING",
7535 "value": "\\"
7536 },
7537 {
7538 "type": "CHOICE",
7539 "members": [
7540 {
7541 "type": "PATTERN",
7542 "value": "[^xu0-7]"
7543 },
7544 {
7545 "type": "PATTERN",
7546 "value": "[0-7]{1,3}"
7547 },
7548 {
7549 "type": "PATTERN",
7550 "value": "x[0-9a-fA-F]{2}"
7551 },
7552 {
7553 "type": "PATTERN",
7554 "value": "u[0-9a-fA-F]{4}"
7555 },
7556 {
7557 "type": "PATTERN",
7558 "value": "u\\{[0-9a-fA-F]+\\}"
7559 },
7560 {
7561 "type": "PATTERN",
7562 "value": "U[0-9a-fA-F]{8}"
7563 }
7564 ]
7565 }
7566 ]
7567 }
7568 },
7569 "boolean": {
7570 "type": "CHOICE",
7571 "members": [
7572 {
7573 "type": "STRING",
7574 "value": "true"
7575 },
7576 {
7577 "type": "STRING",
7578 "value": "false"
7579 }
7580 ]
7581 },
7582 "nil": {
7583 "type": "STRING",
7584 "value": "nil"
7585 },
7586 "uninitialized": {
7587 "type": "STRING",
7588 "value": "---"
7589 },
7590 "tag": {
7591 "type": "TOKEN",
7592 "content": {
7593 "type": "SEQ",
7594 "members": [
7595 {
7596 "type": "PATTERN",
7597 "value": "#[a-zA-Z_][a-zA-Z0-9_]*"
7598 },
7599 {
7600 "type": "CHOICE",
7601 "members": [
7602 {
7603 "type": "SEQ",
7604 "members": [
7605 {
7606 "type": "STRING",
7607 "value": "("
7608 },
7609 {
7610 "type": "PATTERN",
7611 "value": "\\w*"
7612 },
7613 {
7614 "type": "STRING",
7615 "value": ")"
7616 }
7617 ]
7618 },
7619 {
7620 "type": "BLANK"
7621 }
7622 ]
7623 }
7624 ]
7625 }
7626 },
7627 "identifier": {
7628 "type": "PATTERN",
7629 "value": "[_\\p{XID_Start}][_\\p{XID_Continue}]*",
7630 "flags": "u"
7631 },
7632 "field_identifier": {
7633 "type": "PREC",
7634 "value": -1,
7635 "content": {
7636 "type": "SEQ",
7637 "members": [
7638 {
7639 "type": "SYMBOL",
7640 "name": "identifier"
7641 },
7642 {
7643 "type": "REPEAT1",
7644 "content": {
7645 "type": "SEQ",
7646 "members": [
7647 {
7648 "type": "STRING",
7649 "value": "."
7650 },
7651 {
7652 "type": "SYMBOL",
7653 "name": "identifier"
7654 }
7655 ]
7656 }
7657 }
7658 ]
7659 }
7660 },
7661 "keyword_identifier": {
7662 "type": "PREC",
7663 "value": -3,
7664 "content": {
7665 "type": "CHOICE",
7666 "members": [
7667 {
7668 "type": "STRING",
7669 "value": "nil"
7670 },
7671 {
7672 "type": "STRING",
7673 "value": "false"
7674 },
7675 {
7676 "type": "STRING",
7677 "value": "true"
7678 }
7679 ]
7680 }
7681 },
7682 "_separator": {
7683 "type": "CHOICE",
7684 "members": [
7685 {
7686 "type": "SYMBOL",
7687 "name": "_newline"
7688 },
7689 {
7690 "type": "STRING",
7691 "value": ";"
7692 }
7693 ]
7694 },
7695 "comment": {
7696 "type": "TOKEN",
7697 "content": {
7698 "type": "SEQ",
7699 "members": [
7700 {
7701 "type": "STRING",
7702 "value": "//"
7703 },
7704 {
7705 "type": "PATTERN",
7706 "value": "[^\\r\\n]*"
7707 }
7708 ]
7709 }
7710 }
7711 },
7712 "extras": [
7713 {
7714 "type": "SYMBOL",
7715 "name": "comment"
7716 },
7717 {
7718 "type": "SYMBOL",
7719 "name": "block_comment"
7720 },
7721 {
7722 "type": "PATTERN",
7723 "value": "\\s"
7724 },
7725 {
7726 "type": "SYMBOL",
7727 "name": "_backslash"
7728 }
7729 ],
7730 "conflicts": [
7731 [
7732 "array_type"
7733 ],
7734 [
7735 "_expression_no_tag",
7736 "struct"
7737 ]
7738 ],
7739 "precedences": [],
7740 "externals": [
7741 {
7742 "type": "SYMBOL",
7743 "name": "_newline"
7744 },
7745 {
7746 "type": "SYMBOL",
7747 "name": "_backslash"
7748 },
7749 {
7750 "type": "SYMBOL",
7751 "name": "_nl_comma"
7752 },
7753 {
7754 "type": "SYMBOL",
7755 "name": "float"
7756 },
7757 {
7758 "type": "SYMBOL",
7759 "name": "block_comment"
7760 },
7761 {
7762 "type": "STRING",
7763 "value": "{"
7764 },
7765 {
7766 "type": "STRING",
7767 "value": "\""
7768 }
7769 ],
7770 "inline": [],
7771 "supertypes": [
7772 "declaration",
7773 "expression",
7774 "literal",
7775 "statement"
7776 ]
7777}