{
"name": "ocaml_interface",
"word": "_identifier",
"rules": {
"compilation_unit": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_signature"
},
{
"type": "BLANK"
}
]
},
"shebang": {
"type": "PATTERN",
"value": "#!.*"
},
"_structure": {
"type": "CHOICE",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "STRING",
"value": ";;"
}
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "STRING",
"value": ";;"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_structure_item_ext"
},
{
"type": "SYMBOL",
"name": "toplevel_directive"
},
{
"type": "SYMBOL",
"name": "expression_item"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "STRING",
"value": ";;"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_structure_item_ext"
},
{
"type": "SYMBOL",
"name": "toplevel_directive"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "STRING",
"value": ";;"
}
},
{
"type": "SYMBOL",
"name": "expression_item"
}
]
}
]
}
},
{
"type": "REPEAT",
"content": {
"type": "STRING",
"value": ";;"
}
}
]
}
]
},
"expression_item": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"_signature": {
"type": "CHOICE",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "STRING",
"value": ";;"
}
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "STRING",
"value": ";;"
}
},
{
"type": "SYMBOL",
"name": "_signature_item_ext"
}
]
}
},
{
"type": "REPEAT",
"content": {
"type": "STRING",
"value": ";;"
}
}
]
}
]
},
"toplevel_directive": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "directive"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_constant"
},
{
"type": "SYMBOL",
"name": "value_path"
},
{
"type": "SYMBOL",
"name": "module_path"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"_structure_item": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "value_definition"
},
{
"type": "SYMBOL",
"name": "external"
},
{
"type": "SYMBOL",
"name": "type_definition"
},
{
"type": "SYMBOL",
"name": "exception_definition"
},
{
"type": "SYMBOL",
"name": "module_definition"
},
{
"type": "SYMBOL",
"name": "module_type_definition"
},
{
"type": "SYMBOL",
"name": "open_module"
},
{
"type": "SYMBOL",
"name": "include_module"
},
{
"type": "SYMBOL",
"name": "class_definition"
},
{
"type": "SYMBOL",
"name": "class_type_definition"
},
{
"type": "SYMBOL",
"name": "floating_attribute"
}
]
},
"_structure_item_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_structure_item"
},
{
"type": "SYMBOL",
"name": "_item_extension"
}
]
},
"value_definition": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "rec"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "let_operator"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "let_binding"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "and"
},
{
"type": "SYMBOL",
"name": "let_and_operator"
}
]
},
{
"type": "SYMBOL",
"name": "let_binding"
}
]
}
}
]
}
]
},
"let_binding": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_binding_pattern_ext"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_parameter"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_polymorphic_typed"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":>"
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
}
},
"_parameter": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_parenthesized_abstract_type"
},
"named": true,
"value": "abstract_type"
}
]
},
"parameter": {
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_simple_pattern_ext"
}
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "~"
},
{
"type": "STRING",
"value": "?"
}
]
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_identifier"
},
"named": true,
"value": "value_pattern"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_label"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": ":"
}
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_simple_pattern_ext"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "~"
},
{
"type": "STRING",
"value": "?"
}
]
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_identifier"
},
"named": true,
"value": "value_pattern"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_typed"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_label"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": ":"
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_pattern_ext"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_typed"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"external": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "external"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_value_name"
},
{
"type": "SYMBOL",
"name": "_polymorphic_typed"
},
{
"type": "STRING",
"value": "="
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "string"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"type_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "nonrec"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_binding"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "and"
},
{
"type": "SYMBOL",
"name": "type_binding"
}
]
}
}
]
}
]
},
"type_binding": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_type_constructor"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_equation"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "private"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variant_declaration"
},
{
"type": "SYMBOL",
"name": "record_declaration"
},
{
"type": "STRING",
"value": ".."
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_constraint"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "type_constructor_path"
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "+="
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "private"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "variant_declaration"
}
}
]
}
]
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"_type_params": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_param"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_param"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type_param"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"_type_param": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "-"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_variable"
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "_"
},
"named": true,
"value": "type_variable"
}
]
}
]
},
"_type_equation": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": ":="
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "private"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
},
"variant_declaration": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "constructor_declaration"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "constructor_declaration"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "constructor_declaration"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "constructor_declaration"
}
]
}
}
]
}
]
},
"constructor_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_constructor_name"
},
{
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
}
]
},
"named": true,
"value": "constructor_name"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "of"
},
{
"type": "SYMBOL",
"name": "_constructor_argument"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "type_variable"
}
},
{
"type": "STRING",
"value": "."
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_constructor_argument"
},
{
"type": "STRING",
"value": "->"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_simple_type_ext"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "constructor_path"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"_constructor_argument": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_simple_type_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "SYMBOL",
"name": "_simple_type_ext"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "record_declaration"
}
]
},
"record_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "field_declaration"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "field_declaration"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"field_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "mutable"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_field_name"
},
{
"type": "SYMBOL",
"name": "_polymorphic_typed"
}
]
},
"type_constraint": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "constraint"
},
{
"type": "SYMBOL",
"name": "_type_ext"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
},
"exception_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "exception"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "constructor_declaration"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"module_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "rec"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_binding"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "and"
},
{
"type": "SYMBOL",
"name": "module_binding"
}
]
}
}
]
}
]
},
"module_binding": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_name"
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "_"
},
"named": true,
"value": "module_name"
}
]
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "module_parameter"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_typed"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": ":="
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_module_expression_ext"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"module_parameter": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_name"
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "_"
},
"named": true,
"value": "module_name"
}
]
}
},
{
"type": "SYMBOL",
"name": "_module_typed"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"module_type_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "STRING",
"value": "type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_module_type_name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": ":="
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_module_type_ext"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"open_module": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "open"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_module_expression_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"include_module": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "include"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_module_expression_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"class_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "class"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "class_binding"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "and"
},
{
"type": "SYMBOL",
"name": "class_binding"
}
]
}
}
]
}
]
},
"class_binding": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "virtual"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_param"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type_param"
}
]
}
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_class_name"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_parameter"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_class_typed"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_class_expression_ext"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
}
},
"class_type_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "class"
},
{
"type": "STRING",
"value": "type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "class_type_binding"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "and"
},
{
"type": "SYMBOL",
"name": "class_type_binding"
}
]
}
}
]
}
]
},
"class_type_binding": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "virtual"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_param"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type_param"
}
]
}
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_class_type_name"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_simple_class_type_ext"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"_signature_item": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "value_specification"
},
{
"type": "SYMBOL",
"name": "external"
},
{
"type": "SYMBOL",
"name": "type_definition"
},
{
"type": "SYMBOL",
"name": "exception_definition"
},
{
"type": "SYMBOL",
"name": "module_definition"
},
{
"type": "SYMBOL",
"name": "module_type_definition"
},
{
"type": "SYMBOL",
"name": "open_module"
},
{
"type": "SYMBOL",
"name": "include_module_type"
},
{
"type": "SYMBOL",
"name": "class_definition"
},
{
"type": "SYMBOL",
"name": "class_type_definition"
},
{
"type": "SYMBOL",
"name": "floating_attribute"
}
]
},
"_signature_item_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_signature_item"
},
{
"type": "SYMBOL",
"name": "_item_extension"
}
]
},
"value_specification": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "val"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_value_name"
},
{
"type": "SYMBOL",
"name": "_polymorphic_typed"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"include_module_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "include"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_module_type_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"_module_typed": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_module_type_ext"
}
]
},
"_module_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "module_type_path"
},
{
"type": "SYMBOL",
"name": "signature"
},
{
"type": "SYMBOL",
"name": "module_type_constraint"
},
{
"type": "SYMBOL",
"name": "module_type_of"
},
{
"type": "SYMBOL",
"name": "functor_type"
},
{
"type": "SYMBOL",
"name": "parenthesized_module_type"
}
]
},
"_module_type_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_type"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"signature": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "sig"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_signature"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "end"
}
]
},
"module_type_constraint": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_module_type_ext"
},
{
"type": "STRING",
"value": "with"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "constrain_type"
},
{
"type": "SYMBOL",
"name": "constrain_module"
},
{
"type": "SYMBOL",
"name": "constrain_module_type"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "and"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "constrain_type"
},
{
"type": "SYMBOL",
"name": "constrain_module"
},
{
"type": "SYMBOL",
"name": "constrain_module_type"
}
]
}
]
}
}
]
}
]
}
},
"constrain_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "type_constructor_path"
},
{
"type": "SYMBOL",
"name": "_type_equation"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_constraint"
}
}
]
},
"constrain_module": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "SYMBOL",
"name": "module_path"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": ":="
}
]
},
{
"type": "SYMBOL",
"name": "extended_module_path"
}
]
},
"constrain_module_type": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "STRING",
"value": "type"
},
{
"type": "SYMBOL",
"name": "module_type_path"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": ":="
}
]
},
{
"type": "SYMBOL",
"name": "_module_type_ext"
}
]
}
},
"module_type_of": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "STRING",
"value": "type"
},
{
"type": "STRING",
"value": "of"
},
{
"type": "SYMBOL",
"name": "_module_expression_ext"
}
]
},
"functor_type": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "functor"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "module_parameter"
}
}
]
},
{
"type": "SYMBOL",
"name": "_module_type_ext"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "_module_type_ext"
}
]
}
},
"parenthesized_module_type": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_module_type_ext"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"_simple_module_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "typed_module_expression"
},
{
"type": "SYMBOL",
"name": "parenthesized_module_expression"
},
{
"type": "SYMBOL",
"name": "packed_module"
}
]
},
"_simple_module_expression_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_module_expression"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"_module_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_module_expression"
},
{
"type": "SYMBOL",
"name": "module_path"
},
{
"type": "SYMBOL",
"name": "structure"
},
{
"type": "SYMBOL",
"name": "functor"
},
{
"type": "SYMBOL",
"name": "module_application"
}
]
},
"_module_expression_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_expression"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"structure": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "struct"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_structure"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "end"
}
]
},
"functor": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "functor"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "module_parameter"
}
},
{
"type": "STRING",
"value": "->"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_module_expression_ext"
}
}
]
}
},
"module_application": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "functor",
"content": {
"type": "SYMBOL",
"name": "_module_expression_ext"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_simple_module_expression_ext"
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
]
},
"typed_module_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_module_expression_ext"
},
{
"type": "SYMBOL",
"name": "_module_typed"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"packed_module": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "val"
},
{
"type": "SYMBOL",
"name": "_expression_ext"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_typed"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":>"
},
{
"type": "SYMBOL",
"name": "_module_type_ext"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"parenthesized_module_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_module_expression_ext"
},
{
"type": "STRING",
"value": ")"
}
]
},
"_class_typed": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_class_type_ext"
}
]
},
"_simple_class_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "class_type_path"
},
{
"type": "SYMBOL",
"name": "instantiated_class_type"
},
{
"type": "SYMBOL",
"name": "class_body_type"
},
{
"type": "SYMBOL",
"name": "let_open_class_type"
}
]
},
"_simple_class_type_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_class_type"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"_class_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_class_type"
},
{
"type": "SYMBOL",
"name": "class_function_type"
}
]
},
"_class_type_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_class_type"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"instantiated_class_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
}
}
]
},
{
"type": "STRING",
"value": "]"
},
{
"type": "SYMBOL",
"name": "class_type_path"
}
]
},
"class_body_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "object"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_type_ext"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_class_field_specification_ext"
},
{
"type": "SYMBOL",
"name": "floating_attribute"
}
]
}
},
{
"type": "STRING",
"value": "end"
}
]
},
"_class_field_specification": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "inheritance_specification"
},
{
"type": "SYMBOL",
"name": "instance_variable_specification"
},
{
"type": "SYMBOL",
"name": "method_specification"
},
{
"type": "SYMBOL",
"name": "type_parameter_constraint"
}
]
},
"_class_field_specification_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_class_field_specification"
},
{
"type": "SYMBOL",
"name": "_item_extension"
}
]
},
"inheritance_specification": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "inherit"
},
{
"type": "SYMBOL",
"name": "_simple_class_type_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"instance_variable_specification": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "val"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "mutable"
},
{
"type": "STRING",
"value": "virtual"
}
]
}
},
{
"type": "SYMBOL",
"name": "_instance_variable_name"
},
{
"type": "SYMBOL",
"name": "_typed"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"method_specification": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "method"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "private"
},
{
"type": "STRING",
"value": "virtual"
}
]
}
},
{
"type": "SYMBOL",
"name": "_method_name"
},
{
"type": "SYMBOL",
"name": "_polymorphic_typed"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"type_parameter_constraint": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "constraint"
},
{
"type": "SYMBOL",
"name": "_type_ext"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_type_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"let_open_class_type": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "SYMBOL",
"name": "open_module"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_simple_class_type_ext"
}
}
]
}
},
"class_function_type": {
"type": "PREC_RIGHT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_label_name"
},
{
"type": "STRING",
"value": ":"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_tuple_type_ext"
},
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "_class_type_ext"
}
]
}
},
"_simple_class_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "class_path"
},
{
"type": "SYMBOL",
"name": "instantiated_class"
},
{
"type": "SYMBOL",
"name": "object_expression"
},
{
"type": "SYMBOL",
"name": "typed_class_expression"
},
{
"type": "SYMBOL",
"name": "parenthesized_class_expression"
}
]
},
"_class_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_class_expression"
},
{
"type": "SYMBOL",
"name": "class_function"
},
{
"type": "SYMBOL",
"name": "class_application"
},
{
"type": "SYMBOL",
"name": "let_class_expression"
},
{
"type": "SYMBOL",
"name": "let_open_class_expression"
}
]
},
"_class_expression_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_class_expression"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"instantiated_class": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
}
}
]
},
{
"type": "STRING",
"value": "]"
},
{
"type": "SYMBOL",
"name": "class_path"
}
]
},
"typed_class_expression": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_class_expression_ext"
},
{
"type": "SYMBOL",
"name": "_class_typed"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"class_function": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "fun"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_parameter"
}
},
{
"type": "STRING",
"value": "->"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_class_expression_ext"
}
}
]
}
},
"class_application": {
"type": "PREC_RIGHT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "class",
"content": {
"type": "SYMBOL",
"name": "_simple_class_expression"
}
},
{
"type": "REPEAT1",
"content": {
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_argument"
}
}
}
]
}
},
"let_class_expression": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "value_definition"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_class_expression_ext"
}
}
]
}
},
"_class_field": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "inheritance_definition"
},
{
"type": "SYMBOL",
"name": "instance_variable_definition"
},
{
"type": "SYMBOL",
"name": "method_definition"
},
{
"type": "SYMBOL",
"name": "type_parameter_constraint"
},
{
"type": "SYMBOL",
"name": "class_initializer"
}
]
},
"_class_field_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_class_field"
},
{
"type": "SYMBOL",
"name": "_item_extension"
}
]
},
"inheritance_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "inherit"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_class_expression_ext"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "_value_pattern"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"instance_variable_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "val"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "mutable"
},
{
"type": "STRING",
"value": "virtual"
}
]
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_instance_variable_name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_typed"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":>"
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"method_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "method"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "private"
},
{
"type": "STRING",
"value": "virtual"
}
]
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_method_name"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_parameter"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_polymorphic_typed"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"class_initializer": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "initializer"
},
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"let_open_class_expression": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "SYMBOL",
"name": "open_module"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_class_expression_ext"
}
}
]
}
},
"parenthesized_class_expression": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_class_expression_ext"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"_typed": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
},
"_simple_typed": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_simple_type_ext"
}
]
},
"_polymorphic_typed": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_polymorphic_type"
}
]
},
"_polymorphic_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "polymorphic_type"
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
},
"polymorphic_type": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "type_variable"
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_abstract_type"
},
"named": true,
"value": "abstract_type"
}
]
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
},
"_abstract_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_type_constructor"
}
}
]
},
"_parenthesized_abstract_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_abstract_type"
},
{
"type": "STRING",
"value": ")"
}
]
},
"_simple_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_variable"
},
{
"type": "SYMBOL",
"name": "type_constructor_path"
},
{
"type": "SYMBOL",
"name": "constructed_type"
},
{
"type": "SYMBOL",
"name": "polymorphic_variant_type"
},
{
"type": "SYMBOL",
"name": "package_type"
},
{
"type": "SYMBOL",
"name": "hash_type"
},
{
"type": "SYMBOL",
"name": "object_type"
},
{
"type": "SYMBOL",
"name": "parenthesized_type"
}
]
},
"_simple_type_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_type"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"_tuple_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_type"
},
{
"type": "SYMBOL",
"name": "tuple_type"
}
]
},
"_tuple_type_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_tuple_type"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_tuple_type"
},
{
"type": "SYMBOL",
"name": "function_type"
},
{
"type": "SYMBOL",
"name": "aliased_type"
}
]
},
"_type_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"function_type": {
"type": "PREC_RIGHT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "typed_label"
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
},
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
}
},
"typed_label": {
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_label_name"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
}
},
"tuple_type": {
"type": "PREC",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_tuple_type_ext"
},
{
"type": "STRING",
"value": "*"
},
{
"type": "SYMBOL",
"name": "_simple_type_ext"
}
]
}
},
"constructed_type": {
"type": "PREC",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_type_ext"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "type_constructor_path"
}
]
}
},
"aliased_type": {
"type": "PREC",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_ext"
},
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "type_variable"
}
]
}
},
"polymorphic_variant_type": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "tag_specification"
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_tag_spec"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "|"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_tag_spec"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "_tag_spec"
}
]
}
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "[>"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_tag_spec"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "_tag_spec"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "[<"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_tag_spec"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "_tag_spec"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ">"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "tag"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
}
]
}
]
},
"_tag_spec": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_ext"
},
{
"type": "SYMBOL",
"name": "tag_specification"
}
]
},
"tag_specification": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "tag"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "of"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
}
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"package_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_module_type_ext"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"object_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "method_type"
},
{
"type": "SYMBOL",
"name": "_simple_type_ext"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "method_type"
},
{
"type": "SYMBOL",
"name": "_simple_type_ext"
}
]
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ".."
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ".."
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ">"
}
]
},
"method_type": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_method_name"
},
{
"type": "SYMBOL",
"name": "_polymorphic_typed"
}
]
},
"hash_type": {
"type": "PREC",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_type_ext"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "#"
},
{
"type": "SYMBOL",
"name": "class_type_path"
}
]
}
},
"parenthesized_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_type_ext"
},
{
"type": "STRING",
"value": ")"
}
]
},
"_simple_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "value_path"
},
{
"type": "SYMBOL",
"name": "_constant"
},
{
"type": "SYMBOL",
"name": "typed_expression"
},
{
"type": "SYMBOL",
"name": "constructor_path"
},
{
"type": "SYMBOL",
"name": "tag"
},
{
"type": "SYMBOL",
"name": "list_expression"
},
{
"type": "SYMBOL",
"name": "array_expression"
},
{
"type": "SYMBOL",
"name": "record_expression"
},
{
"type": "SYMBOL",
"name": "prefix_expression"
},
{
"type": "SYMBOL",
"name": "hash_expression"
},
{
"type": "SYMBOL",
"name": "field_get_expression"
},
{
"type": "SYMBOL",
"name": "array_get_expression"
},
{
"type": "SYMBOL",
"name": "string_get_expression"
},
{
"type": "SYMBOL",
"name": "bigarray_get_expression"
},
{
"type": "SYMBOL",
"name": "coercion_expression"
},
{
"type": "SYMBOL",
"name": "local_open_expression"
},
{
"type": "SYMBOL",
"name": "package_expression"
},
{
"type": "SYMBOL",
"name": "new_expression"
},
{
"type": "SYMBOL",
"name": "object_copy_expression"
},
{
"type": "SYMBOL",
"name": "method_invocation"
},
{
"type": "SYMBOL",
"name": "object_expression"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
},
{
"type": "SYMBOL",
"name": "ocamlyacc_value"
}
]
},
"_simple_expression_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_expression"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_expression"
},
{
"type": "SYMBOL",
"name": "product_expression"
},
{
"type": "SYMBOL",
"name": "cons_expression"
},
{
"type": "SYMBOL",
"name": "application_expression"
},
{
"type": "SYMBOL",
"name": "infix_expression"
},
{
"type": "SYMBOL",
"name": "sign_expression"
},
{
"type": "SYMBOL",
"name": "set_expression"
},
{
"type": "SYMBOL",
"name": "if_expression"
},
{
"type": "SYMBOL",
"name": "while_expression"
},
{
"type": "SYMBOL",
"name": "for_expression"
},
{
"type": "SYMBOL",
"name": "match_expression"
},
{
"type": "SYMBOL",
"name": "function_expression"
},
{
"type": "SYMBOL",
"name": "fun_expression"
},
{
"type": "SYMBOL",
"name": "try_expression"
},
{
"type": "SYMBOL",
"name": "let_expression"
},
{
"type": "SYMBOL",
"name": "assert_expression"
},
{
"type": "SYMBOL",
"name": "lazy_expression"
},
{
"type": "SYMBOL",
"name": "let_module_expression"
},
{
"type": "SYMBOL",
"name": "let_open_expression"
},
{
"type": "SYMBOL",
"name": "let_exception_expression"
}
]
},
"_expression_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"_sequence_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "sequence_expression"
}
]
},
"_sequence_expression_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_sequence_expression"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"typed_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
},
{
"type": "SYMBOL",
"name": "_typed"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"product_expression": {
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
}
]
}
},
"cons_expression": {
"type": "PREC_RIGHT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
},
{
"type": "STRING",
"value": "::"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
}
]
}
},
"list_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "_expression_ext"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"array_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "[|"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "_expression_ext"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "|]"
}
]
},
"record_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_simple_expression_ext"
},
{
"type": "STRING",
"value": "with"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "field_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "field_expression"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"field_expression": {
"type": "PREC",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "field_path"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_typed"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"application_expression": {
"type": "PREC_RIGHT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "SYMBOL",
"name": "_simple_expression_ext"
}
},
{
"type": "REPEAT1",
"content": {
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_argument"
}
}
}
]
}
},
"_argument": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_expression_ext"
},
{
"type": "SYMBOL",
"name": "labeled_argument"
}
]
},
"labeled_argument": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_label"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_label"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": ":"
}
},
{
"type": "SYMBOL",
"name": "_simple_expression_ext"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "~"
},
{
"type": "STRING",
"value": "?"
}
]
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_label_name"
},
{
"type": "SYMBOL",
"name": "_typed"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"prefix_expression": {
"type": "PREC",
"value": 19,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "prefix_operator"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_simple_expression_ext"
}
}
]
}
},
"sign_expression": {
"type": "PREC",
"value": 15,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "sign_operator"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
}
]
}
},
"hash_expression": {
"type": "PREC_LEFT",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_simple_expression_ext"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "hash_operator"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_simple_expression_ext"
}
}
]
}
},
"infix_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_RIGHT",
"value": 14,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "pow_operator"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "mult_operator"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "add_operator"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "concat_operator"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "rel_operator"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "and_operator"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "or_operator"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "assign_operator"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
}
]
}
}
]
},
"field_get_expression": {
"type": "PREC_LEFT",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_simple_expression_ext"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "field_path"
}
]
}
},
"array_get_expression": {
"type": "PREC",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_simple_expression_ext"
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "indexing_operator_path"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"string_get_expression": {
"type": "PREC",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_simple_expression_ext"
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "indexing_operator_path"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"bigarray_get_expression": {
"type": "PREC",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_simple_expression_ext"
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "indexing_operator_path"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"set_expression": {
"type": "PREC_RIGHT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "field_get_expression"
},
{
"type": "SYMBOL",
"name": "array_get_expression"
},
{
"type": "SYMBOL",
"name": "string_get_expression"
},
{
"type": "SYMBOL",
"name": "bigarray_get_expression"
},
{
"type": "SYMBOL",
"name": "_instance_variable_name"
}
]
},
{
"type": "STRING",
"value": "<-"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
}
]
}
},
"if_expression": {
"type": "PREC_RIGHT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
},
{
"type": "SYMBOL",
"name": "then_clause"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "else_clause"
},
{
"type": "BLANK"
}
]
}
]
}
},
"then_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "then"
},
{
"type": "SYMBOL",
"name": "_expression_ext"
}
]
},
"else_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "SYMBOL",
"name": "_expression_ext"
}
]
},
"while_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "while"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
},
{
"type": "SYMBOL",
"name": "do_clause"
}
]
},
"do_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "do"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "done"
}
]
},
"for_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_value_pattern"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "from",
"content": {
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "to"
},
{
"type": "STRING",
"value": "downto"
}
]
},
{
"type": "FIELD",
"name": "to",
"content": {
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
},
{
"type": "SYMBOL",
"name": "do_clause"
}
]
},
"sequence_expression": {
"type": "PREC_RIGHT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression_ext"
}
},
{
"type": "STRING",
"value": ";"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"match_expression": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "match"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "match_operator"
}
]
},
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
},
{
"type": "STRING",
"value": "with"
},
{
"type": "SYMBOL",
"name": "_match_cases"
}
]
}
},
"_match_cases": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "match_case"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "match_case"
}
]
}
}
]
}
]
}
},
"match_case": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_pattern_ext"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "guard"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "->"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
},
{
"type": "SYMBOL",
"name": "refutation_case"
}
]
}
}
]
},
"guard": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "when"
},
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
]
},
"refutation_case": {
"type": "STRING",
"value": "."
},
"function_expression": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "function"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_match_cases"
}
]
}
},
"fun_expression": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "fun"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_parameter"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_typed"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "->"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
}
]
}
},
"try_expression": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "try"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
},
{
"type": "STRING",
"value": "with"
},
{
"type": "SYMBOL",
"name": "_match_cases"
}
]
}
},
"let_expression": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "value_definition"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
]
}
},
"coercion_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_typed"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":>"
},
{
"type": "SYMBOL",
"name": "_type_ext"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"assert_expression": {
"type": "PREC_LEFT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "assert"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_simple_expression_ext"
}
]
}
},
"lazy_expression": {
"type": "PREC_LEFT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "lazy"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_simple_expression_ext"
}
]
}
},
"let_module_expression": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "SYMBOL",
"name": "module_definition"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
}
]
}
},
"let_open_expression": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "SYMBOL",
"name": "open_module"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
}
]
}
},
"local_open_expression": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_path"
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SYMBOL",
"name": "list_expression"
},
{
"type": "SYMBOL",
"name": "array_expression"
},
{
"type": "SYMBOL",
"name": "record_expression"
},
{
"type": "SYMBOL",
"name": "object_copy_expression"
},
{
"type": "SYMBOL",
"name": "package_expression"
}
]
}
]
},
"package_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_module_expression_ext"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_typed"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"let_exception_expression": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "SYMBOL",
"name": "exception_definition"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_sequence_expression_ext"
}
}
]
}
},
"new_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "new"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "class_path"
}
]
},
"object_copy_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{<"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "instance_variable_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "instance_variable_expression"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ">}"
}
]
},
"instance_variable_expression": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_instance_variable_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression_ext"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"method_invocation": {
"type": "PREC_RIGHT",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_simple_expression_ext"
},
{
"type": "STRING",
"value": "#"
},
{
"type": "SYMBOL",
"name": "_method_name"
}
]
}
},
"object_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "object"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_ext"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_typed"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_class_field_ext"
},
{
"type": "SYMBOL",
"name": "floating_attribute"
}
]
}
},
{
"type": "STRING",
"value": "end"
}
]
},
"parenthesized_expression": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "begin"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
},
{
"type": "STRING",
"value": "end"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_sequence_expression_ext"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"ocamlyacc_value": {
"type": "PATTERN",
"value": "\\$[0-9]+"
},
"_simple_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_value_pattern"
},
{
"type": "SYMBOL",
"name": "_signed_constant"
},
{
"type": "SYMBOL",
"name": "typed_pattern"
},
{
"type": "SYMBOL",
"name": "constructor_path"
},
{
"type": "SYMBOL",
"name": "tag"
},
{
"type": "SYMBOL",
"name": "polymorphic_variant_pattern"
},
{
"type": "SYMBOL",
"name": "record_pattern"
},
{
"type": "SYMBOL",
"name": "list_pattern"
},
{
"type": "SYMBOL",
"name": "array_pattern"
},
{
"type": "SYMBOL",
"name": "local_open_pattern"
},
{
"type": "SYMBOL",
"name": "package_pattern"
},
{
"type": "SYMBOL",
"name": "parenthesized_pattern"
}
]
},
"_simple_pattern_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_pattern"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_pattern"
},
{
"type": "SYMBOL",
"name": "alias_pattern"
},
{
"type": "SYMBOL",
"name": "or_pattern"
},
{
"type": "SYMBOL",
"name": "constructor_pattern"
},
{
"type": "SYMBOL",
"name": "tag_pattern"
},
{
"type": "SYMBOL",
"name": "tuple_pattern"
},
{
"type": "SYMBOL",
"name": "cons_pattern"
},
{
"type": "SYMBOL",
"name": "range_pattern"
},
{
"type": "SYMBOL",
"name": "lazy_pattern"
},
{
"type": "SYMBOL",
"name": "exception_pattern"
}
]
},
"_pattern_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"_binding_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_value_name"
},
{
"type": "SYMBOL",
"name": "_signed_constant"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "typed_binding_pattern"
},
"named": true,
"value": "typed_pattern"
},
{
"type": "SYMBOL",
"name": "constructor_path"
},
{
"type": "SYMBOL",
"name": "tag"
},
{
"type": "SYMBOL",
"name": "polymorphic_variant_pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "record_binding_pattern"
},
"named": true,
"value": "record_pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "list_binding_pattern"
},
"named": true,
"value": "list_pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "array_binding_pattern"
},
"named": true,
"value": "array_pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "local_open_binding_pattern"
},
"named": true,
"value": "local_open_pattern"
},
{
"type": "SYMBOL",
"name": "package_pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "parenthesized_binding_pattern"
},
"named": true,
"value": "parenthesized_pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "alias_binding_pattern"
},
"named": true,
"value": "alias_pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "or_binding_pattern"
},
"named": true,
"value": "or_pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constructor_binding_pattern"
},
"named": true,
"value": "constructor_pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "tag_binding_pattern"
},
"named": true,
"value": "tag_pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "tuple_binding_pattern"
},
"named": true,
"value": "tuple_pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "cons_binding_pattern"
},
"named": true,
"value": "cons_pattern"
},
{
"type": "SYMBOL",
"name": "range_pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "lazy_binding_pattern"
},
"named": true,
"value": "lazy_pattern"
}
]
},
"_binding_pattern_ext": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_binding_pattern"
},
{
"type": "SYMBOL",
"name": "_extension"
}
]
},
"alias_pattern": {
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_ext"
},
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "_value_pattern"
}
]
}
},
"alias_binding_pattern": {
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_binding_pattern_ext"
},
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "_value_name"
}
]
}
},
"typed_pattern": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_ext"
},
{
"type": "SYMBOL",
"name": "_typed"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"typed_binding_pattern": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_binding_pattern_ext"
}
},
{
"type": "SYMBOL",
"name": "_typed"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"or_pattern": {
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_ext"
},
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "_pattern_ext"
}
]
}
},
"or_binding_pattern": {
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_binding_pattern_ext"
},
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "_binding_pattern_ext"
}
]
}
},
"constructor_pattern": {
"type": "PREC_RIGHT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "constructor_path"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_parenthesized_abstract_type"
},
"named": true,
"value": "abstract_type"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_pattern_ext"
}
]
}
},
"constructor_binding_pattern": {
"type": "PREC_RIGHT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "constructor_path"
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_binding_pattern_ext"
}
}
]
}
},
"tag_pattern": {
"type": "PREC_RIGHT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "tag"
},
{
"type": "SYMBOL",
"name": "_pattern_ext"
}
]
}
},
"tag_binding_pattern": {
"type": "PREC_RIGHT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "tag"
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_binding_pattern_ext"
}
}
]
}
},
"polymorphic_variant_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "SYMBOL",
"name": "type_constructor_path"
}
]
},
"tuple_pattern": {
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_ext"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_pattern_ext"
}
]
}
},
"tuple_binding_pattern": {
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_binding_pattern_ext"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_binding_pattern_ext"
}
]
}
},
"record_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "field_pattern"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "field_pattern"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "STRING",
"value": "_"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"field_pattern": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "field_path"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_typed"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_pattern_ext"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"record_binding_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "field_binding_pattern"
},
"named": true,
"value": "field_pattern"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "field_binding_pattern"
},
"named": true,
"value": "field_pattern"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "STRING",
"value": "_"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"field_binding_pattern": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "field_path"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_typed"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_binding_pattern_ext"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"list_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "_pattern_ext"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"list_binding_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_binding_pattern_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "_binding_pattern_ext"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"cons_pattern": {
"type": "PREC_RIGHT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_ext"
},
{
"type": "STRING",
"value": "::"
},
{
"type": "SYMBOL",
"name": "_pattern_ext"
}
]
}
},
"cons_binding_pattern": {
"type": "PREC_RIGHT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_binding_pattern_ext"
},
{
"type": "STRING",
"value": "::"
},
{
"type": "SYMBOL",
"name": "_binding_pattern_ext"
}
]
}
},
"array_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "[|"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "_pattern_ext"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "|]"
}
]
}
},
"array_binding_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "[|"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_binding_pattern_ext"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "_binding_pattern_ext"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "|]"
}
]
}
},
"range_pattern": {
"type": "PREC",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_signed_constant"
},
{
"type": "STRING",
"value": ".."
},
{
"type": "SYMBOL",
"name": "_signed_constant"
}
]
}
},
"lazy_pattern": {
"type": "PREC",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "lazy"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_pattern_ext"
}
]
}
},
"lazy_binding_pattern": {
"type": "PREC",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "lazy"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_binding_pattern_ext"
}
]
}
},
"local_open_pattern": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_path"
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_ext"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SYMBOL",
"name": "list_pattern"
},
{
"type": "SYMBOL",
"name": "array_pattern"
},
{
"type": "SYMBOL",
"name": "record_pattern"
}
]
}
]
},
"local_open_binding_pattern": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_path"
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_binding_pattern_ext"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SYMBOL",
"name": "list_binding_pattern"
},
{
"type": "SYMBOL",
"name": "array_binding_pattern"
},
{
"type": "SYMBOL",
"name": "record_binding_pattern"
}
]
}
]
},
"package_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_name"
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "_"
},
"named": true,
"value": "module_name"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_typed"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"parenthesized_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_pattern_ext"
},
{
"type": "STRING",
"value": ")"
}
]
},
"parenthesized_binding_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_binding_pattern_ext"
},
{
"type": "STRING",
"value": ")"
}
]
},
"exception_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "exception"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_attribute"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_pattern_ext"
}
]
},
"attribute": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "\\[@"
},
"named": false,
"value": "[@"
},
{
"type": "SYMBOL",
"name": "attribute_id"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_payload"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"item_attribute": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "[@@"
},
{
"type": "SYMBOL",
"name": "attribute_id"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_payload"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"floating_attribute": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "[@@@"
},
{
"type": "SYMBOL",
"name": "attribute_id"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_payload"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"attribute_payload": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_structure"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_ext"
},
{
"type": "SYMBOL",
"name": "_signature"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "SYMBOL",
"name": "_pattern_ext"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "guard"
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"_extension": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "extension"
},
{
"type": "SYMBOL",
"name": "quoted_extension"
}
]
},
"extension": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "[%"
},
{
"type": "SYMBOL",
"name": "attribute_id"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_payload"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"quoted_extension": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{%"
},
{
"type": "SYMBOL",
"name": "attribute_id"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\s+"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_quoted_string"
},
{
"type": "STRING",
"value": "}"
}
]
},
"_item_extension": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "item_extension"
},
{
"type": "SYMBOL",
"name": "quoted_item_extension"
}
]
},
"item_extension": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "[%%"
},
{
"type": "SYMBOL",
"name": "attribute_id"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_payload"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"quoted_item_extension": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{%%"
},
{
"type": "SYMBOL",
"name": "attribute_id"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\s+"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_quoted_string"
},
{
"type": "STRING",
"value": "}"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "item_attribute"
}
}
]
},
"_attribute": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "%"
},
{
"type": "SYMBOL",
"name": "attribute_id"
}
]
},
"_constant": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "character"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "quoted_string"
},
{
"type": "SYMBOL",
"name": "boolean"
},
{
"type": "SYMBOL",
"name": "unit"
}
]
},
"_signed_constant": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_constant"
},
{
"type": "SYMBOL",
"name": "signed_number"
}
]
},
"number": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[0-9][0-9_]*(\\.[0-9_]*)?([eE][+\\-]?[0-9][0-9_]*)?[g-zG-Z]?"
},
{
"type": "PATTERN",
"value": "0[xX][0-9A-Fa-f][0-9A-Fa-f_]*(\\.[0-9A-Fa-f_]*)?([pP][+\\-]?[0-9][0-9_]*)?[g-zG-Z]?"
},
{
"type": "PATTERN",
"value": "0[oO][0-7][0-7_]*[g-zG-Z]?"
},
{
"type": "PATTERN",
"value": "0[bB][01][01_]*[g-zG-Z]?"
}
]
}
},
"signed_number": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[+-]"
},
{
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[0-9][0-9_]*(\\.[0-9_]*)?([eE][+\\-]?[0-9][0-9_]*)?[g-zG-Z]?"
},
{
"type": "PATTERN",
"value": "0[xX][0-9A-Fa-f][0-9A-Fa-f_]*(\\.[0-9A-Fa-f_]*)?([pP][+\\-]?[0-9][0-9_]*)?[g-zG-Z]?"
},
{
"type": "PATTERN",
"value": "0[oO][0-7][0-7_]*[g-zG-Z]?"
},
{
"type": "PATTERN",
"value": "0[bB][01][01_]*[g-zG-Z]?"
}
]
}
}
]
},
"character": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "SYMBOL",
"name": "character_content"
},
{
"type": "STRING",
"value": "'"
}
]
},
"character_content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\\\\']"
},
{
"type": "SYMBOL",
"name": "_null"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
},
"string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string_content"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "\""
}
]
},
"string_content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "\\s"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "\\[@"
}
},
{
"type": "PATTERN",
"value": "[^\\\\\"%@]+|%|@"
},
{
"type": "SYMBOL",
"name": "_null"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "\\\\u\\{[0-9A-Fa-f]+\\}"
},
"named": true,
"value": "escape_sequence"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "\\\\\\n[\\t ]*"
},
"named": true,
"value": "escape_sequence"
},
{
"type": "SYMBOL",
"name": "conversion_specification"
},
{
"type": "SYMBOL",
"name": "pretty_printing_indication"
}
]
}
},
"quoted_string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SYMBOL",
"name": "_quoted_string"
},
{
"type": "STRING",
"value": "}"
}
]
},
"_quoted_string": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_left_quoted_string_delimiter"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "quoted_string_content"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_right_quoted_string_delimiter"
}
]
},
"quoted_string_content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "\\s"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "\\[@"
}
},
{
"type": "PATTERN",
"value": "[^%@|]+|%|@|\\|"
},
{
"type": "SYMBOL",
"name": "_null"
},
{
"type": "SYMBOL",
"name": "conversion_specification"
},
{
"type": "SYMBOL",
"name": "pretty_printing_indication"
}
]
}
},
"escape_sequence": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\\\[\\\\\"'ntbr ]"
},
{
"type": "PATTERN",
"value": "\\\\[0-9][0-9][0-9]"
},
{
"type": "PATTERN",
"value": "\\\\x[0-9A-Fa-f][0-9A-Fa-f]"
},
{
"type": "PATTERN",
"value": "\\\\o[0-3][0-7][0-7]"
}
]
},
"conversion_specification": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "%"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[\\-0+ #]"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[1-9][0-9]*|\\*"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\.([0-9]*|\\*)"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[diunlLNxXosScCfFeEgGhHbBat!%@,]"
},
{
"type": "PATTERN",
"value": "[lnL][diuxXo]"
}
]
}
]
}
},
"pretty_printing_indication": {
"type": "PATTERN",
"value": "@([\\[\\], ;.{}?]|\\\\n|<[0-9]+>)"
},
"boolean": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
}
]
},
"unit": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "begin"
},
{
"type": "STRING",
"value": "end"
}
]
}
]
},
"prefix_operator": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[#!$%&*+\\-./:<>?@^|~]"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[#!$%&*+\\-./:<=>?@^|~]"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[#!$%&*+\\-./:<=>?@^|~]"
}
}
]
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[~?]"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[#!$%&*+\\-./:<=>?@^|~]"
}
}
]
}
]
}
},
"sign_operator": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[+-]"
},
{
"type": "PATTERN",
"value": "[+-]\\."
}
]
},
"_infix_operator": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "pow_operator"
},
{
"type": "SYMBOL",
"name": "mult_operator"
},
{
"type": "SYMBOL",
"name": "add_operator"
},
{
"type": "SYMBOL",
"name": "concat_operator"
},
{
"type": "SYMBOL",
"name": "rel_operator"
},
{
"type": "SYMBOL",
"name": "and_operator"
},
{
"type": "SYMBOL",
"name": "or_operator"
},
{
"type": "SYMBOL",
"name": "assign_operator"
}
]
},
"hash_operator": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[#!$%&*+\\-./:<=>?@^|~]"
}
}
]
}
},
"pow_operator": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "lsl"
},
{
"type": "STRING",
"value": "lsr"
},
{
"type": "STRING",
"value": "asr"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "**"
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
}
}
]
}
]
}
},
"mult_operator": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "mod"
},
{
"type": "STRING",
"value": "land"
},
{
"type": "STRING",
"value": "lor"
},
{
"type": "STRING",
"value": "lxor"
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[*/%]"
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
}
}
]
}
]
}
},
"add_operator": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[+-]"
},
{
"type": "PATTERN",
"value": "[+-]\\."
},
{
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=?@^|~]"
}
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
}
}
]
}
]
}
]
}
]
}
}
]
},
"concat_operator": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[@^]"
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
}
}
]
}
},
"rel_operator": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[=>$]"
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[!$%&*+./:<=>?@^|~]"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
}
}
]
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[!$%*+\\-./:<=>?@^|~]"
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
}
}
]
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^~]"
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
}
}
]
}
]
}
]
},
{
"type": "STRING",
"value": "!="
}
]
}
},
"and_operator": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "STRING",
"value": "&&"
}
]
}
},
"or_operator": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "or"
},
{
"type": "STRING",
"value": "||"
}
]
}
},
"assign_operator": {
"type": "PATTERN",
"value": ":="
},
"indexing_operator": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[!$%&*+\\-/:=>?@^|]"
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
}
}
]
}
},
"indexing_operator_path": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "indexing_operator"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_path"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "indexing_operator"
}
]
}
]
},
"let_operator": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "PATTERN",
"value": "[$&*+\\-/<=>@^|]"
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
}
}
]
}
},
"let_and_operator": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "and"
},
{
"type": "PATTERN",
"value": "[$&*+\\-/<=>@^|]"
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
}
}
]
}
},
"match_operator": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "match"
},
{
"type": "PATTERN",
"value": "[$&*+\\-/<=>@^|]"
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[!$%&*+\\-./:<=>?@^|~]"
}
}
]
}
},
"_value_name": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_identifier"
},
"named": true,
"value": "value_name"
},
{
"type": "SYMBOL",
"name": "parenthesized_operator"
}
]
},
"_value_pattern": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_identifier"
},
"named": true,
"value": "value_pattern"
},
{
"type": "SYMBOL",
"name": "parenthesized_operator"
}
]
},
"parenthesized_operator": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "prefix_operator"
},
{
"type": "SYMBOL",
"name": "_infix_operator"
},
{
"type": "SYMBOL",
"name": "hash_operator"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "indexing_operator"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "STRING",
"value": ".."
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "STRING",
"value": ".."
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "STRING",
"value": ".."
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "<-"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "let_operator"
},
{
"type": "SYMBOL",
"name": "let_and_operator"
},
{
"type": "SYMBOL",
"name": "match_operator"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"value_path": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_value_name"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_path"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_value_name"
}
]
}
]
},
"module_path": {
"type": "PREC",
"value": 1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_name"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_path"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_module_name"
}
]
}
]
}
},
"extended_module_path": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_name"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "extended_module_path"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_module_name"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "extended_module_path"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "extended_module_path"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
]
},
"module_type_path": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_type_name"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "extended_module_path"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_module_type_name"
}
]
}
]
},
"field_path": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_field_name"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_path"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_field_name"
}
]
}
]
},
"constructor_path": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_constructor_name"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_path"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_constructor_name"
}
]
}
]
},
"type_constructor_path": {
"type": "PREC",
"value": 1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_constructor"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "extended_module_path"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_type_constructor"
}
]
}
]
}
},
"class_path": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_class_name"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_path"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_class_name"
}
]
}
]
},
"class_type_path": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_class_type_name"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "extended_module_path"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_class_type_name"
}
]
}
]
},
"_label_name": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_identifier"
},
"named": true,
"value": "label_name"
},
"_field_name": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_identifier"
},
"named": true,
"value": "field_name"
},
"_class_name": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_identifier"
},
"named": true,
"value": "class_name"
},
"_class_type_name": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_identifier"
},
"named": true,
"value": "class_type_name"
},
"_method_name": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_identifier"
},
"named": true,
"value": "method_name"
},
"_type_constructor": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_identifier"
},
"named": true,
"value": "type_constructor"
},
"_instance_variable_name": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_identifier"
},
"named": true,
"value": "instance_variable_name"
},
"_module_name": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_capitalized_identifier"
},
"named": true,
"value": "module_name"
},
"_module_type_name": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_capitalized_identifier"
},
{
"type": "SYMBOL",
"name": "_identifier"
}
]
},
"named": true,
"value": "module_type_name"
},
"_constructor_name": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_capitalized_identifier"
},
"named": true,
"value": "constructor_name"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "::"
},
"named": true,
"value": "constructor_name"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"_identifier": {
"type": "PATTERN",
"value": "[a-z_][a-zA-Z0-9_']*"
},
"_capitalized_identifier": {
"type": "PATTERN",
"value": "[A-Z][a-zA-Z0-9_']*"
},
"_label": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "~"
},
{
"type": "STRING",
"value": "?"
}
]
},
{
"type": "SYMBOL",
"name": "_label_name"
}
]
},
"directive": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "#"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_identifier"
},
{
"type": "SYMBOL",
"name": "_capitalized_identifier"
}
]
}
]
},
"type_variable": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "'"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_identifier"
},
{
"type": "SYMBOL",
"name": "_capitalized_identifier"
}
]
}
]
},
"tag": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "`"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_identifier"
},
{
"type": "SYMBOL",
"name": "_capitalized_identifier"
}
]
}
]
},
"attribute_id": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_identifier"
},
{
"type": "SYMBOL",
"name": "_capitalized_identifier"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "\\."
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_identifier"
},
{
"type": "SYMBOL",
"name": "_capitalized_identifier"
}
]
}
]
}
}
]
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s"
},
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "line_number_directive"
},
{
"type": "SYMBOL",
"name": "attribute"
}
],
"conflicts": [],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "_left_quoted_string_delimiter"
},
{
"type": "SYMBOL",
"name": "_right_quoted_string_delimiter"
},
{
"type": "STRING",
"value": "\""
},
{
"type": "SYMBOL",
"name": "line_number_directive"
},
{
"type": "SYMBOL",
"name": "_null"
}
],
"inline": [
"_module_type_ext",
"_module_expression_ext",
"_module_expression_ext",
"_simple_type_ext",
"_simple_expression_ext",
"_expression_ext",
"_quoted_string",
"_label_name",
"_field_name",
"_class_name",
"_class_type_name",
"_method_name",
"_type_constructor",
"_instance_variable_name",
"_module_name",
"_module_type_name",
"_constructor_name"
],
"supertypes": [
"_structure_item",
"_parameter",
"_module_type",
"_simple_module_expression",
"_module_expression",
"_simple_class_type",
"_class_type",
"_class_field_specification",
"_simple_class_expression",
"_class_expression",
"_class_field",
"_polymorphic_type",
"_simple_type",
"_tuple_type",
"_tag_spec",
"_type",
"_simple_expression",
"_expression",
"_sequence_expression",
"_argument",
"_simple_pattern",
"_pattern",
"_binding_pattern",
"_extension",
"_item_extension",
"_constant",
"_signed_constant",
"_infix_operator",
"_value_name",
"_value_pattern"
]
}