{ "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json", "name": "gleam", "rules": { "source_file": { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "target_group" }, { "type": "SYMBOL", "name": "_module_statement" }, { "type": "SYMBOL", "name": "_statement_seq" } ] } }, "_module_statement": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "import" }, { "type": "SYMBOL", "name": "constant" }, { "type": "SYMBOL", "name": "external_type" }, { "type": "SYMBOL", "name": "external_function" }, { "type": "SYMBOL", "name": "function" }, { "type": "SYMBOL", "name": "type_definition" }, { "type": "SYMBOL", "name": "type_alias" }, { "type": "SYMBOL", "name": "attribute" } ] }, "module_comment": { "type": "PREC", "value": 3, "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "////" }, { "type": "SYMBOL", "name": "doc_comment_content" } ] } }, "statement_comment": { "type": "PREC", "value": 2, "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "///" }, { "type": "SYMBOL", "name": "doc_comment_content" } ] } }, "comment": { "type": "CHOICE", "members": [ { "type": "PREC", "value": 1, "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "//" }, { "type": "PATTERN", "value": ".*" } ] } }, { "type": "PREC", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "/////" }, { "type": "PATTERN", "value": ".*" } ] } } ] }, "target_group": { "type": "SEQ", "members": [ { "type": "STRING", "value": "if" }, { "type": "FIELD", "name": "target", "content": { "type": "SYMBOL", "name": "target" } }, { "type": "STRING", "value": "{" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "_module_statement" } }, { "type": "STRING", "value": "}" } ] }, "target": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "erlang" }, { "type": "STRING", "value": "javascript" } ] }, "attribute": { "type": "SEQ", "members": [ { "type": "STRING", "value": "@" }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "arguments", "content": { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_attribute_arguments" }, "named": true, "value": "arguments" } }, { "type": "BLANK" } ] } ] }, "_attribute_arguments": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "attribute_value" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "attribute_value" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "STRING", "value": ")" } ] }, "attribute_value": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_constant_value" }, { "type": "SEQ", "members": [ { "type": "FIELD", "name": "label", "content": { "type": "SYMBOL", "name": "label" } }, { "type": "STRING", "value": ":" }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_constant_value" } } ] } ] }, "import": { "type": "SEQ", "members": [ { "type": "STRING", "value": "import" }, { "type": "FIELD", "name": "module", "content": { "type": "SYMBOL", "name": "module" } }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "." }, { "type": "FIELD", "name": "imports", "content": { "type": "SYMBOL", "name": "unqualified_imports" } } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "as" }, { "type": "FIELD", "name": "alias", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "discard" } ] } } ] }, { "type": "BLANK" } ] } ] }, "module": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_name" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "/" }, { "type": "SYMBOL", "name": "_name" } ] } } ] }, "unqualified_imports": { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "unqualified_import" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "unqualified_import" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "}" } ] }, "unqualified_import": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "as" }, { "type": "FIELD", "name": "alias", "content": { "type": "SYMBOL", "name": "identifier" } } ] }, { "type": "BLANK" } ] } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "type" }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "type_identifier" } }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "as" }, { "type": "FIELD", "name": "alias", "content": { "type": "SYMBOL", "name": "type_identifier" } } ] }, { "type": "BLANK" } ] } ] }, { "type": "SEQ", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "constructor_name" } }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "as" }, { "type": "FIELD", "name": "alias", "content": { "type": "SYMBOL", "name": "constructor_name" } } ] }, { "type": "BLANK" } ] } ] } ] }, "constant": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "visibility_modifier" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "const" }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_constant_type_annotation" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "=" }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_constant_value" } } ] }, "_constant_value": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "float" }, { "type": "SYMBOL", "name": "integer" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_tuple" }, "named": true, "value": "tuple" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_list" }, "named": true, "value": "list" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_constant_bit_string" }, "named": true, "value": "bit_string" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_record" }, "named": true, "value": "record" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_field_access" }, "named": true, "value": "field_access" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_binary_expression" }, "named": true, "value": "binary_expression" } ] }, "constant_tuple": { "type": "SEQ", "members": [ { "type": "STRING", "value": "#" }, { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_constant_value" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_constant_value" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "constant_list": { "type": "SEQ", "members": [ { "type": "STRING", "value": "[" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_constant_value" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_constant_value" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "]" } ] }, "_constant_bit_string": { "type": "SEQ", "members": [ { "type": "STRING", "value": "<<" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_bit_string_segment" }, "named": true, "value": "bit_string_segment" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_bit_string_segment" }, "named": true, "value": "bit_string_segment" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ">>" } ] }, "constant_bit_string_segment": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_constant_value" } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "options", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": ":" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_bit_string_segment_options" }, "named": true, "value": "bit_string_segment_options" } ] } }, { "type": "BLANK" } ] } ] }, "constant_bit_string_segment_options": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_constant_bit_string_segment_option" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "-" }, { "type": "SYMBOL", "name": "_constant_bit_string_segment_option" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "-" }, { "type": "BLANK" } ] } ] }, "_constant_bit_string_segment_option": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_constant_bit_string_named_segment_option" }, { "type": "SYMBOL", "name": "integer" } ] }, "_constant_bit_string_named_segment_option": { "type": "ALIAS", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_bit_string_segment_option" }, { "type": "SYMBOL", "name": "_constant_bit_string_segment_option_size" } ] }, "named": true, "value": "bit_string_segment_option" }, "_constant_bit_string_segment_option_size": { "type": "SEQ", "members": [ { "type": "STRING", "value": "size" }, { "type": "STRING", "value": "(" }, { "type": "SYMBOL", "name": "integer" }, { "type": "STRING", "value": ")" } ] }, "constant_record": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "constructor_name" }, { "type": "SYMBOL", "name": "remote_constructor_name" } ] } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "arguments", "content": { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_record_arguments" }, "named": true, "value": "arguments" } }, { "type": "BLANK" } ] } ] }, "constant_record_arguments": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_record_argument" }, "named": true, "value": "argument" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_record_argument" }, "named": true, "value": "argument" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "constant_record_argument": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "FIELD", "name": "label", "content": { "type": "SYMBOL", "name": "label" } }, { "type": "STRING", "value": ":" } ] }, { "type": "BLANK" } ] }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_constant_value" } } ] }, { "type": "SEQ", "members": [ { "type": "FIELD", "name": "label", "content": { "type": "SYMBOL", "name": "label" } }, { "type": "STRING", "value": ":" } ] } ] }, "constant_binary_expression": { "type": "CHOICE", "members": [ { "type": "PREC_LEFT", "value": 7, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_constant_value" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "<>" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_constant_value" } } ] } } ] }, "constant_field_access": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "record", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "." }, { "type": "FIELD", "name": "field", "content": { "type": "SYMBOL", "name": "label" } } ] }, "_constant_type": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "type_hole" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_tuple_type" }, "named": true, "value": "tuple_type" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_function_type" }, "named": true, "value": "function_type" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_type" }, "named": true, "value": "type" } ] }, "_constant_type_annotation": { "type": "SEQ", "members": [ { "type": "STRING", "value": ":" }, { "type": "FIELD", "name": "type", "content": { "type": "SYMBOL", "name": "_constant_type" } } ] }, "constant_tuple_type": { "type": "SEQ", "members": [ { "type": "STRING", "value": "#" }, { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_constant_type" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_constant_type" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "constant_function_type": { "type": "SEQ", "members": [ { "type": "STRING", "value": "fn" }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "parameter_types", "content": { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_function_parameter_types" }, "named": true, "value": "function_parameter_types" } }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "->" }, { "type": "FIELD", "name": "return_type", "content": { "type": "SYMBOL", "name": "_constant_type" } } ] }, "constant_function_parameter_types": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_constant_type" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_constant_type" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "constant_type": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "type_identifier" }, { "type": "SYMBOL", "name": "remote_type_identifier" } ] } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "arguments", "content": { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_type_arguments" }, "named": true, "value": "type_arguments" } }, { "type": "BLANK" } ] } ] }, "constant_type_arguments": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_type_argument" }, "named": true, "value": "type_argument" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "constant_type_argument" }, "named": true, "value": "type_argument" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "constant_type_argument": { "type": "SYMBOL", "name": "_constant_type" }, "external_type": { "type": "PREC_RIGHT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "visibility_modifier" }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "external" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "type" }, { "type": "SYMBOL", "name": "type_name" } ] } }, "external_function": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "visibility_modifier" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "external" }, { "type": "STRING", "value": "fn" }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "FIELD", "name": "parameters", "content": { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "external_function_parameters" }, "named": true, "value": "function_parameters" } }, { "type": "STRING", "value": "->" }, { "type": "FIELD", "name": "return_type", "content": { "type": "SYMBOL", "name": "_type" } }, { "type": "STRING", "value": "=" }, { "type": "FIELD", "name": "body", "content": { "type": "SYMBOL", "name": "external_function_body" } } ] }, "external_function_parameters": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "external_function_parameter" }, "named": true, "value": "function_parameter" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "external_function_parameter" }, "named": true, "value": "function_parameter" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "external_function_parameter": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": ":" } ] }, { "type": "BLANK" } ] }, { "type": "FIELD", "name": "type", "content": { "type": "SYMBOL", "name": "_type" } } ] }, "external_function_body": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "string" } ] }, "function": { "type": "PREC_RIGHT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "visibility_modifier" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "fn" }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "FIELD", "name": "parameters", "content": { "type": "SYMBOL", "name": "function_parameters" } }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "->" }, { "type": "FIELD", "name": "return_type", "content": { "type": "SYMBOL", "name": "_type" } } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "body", "content": { "type": "SYMBOL", "name": "block" } }, { "type": "BLANK" } ] } ] } }, "function_parameters": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "function_parameter" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "function_parameter" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "function_parameter": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_labeled_discard_param" }, { "type": "SYMBOL", "name": "_discard_param" }, { "type": "SYMBOL", "name": "_labeled_name_param" }, { "type": "SYMBOL", "name": "_name_param" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_type_annotation" }, { "type": "BLANK" } ] } ] }, "_labeled_discard_param": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "label", "content": { "type": "SYMBOL", "name": "label" } }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "discard" } } ] }, "_discard_param": { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "discard" } }, "_labeled_name_param": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "label", "content": { "type": "SYMBOL", "name": "label" } }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } } ] }, "_name_param": { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, "_statement_seq": { "type": "REPEAT1", "content": { "type": "SYMBOL", "name": "_statement" } }, "_statement": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_expression" }, { "type": "SYMBOL", "name": "let" }, { "type": "SYMBOL", "name": "let_assert" }, { "type": "SYMBOL", "name": "use" }, { "type": "SYMBOL", "name": "assert" } ] }, "_expression": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_expression_unit" }, { "type": "SYMBOL", "name": "binary_expression" } ] }, "binary_expression": { "type": "CHOICE", "members": [ { "type": "PREC_LEFT", "value": 1, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "||" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 2, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "&&" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 3, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "==" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 3, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "!=" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "<" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "<=" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "<." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "<=." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": ">" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": ">=" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": ">." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": ">=." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 5, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "|>" } }, { "type": "FIELD", "name": "right", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "pipeline_echo" }, { "type": "SYMBOL", "name": "_expression" } ] } } ] } }, { "type": "PREC_LEFT", "value": 6, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "+" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 6, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "+." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 6, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "-" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 6, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "-." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 7, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "*" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 7, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "*." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 7, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "/" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 7, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "/." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 7, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "%" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } }, { "type": "PREC_LEFT", "value": 7, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "<>" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_expression" } } ] } } ] }, "_expression_unit": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "integer" }, { "type": "SYMBOL", "name": "float" }, { "type": "SYMBOL", "name": "record" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "todo" }, { "type": "SYMBOL", "name": "panic" }, { "type": "SYMBOL", "name": "tuple" }, { "type": "SYMBOL", "name": "echo" }, { "type": "SYMBOL", "name": "list" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_expression_bit_string" }, "named": true, "value": "bit_string" }, { "type": "SYMBOL", "name": "anonymous_function" }, { "type": "SYMBOL", "name": "block" }, { "type": "SYMBOL", "name": "case" }, { "type": "SYMBOL", "name": "boolean_negation" }, { "type": "SYMBOL", "name": "integer_negation" }, { "type": "SYMBOL", "name": "record_update" }, { "type": "SYMBOL", "name": "tuple_access" }, { "type": "SYMBOL", "name": "field_access" }, { "type": "SYMBOL", "name": "function_call" } ] }, "record": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "constructor_name" }, { "type": "SYMBOL", "name": "remote_constructor_name" } ] } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "arguments", "content": { "type": "SYMBOL", "name": "arguments" } }, { "type": "BLANK" } ] } ] }, "todo": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "todo" }, { "type": "CHOICE", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "FIELD", "name": "message", "content": { "type": "SYMBOL", "name": "string" } }, { "type": "STRING", "value": ")" } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "as" }, { "type": "FIELD", "name": "message", "content": { "type": "SYMBOL", "name": "_expression" } } ] } ] }, { "type": "BLANK" } ] } ] } }, "panic": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "panic" }, { "type": "CHOICE", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "FIELD", "name": "message", "content": { "type": "SYMBOL", "name": "string" } }, { "type": "STRING", "value": ")" } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "as" }, { "type": "FIELD", "name": "message", "content": { "type": "SYMBOL", "name": "_expression" } } ] } ] }, { "type": "BLANK" } ] } ] } }, "pipeline_echo": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "echo" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "as" }, { "type": "FIELD", "name": "message", "content": { "type": "SYMBOL", "name": "_expression_unit" } } ] }, { "type": "BLANK" } ] } ] } }, "echo": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "echo" }, { "type": "SYMBOL", "name": "_expression" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "as" }, { "type": "FIELD", "name": "message", "content": { "type": "SYMBOL", "name": "_expression" } } ] }, { "type": "BLANK" } ] } ] } }, "tuple": { "type": "SEQ", "members": [ { "type": "STRING", "value": "#" }, { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_expression" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_expression" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "list": { "type": "SEQ", "members": [ { "type": "STRING", "value": "[" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_expression" }, { "type": "CHOICE", "members": [ { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_expression" } ] } }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": ".." }, { "type": "FIELD", "name": "spread", "content": { "type": "SYMBOL", "name": "_expression" } } ] }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "]" } ] }, "_expression_bit_string": { "type": "SEQ", "members": [ { "type": "STRING", "value": "<<" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "expression_bit_string_segment" }, "named": true, "value": "bit_string_segment" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "expression_bit_string_segment" }, "named": true, "value": "bit_string_segment" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ">>" } ] }, "expression_bit_string_segment": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_expression_unit" } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "options", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": ":" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "expression_bit_string_segment_options" }, "named": true, "value": "bit_string_segment_options" } ] } }, { "type": "BLANK" } ] } ] }, "expression_bit_string_segment_options": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_expression_bit_string_segment_option" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "-" }, { "type": "SYMBOL", "name": "_expression_bit_string_segment_option" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "-" }, { "type": "BLANK" } ] } ] }, "_expression_bit_string_segment_option": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_expression_bit_string_named_segment_option" }, { "type": "SYMBOL", "name": "integer" } ] }, "_expression_bit_string_named_segment_option": { "type": "ALIAS", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_bit_string_segment_option" }, { "type": "SYMBOL", "name": "_expression_bit_string_segment_option_size" } ] }, "named": true, "value": "bit_string_segment_option" }, "_expression_bit_string_segment_option_size": { "type": "SEQ", "members": [ { "type": "STRING", "value": "size" }, { "type": "STRING", "value": "(" }, { "type": "SYMBOL", "name": "_expression" }, { "type": "STRING", "value": ")" } ] }, "anonymous_function": { "type": "SEQ", "members": [ { "type": "STRING", "value": "fn" }, { "type": "FIELD", "name": "parameters", "content": { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "anonymous_function_parameters" }, "named": true, "value": "function_parameters" } }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "->" }, { "type": "FIELD", "name": "return_type", "content": { "type": "SYMBOL", "name": "_type" } } ] }, { "type": "BLANK" } ] }, { "type": "FIELD", "name": "body", "content": { "type": "SYMBOL", "name": "block" } } ] }, "anonymous_function_parameters": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "anonymous_function_parameter" }, "named": true, "value": "function_parameter" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "anonymous_function_parameter" }, "named": true, "value": "function_parameter" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "anonymous_function_parameter": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_discard_param" }, { "type": "SYMBOL", "name": "_name_param" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_type_annotation" }, { "type": "BLANK" } ] } ] }, "block": { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_statement_seq" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "}" } ] }, "case": { "type": "SEQ", "members": [ { "type": "STRING", "value": "case" }, { "type": "FIELD", "name": "subjects", "content": { "type": "SYMBOL", "name": "case_subjects" } }, { "type": "STRING", "value": "{" }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "clauses", "content": { "type": "SYMBOL", "name": "case_clauses" } }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "}" } ] }, "case_subjects": { "type": "SEQ", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_expression" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_expression" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] } ] }, "case_clauses": { "type": "REPEAT1", "content": { "type": "SYMBOL", "name": "case_clause" } }, "case_clause": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "patterns", "content": { "type": "SYMBOL", "name": "case_clause_patterns" } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "guard", "content": { "type": "SYMBOL", "name": "case_clause_guard" } }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "->" }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_expression" } } ] }, "case_clause_patterns": { "type": "SEQ", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "case_clause_pattern" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "|" }, { "type": "SYMBOL", "name": "case_clause_pattern" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "|" }, { "type": "BLANK" } ] } ] } ] }, "case_clause_pattern": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_pattern" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_pattern" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, "case_clause_guard": { "type": "SEQ", "members": [ { "type": "STRING", "value": "if" }, { "type": "SYMBOL", "name": "_case_clause_guard_expression" } ] }, "_case_clause_guard_expression": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_case_clause_guard_unit" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_case_clause_guard_binary_expression" }, "named": true, "value": "binary_expression" }, { "type": "SYMBOL", "name": "boolean_negation" } ] }, "_case_clause_guard_binary_expression": { "type": "CHOICE", "members": [ { "type": "PREC_LEFT", "value": 1, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "||" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 2, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "&&" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 3, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "==" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 3, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "!=" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "<" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "<=" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "<." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "<=." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": ">" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": ">=" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": ">." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 4, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": ">=." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 5, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "+" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 5, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "+." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 5, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "-" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 5, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "-." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 6, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "*" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 6, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "*." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 6, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "/" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 6, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "/." } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } }, { "type": "PREC_LEFT", "value": 6, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "%" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_case_clause_guard_expression" } } ] } } ] }, "_case_clause_guard_unit": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "PREC", "value": 1, "content": { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_case_clause_tuple_access" }, "named": true, "value": "tuple_access" } }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "SYMBOL", "name": "_case_clause_guard_expression" }, { "type": "STRING", "value": "}" } ] }, { "type": "SYMBOL", "name": "_constant_value" } ] }, "_case_clause_tuple_access": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "tuple", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "." }, { "type": "FIELD", "name": "index", "content": { "type": "SYMBOL", "name": "integer" } } ] }, "let_assert": { "type": "SEQ", "members": [ { "type": "STRING", "value": "let" }, { "type": "STRING", "value": "assert" }, { "type": "SYMBOL", "name": "_assignment" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "as" }, { "type": "FIELD", "name": "message", "content": { "type": "SYMBOL", "name": "_expression" } } ] }, { "type": "BLANK" } ] } ] }, "assert": { "type": "SEQ", "members": [ { "type": "STRING", "value": "assert" }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "as" }, { "type": "FIELD", "name": "message", "content": { "type": "SYMBOL", "name": "_expression" } } ] }, { "type": "BLANK" } ] } ] }, "let": { "type": "SEQ", "members": [ { "type": "STRING", "value": "let" }, { "type": "SYMBOL", "name": "_assignment" } ] }, "use": { "type": "SEQ", "members": [ { "type": "STRING", "value": "use" }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "assignments", "content": { "type": "SYMBOL", "name": "use_assignments" } }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "<-" }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_expression" } } ] }, "use_assignments": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "use_assignment" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "use_assignment" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, "use_assignment": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_pattern" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_type_annotation" }, { "type": "BLANK" } ] } ] }, "boolean_negation": { "type": "SEQ", "members": [ { "type": "STRING", "value": "!" }, { "type": "SYMBOL", "name": "_expression_unit" } ] }, "integer_negation": { "type": "SEQ", "members": [ { "type": "STRING", "value": "-" }, { "type": "SYMBOL", "name": "_expression_unit" } ] }, "_assignment": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "pattern", "content": { "type": "SYMBOL", "name": "_pattern" } }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_type_annotation" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "=" }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_expression" } } ] }, "record_update": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "constructor", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "constructor_name" }, { "type": "SYMBOL", "name": "remote_constructor_name" } ] } }, { "type": "STRING", "value": "(" }, { "type": "STRING", "value": ".." }, { "type": "FIELD", "name": "spread", "content": { "type": "SYMBOL", "name": "_expression" } }, { "type": "STRING", "value": "," }, { "type": "FIELD", "name": "arguments", "content": { "type": "SYMBOL", "name": "record_update_arguments" } }, { "type": "STRING", "value": ")" } ] }, "record_update_arguments": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "record_update_argument" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "record_update_argument" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, "record_update_argument": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "FIELD", "name": "label", "content": { "type": "SYMBOL", "name": "label" } }, { "type": "STRING", "value": ":" }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_expression" } } ] }, { "type": "SEQ", "members": [ { "type": "FIELD", "name": "label", "content": { "type": "SYMBOL", "name": "label" } }, { "type": "STRING", "value": ":" } ] } ] }, "_maybe_tuple_expression": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "function_call" }, { "type": "SYMBOL", "name": "tuple" }, { "type": "SYMBOL", "name": "block" }, { "type": "SYMBOL", "name": "case" }, { "type": "SYMBOL", "name": "field_access" }, { "type": "SYMBOL", "name": "tuple_access" } ] }, "tuple_access": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "tuple", "content": { "type": "SYMBOL", "name": "_maybe_tuple_expression" } }, { "type": "STRING", "value": "." }, { "type": "FIELD", "name": "index", "content": { "type": "SYMBOL", "name": "integer" } } ] } }, "_maybe_record_expression": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "record" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "function_call" }, { "type": "SYMBOL", "name": "block" }, { "type": "SYMBOL", "name": "case" }, { "type": "SYMBOL", "name": "record_update" }, { "type": "SYMBOL", "name": "field_access" }, { "type": "SYMBOL", "name": "tuple_access" } ] }, "field_access": { "type": "PREC_LEFT", "value": 0, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "record", "content": { "type": "SYMBOL", "name": "_maybe_record_expression" } }, { "type": "STRING", "value": "." }, { "type": "FIELD", "name": "field", "content": { "type": "SYMBOL", "name": "label" } } ] } }, "_maybe_function_expression": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "anonymous_function" }, { "type": "SYMBOL", "name": "block" }, { "type": "SYMBOL", "name": "case" }, { "type": "SYMBOL", "name": "tuple_access" }, { "type": "SYMBOL", "name": "field_access" }, { "type": "SYMBOL", "name": "function_call" } ] }, "arguments": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "argument" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "argument" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "argument": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "FIELD", "name": "label", "content": { "type": "SYMBOL", "name": "label" } }, { "type": "STRING", "value": ":" } ] }, { "type": "BLANK" } ] }, { "type": "FIELD", "name": "value", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "hole" }, { "type": "SYMBOL", "name": "_expression" } ] } } ] }, { "type": "SEQ", "members": [ { "type": "FIELD", "name": "label", "content": { "type": "SYMBOL", "name": "label" } }, { "type": "STRING", "value": ":" } ] } ] }, "hole": { "type": "SYMBOL", "name": "_discard_name" }, "function_call": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "function", "content": { "type": "SYMBOL", "name": "_maybe_function_expression" } }, { "type": "FIELD", "name": "arguments", "content": { "type": "SYMBOL", "name": "arguments" } } ] }, "_pattern_expression": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "discard" }, { "type": "SYMBOL", "name": "record_pattern" }, { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "integer" }, { "type": "SYMBOL", "name": "float" }, { "type": "SYMBOL", "name": "tuple_pattern" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_pattern_bit_string" }, "named": true, "value": "bit_string_pattern" }, { "type": "SYMBOL", "name": "list_pattern" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_pattern_binary_expression" }, "named": true, "value": "binary_expression" } ] }, "_pattern_binary_expression": { "type": "CHOICE", "members": [ { "type": "PREC_LEFT", "value": 1, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "_pattern_expression" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "<>" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "_pattern_expression" } } ] } }, { "type": "PREC_LEFT", "value": 1, "content": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "left", "content": { "type": "SYMBOL", "name": "string" } }, { "type": "FIELD", "name": "operator", "content": { "type": "STRING", "value": "as" } }, { "type": "FIELD", "name": "right", "content": { "type": "SYMBOL", "name": "identifier" } } ] } } ] }, "_pattern": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_pattern_expression" }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "assign", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "as" }, { "type": "SYMBOL", "name": "identifier" } ] } }, { "type": "BLANK" } ] } ] }, "record_pattern": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "constructor_name" }, { "type": "SYMBOL", "name": "remote_constructor_name" } ] } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "arguments", "content": { "type": "SYMBOL", "name": "record_pattern_arguments" } }, { "type": "BLANK" } ] } ] }, "record_pattern_arguments": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "record_pattern_argument" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "record_pattern_argument" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "pattern_spread" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "record_pattern_argument": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "FIELD", "name": "label", "content": { "type": "SYMBOL", "name": "label" } }, { "type": "STRING", "value": ":" } ] }, { "type": "BLANK" } ] }, { "type": "FIELD", "name": "pattern", "content": { "type": "SYMBOL", "name": "_pattern" } } ] }, { "type": "SEQ", "members": [ { "type": "FIELD", "name": "label", "content": { "type": "SYMBOL", "name": "label" } }, { "type": "STRING", "value": ":" } ] } ] }, "pattern_spread": { "type": "SEQ", "members": [ { "type": "STRING", "value": ".." }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, "tuple_pattern": { "type": "SEQ", "members": [ { "type": "STRING", "value": "#" }, { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_pattern" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_pattern" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "_pattern_bit_string": { "type": "SEQ", "members": [ { "type": "STRING", "value": "<<" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "pattern_bit_string_segment" }, "named": true, "value": "bit_string_segment" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "pattern_bit_string_segment" }, "named": true, "value": "bit_string_segment" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ">>" } ] }, "pattern_bit_string_segment": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_pattern" } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "options", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": ":" }, { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "pattern_bit_string_segment_options" }, "named": true, "value": "bit_string_segment_options" } ] } }, { "type": "BLANK" } ] } ] }, "pattern_bit_string_segment_options": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_pattern_bit_string_segment_option" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "-" }, { "type": "SYMBOL", "name": "_pattern_bit_string_segment_option" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "-" }, { "type": "BLANK" } ] } ] }, "_pattern_bit_string_segment_option": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_pattern_bit_string_named_segment_option" }, { "type": "SYMBOL", "name": "integer" } ] }, "_pattern_bit_string_named_segment_option": { "type": "ALIAS", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_bit_string_segment_option" }, { "type": "SYMBOL", "name": "_pattern_bit_string_segment_option_size" } ] }, "named": true, "value": "bit_string_segment_option" }, "_pattern_bit_string_segment_option_size": { "type": "SEQ", "members": [ { "type": "STRING", "value": "size" }, { "type": "STRING", "value": "(" }, { "type": "SYMBOL", "name": "_pattern_bit_string_segment_argument" }, { "type": "STRING", "value": ")" } ] }, "_pattern_bit_string_segment_argument": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "integer" } ] }, "list_pattern": { "type": "SEQ", "members": [ { "type": "STRING", "value": "[" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_pattern" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_pattern" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "list_pattern_tail" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "]" } ] }, "list_pattern_tail": { "type": "SEQ", "members": [ { "type": "STRING", "value": ".." }, { "type": "CHOICE", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "discard" } ] }, { "type": "BLANK" } ] } ] }, "visibility_modifier": { "type": "STRING", "value": "pub" }, "opacity_modifier": { "type": "STRING", "value": "opaque" }, "type_definition": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "visibility_modifier" }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "opacity_modifier" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "type" }, { "type": "SYMBOL", "name": "type_name" }, { "type": "STRING", "value": "{" }, { "type": "SYMBOL", "name": "data_constructors" }, { "type": "STRING", "value": "}" } ] }, "data_constructors": { "type": "REPEAT1", "content": { "type": "SYMBOL", "name": "data_constructor" } }, "data_constructor": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "attribute" }, { "type": "BLANK" } ] }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "constructor_name" } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "arguments", "content": { "type": "SYMBOL", "name": "data_constructor_arguments" } }, { "type": "BLANK" } ] } ] }, "data_constructor_arguments": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "data_constructor_argument" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "data_constructor_argument" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "data_constructor_argument": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "FIELD", "name": "label", "content": { "type": "SYMBOL", "name": "label" } }, { "type": "STRING", "value": ":" } ] }, { "type": "BLANK" } ] }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "_type" } } ] }, "type_alias": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "visibility_modifier" }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "opacity_modifier" }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "type" }, { "type": "SYMBOL", "name": "type_name" }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "_type" } ] }, "string": { "type": "SEQ", "members": [ { "type": "STRING", "value": "\"" }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "escape_sequence" }, { "type": "SYMBOL", "name": "quoted_content" } ] } }, { "type": "IMMEDIATE_TOKEN", "content": { "type": "STRING", "value": "\"" } } ] }, "escape_sequence": { "type": "CHOICE", "members": [ { "type": "IMMEDIATE_TOKEN", "content": { "type": "PATTERN", "value": "\\\\[efnrt\\\"\\\\]" } }, { "type": "IMMEDIATE_TOKEN", "content": { "type": "PATTERN", "value": "\\\\u\\{[0-9a-fA-F]{1,6}\\}" } } ] }, "float": { "type": "PATTERN", "value": "-?[0-9_]+\\.[0-9_]*(e-?[0-9_]+)?" }, "integer": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "STRING", "value": "-" }, { "type": "BLANK" } ] }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "_hex" }, { "type": "SYMBOL", "name": "_decimal" }, { "type": "SYMBOL", "name": "_octal" }, { "type": "SYMBOL", "name": "_binary" } ] } ] }, "_hex": { "type": "PATTERN", "value": "0[xX][0-9a-fA-F_]+" }, "_decimal": { "type": "PATTERN", "value": "[0-9][0-9_]*" }, "_octal": { "type": "PATTERN", "value": "0[oO][0-7_]+" }, "_binary": { "type": "PATTERN", "value": "0[bB][0-1_]+" }, "_bit_string_segment_option": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "binary" }, { "type": "STRING", "value": "bytes" }, { "type": "STRING", "value": "int" }, { "type": "STRING", "value": "float" }, { "type": "STRING", "value": "bit_string" }, { "type": "STRING", "value": "bits" }, { "type": "STRING", "value": "utf8" }, { "type": "STRING", "value": "utf16" }, { "type": "STRING", "value": "utf32" }, { "type": "STRING", "value": "utf8_codepoint" }, { "type": "STRING", "value": "utf16_codepoint" }, { "type": "STRING", "value": "utf32_codepoint" }, { "type": "STRING", "value": "signed" }, { "type": "STRING", "value": "unsigned" }, { "type": "STRING", "value": "big" }, { "type": "STRING", "value": "little" }, { "type": "STRING", "value": "native" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "unit" }, { "type": "STRING", "value": "(" }, { "type": "SYMBOL", "name": "integer" }, { "type": "STRING", "value": ")" } ] } ] }, "_type": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "type_hole" }, { "type": "SYMBOL", "name": "tuple_type" }, { "type": "SYMBOL", "name": "function_type" }, { "type": "SYMBOL", "name": "type" }, { "type": "SYMBOL", "name": "type_var" } ] }, "_type_annotation": { "type": "SEQ", "members": [ { "type": "STRING", "value": ":" }, { "type": "FIELD", "name": "type", "content": { "type": "SYMBOL", "name": "_type" } } ] }, "type_hole": { "type": "SYMBOL", "name": "_discard_name" }, "tuple_type": { "type": "SEQ", "members": [ { "type": "STRING", "value": "#" }, { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_type" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_type" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "function_type": { "type": "SEQ", "members": [ { "type": "STRING", "value": "fn" }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "parameter_types", "content": { "type": "SYMBOL", "name": "function_parameter_types" } }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "->" }, { "type": "FIELD", "name": "return_type", "content": { "type": "SYMBOL", "name": "_type" } } ] }, "function_parameter_types": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_type" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "_type" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "type": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "type_identifier" }, { "type": "SYMBOL", "name": "remote_type_identifier" } ] } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "arguments", "content": { "type": "SYMBOL", "name": "type_arguments" } }, { "type": "BLANK" } ] } ] }, "type_arguments": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "type_argument" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "type_argument" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "type_argument": { "type": "SYMBOL", "name": "_type" }, "type_var": { "type": "SYMBOL", "name": "_name" }, "type_name": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "type_identifier" }, { "type": "SYMBOL", "name": "remote_type_identifier" } ] } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "parameters", "content": { "type": "SYMBOL", "name": "type_parameters" } }, { "type": "BLANK" } ] } ] }, "type_parameters": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "type_parameter" }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "SYMBOL", "name": "type_parameter" } ] } }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "," }, { "type": "BLANK" } ] } ] }, { "type": "BLANK" } ] }, { "type": "STRING", "value": ")" } ] }, "type_parameter": { "type": "SYMBOL", "name": "_name" }, "identifier": { "type": "SYMBOL", "name": "_name" }, "label": { "type": "SYMBOL", "name": "_name" }, "discard": { "type": "SYMBOL", "name": "_discard_name" }, "type_identifier": { "type": "SYMBOL", "name": "_upname" }, "remote_type_identifier": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "module", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "." }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "type_identifier" } } ] }, "constructor_name": { "type": "SYMBOL", "name": "_upname" }, "remote_constructor_name": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "module", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "." }, { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "constructor_name" } } ] }, "_discard_name": { "type": "PATTERN", "value": "_[_0-9a-z]*" }, "_name": { "type": "PATTERN", "value": "[_a-z][_0-9a-z]*" }, "_upname": { "type": "PATTERN", "value": "[A-Z][0-9a-zA-Z]*" } }, "extras": [ { "type": "PATTERN", "value": "\\r?\\n" }, { "type": "PATTERN", "value": "\\s" }, { "type": "SYMBOL", "name": "module_comment" }, { "type": "SYMBOL", "name": "statement_comment" }, { "type": "SYMBOL", "name": "comment" } ], "conflicts": [ [ "_maybe_record_expression", "_maybe_tuple_expression" ], [ "_maybe_record_expression", "_maybe_tuple_expression", "remote_constructor_name" ], [ "case_subjects" ], [ "source_file" ], [ "_constant_value", "_case_clause_guard_unit" ], [ "integer" ] ], "precedences": [], "externals": [ { "type": "SYMBOL", "name": "quoted_content" }, { "type": "SYMBOL", "name": "doc_comment_content" } ], "inline": [], "supertypes": [], "reserved": {} }