{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "fsharp",
"word": "identifier",
"rules": {
"file": {
"type": "CHOICE",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "namespace"
}
},
{
"type": "PREC",
"value": -1,
"content": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_module_elem"
}
}
},
{
"type": "PREC",
"value": 1,
"content": {
"type": "SYMBOL",
"name": "named_module"
}
}
]
},
"namespace": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "namespace"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "global"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "rec"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "long_identifier"
}
]
}
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_module_elem"
}
}
]
},
"named_module": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "module"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "rec"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "long_identifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_module_elem"
}
}
]
},
"_preproc_toplevel_module": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "module"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "rec"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "long_identifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_module_elem"
}
}
]
},
"_module_body_elem": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "value_declaration"
},
"named": true,
"value": "declaration_expression"
},
{
"type": "SYMBOL",
"name": "module_defn"
},
{
"type": "SYMBOL",
"name": "module_abbrev"
},
{
"type": "SYMBOL",
"name": "import_decl"
},
{
"type": "SYMBOL",
"name": "fsi_directive_decl"
},
{
"type": "SYMBOL",
"name": "type_definition"
},
{
"type": "SYMBOL",
"name": "exception_definition"
},
{
"type": "SYMBOL",
"name": "extern_binding"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_if_in_module_body"
},
"named": true,
"value": "preproc_if"
},
{
"type": "SYMBOL",
"name": "_module_expression"
}
]
},
"_module_expression": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "null"
},
{
"type": "SYMBOL",
"name": "const"
},
{
"type": "SYMBOL",
"name": "paren_expression"
},
{
"type": "SYMBOL",
"name": "begin_end_expression"
},
{
"type": "SYMBOL",
"name": "long_identifier_or_op"
},
{
"type": "SYMBOL",
"name": "typed_expression"
},
{
"type": "SYMBOL",
"name": "infix_expression"
},
{
"type": "SYMBOL",
"name": "index_expression"
},
{
"type": "SYMBOL",
"name": "mutate_expression"
},
{
"type": "SYMBOL",
"name": "list_expression"
},
{
"type": "SYMBOL",
"name": "array_expression"
},
{
"type": "SYMBOL",
"name": "ce_expression"
},
{
"type": "SYMBOL",
"name": "prefixed_expression"
},
{
"type": "SYMBOL",
"name": "brace_expression"
},
{
"type": "SYMBOL",
"name": "anon_record_expression"
},
{
"type": "SYMBOL",
"name": "typecast_expression"
},
{
"type": "SYMBOL",
"name": "do_expression"
},
{
"type": "SYMBOL",
"name": "fun_expression"
},
{
"type": "SYMBOL",
"name": "function_expression"
},
{
"type": "SYMBOL",
"name": "if_expression"
},
{
"type": "SYMBOL",
"name": "while_expression"
},
{
"type": "SYMBOL",
"name": "for_expression"
},
{
"type": "SYMBOL",
"name": "match_expression"
},
{
"type": "SYMBOL",
"name": "try_expression"
},
{
"type": "SYMBOL",
"name": "literal_expression"
},
{
"type": "SYMBOL",
"name": "tuple_expression"
},
{
"type": "SYMBOL",
"name": "application_expression"
},
{
"type": "SYMBOL",
"name": "dot_expression"
},
{
"type": "SYMBOL",
"name": "srtp_call_expression"
}
]
},
"_module_elem": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "value_declaration"
},
"named": true,
"value": "declaration_expression"
},
{
"type": "SYMBOL",
"name": "module_defn"
},
{
"type": "SYMBOL",
"name": "module_abbrev"
},
{
"type": "SYMBOL",
"name": "import_decl"
},
{
"type": "SYMBOL",
"name": "fsi_directive_decl"
},
{
"type": "SYMBOL",
"name": "type_definition"
},
{
"type": "SYMBOL",
"name": "exception_definition"
},
{
"type": "SYMBOL",
"name": "extern_binding"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "preproc_if"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_attribute_expression"
},
"named": true,
"value": "declaration_expression"
}
]
},
"_attribute_expression": {
"type": "PREC",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"module_abbrev": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "module"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "long_identifier"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
}
]
},
"module_defn": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "module"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "rec"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_module_body"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "begin"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_body"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
{
"type": "STRING",
"value": "end"
}
]
}
]
}
]
}
},
"_module_body": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_module_body_elem"
},
{
"type": "REPEAT",
"content": {
"type": "PREC",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_newline"
},
"named": false,
"value": ";"
},
{
"type": "SYMBOL",
"name": "_module_body_elem"
}
]
}
}
}
]
},
"import_decl": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "open"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "long_identifier"
}
]
},
"attributes": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_attribute_set"
}
}
},
"_attribute_set": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "[<"
},
{
"type": "SYMBOL",
"name": "attribute"
},
{
"type": "PREC",
"value": 2,
"content": {
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "attribute"
}
]
}
}
},
{
"type": "STRING",
"value": ">]"
}
]
},
"attribute": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "target",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_object_construction"
}
]
},
"_object_construction": {
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "BLANK"
}
]
}
]
}
},
"value_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PREC",
"value": 7,
"content": {
"type": "SYMBOL",
"name": "function_or_value_defn"
}
},
{
"type": "PREC",
"value": 10,
"content": {
"type": "SYMBOL",
"name": "do"
}
}
]
}
]
},
"do": {
"type": "PREC",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "do"
},
{
"type": "SYMBOL",
"name": "_expression_block"
}
]
}
},
"_function_or_value_defns": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_function_or_value_defn_body"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "and"
},
{
"type": "SYMBOL",
"name": "_function_or_value_defn_body"
}
]
}
}
]
}
},
"function_or_value_defn": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "STRING",
"value": "let!"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_function_or_value_defn_body"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rec"
},
{
"type": "SYMBOL",
"name": "_function_or_value_defns"
}
]
}
]
}
]
},
"_function_or_value_defn_body": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "function_declaration_left"
},
{
"type": "SYMBOL",
"name": "value_declaration_left"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_argument_constraints"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_expression_block_for_let"
}
}
]
},
"function_declaration_left": {
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "inline"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "PREC",
"value": 100,
"content": {
"type": "SYMBOL",
"name": "_identifier_or_op"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_arguments"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "argument_patterns"
}
]
}
},
"value_declaration_left": {
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "mutable"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_arguments"
},
{
"type": "BLANK"
}
]
}
]
}
},
"access_modifier": {
"type": "PREC",
"value": 100,
"content": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1000,
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "private"
},
{
"type": "STRING",
"value": "internal"
},
{
"type": "STRING",
"value": "public"
}
]
}
}
}
},
"class_as_reference": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"primary_constr_args": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "class_as_reference"
},
{
"type": "BLANK"
}
]
}
]
},
"repeat_pattern": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "REPEAT1",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
}
}
}
]
}
},
"_pattern": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "null"
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "_"
},
"named": true,
"value": "wildcard_pattern"
},
{
"type": "SYMBOL",
"name": "typed_const_pattern"
},
{
"type": "SYMBOL",
"name": "const"
},
{
"type": "SYMBOL",
"name": "as_pattern"
},
{
"type": "SYMBOL",
"name": "disjunct_pattern"
},
{
"type": "SYMBOL",
"name": "conjunct_pattern"
},
{
"type": "SYMBOL",
"name": "cons_pattern"
},
{
"type": "SYMBOL",
"name": "repeat_pattern"
},
{
"type": "SYMBOL",
"name": "paren_pattern"
},
{
"type": "SYMBOL",
"name": "list_pattern"
},
{
"type": "SYMBOL",
"name": "array_pattern"
},
{
"type": "SYMBOL",
"name": "record_pattern"
},
{
"type": "SYMBOL",
"name": "typed_pattern"
},
{
"type": "SYMBOL",
"name": "attribute_pattern"
},
{
"type": "SYMBOL",
"name": "type_check_pattern"
},
{
"type": "SYMBOL",
"name": "optional_pattern"
},
{
"type": "SYMBOL",
"name": "identifier_pattern"
},
{
"type": "SYMBOL",
"name": "named_field_pattern"
}
]
},
"optional_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
}
},
"type_check_pattern": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":?"
},
{
"type": "SYMBOL",
"name": "atomic_type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"attribute_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
}
},
"paren_pattern": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"as_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
"cons_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "STRING",
"value": "::"
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
}
},
"disjunct_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
}
},
"conjunct_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "STRING",
"value": "&"
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
}
},
"typed_pattern": {
"type": "PREC_LEFT",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "FIELD",
"name": "constraints",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_argument_constraints"
},
{
"type": "BLANK"
}
]
}
}
]
}
},
"typed_const_pattern": {
"type": "PREC",
"value": 21,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "const"
},
{
"type": "SYMBOL",
"name": "_tyapp_open"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "types"
},
{
"type": "SYMBOL",
"name": "measure"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "PREC",
"value": 21,
"content": {
"type": "STRING",
"value": ">"
}
}
]
}
},
"argument_patterns": {
"type": "PREC_LEFT",
"value": 1000,
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_atomic_pattern"
}
}
},
"field_pattern": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "long_identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
}
},
"_atomic_pattern": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "null"
},
{
"type": "STRING",
"value": "_"
},
{
"type": "SYMBOL",
"name": "typed_const_pattern"
},
{
"type": "SYMBOL",
"name": "const"
},
{
"type": "SYMBOL",
"name": "long_identifier"
},
{
"type": "SYMBOL",
"name": "list_pattern"
},
{
"type": "SYMBOL",
"name": "record_pattern"
},
{
"type": "SYMBOL",
"name": "array_pattern"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SYMBOL",
"name": "type_check_pattern"
}
]
},
"_list_pattern_content": {
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
"list_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_list_pattern_content"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"array_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "[|"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_list_pattern_content"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "|]"
}
]
},
"record_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SYMBOL",
"name": "field_pattern"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "field_pattern"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "field_pattern"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "field_pattern"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"named_field": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
},
"named_field_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "named_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "named_field"
}
]
}
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"identifier_pattern": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "long_identifier_or_op"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "BLANK"
}
]
}
]
}
},
"_expression_block": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
},
"_expression_block_for_let": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_dedent"
},
{
"type": "SYMBOL",
"name": "_in"
}
]
}
]
},
"_paren_expression_block": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_paren_indent"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
},
"_mutable_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "long_identifier_or_op"
},
{
"type": "SYMBOL",
"name": "index_expression"
},
{
"type": "SYMBOL",
"name": "dot_expression"
}
]
},
"_expression": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "null"
},
{
"type": "SYMBOL",
"name": "const"
},
{
"type": "SYMBOL",
"name": "paren_expression"
},
{
"type": "SYMBOL",
"name": "begin_end_expression"
},
{
"type": "SYMBOL",
"name": "long_identifier_or_op"
},
{
"type": "SYMBOL",
"name": "typed_expression"
},
{
"type": "SYMBOL",
"name": "infix_expression"
},
{
"type": "SYMBOL",
"name": "index_expression"
},
{
"type": "SYMBOL",
"name": "mutate_expression"
},
{
"type": "SYMBOL",
"name": "list_expression"
},
{
"type": "SYMBOL",
"name": "array_expression"
},
{
"type": "SYMBOL",
"name": "ce_expression"
},
{
"type": "SYMBOL",
"name": "prefixed_expression"
},
{
"type": "SYMBOL",
"name": "brace_expression"
},
{
"type": "SYMBOL",
"name": "anon_record_expression"
},
{
"type": "SYMBOL",
"name": "typecast_expression"
},
{
"type": "SYMBOL",
"name": "declaration_expression"
},
{
"type": "SYMBOL",
"name": "do_expression"
},
{
"type": "SYMBOL",
"name": "fun_expression"
},
{
"type": "SYMBOL",
"name": "function_expression"
},
{
"type": "SYMBOL",
"name": "sequential_expression"
},
{
"type": "SYMBOL",
"name": "if_expression"
},
{
"type": "SYMBOL",
"name": "while_expression"
},
{
"type": "SYMBOL",
"name": "for_expression"
},
{
"type": "SYMBOL",
"name": "match_expression"
},
{
"type": "SYMBOL",
"name": "try_expression"
},
{
"type": "SYMBOL",
"name": "literal_expression"
},
{
"type": "SYMBOL",
"name": "tuple_expression"
},
{
"type": "SYMBOL",
"name": "application_expression"
},
{
"type": "SYMBOL",
"name": "dot_expression"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_if_in_expression"
},
"named": true,
"value": "preproc_if"
},
{
"type": "SYMBOL",
"name": "srtp_call_expression"
}
]
},
"literal_expression": {
"type": "PREC",
"value": 21,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<@"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_quoted_close"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<@@"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_untyped_quoted_close"
}
]
}
]
}
},
"srtp_call_expression": {
"type": "PREC_RIGHT",
"value": 21,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_srtp_type_argument"
},
"named": true,
"value": "type_argument"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "trait_member_constraint"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"_srtp_type_argument": {
"type": "PREC",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "^"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "or"
},
{
"type": "STRING",
"value": "^"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
}
},
"long_identifier_or_op": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "long_identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "long_identifier"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_identifier_or_op"
}
]
},
{
"type": "SYMBOL",
"name": "_identifier_or_op"
}
]
}
},
"tuple_expression": {
"type": "PREC_RIGHT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_tuple_marker"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"brace_expression": {
"type": "PREC",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "field_initializers"
},
{
"type": "SYMBOL",
"name": "object_expression"
},
{
"type": "SYMBOL",
"name": "with_field_expression"
}
]
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"anon_record_expression": {
"type": "PREC",
"value": 21,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{|"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "field_initializers"
},
{
"type": "SYMBOL",
"name": "with_field_expression"
}
]
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
{
"type": "STRING",
"value": "|}"
}
]
}
},
"_object_expression_inner": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_object_members"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "interface_implementation"
}
}
]
},
"object_expression": {
"type": "PREC",
"value": 25,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "new"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_object_expression_inner"
}
]
}
},
"with_field_expression": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "with"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "field_initializers"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
}
]
},
"prefixed_expression": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "STRING",
"value": "return!"
},
{
"type": "STRING",
"value": "yield"
},
{
"type": "STRING",
"value": "yield!"
},
{
"type": "STRING",
"value": "lazy"
},
{
"type": "STRING",
"value": "assert"
},
{
"type": "STRING",
"value": "upcast"
},
{
"type": "STRING",
"value": "downcast"
},
{
"type": "STRING",
"value": "new"
},
{
"type": "STRING",
"value": "fixed"
},
{
"type": "SYMBOL",
"name": "prefix_op"
}
]
},
{
"type": "PREC_RIGHT",
"value": 15,
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"typecast_expression": {
"type": "PREC_RIGHT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": ":>"
},
{
"type": "STRING",
"value": ":?"
},
{
"type": "STRING",
"value": ":?>"
}
]
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
},
"for_expression": {
"type": "PREC",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "SYMBOL",
"name": "_expression_or_range"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "to"
},
{
"type": "STRING",
"value": "downto"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
]
},
{
"type": "STRING",
"value": "do"
},
{
"type": "SYMBOL",
"name": "_expression_block"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "done"
},
{
"type": "BLANK"
}
]
}
]
}
},
"while_expression": {
"type": "PREC",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "while"
},
{
"type": "STRING",
"value": "while!"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "do"
},
{
"type": "SYMBOL",
"name": "_expression_block"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "done"
},
{
"type": "BLANK"
}
]
}
]
}
},
"_else_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "FIELD",
"name": "else",
"content": {
"type": "SYMBOL",
"name": "_expression_block"
}
}
]
},
"_then_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "then"
},
{
"type": "FIELD",
"name": "then",
"content": {
"type": "SYMBOL",
"name": "_expression_block"
}
}
]
},
"elif_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "elif"
},
{
"type": "FIELD",
"name": "guard",
"content": {
"type": "SYMBOL",
"name": "_expression_block"
}
},
{
"type": "SYMBOL",
"name": "_then_expression"
}
]
},
"_if_branch": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "FIELD",
"name": "guard",
"content": {
"type": "SYMBOL",
"name": "_expression_block"
}
}
]
},
"if_expression": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_if_branch"
},
{
"type": "SYMBOL",
"name": "_then_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "elif_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_else_expression"
},
{
"type": "BLANK"
}
]
}
]
},
"fun_expression": {
"type": "PREC_RIGHT",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "fun"
},
{
"type": "SYMBOL",
"name": "argument_patterns"
},
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "_expression_block"
}
]
}
},
"try_expression": {
"type": "PREC",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "try"
},
{
"type": "SYMBOL",
"name": "_expression_block"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "SYMBOL",
"name": "rules"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "finally"
},
{
"type": "SYMBOL",
"name": "_expression_block"
}
]
}
]
}
]
}
},
"match_expression": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "match"
},
{
"type": "STRING",
"value": "match!"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "with"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "rules"
}
]
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "rules"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
}
]
}
]
},
"function_expression": {
"type": "PREC",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "function"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "rules"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
}
]
}
},
"mutate_expression": {
"type": "PREC_RIGHT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "assignee",
"content": {
"type": "SYMBOL",
"name": "_mutable_expression"
}
},
{
"type": "STRING",
"value": "<-"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PREC",
"value": 1,
"content": {
"type": "SYMBOL",
"name": "_expression_block"
}
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
}
},
"index_expression": {
"type": "PREC",
"value": 20,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ".["
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "index",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "SYMBOL",
"name": "slice_ranges"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"typed_expression": {
"type": "PREC",
"value": 21,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_tyapp_open"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "types"
},
{
"type": "SYMBOL",
"name": "measure"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "PREC",
"value": 21,
"content": {
"type": "STRING",
"value": ">"
}
}
]
}
},
"declaration_expression": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "use"
},
{
"type": "STRING",
"value": "use!"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression_block_for_let"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "function_or_value_defn"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "and_bang"
}
}
]
}
]
},
{
"type": "FIELD",
"name": "in",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"and_bang": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "and!"
},
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression_block_for_let"
}
]
},
"do_expression": {
"type": "PREC",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "do"
},
{
"type": "STRING",
"value": "do!"
}
]
},
{
"type": "SYMBOL",
"name": "_expression_block"
}
]
}
},
"_list_elements": {
"type": "PREC_RIGHT",
"value": 113,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "PREC_RIGHT",
"value": 113,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_newline"
},
"named": false,
"value": ";"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
}
]
}
},
"_list_element": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_list_elements"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_comp_or_range_expression"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "slice_ranges"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
},
"list_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_list_element"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"array_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "[|"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_list_element"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "|]"
}
]
},
"range_expression": {
"type": "PREC",
"value": 22,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ".."
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ".."
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"_expression_or_range": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "range_expression"
}
]
},
"rule": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_pattern"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "when"
},
{
"type": "FIELD",
"name": "guard",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "->"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SYMBOL",
"name": "_expression_block"
}
}
]
}
},
"rules": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "rule"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "rule"
}
]
}
}
]
},
"begin_end_expression": {
"type": "PREC",
"value": 21,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "begin"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
{
"type": "STRING",
"value": "end"
}
]
}
},
"paren_expression": {
"type": "PREC",
"value": 21,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_paren_expression_block"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"_high_prec_app": {
"type": "PREC_LEFT",
"value": 20,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "unit"
},
{
"type": "SEQ",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 10000,
"content": {
"type": "STRING",
"value": "("
}
}
},
{
"type": "SYMBOL",
"name": "_paren_expression_block"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
]
}
},
"_low_prec_app": {
"type": "PREC_LEFT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"application_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_high_prec_app"
},
{
"type": "SYMBOL",
"name": "_low_prec_app"
}
]
},
"dot_expression": {
"type": "PREC_RIGHT",
"value": 19,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "base",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "long_identifier_or_op"
}
}
]
}
},
"infix_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "||"
},
{
"type": "STRING",
"value": "or"
}
]
},
"named": true,
"value": "infix_op"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 14,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "&&"
},
"named": true,
"value": "infix_op"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "infix_op"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
},
"ce_expression": {
"type": "PREC_LEFT",
"value": 15,
"content": {
"type": "SEQ",
"members": [
{
"type": "PREC",
"value": -1,
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_comp_expression_block"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"_comp_expression_block": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_comp_or_range_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_newline"
},
"named": false,
"value": ";"
},
{
"type": "SYMBOL",
"name": "_comp_or_range_expression"
}
]
}
}
]
},
"sequential_expression": {
"type": "PREC_RIGHT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT1",
"content": {
"type": "PREC_RIGHT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_newline"
},
"named": false,
"value": ";"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
}
]
}
},
"_comp_or_range_expression": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "comp_declaration_expression"
},
"named": true,
"value": "declaration_expression"
},
{
"type": "SYMBOL",
"name": "short_comp_expression"
},
{
"type": "SYMBOL",
"name": "range_expression"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"comp_declaration_expression": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "use"
},
{
"type": "STRING",
"value": "use!"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression_block_for_let"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "function_or_value_defn"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "and_bang"
}
}
]
}
]
},
{
"type": "FIELD",
"name": "in",
"content": {
"type": "SYMBOL",
"name": "_comp_or_range_expression"
}
}
]
},
"short_comp_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "SYMBOL",
"name": "_expression_or_range"
},
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"slice_ranges": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "slice_range"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "slice_range"
}
]
}
}
]
},
"_slice_range_special": {
"type": "PREC_LEFT",
"value": 23,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "from",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 22,
"content": {
"type": "STRING",
"value": ".."
}
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 100022,
"content": {
"type": "STRING",
"value": ".."
}
}
},
{
"type": "FIELD",
"name": "to",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "from",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 22,
"content": {
"type": "STRING",
"value": ".."
}
}
},
{
"type": "FIELD",
"name": "to",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "from",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 22,
"content": {
"type": "STRING",
"value": ".."
}
}
},
{
"type": "FIELD",
"name": "step",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 22,
"content": {
"type": "STRING",
"value": ".."
}
}
},
{
"type": "FIELD",
"name": "to",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
]
}
},
"slice_range": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_slice_range_special"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "*"
}
]
},
"_type": {
"type": "PREC",
"value": 4,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "simple_type"
},
{
"type": "SYMBOL",
"name": "generic_type"
},
{
"type": "SYMBOL",
"name": "paren_type"
},
{
"type": "SYMBOL",
"name": "function_type"
},
{
"type": "SYMBOL",
"name": "compound_type"
},
{
"type": "SYMBOL",
"name": "postfix_type"
},
{
"type": "SYMBOL",
"name": "list_type"
},
{
"type": "SYMBOL",
"name": "static_type"
},
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "SYMBOL",
"name": "constrained_type"
},
{
"type": "SYMBOL",
"name": "flexible_type"
},
{
"type": "SYMBOL",
"name": "anon_record_type"
},
{
"type": "SYMBOL",
"name": "struct_type"
}
]
}
},
"_argument_type": {
"type": "PREC",
"value": 4,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "simple_type"
},
{
"type": "SYMBOL",
"name": "generic_type"
},
{
"type": "SYMBOL",
"name": "paren_type"
},
{
"type": "SYMBOL",
"name": "postfix_type"
},
{
"type": "SYMBOL",
"name": "list_type"
},
{
"type": "SYMBOL",
"name": "static_type"
},
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "SYMBOL",
"name": "constrained_type"
},
{
"type": "SYMBOL",
"name": "flexible_type"
},
{
"type": "SYMBOL",
"name": "anon_record_type"
},
{
"type": "SYMBOL",
"name": "struct_type"
}
]
}
},
"_curried_return_type": {
"type": "PREC",
"value": 4,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "simple_type"
},
{
"type": "SYMBOL",
"name": "generic_type"
},
{
"type": "SYMBOL",
"name": "paren_type"
},
{
"type": "SYMBOL",
"name": "compound_type"
},
{
"type": "SYMBOL",
"name": "postfix_type"
},
{
"type": "SYMBOL",
"name": "list_type"
},
{
"type": "SYMBOL",
"name": "static_type"
},
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "SYMBOL",
"name": "constrained_type"
},
{
"type": "SYMBOL",
"name": "flexible_type"
},
{
"type": "SYMBOL",
"name": "anon_record_type"
},
{
"type": "SYMBOL",
"name": "struct_type"
}
]
}
},
"measure_atom": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "simple_type"
},
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "measure"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "STRING",
"value": "_"
},
{
"type": "STRING",
"value": "1"
}
]
},
"measure_power": {
"type": "PREC_RIGHT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "measure_atom"
},
{
"type": "STRING",
"value": "^"
},
{
"type": "SYMBOL",
"name": "int"
}
]
}
},
"_measure_operand": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "measure_power"
},
{
"type": "SYMBOL",
"name": "measure_atom"
},
{
"type": "SYMBOL",
"name": "compound_type"
}
]
},
"measure_quotient": {
"type": "PREC_LEFT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_measure_operand"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "SYMBOL",
"name": "_measure_operand"
}
]
}
},
"measure": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "measure_quotient"
},
{
"type": "SYMBOL",
"name": "measure_power"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "measure"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"simple_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "long_identifier"
},
{
"type": "SYMBOL",
"name": "_static_type_identifier"
}
]
},
"generic_type": {
"type": "PREC_RIGHT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "long_identifier"
},
{
"type": "STRING",
"value": "<"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ">"
}
]
}
},
"paren_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "STRING",
"value": ")"
}
]
},
"function_type": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
},
"compound_type": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "REPEAT1",
"content": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
}
}
]
}
},
"struct_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "struct"
},
{
"type": "SYMBOL",
"name": "paren_type"
}
]
},
"postfix_type": {
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "SYMBOL",
"name": "long_identifier"
}
]
}
},
"list_type": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "STRING",
"value": "[]"
}
]
},
"static_type": {
"type": "PREC",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "SYMBOL",
"name": "type_arguments"
}
]
}
},
"constrained_type": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "STRING",
"value": ":>"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
},
"flexible_type": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
},
"anon_record_type": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "struct"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{|"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "record_fields"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
{
"type": "STRING",
"value": "|}"
}
]
},
"types": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "REPEAT",
"content": {
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
}
}
]
},
"_static_type_identifier": {
"type": "PREC",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "^"
},
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 100,
"content": {
"type": "STRING",
"value": "'"
}
}
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
"_static_parameter": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "static_parameter_value"
},
{
"type": "SYMBOL",
"name": "named_static_parameter"
}
]
},
"named_static_parameter": {
"type": "PREC",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "static_parameter_value"
}
]
}
},
"type_attribute": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "SYMBOL",
"name": "_static_parameter"
},
{
"type": "SYMBOL",
"name": "measure"
}
]
},
"type_attributes": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_attribute"
},
{
"type": "REPEAT",
"content": {
"type": "PREC_RIGHT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "type_attribute"
}
]
}
}
}
]
},
"_multiline_generic_type": {
"type": "PREC_RIGHT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "long_identifier"
},
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ">"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
"_multiline_generic_type_head": {
"type": "PREC_RIGHT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "long_identifier"
},
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ">"
}
]
}
},
"_multiline_generic_function_type": {
"type": "PREC_RIGHT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_multiline_generic_type_head"
},
"named": true,
"value": "generic_type"
},
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
"atomic_type": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
},
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SYMBOL",
"name": "long_identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "long_identifier"
},
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "type_attributes"
},
{
"type": "STRING",
"value": ">"
}
]
}
]
}
},
"constraint": {
"type": "PREC",
"value": 1000000,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "STRING",
"value": ":>"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "null"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "trait_member_constraint"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "new"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "unit"
},
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "struct"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "not"
},
{
"type": "STRING",
"value": "struct"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "enum"
},
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "STRING",
"value": ">"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "unmanaged"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "equality"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "comparison"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "delegate"
},
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "STRING",
"value": ">"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "default"
},
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
]
}
},
"type_argument_constraints": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "when"
},
{
"type": "SYMBOL",
"name": "constraint"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "and"
},
{
"type": "SYMBOL",
"name": "constraint"
}
]
}
}
]
},
"type_argument": {
"type": "PREC",
"value": 10,
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "_"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_static_type_identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "or"
},
{
"type": "SYMBOL",
"name": "_static_type_identifier"
}
]
}
}
]
}
]
}
},
"type_argument_defn": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "type_argument"
}
]
},
"type_arguments": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "type_argument_defn"
},
{
"type": "REPEAT",
"content": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "type_argument_defn"
}
]
}
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_argument_constraints"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ">"
}
]
},
"trait_member_constraint": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "static"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "member"
},
{
"type": "SYMBOL",
"name": "_identifier_or_op"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
},
"member_signature": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_arguments"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "curried_spec"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "STRING",
"value": "get"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "STRING",
"value": "set"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "STRING",
"value": "get"
},
{
"type": "STRING",
"value": ","
},
{
"type": "STRING",
"value": "set"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "STRING",
"value": "set"
},
{
"type": "STRING",
"value": ","
},
{
"type": "STRING",
"value": "get"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"curried_spec": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "arguments_spec"
},
{
"type": "STRING",
"value": "->"
}
]
}
},
{
"type": "SYMBOL",
"name": "_curried_return_type"
}
]
},
"argument_spec": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_name_spec"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_argument_type"
}
]
}
},
"arguments_spec": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "argument_spec"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "SYMBOL",
"name": "argument_spec"
}
]
}
}
]
},
"argument_name_spec": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
}
]
},
"interface_spec": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "interface"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
},
"static_parameter": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "static_parameter_value"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "id"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "static_parameter_value"
}
]
}
]
},
"static_parameter_value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "const"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "const"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
]
},
"exception_definition": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "exception"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "exception_name",
"content": {
"type": "SYMBOL",
"name": "long_identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "of"
},
{
"type": "SYMBOL",
"name": "union_type_fields"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"type_definition": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "type"
},
{
"type": "SYMBOL",
"name": "_type_defn_body"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "and"
},
{
"type": "SYMBOL",
"name": "_type_defn_body"
}
]
}
}
]
}
},
"_type_defn_body": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "delegate_type_defn"
},
{
"type": "SYMBOL",
"name": "record_type_defn"
},
{
"type": "SYMBOL",
"name": "union_type_defn"
},
{
"type": "SYMBOL",
"name": "interface_type_defn"
},
{
"type": "SYMBOL",
"name": "anon_type_defn"
},
{
"type": "SYMBOL",
"name": "enum_type_defn"
},
{
"type": "SYMBOL",
"name": "type_abbrev_defn"
},
{
"type": "SYMBOL",
"name": "type_extension"
},
{
"type": "SYMBOL",
"name": "type_declaration"
}
]
},
"type_declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "SYMBOL",
"name": "_type_decl_newline"
}
]
},
"type_name": {
"type": "PREC",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type_name",
"content": {
"type": "SYMBOL",
"name": "long_identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_arguments"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_argument"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "type_name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
}
]
}
]
}
},
"type_extension": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_type_extension_with"
},
"named": true,
"value": "type_extension_elements"
}
]
},
"_type_extension_with": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_type_extension_inner"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
}
]
},
"delegate_type_defn": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "delegate_signature"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
}
]
},
"delegate_signature": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "delegate"
},
{
"type": "STRING",
"value": "of"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
},
"type_abbrev_defn": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_multiline_generic_function_type"
},
"named": true,
"value": "function_type"
},
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "SYMBOL",
"name": "measure"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_multiline_generic_type"
},
"named": true,
"value": "generic_type"
}
]
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
}
]
},
"_class_type_body_inner": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "class_inherits_decl"
},
{
"type": "SYMBOL",
"name": "type_extension_elements"
}
]
},
"_class_type_body": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_class_type_body_inner"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "_class_type_body_inner"
}
]
}
}
]
},
"_record_type_defn_inner": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "record_fields"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
{
"type": "STRING",
"value": "}"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_extension_elements"
},
{
"type": "BLANK"
}
]
}
]
},
"record_type_defn": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_record_type_defn_inner"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
}
]
}
},
"record_fields": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "record_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "record_field"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
}
]
},
"record_field": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "mutable"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
},
"enum_type_defn": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "STRING",
"value": "="
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "enum_type_cases"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
{
"type": "SYMBOL",
"name": "enum_type_cases"
}
]
}
]
},
"enum_type_cases": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "enum_type_case"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "enum_type_case"
}
]
}
}
]
},
"enum_type_case": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "const"
}
]
},
"_union_type_defn_inner": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "union_type_cases"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_extension_elements"
},
{
"type": "BLANK"
}
]
}
]
},
"union_type_defn": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "STRING",
"value": "="
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_union_type_defn_inner"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
{
"type": "SYMBOL",
"name": "_union_type_defn_inner"
}
]
}
]
}
},
"union_type_cases": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "union_type_case"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "union_type_case"
}
]
}
}
]
},
"union_type_case": {
"type": "PREC",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "of"
},
{
"type": "SYMBOL",
"name": "union_type_fields"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"union_type_fields": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "union_type_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "SYMBOL",
"name": "union_type_field"
}
]
}
}
]
},
"union_type_field": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
]
}
},
"interface_type_defn": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_interface_begin"
},
"named": false,
"value": "interface"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_type_defn_elements"
}
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
{
"type": "STRING",
"value": "end"
}
]
}
]
}
},
"anon_type_defn": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "primary_constr_args"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "inline_line_comment"
},
"named": true,
"value": "line_comment"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_class_type_body"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "begin"
},
{
"type": "STRING",
"value": "class"
}
]
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_class_type_body"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
{
"type": "STRING",
"value": "end"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_struct_begin"
},
"named": false,
"value": "struct"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_type_defn_elements"
}
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
},
{
"type": "STRING",
"value": "end"
}
]
}
]
}
]
}
},
"_class_function_or_value_defn": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "static"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "function_or_value_defn"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "do"
},
{
"type": "SYMBOL",
"name": "_expression_block"
}
]
}
]
}
]
},
"_type_extension_inner": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_class_function_or_value_defn"
},
{
"type": "SYMBOL",
"name": "_type_defn_elements"
}
]
}
},
"type_extension_elements": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_type_extension_inner"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_type_extension_inner"
}
]
}
},
"_type_defn_elements": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "member_defn"
},
{
"type": "SYMBOL",
"name": "interface_implementation"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_if_in_class_definition"
},
"named": true,
"value": "preproc_if"
}
]
},
"interface_implementation": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "interface"
},
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_object_members"
},
{
"type": "BLANK"
}
]
}
]
}
},
"_member_defns": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "member_defn"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "member_defn"
}
]
}
}
]
}
},
"_object_members": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_member_defns"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
}
]
},
"member_defn": {
"type": "PREC",
"value": 100016,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "static"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "member"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "inline"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "method_or_prop_defn"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "abstract"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "member"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "member_signature"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "member"
},
{
"type": "STRING",
"value": "val"
},
{
"type": "SYMBOL",
"name": "property_or_ident"
},
{
"type": "SYMBOL",
"name": "_val_property_defn"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "override"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "method_or_prop_defn"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "default"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "method_or_prop_defn"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "static"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "val"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "mutable"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "static"
},
{
"type": "SYMBOL",
"name": "value_declaration"
}
]
},
{
"type": "SYMBOL",
"name": "additional_constr_defn"
}
]
}
]
}
},
"property_or_ident": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "instance",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "FIELD",
"name": "method",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
{
"type": "SYMBOL",
"name": "_identifier_or_op"
}
]
},
"_method_defn": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_arguments"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "args",
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_pattern"
}
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression_block"
}
]
}
]
},
"_property_accessor_body": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "argument_patterns"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression_block"
}
]
},
"property_accessor": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "get"
},
{
"type": "STRING",
"value": "set"
}
]
},
{
"type": "SYMBOL",
"name": "_property_accessor_body"
}
]
},
"_property_defn": {
"type": "PREC_LEFT",
"value": 100017,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression_block"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "property_accessor"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "and"
},
{
"type": "SYMBOL",
"name": "property_accessor"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
}
]
}
]
}
]
}
},
"_val_property_defn": {
"type": "PREC_LEFT",
"value": 100016,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "get"
},
{
"type": "STRING",
"value": "set"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "get"
},
{
"type": "STRING",
"value": ","
},
{
"type": "STRING",
"value": "set"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "set"
},
{
"type": "STRING",
"value": ","
},
{
"type": "STRING",
"value": "get"
}
]
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"method_or_prop_defn": {
"type": "PREC",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "property_or_ident"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_method_defn"
},
{
"type": "SYMBOL",
"name": "_property_defn"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_function_or_value_defns"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
}
]
}
]
}
]
}
},
"additional_constr_defn": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "access_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "new"
},
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression_block"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "then"
},
{
"type": "SYMBOL",
"name": "_expression_block"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"extern_binding": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "extern"
},
{
"type": "FIELD",
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "extern_param"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "extern_param"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": ")"
}
]
},
"extern_param": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"class_inherits_decl": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "inherit"
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
}
]
}
},
"field_initializer": {
"type": "PREC",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "long_identifier"
}
},
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 10000000,
"content": {
"type": "STRING",
"value": "="
}
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"field_initializers": {
"type": "PREC",
"value": 10000000,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "field_initializer"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "field_initializer"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
}
]
}
},
"_escape_char": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 100,
"content": {
"type": "PATTERN",
"value": "\\\\[\"\\'ntbrafv]"
}
}
},
"_non_escape_char": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 100,
"content": {
"type": "PATTERN",
"value": "\\\\[^\"\\'ntbrafv]"
}
}
},
"_simple_char_char": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[^\\n\\t\\r\\u0008\\a\\f\\v'\\\\]"
}
},
"_unicodegraph_short": {
"type": "PATTERN",
"value": "\\\\u[0-9a-fA-F]{4}"
},
"_unicodegraph_long": {
"type": "PATTERN",
"value": "\\\\u[0-9a-fA-F]{8}"
},
"_trigraph": {
"type": "PATTERN",
"value": "\\\\[0-9]{3}"
},
"_hexgraph_short": {
"type": "PATTERN",
"value": "\\\\x[0-9a-fA-F]{2}"
},
"_char_char": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_char_char"
},
{
"type": "SYMBOL",
"name": "_escape_char"
},
{
"type": "SYMBOL",
"name": "_trigraph"
},
{
"type": "SYMBOL",
"name": "_unicodegraph_short"
},
{
"type": "SYMBOL",
"name": "_hexgraph_short"
}
]
},
"_simple_string_char": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_inside_string_marker"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^\\t\\r\\u0008\\a\\f\\v\\\\\"]"
}
}
}
]
},
"_string_char": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_string_char"
},
{
"type": "SYMBOL",
"name": "_escape_char"
},
{
"type": "SYMBOL",
"name": "_trigraph"
},
{
"type": "SYMBOL",
"name": "_unicodegraph_short"
},
{
"type": "SYMBOL",
"name": "_hexgraph_short"
},
{
"type": "SYMBOL",
"name": "_non_escape_char"
},
{
"type": "SYMBOL",
"name": "_unicodegraph_long"
}
]
},
"char": {
"type": "PREC",
"value": -1,
"content": {
"type": "PATTERN",
"value": "'([^\\n\\t\\r\\u0008\\a\\f\\v\\\\]|\\\\[\"\\'ntbrafv]|\\\\[0-9]{3}|\\\\u[0-9a-fA-F]{4}|\\\\x[0-9a-fA-F]{2}|(\\\\\\\\))?'B?"
}
},
"format_string_eval": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1000,
"content": {
"type": "STRING",
"value": "{"
}
}
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "}"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_multi_dollar_interp_start"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_multi_dollar_interp_end"
}
]
}
]
},
"format_string": {
"type": "SEQ",
"members": [
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 100,
"content": {
"type": "STRING",
"value": "$\""
}
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "format_string_eval"
},
{
"type": "SYMBOL",
"name": "_string_char"
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
},
"_string_literal": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_string_char"
}
},
{
"type": "STRING",
"value": "\""
}
]
},
"string": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_string_literal"
},
{
"type": "SYMBOL",
"name": "format_string"
}
]
},
"_verbatim_string_char": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_string_char"
},
{
"type": "SYMBOL",
"name": "_non_escape_char"
},
{
"type": "STRING",
"value": "\\"
},
{
"type": "PATTERN",
"value": "\\\"\\\""
}
]
},
"verbatim_string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@\""
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_verbatim_string_char"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "\""
}
}
]
},
"bytearray": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_string_char"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "\"B"
}
}
]
},
"verbatim_bytearray": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@\""
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_verbatim_string_char"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "\"B"
}
}
]
},
"format_triple_quoted_string": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 100,
"content": {
"type": "STRING",
"value": "$\"\"\""
}
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_format_triple_quoted_content"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "format_string_eval"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_format_triple_quoted_content"
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "STRING",
"value": "\"\"\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_multi_dollar_triple_quote_start"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_multi_dollar_triple_quoted_content"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "format_string_eval"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_multi_dollar_triple_quoted_content"
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "SYMBOL",
"name": "_multi_dollar_triple_quote_end"
}
]
}
]
},
"triple_quoted_string": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\"\"\""
},
{
"type": "SYMBOL",
"name": "_triple_quoted_content"
},
{
"type": "STRING",
"value": "\"\"\""
}
]
},
{
"type": "SYMBOL",
"name": "format_triple_quoted_string"
}
]
},
"bool": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
}
]
}
},
"unit": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 100000,
"content": {
"type": "STRING",
"value": "()"
}
}
},
"const": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "sbyte"
},
{
"type": "SYMBOL",
"name": "int16"
},
{
"type": "SYMBOL",
"name": "int32"
},
{
"type": "SYMBOL",
"name": "int64"
},
{
"type": "SYMBOL",
"name": "byte"
},
{
"type": "SYMBOL",
"name": "uint16"
},
{
"type": "SYMBOL",
"name": "uint32"
},
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "SYMBOL",
"name": "xint"
},
{
"type": "SYMBOL",
"name": "nativeint"
},
{
"type": "SYMBOL",
"name": "unativeint"
},
{
"type": "SYMBOL",
"name": "decimal"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "uint64"
},
{
"type": "SYMBOL",
"name": "ieee32"
},
{
"type": "SYMBOL",
"name": "ieee64"
},
{
"type": "SYMBOL",
"name": "bignum"
},
{
"type": "SYMBOL",
"name": "char"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "verbatim_string"
},
{
"type": "SYMBOL",
"name": "triple_quoted_string"
},
{
"type": "SYMBOL",
"name": "bytearray"
},
{
"type": "SYMBOL",
"name": "verbatim_bytearray"
},
{
"type": "SYMBOL",
"name": "bool"
},
{
"type": "SYMBOL",
"name": "unit"
}
]
},
"identifier": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[_\\p{XID_Start}][_'\\p{XID_Continue}]*"
},
{
"type": "PATTERN",
"value": "``([^`\\n\\r\\t])+``"
}
]
}
},
"long_identifier": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
}
},
"active_pattern": {
"type": "PREC",
"value": 1000,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "(|"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "active_pattern_op_name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "active_pattern_op_name"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "_"
},
"named": true,
"value": "wildcard_active_pattern_op"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "|)"
}
]
}
},
"op_identifier": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1000,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "PATTERN",
"value": "\\s*"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "PATTERN",
"value": "[!%&*+-./<=>@^|~$?][!%&*+-./<=>@^|~?]*"
},
{
"type": "STRING",
"value": ".. .."
}
]
},
{
"type": "PATTERN",
"value": "\\s*"
},
{
"type": "STRING",
"value": ")"
}
]
}
}
},
"_identifier_or_op": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "op_identifier"
},
{
"type": "SYMBOL",
"name": "active_pattern"
}
]
},
"_infix_or_prefix_op": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+."
},
{
"type": "STRING",
"value": "-."
},
{
"type": "STRING",
"value": "%"
},
{
"type": "STRING",
"value": "&"
}
]
},
"prefix_op": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_infix_or_prefix_op"
},
{
"type": "STRING",
"value": "&&"
},
{
"type": "STRING",
"value": "%%"
},
{
"type": "REPEAT1",
"content": {
"type": "STRING",
"value": "~"
}
},
{
"type": "PATTERN",
"value": "[!?][!%&*+-./<=>@^|~?]*"
}
]
}
},
"infix_op": {
"type": "PREC",
"value": 4,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_infix_or_prefix_op"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[+-]"
}
}
},
{
"type": "PATTERN",
"value": "[-+=<>|&^*'%@?][!%&*+./<=>@^|~?-]*"
},
{
"type": "PATTERN",
"value": "\\/[!%&*+.<=>@^|~?-]*"
},
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "!="
},
{
"type": "STRING",
"value": ":="
},
{
"type": "STRING",
"value": "::"
},
{
"type": "STRING",
"value": "$"
},
{
"type": "STRING",
"value": "?"
},
{
"type": "STRING",
"value": "?"
},
{
"type": "STRING",
"value": "?<-"
},
{
"type": "STRING",
"value": "?->"
}
]
}
},
"int": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[+-]?([0-9]_?)+"
}
},
"xint": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "0[xX]([0-9a-fA-F]_?)+"
},
{
"type": "PATTERN",
"value": "0[oO]([0-7]_?)+"
},
{
"type": "PATTERN",
"value": "0[bB]([0-1]_?)+"
}
]
}
},
"sbyte": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "SYMBOL",
"name": "xint"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "y"
}
}
]
},
"byte": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "SYMBOL",
"name": "xint"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "uy"
}
}
]
},
"int16": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "SYMBOL",
"name": "xint"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "s"
}
}
]
},
"uint16": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "SYMBOL",
"name": "xint"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "us"
}
}
]
},
"int32": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "SYMBOL",
"name": "xint"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "l"
}
}
]
},
"uint32": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "SYMBOL",
"name": "xint"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "ul"
},
{
"type": "STRING",
"value": "u"
}
]
}
}
]
},
"nativeint": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "SYMBOL",
"name": "xint"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "n"
}
}
]
},
"unativeint": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "SYMBOL",
"name": "xint"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "un"
}
}
]
},
"int64": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "SYMBOL",
"name": "xint"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "L"
}
}
]
},
"uint64": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "SYMBOL",
"name": "xint"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "UL"
},
{
"type": "STRING",
"value": "uL"
}
]
}
}
]
},
"ieee32": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "f"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "xint"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "lf"
}
}
]
}
]
},
"ieee64": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "xint"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "LF"
}
}
]
},
"bignum": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[QRZING]"
}
}
]
},
"decimal": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "int"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[Mm]"
}
}
]
},
"float": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "."
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "."
}
},
{
"type": "SYMBOL",
"name": "int"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[eE][+-]?"
}
},
{
"type": "SYMBOL",
"name": "int"
}
]
}
]
},
"named": false,
"value": "float"
}
},
"block_comment": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "(*"
},
{
"type": "SYMBOL",
"name": "block_comment_content"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "*)"
}
}
]
},
"inline_line_comment": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[ \\t]*\\/\\/([^/\\n\\r][^\\n\\r]*)?"
},
{
"type": "PATTERN",
"value": "[ \\t]*\\/{4,}[^\\n\\r]*"
}
]
}
},
"line_comment": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\/\\/([^/\\n\\r][^\\n\\r]*)?"
},
{
"type": "PATTERN",
"value": "\\/{4,}[^\\n\\r]*"
}
]
}
},
"xml_doc": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "\\/\\/\\/([^/\\n\\r][^\\n\\r]*)?"
}
},
"compiler_directive_decl": {
"type": "PREC",
"value": 100000,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#nowarn"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_literal"
},
"named": true,
"value": "string"
},
{
"type": "SYMBOL",
"name": "int"
}
]
},
{
"type": "SYMBOL",
"name": "_newline_not_aligned"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#warnon"
},
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "SYMBOL",
"name": "_newline_not_aligned"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#light"
},
{
"type": "SYMBOL",
"name": "_newline_not_aligned"
}
]
}
]
}
},
"fsi_directive_decl": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#r"
},
{
"type": "STRING",
"value": "#load"
},
{
"type": "STRING",
"value": "#time"
},
{
"type": "STRING",
"value": "#I"
},
{
"type": "STRING",
"value": "#help"
},
{
"type": "STRING",
"value": "#quit"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_literal"
},
"named": true,
"value": "string"
},
{
"type": "SYMBOL",
"name": "verbatim_string"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "\\n"
}
]
},
"preproc_line": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#(line)?"
},
"named": false,
"value": "#line"
},
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_literal"
},
"named": true,
"value": "string"
},
{
"type": "SYMBOL",
"name": "verbatim_string"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_newline_not_aligned"
}
]
},
"_preproc_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "bool"
},
{
"type": "SYMBOL",
"name": "preproc_if_not_expression"
},
{
"type": "SYMBOL",
"name": "preproc_if_and_expression"
},
{
"type": "SYMBOL",
"name": "preproc_if_or_expression"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_preproc_expression"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"preproc_if_not_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "SYMBOL",
"name": "_preproc_expression"
}
]
},
"preproc_if_and_expression": {
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_preproc_expression"
},
{
"type": "STRING",
"value": "&&"
},
{
"type": "SYMBOL",
"name": "_preproc_expression"
}
]
}
},
"preproc_if_or_expression": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_preproc_expression"
},
{
"type": "STRING",
"value": "||"
},
{
"type": "SYMBOL",
"name": "_preproc_expression"
}
]
}
},
"preproc_if": {
"type": "PREC",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "SYMBOL",
"name": "_newline_not_aligned"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_elem"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_preproc_toplevel_module"
},
"named": true,
"value": "named_module"
}
]
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "preproc_else"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "#endif"
}
]
}
},
"preproc_else": {
"type": "PREC",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#else"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_module_elem"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_preproc_toplevel_module"
},
"named": true,
"value": "named_module"
}
]
}
]
}
},
"preproc_if_in_expression": {
"type": "PREC",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "SYMBOL",
"name": "_newline_not_aligned"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_expression"
},
"named": true,
"value": "preproc_else"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "#endif"
}
]
}
},
"preproc_else_in_expression": {
"type": "PREC",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#else"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
}
},
"preproc_if_in_module_body": {
"type": "PREC",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "SYMBOL",
"name": "_newline_not_aligned"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_module_body_elem"
}
]
}
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_module_body"
},
"named": true,
"value": "preproc_else"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "#endif"
}
]
}
},
"preproc_else_in_module_body": {
"type": "PREC",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#else"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_module_body_elem"
}
]
}
}
]
}
},
"preproc_if_in_class_definition": {
"type": "PREC",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "SYMBOL",
"name": "_newline_not_aligned"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_class_type_body_inner"
}
]
}
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_class_definition"
},
"named": true,
"value": "preproc_else"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "#endif"
}
]
}
},
"preproc_else_in_class_definition": {
"type": "PREC",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#else"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_class_type_body_inner"
}
]
}
}
]
}
},
"preproc_if_in_member_definition": {
"type": "PREC",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "SYMBOL",
"name": "_newline_not_aligned"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "member_defn"
}
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_member_definition"
},
"named": true,
"value": "preproc_else"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "#endif"
}
]
}
},
"preproc_else_in_member_definition": {
"type": "PREC",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#else"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "member_defn"
}
}
]
}
}
},
"extras": [
{
"type": "PATTERN",
"value": "[ \\s\\f\\uFEFF\\u2060\\u200B]|\\\\\\r?n"
},
{
"type": "SYMBOL",
"name": "block_comment"
},
{
"type": "SYMBOL",
"name": "line_comment"
},
{
"type": "SYMBOL",
"name": "xml_doc"
},
{
"type": "SYMBOL",
"name": "preproc_line"
},
{
"type": "SYMBOL",
"name": "compiler_directive_decl"
},
{
"type": "SYMBOL",
"name": "fsi_directive_decl"
},
{
"type": "STRING",
"value": ";"
}
],
"conflicts": [
[
"long_identifier",
"_identifier_or_op"
],
[
"simple_type",
"type_argument"
],
[
"_module_elem",
"preproc_if_in_expression"
],
[
"_module_expression",
"_expression"
],
[
"declaration_expression",
"_comp_or_range_expression"
],
[
"preproc_if_in_expression",
"preproc_if_in_module_body"
],
[
"preproc_else_in_expression",
"preproc_else_in_module_body"
],
[
"rules"
],
[
"prefixed_expression",
"_low_prec_app",
"infix_expression"
],
[
"_type",
"_argument_type"
],
[
"_type",
"_curried_return_type"
]
],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_dedent"
},
{
"type": "STRING",
"value": "then"
},
{
"type": "STRING",
"value": "else"
},
{
"type": "STRING",
"value": "elif"
},
{
"type": "STRING",
"value": "#if"
},
{
"type": "STRING",
"value": "#else"
},
{
"type": "STRING",
"value": "#endif"
},
{
"type": "STRING",
"value": "class"
},
{
"type": "STRING",
"value": "begin"
},
{
"type": "SYMBOL",
"name": "_struct_begin"
},
{
"type": "SYMBOL",
"name": "_interface_begin"
},
{
"type": "STRING",
"value": "end"
},
{
"type": "STRING",
"value": "and"
},
{
"type": "STRING",
"value": "with"
},
{
"type": "SYMBOL",
"name": "_triple_quoted_content"
},
{
"type": "SYMBOL",
"name": "_format_triple_quoted_content"
},
{
"type": "SYMBOL",
"name": "block_comment_content"
},
{
"type": "SYMBOL",
"name": "_inside_string_marker"
},
{
"type": "SYMBOL",
"name": "_newline_not_aligned"
},
{
"type": "SYMBOL",
"name": "_tuple_marker"
},
{
"type": "SYMBOL",
"name": "_quoted_close"
},
{
"type": "SYMBOL",
"name": "_untyped_quoted_close"
},
{
"type": "SYMBOL",
"name": "_multi_dollar_triple_quote_start"
},
{
"type": "SYMBOL",
"name": "_multi_dollar_triple_quoted_content"
},
{
"type": "SYMBOL",
"name": "_multi_dollar_interp_start"
},
{
"type": "SYMBOL",
"name": "_multi_dollar_interp_end"
},
{
"type": "SYMBOL",
"name": "_multi_dollar_triple_quote_end"
},
{
"type": "SYMBOL",
"name": "_tyapp_open"
},
{
"type": "SYMBOL",
"name": "_paren_indent"
},
{
"type": "SYMBOL",
"name": "_type_decl_newline"
},
{
"type": "SYMBOL",
"name": "_in"
},
{
"type": "SYMBOL",
"name": "_error_sentinel"
}
],
"inline": [
"_expression_or_range",
"_object_expression_inner",
"_record_type_defn_inner",
"_union_type_defn_inner",
"_then_expression"
],
"supertypes": [
"_module_elem",
"_pattern",
"_expression",
"_type",
"_type_defn_body",
"_static_parameter"
],
"reserved": {}
}