{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "rescript",
"rules": {
"source_file": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_statement_delimeter"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
}
]
},
"_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "statement"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_statement_delimeter"
}
}
]
},
"_statement_delimeter": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_newline_and_comment"
},
"named": true,
"value": "comment"
}
]
},
"_one_or_more_statements": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "SYMBOL",
"name": "statement"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_statement_delimeter"
},
{
"type": "BLANK"
}
]
}
]
},
"statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression_statement"
},
{
"type": "SYMBOL",
"name": "declaration"
},
{
"type": "SYMBOL",
"name": "open_statement"
},
{
"type": "SYMBOL",
"name": "include_statement"
}
]
},
"block": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_one_or_more_statements"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"open_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "open"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "module_expression"
}
]
},
"include_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "include"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_definition"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_module_structure"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
]
},
"declaration": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_declaration"
},
{
"type": "SYMBOL",
"name": "let_declaration"
},
{
"type": "SYMBOL",
"name": "module_declaration"
},
{
"type": "SYMBOL",
"name": "external_declaration"
},
{
"type": "SYMBOL",
"name": "exception_declaration"
}
]
},
"module_binding": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "module_identifier"
},
{
"type": "SYMBOL",
"name": "type_identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "signature",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "block"
},
{
"type": "SYMBOL",
"name": "module_expression"
},
{
"type": "SYMBOL",
"name": "functor"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "await"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "definition",
"content": {
"type": "SYMBOL",
"name": "_module_definition"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"module_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "rec"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"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_structure": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_module_definition"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "module_type_annotation"
},
{
"type": "BLANK"
}
]
}
]
},
"_module_definition": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "block"
},
{
"type": "SYMBOL",
"name": "module_expression"
},
{
"type": "SYMBOL",
"name": "functor"
},
{
"type": "SYMBOL",
"name": "extension_expression"
}
]
},
"module_unpack": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "unpack"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "value_identifier"
},
{
"type": "SYMBOL",
"name": "value_identifier_path"
},
{
"type": "SYMBOL",
"name": "member_expression"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "module_type_annotation"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "call_expression"
},
{
"type": "SYMBOL",
"name": "extension_expression"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"functor": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "functor_parameters"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "return_module_type",
"content": {
"type": "SYMBOL",
"name": "module_type_annotation"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_module_definition"
}
}
]
},
"functor_parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "functor_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "functor_parameter"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"functor_parameter": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "module_type_annotation"
},
{
"type": "BLANK"
}
]
}
]
},
"module_type_annotation": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "module_expression"
},
{
"type": "SYMBOL",
"name": "block"
}
]
}
]
},
"external_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "external"
},
{
"type": "SYMBOL",
"name": "value_identifier"
},
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "string"
}
]
},
"exception_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "exception"
},
{
"type": "SYMBOL",
"name": "variant_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variant_parameters"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variant_identifier"
},
{
"type": "SYMBOL",
"name": "nested_variant_identifier"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"type_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "export"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "type"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "rec"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_binding"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": "and"
}
]
},
{
"type": "SYMBOL",
"name": "type_binding"
}
]
}
}
]
}
]
},
"type_binding": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_identifier"
},
{
"type": "SYMBOL",
"name": "type_identifier_path"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_parameters"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_non_function_inline_type"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "+="
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "private"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_type"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_constraint"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"type_parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "-"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "type_identifier"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "-"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "type_identifier"
}
]
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ">"
}
]
},
"type_annotation": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_inline_type"
}
]
},
"_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_inline_type"
},
{
"type": "SYMBOL",
"name": "variant_type"
},
{
"type": "SYMBOL",
"name": "record_type"
},
{
"type": "SYMBOL",
"name": "as_aliasing_type"
}
]
},
"_inline_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_non_function_inline_type"
},
{
"type": "SYMBOL",
"name": "function_type"
}
]
},
"_non_function_inline_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_identifier"
},
{
"type": "SYMBOL",
"name": "tuple_type"
},
{
"type": "SYMBOL",
"name": "polyvar_type"
},
{
"type": "SYMBOL",
"name": "object_type"
},
{
"type": "SYMBOL",
"name": "generic_type"
},
{
"type": "SYMBOL",
"name": "unit_type"
},
{
"type": "SYMBOL",
"name": "module_pack"
},
{
"type": "SYMBOL",
"name": "unit"
},
{
"type": "SYMBOL",
"name": "polymorphic_type"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_as_aliasing_non_function_inline_type"
},
"named": true,
"value": "as_aliasing_type"
}
]
},
"polymorphic_type": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "type_identifier"
}
},
{
"type": "SYMBOL",
"name": "abstract_type"
}
]
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_inline_type"
}
]
},
"type_constraint": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "constraint"
},
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_type"
}
]
},
"tuple_type": {
"type": "PREC_DYNAMIC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"variant_type": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "variant_declaration"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "variant_declaration"
}
]
}
}
]
}
]
}
},
"variant_declaration": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "variant_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variant_parameters"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "BLANK"
}
]
}
]
}
},
"variant_parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"polyvar_type": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "STRING",
"value": "[>"
},
{
"type": "STRING",
"value": "[<"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "polyvar_declaration"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "polyvar_declaration"
}
]
}
}
]
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"polyvar_declaration": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "polyvar_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "polyvar_parameters"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_inline_type"
}
]
}
},
"polyvar_parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"record_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_record_type_member"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_record_type_member"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"record_type_field": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "mutable"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "value_identifier"
},
"named": true,
"value": "property_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "type_annotation"
}
]
},
"type_spread": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "..."
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_identifier"
},
{
"type": "SYMBOL",
"name": "generic_type"
},
{
"type": "SYMBOL",
"name": "type_identifier_path"
}
]
}
]
},
"_record_type_member": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "record_type_field"
},
{
"type": "SYMBOL",
"name": "type_spread"
}
]
},
"object_type": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_object_type_member"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_object_type_member"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_object_type_member"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_object_type_member"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ".."
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_object_type_member"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_object_type_member"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"_object_type_member": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "object_type_field"
},
"named": true,
"value": "field"
},
{
"type": "SYMBOL",
"name": "type_spread"
}
]
},
"object_type_field": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "string"
},
"named": true,
"value": "property_identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
]
},
"generic_type": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_identifier"
},
{
"type": "SYMBOL",
"name": "type_arguments"
}
]
}
},
"type_arguments": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ">"
}
]
},
"function_type": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "function_type_parameters"
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
},
"function_type_parameters": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_non_function_inline_type"
},
{
"type": "SYMBOL",
"name": "_function_type_parameter_list"
}
]
},
"_function_type_parameter_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "function_type_parameter"
},
"named": true,
"value": "parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "function_type_parameter"
},
"named": true,
"value": "parameter"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"function_type_parameter": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "uncurry"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "uncurry"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
},
{
"type": "SYMBOL",
"name": "labeled_parameter"
}
]
}
]
},
"let_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "export"
},
{
"type": "STRING",
"value": "let"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "rec"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "let_binding"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": "and"
}
]
},
{
"type": "SYMBOL",
"name": "let_binding"
}
]
}
}
]
}
]
},
"let_binding": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_pattern"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
]
}
]
},
"expression_statement": {
"type": "SYMBOL",
"name": "expression"
},
"expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "primary_expression"
},
{
"type": "SYMBOL",
"name": "_jsx_element"
},
{
"type": "SYMBOL",
"name": "jsx_fragment"
},
{
"type": "SYMBOL",
"name": "unary_expression"
},
{
"type": "SYMBOL",
"name": "binary_expression"
},
{
"type": "SYMBOL",
"name": "coercion_expression"
},
{
"type": "SYMBOL",
"name": "ternary_expression"
},
{
"type": "SYMBOL",
"name": "for_expression"
},
{
"type": "SYMBOL",
"name": "while_expression"
},
{
"type": "SYMBOL",
"name": "mutation_expression"
},
{
"type": "SYMBOL",
"name": "await_expression"
},
{
"type": "SYMBOL",
"name": "block"
},
{
"type": "SYMBOL",
"name": "assert_expression"
}
]
},
"primary_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parenthesized_expression"
},
{
"type": "SYMBOL",
"name": "value_identifier_path"
},
{
"type": "SYMBOL",
"name": "value_identifier"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "template_string"
},
{
"type": "SYMBOL",
"name": "character"
},
{
"type": "SYMBOL",
"name": "true"
},
{
"type": "SYMBOL",
"name": "false"
},
{
"type": "SYMBOL",
"name": "function"
},
{
"type": "SYMBOL",
"name": "unit"
},
{
"type": "SYMBOL",
"name": "record"
},
{
"type": "SYMBOL",
"name": "object"
},
{
"type": "SYMBOL",
"name": "tuple"
},
{
"type": "SYMBOL",
"name": "array"
},
{
"type": "SYMBOL",
"name": "list"
},
{
"type": "SYMBOL",
"name": "variant"
},
{
"type": "SYMBOL",
"name": "polyvar"
},
{
"type": "SYMBOL",
"name": "if_expression"
},
{
"type": "SYMBOL",
"name": "switch_expression"
},
{
"type": "SYMBOL",
"name": "try_expression"
},
{
"type": "SYMBOL",
"name": "call_expression"
},
{
"type": "SYMBOL",
"name": "pipe_expression"
},
{
"type": "SYMBOL",
"name": "subscript_expression"
},
{
"type": "SYMBOL",
"name": "member_expression"
},
{
"type": "SYMBOL",
"name": "module_pack"
},
{
"type": "SYMBOL",
"name": "extension_expression"
},
{
"type": "SYMBOL",
"name": "lazy_expression"
},
{
"type": "SYMBOL",
"name": "_jsx_element"
}
]
},
"parenthesized_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"value_identifier_path": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_primary_expression"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "value_identifier"
}
]
},
"function": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "async"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "parameter",
"content": {
"type": "SYMBOL",
"name": "value_identifier"
}
},
{
"type": "SYMBOL",
"name": "_definition_signature"
}
]
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
"record": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_record_single_field"
},
{
"type": "SYMBOL",
"name": "_record_single_pun_field"
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_record_element"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_record_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_record_element"
}
]
}
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_record_element": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "spread_element"
},
{
"type": "SYMBOL",
"name": "record_field"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_record_pun_field"
},
"named": true,
"value": "record_field"
}
]
},
"record_field": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_record_field_name"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"_record_pun_field": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_record_field_name"
}
]
},
"_record_single_field": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "record_field"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
"_record_single_pun_field": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "SYMBOL",
"name": "_record_field_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
"_record_field_name": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "value_identifier"
},
"named": true,
"value": "property_identifier"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "value_identifier_path"
},
"named": true,
"value": "property_identifier"
}
]
},
"object": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_object_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_object_field"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_object_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_object_field"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ".."
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_object_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_object_field"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_object_field": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "object_field"
},
"named": true,
"value": "field"
},
"object_field": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "string"
},
"named": true,
"value": "property_identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"tuple": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"array": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"list": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_list_constructor"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_list_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_list_element"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_list_element": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "spread_element"
}
]
},
"if_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "block"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "else_if_clause"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "else_clause"
},
{
"type": "BLANK"
}
]
}
]
},
"else_if_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "STRING",
"value": "if"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"else_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"switch_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "switch"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "switch_match"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"switch_match": {
"type": "PREC_DYNAMIC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_pattern"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "guard"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_one_or_more_statements"
},
"named": true,
"value": "sequence_expression"
}
}
]
}
},
"guard": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "STRING",
"value": "when"
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"polyvar_type_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "STRING",
"value": "..."
},
{
"type": "SYMBOL",
"name": "_type_identifier"
}
]
},
"try_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "try"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "catch"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "switch_match"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"as_aliasing": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "BLANK"
}
]
}
]
}
},
"as_aliasing_type": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "type_identifier"
}
]
},
"_as_aliasing_non_function_inline_type": {
"type": "PREC",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_non_function_inline_type"
},
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "type_identifier"
}
]
}
},
"assert_expression": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "assert"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
"call_expression": {
"type": "PREC",
"value": "call",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "SYMBOL",
"name": "primary_expression"
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "call_arguments"
},
"named": true,
"value": "arguments"
}
}
]
}
},
"pipe_expression": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "primary_expression"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "STRING",
"value": "|>"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "primary_expression"
},
{
"type": "SYMBOL",
"name": "block"
}
]
}
]
}
},
"module_pack": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_structure"
},
{
"type": "SYMBOL",
"name": "type_identifier_path"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"call_arguments": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "uncurry"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_call_argument"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_call_argument"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "partial_application_spread"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_call_argument": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "labeled_argument"
}
]
},
"partial_application_spread": {
"type": "STRING",
"value": "..."
},
"labeled_argument": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "~"
},
{
"type": "FIELD",
"name": "label",
"content": {
"type": "SYMBOL",
"name": "value_identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_annotation"
}
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"_definition_signature": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "formal_parameters"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "return_type",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_return_type_annotation"
},
"named": true,
"value": "type_annotation"
}
},
{
"type": "BLANK"
}
]
}
]
},
"_return_type_annotation": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_non_function_inline_type"
}
]
},
"formal_parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "parameter"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"parameter": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "uncurry"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "labeled_parameter"
},
{
"type": "SYMBOL",
"name": "unit"
},
{
"type": "SYMBOL",
"name": "abstract_type"
}
]
}
]
},
"labeled_parameter": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "~"
},
{
"type": "SYMBOL",
"name": "value_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "as_aliasing"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "default_value",
"content": {
"type": "SYMBOL",
"name": "_labeled_parameter_default_value"
}
},
{
"type": "BLANK"
}
]
}
]
},
"abstract_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "type_identifier"
}
}
]
},
"_labeled_parameter_default_value": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
]
},
"_pattern": {
"type": "PREC_DYNAMIC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "value_identifier"
},
{
"type": "SYMBOL",
"name": "_literal_pattern"
},
{
"type": "SYMBOL",
"name": "_destructuring_pattern"
},
{
"type": "SYMBOL",
"name": "polyvar_type_pattern"
},
{
"type": "SYMBOL",
"name": "unit"
},
{
"type": "SYMBOL",
"name": "module_pack"
},
{
"type": "SYMBOL",
"name": "lazy_pattern"
},
{
"type": "SYMBOL",
"name": "parenthesized_pattern"
},
{
"type": "SYMBOL",
"name": "or_pattern"
},
{
"type": "SYMBOL",
"name": "range_pattern"
},
{
"type": "SYMBOL",
"name": "exception_pattern"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "as_aliasing"
},
{
"type": "BLANK"
}
]
}
]
}
},
"parenthesized_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"range_pattern": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_literal_pattern"
},
{
"type": "STRING",
"value": ".."
},
{
"type": "SYMBOL",
"name": "_literal_pattern"
}
]
},
"or_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
}
},
"exception_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "exception"
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
},
"_destructuring_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variant_pattern"
},
{
"type": "SYMBOL",
"name": "polyvar_pattern"
},
{
"type": "SYMBOL",
"name": "record_pattern"
},
{
"type": "SYMBOL",
"name": "tuple_pattern"
},
{
"type": "SYMBOL",
"name": "array_pattern"
},
{
"type": "SYMBOL",
"name": "list_pattern"
}
]
},
"_literal_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "template_string"
},
{
"type": "SYMBOL",
"name": "character"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "true"
},
{
"type": "SYMBOL",
"name": "false"
}
]
},
"variant_pattern": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variant_identifier"
},
{
"type": "SYMBOL",
"name": "nested_variant_identifier"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_variant_pattern_parameters"
},
"named": true,
"value": "formal_parameters"
},
{
"type": "BLANK"
}
]
}
]
},
"_variant_pattern_parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_variant_pattern_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_variant_pattern_parameter"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_variant_pattern_parameter": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "BLANK"
}
]
}
]
},
"polyvar_pattern": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "polyvar_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_variant_pattern_parameters"
},
"named": true,
"value": "formal_parameters"
},
{
"type": "BLANK"
}
]
}
]
},
"record_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "value_identifier"
},
{
"type": "SYMBOL",
"name": "value_identifier_path"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "value_identifier"
},
{
"type": "SYMBOL",
"name": "value_identifier_path"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"tuple_item_pattern": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "BLANK"
}
]
}
]
},
"tuple_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "tuple_item_pattern"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "tuple_item_pattern"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "tuple_item_pattern"
}
]
}
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"array_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_collection_element_pattern"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_collection_element_pattern"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"list_pattern": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_list_constructor"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_collection_element_pattern"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_collection_element_pattern"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_collection_element_pattern": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "SYMBOL",
"name": "spread_pattern"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "as_aliasing"
},
{
"type": "BLANK"
}
]
}
]
},
"spread_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "..."
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "value_identifier"
},
{
"type": "SYMBOL",
"name": "list_pattern"
},
{
"type": "SYMBOL",
"name": "array_pattern"
}
]
}
]
},
"lazy_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "lazy"
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
},
"_jsx_element": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "jsx_element"
},
{
"type": "SYMBOL",
"name": "jsx_self_closing_element"
}
]
},
"jsx_element": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "open_tag",
"content": {
"type": "SYMBOL",
"name": "jsx_opening_element"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_jsx_child"
}
},
{
"type": "FIELD",
"name": "close_tag",
"content": {
"type": "SYMBOL",
"name": "jsx_closing_element"
}
}
]
},
"jsx_fragment": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": ">"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_jsx_child"
}
},
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "STRING",
"value": ">"
}
]
},
"jsx_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_one_or_more_statements"
},
{
"type": "SYMBOL",
"name": "spread_element"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_jsx_child": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "value_identifier"
},
{
"type": "SYMBOL",
"name": "value_identifier_path"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "template_string"
},
{
"type": "SYMBOL",
"name": "character"
},
{
"type": "SYMBOL",
"name": "_jsx_element"
},
{
"type": "SYMBOL",
"name": "jsx_fragment"
},
{
"type": "SYMBOL",
"name": "block"
},
{
"type": "SYMBOL",
"name": "spread_element"
},
{
"type": "SYMBOL",
"name": "member_expression"
}
]
},
"jsx_opening_element": {
"type": "PREC_DYNAMIC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_jsx_element_name"
}
},
{
"type": "REPEAT",
"content": {
"type": "FIELD",
"name": "attribute",
"content": {
"type": "SYMBOL",
"name": "_jsx_attribute"
}
}
},
{
"type": "STRING",
"value": ">"
}
]
}
},
"_jsx_identifier": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "value_identifier"
},
{
"type": "SYMBOL",
"name": "module_identifier"
}
]
},
"named": true,
"value": "jsx_identifier"
},
"nested_jsx_identifier": {
"type": "PREC",
"value": "member",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_jsx_identifier"
},
{
"type": "SYMBOL",
"name": "nested_jsx_identifier"
}
]
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_jsx_identifier"
}
]
}
},
"_jsx_element_name": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_jsx_identifier"
},
{
"type": "SYMBOL",
"name": "nested_jsx_identifier"
}
]
},
"jsx_closing_element": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_jsx_element_name"
}
},
{
"type": "STRING",
"value": ">"
}
]
},
"jsx_self_closing_element": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_jsx_element_name"
}
},
{
"type": "REPEAT",
"content": {
"type": "FIELD",
"name": "attribute",
"content": {
"type": "SYMBOL",
"name": "_jsx_attribute"
}
}
},
{
"type": "STRING",
"value": "/"
},
{
"type": "STRING",
"value": ">"
}
]
},
"_jsx_attribute_name": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "value_identifier"
},
"named": true,
"value": "property_identifier"
},
"_jsx_attribute": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "jsx_attribute"
},
{
"type": "SYMBOL",
"name": "jsx_expression"
}
]
},
"jsx_attribute": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_jsx_attribute_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_jsx_attribute_value"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"_jsx_attribute_value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "primary_expression"
},
{
"type": "SYMBOL",
"name": "jsx_expression"
}
]
},
"mutation_expression": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_mutation_lvalue"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": ":="
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"_mutation_lvalue": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "value_identifier"
},
{
"type": "SYMBOL",
"name": "member_expression"
},
{
"type": "SYMBOL",
"name": "subscript_expression"
}
]
},
"await_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "await"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"decorator": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_decorator_inline"
},
"named": true,
"value": "decorator_identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_decorator"
},
"named": true,
"value": "decorator_identifier"
},
{
"type": "SYMBOL",
"name": "decorator_arguments"
}
]
}
]
},
"decorator_arguments": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "type_annotation"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"subscript_expression": {
"type": "PREC_RIGHT",
"value": "member",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "object",
"content": {
"type": "SYMBOL",
"name": "primary_expression"
}
},
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "index",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"member_expression": {
"type": "PREC",
"value": "member",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "record",
"content": {
"type": "SYMBOL",
"name": "primary_expression"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "module",
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_identifier"
},
{
"type": "STRING",
"value": "."
}
]
}
},
{
"type": "SYMBOL",
"name": "module_identifier"
}
]
}
},
{
"type": "STRING",
"value": "."
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "property",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "value_identifier"
},
"named": true,
"value": "property_identifier"
}
}
]
}
},
"spread_element": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "..."
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"ternary_expression": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": "?"
},
{
"type": "FIELD",
"name": "consequence",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
"for_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "SYMBOL",
"name": "value_identifier"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "to"
},
{
"type": "STRING",
"value": "downto"
}
]
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"while_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "while"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"lazy_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "lazy"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"binary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": "binary_and",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "&&"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_or",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "||"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_plus",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "++"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_plus",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "+"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_plus",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "+."
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_plus",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "-"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_plus",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "-."
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_times",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "*"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_times",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "*."
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_pow",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "**"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_times",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "/"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_times",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "/."
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_relation",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "<"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_relation",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "<="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_relation",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "=="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_relation",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "==="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_relation",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "!="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_relation",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "!=="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_relation",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": ">="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "binary_relation",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": ">"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
}
]
},
"coercion_expression": {
"type": "PREC_LEFT",
"value": "coercion_relation",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": ":>"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_type_identifier"
}
}
]
}
},
"unary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": "unary_not",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "!"
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "unary_not",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "-"
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "unary_not",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "-."
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "unary_not",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "+"
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": "unary_not",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "+."
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
}
]
},
"extension_expression": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "STRING",
"value": "%"
}
},
{
"type": "SYMBOL",
"name": "extension_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_extension_expression_payload"
},
{
"type": "BLANK"
}
]
}
]
}
},
"_extension_expression_payload": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_one_or_more_statements"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"variant": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variant_identifier"
},
{
"type": "SYMBOL",
"name": "nested_variant_identifier"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "variant_arguments"
},
"named": true,
"value": "arguments"
},
{
"type": "BLANK"
}
]
}
]
}
},
"nested_variant_identifier": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_primary_expression"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "variant_identifier"
}
]
},
"variant_arguments": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "BLANK"
}
]
}
]
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"polyvar": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "polyvar_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "variant_arguments"
},
"named": true,
"value": "arguments"
},
{
"type": "BLANK"
}
]
}
]
}
},
"_type_identifier": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_identifier"
},
{
"type": "SYMBOL",
"name": "type_identifier_path"
},
{
"type": "STRING",
"value": ".."
}
]
},
"type_identifier_path": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_primary_expression"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "type_identifier"
}
]
},
"module_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "module_primary_expression"
},
{
"type": "SYMBOL",
"name": "module_type_of"
},
{
"type": "SYMBOL",
"name": "module_type_constraint"
}
]
},
"module_primary_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parenthesized_module_expression"
},
{
"type": "SYMBOL",
"name": "module_identifier"
},
{
"type": "SYMBOL",
"name": "module_identifier_path"
},
{
"type": "SYMBOL",
"name": "functor_use"
},
{
"type": "SYMBOL",
"name": "module_unpack"
}
]
},
"parenthesized_module_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "module_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "module_type_annotation"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"module_identifier_path": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "module_identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_primary_expression"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "module_identifier"
}
]
}
]
},
"module_type_of": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "STRING",
"value": "type"
},
{
"type": "STRING",
"value": "of"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "module_expression"
},
{
"type": "SYMBOL",
"name": "block"
}
]
}
]
}
},
"_module_type_constraint_with": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "constrain_module"
},
{
"type": "SYMBOL",
"name": "constrain_type"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "and"
},
{
"type": "STRING",
"value": "with"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "constrain_module"
},
{
"type": "SYMBOL",
"name": "constrain_type"
}
]
}
]
}
}
]
}
]
}
},
"module_type_constraint": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_expression"
},
{
"type": "SYMBOL",
"name": "_module_type_constraint_with"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "module_expression"
},
{
"type": "SYMBOL",
"name": "_module_type_constraint_with"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "SYMBOL",
"name": "_module_type_constraint_with"
}
]
}
]
}
},
"constrain_module": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "SYMBOL",
"name": "module_primary_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": ":="
}
]
},
{
"type": "SYMBOL",
"name": "module_primary_expression"
}
]
},
"constrain_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": ":="
}
]
},
{
"type": "SYMBOL",
"name": "_type"
}
]
},
"functor_use": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "module_primary_expression"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "functor_arguments"
},
"named": true,
"value": "arguments"
}
]
},
"functor_arguments": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_functor_argument"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_functor_argument"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_functor_argument": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "module_expression"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"variant_identifier": {
"type": "PATTERN",
"value": "[A-Z][a-zA-Z0-9_']*"
},
"polyvar_identifier": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[a-zA-Z0-9_']+"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "string"
},
"named": true,
"value": "polyvar_string"
}
]
}
]
}
]
},
"type_identifier": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[a-z_'][a-zA-Z0-9_']*"
},
{
"type": "SYMBOL",
"name": "_escape_identifier"
}
]
},
"value_identifier": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[a-z_][a-zA-Z0-9_']*"
},
{
"type": "SYMBOL",
"name": "_reserved_identifier"
},
{
"type": "SYMBOL",
"name": "_escape_identifier"
}
]
},
"_escape_identifier": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\\""
},
{
"type": "PATTERN",
"value": "[^\"]+"
},
{
"type": "STRING",
"value": "\""
}
]
}
},
"module_identifier": {
"type": "PATTERN",
"value": "[A-Z][a-zA-Z0-9_']*"
},
"extension_identifier": {
"type": "PATTERN",
"value": "[a-zA-Z0-9_\\.]+"
},
"number": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
},
{
"type": "BLANK"
}
]
},
{
"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": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "STRING",
"value": "0"
}
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "STRING",
"value": "0"
}
},
{
"type": "PATTERN",
"value": "[1-9]"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "_"
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "\\d(_?\\d)*"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\d(_?\\d)*"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "e"
},
{
"type": "STRING",
"value": "E"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "\\d(_?\\d)*"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "PATTERN",
"value": "\\d(_?\\d)*"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "e"
},
{
"type": "STRING",
"value": "E"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "\\d(_?\\d)*"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "STRING",
"value": "0"
}
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "STRING",
"value": "0"
}
},
{
"type": "PATTERN",
"value": "[1-9]"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "_"
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "\\d(_?\\d)*"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "e"
},
{
"type": "STRING",
"value": "E"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "\\d(_?\\d)*"
}
]
}
]
}
]
},
{
"type": "PATTERN",
"value": "\\d(_?\\d)*"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0b"
},
{
"type": "STRING",
"value": "0B"
}
]
},
{
"type": "PATTERN",
"value": "[0-1](_?[0-1])*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0o"
},
{
"type": "STRING",
"value": "0O"
}
]
},
{
"type": "PATTERN",
"value": "[0-7](_?[0-7])*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
},
{
"type": "BLANK"
}
]
},
{
"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": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0b"
},
{
"type": "STRING",
"value": "0B"
}
]
},
{
"type": "PATTERN",
"value": "[0-1](_?[0-1])*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0o"
},
{
"type": "STRING",
"value": "0O"
}
]
},
{
"type": "PATTERN",
"value": "[0-7](_?[0-7])*"
}
]
},
{
"type": "PATTERN",
"value": "\\d(_?\\d)*"
}
]
},
{
"type": "STRING",
"value": "n"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "STRING",
"value": "0"
}
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "STRING",
"value": "0"
}
},
{
"type": "PATTERN",
"value": "[1-9]"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "_"
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "\\d(_?\\d)*"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0b"
},
{
"type": "STRING",
"value": "0B"
}
]
},
{
"type": "PATTERN",
"value": "[0-1](_?[0-1])*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0o"
},
{
"type": "STRING",
"value": "0O"
}
]
},
{
"type": "PATTERN",
"value": "[0-7](_?[0-7])*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
},
{
"type": "BLANK"
}
]
},
{
"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": "CHOICE",
"members": [
{
"type": "STRING",
"value": "L"
},
{
"type": "STRING",
"value": "l"
}
]
}
]
}
]
}
},
"unit": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "STRING",
"value": ")"
}
]
},
"unit_type": {
"type": "STRING",
"value": "unit"
},
"true": {
"type": "STRING",
"value": "true"
},
"false": {
"type": "STRING",
"value": "false"
},
"string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "unescaped_double_string_fragment"
},
"named": true,
"value": "string_fragment"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
},
"unescaped_double_string_fragment": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^\"\\\\]+"
}
}
},
"escape_sequence": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^xu0-7]"
},
{
"type": "PATTERN",
"value": "[0-7]{1,3}"
},
{
"type": "PATTERN",
"value": "x[0-9a-fA-F]{2}"
},
{
"type": "PATTERN",
"value": "u[0-9a-fA-F]{4}"
},
{
"type": "PATTERN",
"value": "u\\{[0-9a-fA-F]+\\}"
}
]
}
]
}
},
"template_string": {
"type": "SEQ",
"members": [
{
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[a-z_][a-zA-Z0-9_']*"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\\""
},
{
"type": "PATTERN",
"value": "[^\"]+"
},
{
"type": "STRING",
"value": "\""
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "`"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "template_string_content"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "`"
}
]
},
"template_string_content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_template_chars"
},
{
"type": "SYMBOL",
"name": "template_substitution"
},
{
"type": "PATTERN",
"value": "\\s"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "\\`"
},
"named": true,
"value": "escape_sequence"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
}
]
}
},
"template_substitution": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "$"
},
{
"type": "SYMBOL",
"name": "value_identifier"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "${"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "}"
}
]
}
]
},
"character": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\\\\']"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
}
},
{
"type": "STRING",
"value": "'"
}
]
},
"_unescaped_template_string_fragment": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^`\\\\\\$]+"
}
}
},
"lparen": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_lparen"
},
"named": false,
"value": "("
},
"rparen": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_rparen"
},
"named": false,
"value": ")"
},
"uncurry": {
"type": "STRING",
"value": "."
},
"_reserved_identifier": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "async"
},
{
"type": "STRING",
"value": "unpack"
}
]
}
},
"extras": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "decorator"
},
{
"type": "PATTERN",
"value": "[\\s\\uFEFF\\u2060\\u200B\\u00A0]"
}
],
"conflicts": [
[
"unit",
"formal_parameters"
],
[
"primary_expression",
"_pattern"
],
[
"primary_expression",
"record_pattern"
],
[
"primary_expression",
"spread_pattern"
],
[
"primary_expression",
"_literal_pattern"
],
[
"primary_expression",
"_jsx_child"
],
[
"tuple_type",
"function_type_parameter"
],
[
"list",
"list_pattern"
],
[
"array",
"array_pattern"
],
[
"type_declaration"
],
[
"let_declaration"
],
[
"variant_identifier",
"module_identifier"
],
[
"variant",
"variant_pattern"
],
[
"variant_arguments",
"_variant_pattern_parameters"
],
[
"polyvar",
"polyvar_pattern"
],
[
"_pattern"
],
[
"_record_element",
"_record_single_field"
],
[
"_record_pun_field",
"_record_single_pun_field"
],
[
"_record_field_name",
"record_pattern"
],
[
"_statement",
"_one_or_more_statements"
],
[
"_inline_type",
"function_type_parameters"
],
[
"primary_expression",
"parameter",
"_pattern"
],
[
"parameter",
"_pattern"
],
[
"parameter",
"parenthesized_pattern"
],
[
"parameter",
"tuple_item_pattern"
],
[
"unit",
"_function_type_parameter_list"
],
[
"functor_parameter",
"module_primary_expression",
"module_identifier_path"
],
[
"_reserved_identifier",
"function"
],
[
"exception_pattern",
"or_pattern"
],
[
"type_binding",
"_inline_type"
],
[
"_module_structure",
"parenthesized_module_expression"
],
[
"_record_type_member",
"_object_type_member"
]
],
"precedences": [
[
{
"type": "STRING",
"value": "unary_not"
},
{
"type": "STRING",
"value": "member"
},
{
"type": "STRING",
"value": "call"
},
{
"type": "SYMBOL",
"name": "spread_element"
},
{
"type": "SYMBOL",
"name": "await_expression"
},
{
"type": "SYMBOL",
"name": "pipe_expression"
},
{
"type": "SYMBOL",
"name": "lazy_expression"
},
{
"type": "STRING",
"value": "binary_times"
},
{
"type": "STRING",
"value": "binary_pow"
},
{
"type": "STRING",
"value": "binary_plus"
},
{
"type": "STRING",
"value": "binary_compare"
},
{
"type": "STRING",
"value": "binary_relation"
},
{
"type": "STRING",
"value": "binary_and"
},
{
"type": "STRING",
"value": "binary_or"
},
{
"type": "STRING",
"value": "coercion_relation"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "primary_expression"
},
{
"type": "SYMBOL",
"name": "ternary_expression"
},
{
"type": "SYMBOL",
"name": "mutation_expression"
},
{
"type": "SYMBOL",
"name": "function"
},
{
"type": "SYMBOL",
"name": "let_declaration"
}
],
[
{
"type": "SYMBOL",
"name": "module_primary_expression"
},
{
"type": "SYMBOL",
"name": "value_identifier_path"
},
{
"type": "SYMBOL",
"name": "nested_variant_identifier"
},
{
"type": "SYMBOL",
"name": "module_identifier_path"
}
],
[
{
"type": "SYMBOL",
"name": "_jsx_attribute_value"
},
{
"type": "SYMBOL",
"name": "pipe_expression"
}
],
[
{
"type": "SYMBOL",
"name": "function_type_parameters"
},
{
"type": "SYMBOL",
"name": "function_type"
}
],
[
{
"type": "SYMBOL",
"name": "_reserved_identifier"
},
{
"type": "SYMBOL",
"name": "module_unpack"
}
],
[
{
"type": "SYMBOL",
"name": "lazy_pattern"
},
{
"type": "SYMBOL",
"name": "or_pattern"
}
]
],
"externals": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "_newline_and_comment"
},
{
"type": "STRING",
"value": "\""
},
{
"type": "STRING",
"value": "`"
},
{
"type": "SYMBOL",
"name": "_template_chars"
},
{
"type": "SYMBOL",
"name": "_lparen"
},
{
"type": "SYMBOL",
"name": "_rparen"
},
{
"type": "SYMBOL",
"name": "_list_constructor"
},
{
"type": "SYMBOL",
"name": "_decorator"
},
{
"type": "SYMBOL",
"name": "_decorator_inline"
}
],
"inline": [
"_module_definition"
],
"supertypes": [
"statement",
"declaration",
"expression",
"primary_expression",
"_type",
"module_expression",
"module_primary_expression"
],
"reserved": {}
}