1{
2  "name": "ocaml",
3  "word": "_identifier",
4  "rules": {
5    "compilation_unit": {
6      "type": "SEQ",
7      "members": [
8        {
9          "type": "CHOICE",
10          "members": [
11            {
12              "type": "SYMBOL",
13              "name": "shebang"
14            },
15            {
16              "type": "BLANK"
17            }
18          ]
19        },
20        {
21          "type": "CHOICE",
22          "members": [
23            {
24              "type": "SYMBOL",
25              "name": "_structure"
26            },
27            {
28              "type": "BLANK"
29            }
30          ]
31        }
32      ]
33    },
34    "shebang": {
35      "type": "PATTERN",
36      "value": "#!.*"
37    },
38    "_structure": {
39      "type": "CHOICE",
40      "members": [
41        {
42          "type": "REPEAT1",
43          "content": {
44            "type": "STRING",
45            "value": ";;"
46          }
47        },
48        {
49          "type": "SEQ",
50          "members": [
51            {
52              "type": "REPEAT",
53              "content": {
54                "type": "STRING",
55                "value": ";;"
56              }
57            },
58            {
59              "type": "CHOICE",
60              "members": [
61                {
62                  "type": "SYMBOL",
63                  "name": "_structure_item_ext"
64                },
65                {
66                  "type": "SYMBOL",
67                  "name": "toplevel_directive"
68                },
69                {
70                  "type": "SYMBOL",
71                  "name": "expression_item"
72                }
73              ]
74            },
75            {
76              "type": "REPEAT",
77              "content": {
78                "type": "CHOICE",
79                "members": [
80                  {
81                    "type": "SEQ",
82                    "members": [
83                      {
84                        "type": "REPEAT",
85                        "content": {
86                          "type": "STRING",
87                          "value": ";;"
88                        }
89                      },
90                      {
91                        "type": "CHOICE",
92                        "members": [
93                          {
94                            "type": "SYMBOL",
95                            "name": "_structure_item_ext"
96                          },
97                          {
98                            "type": "SYMBOL",
99                            "name": "toplevel_directive"
100                          }
101                        ]
102                      }
103                    ]
104                  },
105                  {
106                    "type": "SEQ",
107                    "members": [
108                      {
109                        "type": "REPEAT1",
110                        "content": {
111                          "type": "STRING",
112                          "value": ";;"
113                        }
114                      },
115                      {
116                        "type": "SYMBOL",
117                        "name": "expression_item"
118                      }
119                    ]
120                  }
121                ]
122              }
123            },
124            {
125              "type": "REPEAT",
126              "content": {
127                "type": "STRING",
128                "value": ";;"
129              }
130            }
131          ]
132        }
133      ]
134    },
135    "expression_item": {
136      "type": "SEQ",
137      "members": [
138        {
139          "type": "SYMBOL",
140          "name": "_sequence_expression_ext"
141        },
142        {
143          "type": "REPEAT",
144          "content": {
145            "type": "SYMBOL",
146            "name": "item_attribute"
147          }
148        }
149      ]
150    },
151    "_signature": {
152      "type": "CHOICE",
153      "members": [
154        {
155          "type": "REPEAT1",
156          "content": {
157            "type": "STRING",
158            "value": ";;"
159          }
160        },
161        {
162          "type": "SEQ",
163          "members": [
164            {
165              "type": "REPEAT1",
166              "content": {
167                "type": "SEQ",
168                "members": [
169                  {
170                    "type": "REPEAT",
171                    "content": {
172                      "type": "STRING",
173                      "value": ";;"
174                    }
175                  },
176                  {
177                    "type": "SYMBOL",
178                    "name": "_signature_item_ext"
179                  }
180                ]
181              }
182            },
183            {
184              "type": "REPEAT",
185              "content": {
186                "type": "STRING",
187                "value": ";;"
188              }
189            }
190          ]
191        }
192      ]
193    },
194    "toplevel_directive": {
195      "type": "SEQ",
196      "members": [
197        {
198          "type": "SYMBOL",
199          "name": "directive"
200        },
201        {
202          "type": "CHOICE",
203          "members": [
204            {
205              "type": "CHOICE",
206              "members": [
207                {
208                  "type": "SYMBOL",
209                  "name": "_constant"
210                },
211                {
212                  "type": "SYMBOL",
213                  "name": "value_path"
214                },
215                {
216                  "type": "SYMBOL",
217                  "name": "module_path"
218                }
219              ]
220            },
221            {
222              "type": "BLANK"
223            }
224          ]
225        }
226      ]
227    },
228    "_structure_item": {
229      "type": "CHOICE",
230      "members": [
231        {
232          "type": "SYMBOL",
233          "name": "value_definition"
234        },
235        {
236          "type": "SYMBOL",
237          "name": "external"
238        },
239        {
240          "type": "SYMBOL",
241          "name": "type_definition"
242        },
243        {
244          "type": "SYMBOL",
245          "name": "exception_definition"
246        },
247        {
248          "type": "SYMBOL",
249          "name": "module_definition"
250        },
251        {
252          "type": "SYMBOL",
253          "name": "module_type_definition"
254        },
255        {
256          "type": "SYMBOL",
257          "name": "open_module"
258        },
259        {
260          "type": "SYMBOL",
261          "name": "include_module"
262        },
263        {
264          "type": "SYMBOL",
265          "name": "class_definition"
266        },
267        {
268          "type": "SYMBOL",
269          "name": "class_type_definition"
270        },
271        {
272          "type": "SYMBOL",
273          "name": "floating_attribute"
274        }
275      ]
276    },
277    "_structure_item_ext": {
278      "type": "CHOICE",
279      "members": [
280        {
281          "type": "SYMBOL",
282          "name": "_structure_item"
283        },
284        {
285          "type": "SYMBOL",
286          "name": "_item_extension"
287        }
288      ]
289    },
290    "value_definition": {
291      "type": "SEQ",
292      "members": [
293        {
294          "type": "CHOICE",
295          "members": [
296            {
297              "type": "SEQ",
298              "members": [
299                {
300                  "type": "STRING",
301                  "value": "let"
302                },
303                {
304                  "type": "CHOICE",
305                  "members": [
306                    {
307                      "type": "SYMBOL",
308                      "name": "_attribute"
309                    },
310                    {
311                      "type": "BLANK"
312                    }
313                  ]
314                },
315                {
316                  "type": "CHOICE",
317                  "members": [
318                    {
319                      "type": "STRING",
320                      "value": "rec"
321                    },
322                    {
323                      "type": "BLANK"
324                    }
325                  ]
326                }
327              ]
328            },
329            {
330              "type": "SYMBOL",
331              "name": "let_operator"
332            }
333          ]
334        },
335        {
336          "type": "SEQ",
337          "members": [
338            {
339              "type": "SYMBOL",
340              "name": "let_binding"
341            },
342            {
343              "type": "REPEAT",
344              "content": {
345                "type": "SEQ",
346                "members": [
347                  {
348                    "type": "CHOICE",
349                    "members": [
350                      {
351                        "type": "STRING",
352                        "value": "and"
353                      },
354                      {
355                        "type": "SYMBOL",
356                        "name": "and_operator"
357                      }
358                    ]
359                  },
360                  {
361                    "type": "SYMBOL",
362                    "name": "let_binding"
363                  }
364                ]
365              }
366            }
367          ]
368        }
369      ]
370    },
371    "let_binding": {
372      "type": "PREC_RIGHT",
373      "value": 0,
374      "content": {
375        "type": "SEQ",
376        "members": [
377          {
378            "type": "FIELD",
379            "name": "pattern",
380            "content": {
381              "type": "SYMBOL",
382              "name": "_binding_pattern_ext"
383            }
384          },
385          {
386            "type": "CHOICE",
387            "members": [
388              {
389                "type": "SEQ",
390                "members": [
391                  {
392                    "type": "REPEAT",
393                    "content": {
394                      "type": "SYMBOL",
395                      "name": "_parameter"
396                    }
397                  },
398                  {
399                    "type": "CHOICE",
400                    "members": [
401                      {
402                        "type": "SYMBOL",
403                        "name": "_polymorphic_typed"
404                      },
405                      {
406                        "type": "BLANK"
407                      }
408                    ]
409                  },
410                  {
411                    "type": "CHOICE",
412                    "members": [
413                      {
414                        "type": "SEQ",
415                        "members": [
416                          {
417                            "type": "STRING",
418                            "value": ":>"
419                          },
420                          {
421                            "type": "SYMBOL",
422                            "name": "_type_ext"
423                          }
424                        ]
425                      },
426                      {
427                        "type": "BLANK"
428                      }
429                    ]
430                  },
431                  {
432                    "type": "STRING",
433                    "value": "="
434                  },
435                  {
436                    "type": "FIELD",
437                    "name": "body",
438                    "content": {
439                      "type": "SYMBOL",
440                      "name": "_sequence_expression_ext"
441                    }
442                  }
443                ]
444              },
445              {
446                "type": "BLANK"
447              }
448            ]
449          },
450          {
451            "type": "REPEAT",
452            "content": {
453              "type": "SYMBOL",
454              "name": "item_attribute"
455            }
456          }
457        ]
458      }
459    },
460    "_parameter": {
461      "type": "CHOICE",
462      "members": [
463        {
464          "type": "SYMBOL",
465          "name": "parameter"
466        },
467        {
468          "type": "ALIAS",
469          "content": {
470            "type": "SYMBOL",
471            "name": "_parenthesized_abstract_type"
472          },
473          "named": true,
474          "value": "abstract_type"
475        }
476      ]
477    },
478    "parameter": {
479      "type": "CHOICE",
480      "members": [
481        {
482          "type": "FIELD",
483          "name": "pattern",
484          "content": {
485            "type": "SYMBOL",
486            "name": "_simple_pattern_ext"
487          }
488        },
489        {
490          "type": "SEQ",
491          "members": [
492            {
493              "type": "CHOICE",
494              "members": [
495                {
496                  "type": "STRING",
497                  "value": "~"
498                },
499                {
500                  "type": "STRING",
501                  "value": "?"
502                }
503              ]
504            },
505            {
506              "type": "FIELD",
507              "name": "pattern",
508              "content": {
509                "type": "ALIAS",
510                "content": {
511                  "type": "SYMBOL",
512                  "name": "_identifier"
513                },
514                "named": true,
515                "value": "value_pattern"
516              }
517            }
518          ]
519        },
520        {
521          "type": "SEQ",
522          "members": [
523            {
524              "type": "SYMBOL",
525              "name": "_label"
526            },
527            {
528              "type": "IMMEDIATE_TOKEN",
529              "content": {
530                "type": "STRING",
531                "value": ":"
532              }
533            },
534            {
535              "type": "FIELD",
536              "name": "pattern",
537              "content": {
538                "type": "SYMBOL",
539                "name": "_simple_pattern_ext"
540              }
541            }
542          ]
543        },
544        {
545          "type": "SEQ",
546          "members": [
547            {
548              "type": "CHOICE",
549              "members": [
550                {
551                  "type": "STRING",
552                  "value": "~"
553                },
554                {
555                  "type": "STRING",
556                  "value": "?"
557                }
558              ]
559            },
560            {
561              "type": "STRING",
562              "value": "("
563            },
564            {
565              "type": "FIELD",
566              "name": "pattern",
567              "content": {
568                "type": "ALIAS",
569                "content": {
570                  "type": "SYMBOL",
571                  "name": "_identifier"
572                },
573                "named": true,
574                "value": "value_pattern"
575              }
576            },
577            {
578              "type": "CHOICE",
579              "members": [
580                {
581                  "type": "SYMBOL",
582                  "name": "_typed"
583                },
584                {
585                  "type": "BLANK"
586                }
587              ]
588            },
589            {
590              "type": "CHOICE",
591              "members": [
592                {
593                  "type": "SEQ",
594                  "members": [
595                    {
596                      "type": "STRING",
597                      "value": "="
598                    },
599                    {
600                      "type": "SYMBOL",
601                      "name": "_sequence_expression_ext"
602                    }
603                  ]
604                },
605                {
606                  "type": "BLANK"
607                }
608              ]
609            },
610            {
611              "type": "STRING",
612              "value": ")"
613            }
614          ]
615        },
616        {
617          "type": "SEQ",
618          "members": [
619            {
620              "type": "SYMBOL",
621              "name": "_label"
622            },
623            {
624              "type": "IMMEDIATE_TOKEN",
625              "content": {
626                "type": "STRING",
627                "value": ":"
628              }
629            },
630            {
631              "type": "STRING",
632              "value": "("
633            },
634            {
635              "type": "FIELD",
636              "name": "pattern",
637              "content": {
638                "type": "SYMBOL",
639                "name": "_pattern_ext"
640              }
641            },
642            {
643              "type": "CHOICE",
644              "members": [
645                {
646                  "type": "SYMBOL",
647                  "name": "_typed"
648                },
649                {
650                  "type": "BLANK"
651                }
652              ]
653            },
654            {
655              "type": "SEQ",
656              "members": [
657                {
658                  "type": "STRING",
659                  "value": "="
660                },
661                {
662                  "type": "SYMBOL",
663                  "name": "_sequence_expression_ext"
664                }
665              ]
666            },
667            {
668              "type": "STRING",
669              "value": ")"
670            }
671          ]
672        }
673      ]
674    },
675    "external": {
676      "type": "SEQ",
677      "members": [
678        {
679          "type": "STRING",
680          "value": "external"
681        },
682        {
683          "type": "CHOICE",
684          "members": [
685            {
686              "type": "SYMBOL",
687              "name": "_attribute"
688            },
689            {
690              "type": "BLANK"
691            }
692          ]
693        },
694        {
695          "type": "SYMBOL",
696          "name": "_value_name"
697        },
698        {
699          "type": "SYMBOL",
700          "name": "_polymorphic_typed"
701        },
702        {
703          "type": "STRING",
704          "value": "="
705        },
706        {
707          "type": "REPEAT1",
708          "content": {
709            "type": "SYMBOL",
710            "name": "string"
711          }
712        },
713        {
714          "type": "REPEAT",
715          "content": {
716            "type": "SYMBOL",
717            "name": "item_attribute"
718          }
719        }
720      ]
721    },
722    "type_definition": {
723      "type": "SEQ",
724      "members": [
725        {
726          "type": "STRING",
727          "value": "type"
728        },
729        {
730          "type": "CHOICE",
731          "members": [
732            {
733              "type": "SYMBOL",
734              "name": "_attribute"
735            },
736            {
737              "type": "BLANK"
738            }
739          ]
740        },
741        {
742          "type": "CHOICE",
743          "members": [
744            {
745              "type": "STRING",
746              "value": "nonrec"
747            },
748            {
749              "type": "BLANK"
750            }
751          ]
752        },
753        {
754          "type": "SEQ",
755          "members": [
756            {
757              "type": "SYMBOL",
758              "name": "type_binding"
759            },
760            {
761              "type": "REPEAT",
762              "content": {
763                "type": "SEQ",
764                "members": [
765                  {
766                    "type": "STRING",
767                    "value": "and"
768                  },
769                  {
770                    "type": "SYMBOL",
771                    "name": "type_binding"
772                  }
773                ]
774              }
775            }
776          ]
777        }
778      ]
779    },
780    "type_binding": {
781      "type": "SEQ",
782      "members": [
783        {
784          "type": "CHOICE",
785          "members": [
786            {
787              "type": "SYMBOL",
788              "name": "_type_params"
789            },
790            {
791              "type": "BLANK"
792            }
793          ]
794        },
795        {
796          "type": "CHOICE",
797          "members": [
798            {
799              "type": "SEQ",
800              "members": [
801                {
802                  "type": "FIELD",
803                  "name": "name",
804                  "content": {
805                    "type": "SYMBOL",
806                    "name": "_type_constructor"
807                  }
808                },
809                {
810                  "type": "CHOICE",
811                  "members": [
812                    {
813                      "type": "SYMBOL",
814                      "name": "_type_equation"
815                    },
816                    {
817                      "type": "BLANK"
818                    }
819                  ]
820                },
821                {
822                  "type": "CHOICE",
823                  "members": [
824                    {
825                      "type": "SEQ",
826                      "members": [
827                        {
828                          "type": "STRING",
829                          "value": "="
830                        },
831                        {
832                          "type": "CHOICE",
833                          "members": [
834                            {
835                              "type": "STRING",
836                              "value": "private"
837                            },
838                            {
839                              "type": "BLANK"
840                            }
841                          ]
842                        },
843                        {
844                          "type": "FIELD",
845                          "name": "body",
846                          "content": {
847                            "type": "CHOICE",
848                            "members": [
849                              {
850                                "type": "SYMBOL",
851                                "name": "variant_declaration"
852                              },
853                              {
854                                "type": "SYMBOL",
855                                "name": "record_declaration"
856                              },
857                              {
858                                "type": "STRING",
859                                "value": ".."
860                              }
861                            ]
862                          }
863                        }
864                      ]
865                    },
866                    {
867                      "type": "BLANK"
868                    }
869                  ]
870                },
871                {
872                  "type": "REPEAT",
873                  "content": {
874                    "type": "SYMBOL",
875                    "name": "type_constraint"
876                  }
877                }
878              ]
879            },
880            {
881              "type": "SEQ",
882              "members": [
883                {
884                  "type": "FIELD",
885                  "name": "name",
886                  "content": {
887                    "type": "SYMBOL",
888                    "name": "type_constructor_path"
889                  }
890                },
891                {
892                  "type": "SEQ",
893                  "members": [
894                    {
895                      "type": "STRING",
896                      "value": "+="
897                    },
898                    {
899                      "type": "CHOICE",
900                      "members": [
901                        {
902                          "type": "STRING",
903                          "value": "private"
904                        },
905                        {
906                          "type": "BLANK"
907                        }
908                      ]
909                    },
910                    {
911                      "type": "FIELD",
912                      "name": "body",
913                      "content": {
914                        "type": "SYMBOL",
915                        "name": "variant_declaration"
916                      }
917                    }
918                  ]
919                }
920              ]
921            }
922          ]
923        },
924        {
925          "type": "REPEAT",
926          "content": {
927            "type": "SYMBOL",
928            "name": "item_attribute"
929          }
930        }
931      ]
932    },
933    "_type_params": {
934      "type": "CHOICE",
935      "members": [
936        {
937          "type": "SYMBOL",
938          "name": "_type_param"
939        },
940        {
941          "type": "SEQ",
942          "members": [
943            {
944              "type": "STRING",
945              "value": "("
946            },
947            {
948              "type": "SEQ",
949              "members": [
950                {
951                  "type": "SYMBOL",
952                  "name": "_type_param"
953                },
954                {
955                  "type": "REPEAT",
956                  "content": {
957                    "type": "SEQ",
958                    "members": [
959                      {
960                        "type": "STRING",
961                        "value": ","
962                      },
963                      {
964                        "type": "SYMBOL",
965                        "name": "_type_param"
966                      }
967                    ]
968                  }
969                }
970              ]
971            },
972            {
973              "type": "STRING",
974              "value": ")"
975            }
976          ]
977        }
978      ]
979    },
980    "_type_param": {
981      "type": "SEQ",
982      "members": [
983        {
984          "type": "CHOICE",
985          "members": [
986            {
987              "type": "CHOICE",
988              "members": [
989                {
990                  "type": "SEQ",
991                  "members": [
992                    {
993                      "type": "STRING",
994                      "value": "+"
995                    },
996                    {
997                      "type": "CHOICE",
998                      "members": [
999                        {
1000                          "type": "STRING",
1001                          "value": "!"
1002                        },
1003                        {
1004                          "type": "BLANK"
1005                        }
1006                      ]
1007                    }
1008                  ]
1009                },
1010                {
1011                  "type": "SEQ",
1012                  "members": [
1013                    {
1014                      "type": "STRING",
1015                      "value": "-"
1016                    },
1017                    {
1018                      "type": "CHOICE",
1019                      "members": [
1020                        {
1021                          "type": "STRING",
1022                          "value": "!"
1023                        },
1024                        {
1025                          "type": "BLANK"
1026                        }
1027                      ]
1028                    }
1029                  ]
1030                },
1031                {
1032                  "type": "SEQ",
1033                  "members": [
1034                    {
1035                      "type": "STRING",
1036                      "value": "!"
1037                    },
1038                    {
1039                      "type": "CHOICE",
1040                      "members": [
1041                        {
1042                          "type": "CHOICE",
1043                          "members": [
1044                            {
1045                              "type": "STRING",
1046                              "value": "+"
1047                            },
1048                            {
1049                              "type": "STRING",
1050                              "value": "-"
1051                            }
1052                          ]
1053                        },
1054                        {
1055                          "type": "BLANK"
1056                        }
1057                      ]
1058                    }
1059                  ]
1060                }
1061              ]
1062            },
1063            {
1064              "type": "BLANK"
1065            }
1066          ]
1067        },
1068        {
1069          "type": "CHOICE",
1070          "members": [
1071            {
1072              "type": "SYMBOL",
1073              "name": "type_variable"
1074            },
1075            {
1076              "type": "ALIAS",
1077              "content": {
1078                "type": "STRING",
1079                "value": "_"
1080              },
1081              "named": true,
1082              "value": "type_variable"
1083            }
1084          ]
1085        }
1086      ]
1087    },
1088    "_type_equation": {
1089      "type": "SEQ",
1090      "members": [
1091        {
1092          "type": "CHOICE",
1093          "members": [
1094            {
1095              "type": "STRING",
1096              "value": "="
1097            },
1098            {
1099              "type": "STRING",
1100              "value": ":="
1101            }
1102          ]
1103        },
1104        {
1105          "type": "CHOICE",
1106          "members": [
1107            {
1108              "type": "STRING",
1109              "value": "private"
1110            },
1111            {
1112              "type": "BLANK"
1113            }
1114          ]
1115        },
1116        {
1117          "type": "SYMBOL",
1118          "name": "_type_ext"
1119        }
1120      ]
1121    },
1122    "variant_declaration": {
1123      "type": "CHOICE",
1124      "members": [
1125        {
1126          "type": "SEQ",
1127          "members": [
1128            {
1129              "type": "STRING",
1130              "value": "|"
1131            },
1132            {
1133              "type": "CHOICE",
1134              "members": [
1135                {
1136                  "type": "SEQ",
1137                  "members": [
1138                    {
1139                      "type": "SYMBOL",
1140                      "name": "constructor_declaration"
1141                    },
1142                    {
1143                      "type": "REPEAT",
1144                      "content": {
1145                        "type": "SEQ",
1146                        "members": [
1147                          {
1148                            "type": "STRING",
1149                            "value": "|"
1150                          },
1151                          {
1152                            "type": "SYMBOL",
1153                            "name": "constructor_declaration"
1154                          }
1155                        ]
1156                      }
1157                    }
1158                  ]
1159                },
1160                {
1161                  "type": "BLANK"
1162                }
1163              ]
1164            }
1165          ]
1166        },
1167        {
1168          "type": "SEQ",
1169          "members": [
1170            {
1171              "type": "SYMBOL",
1172              "name": "constructor_declaration"
1173            },
1174            {
1175              "type": "REPEAT",
1176              "content": {
1177                "type": "SEQ",
1178                "members": [
1179                  {
1180                    "type": "STRING",
1181                    "value": "|"
1182                  },
1183                  {
1184                    "type": "SYMBOL",
1185                    "name": "constructor_declaration"
1186                  }
1187                ]
1188              }
1189            }
1190          ]
1191        }
1192      ]
1193    },
1194    "constructor_declaration": {
1195      "type": "SEQ",
1196      "members": [
1197        {
1198          "type": "CHOICE",
1199          "members": [
1200            {
1201              "type": "SYMBOL",
1202              "name": "_constructor_name"
1203            },
1204            {
1205              "type": "ALIAS",
1206              "content": {
1207                "type": "CHOICE",
1208                "members": [
1209                  {
1210                    "type": "SEQ",
1211                    "members": [
1212                      {
1213                        "type": "STRING",
1214                        "value": "["
1215                      },
1216                      {
1217                        "type": "STRING",
1218                        "value": "]"
1219                      }
1220                    ]
1221                  },
1222                  {
1223                    "type": "SEQ",
1224                    "members": [
1225                      {
1226                        "type": "STRING",
1227                        "value": "("
1228                      },
1229                      {
1230                        "type": "STRING",
1231                        "value": ")"
1232                      }
1233                    ]
1234                  },
1235                  {
1236                    "type": "STRING",
1237                    "value": "true"
1238                  },
1239                  {
1240                    "type": "STRING",
1241                    "value": "false"
1242                  }
1243                ]
1244              },
1245              "named": true,
1246              "value": "constructor_name"
1247            }
1248          ]
1249        },
1250        {
1251          "type": "CHOICE",
1252          "members": [
1253            {
1254              "type": "CHOICE",
1255              "members": [
1256                {
1257                  "type": "SEQ",
1258                  "members": [
1259                    {
1260                      "type": "STRING",
1261                      "value": "of"
1262                    },
1263                    {
1264                      "type": "SYMBOL",
1265                      "name": "_constructor_argument"
1266                    }
1267                  ]
1268                },
1269                {
1270                  "type": "SEQ",
1271                  "members": [
1272                    {
1273                      "type": "STRING",
1274                      "value": ":"
1275                    },
1276                    {
1277                      "type": "CHOICE",
1278                      "members": [
1279                        {
1280                          "type": "SEQ",
1281                          "members": [
1282                            {
1283                              "type": "REPEAT1",
1284                              "content": {
1285                                "type": "SYMBOL",
1286                                "name": "type_variable"
1287                              }
1288                            },
1289                            {
1290                              "type": "STRING",
1291                              "value": "."
1292                            }
1293                          ]
1294                        },
1295                        {
1296                          "type": "BLANK"
1297                        }
1298                      ]
1299                    },
1300                    {
1301                      "type": "CHOICE",
1302                      "members": [
1303                        {
1304                          "type": "SEQ",
1305                          "members": [
1306                            {
1307                              "type": "SYMBOL",
1308                              "name": "_constructor_argument"
1309                            },
1310                            {
1311                              "type": "STRING",
1312                              "value": "->"
1313                            }
1314                          ]
1315                        },
1316                        {
1317                          "type": "BLANK"
1318                        }
1319                      ]
1320                    },
1321                    {
1322                      "type": "SYMBOL",
1323                      "name": "_simple_type_ext"
1324                    }
1325                  ]
1326                },
1327                {
1328                  "type": "SEQ",
1329                  "members": [
1330                    {
1331                      "type": "STRING",
1332                      "value": "="
1333                    },
1334                    {
1335                      "type": "SYMBOL",
1336                      "name": "constructor_path"
1337                    }
1338                  ]
1339                }
1340              ]
1341            },
1342            {
1343              "type": "BLANK"
1344            }
1345          ]
1346        }
1347      ]
1348    },
1349    "_constructor_argument": {
1350      "type": "CHOICE",
1351      "members": [
1352        {
1353          "type": "SEQ",
1354          "members": [
1355            {
1356              "type": "SYMBOL",
1357              "name": "_simple_type_ext"
1358            },
1359            {
1360              "type": "REPEAT",
1361              "content": {
1362                "type": "SEQ",
1363                "members": [
1364                  {
1365                    "type": "STRING",
1366                    "value": "*"
1367                  },
1368                  {
1369                    "type": "SYMBOL",
1370                    "name": "_simple_type_ext"
1371                  }
1372                ]
1373              }
1374            }
1375          ]
1376        },
1377        {
1378          "type": "SYMBOL",
1379          "name": "record_declaration"
1380        }
1381      ]
1382    },
1383    "record_declaration": {
1384      "type": "SEQ",
1385      "members": [
1386        {
1387          "type": "STRING",
1388          "value": "{"
1389        },
1390        {
1391          "type": "SEQ",
1392          "members": [
1393            {
1394              "type": "SYMBOL",
1395              "name": "field_declaration"
1396            },
1397            {
1398              "type": "REPEAT",
1399              "content": {
1400                "type": "SEQ",
1401                "members": [
1402                  {
1403                    "type": "STRING",
1404                    "value": ";"
1405                  },
1406                  {
1407                    "type": "SYMBOL",
1408                    "name": "field_declaration"
1409                  }
1410                ]
1411              }
1412            }
1413          ]
1414        },
1415        {
1416          "type": "CHOICE",
1417          "members": [
1418            {
1419              "type": "STRING",
1420              "value": ";"
1421            },
1422            {
1423              "type": "BLANK"
1424            }
1425          ]
1426        },
1427        {
1428          "type": "STRING",
1429          "value": "}"
1430        }
1431      ]
1432    },
1433    "field_declaration": {
1434      "type": "SEQ",
1435      "members": [
1436        {
1437          "type": "CHOICE",
1438          "members": [
1439            {
1440              "type": "STRING",
1441              "value": "mutable"
1442            },
1443            {
1444              "type": "BLANK"
1445            }
1446          ]
1447        },
1448        {
1449          "type": "SYMBOL",
1450          "name": "_field_name"
1451        },
1452        {
1453          "type": "SYMBOL",
1454          "name": "_polymorphic_typed"
1455        }
1456      ]
1457    },
1458    "type_constraint": {
1459      "type": "SEQ",
1460      "members": [
1461        {
1462          "type": "STRING",
1463          "value": "constraint"
1464        },
1465        {
1466          "type": "SYMBOL",
1467          "name": "_type_ext"
1468        },
1469        {
1470          "type": "STRING",
1471          "value": "="
1472        },
1473        {
1474          "type": "SYMBOL",
1475          "name": "_type_ext"
1476        }
1477      ]
1478    },
1479    "exception_definition": {
1480      "type": "SEQ",
1481      "members": [
1482        {
1483          "type": "STRING",
1484          "value": "exception"
1485        },
1486        {
1487          "type": "CHOICE",
1488          "members": [
1489            {
1490              "type": "SYMBOL",
1491              "name": "_attribute"
1492            },
1493            {
1494              "type": "BLANK"
1495            }
1496          ]
1497        },
1498        {
1499          "type": "SYMBOL",
1500          "name": "constructor_declaration"
1501        },
1502        {
1503          "type": "REPEAT",
1504          "content": {
1505            "type": "SYMBOL",
1506            "name": "item_attribute"
1507          }
1508        }
1509      ]
1510    },
1511    "module_definition": {
1512      "type": "SEQ",
1513      "members": [
1514        {
1515          "type": "STRING",
1516          "value": "module"
1517        },
1518        {
1519          "type": "CHOICE",
1520          "members": [
1521            {
1522              "type": "SYMBOL",
1523              "name": "_attribute"
1524            },
1525            {
1526              "type": "BLANK"
1527            }
1528          ]
1529        },
1530        {
1531          "type": "CHOICE",
1532          "members": [
1533            {
1534              "type": "STRING",
1535              "value": "rec"
1536            },
1537            {
1538              "type": "BLANK"
1539            }
1540          ]
1541        },
1542        {
1543          "type": "SEQ",
1544          "members": [
1545            {
1546              "type": "SYMBOL",
1547              "name": "module_binding"
1548            },
1549            {
1550              "type": "REPEAT",
1551              "content": {
1552                "type": "SEQ",
1553                "members": [
1554                  {
1555                    "type": "STRING",
1556                    "value": "and"
1557                  },
1558                  {
1559                    "type": "SYMBOL",
1560                    "name": "module_binding"
1561                  }
1562                ]
1563              }
1564            }
1565          ]
1566        }
1567      ]
1568    },
1569    "module_binding": {
1570      "type": "SEQ",
1571      "members": [
1572        {
1573          "type": "FIELD",
1574          "name": "name",
1575          "content": {
1576            "type": "CHOICE",
1577            "members": [
1578              {
1579                "type": "SYMBOL",
1580                "name": "_module_name"
1581              },
1582              {
1583                "type": "ALIAS",
1584                "content": {
1585                  "type": "STRING",
1586                  "value": "_"
1587                },
1588                "named": true,
1589                "value": "module_name"
1590              }
1591            ]
1592          }
1593        },
1594        {
1595          "type": "REPEAT",
1596          "content": {
1597            "type": "SYMBOL",
1598            "name": "module_parameter"
1599          }
1600        },
1601        {
1602          "type": "CHOICE",
1603          "members": [
1604            {
1605              "type": "SYMBOL",
1606              "name": "_module_typed"
1607            },
1608            {
1609              "type": "BLANK"
1610            }
1611          ]
1612        },
1613        {
1614          "type": "CHOICE",
1615          "members": [
1616            {
1617              "type": "SEQ",
1618              "members": [
1619                {
1620                  "type": "CHOICE",
1621                  "members": [
1622                    {
1623                      "type": "STRING",
1624                      "value": "="
1625                    },
1626                    {
1627                      "type": "STRING",
1628                      "value": ":="
1629                    }
1630                  ]
1631                },
1632                {
1633                  "type": "FIELD",
1634                  "name": "body",
1635                  "content": {
1636                    "type": "SYMBOL",
1637                    "name": "_module_expression_ext"
1638                  }
1639                }
1640              ]
1641            },
1642            {
1643              "type": "BLANK"
1644            }
1645          ]
1646        },
1647        {
1648          "type": "REPEAT",
1649          "content": {
1650            "type": "SYMBOL",
1651            "name": "item_attribute"
1652          }
1653        }
1654      ]
1655    },
1656    "module_parameter": {
1657      "type": "SEQ",
1658      "members": [
1659        {
1660          "type": "STRING",
1661          "value": "("
1662        },
1663        {
1664          "type": "CHOICE",
1665          "members": [
1666            {
1667              "type": "SEQ",
1668              "members": [
1669                {
1670                  "type": "FIELD",
1671                  "name": "name",
1672                  "content": {
1673                    "type": "CHOICE",
1674                    "members": [
1675                      {
1676                        "type": "SYMBOL",
1677                        "name": "_module_name"
1678                      },
1679                      {
1680                        "type": "ALIAS",
1681                        "content": {
1682                          "type": "STRING",
1683                          "value": "_"
1684                        },
1685                        "named": true,
1686                        "value": "module_name"
1687                      }
1688                    ]
1689                  }
1690                },
1691                {
1692                  "type": "SYMBOL",
1693                  "name": "_module_typed"
1694                }
1695              ]
1696            },
1697            {
1698              "type": "BLANK"
1699            }
1700          ]
1701        },
1702        {
1703          "type": "STRING",
1704          "value": ")"
1705        }
1706      ]
1707    },
1708    "module_type_definition": {
1709      "type": "SEQ",
1710      "members": [
1711        {
1712          "type": "STRING",
1713          "value": "module"
1714        },
1715        {
1716          "type": "STRING",
1717          "value": "type"
1718        },
1719        {
1720          "type": "CHOICE",
1721          "members": [
1722            {
1723              "type": "SYMBOL",
1724              "name": "_attribute"
1725            },
1726            {
1727              "type": "BLANK"
1728            }
1729          ]
1730        },
1731        {
1732          "type": "FIELD",
1733          "name": "name",
1734          "content": {
1735            "type": "SYMBOL",
1736            "name": "_module_type_name"
1737          }
1738        },
1739        {
1740          "type": "CHOICE",
1741          "members": [
1742            {
1743              "type": "SEQ",
1744              "members": [
1745                {
1746                  "type": "CHOICE",
1747                  "members": [
1748                    {
1749                      "type": "STRING",
1750                      "value": "="
1751                    },
1752                    {
1753                      "type": "STRING",
1754                      "value": ":="
1755                    }
1756                  ]
1757                },
1758                {
1759                  "type": "FIELD",
1760                  "name": "body",
1761                  "content": {
1762                    "type": "SYMBOL",
1763                    "name": "_module_type_ext"
1764                  }
1765                }
1766              ]
1767            },
1768            {
1769              "type": "BLANK"
1770            }
1771          ]
1772        },
1773        {
1774          "type": "REPEAT",
1775          "content": {
1776            "type": "SYMBOL",
1777            "name": "item_attribute"
1778          }
1779        }
1780      ]
1781    },
1782    "open_module": {
1783      "type": "SEQ",
1784      "members": [
1785        {
1786          "type": "STRING",
1787          "value": "open"
1788        },
1789        {
1790          "type": "CHOICE",
1791          "members": [
1792            {
1793              "type": "STRING",
1794              "value": "!"
1795            },
1796            {
1797              "type": "BLANK"
1798            }
1799          ]
1800        },
1801        {
1802          "type": "CHOICE",
1803          "members": [
1804            {
1805              "type": "SYMBOL",
1806              "name": "_attribute"
1807            },
1808            {
1809              "type": "BLANK"
1810            }
1811          ]
1812        },
1813        {
1814          "type": "SYMBOL",
1815          "name": "_module_expression_ext"
1816        },
1817        {
1818          "type": "REPEAT",
1819          "content": {
1820            "type": "SYMBOL",
1821            "name": "item_attribute"
1822          }
1823        }
1824      ]
1825    },
1826    "include_module": {
1827      "type": "SEQ",
1828      "members": [
1829        {
1830          "type": "STRING",
1831          "value": "include"
1832        },
1833        {
1834          "type": "CHOICE",
1835          "members": [
1836            {
1837              "type": "SYMBOL",
1838              "name": "_attribute"
1839            },
1840            {
1841              "type": "BLANK"
1842            }
1843          ]
1844        },
1845        {
1846          "type": "SYMBOL",
1847          "name": "_module_expression_ext"
1848        },
1849        {
1850          "type": "REPEAT",
1851          "content": {
1852            "type": "SYMBOL",
1853            "name": "item_attribute"
1854          }
1855        }
1856      ]
1857    },
1858    "class_definition": {
1859      "type": "SEQ",
1860      "members": [
1861        {
1862          "type": "STRING",
1863          "value": "class"
1864        },
1865        {
1866          "type": "CHOICE",
1867          "members": [
1868            {
1869              "type": "SYMBOL",
1870              "name": "_attribute"
1871            },
1872            {
1873              "type": "BLANK"
1874            }
1875          ]
1876        },
1877        {
1878          "type": "SEQ",
1879          "members": [
1880            {
1881              "type": "SYMBOL",
1882              "name": "class_binding"
1883            },
1884            {
1885              "type": "REPEAT",
1886              "content": {
1887                "type": "SEQ",
1888                "members": [
1889                  {
1890                    "type": "STRING",
1891                    "value": "and"
1892                  },
1893                  {
1894                    "type": "SYMBOL",
1895                    "name": "class_binding"
1896                  }
1897                ]
1898              }
1899            }
1900          ]
1901        }
1902      ]
1903    },
1904    "class_binding": {
1905      "type": "PREC_RIGHT",
1906      "value": 0,
1907      "content": {
1908        "type": "SEQ",
1909        "members": [
1910          {
1911            "type": "CHOICE",
1912            "members": [
1913              {
1914                "type": "STRING",
1915                "value": "virtual"
1916              },
1917              {
1918                "type": "BLANK"
1919              }
1920            ]
1921          },
1922          {
1923            "type": "CHOICE",
1924            "members": [
1925              {
1926                "type": "SEQ",
1927                "members": [
1928                  {
1929                    "type": "STRING",
1930                    "value": "["
1931                  },
1932                  {
1933                    "type": "SEQ",
1934                    "members": [
1935                      {
1936                        "type": "SYMBOL",
1937                        "name": "_type_param"
1938                      },
1939                      {
1940                        "type": "REPEAT",
1941                        "content": {
1942                          "type": "SEQ",
1943                          "members": [
1944                            {
1945                              "type": "STRING",
1946                              "value": ","
1947                            },
1948                            {
1949                              "type": "SYMBOL",
1950                              "name": "_type_param"
1951                            }
1952                          ]
1953                        }
1954                      }
1955                    ]
1956                  },
1957                  {
1958                    "type": "STRING",
1959                    "value": "]"
1960                  }
1961                ]
1962              },
1963              {
1964                "type": "BLANK"
1965              }
1966            ]
1967          },
1968          {
1969            "type": "FIELD",
1970            "name": "name",
1971            "content": {
1972              "type": "SYMBOL",
1973              "name": "_class_name"
1974            }
1975          },
1976          {
1977            "type": "REPEAT",
1978            "content": {
1979              "type": "SYMBOL",
1980              "name": "_parameter"
1981            }
1982          },
1983          {
1984            "type": "CHOICE",
1985            "members": [
1986              {
1987                "type": "SYMBOL",
1988                "name": "_class_typed"
1989              },
1990              {
1991                "type": "BLANK"
1992              }
1993            ]
1994          },
1995          {
1996            "type": "CHOICE",
1997            "members": [
1998              {
1999                "type": "SEQ",
2000                "members": [
2001                  {
2002                    "type": "STRING",
2003                    "value": "="
2004                  },
2005                  {
2006                    "type": "FIELD",
2007                    "name": "body",
2008                    "content": {
2009                      "type": "SYMBOL",
2010                      "name": "_class_expression_ext"
2011                    }
2012                  }
2013                ]
2014              },
2015              {
2016                "type": "BLANK"
2017              }
2018            ]
2019          },
2020          {
2021            "type": "REPEAT",
2022            "content": {
2023              "type": "SYMBOL",
2024              "name": "item_attribute"
2025            }
2026          }
2027        ]
2028      }
2029    },
2030    "class_type_definition": {
2031      "type": "SEQ",
2032      "members": [
2033        {
2034          "type": "STRING",
2035          "value": "class"
2036        },
2037        {
2038          "type": "STRING",
2039          "value": "type"
2040        },
2041        {
2042          "type": "CHOICE",
2043          "members": [
2044            {
2045              "type": "SYMBOL",
2046              "name": "_attribute"
2047            },
2048            {
2049              "type": "BLANK"
2050            }
2051          ]
2052        },
2053        {
2054          "type": "SEQ",
2055          "members": [
2056            {
2057              "type": "SYMBOL",
2058              "name": "class_type_binding"
2059            },
2060            {
2061              "type": "REPEAT",
2062              "content": {
2063                "type": "SEQ",
2064                "members": [
2065                  {
2066                    "type": "STRING",
2067                    "value": "and"
2068                  },
2069                  {
2070                    "type": "SYMBOL",
2071                    "name": "class_type_binding"
2072                  }
2073                ]
2074              }
2075            }
2076          ]
2077        }
2078      ]
2079    },
2080    "class_type_binding": {
2081      "type": "SEQ",
2082      "members": [
2083        {
2084          "type": "CHOICE",
2085          "members": [
2086            {
2087              "type": "STRING",
2088              "value": "virtual"
2089            },
2090            {
2091              "type": "BLANK"
2092            }
2093          ]
2094        },
2095        {
2096          "type": "CHOICE",
2097          "members": [
2098            {
2099              "type": "SEQ",
2100              "members": [
2101                {
2102                  "type": "STRING",
2103                  "value": "["
2104                },
2105                {
2106                  "type": "SEQ",
2107                  "members": [
2108                    {
2109                      "type": "SYMBOL",
2110                      "name": "_type_param"
2111                    },
2112                    {
2113                      "type": "REPEAT",
2114                      "content": {
2115                        "type": "SEQ",
2116                        "members": [
2117                          {
2118                            "type": "STRING",
2119                            "value": ","
2120                          },
2121                          {
2122                            "type": "SYMBOL",
2123                            "name": "_type_param"
2124                          }
2125                        ]
2126                      }
2127                    }
2128                  ]
2129                },
2130                {
2131                  "type": "STRING",
2132                  "value": "]"
2133                }
2134              ]
2135            },
2136            {
2137              "type": "BLANK"
2138            }
2139          ]
2140        },
2141        {
2142          "type": "FIELD",
2143          "name": "name",
2144          "content": {
2145            "type": "SYMBOL",
2146            "name": "_class_type_name"
2147          }
2148        },
2149        {
2150          "type": "STRING",
2151          "value": "="
2152        },
2153        {
2154          "type": "FIELD",
2155          "name": "body",
2156          "content": {
2157            "type": "SYMBOL",
2158            "name": "_simple_class_type_ext"
2159          }
2160        },
2161        {
2162          "type": "REPEAT",
2163          "content": {
2164            "type": "SYMBOL",
2165            "name": "item_attribute"
2166          }
2167        }
2168      ]
2169    },
2170    "_signature_item": {
2171      "type": "CHOICE",
2172      "members": [
2173        {
2174          "type": "SYMBOL",
2175          "name": "value_specification"
2176        },
2177        {
2178          "type": "SYMBOL",
2179          "name": "external"
2180        },
2181        {
2182          "type": "SYMBOL",
2183          "name": "type_definition"
2184        },
2185        {
2186          "type": "SYMBOL",
2187          "name": "exception_definition"
2188        },
2189        {
2190          "type": "SYMBOL",
2191          "name": "module_definition"
2192        },
2193        {
2194          "type": "SYMBOL",
2195          "name": "module_type_definition"
2196        },
2197        {
2198          "type": "SYMBOL",
2199          "name": "open_module"
2200        },
2201        {
2202          "type": "SYMBOL",
2203          "name": "include_module_type"
2204        },
2205        {
2206          "type": "SYMBOL",
2207          "name": "class_definition"
2208        },
2209        {
2210          "type": "SYMBOL",
2211          "name": "class_type_definition"
2212        },
2213        {
2214          "type": "SYMBOL",
2215          "name": "floating_attribute"
2216        }
2217      ]
2218    },
2219    "_signature_item_ext": {
2220      "type": "CHOICE",
2221      "members": [
2222        {
2223          "type": "SYMBOL",
2224          "name": "_signature_item"
2225        },
2226        {
2227          "type": "SYMBOL",
2228          "name": "_item_extension"
2229        }
2230      ]
2231    },
2232    "value_specification": {
2233      "type": "SEQ",
2234      "members": [
2235        {
2236          "type": "STRING",
2237          "value": "val"
2238        },
2239        {
2240          "type": "CHOICE",
2241          "members": [
2242            {
2243              "type": "SYMBOL",
2244              "name": "_attribute"
2245            },
2246            {
2247              "type": "BLANK"
2248            }
2249          ]
2250        },
2251        {
2252          "type": "SYMBOL",
2253          "name": "_value_name"
2254        },
2255        {
2256          "type": "SYMBOL",
2257          "name": "_polymorphic_typed"
2258        },
2259        {
2260          "type": "REPEAT",
2261          "content": {
2262            "type": "SYMBOL",
2263            "name": "item_attribute"
2264          }
2265        }
2266      ]
2267    },
2268    "include_module_type": {
2269      "type": "SEQ",
2270      "members": [
2271        {
2272          "type": "STRING",
2273          "value": "include"
2274        },
2275        {
2276          "type": "CHOICE",
2277          "members": [
2278            {
2279              "type": "SYMBOL",
2280              "name": "_attribute"
2281            },
2282            {
2283              "type": "BLANK"
2284            }
2285          ]
2286        },
2287        {
2288          "type": "SYMBOL",
2289          "name": "_module_type_ext"
2290        },
2291        {
2292          "type": "REPEAT",
2293          "content": {
2294            "type": "SYMBOL",
2295            "name": "item_attribute"
2296          }
2297        }
2298      ]
2299    },
2300    "_module_typed": {
2301      "type": "SEQ",
2302      "members": [
2303        {
2304          "type": "STRING",
2305          "value": ":"
2306        },
2307        {
2308          "type": "SYMBOL",
2309          "name": "_module_type_ext"
2310        }
2311      ]
2312    },
2313    "_module_type": {
2314      "type": "CHOICE",
2315      "members": [
2316        {
2317          "type": "SYMBOL",
2318          "name": "module_type_path"
2319        },
2320        {
2321          "type": "SYMBOL",
2322          "name": "signature"
2323        },
2324        {
2325          "type": "SYMBOL",
2326          "name": "module_type_constraint"
2327        },
2328        {
2329          "type": "SYMBOL",
2330          "name": "module_type_of"
2331        },
2332        {
2333          "type": "SYMBOL",
2334          "name": "functor_type"
2335        },
2336        {
2337          "type": "SYMBOL",
2338          "name": "parenthesized_module_type"
2339        }
2340      ]
2341    },
2342    "_module_type_ext": {
2343      "type": "CHOICE",
2344      "members": [
2345        {
2346          "type": "SYMBOL",
2347          "name": "_module_type"
2348        },
2349        {
2350          "type": "SYMBOL",
2351          "name": "_extension"
2352        }
2353      ]
2354    },
2355    "signature": {
2356      "type": "SEQ",
2357      "members": [
2358        {
2359          "type": "STRING",
2360          "value": "sig"
2361        },
2362        {
2363          "type": "CHOICE",
2364          "members": [
2365            {
2366              "type": "SYMBOL",
2367              "name": "_signature"
2368            },
2369            {
2370              "type": "BLANK"
2371            }
2372          ]
2373        },
2374        {
2375          "type": "STRING",
2376          "value": "end"
2377        }
2378      ]
2379    },
2380    "module_type_constraint": {
2381      "type": "PREC_RIGHT",
2382      "value": 0,
2383      "content": {
2384        "type": "SEQ",
2385        "members": [
2386          {
2387            "type": "SYMBOL",
2388            "name": "_module_type_ext"
2389          },
2390          {
2391            "type": "STRING",
2392            "value": "with"
2393          },
2394          {
2395            "type": "SEQ",
2396            "members": [
2397              {
2398                "type": "CHOICE",
2399                "members": [
2400                  {
2401                    "type": "SYMBOL",
2402                    "name": "constrain_type"
2403                  },
2404                  {
2405                    "type": "SYMBOL",
2406                    "name": "constrain_module"
2407                  },
2408                  {
2409                    "type": "SYMBOL",
2410                    "name": "constrain_module_type"
2411                  }
2412                ]
2413              },
2414              {
2415                "type": "REPEAT",
2416                "content": {
2417                  "type": "SEQ",
2418                  "members": [
2419                    {
2420                      "type": "STRING",
2421                      "value": "and"
2422                    },
2423                    {
2424                      "type": "CHOICE",
2425                      "members": [
2426                        {
2427                          "type": "SYMBOL",
2428                          "name": "constrain_type"
2429                        },
2430                        {
2431                          "type": "SYMBOL",
2432                          "name": "constrain_module"
2433                        },
2434                        {
2435                          "type": "SYMBOL",
2436                          "name": "constrain_module_type"
2437                        }
2438                      ]
2439                    }
2440                  ]
2441                }
2442              }
2443            ]
2444          }
2445        ]
2446      }
2447    },
2448    "constrain_type": {
2449      "type": "SEQ",
2450      "members": [
2451        {
2452          "type": "STRING",
2453          "value": "type"
2454        },
2455        {
2456          "type": "CHOICE",
2457          "members": [
2458            {
2459              "type": "SYMBOL",
2460              "name": "_type_params"
2461            },
2462            {
2463              "type": "BLANK"
2464            }
2465          ]
2466        },
2467        {
2468          "type": "SYMBOL",
2469          "name": "type_constructor_path"
2470        },
2471        {
2472          "type": "SYMBOL",
2473          "name": "_type_equation"
2474        },
2475        {
2476          "type": "REPEAT",
2477          "content": {
2478            "type": "SYMBOL",
2479            "name": "type_constraint"
2480          }
2481        }
2482      ]
2483    },
2484    "constrain_module": {
2485      "type": "SEQ",
2486      "members": [
2487        {
2488          "type": "STRING",
2489          "value": "module"
2490        },
2491        {
2492          "type": "SYMBOL",
2493          "name": "module_path"
2494        },
2495        {
2496          "type": "CHOICE",
2497          "members": [
2498            {
2499              "type": "STRING",
2500              "value": "="
2501            },
2502            {
2503              "type": "STRING",
2504              "value": ":="
2505            }
2506          ]
2507        },
2508        {
2509          "type": "SYMBOL",
2510          "name": "extended_module_path"
2511        }
2512      ]
2513    },
2514    "constrain_module_type": {
2515      "type": "PREC_LEFT",
2516      "value": 0,
2517      "content": {
2518        "type": "SEQ",
2519        "members": [
2520          {
2521            "type": "STRING",
2522            "value": "module"
2523          },
2524          {
2525            "type": "STRING",
2526            "value": "type"
2527          },
2528          {
2529            "type": "SYMBOL",
2530            "name": "module_type_path"
2531          },
2532          {
2533            "type": "CHOICE",
2534            "members": [
2535              {
2536                "type": "STRING",
2537                "value": "="
2538              },
2539              {
2540                "type": "STRING",
2541                "value": ":="
2542              }
2543            ]
2544          },
2545          {
2546            "type": "SYMBOL",
2547            "name": "_module_type_ext"
2548          }
2549        ]
2550      }
2551    },
2552    "module_type_of": {
2553      "type": "SEQ",
2554      "members": [
2555        {
2556          "type": "STRING",
2557          "value": "module"
2558        },
2559        {
2560          "type": "STRING",
2561          "value": "type"
2562        },
2563        {
2564          "type": "STRING",
2565          "value": "of"
2566        },
2567        {
2568          "type": "SYMBOL",
2569          "name": "_module_expression_ext"
2570        }
2571      ]
2572    },
2573    "functor_type": {
2574      "type": "PREC_RIGHT",
2575      "value": 0,
2576      "content": {
2577        "type": "SEQ",
2578        "members": [
2579          {
2580            "type": "CHOICE",
2581            "members": [
2582              {
2583                "type": "SEQ",
2584                "members": [
2585                  {
2586                    "type": "STRING",
2587                    "value": "functor"
2588                  },
2589                  {
2590                    "type": "REPEAT",
2591                    "content": {
2592                      "type": "SYMBOL",
2593                      "name": "module_parameter"
2594                    }
2595                  }
2596                ]
2597              },
2598              {
2599                "type": "SYMBOL",
2600                "name": "_module_type_ext"
2601              }
2602            ]
2603          },
2604          {
2605            "type": "STRING",
2606            "value": "->"
2607          },
2608          {
2609            "type": "SYMBOL",
2610            "name": "_module_type_ext"
2611          }
2612        ]
2613      }
2614    },
2615    "parenthesized_module_type": {
2616      "type": "SEQ",
2617      "members": [
2618        {
2619          "type": "SEQ",
2620          "members": [
2621            {
2622              "type": "STRING",
2623              "value": "("
2624            },
2625            {
2626              "type": "SYMBOL",
2627              "name": "_module_type_ext"
2628            },
2629            {
2630              "type": "STRING",
2631              "value": ")"
2632            }
2633          ]
2634        }
2635      ]
2636    },
2637    "_simple_module_expression": {
2638      "type": "CHOICE",
2639      "members": [
2640        {
2641          "type": "SYMBOL",
2642          "name": "typed_module_expression"
2643        },
2644        {
2645          "type": "SYMBOL",
2646          "name": "parenthesized_module_expression"
2647        },
2648        {
2649          "type": "SYMBOL",
2650          "name": "packed_module"
2651        }
2652      ]
2653    },
2654    "_simple_module_expression_ext": {
2655      "type": "CHOICE",
2656      "members": [
2657        {
2658          "type": "SYMBOL",
2659          "name": "_simple_module_expression"
2660        },
2661        {
2662          "type": "SYMBOL",
2663          "name": "_extension"
2664        }
2665      ]
2666    },
2667    "_module_expression": {
2668      "type": "CHOICE",
2669      "members": [
2670        {
2671          "type": "SYMBOL",
2672          "name": "_simple_module_expression"
2673        },
2674        {
2675          "type": "SYMBOL",
2676          "name": "module_path"
2677        },
2678        {
2679          "type": "SYMBOL",
2680          "name": "structure"
2681        },
2682        {
2683          "type": "SYMBOL",
2684          "name": "functor"
2685        },
2686        {
2687          "type": "SYMBOL",
2688          "name": "module_application"
2689        }
2690      ]
2691    },
2692    "_module_expression_ext": {
2693      "type": "CHOICE",
2694      "members": [
2695        {
2696          "type": "SYMBOL",
2697          "name": "_module_expression"
2698        },
2699        {
2700          "type": "SYMBOL",
2701          "name": "_extension"
2702        }
2703      ]
2704    },
2705    "structure": {
2706      "type": "SEQ",
2707      "members": [
2708        {
2709          "type": "STRING",
2710          "value": "struct"
2711        },
2712        {
2713          "type": "CHOICE",
2714          "members": [
2715            {
2716              "type": "SYMBOL",
2717              "name": "_structure"
2718            },
2719            {
2720              "type": "BLANK"
2721            }
2722          ]
2723        },
2724        {
2725          "type": "STRING",
2726          "value": "end"
2727        }
2728      ]
2729    },
2730    "functor": {
2731      "type": "PREC_RIGHT",
2732      "value": 0,
2733      "content": {
2734        "type": "SEQ",
2735        "members": [
2736          {
2737            "type": "STRING",
2738            "value": "functor"
2739          },
2740          {
2741            "type": "REPEAT1",
2742            "content": {
2743              "type": "SYMBOL",
2744              "name": "module_parameter"
2745            }
2746          },
2747          {
2748            "type": "STRING",
2749            "value": "->"
2750          },
2751          {
2752            "type": "FIELD",
2753            "name": "body",
2754            "content": {
2755              "type": "SYMBOL",
2756              "name": "_module_expression_ext"
2757            }
2758          }
2759        ]
2760      }
2761    },
2762    "module_application": {
2763      "type": "SEQ",
2764      "members": [
2765        {
2766          "type": "FIELD",
2767          "name": "functor",
2768          "content": {
2769            "type": "SYMBOL",
2770            "name": "_module_expression_ext"
2771          }
2772        },
2773        {
2774          "type": "CHOICE",
2775          "members": [
2776            {
2777              "type": "FIELD",
2778              "name": "argument",
2779              "content": {
2780                "type": "SYMBOL",
2781                "name": "_simple_module_expression_ext"
2782              }
2783            },
2784            {
2785              "type": "SEQ",
2786              "members": [
2787                {
2788                  "type": "STRING",
2789                  "value": "("
2790                },
2791                {
2792                  "type": "STRING",
2793                  "value": ")"
2794                }
2795              ]
2796            }
2797          ]
2798        }
2799      ]
2800    },
2801    "typed_module_expression": {
2802      "type": "SEQ",
2803      "members": [
2804        {
2805          "type": "STRING",
2806          "value": "("
2807        },
2808        {
2809          "type": "SEQ",
2810          "members": [
2811            {
2812              "type": "SYMBOL",
2813              "name": "_module_expression_ext"
2814            },
2815            {
2816              "type": "SYMBOL",
2817              "name": "_module_typed"
2818            }
2819          ]
2820        },
2821        {
2822          "type": "STRING",
2823          "value": ")"
2824        }
2825      ]
2826    },
2827    "packed_module": {
2828      "type": "SEQ",
2829      "members": [
2830        {
2831          "type": "STRING",
2832          "value": "("
2833        },
2834        {
2835          "type": "SEQ",
2836          "members": [
2837            {
2838              "type": "STRING",
2839              "value": "val"
2840            },
2841            {
2842              "type": "SYMBOL",
2843              "name": "_expression_ext"
2844            },
2845            {
2846              "type": "CHOICE",
2847              "members": [
2848                {
2849                  "type": "SYMBOL",
2850                  "name": "_module_typed"
2851                },
2852                {
2853                  "type": "BLANK"
2854                }
2855              ]
2856            },
2857            {
2858              "type": "CHOICE",
2859              "members": [
2860                {
2861                  "type": "SEQ",
2862                  "members": [
2863                    {
2864                      "type": "STRING",
2865                      "value": ":>"
2866                    },
2867                    {
2868                      "type": "SYMBOL",
2869                      "name": "_module_type_ext"
2870                    }
2871                  ]
2872                },
2873                {
2874                  "type": "BLANK"
2875                }
2876              ]
2877            }
2878          ]
2879        },
2880        {
2881          "type": "STRING",
2882          "value": ")"
2883        }
2884      ]
2885    },
2886    "parenthesized_module_expression": {
2887      "type": "SEQ",
2888      "members": [
2889        {
2890          "type": "STRING",
2891          "value": "("
2892        },
2893        {
2894          "type": "SYMBOL",
2895          "name": "_module_expression_ext"
2896        },
2897        {
2898          "type": "STRING",
2899          "value": ")"
2900        }
2901      ]
2902    },
2903    "_class_typed": {
2904      "type": "SEQ",
2905      "members": [
2906        {
2907          "type": "STRING",
2908          "value": ":"
2909        },
2910        {
2911          "type": "SYMBOL",
2912          "name": "_class_type_ext"
2913        }
2914      ]
2915    },
2916    "_simple_class_type": {
2917      "type": "CHOICE",
2918      "members": [
2919        {
2920          "type": "SYMBOL",
2921          "name": "class_type_path"
2922        },
2923        {
2924          "type": "SYMBOL",
2925          "name": "instantiated_class_type"
2926        },
2927        {
2928          "type": "SYMBOL",
2929          "name": "class_body_type"
2930        },
2931        {
2932          "type": "SYMBOL",
2933          "name": "let_open_class_type"
2934        }
2935      ]
2936    },
2937    "_simple_class_type_ext": {
2938      "type": "CHOICE",
2939      "members": [
2940        {
2941          "type": "SYMBOL",
2942          "name": "_simple_class_type"
2943        },
2944        {
2945          "type": "SYMBOL",
2946          "name": "_extension"
2947        }
2948      ]
2949    },
2950    "_class_type": {
2951      "type": "CHOICE",
2952      "members": [
2953        {
2954          "type": "SYMBOL",
2955          "name": "_simple_class_type"
2956        },
2957        {
2958          "type": "SYMBOL",
2959          "name": "class_function_type"
2960        }
2961      ]
2962    },
2963    "_class_type_ext": {
2964      "type": "CHOICE",
2965      "members": [
2966        {
2967          "type": "SYMBOL",
2968          "name": "_class_type"
2969        },
2970        {
2971          "type": "SYMBOL",
2972          "name": "_extension"
2973        }
2974      ]
2975    },
2976    "instantiated_class_type": {
2977      "type": "SEQ",
2978      "members": [
2979        {
2980          "type": "STRING",
2981          "value": "["
2982        },
2983        {
2984          "type": "SEQ",
2985          "members": [
2986            {
2987              "type": "SYMBOL",
2988              "name": "_type_ext"
2989            },
2990            {
2991              "type": "REPEAT",
2992              "content": {
2993                "type": "SEQ",
2994                "members": [
2995                  {
2996                    "type": "STRING",
2997                    "value": ","
2998                  },
2999                  {
3000                    "type": "SYMBOL",
3001                    "name": "_type_ext"
3002                  }
3003                ]
3004              }
3005            }
3006          ]
3007        },
3008        {
3009          "type": "STRING",
3010          "value": "]"
3011        },
3012        {
3013          "type": "SYMBOL",
3014          "name": "class_type_path"
3015        }
3016      ]
3017    },
3018    "class_body_type": {
3019      "type": "SEQ",
3020      "members": [
3021        {
3022          "type": "STRING",
3023          "value": "object"
3024        },
3025        {
3026          "type": "CHOICE",
3027          "members": [
3028            {
3029              "type": "SEQ",
3030              "members": [
3031                {
3032                  "type": "STRING",
3033                  "value": "("
3034                },
3035                {
3036                  "type": "SYMBOL",
3037                  "name": "_type_ext"
3038                },
3039                {
3040                  "type": "STRING",
3041                  "value": ")"
3042                }
3043              ]
3044            },
3045            {
3046              "type": "BLANK"
3047            }
3048          ]
3049        },
3050        {
3051          "type": "REPEAT",
3052          "content": {
3053            "type": "CHOICE",
3054            "members": [
3055              {
3056                "type": "SYMBOL",
3057                "name": "_class_field_specification_ext"
3058              },
3059              {
3060                "type": "SYMBOL",
3061                "name": "floating_attribute"
3062              }
3063            ]
3064          }
3065        },
3066        {
3067          "type": "STRING",
3068          "value": "end"
3069        }
3070      ]
3071    },
3072    "_class_field_specification": {
3073      "type": "CHOICE",
3074      "members": [
3075        {
3076          "type": "SYMBOL",
3077          "name": "inheritance_specification"
3078        },
3079        {
3080          "type": "SYMBOL",
3081          "name": "instance_variable_specification"
3082        },
3083        {
3084          "type": "SYMBOL",
3085          "name": "method_specification"
3086        },
3087        {
3088          "type": "SYMBOL",
3089          "name": "type_parameter_constraint"
3090        }
3091      ]
3092    },
3093    "_class_field_specification_ext": {
3094      "type": "CHOICE",
3095      "members": [
3096        {
3097          "type": "SYMBOL",
3098          "name": "_class_field_specification"
3099        },
3100        {
3101          "type": "SYMBOL",
3102          "name": "_item_extension"
3103        }
3104      ]
3105    },
3106    "inheritance_specification": {
3107      "type": "SEQ",
3108      "members": [
3109        {
3110          "type": "STRING",
3111          "value": "inherit"
3112        },
3113        {
3114          "type": "SYMBOL",
3115          "name": "_simple_class_type_ext"
3116        },
3117        {
3118          "type": "REPEAT",
3119          "content": {
3120            "type": "SYMBOL",
3121            "name": "item_attribute"
3122          }
3123        }
3124      ]
3125    },
3126    "instance_variable_specification": {
3127      "type": "SEQ",
3128      "members": [
3129        {
3130          "type": "STRING",
3131          "value": "val"
3132        },
3133        {
3134          "type": "REPEAT",
3135          "content": {
3136            "type": "CHOICE",
3137            "members": [
3138              {
3139                "type": "STRING",
3140                "value": "mutable"
3141              },
3142              {
3143                "type": "STRING",
3144                "value": "virtual"
3145              }
3146            ]
3147          }
3148        },
3149        {
3150          "type": "SYMBOL",
3151          "name": "_instance_variable_name"
3152        },
3153        {
3154          "type": "SYMBOL",
3155          "name": "_typed"
3156        },
3157        {
3158          "type": "REPEAT",
3159          "content": {
3160            "type": "SYMBOL",
3161            "name": "item_attribute"
3162          }
3163        }
3164      ]
3165    },
3166    "method_specification": {
3167      "type": "SEQ",
3168      "members": [
3169        {
3170          "type": "STRING",
3171          "value": "method"
3172        },
3173        {
3174          "type": "REPEAT",
3175          "content": {
3176            "type": "CHOICE",
3177            "members": [
3178              {
3179                "type": "STRING",
3180                "value": "private"
3181              },
3182              {
3183                "type": "STRING",
3184                "value": "virtual"
3185              }
3186            ]
3187          }
3188        },
3189        {
3190          "type": "SYMBOL",
3191          "name": "_method_name"
3192        },
3193        {
3194          "type": "SYMBOL",
3195          "name": "_polymorphic_typed"
3196        },
3197        {
3198          "type": "REPEAT",
3199          "content": {
3200            "type": "SYMBOL",
3201            "name": "item_attribute"
3202          }
3203        }
3204      ]
3205    },
3206    "type_parameter_constraint": {
3207      "type": "SEQ",
3208      "members": [
3209        {
3210          "type": "STRING",
3211          "value": "constraint"
3212        },
3213        {
3214          "type": "SYMBOL",
3215          "name": "_type_ext"
3216        },
3217        {
3218          "type": "STRING",
3219          "value": "="
3220        },
3221        {
3222          "type": "SYMBOL",
3223          "name": "_type_ext"
3224        },
3225        {
3226          "type": "REPEAT",
3227          "content": {
3228            "type": "SYMBOL",
3229            "name": "item_attribute"
3230          }
3231        }
3232      ]
3233    },
3234    "let_open_class_type": {
3235      "type": "PREC_RIGHT",
3236      "value": 2,
3237      "content": {
3238        "type": "SEQ",
3239        "members": [
3240          {
3241            "type": "STRING",
3242            "value": "let"
3243          },
3244          {
3245            "type": "SYMBOL",
3246            "name": "open_module"
3247          },
3248          {
3249            "type": "STRING",
3250            "value": "in"
3251          },
3252          {
3253            "type": "FIELD",
3254            "name": "body",
3255            "content": {
3256              "type": "SYMBOL",
3257              "name": "_simple_class_type_ext"
3258            }
3259          }
3260        ]
3261      }
3262    },
3263    "class_function_type": {
3264      "type": "PREC_RIGHT",
3265      "value": 3,
3266      "content": {
3267        "type": "SEQ",
3268        "members": [
3269          {
3270            "type": "CHOICE",
3271            "members": [
3272              {
3273                "type": "SEQ",
3274                "members": [
3275                  {
3276                    "type": "CHOICE",
3277                    "members": [
3278                      {
3279                        "type": "STRING",
3280                        "value": "?"
3281                      },
3282                      {
3283                        "type": "BLANK"
3284                      }
3285                    ]
3286                  },
3287                  {
3288                    "type": "SYMBOL",
3289                    "name": "_label_name"
3290                  },
3291                  {
3292                    "type": "STRING",
3293                    "value": ":"
3294                  }
3295                ]
3296              },
3297              {
3298                "type": "BLANK"
3299              }
3300            ]
3301          },
3302          {
3303            "type": "SYMBOL",
3304            "name": "_tuple_type_ext"
3305          },
3306          {
3307            "type": "STRING",
3308            "value": "->"
3309          },
3310          {
3311            "type": "SYMBOL",
3312            "name": "_class_type_ext"
3313          }
3314        ]
3315      }
3316    },
3317    "_simple_class_expression": {
3318      "type": "CHOICE",
3319      "members": [
3320        {
3321          "type": "SYMBOL",
3322          "name": "class_path"
3323        },
3324        {
3325          "type": "SYMBOL",
3326          "name": "instantiated_class"
3327        },
3328        {
3329          "type": "SYMBOL",
3330          "name": "object_expression"
3331        },
3332        {
3333          "type": "SYMBOL",
3334          "name": "typed_class_expression"
3335        },
3336        {
3337          "type": "SYMBOL",
3338          "name": "parenthesized_class_expression"
3339        }
3340      ]
3341    },
3342    "_class_expression": {
3343      "type": "CHOICE",
3344      "members": [
3345        {
3346          "type": "SYMBOL",
3347          "name": "_simple_class_expression"
3348        },
3349        {
3350          "type": "SYMBOL",
3351          "name": "class_function"
3352        },
3353        {
3354          "type": "SYMBOL",
3355          "name": "class_application"
3356        },
3357        {
3358          "type": "SYMBOL",
3359          "name": "let_class_expression"
3360        },
3361        {
3362          "type": "SYMBOL",
3363          "name": "let_open_class_expression"
3364        }
3365      ]
3366    },
3367    "_class_expression_ext": {
3368      "type": "CHOICE",
3369      "members": [
3370        {
3371          "type": "SYMBOL",
3372          "name": "_class_expression"
3373        },
3374        {
3375          "type": "SYMBOL",
3376          "name": "_extension"
3377        }
3378      ]
3379    },
3380    "instantiated_class": {
3381      "type": "SEQ",
3382      "members": [
3383        {
3384          "type": "STRING",
3385          "value": "["
3386        },
3387        {
3388          "type": "SEQ",
3389          "members": [
3390            {
3391              "type": "SYMBOL",
3392              "name": "_type_ext"
3393            },
3394            {
3395              "type": "REPEAT",
3396              "content": {
3397                "type": "SEQ",
3398                "members": [
3399                  {
3400                    "type": "STRING",
3401                    "value": ","
3402                  },
3403                  {
3404                    "type": "SYMBOL",
3405                    "name": "_type_ext"
3406                  }
3407                ]
3408              }
3409            }
3410          ]
3411        },
3412        {
3413          "type": "STRING",
3414          "value": "]"
3415        },
3416        {
3417          "type": "SYMBOL",
3418          "name": "class_path"
3419        }
3420      ]
3421    },
3422    "typed_class_expression": {
3423      "type": "SEQ",
3424      "members": [
3425        {
3426          "type": "SEQ",
3427          "members": [
3428            {
3429              "type": "STRING",
3430              "value": "("
3431            },
3432            {
3433              "type": "SEQ",
3434              "members": [
3435                {
3436                  "type": "SYMBOL",
3437                  "name": "_class_expression_ext"
3438                },
3439                {
3440                  "type": "SYMBOL",
3441                  "name": "_class_typed"
3442                }
3443              ]
3444            },
3445            {
3446              "type": "STRING",
3447              "value": ")"
3448            }
3449          ]
3450        }
3451      ]
3452    },
3453    "class_function": {
3454      "type": "PREC_RIGHT",
3455      "value": 2,
3456      "content": {
3457        "type": "SEQ",
3458        "members": [
3459          {
3460            "type": "STRING",
3461            "value": "fun"
3462          },
3463          {
3464            "type": "REPEAT1",
3465            "content": {
3466              "type": "SYMBOL",
3467              "name": "_parameter"
3468            }
3469          },
3470          {
3471            "type": "STRING",
3472            "value": "->"
3473          },
3474          {
3475            "type": "FIELD",
3476            "name": "body",
3477            "content": {
3478              "type": "SYMBOL",
3479              "name": "_class_expression_ext"
3480            }
3481          }
3482        ]
3483      }
3484    },
3485    "class_application": {
3486      "type": "PREC_RIGHT",
3487      "value": 16,
3488      "content": {
3489        "type": "SEQ",
3490        "members": [
3491          {
3492            "type": "FIELD",
3493            "name": "class",
3494            "content": {
3495              "type": "SYMBOL",
3496              "name": "_simple_class_expression"
3497            }
3498          },
3499          {
3500            "type": "REPEAT1",
3501            "content": {
3502              "type": "FIELD",
3503              "name": "argument",
3504              "content": {
3505                "type": "SYMBOL",
3506                "name": "_argument"
3507              }
3508            }
3509          }
3510        ]
3511      }
3512    },
3513    "let_class_expression": {
3514      "type": "PREC_RIGHT",
3515      "value": 2,
3516      "content": {
3517        "type": "SEQ",
3518        "members": [
3519          {
3520            "type": "SYMBOL",
3521            "name": "value_definition"
3522          },
3523          {
3524            "type": "STRING",
3525            "value": "in"
3526          },
3527          {
3528            "type": "FIELD",
3529            "name": "body",
3530            "content": {
3531              "type": "SYMBOL",
3532              "name": "_class_expression_ext"
3533            }
3534          }
3535        ]
3536      }
3537    },
3538    "_class_field": {
3539      "type": "CHOICE",
3540      "members": [
3541        {
3542          "type": "SYMBOL",
3543          "name": "inheritance_definition"
3544        },
3545        {
3546          "type": "SYMBOL",
3547          "name": "instance_variable_definition"
3548        },
3549        {
3550          "type": "SYMBOL",
3551          "name": "method_definition"
3552        },
3553        {
3554          "type": "SYMBOL",
3555          "name": "type_parameter_constraint"
3556        },
3557        {
3558          "type": "SYMBOL",
3559          "name": "class_initializer"
3560        }
3561      ]
3562    },
3563    "_class_field_ext": {
3564      "type": "CHOICE",
3565      "members": [
3566        {
3567          "type": "SYMBOL",
3568          "name": "_class_field"
3569        },
3570        {
3571          "type": "SYMBOL",
3572          "name": "_item_extension"
3573        }
3574      ]
3575    },
3576    "inheritance_definition": {
3577      "type": "SEQ",
3578      "members": [
3579        {
3580          "type": "STRING",
3581          "value": "inherit"
3582        },
3583        {
3584          "type": "CHOICE",
3585          "members": [
3586            {
3587              "type": "STRING",
3588              "value": "!"
3589            },
3590            {
3591              "type": "BLANK"
3592            }
3593          ]
3594        },
3595        {
3596          "type": "SYMBOL",
3597          "name": "_class_expression_ext"
3598        },
3599        {
3600          "type": "CHOICE",
3601          "members": [
3602            {
3603              "type": "SEQ",
3604              "members": [
3605                {
3606                  "type": "STRING",
3607                  "value": "as"
3608                },
3609                {
3610                  "type": "SYMBOL",
3611                  "name": "_value_pattern"
3612                }
3613              ]
3614            },
3615            {
3616              "type": "BLANK"
3617            }
3618          ]
3619        },
3620        {
3621          "type": "REPEAT",
3622          "content": {
3623            "type": "SYMBOL",
3624            "name": "item_attribute"
3625          }
3626        }
3627      ]
3628    },
3629    "instance_variable_definition": {
3630      "type": "SEQ",
3631      "members": [
3632        {
3633          "type": "STRING",
3634          "value": "val"
3635        },
3636        {
3637          "type": "CHOICE",
3638          "members": [
3639            {
3640              "type": "STRING",
3641              "value": "!"
3642            },
3643            {
3644              "type": "BLANK"
3645            }
3646          ]
3647        },
3648        {
3649          "type": "REPEAT",
3650          "content": {
3651            "type": "CHOICE",
3652            "members": [
3653              {
3654                "type": "STRING",
3655                "value": "mutable"
3656              },
3657              {
3658                "type": "STRING",
3659                "value": "virtual"
3660              }
3661            ]
3662          }
3663        },
3664        {
3665          "type": "FIELD",
3666          "name": "name",
3667          "content": {
3668            "type": "SYMBOL",
3669            "name": "_instance_variable_name"
3670          }
3671        },
3672        {
3673          "type": "CHOICE",
3674          "members": [
3675            {
3676              "type": "SYMBOL",
3677              "name": "_typed"
3678            },
3679            {
3680              "type": "BLANK"
3681            }
3682          ]
3683        },
3684        {
3685          "type": "CHOICE",
3686          "members": [
3687            {
3688              "type": "SEQ",
3689              "members": [
3690                {
3691                  "type": "STRING",
3692                  "value": ":>"
3693                },
3694                {
3695                  "type": "SYMBOL",
3696                  "name": "_type_ext"
3697                }
3698              ]
3699            },
3700            {
3701              "type": "BLANK"
3702            }
3703          ]
3704        },
3705        {
3706          "type": "CHOICE",
3707          "members": [
3708            {
3709              "type": "SEQ",
3710              "members": [
3711                {
3712                  "type": "STRING",
3713                  "value": "="
3714                },
3715                {
3716                  "type": "FIELD",
3717                  "name": "body",
3718                  "content": {
3719                    "type": "SYMBOL",
3720                    "name": "_sequence_expression_ext"
3721                  }
3722                }
3723              ]
3724            },
3725            {
3726              "type": "BLANK"
3727            }
3728          ]
3729        },
3730        {
3731          "type": "REPEAT",
3732          "content": {
3733            "type": "SYMBOL",
3734            "name": "item_attribute"
3735          }
3736        }
3737      ]
3738    },
3739    "method_definition": {
3740      "type": "SEQ",
3741      "members": [
3742        {
3743          "type": "STRING",
3744          "value": "method"
3745        },
3746        {
3747          "type": "CHOICE",
3748          "members": [
3749            {
3750              "type": "STRING",
3751              "value": "!"
3752            },
3753            {
3754              "type": "BLANK"
3755            }
3756          ]
3757        },
3758        {
3759          "type": "REPEAT",
3760          "content": {
3761            "type": "CHOICE",
3762            "members": [
3763              {
3764                "type": "STRING",
3765                "value": "private"
3766              },
3767              {
3768                "type": "STRING",
3769                "value": "virtual"
3770              }
3771            ]
3772          }
3773        },
3774        {
3775          "type": "FIELD",
3776          "name": "name",
3777          "content": {
3778            "type": "SYMBOL",
3779            "name": "_method_name"
3780          }
3781        },
3782        {
3783          "type": "REPEAT",
3784          "content": {
3785            "type": "SYMBOL",
3786            "name": "_parameter"
3787          }
3788        },
3789        {
3790          "type": "CHOICE",
3791          "members": [
3792            {
3793              "type": "SYMBOL",
3794              "name": "_polymorphic_typed"
3795            },
3796            {
3797              "type": "BLANK"
3798            }
3799          ]
3800        },
3801        {
3802          "type": "CHOICE",
3803          "members": [
3804            {
3805              "type": "SEQ",
3806              "members": [
3807                {
3808                  "type": "STRING",
3809                  "value": "="
3810                },
3811                {
3812                  "type": "FIELD",
3813                  "name": "body",
3814                  "content": {
3815                    "type": "SYMBOL",
3816                    "name": "_sequence_expression_ext"
3817                  }
3818                }
3819              ]
3820            },
3821            {
3822              "type": "BLANK"
3823            }
3824          ]
3825        },
3826        {
3827          "type": "REPEAT",
3828          "content": {
3829            "type": "SYMBOL",
3830            "name": "item_attribute"
3831          }
3832        }
3833      ]
3834    },
3835    "class_initializer": {
3836      "type": "SEQ",
3837      "members": [
3838        {
3839          "type": "STRING",
3840          "value": "initializer"
3841        },
3842        {
3843          "type": "SYMBOL",
3844          "name": "_sequence_expression_ext"
3845        },
3846        {
3847          "type": "REPEAT",
3848          "content": {
3849            "type": "SYMBOL",
3850            "name": "item_attribute"
3851          }
3852        }
3853      ]
3854    },
3855    "let_open_class_expression": {
3856      "type": "PREC_RIGHT",
3857      "value": 2,
3858      "content": {
3859        "type": "SEQ",
3860        "members": [
3861          {
3862            "type": "STRING",
3863            "value": "let"
3864          },
3865          {
3866            "type": "SYMBOL",
3867            "name": "open_module"
3868          },
3869          {
3870            "type": "STRING",
3871            "value": "in"
3872          },
3873          {
3874            "type": "FIELD",
3875            "name": "body",
3876            "content": {
3877              "type": "SYMBOL",
3878              "name": "_class_expression_ext"
3879            }
3880          }
3881        ]
3882      }
3883    },
3884    "parenthesized_class_expression": {
3885      "type": "SEQ",
3886      "members": [
3887        {
3888          "type": "SEQ",
3889          "members": [
3890            {
3891              "type": "STRING",
3892              "value": "("
3893            },
3894            {
3895              "type": "SYMBOL",
3896              "name": "_class_expression_ext"
3897            },
3898            {
3899              "type": "STRING",
3900              "value": ")"
3901            }
3902          ]
3903        }
3904      ]
3905    },
3906    "_typed": {
3907      "type": "SEQ",
3908      "members": [
3909        {
3910          "type": "STRING",
3911          "value": ":"
3912        },
3913        {
3914          "type": "SYMBOL",
3915          "name": "_type_ext"
3916        }
3917      ]
3918    },
3919    "_simple_typed": {
3920      "type": "SEQ",
3921      "members": [
3922        {
3923          "type": "STRING",
3924          "value": ":"
3925        },
3926        {
3927          "type": "SYMBOL",
3928          "name": "_simple_type_ext"
3929        }
3930      ]
3931    },
3932    "_polymorphic_typed": {
3933      "type": "SEQ",
3934      "members": [
3935        {
3936          "type": "STRING",
3937          "value": ":"
3938        },
3939        {
3940          "type": "SYMBOL",
3941          "name": "_polymorphic_type"
3942        }
3943      ]
3944    },
3945    "_polymorphic_type": {
3946      "type": "CHOICE",
3947      "members": [
3948        {
3949          "type": "SYMBOL",
3950          "name": "polymorphic_type"
3951        },
3952        {
3953          "type": "SYMBOL",
3954          "name": "_type_ext"
3955        }
3956      ]
3957    },
3958    "polymorphic_type": {
3959      "type": "SEQ",
3960      "members": [
3961        {
3962          "type": "CHOICE",
3963          "members": [
3964            {
3965              "type": "REPEAT1",
3966              "content": {
3967                "type": "SYMBOL",
3968                "name": "type_variable"
3969              }
3970            },
3971            {
3972              "type": "ALIAS",
3973              "content": {
3974                "type": "SYMBOL",
3975                "name": "_abstract_type"
3976              },
3977              "named": true,
3978              "value": "abstract_type"
3979            }
3980          ]
3981        },
3982        {
3983          "type": "STRING",
3984          "value": "."
3985        },
3986        {
3987          "type": "SYMBOL",
3988          "name": "_type_ext"
3989        }
3990      ]
3991    },
3992    "_abstract_type": {
3993      "type": "SEQ",
3994      "members": [
3995        {
3996          "type": "STRING",
3997          "value": "type"
3998        },
3999        {
4000          "type": "REPEAT1",
4001          "content": {
4002            "type": "SYMBOL",
4003            "name": "_type_constructor"
4004          }
4005        }
4006      ]
4007    },
4008    "_parenthesized_abstract_type": {
4009      "type": "SEQ",
4010      "members": [
4011        {
4012          "type": "STRING",
4013          "value": "("
4014        },
4015        {
4016          "type": "SYMBOL",
4017          "name": "_abstract_type"
4018        },
4019        {
4020          "type": "STRING",
4021          "value": ")"
4022        }
4023      ]
4024    },
4025    "_simple_type": {
4026      "type": "CHOICE",
4027      "members": [
4028        {
4029          "type": "SYMBOL",
4030          "name": "type_variable"
4031        },
4032        {
4033          "type": "SYMBOL",
4034          "name": "type_constructor_path"
4035        },
4036        {
4037          "type": "SYMBOL",
4038          "name": "constructed_type"
4039        },
4040        {
4041          "type": "SYMBOL",
4042          "name": "polymorphic_variant_type"
4043        },
4044        {
4045          "type": "SYMBOL",
4046          "name": "package_type"
4047        },
4048        {
4049          "type": "SYMBOL",
4050          "name": "hash_type"
4051        },
4052        {
4053          "type": "SYMBOL",
4054          "name": "object_type"
4055        },
4056        {
4057          "type": "SYMBOL",
4058          "name": "parenthesized_type"
4059        }
4060      ]
4061    },
4062    "_simple_type_ext": {
4063      "type": "CHOICE",
4064      "members": [
4065        {
4066          "type": "SYMBOL",
4067          "name": "_simple_type"
4068        },
4069        {
4070          "type": "SYMBOL",
4071          "name": "_extension"
4072        }
4073      ]
4074    },
4075    "_tuple_type": {
4076      "type": "CHOICE",
4077      "members": [
4078        {
4079          "type": "SYMBOL",
4080          "name": "_simple_type"
4081        },
4082        {
4083          "type": "SYMBOL",
4084          "name": "tuple_type"
4085        }
4086      ]
4087    },
4088    "_tuple_type_ext": {
4089      "type": "CHOICE",
4090      "members": [
4091        {
4092          "type": "SYMBOL",
4093          "name": "_tuple_type"
4094        },
4095        {
4096          "type": "SYMBOL",
4097          "name": "_extension"
4098        }
4099      ]
4100    },
4101    "_type": {
4102      "type": "CHOICE",
4103      "members": [
4104        {
4105          "type": "SYMBOL",
4106          "name": "_tuple_type"
4107        },
4108        {
4109          "type": "SYMBOL",
4110          "name": "function_type"
4111        },
4112        {
4113          "type": "SYMBOL",
4114          "name": "aliased_type"
4115        }
4116      ]
4117    },
4118    "_type_ext": {
4119      "type": "CHOICE",
4120      "members": [
4121        {
4122          "type": "SYMBOL",
4123          "name": "_type"
4124        },
4125        {
4126          "type": "SYMBOL",
4127          "name": "_extension"
4128        }
4129      ]
4130    },
4131    "function_type": {
4132      "type": "PREC_RIGHT",
4133      "value": 3,
4134      "content": {
4135        "type": "SEQ",
4136        "members": [
4137          {
4138            "type": "CHOICE",
4139            "members": [
4140              {
4141                "type": "SYMBOL",
4142                "name": "typed_label"
4143              },
4144              {
4145                "type": "SYMBOL",
4146                "name": "_type_ext"
4147              }
4148            ]
4149          },
4150          {
4151            "type": "STRING",
4152            "value": "->"
4153          },
4154          {
4155            "type": "SYMBOL",
4156            "name": "_type_ext"
4157          }
4158        ]
4159      }
4160    },
4161    "typed_label": {
4162      "type": "PREC_LEFT",
4163      "value": 3,
4164      "content": {
4165        "type": "SEQ",
4166        "members": [
4167          {
4168            "type": "CHOICE",
4169            "members": [
4170              {
4171                "type": "STRING",
4172                "value": "?"
4173              },
4174              {
4175                "type": "BLANK"
4176              }
4177            ]
4178          },
4179          {
4180            "type": "SYMBOL",
4181            "name": "_label_name"
4182          },
4183          {
4184            "type": "STRING",
4185            "value": ":"
4186          },
4187          {
4188            "type": "SYMBOL",
4189            "name": "_type_ext"
4190          }
4191        ]
4192      }
4193    },
4194    "tuple_type": {
4195      "type": "PREC",
4196      "value": 6,
4197      "content": {
4198        "type": "SEQ",
4199        "members": [
4200          {
4201            "type": "SYMBOL",
4202            "name": "_tuple_type_ext"
4203          },
4204          {
4205            "type": "STRING",
4206            "value": "*"
4207          },
4208          {
4209            "type": "SYMBOL",
4210            "name": "_simple_type_ext"
4211          }
4212        ]
4213      }
4214    },
4215    "constructed_type": {
4216      "type": "PREC",
4217      "value": 16,
4218      "content": {
4219        "type": "SEQ",
4220        "members": [
4221          {
4222            "type": "CHOICE",
4223            "members": [
4224              {
4225                "type": "SYMBOL",
4226                "name": "_simple_type_ext"
4227              },
4228              {
4229                "type": "SEQ",
4230                "members": [
4231                  {
4232                    "type": "STRING",
4233                    "value": "("
4234                  },
4235                  {
4236                    "type": "SEQ",
4237                    "members": [
4238                      {
4239                        "type": "SYMBOL",
4240                        "name": "_type_ext"
4241                      },
4242                      {
4243                        "type": "REPEAT",
4244                        "content": {
4245                          "type": "SEQ",
4246                          "members": [
4247                            {
4248                              "type": "STRING",
4249                              "value": ","
4250                            },
4251                            {
4252                              "type": "SYMBOL",
4253                              "name": "_type_ext"
4254                            }
4255                          ]
4256                        }
4257                      }
4258                    ]
4259                  },
4260                  {
4261                    "type": "STRING",
4262                    "value": ")"
4263                  }
4264                ]
4265              }
4266            ]
4267          },
4268          {
4269            "type": "SYMBOL",
4270            "name": "type_constructor_path"
4271          }
4272        ]
4273      }
4274    },
4275    "aliased_type": {
4276      "type": "PREC",
4277      "value": 2,
4278      "content": {
4279        "type": "SEQ",
4280        "members": [
4281          {
4282            "type": "SYMBOL",
4283            "name": "_type_ext"
4284          },
4285          {
4286            "type": "STRING",
4287            "value": "as"
4288          },
4289          {
4290            "type": "SYMBOL",
4291            "name": "type_variable"
4292          }
4293        ]
4294      }
4295    },
4296    "polymorphic_variant_type": {
4297      "type": "SEQ",
4298      "members": [
4299        {
4300          "type": "CHOICE",
4301          "members": [
4302            {
4303              "type": "SEQ",
4304              "members": [
4305                {
4306                  "type": "STRING",
4307                  "value": "["
4308                },
4309                {
4310                  "type": "SYMBOL",
4311                  "name": "tag_specification"
4312                },
4313                {
4314                  "type": "STRING",
4315                  "value": "]"
4316                }
4317              ]
4318            },
4319            {
4320              "type": "SEQ",
4321              "members": [
4322                {
4323                  "type": "STRING",
4324                  "value": "["
4325                },
4326                {
4327                  "type": "CHOICE",
4328                  "members": [
4329                    {
4330                      "type": "SYMBOL",
4331                      "name": "_tag_spec"
4332                    },
4333                    {
4334                      "type": "BLANK"
4335                    }
4336                  ]
4337                },
4338                {
4339                  "type": "STRING",
4340                  "value": "|"
4341                },
4342                {
4343                  "type": "SEQ",
4344                  "members": [
4345                    {
4346                      "type": "SYMBOL",
4347                      "name": "_tag_spec"
4348                    },
4349                    {
4350                      "type": "REPEAT",
4351                      "content": {
4352                        "type": "SEQ",
4353                        "members": [
4354                          {
4355                            "type": "STRING",
4356                            "value": "|"
4357                          },
4358                          {
4359                            "type": "SYMBOL",
4360                            "name": "_tag_spec"
4361                          }
4362                        ]
4363                      }
4364                    }
4365                  ]
4366                },
4367                {
4368                  "type": "STRING",
4369                  "value": "]"
4370                }
4371              ]
4372            },
4373            {
4374              "type": "SEQ",
4375              "members": [
4376                {
4377                  "type": "STRING",
4378                  "value": "[>"
4379                },
4380                {
4381                  "type": "CHOICE",
4382                  "members": [
4383                    {
4384                      "type": "STRING",
4385                      "value": "|"
4386                    },
4387                    {
4388                      "type": "BLANK"
4389                    }
4390                  ]
4391                },
4392                {
4393                  "type": "CHOICE",
4394                  "members": [
4395                    {
4396                      "type": "SEQ",
4397                      "members": [
4398                        {
4399                          "type": "SYMBOL",
4400                          "name": "_tag_spec"
4401                        },
4402                        {
4403                          "type": "REPEAT",
4404                          "content": {
4405                            "type": "SEQ",
4406                            "members": [
4407                              {
4408                                "type": "STRING",
4409                                "value": "|"
4410                              },
4411                              {
4412                                "type": "SYMBOL",
4413                                "name": "_tag_spec"
4414                              }
4415                            ]
4416                          }
4417                        }
4418                      ]
4419                    },
4420                    {
4421                      "type": "BLANK"
4422                    }
4423                  ]
4424                },
4425                {
4426                  "type": "STRING",
4427                  "value": "]"
4428                }
4429              ]
4430            },
4431            {
4432              "type": "SEQ",
4433              "members": [
4434                {
4435                  "type": "STRING",
4436                  "value": "[<"
4437                },
4438                {
4439                  "type": "CHOICE",
4440                  "members": [
4441                    {
4442                      "type": "STRING",
4443                      "value": "|"
4444                    },
4445                    {
4446                      "type": "BLANK"
4447                    }
4448                  ]
4449                },
4450                {
4451                  "type": "SEQ",
4452                  "members": [
4453                    {
4454                      "type": "SYMBOL",
4455                      "name": "_tag_spec"
4456                    },
4457                    {
4458                      "type": "REPEAT",
4459                      "content": {
4460                        "type": "SEQ",
4461                        "members": [
4462                          {
4463                            "type": "STRING",
4464                            "value": "|"
4465                          },
4466                          {
4467                            "type": "SYMBOL",
4468                            "name": "_tag_spec"
4469                          }
4470                        ]
4471                      }
4472                    }
4473                  ]
4474                },
4475                {
4476                  "type": "CHOICE",
4477                  "members": [
4478                    {
4479                      "type": "SEQ",
4480                      "members": [
4481                        {
4482                          "type": "STRING",
4483                          "value": ">"
4484                        },
4485                        {
4486                          "type": "REPEAT1",
4487                          "content": {
4488                            "type": "SYMBOL",
4489                            "name": "tag"
4490                          }
4491                        }
4492                      ]
4493                    },
4494                    {
4495                      "type": "BLANK"
4496                    }
4497                  ]
4498                },
4499                {
4500                  "type": "STRING",
4501                  "value": "]"
4502                }
4503              ]
4504            }
4505          ]
4506        }
4507      ]
4508    },
4509    "_tag_spec": {
4510      "type": "CHOICE",
4511      "members": [
4512        {
4513          "type": "SYMBOL",
4514          "name": "_type_ext"
4515        },
4516        {
4517          "type": "SYMBOL",
4518          "name": "tag_specification"
4519        }
4520      ]
4521    },
4522    "tag_specification": {
4523      "type": "SEQ",
4524      "members": [
4525        {
4526          "type": "SYMBOL",
4527          "name": "tag"
4528        },
4529        {
4530          "type": "CHOICE",
4531          "members": [
4532            {
4533              "type": "SEQ",
4534              "members": [
4535                {
4536                  "type": "STRING",
4537                  "value": "of"
4538                },
4539                {
4540                  "type": "CHOICE",
4541                  "members": [
4542                    {
4543                      "type": "STRING",
4544                      "value": "&"
4545                    },
4546                    {
4547                      "type": "BLANK"
4548                    }
4549                  ]
4550                },
4551                {
4552                  "type": "SEQ",
4553                  "members": [
4554                    {
4555                      "type": "SYMBOL",
4556                      "name": "_type_ext"
4557                    },
4558                    {
4559                      "type": "REPEAT",
4560                      "content": {
4561                        "type": "SEQ",
4562                        "members": [
4563                          {
4564                            "type": "STRING",
4565                            "value": "&"
4566                          },
4567                          {
4568                            "type": "SYMBOL",
4569                            "name": "_type_ext"
4570                          }
4571                        ]
4572                      }
4573                    }
4574                  ]
4575                }
4576              ]
4577            },
4578            {
4579              "type": "BLANK"
4580            }
4581          ]
4582        }
4583      ]
4584    },
4585    "package_type": {
4586      "type": "SEQ",
4587      "members": [
4588        {
4589          "type": "STRING",
4590          "value": "("
4591        },
4592        {
4593          "type": "SEQ",
4594          "members": [
4595            {
4596              "type": "STRING",
4597              "value": "module"
4598            },
4599            {
4600              "type": "CHOICE",
4601              "members": [
4602                {
4603                  "type": "SYMBOL",
4604                  "name": "_attribute"
4605                },
4606                {
4607                  "type": "BLANK"
4608                }
4609              ]
4610            },
4611            {
4612              "type": "SYMBOL",
4613              "name": "_module_type_ext"
4614            }
4615          ]
4616        },
4617        {
4618          "type": "STRING",
4619          "value": ")"
4620        }
4621      ]
4622    },
4623    "object_type": {
4624      "type": "SEQ",
4625      "members": [
4626        {
4627          "type": "STRING",
4628          "value": "<"
4629        },
4630        {
4631          "type": "CHOICE",
4632          "members": [
4633            {
4634              "type": "CHOICE",
4635              "members": [
4636                {
4637                  "type": "SEQ",
4638                  "members": [
4639                    {
4640                      "type": "SEQ",
4641                      "members": [
4642                        {
4643                          "type": "CHOICE",
4644                          "members": [
4645                            {
4646                              "type": "SYMBOL",
4647                              "name": "method_type"
4648                            },
4649                            {
4650                              "type": "SYMBOL",
4651                              "name": "_simple_type_ext"
4652                            }
4653                          ]
4654                        },
4655                        {
4656                          "type": "REPEAT",
4657                          "content": {
4658                            "type": "SEQ",
4659                            "members": [
4660                              {
4661                                "type": "STRING",
4662                                "value": ";"
4663                              },
4664                              {
4665                                "type": "CHOICE",
4666                                "members": [
4667                                  {
4668                                    "type": "SYMBOL",
4669                                    "name": "method_type"
4670                                  },
4671                                  {
4672                                    "type": "SYMBOL",
4673                                    "name": "_simple_type_ext"
4674                                  }
4675                                ]
4676                              }
4677                            ]
4678                          }
4679                        }
4680                      ]
4681                    },
4682                    {
4683                      "type": "CHOICE",
4684                      "members": [
4685                        {
4686                          "type": "SEQ",
4687                          "members": [
4688                            {
4689                              "type": "STRING",
4690                              "value": ";"
4691                            },
4692                            {
4693                              "type": "CHOICE",
4694                              "members": [
4695                                {
4696                                  "type": "STRING",
4697                                  "value": ".."
4698                                },
4699                                {
4700                                  "type": "BLANK"
4701                                }
4702                              ]
4703                            }
4704                          ]
4705                        },
4706                        {
4707                          "type": "BLANK"
4708                        }
4709                      ]
4710                    }
4711                  ]
4712                },
4713                {
4714                  "type": "STRING",
4715                  "value": ".."
4716                }
4717              ]
4718            },
4719            {
4720              "type": "BLANK"
4721            }
4722          ]
4723        },
4724        {
4725          "type": "STRING",
4726          "value": ">"
4727        }
4728      ]
4729    },
4730    "method_type": {
4731      "type": "SEQ",
4732      "members": [
4733        {
4734          "type": "SYMBOL",
4735          "name": "_method_name"
4736        },
4737        {
4738          "type": "SYMBOL",
4739          "name": "_polymorphic_typed"
4740        }
4741      ]
4742    },
4743    "hash_type": {
4744      "type": "PREC",
4745      "value": 17,
4746      "content": {
4747        "type": "SEQ",
4748        "members": [
4749          {
4750            "type": "CHOICE",
4751            "members": [
4752              {
4753                "type": "CHOICE",
4754                "members": [
4755                  {
4756                    "type": "SYMBOL",
4757                    "name": "_simple_type_ext"
4758                  },
4759                  {
4760                    "type": "SEQ",
4761                    "members": [
4762                      {
4763                        "type": "STRING",
4764                        "value": "("
4765                      },
4766                      {
4767                        "type": "SEQ",
4768                        "members": [
4769                          {
4770                            "type": "SYMBOL",
4771                            "name": "_type_ext"
4772                          },
4773                          {
4774                            "type": "REPEAT",
4775                            "content": {
4776                              "type": "SEQ",
4777                              "members": [
4778                                {
4779                                  "type": "STRING",
4780                                  "value": ","
4781                                },
4782                                {
4783                                  "type": "SYMBOL",
4784                                  "name": "_type_ext"
4785                                }
4786                              ]
4787                            }
4788                          }
4789                        ]
4790                      },
4791                      {
4792                        "type": "STRING",
4793                        "value": ")"
4794                      }
4795                    ]
4796                  }
4797                ]
4798              },
4799              {
4800                "type": "BLANK"
4801              }
4802            ]
4803          },
4804          {
4805            "type": "STRING",
4806            "value": "#"
4807          },
4808          {
4809            "type": "SYMBOL",
4810            "name": "class_type_path"
4811          }
4812        ]
4813      }
4814    },
4815    "parenthesized_type": {
4816      "type": "SEQ",
4817      "members": [
4818        {
4819          "type": "STRING",
4820          "value": "("
4821        },
4822        {
4823          "type": "SYMBOL",
4824          "name": "_type_ext"
4825        },
4826        {
4827          "type": "STRING",
4828          "value": ")"
4829        }
4830      ]
4831    },
4832    "_simple_expression": {
4833      "type": "CHOICE",
4834      "members": [
4835        {
4836          "type": "SYMBOL",
4837          "name": "value_path"
4838        },
4839        {
4840          "type": "SYMBOL",
4841          "name": "_constant"
4842        },
4843        {
4844          "type": "SYMBOL",
4845          "name": "typed_expression"
4846        },
4847        {
4848          "type": "SYMBOL",
4849          "name": "constructor_path"
4850        },
4851        {
4852          "type": "SYMBOL",
4853          "name": "tag"
4854        },
4855        {
4856          "type": "SYMBOL",
4857          "name": "list_expression"
4858        },
4859        {
4860          "type": "SYMBOL",
4861          "name": "array_expression"
4862        },
4863        {
4864          "type": "SYMBOL",
4865          "name": "record_expression"
4866        },
4867        {
4868          "type": "SYMBOL",
4869          "name": "prefix_expression"
4870        },
4871        {
4872          "type": "SYMBOL",
4873          "name": "hash_expression"
4874        },
4875        {
4876          "type": "SYMBOL",
4877          "name": "field_get_expression"
4878        },
4879        {
4880          "type": "SYMBOL",
4881          "name": "array_get_expression"
4882        },
4883        {
4884          "type": "SYMBOL",
4885          "name": "string_get_expression"
4886        },
4887        {
4888          "type": "SYMBOL",
4889          "name": "bigarray_get_expression"
4890        },
4891        {
4892          "type": "SYMBOL",
4893          "name": "coercion_expression"
4894        },
4895        {
4896          "type": "SYMBOL",
4897          "name": "local_open_expression"
4898        },
4899        {
4900          "type": "SYMBOL",
4901          "name": "package_expression"
4902        },
4903        {
4904          "type": "SYMBOL",
4905          "name": "new_expression"
4906        },
4907        {
4908          "type": "SYMBOL",
4909          "name": "object_copy_expression"
4910        },
4911        {
4912          "type": "SYMBOL",
4913          "name": "method_invocation"
4914        },
4915        {
4916          "type": "SYMBOL",
4917          "name": "object_expression"
4918        },
4919        {
4920          "type": "SYMBOL",
4921          "name": "parenthesized_expression"
4922        },
4923        {
4924          "type": "SYMBOL",
4925          "name": "ocamlyacc_value"
4926        }
4927      ]
4928    },
4929    "_simple_expression_ext": {
4930      "type": "CHOICE",
4931      "members": [
4932        {
4933          "type": "SYMBOL",
4934          "name": "_simple_expression"
4935        },
4936        {
4937          "type": "SYMBOL",
4938          "name": "_extension"
4939        }
4940      ]
4941    },
4942    "_expression": {
4943      "type": "CHOICE",
4944      "members": [
4945        {
4946          "type": "SYMBOL",
4947          "name": "_simple_expression"
4948        },
4949        {
4950          "type": "SYMBOL",
4951          "name": "product_expression"
4952        },
4953        {
4954          "type": "SYMBOL",
4955          "name": "cons_expression"
4956        },
4957        {
4958          "type": "SYMBOL",
4959          "name": "application_expression"
4960        },
4961        {
4962          "type": "SYMBOL",
4963          "name": "infix_expression"
4964        },
4965        {
4966          "type": "SYMBOL",
4967          "name": "sign_expression"
4968        },
4969        {
4970          "type": "SYMBOL",
4971          "name": "set_expression"
4972        },
4973        {
4974          "type": "SYMBOL",
4975          "name": "if_expression"
4976        },
4977        {
4978          "type": "SYMBOL",
4979          "name": "while_expression"
4980        },
4981        {
4982          "type": "SYMBOL",
4983          "name": "for_expression"
4984        },
4985        {
4986          "type": "SYMBOL",
4987          "name": "match_expression"
4988        },
4989        {
4990          "type": "SYMBOL",
4991          "name": "function_expression"
4992        },
4993        {
4994          "type": "SYMBOL",
4995          "name": "fun_expression"
4996        },
4997        {
4998          "type": "SYMBOL",
4999          "name": "try_expression"
5000        },
5001        {
5002          "type": "SYMBOL",
5003          "name": "let_expression"
5004        },
5005        {
5006          "type": "SYMBOL",
5007          "name": "assert_expression"
5008        },
5009        {
5010          "type": "SYMBOL",
5011          "name": "lazy_expression"
5012        },
5013        {
5014          "type": "SYMBOL",
5015          "name": "let_module_expression"
5016        },
5017        {
5018          "type": "SYMBOL",
5019          "name": "let_open_expression"
5020        },
5021        {
5022          "type": "SYMBOL",
5023          "name": "let_exception_expression"
5024        }
5025      ]
5026    },
5027    "_expression_ext": {
5028      "type": "CHOICE",
5029      "members": [
5030        {
5031          "type": "SYMBOL",
5032          "name": "_expression"
5033        },
5034        {
5035          "type": "SYMBOL",
5036          "name": "_extension"
5037        }
5038      ]
5039    },
5040    "_sequence_expression": {
5041      "type": "CHOICE",
5042      "members": [
5043        {
5044          "type": "SYMBOL",
5045          "name": "_expression"
5046        },
5047        {
5048          "type": "SYMBOL",
5049          "name": "sequence_expression"
5050        }
5051      ]
5052    },
5053    "_sequence_expression_ext": {
5054      "type": "CHOICE",
5055      "members": [
5056        {
5057          "type": "SYMBOL",
5058          "name": "_sequence_expression"
5059        },
5060        {
5061          "type": "SYMBOL",
5062          "name": "_extension"
5063        }
5064      ]
5065    },
5066    "typed_expression": {
5067      "type": "SEQ",
5068      "members": [
5069        {
5070          "type": "STRING",
5071          "value": "("
5072        },
5073        {
5074          "type": "SEQ",
5075          "members": [
5076            {
5077              "type": "SYMBOL",
5078              "name": "_sequence_expression_ext"
5079            },
5080            {
5081              "type": "SYMBOL",
5082              "name": "_typed"
5083            }
5084          ]
5085        },
5086        {
5087          "type": "STRING",
5088          "value": ")"
5089        }
5090      ]
5091    },
5092    "product_expression": {
5093      "type": "PREC_LEFT",
5094      "value": 6,
5095      "content": {
5096        "type": "SEQ",
5097        "members": [
5098          {
5099            "type": "FIELD",
5100            "name": "left",
5101            "content": {
5102              "type": "SYMBOL",
5103              "name": "_expression_ext"
5104            }
5105          },
5106          {
5107            "type": "STRING",
5108            "value": ","
5109          },
5110          {
5111            "type": "FIELD",
5112            "name": "right",
5113            "content": {
5114              "type": "SYMBOL",
5115              "name": "_expression_ext"
5116            }
5117          }
5118        ]
5119      }
5120    },
5121    "cons_expression": {
5122      "type": "PREC_RIGHT",
5123      "value": 11,
5124      "content": {
5125        "type": "SEQ",
5126        "members": [
5127          {
5128            "type": "FIELD",
5129            "name": "left",
5130            "content": {
5131              "type": "SYMBOL",
5132              "name": "_expression_ext"
5133            }
5134          },
5135          {
5136            "type": "STRING",
5137            "value": "::"
5138          },
5139          {
5140            "type": "FIELD",
5141            "name": "right",
5142            "content": {
5143              "type": "SYMBOL",
5144              "name": "_expression_ext"
5145            }
5146          }
5147        ]
5148      }
5149    },
5150    "list_expression": {
5151      "type": "SEQ",
5152      "members": [
5153        {
5154          "type": "STRING",
5155          "value": "["
5156        },
5157        {
5158          "type": "CHOICE",
5159          "members": [
5160            {
5161              "type": "SEQ",
5162              "members": [
5163                {
5164                  "type": "SEQ",
5165                  "members": [
5166                    {
5167                      "type": "SYMBOL",
5168                      "name": "_expression_ext"
5169                    },
5170                    {
5171                      "type": "REPEAT",
5172                      "content": {
5173                        "type": "SEQ",
5174                        "members": [
5175                          {
5176                            "type": "STRING",
5177                            "value": ";"
5178                          },
5179                          {
5180                            "type": "SYMBOL",
5181                            "name": "_expression_ext"
5182                          }
5183                        ]
5184                      }
5185                    }
5186                  ]
5187                },
5188                {
5189                  "type": "CHOICE",
5190                  "members": [
5191                    {
5192                      "type": "STRING",
5193                      "value": ";"
5194                    },
5195                    {
5196                      "type": "BLANK"
5197                    }
5198                  ]
5199                }
5200              ]
5201            },
5202            {
5203              "type": "BLANK"
5204            }
5205          ]
5206        },
5207        {
5208          "type": "STRING",
5209          "value": "]"
5210        }
5211      ]
5212    },
5213    "array_expression": {
5214      "type": "SEQ",
5215      "members": [
5216        {
5217          "type": "STRING",
5218          "value": "[|"
5219        },
5220        {
5221          "type": "CHOICE",
5222          "members": [
5223            {
5224              "type": "SEQ",
5225              "members": [
5226                {
5227                  "type": "SEQ",
5228                  "members": [
5229                    {
5230                      "type": "SYMBOL",
5231                      "name": "_expression_ext"
5232                    },
5233                    {
5234                      "type": "REPEAT",
5235                      "content": {
5236                        "type": "SEQ",
5237                        "members": [
5238                          {
5239                            "type": "STRING",
5240                            "value": ";"
5241                          },
5242                          {
5243                            "type": "SYMBOL",
5244                            "name": "_expression_ext"
5245                          }
5246                        ]
5247                      }
5248                    }
5249                  ]
5250                },
5251                {
5252                  "type": "CHOICE",
5253                  "members": [
5254                    {
5255                      "type": "STRING",
5256                      "value": ";"
5257                    },
5258                    {
5259                      "type": "BLANK"
5260                    }
5261                  ]
5262                }
5263              ]
5264            },
5265            {
5266              "type": "BLANK"
5267            }
5268          ]
5269        },
5270        {
5271          "type": "STRING",
5272          "value": "|]"
5273        }
5274      ]
5275    },
5276    "record_expression": {
5277      "type": "SEQ",
5278      "members": [
5279        {
5280          "type": "STRING",
5281          "value": "{"
5282        },
5283        {
5284          "type": "CHOICE",
5285          "members": [
5286            {
5287              "type": "SEQ",
5288              "members": [
5289                {
5290                  "type": "SYMBOL",
5291                  "name": "_simple_expression_ext"
5292                },
5293                {
5294                  "type": "STRING",
5295                  "value": "with"
5296                }
5297              ]
5298            },
5299            {
5300              "type": "BLANK"
5301            }
5302          ]
5303        },
5304        {
5305          "type": "SEQ",
5306          "members": [
5307            {
5308              "type": "SYMBOL",
5309              "name": "field_expression"
5310            },
5311            {
5312              "type": "REPEAT",
5313              "content": {
5314                "type": "SEQ",
5315                "members": [
5316                  {
5317                    "type": "STRING",
5318                    "value": ";"
5319                  },
5320                  {
5321                    "type": "SYMBOL",
5322                    "name": "field_expression"
5323                  }
5324                ]
5325              }
5326            }
5327          ]
5328        },
5329        {
5330          "type": "CHOICE",
5331          "members": [
5332            {
5333              "type": "STRING",
5334              "value": ";"
5335            },
5336            {
5337              "type": "BLANK"
5338            }
5339          ]
5340        },
5341        {
5342          "type": "STRING",
5343          "value": "}"
5344        }
5345      ]
5346    },
5347    "field_expression": {
5348      "type": "PREC",
5349      "value": 3,
5350      "content": {
5351        "type": "SEQ",
5352        "members": [
5353          {
5354            "type": "FIELD",
5355            "name": "name",
5356            "content": {
5357              "type": "SYMBOL",
5358              "name": "field_path"
5359            }
5360          },
5361          {
5362            "type": "CHOICE",
5363            "members": [
5364              {
5365                "type": "SYMBOL",
5366                "name": "_typed"
5367              },
5368              {
5369                "type": "BLANK"
5370              }
5371            ]
5372          },
5373          {
5374            "type": "CHOICE",
5375            "members": [
5376              {
5377                "type": "SEQ",
5378                "members": [
5379                  {
5380                    "type": "STRING",
5381                    "value": "="
5382                  },
5383                  {
5384                    "type": "FIELD",
5385                    "name": "body",
5386                    "content": {
5387                      "type": "SYMBOL",
5388                      "name": "_expression_ext"
5389                    }
5390                  }
5391                ]
5392              },
5393              {
5394                "type": "BLANK"
5395              }
5396            ]
5397          }
5398        ]
5399      }
5400    },
5401    "application_expression": {
5402      "type": "PREC_RIGHT",
5403      "value": 16,
5404      "content": {
5405        "type": "SEQ",
5406        "members": [
5407          {
5408            "type": "FIELD",
5409            "name": "function",
5410            "content": {
5411              "type": "SYMBOL",
5412              "name": "_simple_expression_ext"
5413            }
5414          },
5415          {
5416            "type": "REPEAT1",
5417            "content": {
5418              "type": "FIELD",
5419              "name": "argument",
5420              "content": {
5421                "type": "SYMBOL",
5422                "name": "_argument"
5423              }
5424            }
5425          }
5426        ]
5427      }
5428    },
5429    "_argument": {
5430      "type": "CHOICE",
5431      "members": [
5432        {
5433          "type": "SYMBOL",
5434          "name": "_simple_expression_ext"
5435        },
5436        {
5437          "type": "SYMBOL",
5438          "name": "labeled_argument"
5439        }
5440      ]
5441    },
5442    "labeled_argument": {
5443      "type": "CHOICE",
5444      "members": [
5445        {
5446          "type": "SYMBOL",
5447          "name": "_label"
5448        },
5449        {
5450          "type": "SEQ",
5451          "members": [
5452            {
5453              "type": "SYMBOL",
5454              "name": "_label"
5455            },
5456            {
5457              "type": "IMMEDIATE_TOKEN",
5458              "content": {
5459                "type": "STRING",
5460                "value": ":"
5461              }
5462            },
5463            {
5464              "type": "SYMBOL",
5465              "name": "_simple_expression_ext"
5466            }
5467          ]
5468        },
5469        {
5470          "type": "SEQ",
5471          "members": [
5472            {
5473              "type": "CHOICE",
5474              "members": [
5475                {
5476                  "type": "STRING",
5477                  "value": "~"
5478                },
5479                {
5480                  "type": "STRING",
5481                  "value": "?"
5482                }
5483              ]
5484            },
5485            {
5486              "type": "STRING",
5487              "value": "("
5488            },
5489            {
5490              "type": "SYMBOL",
5491              "name": "_label_name"
5492            },
5493            {
5494              "type": "SYMBOL",
5495              "name": "_typed"
5496            },
5497            {
5498              "type": "STRING",
5499              "value": ")"
5500            }
5501          ]
5502        }
5503      ]
5504    },
5505    "prefix_expression": {
5506      "type": "PREC",
5507      "value": 19,
5508      "content": {
5509        "type": "SEQ",
5510        "members": [
5511          {
5512            "type": "SYMBOL",
5513            "name": "prefix_operator"
5514          },
5515          {
5516            "type": "FIELD",
5517            "name": "right",
5518            "content": {
5519              "type": "SYMBOL",
5520              "name": "_simple_expression_ext"
5521            }
5522          }
5523        ]
5524      }
5525    },
5526    "sign_expression": {
5527      "type": "PREC",
5528      "value": 15,
5529      "content": {
5530        "type": "SEQ",
5531        "members": [
5532          {
5533            "type": "SYMBOL",
5534            "name": "sign_operator"
5535          },
5536          {
5537            "type": "FIELD",
5538            "name": "right",
5539            "content": {
5540              "type": "SYMBOL",
5541              "name": "_expression_ext"
5542            }
5543          }
5544        ]
5545      }
5546    },
5547    "hash_expression": {
5548      "type": "PREC_LEFT",
5549      "value": 17,
5550      "content": {
5551        "type": "SEQ",
5552        "members": [
5553          {
5554            "type": "FIELD",
5555            "name": "left",
5556            "content": {
5557              "type": "SYMBOL",
5558              "name": "_simple_expression_ext"
5559            }
5560          },
5561          {
5562            "type": "SYMBOL",
5563            "name": "hash_operator"
5564          },
5565          {
5566            "type": "FIELD",
5567            "name": "right",
5568            "content": {
5569              "type": "SYMBOL",
5570              "name": "_simple_expression_ext"
5571            }
5572          }
5573        ]
5574      }
5575    },
5576    "infix_expression": {
5577      "type": "CHOICE",
5578      "members": [
5579        {
5580          "type": "PREC_RIGHT",
5581          "value": 14,
5582          "content": {
5583            "type": "SEQ",
5584            "members": [
5585              {
5586                "type": "FIELD",
5587                "name": "left",
5588                "content": {
5589                  "type": "SYMBOL",
5590                  "name": "_expression_ext"
5591                }
5592              },
5593              {
5594                "type": "ALIAS",
5595                "content": {
5596                  "type": "SYMBOL",
5597                  "name": "_pow_operator"
5598                },
5599                "named": true,
5600                "value": "infix_operator"
5601              },
5602              {
5603                "type": "FIELD",
5604                "name": "right",
5605                "content": {
5606                  "type": "SYMBOL",
5607                  "name": "_expression_ext"
5608                }
5609              }
5610            ]
5611          }
5612        },
5613        {
5614          "type": "PREC_LEFT",
5615          "value": 13,
5616          "content": {
5617            "type": "SEQ",
5618            "members": [
5619              {
5620                "type": "FIELD",
5621                "name": "left",
5622                "content": {
5623                  "type": "SYMBOL",
5624                  "name": "_expression_ext"
5625                }
5626              },
5627              {
5628                "type": "ALIAS",
5629                "content": {
5630                  "type": "SYMBOL",
5631                  "name": "_mult_operator"
5632                },
5633                "named": true,
5634                "value": "infix_operator"
5635              },
5636              {
5637                "type": "FIELD",
5638                "name": "right",
5639                "content": {
5640                  "type": "SYMBOL",
5641                  "name": "_expression_ext"
5642                }
5643              }
5644            ]
5645          }
5646        },
5647        {
5648          "type": "PREC_LEFT",
5649          "value": 12,
5650          "content": {
5651            "type": "SEQ",
5652            "members": [
5653              {
5654                "type": "FIELD",
5655                "name": "left",
5656                "content": {
5657                  "type": "SYMBOL",
5658                  "name": "_expression_ext"
5659                }
5660              },
5661              {
5662                "type": "ALIAS",
5663                "content": {
5664                  "type": "SYMBOL",
5665                  "name": "_add_operator"
5666                },
5667                "named": true,
5668                "value": "infix_operator"
5669              },
5670              {
5671                "type": "FIELD",
5672                "name": "right",
5673                "content": {
5674                  "type": "SYMBOL",
5675                  "name": "_expression_ext"
5676                }
5677              }
5678            ]
5679          }
5680        },
5681        {
5682          "type": "PREC_RIGHT",
5683          "value": 10,
5684          "content": {
5685            "type": "SEQ",
5686            "members": [
5687              {
5688                "type": "FIELD",
5689                "name": "left",
5690                "content": {
5691                  "type": "SYMBOL",
5692                  "name": "_expression_ext"
5693                }
5694              },
5695              {
5696                "type": "ALIAS",
5697                "content": {
5698                  "type": "SYMBOL",
5699                  "name": "_concat_operator"
5700                },
5701                "named": true,
5702                "value": "infix_operator"
5703              },
5704              {
5705                "type": "FIELD",
5706                "name": "right",
5707                "content": {
5708                  "type": "SYMBOL",
5709                  "name": "_expression_ext"
5710                }
5711              }
5712            ]
5713          }
5714        },
5715        {
5716          "type": "PREC_LEFT",
5717          "value": 9,
5718          "content": {
5719            "type": "SEQ",
5720            "members": [
5721              {
5722                "type": "FIELD",
5723                "name": "left",
5724                "content": {
5725                  "type": "SYMBOL",
5726                  "name": "_expression_ext"
5727                }
5728              },
5729              {
5730                "type": "ALIAS",
5731                "content": {
5732                  "type": "SYMBOL",
5733                  "name": "_rel_operator"
5734                },
5735                "named": true,
5736                "value": "infix_operator"
5737              },
5738              {
5739                "type": "FIELD",
5740                "name": "right",
5741                "content": {
5742                  "type": "SYMBOL",
5743                  "name": "_expression_ext"
5744                }
5745              }
5746            ]
5747          }
5748        },
5749        {
5750          "type": "PREC_RIGHT",
5751          "value": 8,
5752          "content": {
5753            "type": "SEQ",
5754            "members": [
5755              {
5756                "type": "FIELD",
5757                "name": "left",
5758                "content": {
5759                  "type": "SYMBOL",
5760                  "name": "_expression_ext"
5761                }
5762              },
5763              {
5764                "type": "ALIAS",
5765                "content": {
5766                  "type": "SYMBOL",
5767                  "name": "_and_operator"
5768                },
5769                "named": true,
5770                "value": "infix_operator"
5771              },
5772              {
5773                "type": "FIELD",
5774                "name": "right",
5775                "content": {
5776                  "type": "SYMBOL",
5777                  "name": "_expression_ext"
5778                }
5779              }
5780            ]
5781          }
5782        },
5783        {
5784          "type": "PREC_RIGHT",
5785          "value": 7,
5786          "content": {
5787            "type": "SEQ",
5788            "members": [
5789              {
5790                "type": "FIELD",
5791                "name": "left",
5792                "content": {
5793                  "type": "SYMBOL",
5794                  "name": "_expression_ext"
5795                }
5796              },
5797              {
5798                "type": "ALIAS",
5799                "content": {
5800                  "type": "SYMBOL",
5801                  "name": "_or_operator"
5802                },
5803                "named": true,
5804                "value": "infix_operator"
5805              },
5806              {
5807                "type": "FIELD",
5808                "name": "right",
5809                "content": {
5810                  "type": "SYMBOL",
5811                  "name": "_expression_ext"
5812                }
5813              }
5814            ]
5815          }
5816        },
5817        {
5818          "type": "PREC_RIGHT",
5819          "value": 5,
5820          "content": {
5821            "type": "SEQ",
5822            "members": [
5823              {
5824                "type": "FIELD",
5825                "name": "left",
5826                "content": {
5827                  "type": "SYMBOL",
5828                  "name": "_expression_ext"
5829                }
5830              },
5831              {
5832                "type": "ALIAS",
5833                "content": {
5834                  "type": "SYMBOL",
5835                  "name": "_assign_operator"
5836                },
5837                "named": true,
5838                "value": "infix_operator"
5839              },
5840              {
5841                "type": "FIELD",
5842                "name": "right",
5843                "content": {
5844                  "type": "SYMBOL",
5845                  "name": "_expression_ext"
5846                }
5847              }
5848            ]
5849          }
5850        }
5851      ]
5852    },
5853    "field_get_expression": {
5854      "type": "PREC_LEFT",
5855      "value": 18,
5856      "content": {
5857        "type": "SEQ",
5858        "members": [
5859          {
5860            "type": "SYMBOL",
5861            "name": "_simple_expression_ext"
5862          },
5863          {
5864            "type": "STRING",
5865            "value": "."
5866          },
5867          {
5868            "type": "SYMBOL",
5869            "name": "field_path"
5870          }
5871        ]
5872      }
5873    },
5874    "array_get_expression": {
5875      "type": "PREC",
5876      "value": 18,
5877      "content": {
5878        "type": "SEQ",
5879        "members": [
5880          {
5881            "type": "SYMBOL",
5882            "name": "_simple_expression_ext"
5883          },
5884          {
5885            "type": "STRING",
5886            "value": "."
5887          },
5888          {
5889            "type": "CHOICE",
5890            "members": [
5891              {
5892                "type": "SYMBOL",
5893                "name": "indexing_operator_path"
5894              },
5895              {
5896                "type": "BLANK"
5897              }
5898            ]
5899          },
5900          {
5901            "type": "STRING",
5902            "value": "("
5903          },
5904          {
5905            "type": "SYMBOL",
5906            "name": "_sequence_expression_ext"
5907          },
5908          {
5909            "type": "STRING",
5910            "value": ")"
5911          }
5912        ]
5913      }
5914    },
5915    "string_get_expression": {
5916      "type": "PREC",
5917      "value": 18,
5918      "content": {
5919        "type": "SEQ",
5920        "members": [
5921          {
5922            "type": "SYMBOL",
5923            "name": "_simple_expression_ext"
5924          },
5925          {
5926            "type": "STRING",
5927            "value": "."
5928          },
5929          {
5930            "type": "CHOICE",
5931            "members": [
5932              {
5933                "type": "SYMBOL",
5934                "name": "indexing_operator_path"
5935              },
5936              {
5937                "type": "BLANK"
5938              }
5939            ]
5940          },
5941          {
5942            "type": "STRING",
5943            "value": "["
5944          },
5945          {
5946            "type": "SYMBOL",
5947            "name": "_sequence_expression_ext"
5948          },
5949          {
5950            "type": "STRING",
5951            "value": "]"
5952          }
5953        ]
5954      }
5955    },
5956    "bigarray_get_expression": {
5957      "type": "PREC",
5958      "value": 18,
5959      "content": {
5960        "type": "SEQ",
5961        "members": [
5962          {
5963            "type": "SYMBOL",
5964            "name": "_simple_expression_ext"
5965          },
5966          {
5967            "type": "STRING",
5968            "value": "."
5969          },
5970          {
5971            "type": "CHOICE",
5972            "members": [
5973              {
5974                "type": "SYMBOL",
5975                "name": "indexing_operator_path"
5976              },
5977              {
5978                "type": "BLANK"
5979              }
5980            ]
5981          },
5982          {
5983            "type": "STRING",
5984            "value": "{"
5985          },
5986          {
5987            "type": "SYMBOL",
5988            "name": "_sequence_expression_ext"
5989          },
5990          {
5991            "type": "STRING",
5992            "value": "}"
5993          }
5994        ]
5995      }
5996    },
5997    "set_expression": {
5998      "type": "PREC_RIGHT",
5999      "value": 5,
6000      "content": {
6001        "type": "SEQ",
6002        "members": [
6003          {
6004            "type": "CHOICE",
6005            "members": [
6006              {
6007                "type": "SYMBOL",
6008                "name": "field_get_expression"
6009              },
6010              {
6011                "type": "SYMBOL",
6012                "name": "array_get_expression"
6013              },
6014              {
6015                "type": "SYMBOL",
6016                "name": "string_get_expression"
6017              },
6018              {
6019                "type": "SYMBOL",
6020                "name": "bigarray_get_expression"
6021              },
6022              {
6023                "type": "SYMBOL",
6024                "name": "_instance_variable_name"
6025              }
6026            ]
6027          },
6028          {
6029            "type": "STRING",
6030            "value": "<-"
6031          },
6032          {
6033            "type": "FIELD",
6034            "name": "body",
6035            "content": {
6036              "type": "SYMBOL",
6037              "name": "_expression_ext"
6038            }
6039          }
6040        ]
6041      }
6042    },
6043    "if_expression": {
6044      "type": "PREC_RIGHT",
6045      "value": 4,
6046      "content": {
6047        "type": "SEQ",
6048        "members": [
6049          {
6050            "type": "STRING",
6051            "value": "if"
6052          },
6053          {
6054            "type": "CHOICE",
6055            "members": [
6056              {
6057                "type": "SYMBOL",
6058                "name": "_attribute"
6059              },
6060              {
6061                "type": "BLANK"
6062              }
6063            ]
6064          },
6065          {
6066            "type": "FIELD",
6067            "name": "condition",
6068            "content": {
6069              "type": "SYMBOL",
6070              "name": "_sequence_expression_ext"
6071            }
6072          },
6073          {
6074            "type": "SYMBOL",
6075            "name": "then_clause"
6076          },
6077          {
6078            "type": "CHOICE",
6079            "members": [
6080              {
6081                "type": "SYMBOL",
6082                "name": "else_clause"
6083              },
6084              {
6085                "type": "BLANK"
6086              }
6087            ]
6088          }
6089        ]
6090      }
6091    },
6092    "then_clause": {
6093      "type": "SEQ",
6094      "members": [
6095        {
6096          "type": "STRING",
6097          "value": "then"
6098        },
6099        {
6100          "type": "SYMBOL",
6101          "name": "_expression_ext"
6102        }
6103      ]
6104    },
6105    "else_clause": {
6106      "type": "SEQ",
6107      "members": [
6108        {
6109          "type": "STRING",
6110          "value": "else"
6111        },
6112        {
6113          "type": "SYMBOL",
6114          "name": "_expression_ext"
6115        }
6116      ]
6117    },
6118    "while_expression": {
6119      "type": "SEQ",
6120      "members": [
6121        {
6122          "type": "STRING",
6123          "value": "while"
6124        },
6125        {
6126          "type": "CHOICE",
6127          "members": [
6128            {
6129              "type": "SYMBOL",
6130              "name": "_attribute"
6131            },
6132            {
6133              "type": "BLANK"
6134            }
6135          ]
6136        },
6137        {
6138          "type": "FIELD",
6139          "name": "condition",
6140          "content": {
6141            "type": "SYMBOL",
6142            "name": "_sequence_expression_ext"
6143          }
6144        },
6145        {
6146          "type": "SYMBOL",
6147          "name": "do_clause"
6148        }
6149      ]
6150    },
6151    "do_clause": {
6152      "type": "SEQ",
6153      "members": [
6154        {
6155          "type": "STRING",
6156          "value": "do"
6157        },
6158        {
6159          "type": "CHOICE",
6160          "members": [
6161            {
6162              "type": "SYMBOL",
6163              "name": "_sequence_expression_ext"
6164            },
6165            {
6166              "type": "BLANK"
6167            }
6168          ]
6169        },
6170        {
6171          "type": "STRING",
6172          "value": "done"
6173        }
6174      ]
6175    },
6176    "for_expression": {
6177      "type": "SEQ",
6178      "members": [
6179        {
6180          "type": "STRING",
6181          "value": "for"
6182        },
6183        {
6184          "type": "CHOICE",
6185          "members": [
6186            {
6187              "type": "SYMBOL",
6188              "name": "_attribute"
6189            },
6190            {
6191              "type": "BLANK"
6192            }
6193          ]
6194        },
6195        {
6196          "type": "FIELD",
6197          "name": "name",
6198          "content": {
6199            "type": "SYMBOL",
6200            "name": "_value_pattern"
6201          }
6202        },
6203        {
6204          "type": "STRING",
6205          "value": "="
6206        },
6207        {
6208          "type": "FIELD",
6209          "name": "from",
6210          "content": {
6211            "type": "SYMBOL",
6212            "name": "_sequence_expression_ext"
6213          }
6214        },
6215        {
6216          "type": "CHOICE",
6217          "members": [
6218            {
6219              "type": "STRING",
6220              "value": "to"
6221            },
6222            {
6223              "type": "STRING",
6224              "value": "downto"
6225            }
6226          ]
6227        },
6228        {
6229          "type": "FIELD",
6230          "name": "to",
6231          "content": {
6232            "type": "SYMBOL",
6233            "name": "_sequence_expression_ext"
6234          }
6235        },
6236        {
6237          "type": "SYMBOL",
6238          "name": "do_clause"
6239        }
6240      ]
6241    },
6242    "sequence_expression": {
6243      "type": "PREC_RIGHT",
6244      "value": 3,
6245      "content": {
6246        "type": "SEQ",
6247        "members": [
6248          {
6249            "type": "FIELD",
6250            "name": "left",
6251            "content": {
6252              "type": "SYMBOL",
6253              "name": "_expression_ext"
6254            }
6255          },
6256          {
6257            "type": "STRING",
6258            "value": ";"
6259          },
6260          {
6261            "type": "CHOICE",
6262            "members": [
6263              {
6264                "type": "SEQ",
6265                "members": [
6266                  {
6267                    "type": "CHOICE",
6268                    "members": [
6269                      {
6270                        "type": "SYMBOL",
6271                        "name": "_attribute"
6272                      },
6273                      {
6274                        "type": "BLANK"
6275                      }
6276                    ]
6277                  },
6278                  {
6279                    "type": "FIELD",
6280                    "name": "right",
6281                    "content": {
6282                      "type": "SYMBOL",
6283                      "name": "_sequence_expression_ext"
6284                    }
6285                  }
6286                ]
6287              },
6288              {
6289                "type": "BLANK"
6290              }
6291            ]
6292          }
6293        ]
6294      }
6295    },
6296    "match_expression": {
6297      "type": "PREC_RIGHT",
6298      "value": 2,
6299      "content": {
6300        "type": "SEQ",
6301        "members": [
6302          {
6303            "type": "CHOICE",
6304            "members": [
6305              {
6306                "type": "SEQ",
6307                "members": [
6308                  {
6309                    "type": "STRING",
6310                    "value": "match"
6311                  },
6312                  {
6313                    "type": "CHOICE",
6314                    "members": [
6315                      {
6316                        "type": "SYMBOL",
6317                        "name": "_attribute"
6318                      },
6319                      {
6320                        "type": "BLANK"
6321                      }
6322                    ]
6323                  }
6324                ]
6325              },
6326              {
6327                "type": "SYMBOL",
6328                "name": "match_operator"
6329              }
6330            ]
6331          },
6332          {
6333            "type": "SYMBOL",
6334            "name": "_sequence_expression_ext"
6335          },
6336          {
6337            "type": "STRING",
6338            "value": "with"
6339          },
6340          {
6341            "type": "SYMBOL",
6342            "name": "_match_cases"
6343          }
6344        ]
6345      }
6346    },
6347    "_match_cases": {
6348      "type": "PREC_RIGHT",
6349      "value": 0,
6350      "content": {
6351        "type": "SEQ",
6352        "members": [
6353          {
6354            "type": "CHOICE",
6355            "members": [
6356              {
6357                "type": "STRING",
6358                "value": "|"
6359              },
6360              {
6361                "type": "BLANK"
6362              }
6363            ]
6364          },
6365          {
6366            "type": "SEQ",
6367            "members": [
6368              {
6369                "type": "SYMBOL",
6370                "name": "match_case"
6371              },
6372              {
6373                "type": "REPEAT",
6374                "content": {
6375                  "type": "SEQ",
6376                  "members": [
6377                    {
6378                      "type": "STRING",
6379                      "value": "|"
6380                    },
6381                    {
6382                      "type": "SYMBOL",
6383                      "name": "match_case"
6384                    }
6385                  ]
6386                }
6387              }
6388            ]
6389          }
6390        ]
6391      }
6392    },
6393    "match_case": {
6394      "type": "SEQ",
6395      "members": [
6396        {
6397          "type": "FIELD",
6398          "name": "pattern",
6399          "content": {
6400            "type": "SYMBOL",
6401            "name": "_pattern_ext"
6402          }
6403        },
6404        {
6405          "type": "CHOICE",
6406          "members": [
6407            {
6408              "type": "SYMBOL",
6409              "name": "guard"
6410            },
6411            {
6412              "type": "BLANK"
6413            }
6414          ]
6415        },
6416        {
6417          "type": "STRING",
6418          "value": "->"
6419        },
6420        {
6421          "type": "FIELD",
6422          "name": "body",
6423          "content": {
6424            "type": "CHOICE",
6425            "members": [
6426              {
6427                "type": "SYMBOL",
6428                "name": "_sequence_expression_ext"
6429              },
6430              {
6431                "type": "SYMBOL",
6432                "name": "refutation_case"
6433              }
6434            ]
6435          }
6436        }
6437      ]
6438    },
6439    "guard": {
6440      "type": "SEQ",
6441      "members": [
6442        {
6443          "type": "STRING",
6444          "value": "when"
6445        },
6446        {
6447          "type": "SYMBOL",
6448          "name": "_sequence_expression_ext"
6449        }
6450      ]
6451    },
6452    "refutation_case": {
6453      "type": "STRING",
6454      "value": "."
6455    },
6456    "function_expression": {
6457      "type": "PREC_RIGHT",
6458      "value": 2,
6459      "content": {
6460        "type": "SEQ",
6461        "members": [
6462          {
6463            "type": "STRING",
6464            "value": "function"
6465          },
6466          {
6467            "type": "CHOICE",
6468            "members": [
6469              {
6470                "type": "SYMBOL",
6471                "name": "_attribute"
6472              },
6473              {
6474                "type": "BLANK"
6475              }
6476            ]
6477          },
6478          {
6479            "type": "SYMBOL",
6480            "name": "_match_cases"
6481          }
6482        ]
6483      }
6484    },
6485    "fun_expression": {
6486      "type": "PREC_RIGHT",
6487      "value": 2,
6488      "content": {
6489        "type": "SEQ",
6490        "members": [
6491          {
6492            "type": "STRING",
6493            "value": "fun"
6494          },
6495          {
6496            "type": "CHOICE",
6497            "members": [
6498              {
6499                "type": "SYMBOL",
6500                "name": "_attribute"
6501              },
6502              {
6503                "type": "BLANK"
6504              }
6505            ]
6506          },
6507          {
6508            "type": "REPEAT1",
6509            "content": {
6510              "type": "SYMBOL",
6511              "name": "_parameter"
6512            }
6513          },
6514          {
6515            "type": "CHOICE",
6516            "members": [
6517              {
6518                "type": "SYMBOL",
6519                "name": "_simple_typed"
6520              },
6521              {
6522                "type": "BLANK"
6523              }
6524            ]
6525          },
6526          {
6527            "type": "STRING",
6528            "value": "->"
6529          },
6530          {
6531            "type": "FIELD",
6532            "name": "body",
6533            "content": {
6534              "type": "SYMBOL",
6535              "name": "_sequence_expression_ext"
6536            }
6537          }
6538        ]
6539      }
6540    },
6541    "try_expression": {
6542      "type": "PREC_RIGHT",
6543      "value": 2,
6544      "content": {
6545        "type": "SEQ",
6546        "members": [
6547          {
6548            "type": "STRING",
6549            "value": "try"
6550          },
6551          {
6552            "type": "CHOICE",
6553            "members": [
6554              {
6555                "type": "SYMBOL",
6556                "name": "_attribute"
6557              },
6558              {
6559                "type": "BLANK"
6560              }
6561            ]
6562          },
6563          {
6564            "type": "SYMBOL",
6565            "name": "_sequence_expression_ext"
6566          },
6567          {
6568            "type": "STRING",
6569            "value": "with"
6570          },
6571          {
6572            "type": "SYMBOL",
6573            "name": "_match_cases"
6574          }
6575        ]
6576      }
6577    },
6578    "let_expression": {
6579      "type": "PREC_RIGHT",
6580      "value": 2,
6581      "content": {
6582        "type": "SEQ",
6583        "members": [
6584          {
6585            "type": "SYMBOL",
6586            "name": "value_definition"
6587          },
6588          {
6589            "type": "STRING",
6590            "value": "in"
6591          },
6592          {
6593            "type": "SYMBOL",
6594            "name": "_sequence_expression_ext"
6595          }
6596        ]
6597      }
6598    },
6599    "coercion_expression": {
6600      "type": "SEQ",
6601      "members": [
6602        {
6603          "type": "STRING",
6604          "value": "("
6605        },
6606        {
6607          "type": "SEQ",
6608          "members": [
6609            {
6610              "type": "SYMBOL",
6611              "name": "_sequence_expression_ext"
6612            },
6613            {
6614              "type": "CHOICE",
6615              "members": [
6616                {
6617                  "type": "SYMBOL",
6618                  "name": "_typed"
6619                },
6620                {
6621                  "type": "BLANK"
6622                }
6623              ]
6624            },
6625            {
6626              "type": "STRING",
6627              "value": ":>"
6628            },
6629            {
6630              "type": "SYMBOL",
6631              "name": "_type_ext"
6632            }
6633          ]
6634        },
6635        {
6636          "type": "STRING",
6637          "value": ")"
6638        }
6639      ]
6640    },
6641    "assert_expression": {
6642      "type": "PREC_LEFT",
6643      "value": 16,
6644      "content": {
6645        "type": "SEQ",
6646        "members": [
6647          {
6648            "type": "STRING",
6649            "value": "assert"
6650          },
6651          {
6652            "type": "CHOICE",
6653            "members": [
6654              {
6655                "type": "SYMBOL",
6656                "name": "_attribute"
6657              },
6658              {
6659                "type": "BLANK"
6660              }
6661            ]
6662          },
6663          {
6664            "type": "SYMBOL",
6665            "name": "_simple_expression_ext"
6666          }
6667        ]
6668      }
6669    },
6670    "lazy_expression": {
6671      "type": "PREC_LEFT",
6672      "value": 16,
6673      "content": {
6674        "type": "SEQ",
6675        "members": [
6676          {
6677            "type": "STRING",
6678            "value": "lazy"
6679          },
6680          {
6681            "type": "CHOICE",
6682            "members": [
6683              {
6684                "type": "SYMBOL",
6685                "name": "_attribute"
6686              },
6687              {
6688                "type": "BLANK"
6689              }
6690            ]
6691          },
6692          {
6693            "type": "SYMBOL",
6694            "name": "_simple_expression_ext"
6695          }
6696        ]
6697      }
6698    },
6699    "let_module_expression": {
6700      "type": "PREC_RIGHT",
6701      "value": 2,
6702      "content": {
6703        "type": "SEQ",
6704        "members": [
6705          {
6706            "type": "STRING",
6707            "value": "let"
6708          },
6709          {
6710            "type": "SYMBOL",
6711            "name": "module_definition"
6712          },
6713          {
6714            "type": "STRING",
6715            "value": "in"
6716          },
6717          {
6718            "type": "FIELD",
6719            "name": "body",
6720            "content": {
6721              "type": "SYMBOL",
6722              "name": "_sequence_expression_ext"
6723            }
6724          }
6725        ]
6726      }
6727    },
6728    "let_open_expression": {
6729      "type": "PREC_RIGHT",
6730      "value": 2,
6731      "content": {
6732        "type": "SEQ",
6733        "members": [
6734          {
6735            "type": "STRING",
6736            "value": "let"
6737          },
6738          {
6739            "type": "SYMBOL",
6740            "name": "open_module"
6741          },
6742          {
6743            "type": "STRING",
6744            "value": "in"
6745          },
6746          {
6747            "type": "FIELD",
6748            "name": "body",
6749            "content": {
6750              "type": "SYMBOL",
6751              "name": "_sequence_expression_ext"
6752            }
6753          }
6754        ]
6755      }
6756    },
6757    "local_open_expression": {
6758      "type": "SEQ",
6759      "members": [
6760        {
6761          "type": "SYMBOL",
6762          "name": "module_path"
6763        },
6764        {
6765          "type": "STRING",
6766          "value": "."
6767        },
6768        {
6769          "type": "CHOICE",
6770          "members": [
6771            {
6772              "type": "SEQ",
6773              "members": [
6774                {
6775                  "type": "STRING",
6776                  "value": "("
6777                },
6778                {
6779                  "type": "CHOICE",
6780                  "members": [
6781                    {
6782                      "type": "SYMBOL",
6783                      "name": "_sequence_expression_ext"
6784                    },
6785                    {
6786                      "type": "BLANK"
6787                    }
6788                  ]
6789                },
6790                {
6791                  "type": "STRING",
6792                  "value": ")"
6793                }
6794              ]
6795            },
6796            {
6797              "type": "SYMBOL",
6798              "name": "list_expression"
6799            },
6800            {
6801              "type": "SYMBOL",
6802              "name": "array_expression"
6803            },
6804            {
6805              "type": "SYMBOL",
6806              "name": "record_expression"
6807            },
6808            {
6809              "type": "SYMBOL",
6810              "name": "object_copy_expression"
6811            },
6812            {
6813              "type": "SYMBOL",
6814              "name": "package_expression"
6815            }
6816          ]
6817        }
6818      ]
6819    },
6820    "package_expression": {
6821      "type": "SEQ",
6822      "members": [
6823        {
6824          "type": "STRING",
6825          "value": "("
6826        },
6827        {
6828          "type": "SEQ",
6829          "members": [
6830            {
6831              "type": "STRING",
6832              "value": "module"
6833            },
6834            {
6835              "type": "CHOICE",
6836              "members": [
6837                {
6838                  "type": "SYMBOL",
6839                  "name": "_attribute"
6840                },
6841                {
6842                  "type": "BLANK"
6843                }
6844              ]
6845            },
6846            {
6847              "type": "SYMBOL",
6848              "name": "_module_expression_ext"
6849            },
6850            {
6851              "type": "CHOICE",
6852              "members": [
6853                {
6854                  "type": "SYMBOL",
6855                  "name": "_module_typed"
6856                },
6857                {
6858                  "type": "BLANK"
6859                }
6860              ]
6861            }
6862          ]
6863        },
6864        {
6865          "type": "STRING",
6866          "value": ")"
6867        }
6868      ]
6869    },
6870    "let_exception_expression": {
6871      "type": "PREC_RIGHT",
6872      "value": 2,
6873      "content": {
6874        "type": "SEQ",
6875        "members": [
6876          {
6877            "type": "STRING",
6878            "value": "let"
6879          },
6880          {
6881            "type": "SYMBOL",
6882            "name": "exception_definition"
6883          },
6884          {
6885            "type": "STRING",
6886            "value": "in"
6887          },
6888          {
6889            "type": "FIELD",
6890            "name": "body",
6891            "content": {
6892              "type": "SYMBOL",
6893              "name": "_sequence_expression_ext"
6894            }
6895          }
6896        ]
6897      }
6898    },
6899    "new_expression": {
6900      "type": "SEQ",
6901      "members": [
6902        {
6903          "type": "STRING",
6904          "value": "new"
6905        },
6906        {
6907          "type": "CHOICE",
6908          "members": [
6909            {
6910              "type": "SYMBOL",
6911              "name": "_attribute"
6912            },
6913            {
6914              "type": "BLANK"
6915            }
6916          ]
6917        },
6918        {
6919          "type": "SYMBOL",
6920          "name": "class_path"
6921        }
6922      ]
6923    },
6924    "object_copy_expression": {
6925      "type": "SEQ",
6926      "members": [
6927        {
6928          "type": "STRING",
6929          "value": "{<"
6930        },
6931        {
6932          "type": "CHOICE",
6933          "members": [
6934            {
6935              "type": "SEQ",
6936              "members": [
6937                {
6938                  "type": "SYMBOL",
6939                  "name": "instance_variable_expression"
6940                },
6941                {
6942                  "type": "REPEAT",
6943                  "content": {
6944                    "type": "SEQ",
6945                    "members": [
6946                      {
6947                        "type": "STRING",
6948                        "value": ";"
6949                      },
6950                      {
6951                        "type": "SYMBOL",
6952                        "name": "instance_variable_expression"
6953                      }
6954                    ]
6955                  }
6956                }
6957              ]
6958            },
6959            {
6960              "type": "BLANK"
6961            }
6962          ]
6963        },
6964        {
6965          "type": "CHOICE",
6966          "members": [
6967            {
6968              "type": "STRING",
6969              "value": ";"
6970            },
6971            {
6972              "type": "BLANK"
6973            }
6974          ]
6975        },
6976        {
6977          "type": "STRING",
6978          "value": ">}"
6979        }
6980      ]
6981    },
6982    "instance_variable_expression": {
6983      "type": "SEQ",
6984      "members": [
6985        {
6986          "type": "SYMBOL",
6987          "name": "_instance_variable_name"
6988        },
6989        {
6990          "type": "CHOICE",
6991          "members": [
6992            {
6993              "type": "SEQ",
6994              "members": [
6995                {
6996                  "type": "STRING",
6997                  "value": "="
6998                },
6999                {
7000                  "type": "SYMBOL",
7001                  "name": "_expression_ext"
7002                }
7003              ]
7004            },
7005            {
7006              "type": "BLANK"
7007            }
7008          ]
7009        }
7010      ]
7011    },
7012    "method_invocation": {
7013      "type": "PREC_RIGHT",
7014      "value": 17,
7015      "content": {
7016        "type": "SEQ",
7017        "members": [
7018          {
7019            "type": "SYMBOL",
7020            "name": "_simple_expression_ext"
7021          },
7022          {
7023            "type": "STRING",
7024            "value": "#"
7025          },
7026          {
7027            "type": "SYMBOL",
7028            "name": "_method_name"
7029          }
7030        ]
7031      }
7032    },
7033    "object_expression": {
7034      "type": "SEQ",
7035      "members": [
7036        {
7037          "type": "STRING",
7038          "value": "object"
7039        },
7040        {
7041          "type": "CHOICE",
7042          "members": [
7043            {
7044              "type": "SYMBOL",
7045              "name": "_attribute"
7046            },
7047            {
7048              "type": "BLANK"
7049            }
7050          ]
7051        },
7052        {
7053          "type": "CHOICE",
7054          "members": [
7055            {
7056              "type": "SEQ",
7057              "members": [
7058                {
7059                  "type": "STRING",
7060                  "value": "("
7061                },
7062                {
7063                  "type": "SEQ",
7064                  "members": [
7065                    {
7066                      "type": "SYMBOL",
7067                      "name": "_pattern_ext"
7068                    },
7069                    {
7070                      "type": "CHOICE",
7071                      "members": [
7072                        {
7073                          "type": "SYMBOL",
7074                          "name": "_typed"
7075                        },
7076                        {
7077                          "type": "BLANK"
7078                        }
7079                      ]
7080                    }
7081                  ]
7082                },
7083                {
7084                  "type": "STRING",
7085                  "value": ")"
7086                }
7087              ]
7088            },
7089            {
7090              "type": "BLANK"
7091            }
7092          ]
7093        },
7094        {
7095          "type": "REPEAT",
7096          "content": {
7097            "type": "CHOICE",
7098            "members": [
7099              {
7100                "type": "SYMBOL",
7101                "name": "_class_field_ext"
7102              },
7103              {
7104                "type": "SYMBOL",
7105                "name": "floating_attribute"
7106              }
7107            ]
7108          }
7109        },
7110        {
7111          "type": "STRING",
7112          "value": "end"
7113        }
7114      ]
7115    },
7116    "parenthesized_expression": {
7117      "type": "CHOICE",
7118      "members": [
7119        {
7120          "type": "SEQ",
7121          "members": [
7122            {
7123              "type": "STRING",
7124              "value": "begin"
7125            },
7126            {
7127              "type": "CHOICE",
7128              "members": [
7129                {
7130                  "type": "SYMBOL",
7131                  "name": "_attribute"
7132                },
7133                {
7134                  "type": "BLANK"
7135                }
7136              ]
7137            },
7138            {
7139              "type": "SYMBOL",
7140              "name": "_sequence_expression_ext"
7141            },
7142            {
7143              "type": "STRING",
7144              "value": "end"
7145            }
7146          ]
7147        },
7148        {
7149          "type": "SEQ",
7150          "members": [
7151            {
7152              "type": "STRING",
7153              "value": "("
7154            },
7155            {
7156              "type": "SYMBOL",
7157              "name": "_sequence_expression_ext"
7158            },
7159            {
7160              "type": "STRING",
7161              "value": ")"
7162            }
7163          ]
7164        }
7165      ]
7166    },
7167    "ocamlyacc_value": {
7168      "type": "PATTERN",
7169      "value": "\\$[0-9]+"
7170    },
7171    "_simple_pattern": {
7172      "type": "CHOICE",
7173      "members": [
7174        {
7175          "type": "SYMBOL",
7176          "name": "_value_pattern"
7177        },
7178        {
7179          "type": "SYMBOL",
7180          "name": "_signed_constant"
7181        },
7182        {
7183          "type": "SYMBOL",
7184          "name": "typed_pattern"
7185        },
7186        {
7187          "type": "SYMBOL",
7188          "name": "constructor_path"
7189        },
7190        {
7191          "type": "SYMBOL",
7192          "name": "tag"
7193        },
7194        {
7195          "type": "SYMBOL",
7196          "name": "polymorphic_variant_pattern"
7197        },
7198        {
7199          "type": "SYMBOL",
7200          "name": "record_pattern"
7201        },
7202        {
7203          "type": "SYMBOL",
7204          "name": "list_pattern"
7205        },
7206        {
7207          "type": "SYMBOL",
7208          "name": "array_pattern"
7209        },
7210        {
7211          "type": "SYMBOL",
7212          "name": "local_open_pattern"
7213        },
7214        {
7215          "type": "SYMBOL",
7216          "name": "package_pattern"
7217        },
7218        {
7219          "type": "SYMBOL",
7220          "name": "parenthesized_pattern"
7221        }
7222      ]
7223    },
7224    "_simple_pattern_ext": {
7225      "type": "CHOICE",
7226      "members": [
7227        {
7228          "type": "SYMBOL",
7229          "name": "_simple_pattern"
7230        },
7231        {
7232          "type": "SYMBOL",
7233          "name": "_extension"
7234        }
7235      ]
7236    },
7237    "_pattern": {
7238      "type": "CHOICE",
7239      "members": [
7240        {
7241          "type": "SYMBOL",
7242          "name": "_simple_pattern"
7243        },
7244        {
7245          "type": "SYMBOL",
7246          "name": "alias_pattern"
7247        },
7248        {
7249          "type": "SYMBOL",
7250          "name": "or_pattern"
7251        },
7252        {
7253          "type": "SYMBOL",
7254          "name": "constructor_pattern"
7255        },
7256        {
7257          "type": "SYMBOL",
7258          "name": "tag_pattern"
7259        },
7260        {
7261          "type": "SYMBOL",
7262          "name": "tuple_pattern"
7263        },
7264        {
7265          "type": "SYMBOL",
7266          "name": "cons_pattern"
7267        },
7268        {
7269          "type": "SYMBOL",
7270          "name": "range_pattern"
7271        },
7272        {
7273          "type": "SYMBOL",
7274          "name": "lazy_pattern"
7275        },
7276        {
7277          "type": "SYMBOL",
7278          "name": "exception_pattern"
7279        }
7280      ]
7281    },
7282    "_pattern_ext": {
7283      "type": "CHOICE",
7284      "members": [
7285        {
7286          "type": "SYMBOL",
7287          "name": "_pattern"
7288        },
7289        {
7290          "type": "SYMBOL",
7291          "name": "_extension"
7292        }
7293      ]
7294    },
7295    "_binding_pattern": {
7296      "type": "CHOICE",
7297      "members": [
7298        {
7299          "type": "SYMBOL",
7300          "name": "_value_name"
7301        },
7302        {
7303          "type": "SYMBOL",
7304          "name": "_signed_constant"
7305        },
7306        {
7307          "type": "ALIAS",
7308          "content": {
7309            "type": "SYMBOL",
7310            "name": "typed_binding_pattern"
7311          },
7312          "named": true,
7313          "value": "typed_pattern"
7314        },
7315        {
7316          "type": "SYMBOL",
7317          "name": "constructor_path"
7318        },
7319        {
7320          "type": "SYMBOL",
7321          "name": "tag"
7322        },
7323        {
7324          "type": "SYMBOL",
7325          "name": "polymorphic_variant_pattern"
7326        },
7327        {
7328          "type": "ALIAS",
7329          "content": {
7330            "type": "SYMBOL",
7331            "name": "record_binding_pattern"
7332          },
7333          "named": true,
7334          "value": "record_pattern"
7335        },
7336        {
7337          "type": "ALIAS",
7338          "content": {
7339            "type": "SYMBOL",
7340            "name": "list_binding_pattern"
7341          },
7342          "named": true,
7343          "value": "list_pattern"
7344        },
7345        {
7346          "type": "ALIAS",
7347          "content": {
7348            "type": "SYMBOL",
7349            "name": "array_binding_pattern"
7350          },
7351          "named": true,
7352          "value": "array_pattern"
7353        },
7354        {
7355          "type": "ALIAS",
7356          "content": {
7357            "type": "SYMBOL",
7358            "name": "local_open_binding_pattern"
7359          },
7360          "named": true,
7361          "value": "local_open_pattern"
7362        },
7363        {
7364          "type": "SYMBOL",
7365          "name": "package_pattern"
7366        },
7367        {
7368          "type": "ALIAS",
7369          "content": {
7370            "type": "SYMBOL",
7371            "name": "parenthesized_binding_pattern"
7372          },
7373          "named": true,
7374          "value": "parenthesized_pattern"
7375        },
7376        {
7377          "type": "ALIAS",
7378          "content": {
7379            "type": "SYMBOL",
7380            "name": "alias_binding_pattern"
7381          },
7382          "named": true,
7383          "value": "alias_pattern"
7384        },
7385        {
7386          "type": "ALIAS",
7387          "content": {
7388            "type": "SYMBOL",
7389            "name": "or_binding_pattern"
7390          },
7391          "named": true,
7392          "value": "or_pattern"
7393        },
7394        {
7395          "type": "ALIAS",
7396          "content": {
7397            "type": "SYMBOL",
7398            "name": "constructor_binding_pattern"
7399          },
7400          "named": true,
7401          "value": "constructor_pattern"
7402        },
7403        {
7404          "type": "ALIAS",
7405          "content": {
7406            "type": "SYMBOL",
7407            "name": "tag_binding_pattern"
7408          },
7409          "named": true,
7410          "value": "tag_pattern"
7411        },
7412        {
7413          "type": "ALIAS",
7414          "content": {
7415            "type": "SYMBOL",
7416            "name": "tuple_binding_pattern"
7417          },
7418          "named": true,
7419          "value": "tuple_pattern"
7420        },
7421        {
7422          "type": "ALIAS",
7423          "content": {
7424            "type": "SYMBOL",
7425            "name": "cons_binding_pattern"
7426          },
7427          "named": true,
7428          "value": "cons_pattern"
7429        },
7430        {
7431          "type": "SYMBOL",
7432          "name": "range_pattern"
7433        },
7434        {
7435          "type": "ALIAS",
7436          "content": {
7437            "type": "SYMBOL",
7438            "name": "lazy_binding_pattern"
7439          },
7440          "named": true,
7441          "value": "lazy_pattern"
7442        }
7443      ]
7444    },
7445    "_binding_pattern_ext": {
7446      "type": "CHOICE",
7447      "members": [
7448        {
7449          "type": "SYMBOL",
7450          "name": "_binding_pattern"
7451        },
7452        {
7453          "type": "SYMBOL",
7454          "name": "_extension"
7455        }
7456      ]
7457    },
7458    "alias_pattern": {
7459      "type": "PREC_LEFT",
7460      "value": 2,
7461      "content": {
7462        "type": "SEQ",
7463        "members": [
7464          {
7465            "type": "SYMBOL",
7466            "name": "_pattern_ext"
7467          },
7468          {
7469            "type": "STRING",
7470            "value": "as"
7471          },
7472          {
7473            "type": "SYMBOL",
7474            "name": "_value_pattern"
7475          }
7476        ]
7477      }
7478    },
7479    "alias_binding_pattern": {
7480      "type": "PREC_LEFT",
7481      "value": 2,
7482      "content": {
7483        "type": "SEQ",
7484        "members": [
7485          {
7486            "type": "SYMBOL",
7487            "name": "_binding_pattern_ext"
7488          },
7489          {
7490            "type": "STRING",
7491            "value": "as"
7492          },
7493          {
7494            "type": "SYMBOL",
7495            "name": "_value_name"
7496          }
7497        ]
7498      }
7499    },
7500    "typed_pattern": {
7501      "type": "SEQ",
7502      "members": [
7503        {
7504          "type": "SEQ",
7505          "members": [
7506            {
7507              "type": "STRING",
7508              "value": "("
7509            },
7510            {
7511              "type": "SEQ",
7512              "members": [
7513                {
7514                  "type": "SYMBOL",
7515                  "name": "_pattern_ext"
7516                },
7517                {
7518                  "type": "SYMBOL",
7519                  "name": "_typed"
7520                }
7521              ]
7522            },
7523            {
7524              "type": "STRING",
7525              "value": ")"
7526            }
7527          ]
7528        }
7529      ]
7530    },
7531    "typed_binding_pattern": {
7532      "type": "SEQ",
7533      "members": [
7534        {
7535          "type": "SEQ",
7536          "members": [
7537            {
7538              "type": "STRING",
7539              "value": "("
7540            },
7541            {
7542              "type": "SEQ",
7543              "members": [
7544                {
7545                  "type": "FIELD",
7546                  "name": "pattern",
7547                  "content": {
7548                    "type": "SYMBOL",
7549                    "name": "_binding_pattern_ext"
7550                  }
7551                },
7552                {
7553                  "type": "SYMBOL",
7554                  "name": "_typed"
7555                }
7556              ]
7557            },
7558            {
7559              "type": "STRING",
7560              "value": ")"
7561            }
7562          ]
7563        }
7564      ]
7565    },
7566    "or_pattern": {
7567      "type": "PREC_LEFT",
7568      "value": 3,
7569      "content": {
7570        "type": "SEQ",
7571        "members": [
7572          {
7573            "type": "SYMBOL",
7574            "name": "_pattern_ext"
7575          },
7576          {
7577            "type": "STRING",
7578            "value": "|"
7579          },
7580          {
7581            "type": "SYMBOL",
7582            "name": "_pattern_ext"
7583          }
7584        ]
7585      }
7586    },
7587    "or_binding_pattern": {
7588      "type": "PREC_LEFT",
7589      "value": 3,
7590      "content": {
7591        "type": "SEQ",
7592        "members": [
7593          {
7594            "type": "SYMBOL",
7595            "name": "_binding_pattern_ext"
7596          },
7597          {
7598            "type": "STRING",
7599            "value": "|"
7600          },
7601          {
7602            "type": "SYMBOL",
7603            "name": "_binding_pattern_ext"
7604          }
7605        ]
7606      }
7607    },
7608    "constructor_pattern": {
7609      "type": "PREC_RIGHT",
7610      "value": 16,
7611      "content": {
7612        "type": "SEQ",
7613        "members": [
7614          {
7615            "type": "SYMBOL",
7616            "name": "constructor_path"
7617          },
7618          {
7619            "type": "CHOICE",
7620            "members": [
7621              {
7622                "type": "ALIAS",
7623                "content": {
7624                  "type": "SYMBOL",
7625                  "name": "_parenthesized_abstract_type"
7626                },
7627                "named": true,
7628                "value": "abstract_type"
7629              },
7630              {
7631                "type": "BLANK"
7632              }
7633            ]
7634          },
7635          {
7636            "type": "SYMBOL",
7637            "name": "_pattern_ext"
7638          }
7639        ]
7640      }
7641    },
7642    "constructor_binding_pattern": {
7643      "type": "PREC_RIGHT",
7644      "value": 16,
7645      "content": {
7646        "type": "SEQ",
7647        "members": [
7648          {
7649            "type": "SYMBOL",
7650            "name": "constructor_path"
7651          },
7652          {
7653            "type": "FIELD",
7654            "name": "pattern",
7655            "content": {
7656              "type": "SYMBOL",
7657              "name": "_binding_pattern_ext"
7658            }
7659          }
7660        ]
7661      }
7662    },
7663    "tag_pattern": {
7664      "type": "PREC_RIGHT",
7665      "value": 16,
7666      "content": {
7667        "type": "SEQ",
7668        "members": [
7669          {
7670            "type": "SYMBOL",
7671            "name": "tag"
7672          },
7673          {
7674            "type": "SYMBOL",
7675            "name": "_pattern_ext"
7676          }
7677        ]
7678      }
7679    },
7680    "tag_binding_pattern": {
7681      "type": "PREC_RIGHT",
7682      "value": 16,
7683      "content": {
7684        "type": "SEQ",
7685        "members": [
7686          {
7687            "type": "SYMBOL",
7688            "name": "tag"
7689          },
7690          {
7691            "type": "FIELD",
7692            "name": "pattern",
7693            "content": {
7694              "type": "SYMBOL",
7695              "name": "_binding_pattern_ext"
7696            }
7697          }
7698        ]
7699      }
7700    },
7701    "polymorphic_variant_pattern": {
7702      "type": "SEQ",
7703      "members": [
7704        {
7705          "type": "STRING",
7706          "value": "#"
7707        },
7708        {
7709          "type": "SYMBOL",
7710          "name": "type_constructor_path"
7711        }
7712      ]
7713    },
7714    "tuple_pattern": {
7715      "type": "PREC_LEFT",
7716      "value": 6,
7717      "content": {
7718        "type": "SEQ",
7719        "members": [
7720          {
7721            "type": "SYMBOL",
7722            "name": "_pattern_ext"
7723          },
7724          {
7725            "type": "STRING",
7726            "value": ","
7727          },
7728          {
7729            "type": "SYMBOL",
7730            "name": "_pattern_ext"
7731          }
7732        ]
7733      }
7734    },
7735    "tuple_binding_pattern": {
7736      "type": "PREC_LEFT",
7737      "value": 6,
7738      "content": {
7739        "type": "SEQ",
7740        "members": [
7741          {
7742            "type": "SYMBOL",
7743            "name": "_binding_pattern_ext"
7744          },
7745          {
7746            "type": "STRING",
7747            "value": ","
7748          },
7749          {
7750            "type": "SYMBOL",
7751            "name": "_binding_pattern_ext"
7752          }
7753        ]
7754      }
7755    },
7756    "record_pattern": {
7757      "type": "PREC_LEFT",
7758      "value": 0,
7759      "content": {
7760        "type": "SEQ",
7761        "members": [
7762          {
7763            "type": "STRING",
7764            "value": "{"
7765          },
7766          {
7767            "type": "SEQ",
7768            "members": [
7769              {
7770                "type": "SYMBOL",
7771                "name": "field_pattern"
7772              },
7773              {
7774                "type": "REPEAT",
7775                "content": {
7776                  "type": "SEQ",
7777                  "members": [
7778                    {
7779                      "type": "STRING",
7780                      "value": ";"
7781                    },
7782                    {
7783                      "type": "SYMBOL",
7784                      "name": "field_pattern"
7785                    }
7786                  ]
7787                }
7788              }
7789            ]
7790          },
7791          {
7792            "type": "CHOICE",
7793            "members": [
7794              {
7795                "type": "SEQ",
7796                "members": [
7797                  {
7798                    "type": "STRING",
7799                    "value": ";"
7800                  },
7801                  {
7802                    "type": "STRING",
7803                    "value": "_"
7804                  }
7805                ]
7806              },
7807              {
7808                "type": "BLANK"
7809              }
7810            ]
7811          },
7812          {
7813            "type": "CHOICE",
7814            "members": [
7815              {
7816                "type": "STRING",
7817                "value": ";"
7818              },
7819              {
7820                "type": "BLANK"
7821              }
7822            ]
7823          },
7824          {
7825            "type": "STRING",
7826            "value": "}"
7827          }
7828        ]
7829      }
7830    },
7831    "field_pattern": {
7832      "type": "SEQ",
7833      "members": [
7834        {
7835          "type": "SYMBOL",
7836          "name": "field_path"
7837        },
7838        {
7839          "type": "CHOICE",
7840          "members": [
7841            {
7842              "type": "SYMBOL",
7843              "name": "_typed"
7844            },
7845            {
7846              "type": "BLANK"
7847            }
7848          ]
7849        },
7850        {
7851          "type": "CHOICE",
7852          "members": [
7853            {
7854              "type": "SEQ",
7855              "members": [
7856                {
7857                  "type": "STRING",
7858                  "value": "="
7859                },
7860                {
7861                  "type": "SYMBOL",
7862                  "name": "_pattern_ext"
7863                }
7864              ]
7865            },
7866            {
7867              "type": "BLANK"
7868            }
7869          ]
7870        }
7871      ]
7872    },
7873    "record_binding_pattern": {
7874      "type": "PREC_LEFT",
7875      "value": 0,
7876      "content": {
7877        "type": "SEQ",
7878        "members": [
7879          {
7880            "type": "STRING",
7881            "value": "{"
7882          },
7883          {
7884            "type": "SEQ",
7885            "members": [
7886              {
7887                "type": "ALIAS",
7888                "content": {
7889                  "type": "SYMBOL",
7890                  "name": "field_binding_pattern"
7891                },
7892                "named": true,
7893                "value": "field_pattern"
7894              },
7895              {
7896                "type": "REPEAT",
7897                "content": {
7898                  "type": "SEQ",
7899                  "members": [
7900                    {
7901                      "type": "STRING",
7902                      "value": ";"
7903                    },
7904                    {
7905                      "type": "ALIAS",
7906                      "content": {
7907                        "type": "SYMBOL",
7908                        "name": "field_binding_pattern"
7909                      },
7910                      "named": true,
7911                      "value": "field_pattern"
7912                    }
7913                  ]
7914                }
7915              }
7916            ]
7917          },
7918          {
7919            "type": "CHOICE",
7920            "members": [
7921              {
7922                "type": "SEQ",
7923                "members": [
7924                  {
7925                    "type": "STRING",
7926                    "value": ";"
7927                  },
7928                  {
7929                    "type": "STRING",
7930                    "value": "_"
7931                  }
7932                ]
7933              },
7934              {
7935                "type": "BLANK"
7936              }
7937            ]
7938          },
7939          {
7940            "type": "CHOICE",
7941            "members": [
7942              {
7943                "type": "STRING",
7944                "value": ";"
7945              },
7946              {
7947                "type": "BLANK"
7948              }
7949            ]
7950          },
7951          {
7952            "type": "STRING",
7953            "value": "}"
7954          }
7955        ]
7956      }
7957    },
7958    "field_binding_pattern": {
7959      "type": "SEQ",
7960      "members": [
7961        {
7962          "type": "SYMBOL",
7963          "name": "field_path"
7964        },
7965        {
7966          "type": "CHOICE",
7967          "members": [
7968            {
7969              "type": "SYMBOL",
7970              "name": "_typed"
7971            },
7972            {
7973              "type": "BLANK"
7974            }
7975          ]
7976        },
7977        {
7978          "type": "CHOICE",
7979          "members": [
7980            {
7981              "type": "SEQ",
7982              "members": [
7983                {
7984                  "type": "STRING",
7985                  "value": "="
7986                },
7987                {
7988                  "type": "FIELD",
7989                  "name": "pattern",
7990                  "content": {
7991                    "type": "SYMBOL",
7992                    "name": "_binding_pattern_ext"
7993                  }
7994                }
7995              ]
7996            },
7997            {
7998              "type": "BLANK"
7999            }
8000          ]
8001        }
8002      ]
8003    },
8004    "list_pattern": {
8005      "type": "PREC_LEFT",
8006      "value": 0,
8007      "content": {
8008        "type": "SEQ",
8009        "members": [
8010          {
8011            "type": "STRING",
8012            "value": "["
8013          },
8014          {
8015            "type": "CHOICE",
8016            "members": [
8017              {
8018                "type": "SEQ",
8019                "members": [
8020                  {
8021                    "type": "SEQ",
8022                    "members": [
8023                      {
8024                        "type": "SYMBOL",
8025                        "name": "_pattern_ext"
8026                      },
8027                      {
8028                        "type": "REPEAT",
8029                        "content": {
8030                          "type": "SEQ",
8031                          "members": [
8032                            {
8033                              "type": "STRING",
8034                              "value": ";"
8035                            },
8036                            {
8037                              "type": "SYMBOL",
8038                              "name": "_pattern_ext"
8039                            }
8040                          ]
8041                        }
8042                      }
8043                    ]
8044                  },
8045                  {
8046                    "type": "CHOICE",
8047                    "members": [
8048                      {
8049                        "type": "STRING",
8050                        "value": ";"
8051                      },
8052                      {
8053                        "type": "BLANK"
8054                      }
8055                    ]
8056                  }
8057                ]
8058              },
8059              {
8060                "type": "BLANK"
8061              }
8062            ]
8063          },
8064          {
8065            "type": "STRING",
8066            "value": "]"
8067          }
8068        ]
8069      }
8070    },
8071    "list_binding_pattern": {
8072      "type": "PREC_LEFT",
8073      "value": 0,
8074      "content": {
8075        "type": "SEQ",
8076        "members": [
8077          {
8078            "type": "STRING",
8079            "value": "["
8080          },
8081          {
8082            "type": "CHOICE",
8083            "members": [
8084              {
8085                "type": "SEQ",
8086                "members": [
8087                  {
8088                    "type": "SEQ",
8089                    "members": [
8090                      {
8091                        "type": "SYMBOL",
8092                        "name": "_binding_pattern_ext"
8093                      },
8094                      {
8095                        "type": "REPEAT",
8096                        "content": {
8097                          "type": "SEQ",
8098                          "members": [
8099                            {
8100                              "type": "STRING",
8101                              "value": ";"
8102                            },
8103                            {
8104                              "type": "SYMBOL",
8105                              "name": "_binding_pattern_ext"
8106                            }
8107                          ]
8108                        }
8109                      }
8110                    ]
8111                  },
8112                  {
8113                    "type": "CHOICE",
8114                    "members": [
8115                      {
8116                        "type": "STRING",
8117                        "value": ";"
8118                      },
8119                      {
8120                        "type": "BLANK"
8121                      }
8122                    ]
8123                  }
8124                ]
8125              },
8126              {
8127                "type": "BLANK"
8128              }
8129            ]
8130          },
8131          {
8132            "type": "STRING",
8133            "value": "]"
8134          }
8135        ]
8136      }
8137    },
8138    "cons_pattern": {
8139      "type": "PREC_RIGHT",
8140      "value": 11,
8141      "content": {
8142        "type": "SEQ",
8143        "members": [
8144          {
8145            "type": "SYMBOL",
8146            "name": "_pattern_ext"
8147          },
8148          {
8149            "type": "STRING",
8150            "value": "::"
8151          },
8152          {
8153            "type": "SYMBOL",
8154            "name": "_pattern_ext"
8155          }
8156        ]
8157      }
8158    },
8159    "cons_binding_pattern": {
8160      "type": "PREC_RIGHT",
8161      "value": 11,
8162      "content": {
8163        "type": "SEQ",
8164        "members": [
8165          {
8166            "type": "SYMBOL",
8167            "name": "_binding_pattern_ext"
8168          },
8169          {
8170            "type": "STRING",
8171            "value": "::"
8172          },
8173          {
8174            "type": "SYMBOL",
8175            "name": "_binding_pattern_ext"
8176          }
8177        ]
8178      }
8179    },
8180    "array_pattern": {
8181      "type": "PREC_LEFT",
8182      "value": 0,
8183      "content": {
8184        "type": "SEQ",
8185        "members": [
8186          {
8187            "type": "STRING",
8188            "value": "[|"
8189          },
8190          {
8191            "type": "CHOICE",
8192            "members": [
8193              {
8194                "type": "SEQ",
8195                "members": [
8196                  {
8197                    "type": "SEQ",
8198                    "members": [
8199                      {
8200                        "type": "SYMBOL",
8201                        "name": "_pattern_ext"
8202                      },
8203                      {
8204                        "type": "REPEAT",
8205                        "content": {
8206                          "type": "SEQ",
8207                          "members": [
8208                            {
8209                              "type": "STRING",
8210                              "value": ";"
8211                            },
8212                            {
8213                              "type": "SYMBOL",
8214                              "name": "_pattern_ext"
8215                            }
8216                          ]
8217                        }
8218                      }
8219                    ]
8220                  },
8221                  {
8222                    "type": "CHOICE",
8223                    "members": [
8224                      {
8225                        "type": "STRING",
8226                        "value": ";"
8227                      },
8228                      {
8229                        "type": "BLANK"
8230                      }
8231                    ]
8232                  }
8233                ]
8234              },
8235              {
8236                "type": "BLANK"
8237              }
8238            ]
8239          },
8240          {
8241            "type": "STRING",
8242            "value": "|]"
8243          }
8244        ]
8245      }
8246    },
8247    "array_binding_pattern": {
8248      "type": "PREC_LEFT",
8249      "value": 0,
8250      "content": {
8251        "type": "SEQ",
8252        "members": [
8253          {
8254            "type": "STRING",
8255            "value": "[|"
8256          },
8257          {
8258            "type": "CHOICE",
8259            "members": [
8260              {
8261                "type": "SEQ",
8262                "members": [
8263                  {
8264                    "type": "SEQ",
8265                    "members": [
8266                      {
8267                        "type": "SYMBOL",
8268                        "name": "_binding_pattern_ext"
8269                      },
8270                      {
8271                        "type": "REPEAT",
8272                        "content": {
8273                          "type": "SEQ",
8274                          "members": [
8275                            {
8276                              "type": "STRING",
8277                              "value": ";"
8278                            },
8279                            {
8280                              "type": "SYMBOL",
8281                              "name": "_binding_pattern_ext"
8282                            }
8283                          ]
8284                        }
8285                      }
8286                    ]
8287                  },
8288                  {
8289                    "type": "CHOICE",
8290                    "members": [
8291                      {
8292                        "type": "STRING",
8293                        "value": ";"
8294                      },
8295                      {
8296                        "type": "BLANK"
8297                      }
8298                    ]
8299                  }
8300                ]
8301              },
8302              {
8303                "type": "BLANK"
8304              }
8305            ]
8306          },
8307          {
8308            "type": "STRING",
8309            "value": "|]"
8310          }
8311        ]
8312      }
8313    },
8314    "range_pattern": {
8315      "type": "PREC",
8316      "value": 18,
8317      "content": {
8318        "type": "SEQ",
8319        "members": [
8320          {
8321            "type": "SYMBOL",
8322            "name": "_signed_constant"
8323          },
8324          {
8325            "type": "STRING",
8326            "value": ".."
8327          },
8328          {
8329            "type": "SYMBOL",
8330            "name": "_signed_constant"
8331          }
8332        ]
8333      }
8334    },
8335    "lazy_pattern": {
8336      "type": "PREC",
8337      "value": 17,
8338      "content": {
8339        "type": "SEQ",
8340        "members": [
8341          {
8342            "type": "STRING",
8343            "value": "lazy"
8344          },
8345          {
8346            "type": "CHOICE",
8347            "members": [
8348              {
8349                "type": "SYMBOL",
8350                "name": "_attribute"
8351              },
8352              {
8353                "type": "BLANK"
8354              }
8355            ]
8356          },
8357          {
8358            "type": "SYMBOL",
8359            "name": "_pattern_ext"
8360          }
8361        ]
8362      }
8363    },
8364    "lazy_binding_pattern": {
8365      "type": "PREC",
8366      "value": 17,
8367      "content": {
8368        "type": "SEQ",
8369        "members": [
8370          {
8371            "type": "STRING",
8372            "value": "lazy"
8373          },
8374          {
8375            "type": "CHOICE",
8376            "members": [
8377              {
8378                "type": "SYMBOL",
8379                "name": "_attribute"
8380              },
8381              {
8382                "type": "BLANK"
8383              }
8384            ]
8385          },
8386          {
8387            "type": "SYMBOL",
8388            "name": "_binding_pattern_ext"
8389          }
8390        ]
8391      }
8392    },
8393    "local_open_pattern": {
8394      "type": "SEQ",
8395      "members": [
8396        {
8397          "type": "SYMBOL",
8398          "name": "module_path"
8399        },
8400        {
8401          "type": "STRING",
8402          "value": "."
8403        },
8404        {
8405          "type": "CHOICE",
8406          "members": [
8407            {
8408              "type": "SEQ",
8409              "members": [
8410                {
8411                  "type": "STRING",
8412                  "value": "("
8413                },
8414                {
8415                  "type": "CHOICE",
8416                  "members": [
8417                    {
8418                      "type": "SYMBOL",
8419                      "name": "_pattern_ext"
8420                    },
8421                    {
8422                      "type": "BLANK"
8423                    }
8424                  ]
8425                },
8426                {
8427                  "type": "STRING",
8428                  "value": ")"
8429                }
8430              ]
8431            },
8432            {
8433              "type": "SYMBOL",
8434              "name": "list_pattern"
8435            },
8436            {
8437              "type": "SYMBOL",
8438              "name": "array_pattern"
8439            },
8440            {
8441              "type": "SYMBOL",
8442              "name": "record_pattern"
8443            }
8444          ]
8445        }
8446      ]
8447    },
8448    "local_open_binding_pattern": {
8449      "type": "SEQ",
8450      "members": [
8451        {
8452          "type": "SYMBOL",
8453          "name": "module_path"
8454        },
8455        {
8456          "type": "STRING",
8457          "value": "."
8458        },
8459        {
8460          "type": "CHOICE",
8461          "members": [
8462            {
8463              "type": "SEQ",
8464              "members": [
8465                {
8466                  "type": "STRING",
8467                  "value": "("
8468                },
8469                {
8470                  "type": "CHOICE",
8471                  "members": [
8472                    {
8473                      "type": "SYMBOL",
8474                      "name": "_binding_pattern_ext"
8475                    },
8476                    {
8477                      "type": "BLANK"
8478                    }
8479                  ]
8480                },
8481                {
8482                  "type": "STRING",
8483                  "value": ")"
8484                }
8485              ]
8486            },
8487            {
8488              "type": "SYMBOL",
8489              "name": "list_binding_pattern"
8490            },
8491            {
8492              "type": "SYMBOL",
8493              "name": "array_binding_pattern"
8494            },
8495            {
8496              "type": "SYMBOL",
8497              "name": "record_binding_pattern"
8498            }
8499          ]
8500        }
8501      ]
8502    },
8503    "package_pattern": {
8504      "type": "SEQ",
8505      "members": [
8506        {
8507          "type": "STRING",
8508          "value": "("
8509        },
8510        {
8511          "type": "SEQ",
8512          "members": [
8513            {
8514              "type": "STRING",
8515              "value": "module"
8516            },
8517            {
8518              "type": "CHOICE",
8519              "members": [
8520                {
8521                  "type": "SYMBOL",
8522                  "name": "_attribute"
8523                },
8524                {
8525                  "type": "BLANK"
8526                }
8527              ]
8528            },
8529            {
8530              "type": "CHOICE",
8531              "members": [
8532                {
8533                  "type": "SYMBOL",
8534                  "name": "_module_name"
8535                },
8536                {
8537                  "type": "ALIAS",
8538                  "content": {
8539                    "type": "STRING",
8540                    "value": "_"
8541                  },
8542                  "named": true,
8543                  "value": "module_name"
8544                }
8545              ]
8546            },
8547            {
8548              "type": "CHOICE",
8549              "members": [
8550                {
8551                  "type": "SYMBOL",
8552                  "name": "_module_typed"
8553                },
8554                {
8555                  "type": "BLANK"
8556                }
8557              ]
8558            }
8559          ]
8560        },
8561        {
8562          "type": "STRING",
8563          "value": ")"
8564        }
8565      ]
8566    },
8567    "parenthesized_pattern": {
8568      "type": "SEQ",
8569      "members": [
8570        {
8571          "type": "STRING",
8572          "value": "("
8573        },
8574        {
8575          "type": "SYMBOL",
8576          "name": "_pattern_ext"
8577        },
8578        {
8579          "type": "STRING",
8580          "value": ")"
8581        }
8582      ]
8583    },
8584    "parenthesized_binding_pattern": {
8585      "type": "SEQ",
8586      "members": [
8587        {
8588          "type": "STRING",
8589          "value": "("
8590        },
8591        {
8592          "type": "SYMBOL",
8593          "name": "_binding_pattern_ext"
8594        },
8595        {
8596          "type": "STRING",
8597          "value": ")"
8598        }
8599      ]
8600    },
8601    "exception_pattern": {
8602      "type": "SEQ",
8603      "members": [
8604        {
8605          "type": "STRING",
8606          "value": "exception"
8607        },
8608        {
8609          "type": "CHOICE",
8610          "members": [
8611            {
8612              "type": "SYMBOL",
8613              "name": "_attribute"
8614            },
8615            {
8616              "type": "BLANK"
8617            }
8618          ]
8619        },
8620        {
8621          "type": "SYMBOL",
8622          "name": "_pattern_ext"
8623        }
8624      ]
8625    },
8626    "attribute": {
8627      "type": "SEQ",
8628      "members": [
8629        {
8630          "type": "STRING",
8631          "value": "[@"
8632        },
8633        {
8634          "type": "SYMBOL",
8635          "name": "attribute_id"
8636        },
8637        {
8638          "type": "CHOICE",
8639          "members": [
8640            {
8641              "type": "SYMBOL",
8642              "name": "attribute_payload"
8643            },
8644            {
8645              "type": "BLANK"
8646            }
8647          ]
8648        },
8649        {
8650          "type": "STRING",
8651          "value": "]"
8652        }
8653      ]
8654    },
8655    "item_attribute": {
8656      "type": "SEQ",
8657      "members": [
8658        {
8659          "type": "STRING",
8660          "value": "[@@"
8661        },
8662        {
8663          "type": "SYMBOL",
8664          "name": "attribute_id"
8665        },
8666        {
8667          "type": "CHOICE",
8668          "members": [
8669            {
8670              "type": "SYMBOL",
8671              "name": "attribute_payload"
8672            },
8673            {
8674              "type": "BLANK"
8675            }
8676          ]
8677        },
8678        {
8679          "type": "STRING",
8680          "value": "]"
8681        }
8682      ]
8683    },
8684    "floating_attribute": {
8685      "type": "SEQ",
8686      "members": [
8687        {
8688          "type": "STRING",
8689          "value": "[@@@"
8690        },
8691        {
8692          "type": "SYMBOL",
8693          "name": "attribute_id"
8694        },
8695        {
8696          "type": "CHOICE",
8697          "members": [
8698            {
8699              "type": "SYMBOL",
8700              "name": "attribute_payload"
8701            },
8702            {
8703              "type": "BLANK"
8704            }
8705          ]
8706        },
8707        {
8708          "type": "STRING",
8709          "value": "]"
8710        }
8711      ]
8712    },
8713    "attribute_payload": {
8714      "type": "CHOICE",
8715      "members": [
8716        {
8717          "type": "SYMBOL",
8718          "name": "_structure"
8719        },
8720        {
8721          "type": "SEQ",
8722          "members": [
8723            {
8724              "type": "STRING",
8725              "value": ":"
8726            },
8727            {
8728              "type": "CHOICE",
8729              "members": [
8730                {
8731                  "type": "SYMBOL",
8732                  "name": "_type_ext"
8733                },
8734                {
8735                  "type": "SYMBOL",
8736                  "name": "_signature"
8737                }
8738              ]
8739            }
8740          ]
8741        },
8742        {
8743          "type": "SEQ",
8744          "members": [
8745            {
8746              "type": "STRING",
8747              "value": "?"
8748            },
8749            {
8750              "type": "SYMBOL",
8751              "name": "_pattern_ext"
8752            },
8753            {
8754              "type": "CHOICE",
8755              "members": [
8756                {
8757                  "type": "SYMBOL",
8758                  "name": "guard"
8759                },
8760                {
8761                  "type": "BLANK"
8762                }
8763              ]
8764            }
8765          ]
8766        }
8767      ]
8768    },
8769    "_extension": {
8770      "type": "CHOICE",
8771      "members": [
8772        {
8773          "type": "SYMBOL",
8774          "name": "extension"
8775        },
8776        {
8777          "type": "SYMBOL",
8778          "name": "quoted_extension"
8779        }
8780      ]
8781    },
8782    "extension": {
8783      "type": "SEQ",
8784      "members": [
8785        {
8786          "type": "STRING",
8787          "value": "[%"
8788        },
8789        {
8790          "type": "SYMBOL",
8791          "name": "attribute_id"
8792        },
8793        {
8794          "type": "CHOICE",
8795          "members": [
8796            {
8797              "type": "SYMBOL",
8798              "name": "attribute_payload"
8799            },
8800            {
8801              "type": "BLANK"
8802            }
8803          ]
8804        },
8805        {
8806          "type": "STRING",
8807          "value": "]"
8808        }
8809      ]
8810    },
8811    "quoted_extension": {
8812      "type": "SEQ",
8813      "members": [
8814        {
8815          "type": "STRING",
8816          "value": "{%"
8817        },
8818        {
8819          "type": "SYMBOL",
8820          "name": "attribute_id"
8821        },
8822        {
8823          "type": "CHOICE",
8824          "members": [
8825            {
8826              "type": "PATTERN",
8827              "value": "\\s+"
8828            },
8829            {
8830              "type": "BLANK"
8831            }
8832          ]
8833        },
8834        {
8835          "type": "SYMBOL",
8836          "name": "_quoted_string"
8837        },
8838        {
8839          "type": "STRING",
8840          "value": "}"
8841        }
8842      ]
8843    },
8844    "_item_extension": {
8845      "type": "CHOICE",
8846      "members": [
8847        {
8848          "type": "SYMBOL",
8849          "name": "item_extension"
8850        },
8851        {
8852          "type": "SYMBOL",
8853          "name": "quoted_item_extension"
8854        }
8855      ]
8856    },
8857    "item_extension": {
8858      "type": "SEQ",
8859      "members": [
8860        {
8861          "type": "STRING",
8862          "value": "[%%"
8863        },
8864        {
8865          "type": "SYMBOL",
8866          "name": "attribute_id"
8867        },
8868        {
8869          "type": "CHOICE",
8870          "members": [
8871            {
8872              "type": "SYMBOL",
8873              "name": "attribute_payload"
8874            },
8875            {
8876              "type": "BLANK"
8877            }
8878          ]
8879        },
8880        {
8881          "type": "STRING",
8882          "value": "]"
8883        },
8884        {
8885          "type": "REPEAT",
8886          "content": {
8887            "type": "SYMBOL",
8888            "name": "item_attribute"
8889          }
8890        }
8891      ]
8892    },
8893    "quoted_item_extension": {
8894      "type": "SEQ",
8895      "members": [
8896        {
8897          "type": "STRING",
8898          "value": "{%%"
8899        },
8900        {
8901          "type": "SYMBOL",
8902          "name": "attribute_id"
8903        },
8904        {
8905          "type": "CHOICE",
8906          "members": [
8907            {
8908              "type": "PATTERN",
8909              "value": "\\s+"
8910            },
8911            {
8912              "type": "BLANK"
8913            }
8914          ]
8915        },
8916        {
8917          "type": "SYMBOL",
8918          "name": "_quoted_string"
8919        },
8920        {
8921          "type": "STRING",
8922          "value": "}"
8923        },
8924        {
8925          "type": "REPEAT",
8926          "content": {
8927            "type": "SYMBOL",
8928            "name": "item_attribute"
8929          }
8930        }
8931      ]
8932    },
8933    "_attribute": {
8934      "type": "SEQ",
8935      "members": [
8936        {
8937          "type": "STRING",
8938          "value": "%"
8939        },
8940        {
8941          "type": "SYMBOL",
8942          "name": "attribute_id"
8943        }
8944      ]
8945    },
8946    "_constant": {
8947      "type": "CHOICE",
8948      "members": [
8949        {
8950          "type": "SYMBOL",
8951          "name": "number"
8952        },
8953        {
8954          "type": "SYMBOL",
8955          "name": "character"
8956        },
8957        {
8958          "type": "SYMBOL",
8959          "name": "string"
8960        },
8961        {
8962          "type": "SYMBOL",
8963          "name": "quoted_string"
8964        },
8965        {
8966          "type": "SYMBOL",
8967          "name": "boolean"
8968        },
8969        {
8970          "type": "SYMBOL",
8971          "name": "unit"
8972        }
8973      ]
8974    },
8975    "_signed_constant": {
8976      "type": "CHOICE",
8977      "members": [
8978        {
8979          "type": "SYMBOL",
8980          "name": "_constant"
8981        },
8982        {
8983          "type": "SYMBOL",
8984          "name": "signed_number"
8985        }
8986      ]
8987    },
8988    "number": {
8989      "type": "TOKEN",
8990      "content": {
8991        "type": "CHOICE",
8992        "members": [
8993          {
8994            "type": "PATTERN",
8995            "value": "[0-9][0-9_]*(\\.[0-9_]*)?([eE][+\\-]?[0-9][0-9_]*)?[g-zG-Z]?"
8996          },
8997          {
8998            "type": "PATTERN",
8999            "value": "0[xX][0-9A-Fa-f][0-9A-Fa-f_]*(\\.[0-9A-Fa-f_]*)?([pP][+\\-]?[0-9][0-9_]*)?[g-zG-Z]?"
9000          },
9001          {
9002            "type": "PATTERN",
9003            "value": "0[oO][0-7][0-7_]*[g-zG-Z]?"
9004          },
9005          {
9006            "type": "PATTERN",
9007            "value": "0[bB][01][01_]*[g-zG-Z]?"
9008          }
9009        ]
9010      }
9011    },
9012    "signed_number": {
9013      "type": "SEQ",
9014      "members": [
9015        {
9016          "type": "CHOICE",
9017          "members": [
9018            {
9019              "type": "STRING",
9020              "value": "+"
9021            },
9022            {
9023              "type": "STRING",
9024              "value": "-"
9025            }
9026          ]
9027        },
9028        {
9029          "type": "TOKEN",
9030          "content": {
9031            "type": "CHOICE",
9032            "members": [
9033              {
9034                "type": "PATTERN",
9035                "value": "[0-9][0-9_]*(\\.[0-9_]*)?([eE][+\\-]?[0-9][0-9_]*)?[g-zG-Z]?"
9036              },
9037              {
9038                "type": "PATTERN",
9039                "value": "0[xX][0-9A-Fa-f][0-9A-Fa-f_]*(\\.[0-9A-Fa-f_]*)?([pP][+\\-]?[0-9][0-9_]*)?[g-zG-Z]?"
9040              },
9041              {
9042                "type": "PATTERN",
9043                "value": "0[oO][0-7][0-7_]*[g-zG-Z]?"
9044              },
9045              {
9046                "type": "PATTERN",
9047                "value": "0[bB][01][01_]*[g-zG-Z]?"
9048              }
9049            ]
9050          }
9051        }
9052      ]
9053    },
9054    "character": {
9055      "type": "SEQ",
9056      "members": [
9057        {
9058          "type": "STRING",
9059          "value": "'"
9060        },
9061        {
9062          "type": "SYMBOL",
9063          "name": "character_content"
9064        },
9065        {
9066          "type": "STRING",
9067          "value": "'"
9068        }
9069      ]
9070    },
9071    "character_content": {
9072      "type": "CHOICE",
9073      "members": [
9074        {
9075          "type": "PATTERN",
9076          "value": "[^\\\\']"
9077        },
9078        {
9079          "type": "SYMBOL",
9080          "name": "_null"
9081        },
9082        {
9083          "type": "SYMBOL",
9084          "name": "escape_sequence"
9085        }
9086      ]
9087    },
9088    "string": {
9089      "type": "SEQ",
9090      "members": [
9091        {
9092          "type": "STRING",
9093          "value": "\""
9094        },
9095        {
9096          "type": "CHOICE",
9097          "members": [
9098            {
9099              "type": "SYMBOL",
9100              "name": "string_content"
9101            },
9102            {
9103              "type": "BLANK"
9104            }
9105          ]
9106        },
9107        {
9108          "type": "STRING",
9109          "value": "\""
9110        }
9111      ]
9112    },
9113    "string_content": {
9114      "type": "REPEAT1",
9115      "content": {
9116        "type": "CHOICE",
9117        "members": [
9118          {
9119            "type": "IMMEDIATE_TOKEN",
9120            "content": {
9121              "type": "STRING",
9122              "value": " "
9123            }
9124          },
9125          {
9126            "type": "IMMEDIATE_TOKEN",
9127            "content": {
9128              "type": "STRING",
9129              "value": "\n"
9130            }
9131          },
9132          {
9133            "type": "IMMEDIATE_TOKEN",
9134            "content": {
9135              "type": "STRING",
9136              "value": "\t"
9137            }
9138          },
9139          {
9140            "type": "IMMEDIATE_TOKEN",
9141            "content": {
9142              "type": "STRING",
9143              "value": "[@"
9144            }
9145          },
9146          {
9147            "type": "IMMEDIATE_TOKEN",
9148            "content": {
9149              "type": "STRING",
9150              "value": "[@@"
9151            }
9152          },
9153          {
9154            "type": "IMMEDIATE_TOKEN",
9155            "content": {
9156              "type": "STRING",
9157              "value": "[@@@"
9158            }
9159          },
9160          {
9161            "type": "PATTERN",
9162            "value": "[^\\\\\"%@]+|%|@"
9163          },
9164          {
9165            "type": "SYMBOL",
9166            "name": "_null"
9167          },
9168          {
9169            "type": "SYMBOL",
9170            "name": "escape_sequence"
9171          },
9172          {
9173            "type": "ALIAS",
9174            "content": {
9175              "type": "PATTERN",
9176              "value": "\\\\u\\{[0-9A-Fa-f]+\\}"
9177            },
9178            "named": true,
9179            "value": "escape_sequence"
9180          },
9181          {
9182            "type": "ALIAS",
9183            "content": {
9184              "type": "PATTERN",
9185              "value": "\\\\\\n[\\t ]*"
9186            },
9187            "named": true,
9188            "value": "escape_sequence"
9189          },
9190          {
9191            "type": "SYMBOL",
9192            "name": "conversion_specification"
9193          },
9194          {
9195            "type": "SYMBOL",
9196            "name": "pretty_printing_indication"
9197          }
9198        ]
9199      }
9200    },
9201    "quoted_string": {
9202      "type": "SEQ",
9203      "members": [
9204        {
9205          "type": "STRING",
9206          "value": "{"
9207        },
9208        {
9209          "type": "SYMBOL",
9210          "name": "_quoted_string"
9211        },
9212        {
9213          "type": "STRING",
9214          "value": "}"
9215        }
9216      ]
9217    },
9218    "_quoted_string": {
9219      "type": "SEQ",
9220      "members": [
9221        {
9222          "type": "SYMBOL",
9223          "name": "_left_quoted_string_delimiter"
9224        },
9225        {
9226          "type": "CHOICE",
9227          "members": [
9228            {
9229              "type": "SYMBOL",
9230              "name": "quoted_string_content"
9231            },
9232            {
9233              "type": "BLANK"
9234            }
9235          ]
9236        },
9237        {
9238          "type": "SYMBOL",
9239          "name": "_right_quoted_string_delimiter"
9240        }
9241      ]
9242    },
9243    "quoted_string_content": {
9244      "type": "REPEAT1",
9245      "content": {
9246        "type": "CHOICE",
9247        "members": [
9248          {
9249            "type": "IMMEDIATE_TOKEN",
9250            "content": {
9251              "type": "STRING",
9252              "value": " "
9253            }
9254          },
9255          {
9256            "type": "IMMEDIATE_TOKEN",
9257            "content": {
9258              "type": "STRING",
9259              "value": "\n"
9260            }
9261          },
9262          {
9263            "type": "IMMEDIATE_TOKEN",
9264            "content": {
9265              "type": "STRING",
9266              "value": "\t"
9267            }
9268          },
9269          {
9270            "type": "IMMEDIATE_TOKEN",
9271            "content": {
9272              "type": "STRING",
9273              "value": "[@"
9274            }
9275          },
9276          {
9277            "type": "IMMEDIATE_TOKEN",
9278            "content": {
9279              "type": "STRING",
9280              "value": "[@@"
9281            }
9282          },
9283          {
9284            "type": "IMMEDIATE_TOKEN",
9285            "content": {
9286              "type": "STRING",
9287              "value": "[@@@"
9288            }
9289          },
9290          {
9291            "type": "PATTERN",
9292            "value": "[^%@|]+|%|@|\\|"
9293          },
9294          {
9295            "type": "SYMBOL",
9296            "name": "_null"
9297          },
9298          {
9299            "type": "SYMBOL",
9300            "name": "conversion_specification"
9301          },
9302          {
9303            "type": "SYMBOL",
9304            "name": "pretty_printing_indication"
9305          }
9306        ]
9307      }
9308    },
9309    "escape_sequence": {
9310      "type": "CHOICE",
9311      "members": [
9312        {
9313          "type": "PATTERN",
9314          "value": "\\\\[\\\\\"'ntbr ]"
9315        },
9316        {
9317          "type": "PATTERN",
9318          "value": "\\\\[0-9][0-9][0-9]"
9319        },
9320        {
9321          "type": "PATTERN",
9322          "value": "\\\\x[0-9A-Fa-f][0-9A-Fa-f]"
9323        },
9324        {
9325          "type": "PATTERN",
9326          "value": "\\\\o[0-3][0-7][0-7]"
9327        }
9328      ]
9329    },
9330    "conversion_specification": {
9331      "type": "TOKEN",
9332      "content": {
9333        "type": "SEQ",
9334        "members": [
9335          {
9336            "type": "STRING",
9337            "value": "%"
9338          },
9339          {
9340            "type": "CHOICE",
9341            "members": [
9342              {
9343                "type": "PATTERN",
9344                "value": "[\\-0+ #]"
9345              },
9346              {
9347                "type": "BLANK"
9348              }
9349            ]
9350          },
9351          {
9352            "type": "CHOICE",
9353            "members": [
9354              {
9355                "type": "PATTERN",
9356                "value": "[1-9][0-9]*|\\*"
9357              },
9358              {
9359                "type": "BLANK"
9360              }
9361            ]
9362          },
9363          {
9364            "type": "CHOICE",
9365            "members": [
9366              {
9367                "type": "PATTERN",
9368                "value": "\\.([0-9]*|\\*)"
9369              },
9370              {
9371                "type": "BLANK"
9372              }
9373            ]
9374          },
9375          {
9376            "type": "CHOICE",
9377            "members": [
9378              {
9379                "type": "PATTERN",
9380                "value": "[diunlLNxXosScCfFeEgGhHbBat!%@,]"
9381              },
9382              {
9383                "type": "PATTERN",
9384                "value": "[lnL][diuxXo]"
9385              }
9386            ]
9387          }
9388        ]
9389      }
9390    },
9391    "pretty_printing_indication": {
9392      "type": "PATTERN",
9393      "value": "@([\\[\\], ;.{}?]|\\\\n|<[0-9]+>)"
9394    },
9395    "boolean": {
9396      "type": "CHOICE",
9397      "members": [
9398        {
9399          "type": "STRING",
9400          "value": "true"
9401        },
9402        {
9403          "type": "STRING",
9404          "value": "false"
9405        }
9406      ]
9407    },
9408    "unit": {
9409      "type": "CHOICE",
9410      "members": [
9411        {
9412          "type": "SEQ",
9413          "members": [
9414            {
9415              "type": "STRING",
9416              "value": "("
9417            },
9418            {
9419              "type": "STRING",
9420              "value": ")"
9421            }
9422          ]
9423        },
9424        {
9425          "type": "SEQ",
9426          "members": [
9427            {
9428              "type": "STRING",
9429              "value": "begin"
9430            },
9431            {
9432              "type": "STRING",
9433              "value": "end"
9434            }
9435          ]
9436        }
9437      ]
9438    },
9439    "prefix_operator": {
9440      "type": "TOKEN",
9441      "content": {
9442        "type": "CHOICE",
9443        "members": [
9444          {
9445            "type": "SEQ",
9446            "members": [
9447              {
9448                "type": "STRING",
9449                "value": "!"
9450              },
9451              {
9452                "type": "CHOICE",
9453                "members": [
9454                  {
9455                    "type": "CHOICE",
9456                    "members": [
9457                      {
9458                        "type": "PATTERN",
9459                        "value": "[#!$%&*+\\-./:<>?@^|~]"
9460                      },
9461                      {
9462                        "type": "BLANK"
9463                      }
9464                    ]
9465                  },
9466                  {
9467                    "type": "SEQ",
9468                    "members": [
9469                      {
9470                        "type": "PATTERN",
9471                        "value": "[#!$%&*+\\-./:<=>?@^|~]"
9472                      },
9473                      {
9474                        "type": "REPEAT1",
9475                        "content": {
9476                          "type": "PATTERN",
9477                          "value": "[#!$%&*+\\-./:<=>?@^|~]"
9478                        }
9479                      }
9480                    ]
9481                  }
9482                ]
9483              }
9484            ]
9485          },
9486          {
9487            "type": "SEQ",
9488            "members": [
9489              {
9490                "type": "PATTERN",
9491                "value": "[~?]"
9492              },
9493              {
9494                "type": "REPEAT1",
9495                "content": {
9496                  "type": "PATTERN",
9497                  "value": "[#!$%&*+\\-./:<=>?@^|~]"
9498                }
9499              }
9500            ]
9501          }
9502        ]
9503      }
9504    },
9505    "sign_operator": {
9506      "type": "CHOICE",
9507      "members": [
9508        {
9509          "type": "STRING",
9510          "value": "+"
9511        },
9512        {
9513          "type": "STRING",
9514          "value": "-"
9515        },
9516        {
9517          "type": "STRING",
9518          "value": "+."
9519        },
9520        {
9521          "type": "STRING",
9522          "value": "-."
9523        }
9524      ]
9525    },
9526    "infix_operator": {
9527      "type": "CHOICE",
9528      "members": [
9529        {
9530          "type": "SYMBOL",
9531          "name": "_pow_operator"
9532        },
9533        {
9534          "type": "SYMBOL",
9535          "name": "_mult_operator"
9536        },
9537        {
9538          "type": "SYMBOL",
9539          "name": "_add_operator"
9540        },
9541        {
9542          "type": "SYMBOL",
9543          "name": "_concat_operator"
9544        },
9545        {
9546          "type": "SYMBOL",
9547          "name": "_rel_operator"
9548        },
9549        {
9550          "type": "SYMBOL",
9551          "name": "_and_operator"
9552        },
9553        {
9554          "type": "SYMBOL",
9555          "name": "_or_operator"
9556        },
9557        {
9558          "type": "SYMBOL",
9559          "name": "_assign_operator"
9560        }
9561      ]
9562    },
9563    "hash_operator": {
9564      "type": "TOKEN",
9565      "content": {
9566        "type": "SEQ",
9567        "members": [
9568          {
9569            "type": "STRING",
9570            "value": "#"
9571          },
9572          {
9573            "type": "REPEAT1",
9574            "content": {
9575              "type": "PATTERN",
9576              "value": "[#!$%&*+\\-./:<=>?@^|~]"
9577            }
9578          }
9579        ]
9580      }
9581    },
9582    "_pow_operator": {
9583      "type": "CHOICE",
9584      "members": [
9585        {
9586          "type": "TOKEN",
9587          "content": {
9588            "type": "SEQ",
9589            "members": [
9590              {
9591                "type": "STRING",
9592                "value": "**"
9593              },
9594              {
9595                "type": "REPEAT",
9596                "content": {
9597                  "type": "PATTERN",
9598                  "value": "[!$%&*+\\-./:<=>?@^|~]"
9599                }
9600              }
9601            ]
9602          }
9603        },
9604        {
9605          "type": "STRING",
9606          "value": "lsl"
9607        },
9608        {
9609          "type": "STRING",
9610          "value": "lsr"
9611        },
9612        {
9613          "type": "STRING",
9614          "value": "asr"
9615        }
9616      ]
9617    },
9618    "_mult_operator": {
9619      "type": "CHOICE",
9620      "members": [
9621        {
9622          "type": "TOKEN",
9623          "content": {
9624            "type": "SEQ",
9625            "members": [
9626              {
9627                "type": "PATTERN",
9628                "value": "[*/%]"
9629              },
9630              {
9631                "type": "REPEAT",
9632                "content": {
9633                  "type": "PATTERN",
9634                  "value": "[!$%&*+\\-./:<=>?@^|~]"
9635                }
9636              }
9637            ]
9638          }
9639        },
9640        {
9641          "type": "STRING",
9642          "value": "mod"
9643        },
9644        {
9645          "type": "STRING",
9646          "value": "land"
9647        },
9648        {
9649          "type": "STRING",
9650          "value": "lor"
9651        },
9652        {
9653          "type": "STRING",
9654          "value": "lxor"
9655        }
9656      ]
9657    },
9658    "_add_operator": {
9659      "type": "CHOICE",
9660      "members": [
9661        {
9662          "type": "STRING",
9663          "value": "+"
9664        },
9665        {
9666          "type": "STRING",
9667          "value": "-"
9668        },
9669        {
9670          "type": "STRING",
9671          "value": "+."
9672        },
9673        {
9674          "type": "STRING",
9675          "value": "-."
9676        },
9677        {
9678          "type": "TOKEN",
9679          "content": {
9680            "type": "CHOICE",
9681            "members": [
9682              {
9683                "type": "SEQ",
9684                "members": [
9685                  {
9686                    "type": "STRING",
9687                    "value": "+"
9688                  },
9689                  {
9690                    "type": "REPEAT1",
9691                    "content": {
9692                      "type": "PATTERN",
9693                      "value": "[!$%&*+\\-./:<=>?@^|~]"
9694                    }
9695                  }
9696                ]
9697              },
9698              {
9699                "type": "SEQ",
9700                "members": [
9701                  {
9702                    "type": "STRING",
9703                    "value": "-"
9704                  },
9705                  {
9706                    "type": "CHOICE",
9707                    "members": [
9708                      {
9709                        "type": "REPEAT1",
9710                        "content": {
9711                          "type": "PATTERN",
9712                          "value": "[!$%&*+\\-./:<=?@^|~]"
9713                        }
9714                      },
9715                      {
9716                        "type": "SEQ",
9717                        "members": [
9718                          {
9719                            "type": "PATTERN",
9720                            "value": "[!$%&*+\\-./:<=>?@^|~]"
9721                          },
9722                          {
9723                            "type": "REPEAT1",
9724                            "content": {
9725                              "type": "PATTERN",
9726                              "value": "[!$%&*+\\-./:<=>?@^|~]"
9727                            }
9728                          }
9729                        ]
9730                      }
9731                    ]
9732                  }
9733                ]
9734              }
9735            ]
9736          }
9737        }
9738      ]
9739    },
9740    "_concat_operator": {
9741      "type": "TOKEN",
9742      "content": {
9743        "type": "SEQ",
9744        "members": [
9745          {
9746            "type": "PATTERN",
9747            "value": "[@^]"
9748          },
9749          {
9750            "type": "REPEAT",
9751            "content": {
9752              "type": "PATTERN",
9753              "value": "[!$%&*+\\-./:<=>?@^|~]"
9754            }
9755          }
9756        ]
9757      }
9758    },
9759    "_rel_operator": {
9760      "type": "TOKEN",
9761      "content": {
9762        "type": "CHOICE",
9763        "members": [
9764          {
9765            "type": "SEQ",
9766            "members": [
9767              {
9768                "type": "PATTERN",
9769                "value": "[=>$]"
9770              },
9771              {
9772                "type": "REPEAT",
9773                "content": {
9774                  "type": "PATTERN",
9775                  "value": "[!$%&*+\\-./:<=>?@^|~]"
9776                }
9777              }
9778            ]
9779          },
9780          {
9781            "type": "SEQ",
9782            "members": [
9783              {
9784                "type": "STRING",
9785                "value": "<"
9786              },
9787              {
9788                "type": "CHOICE",
9789                "members": [
9790                  {
9791                    "type": "CHOICE",
9792                    "members": [
9793                      {
9794                        "type": "PATTERN",
9795                        "value": "[!$%&*+./:<=>?@^|~]"
9796                      },
9797                      {
9798                        "type": "BLANK"
9799                      }
9800                    ]
9801                  },
9802                  {
9803                    "type": "SEQ",
9804                    "members": [
9805                      {
9806                        "type": "PATTERN",
9807                        "value": "[!$%&*+\\-./:<=>?@^|~]"
9808                      },
9809                      {
9810                        "type": "REPEAT1",
9811                        "content": {
9812                          "type": "PATTERN",
9813                          "value": "[!$%&*+\\-./:<=>?@^|~]"
9814                        }
9815                      }
9816                    ]
9817                  }
9818                ]
9819              }
9820            ]
9821          },
9822          {
9823            "type": "SEQ",
9824            "members": [
9825              {
9826                "type": "STRING",
9827                "value": "&"
9828              },
9829              {
9830                "type": "CHOICE",
9831                "members": [
9832                  {
9833                    "type": "PATTERN",
9834                    "value": "[!$%*+\\-./:<=>?@^|~]"
9835                  },
9836                  {
9837                    "type": "SEQ",
9838                    "members": [
9839                      {
9840                        "type": "PATTERN",
9841                        "value": "[!$%&*+\\-./:<=>?@^|~]"
9842                      },
9843                      {
9844                        "type": "REPEAT1",
9845                        "content": {
9846                          "type": "PATTERN",
9847                          "value": "[!$%&*+\\-./:<=>?@^|~]"
9848                        }
9849                      }
9850                    ]
9851                  }
9852                ]
9853              }
9854            ]
9855          },
9856          {
9857            "type": "SEQ",
9858            "members": [
9859              {
9860                "type": "STRING",
9861                "value": "|"
9862              },
9863              {
9864                "type": "CHOICE",
9865                "members": [
9866                  {
9867                    "type": "PATTERN",
9868                    "value": "[!$%&*+\\-./:<=>?@^~]"
9869                  },
9870                  {
9871                    "type": "SEQ",
9872                    "members": [
9873                      {
9874                        "type": "PATTERN",
9875                        "value": "[!$%&*+\\-./:<=>?@^|~]"
9876                      },
9877                      {
9878                        "type": "REPEAT1",
9879                        "content": {
9880                          "type": "PATTERN",
9881                          "value": "[!$%&*+\\-./:<=>?@^|~]"
9882                        }
9883                      }
9884                    ]
9885                  }
9886                ]
9887              }
9888            ]
9889          },
9890          {
9891            "type": "STRING",
9892            "value": "!="
9893          }
9894        ]
9895      }
9896    },
9897    "_and_operator": {
9898      "type": "CHOICE",
9899      "members": [
9900        {
9901          "type": "STRING",
9902          "value": "&"
9903        },
9904        {
9905          "type": "STRING",
9906          "value": "&&"
9907        }
9908      ]
9909    },
9910    "_or_operator": {
9911      "type": "CHOICE",
9912      "members": [
9913        {
9914          "type": "STRING",
9915          "value": "or"
9916        },
9917        {
9918          "type": "STRING",
9919          "value": "||"
9920        }
9921      ]
9922    },
9923    "_assign_operator": {
9924      "type": "CHOICE",
9925      "members": [
9926        {
9927          "type": "STRING",
9928          "value": ":="
9929        }
9930      ]
9931    },
9932    "indexing_operator": {
9933      "type": "TOKEN",
9934      "content": {
9935        "type": "SEQ",
9936        "members": [
9937          {
9938            "type": "PATTERN",
9939            "value": "[!$%&*+\\-/:=>?@^|]"
9940          },
9941          {
9942            "type": "REPEAT",
9943            "content": {
9944              "type": "PATTERN",
9945              "value": "[!$%&*+\\-./:<=>?@^|~]"
9946            }
9947          }
9948        ]
9949      }
9950    },
9951    "indexing_operator_path": {
9952      "type": "CHOICE",
9953      "members": [
9954        {
9955          "type": "SYMBOL",
9956          "name": "indexing_operator"
9957        },
9958        {
9959          "type": "SEQ",
9960          "members": [
9961            {
9962              "type": "SYMBOL",
9963              "name": "module_path"
9964            },
9965            {
9966              "type": "STRING",
9967              "value": "."
9968            },
9969            {
9970              "type": "SYMBOL",
9971              "name": "indexing_operator"
9972            }
9973          ]
9974        }
9975      ]
9976    },
9977    "let_operator": {
9978      "type": "TOKEN",
9979      "content": {
9980        "type": "SEQ",
9981        "members": [
9982          {
9983            "type": "STRING",
9984            "value": "let"
9985          },
9986          {
9987            "type": "PATTERN",
9988            "value": "[$&*+\\-/<=>@^|]"
9989          },
9990          {
9991            "type": "REPEAT",
9992            "content": {
9993              "type": "PATTERN",
9994              "value": "[!$%&*+\\-./:<=>?@^|~]"
9995            }
9996          }
9997        ]
9998      }
9999    },
10000    "and_operator": {
10001      "type": "TOKEN",
10002      "content": {
10003        "type": "SEQ",
10004        "members": [
10005          {
10006            "type": "STRING",
10007            "value": "and"
10008          },
10009          {
10010            "type": "PATTERN",
10011            "value": "[$&*+\\-/<=>@^|]"
10012          },
10013          {
10014            "type": "REPEAT",
10015            "content": {
10016              "type": "PATTERN",
10017              "value": "[!$%&*+\\-./:<=>?@^|~]"
10018            }
10019          }
10020        ]
10021      }
10022    },
10023    "match_operator": {
10024      "type": "TOKEN",
10025      "content": {
10026        "type": "SEQ",
10027        "members": [
10028          {
10029            "type": "STRING",
10030            "value": "match"
10031          },
10032          {
10033            "type": "PATTERN",
10034            "value": "[$&*+\\-/<=>@^|]"
10035          },
10036          {
10037            "type": "REPEAT",
10038            "content": {
10039              "type": "PATTERN",
10040              "value": "[!$%&*+\\-./:<=>?@^|~]"
10041            }
10042          }
10043        ]
10044      }
10045    },
10046    "_value_name": {
10047      "type": "CHOICE",
10048      "members": [
10049        {
10050          "type": "ALIAS",
10051          "content": {
10052            "type": "SYMBOL",
10053            "name": "_identifier"
10054          },
10055          "named": true,
10056          "value": "value_name"
10057        },
10058        {
10059          "type": "SYMBOL",
10060          "name": "parenthesized_operator"
10061        }
10062      ]
10063    },
10064    "_value_pattern": {
10065      "type": "CHOICE",
10066      "members": [
10067        {
10068          "type": "ALIAS",
10069          "content": {
10070            "type": "SYMBOL",
10071            "name": "_identifier"
10072          },
10073          "named": true,
10074          "value": "value_pattern"
10075        },
10076        {
10077          "type": "SYMBOL",
10078          "name": "parenthesized_operator"
10079        }
10080      ]
10081    },
10082    "parenthesized_operator": {
10083      "type": "SEQ",
10084      "members": [
10085        {
10086          "type": "STRING",
10087          "value": "("
10088        },
10089        {
10090          "type": "CHOICE",
10091          "members": [
10092            {
10093              "type": "SYMBOL",
10094              "name": "prefix_operator"
10095            },
10096            {
10097              "type": "SYMBOL",
10098              "name": "infix_operator"
10099            },
10100            {
10101              "type": "SYMBOL",
10102              "name": "hash_operator"
10103            },
10104            {
10105              "type": "SEQ",
10106              "members": [
10107                {
10108                  "type": "STRING",
10109                  "value": "."
10110                },
10111                {
10112                  "type": "SYMBOL",
10113                  "name": "indexing_operator"
10114                },
10115                {
10116                  "type": "CHOICE",
10117                  "members": [
10118                    {
10119                      "type": "SEQ",
10120                      "members": [
10121                        {
10122                          "type": "STRING",
10123                          "value": "("
10124                        },
10125                        {
10126                          "type": "CHOICE",
10127                          "members": [
10128                            {
10129                              "type": "SEQ",
10130                              "members": [
10131                                {
10132                                  "type": "STRING",
10133                                  "value": ";"
10134                                },
10135                                {
10136                                  "type": "STRING",
10137                                  "value": ".."
10138                                }
10139                              ]
10140                            },
10141                            {
10142                              "type": "BLANK"
10143                            }
10144                          ]
10145                        },
10146                        {
10147                          "type": "STRING",
10148                          "value": ")"
10149                        }
10150                      ]
10151                    },
10152                    {
10153                      "type": "SEQ",
10154                      "members": [
10155                        {
10156                          "type": "STRING",
10157                          "value": "["
10158                        },
10159                        {
10160                          "type": "CHOICE",
10161                          "members": [
10162                            {
10163                              "type": "SEQ",
10164                              "members": [
10165                                {
10166                                  "type": "STRING",
10167                                  "value": ";"
10168                                },
10169                                {
10170                                  "type": "STRING",
10171                                  "value": ".."
10172                                }
10173                              ]
10174                            },
10175                            {
10176                              "type": "BLANK"
10177                            }
10178                          ]
10179                        },
10180                        {
10181                          "type": "STRING",
10182                          "value": "]"
10183                        }
10184                      ]
10185                    },
10186                    {
10187                      "type": "SEQ",
10188                      "members": [
10189                        {
10190                          "type": "STRING",
10191                          "value": "{"
10192                        },
10193                        {
10194                          "type": "CHOICE",
10195                          "members": [
10196                            {
10197                              "type": "SEQ",
10198                              "members": [
10199                                {
10200                                  "type": "STRING",
10201                                  "value": ";"
10202                                },
10203                                {
10204                                  "type": "STRING",
10205                                  "value": ".."
10206                                }
10207                              ]
10208                            },
10209                            {
10210                              "type": "BLANK"
10211                            }
10212                          ]
10213                        },
10214                        {
10215                          "type": "STRING",
10216                          "value": "}"
10217                        }
10218                      ]
10219                    }
10220                  ]
10221                },
10222                {
10223                  "type": "CHOICE",
10224                  "members": [
10225                    {
10226                      "type": "STRING",
10227                      "value": "<-"
10228                    },
10229                    {
10230                      "type": "BLANK"
10231                    }
10232                  ]
10233                }
10234              ]
10235            },
10236            {
10237              "type": "SYMBOL",
10238              "name": "let_operator"
10239            },
10240            {
10241              "type": "SYMBOL",
10242              "name": "and_operator"
10243            },
10244            {
10245              "type": "SYMBOL",
10246              "name": "match_operator"
10247            }
10248          ]
10249        },
10250        {
10251          "type": "STRING",
10252          "value": ")"
10253        }
10254      ]
10255    },
10256    "value_path": {
10257      "type": "CHOICE",
10258      "members": [
10259        {
10260          "type": "SYMBOL",
10261          "name": "_value_name"
10262        },
10263        {
10264          "type": "SEQ",
10265          "members": [
10266            {
10267              "type": "SYMBOL",
10268              "name": "module_path"
10269            },
10270            {
10271              "type": "STRING",
10272              "value": "."
10273            },
10274            {
10275              "type": "SYMBOL",
10276              "name": "_value_name"
10277            }
10278          ]
10279        }
10280      ]
10281    },
10282    "module_path": {
10283      "type": "PREC",
10284      "value": 1,
10285      "content": {
10286        "type": "CHOICE",
10287        "members": [
10288          {
10289            "type": "SYMBOL",
10290            "name": "_module_name"
10291          },
10292          {
10293            "type": "SEQ",
10294            "members": [
10295              {
10296                "type": "SYMBOL",
10297                "name": "module_path"
10298              },
10299              {
10300                "type": "STRING",
10301                "value": "."
10302              },
10303              {
10304                "type": "SYMBOL",
10305                "name": "_module_name"
10306              }
10307            ]
10308          }
10309        ]
10310      }
10311    },
10312    "extended_module_path": {
10313      "type": "CHOICE",
10314      "members": [
10315        {
10316          "type": "CHOICE",
10317          "members": [
10318            {
10319              "type": "SYMBOL",
10320              "name": "_module_name"
10321            },
10322            {
10323              "type": "SEQ",
10324              "members": [
10325                {
10326                  "type": "SYMBOL",
10327                  "name": "extended_module_path"
10328                },
10329                {
10330                  "type": "STRING",
10331                  "value": "."
10332                },
10333                {
10334                  "type": "SYMBOL",
10335                  "name": "_module_name"
10336                }
10337              ]
10338            }
10339          ]
10340        },
10341        {
10342          "type": "SEQ",
10343          "members": [
10344            {
10345              "type": "SYMBOL",
10346              "name": "extended_module_path"
10347            },
10348            {
10349              "type": "SEQ",
10350              "members": [
10351                {
10352                  "type": "STRING",
10353                  "value": "("
10354                },
10355                {
10356                  "type": "SYMBOL",
10357                  "name": "extended_module_path"
10358                },
10359                {
10360                  "type": "STRING",
10361                  "value": ")"
10362                }
10363              ]
10364            }
10365          ]
10366        }
10367      ]
10368    },
10369    "module_type_path": {
10370      "type": "CHOICE",
10371      "members": [
10372        {
10373          "type": "SYMBOL",
10374          "name": "_module_type_name"
10375        },
10376        {
10377          "type": "SEQ",
10378          "members": [
10379            {
10380              "type": "SYMBOL",
10381              "name": "extended_module_path"
10382            },
10383            {
10384              "type": "STRING",
10385              "value": "."
10386            },
10387            {
10388              "type": "SYMBOL",
10389              "name": "_module_type_name"
10390            }
10391          ]
10392        }
10393      ]
10394    },
10395    "field_path": {
10396      "type": "CHOICE",
10397      "members": [
10398        {
10399          "type": "SYMBOL",
10400          "name": "_field_name"
10401        },
10402        {
10403          "type": "SEQ",
10404          "members": [
10405            {
10406              "type": "SYMBOL",
10407              "name": "module_path"
10408            },
10409            {
10410              "type": "STRING",
10411              "value": "."
10412            },
10413            {
10414              "type": "SYMBOL",
10415              "name": "_field_name"
10416            }
10417          ]
10418        }
10419      ]
10420    },
10421    "constructor_path": {
10422      "type": "CHOICE",
10423      "members": [
10424        {
10425          "type": "SYMBOL",
10426          "name": "_constructor_name"
10427        },
10428        {
10429          "type": "SEQ",
10430          "members": [
10431            {
10432              "type": "SYMBOL",
10433              "name": "module_path"
10434            },
10435            {
10436              "type": "STRING",
10437              "value": "."
10438            },
10439            {
10440              "type": "SYMBOL",
10441              "name": "_constructor_name"
10442            }
10443          ]
10444        }
10445      ]
10446    },
10447    "type_constructor_path": {
10448      "type": "PREC",
10449      "value": 1,
10450      "content": {
10451        "type": "CHOICE",
10452        "members": [
10453          {
10454            "type": "SYMBOL",
10455            "name": "_type_constructor"
10456          },
10457          {
10458            "type": "SEQ",
10459            "members": [
10460              {
10461                "type": "SYMBOL",
10462                "name": "extended_module_path"
10463              },
10464              {
10465                "type": "STRING",
10466                "value": "."
10467              },
10468              {
10469                "type": "SYMBOL",
10470                "name": "_type_constructor"
10471              }
10472            ]
10473          }
10474        ]
10475      }
10476    },
10477    "class_path": {
10478      "type": "CHOICE",
10479      "members": [
10480        {
10481          "type": "SYMBOL",
10482          "name": "_class_name"
10483        },
10484        {
10485          "type": "SEQ",
10486          "members": [
10487            {
10488              "type": "SYMBOL",
10489              "name": "module_path"
10490            },
10491            {
10492              "type": "STRING",
10493              "value": "."
10494            },
10495            {
10496              "type": "SYMBOL",
10497              "name": "_class_name"
10498            }
10499          ]
10500        }
10501      ]
10502    },
10503    "class_type_path": {
10504      "type": "CHOICE",
10505      "members": [
10506        {
10507          "type": "SYMBOL",
10508          "name": "_class_type_name"
10509        },
10510        {
10511          "type": "SEQ",
10512          "members": [
10513            {
10514              "type": "SYMBOL",
10515              "name": "extended_module_path"
10516            },
10517            {
10518              "type": "STRING",
10519              "value": "."
10520            },
10521            {
10522              "type": "SYMBOL",
10523              "name": "_class_type_name"
10524            }
10525          ]
10526        }
10527      ]
10528    },
10529    "_label_name": {
10530      "type": "ALIAS",
10531      "content": {
10532        "type": "SYMBOL",
10533        "name": "_identifier"
10534      },
10535      "named": true,
10536      "value": "label_name"
10537    },
10538    "_field_name": {
10539      "type": "ALIAS",
10540      "content": {
10541        "type": "SYMBOL",
10542        "name": "_identifier"
10543      },
10544      "named": true,
10545      "value": "field_name"
10546    },
10547    "_class_name": {
10548      "type": "ALIAS",
10549      "content": {
10550        "type": "SYMBOL",
10551        "name": "_identifier"
10552      },
10553      "named": true,
10554      "value": "class_name"
10555    },
10556    "_class_type_name": {
10557      "type": "ALIAS",
10558      "content": {
10559        "type": "SYMBOL",
10560        "name": "_identifier"
10561      },
10562      "named": true,
10563      "value": "class_type_name"
10564    },
10565    "_method_name": {
10566      "type": "ALIAS",
10567      "content": {
10568        "type": "SYMBOL",
10569        "name": "_identifier"
10570      },
10571      "named": true,
10572      "value": "method_name"
10573    },
10574    "_type_constructor": {
10575      "type": "ALIAS",
10576      "content": {
10577        "type": "SYMBOL",
10578        "name": "_identifier"
10579      },
10580      "named": true,
10581      "value": "type_constructor"
10582    },
10583    "_instance_variable_name": {
10584      "type": "ALIAS",
10585      "content": {
10586        "type": "SYMBOL",
10587        "name": "_identifier"
10588      },
10589      "named": true,
10590      "value": "instance_variable_name"
10591    },
10592    "_module_name": {
10593      "type": "ALIAS",
10594      "content": {
10595        "type": "SYMBOL",
10596        "name": "_capitalized_identifier"
10597      },
10598      "named": true,
10599      "value": "module_name"
10600    },
10601    "_module_type_name": {
10602      "type": "ALIAS",
10603      "content": {
10604        "type": "CHOICE",
10605        "members": [
10606          {
10607            "type": "SYMBOL",
10608            "name": "_capitalized_identifier"
10609          },
10610          {
10611            "type": "SYMBOL",
10612            "name": "_identifier"
10613          }
10614        ]
10615      },
10616      "named": true,
10617      "value": "module_type_name"
10618    },
10619    "_constructor_name": {
10620      "type": "CHOICE",
10621      "members": [
10622        {
10623          "type": "ALIAS",
10624          "content": {
10625            "type": "SYMBOL",
10626            "name": "_capitalized_identifier"
10627          },
10628          "named": true,
10629          "value": "constructor_name"
10630        },
10631        {
10632          "type": "SEQ",
10633          "members": [
10634            {
10635              "type": "STRING",
10636              "value": "("
10637            },
10638            {
10639              "type": "ALIAS",
10640              "content": {
10641                "type": "STRING",
10642                "value": "::"
10643              },
10644              "named": true,
10645              "value": "constructor_name"
10646            },
10647            {
10648              "type": "STRING",
10649              "value": ")"
10650            }
10651          ]
10652        }
10653      ]
10654    },
10655    "_identifier": {
10656      "type": "PATTERN",
10657      "value": "[a-z_][a-zA-Z0-9_']*"
10658    },
10659    "_capitalized_identifier": {
10660      "type": "PATTERN",
10661      "value": "[A-Z][a-zA-Z0-9_']*"
10662    },
10663    "_label": {
10664      "type": "SEQ",
10665      "members": [
10666        {
10667          "type": "CHOICE",
10668          "members": [
10669            {
10670              "type": "STRING",
10671              "value": "~"
10672            },
10673            {
10674              "type": "STRING",
10675              "value": "?"
10676            }
10677          ]
10678        },
10679        {
10680          "type": "SYMBOL",
10681          "name": "_label_name"
10682        }
10683      ]
10684    },
10685    "directive": {
10686      "type": "SEQ",
10687      "members": [
10688        {
10689          "type": "STRING",
10690          "value": "#"
10691        },
10692        {
10693          "type": "CHOICE",
10694          "members": [
10695            {
10696              "type": "SYMBOL",
10697              "name": "_identifier"
10698            },
10699            {
10700              "type": "SYMBOL",
10701              "name": "_capitalized_identifier"
10702            }
10703          ]
10704        }
10705      ]
10706    },
10707    "type_variable": {
10708      "type": "SEQ",
10709      "members": [
10710        {
10711          "type": "STRING",
10712          "value": "'"
10713        },
10714        {
10715          "type": "CHOICE",
10716          "members": [
10717            {
10718              "type": "SYMBOL",
10719              "name": "_identifier"
10720            },
10721            {
10722              "type": "SYMBOL",
10723              "name": "_capitalized_identifier"
10724            }
10725          ]
10726        }
10727      ]
10728    },
10729    "tag": {
10730      "type": "SEQ",
10731      "members": [
10732        {
10733          "type": "STRING",
10734          "value": "`"
10735        },
10736        {
10737          "type": "CHOICE",
10738          "members": [
10739            {
10740              "type": "SYMBOL",
10741              "name": "_identifier"
10742            },
10743            {
10744              "type": "SYMBOL",
10745              "name": "_capitalized_identifier"
10746            }
10747          ]
10748        }
10749      ]
10750    },
10751    "attribute_id": {
10752      "type": "SEQ",
10753      "members": [
10754        {
10755          "type": "CHOICE",
10756          "members": [
10757            {
10758              "type": "SYMBOL",
10759              "name": "_identifier"
10760            },
10761            {
10762              "type": "SYMBOL",
10763              "name": "_capitalized_identifier"
10764            }
10765          ]
10766        },
10767        {
10768          "type": "REPEAT",
10769          "content": {
10770            "type": "SEQ",
10771            "members": [
10772              {
10773                "type": "STRING",
10774                "value": "."
10775              },
10776              {
10777                "type": "CHOICE",
10778                "members": [
10779                  {
10780                    "type": "SYMBOL",
10781                    "name": "_identifier"
10782                  },
10783                  {
10784                    "type": "SYMBOL",
10785                    "name": "_capitalized_identifier"
10786                  }
10787                ]
10788              }
10789            ]
10790          }
10791        }
10792      ]
10793    }
10794  },
10795  "extras": [
10796    {
10797      "type": "PATTERN",
10798      "value": "\\s"
10799    },
10800    {
10801      "type": "SYMBOL",
10802      "name": "comment"
10803    },
10804    {
10805      "type": "SYMBOL",
10806      "name": "line_number_directive"
10807    },
10808    {
10809      "type": "SYMBOL",
10810      "name": "attribute"
10811    }
10812  ],
10813  "conflicts": [],
10814  "precedences": [],
10815  "externals": [
10816    {
10817      "type": "SYMBOL",
10818      "name": "comment"
10819    },
10820    {
10821      "type": "SYMBOL",
10822      "name": "_left_quoted_string_delimiter"
10823    },
10824    {
10825      "type": "SYMBOL",
10826      "name": "_right_quoted_string_delimiter"
10827    },
10828    {
10829      "type": "STRING",
10830      "value": "\""
10831    },
10832    {
10833      "type": "SYMBOL",
10834      "name": "line_number_directive"
10835    },
10836    {
10837      "type": "SYMBOL",
10838      "name": "_null"
10839    }
10840  ],
10841  "inline": [
10842    "_module_type_ext",
10843    "_module_expression_ext",
10844    "_module_expression_ext",
10845    "_simple_type_ext",
10846    "_simple_expression_ext",
10847    "_expression_ext",
10848    "_quoted_string",
10849    "_label_name",
10850    "_field_name",
10851    "_class_name",
10852    "_class_type_name",
10853    "_method_name",
10854    "_type_constructor",
10855    "_instance_variable_name",
10856    "_module_name",
10857    "_module_type_name",
10858    "_constructor_name"
10859  ],
10860  "supertypes": [
10861    "_structure_item",
10862    "_parameter",
10863    "_module_type",
10864    "_simple_module_expression",
10865    "_module_expression",
10866    "_simple_class_type",
10867    "_class_type",
10868    "_class_field_specification",
10869    "_simple_class_expression",
10870    "_class_expression",
10871    "_class_field",
10872    "_polymorphic_type",
10873    "_simple_type",
10874    "_tuple_type",
10875    "_tag_spec",
10876    "_type",
10877    "_simple_expression",
10878    "_expression",
10879    "_sequence_expression",
10880    "_argument",
10881    "_simple_pattern",
10882    "_pattern",
10883    "_binding_pattern",
10884    "_extension",
10885    "_item_extension",
10886    "_constant",
10887    "_signed_constant",
10888    "_value_name",
10889    "_value_pattern"
10890  ]
10891}
10892
10893