From ea40325cea1af68d3433fd5d08e43d2a18b87851 Mon Sep 17 00:00:00 2001 From: Mark McCulloh Date: Sun, 24 Mar 2024 14:45:59 -0400 Subject: [PATCH] chore: commit grammar.json in tree-sitter-wing (#6047) Fixes #6043 Grammar updates aren't happening too frequently, so this hopefully shouldn't cause much trouble. *By submitting this pull request, I confirm that my contribution is made under the terms of the [Wing Cloud Contribution License](https://github.com/winglang/wing/blob/main/CONTRIBUTION_LICENSE.md)*. --- libs/tree-sitter-wing/.gitattributes | 1 + libs/tree-sitter-wing/.gitignore | 1 + libs/tree-sitter-wing/src/grammar.json | 4567 ++++++++++++++++++++++++ 3 files changed, 4569 insertions(+) create mode 100644 libs/tree-sitter-wing/.gitattributes create mode 100644 libs/tree-sitter-wing/src/grammar.json diff --git a/libs/tree-sitter-wing/.gitattributes b/libs/tree-sitter-wing/.gitattributes new file mode 100644 index 00000000000..feccd39bb70 --- /dev/null +++ b/libs/tree-sitter-wing/.gitattributes @@ -0,0 +1 @@ +/src/grammar.json linguist-generated diff --git a/libs/tree-sitter-wing/.gitignore b/libs/tree-sitter-wing/.gitignore index 6d684d8b8a5..219bf0d7f50 100644 --- a/libs/tree-sitter-wing/.gitignore +++ b/libs/tree-sitter-wing/.gitignore @@ -1,4 +1,5 @@ /src/* !/src/scanner.c +!/src/grammar.json /log.html /*.wasm diff --git a/libs/tree-sitter-wing/src/grammar.json b/libs/tree-sitter-wing/src/grammar.json new file mode 100644 index 00000000000..220290be776 --- /dev/null +++ b/libs/tree-sitter-wing/src/grammar.json @@ -0,0 +1,4567 @@ +{ + "name": "wing", + "word": "identifier", + "rules": { + "source": { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_statement" + } + }, + "block": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_statement" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + { + "type": "SYMBOL", + "name": "AUTOMATIC_BLOCK" + } + ] + }, + "_semicolon": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": ";" + }, + { + "type": "SYMBOL", + "name": "AUTOMATIC_SEMICOLON" + } + ] + }, + "comment": { + "type": "TOKEN", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "//" + }, + { + "type": "PATTERN", + "value": ".*" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "/*" + }, + { + "type": "PATTERN", + "value": "[^*]*\\*+([^/*][^*]*\\*+)*" + }, + { + "type": "STRING", + "value": "/" + } + ] + } + ] + } + }, + "reference": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "nested_identifier" + }, + { + "type": "SYMBOL", + "name": "_reference_identifier" + }, + { + "type": "SYMBOL", + "name": "structured_access_expression" + } + ] + }, + "identifier": { + "type": "PATTERN", + "value": "([A-Za-z_$][A-Za-z_$0-9]*|[A-Z][A-Z0-9_]*)" + }, + "_type_identifier": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "type_identifier" + }, + "_member_identifier": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "member_identifier" + }, + "_reference_identifier": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "reference_identifier" + }, + "custom_type": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "object", + "content": { + "type": "SYMBOL", + "name": "_type_identifier" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "." + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "fields", + "content": { + "type": "SYMBOL", + "name": "_type_identifier" + } + }, + { + "type": "BLANK" + } + ] + } + ] + } + } + ] + } + }, + "nested_identifier": { + "type": "PREC", + "value": 150, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "object", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "json_container_type" + } + ] + } + }, + { + "type": "FIELD", + "name": "accessor_type", + "content": { + "type": "SYMBOL", + "name": "accessor" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "property", + "content": { + "type": "SYMBOL", + "name": "_member_identifier" + } + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "accessor": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "." + }, + { + "type": "STRING", + "value": "?." + } + ] + }, + "inflight_specifier": { + "type": "STRING", + "value": "inflight" + }, + "_statement": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "test_statement" + }, + { + "type": "SYMBOL", + "name": "import_statement" + }, + { + "type": "SYMBOL", + "name": "expression_statement" + }, + { + "type": "SYMBOL", + "name": "variable_definition_statement" + }, + { + "type": "SYMBOL", + "name": "variable_assignment_statement" + }, + { + "type": "SYMBOL", + "name": "return_statement" + }, + { + "type": "SYMBOL", + "name": "class_definition" + }, + { + "type": "SYMBOL", + "name": "interface_definition" + }, + { + "type": "SYMBOL", + "name": "for_in_loop" + }, + { + "type": "SYMBOL", + "name": "while_statement" + }, + { + "type": "SYMBOL", + "name": "break_statement" + }, + { + "type": "SYMBOL", + "name": "continue_statement" + }, + { + "type": "SYMBOL", + "name": "if_statement" + }, + { + "type": "SYMBOL", + "name": "if_let_statement" + }, + { + "type": "SYMBOL", + "name": "struct_definition" + }, + { + "type": "SYMBOL", + "name": "enum_definition" + }, + { + "type": "SYMBOL", + "name": "try_catch_statement" + }, + { + "type": "SYMBOL", + "name": "compiler_dbg_env" + }, + { + "type": "SYMBOL", + "name": "super_constructor_statement" + }, + { + "type": "SYMBOL", + "name": "throw_statement" + } + ] + }, + "import_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "bring" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "module_name", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SYMBOL", + "name": "string" + } + ] + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "as" + }, + { + "type": "FIELD", + "name": "alias", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_semicolon" + } + ] + }, + "struct_definition": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "access_modifier", + "content": { + "type": "SYMBOL", + "name": "access_modifier" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "struct" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "extends" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "extends", + "content": { + "type": "SYMBOL", + "name": "custom_type" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "extends", + "content": { + "type": "SYMBOL", + "name": "custom_type" + } + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "REPEAT", + "content": { + "type": "FIELD", + "name": "field", + "content": { + "type": "SYMBOL", + "name": "struct_field" + } + } + }, + { + "type": "STRING", + "value": "}" + } + ] + } + ] + }, + "struct_field": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "SYMBOL", + "name": "_type_annotation" + }, + { + "type": "SYMBOL", + "name": "_semicolon" + } + ] + }, + "enum_definition": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "access_modifier", + "content": { + "type": "SYMBOL", + "name": "access_modifier" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "enum" + }, + { + "type": "FIELD", + "name": "enum_name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "enum_field" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "enum_field" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + } + ] + }, + "return_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "return" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "expression", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_semicolon" + } + ] + }, + "throw_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "throw" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "expression", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_semicolon" + } + ] + }, + "assignment_operator": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "=" + }, + { + "type": "STRING", + "value": "+=" + }, + { + "type": "STRING", + "value": "-=" + } + ] + }, + "variable_assignment_statement": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "reference" + }, + "named": true, + "value": "lvalue" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "SYMBOL", + "name": "assignment_operator" + } + }, + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "SYMBOL", + "name": "_semicolon" + } + ] + }, + "expression_statement": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "_semicolon" + } + ] + }, + "reassignable": { + "type": "STRING", + "value": "var" + }, + "static": { + "type": "STRING", + "value": "static" + }, + "variable_definition_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "let" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "reassignable", + "content": { + "type": "SYMBOL", + "name": "reassignable" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_type_annotation" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "SYMBOL", + "name": "_semicolon" + } + ] + }, + "_type_annotation": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "_type" + } + } + ] + }, + "class_modifiers": { + "type": "REPEAT1", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "access_modifier" + }, + { + "type": "SYMBOL", + "name": "inflight_specifier" + } + ] + } + }, + "class_definition": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "modifiers", + "content": { + "type": "SYMBOL", + "name": "class_modifiers" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "class" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "extends" + }, + { + "type": "FIELD", + "name": "parent", + "content": { + "type": "SYMBOL", + "name": "custom_type" + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "impl" + }, + { + "type": "FIELD", + "name": "implements", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "custom_type" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "custom_type" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "implementation", + "content": { + "type": "SYMBOL", + "name": "class_implementation" + } + } + ] + }, + "class_implementation": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "initializer" + }, + { + "type": "SYMBOL", + "name": "method_definition" + }, + { + "type": "SYMBOL", + "name": "class_field" + } + ] + } + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "field_modifiers": { + "type": "REPEAT1", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "access_modifier" + }, + { + "type": "SYMBOL", + "name": "static" + }, + { + "type": "SYMBOL", + "name": "inflight_specifier" + }, + { + "type": "SYMBOL", + "name": "reassignable" + } + ] + } + }, + "class_field": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "modifiers", + "content": { + "type": "SYMBOL", + "name": "field_modifiers" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "SYMBOL", + "name": "_type_annotation" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "initializer", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_semicolon" + } + ] + }, + "interface_definition": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "access_modifier", + "content": { + "type": "SYMBOL", + "name": "access_modifier" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "interface" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "extends" + }, + { + "type": "FIELD", + "name": "extends", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "custom_type" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "custom_type" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "implementation", + "content": { + "type": "SYMBOL", + "name": "interface_implementation" + } + } + ] + }, + "interface_implementation": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "method_signature" + }, + { + "type": "SYMBOL", + "name": "inflight_method_signature" + }, + { + "type": "SYMBOL", + "name": "class_field" + } + ] + } + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "inclusive_range": { + "type": "STRING", + "value": "=" + }, + "loop_range": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "start", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "STRING", + "value": ".." + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "inclusive", + "content": { + "type": "SYMBOL", + "name": "inclusive_range" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "end", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + }, + "for_in_loop": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "for" + }, + { + "type": "FIELD", + "name": "iterator", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "STRING", + "value": "in" + }, + { + "type": "FIELD", + "name": "iterable", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "loop_range" + } + ] + } + }, + { + "type": "FIELD", + "name": "block", + "content": { + "type": "SYMBOL", + "name": "block" + } + } + ] + }, + "while_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "while" + }, + { + "type": "FIELD", + "name": "condition", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "block", + "content": { + "type": "SYMBOL", + "name": "block" + } + } + ] + }, + "break_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "break" + }, + { + "type": "SYMBOL", + "name": "_semicolon" + } + ] + }, + "_super": { + "type": "STRING", + "value": "super" + }, + "super_constructor_statement": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_super" + }, + { + "type": "FIELD", + "name": "args", + "content": { + "type": "SYMBOL", + "name": "argument_list" + } + }, + { + "type": "SYMBOL", + "name": "_semicolon" + } + ] + }, + "continue_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "continue" + }, + { + "type": "SYMBOL", + "name": "_semicolon" + } + ] + }, + "if_let_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "if" + }, + { + "type": "STRING", + "value": "let" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "reassignable", + "content": { + "type": "SYMBOL", + "name": "reassignable" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "block", + "content": { + "type": "SYMBOL", + "name": "block" + } + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "elif_let_block", + "content": { + "type": "SYMBOL", + "name": "elif_let_block" + } + }, + { + "type": "FIELD", + "name": "elif_block", + "content": { + "type": "SYMBOL", + "name": "elif_block" + } + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "else" + }, + { + "type": "FIELD", + "name": "else_block", + "content": { + "type": "SYMBOL", + "name": "block" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "elif_let_block": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "elif" + }, + { + "type": "STRING", + "value": "let" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "reassignable", + "content": { + "type": "SYMBOL", + "name": "reassignable" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "block", + "content": { + "type": "SYMBOL", + "name": "block" + } + } + ] + }, + "if_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "if" + }, + { + "type": "FIELD", + "name": "condition", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "block", + "content": { + "type": "SYMBOL", + "name": "block" + } + }, + { + "type": "REPEAT", + "content": { + "type": "FIELD", + "name": "elif_block", + "content": { + "type": "SYMBOL", + "name": "elif_block" + } + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "else" + }, + { + "type": "FIELD", + "name": "else_block", + "content": { + "type": "SYMBOL", + "name": "block" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "elif_block": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "elif" + }, + { + "type": "FIELD", + "name": "condition", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "block", + "content": { + "type": "SYMBOL", + "name": "block" + } + } + ] + }, + "try_catch_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "try" + }, + { + "type": "FIELD", + "name": "block", + "content": { + "type": "SYMBOL", + "name": "block" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "catch" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "exception_identifier", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "catch_block", + "content": { + "type": "SYMBOL", + "name": "block" + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "finally" + }, + { + "type": "FIELD", + "name": "finally_block", + "content": { + "type": "SYMBOL", + "name": "block" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "expression": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "unwrap_or" + }, + { + "type": "SYMBOL", + "name": "binary_expression" + }, + { + "type": "SYMBOL", + "name": "unary_expression" + }, + { + "type": "SYMBOL", + "name": "new_expression" + }, + { + "type": "SYMBOL", + "name": "_literal" + }, + { + "type": "SYMBOL", + "name": "reference" + }, + { + "type": "SYMBOL", + "name": "call" + }, + { + "type": "SYMBOL", + "name": "closure" + }, + { + "type": "SYMBOL", + "name": "await_expression" + }, + { + "type": "SYMBOL", + "name": "defer_expression" + }, + { + "type": "SYMBOL", + "name": "_collection_literal" + }, + { + "type": "SYMBOL", + "name": "parenthesized_expression" + }, + { + "type": "SYMBOL", + "name": "json_literal" + }, + { + "type": "SYMBOL", + "name": "struct_literal" + }, + { + "type": "SYMBOL", + "name": "optional_test" + }, + { + "type": "SYMBOL", + "name": "compiler_dbg_panic" + }, + { + "type": "SYMBOL", + "name": "optional_unwrap" + } + ] + }, + "_literal": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "string" + }, + { + "type": "SYMBOL", + "name": "number" + }, + { + "type": "SYMBOL", + "name": "bool" + }, + { + "type": "SYMBOL", + "name": "duration" + }, + { + "type": "SYMBOL", + "name": "nil_value" + } + ] + }, + "number": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_integer" + }, + { + "type": "SYMBOL", + "name": "_decimal" + } + ] + }, + "_integer": { + "type": "PATTERN", + "value": "\\d[\\d_]*" + }, + "_decimal": { + "type": "PATTERN", + "value": "\\d[\\d_]*\\.\\d[\\d_]*" + }, + "bool": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "true" + }, + { + "type": "STRING", + "value": "false" + } + ] + }, + "duration": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "milliseconds" + }, + { + "type": "SYMBOL", + "name": "seconds" + }, + { + "type": "SYMBOL", + "name": "minutes" + }, + { + "type": "SYMBOL", + "name": "hours" + }, + { + "type": "SYMBOL", + "name": "days" + }, + { + "type": "SYMBOL", + "name": "months" + }, + { + "type": "SYMBOL", + "name": "years" + } + ] + }, + "milliseconds": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "number" + } + }, + { + "type": "STRING", + "value": "ms" + } + ] + }, + "seconds": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "number" + } + }, + { + "type": "STRING", + "value": "s" + } + ] + }, + "minutes": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "number" + } + }, + { + "type": "STRING", + "value": "m" + } + ] + }, + "hours": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "number" + } + }, + { + "type": "STRING", + "value": "h" + } + ] + }, + "days": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "number" + } + }, + { + "type": "STRING", + "value": "d" + } + ] + }, + "months": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "number" + } + }, + { + "type": "STRING", + "value": "mo" + } + ] + }, + "years": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "value", + "content": { + "type": "SYMBOL", + "name": "number" + } + }, + { + "type": "STRING", + "value": "y" + } + ] + }, + "nil_value": { + "type": "STRING", + "value": "nil" + }, + "string": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "\"" + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_string_fragment" + }, + { + "type": "SYMBOL", + "name": "_escape_sequence" + }, + { + "type": "SYMBOL", + "name": "template_substitution" + } + ] + } + }, + { + "type": "STRING", + "value": "\"" + } + ] + }, + "template_substitution": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "_string_fragment": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "PREC", + "value": 1, + "content": { + "type": "PATTERN", + "value": "[^{\"\\\\]+" + } + } + }, + "_escape_sequence": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "\\" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "PATTERN", + "value": "[^xu0-7]" + }, + { + "type": "PATTERN", + "value": "[0-7]{1,3}" + }, + { + "type": "PATTERN", + "value": "x[0-9a-fA-F]{2}" + }, + { + "type": "PATTERN", + "value": "u[0-9a-fA-F]{4}" + }, + { + "type": "PATTERN", + "value": "u\\{[0-9a-fA-F]+\\}" + } + ] + } + ] + } + }, + "optional_test": { + "type": "PREC_RIGHT", + "value": 130, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "STRING", + "value": "?" + } + ] + } + }, + "compiler_dbg_panic": { + "type": "STRING", + "value": "😱" + }, + "compiler_dbg_env": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "🗺️" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": ";" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "call": { + "type": "PREC_LEFT", + "value": 160, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "caller", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "super_call" + } + ] + } + }, + { + "type": "FIELD", + "name": "args", + "content": { + "type": "SYMBOL", + "name": "argument_list" + } + } + ] + } + }, + "super_call": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_super" + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "FIELD", + "name": "method", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + } + ] + }, + "argument_list": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "positional_argument" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "positional_argument" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "keyword_argument" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "keyword_argument" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "positional_argument" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "positional_argument" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "," + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "keyword_argument" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "keyword_argument" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "positional_argument": { + "type": "SYMBOL", + "name": "expression" + }, + "keyword_argument": { + "type": "PREC", + "value": 3, + "content": { + "type": "SEQ", + "members": [ + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "identifier" + }, + "named": true, + "value": "keyword_argument_key" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "expression" + }, + "named": true, + "value": "keyword_argument_value" + } + ] + } + }, + "new_expression": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "new" + }, + { + "type": "FIELD", + "name": "class", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "custom_type" + }, + { + "type": "SYMBOL", + "name": "mutable_container_type" + } + ] + } + }, + { + "type": "FIELD", + "name": "args", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "argument_list" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "as" + }, + { + "type": "FIELD", + "name": "id", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "in" + }, + { + "type": "FIELD", + "name": "scope", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "_type": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "custom_type" + }, + { + "type": "SYMBOL", + "name": "builtin_type" + }, + { + "type": "SYMBOL", + "name": "_builtin_container_type" + }, + { + "type": "SYMBOL", + "name": "json_container_type" + }, + { + "type": "SYMBOL", + "name": "function_type" + }, + { + "type": "SYMBOL", + "name": "optional" + }, + { + "type": "SYMBOL", + "name": "_parenthesized_type" + } + ] + }, + "_parenthesized_type": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "optional": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "STRING", + "value": "?" + } + ] + }, + "function_type": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "inflight", + "content": { + "type": "SYMBOL", + "name": "inflight_specifier" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "parameter_types", + "content": { + "type": "SYMBOL", + "name": "parameter_type_list" + } + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "return_type", + "content": { + "type": "SYMBOL", + "name": "_type" + } + } + ] + } + ] + } + }, + "parameter_type_list": { + "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": ")" + } + ] + }, + "builtin_type": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "num" + }, + { + "type": "STRING", + "value": "bool" + }, + { + "type": "STRING", + "value": "any" + }, + { + "type": "STRING", + "value": "str" + }, + { + "type": "STRING", + "value": "void" + }, + { + "type": "STRING", + "value": "duration" + } + ] + }, + "initializer": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "inflight", + "content": { + "type": "SYMBOL", + "name": "inflight_specifier" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "new" + }, + { + "type": "FIELD", + "name": "parameter_list", + "content": { + "type": "SYMBOL", + "name": "parameter_list" + } + }, + { + "type": "FIELD", + "name": "block", + "content": { + "type": "SYMBOL", + "name": "block" + } + } + ] + }, + "extern_modifier": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "extern" + }, + { + "type": "SYMBOL", + "name": "string" + } + ] + }, + "_return_type": { + "type": "SYMBOL", + "name": "_type_annotation" + }, + "method_signature": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "FIELD", + "name": "parameter_list", + "content": { + "type": "SYMBOL", + "name": "parameter_list" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_return_type" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_semicolon" + } + ] + }, + "method_modifiers": { + "type": "REPEAT1", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "extern_modifier" + }, + { + "type": "SYMBOL", + "name": "access_modifier" + }, + { + "type": "SYMBOL", + "name": "static" + }, + { + "type": "SYMBOL", + "name": "inflight_specifier" + } + ] + } + }, + "method_definition": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "modifiers", + "content": { + "type": "SYMBOL", + "name": "method_modifiers" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "FIELD", + "name": "parameter_list", + "content": { + "type": "SYMBOL", + "name": "parameter_list" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_return_type" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "block", + "content": { + "type": "SYMBOL", + "name": "block" + } + }, + { + "type": "SYMBOL", + "name": "_semicolon" + } + ] + } + ] + }, + "inflight_method_signature": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "phase_modifier", + "content": { + "type": "SYMBOL", + "name": "inflight_specifier" + } + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "FIELD", + "name": "parameter_list", + "content": { + "type": "SYMBOL", + "name": "parameter_list" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_return_type" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_semicolon" + } + ] + }, + "access_modifier": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "pub" + }, + { + "type": "STRING", + "value": "protected" + }, + { + "type": "STRING", + "value": "internal" + } + ] + }, + "variadic": { + "type": "STRING", + "value": "..." + }, + "parameter_definition": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "reassignable", + "content": { + "type": "SYMBOL", + "name": "reassignable" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "variadic", + "content": { + "type": "SYMBOL", + "name": "variadic" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_type_annotation" + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "parameter_list": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "parameter_definition" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "parameter_definition" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "immutable_container_type": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "collection_type", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "Array" + }, + { + "type": "STRING", + "value": "Set" + }, + { + "type": "STRING", + "value": "Map" + }, + { + "type": "STRING", + "value": "Promise" + } + ] + } + }, + { + "type": "SYMBOL", + "name": "_container_value_type" + } + ] + }, + "mutable_container_type": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "collection_type", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "MutSet" + }, + { + "type": "STRING", + "value": "MutMap" + }, + { + "type": "STRING", + "value": "MutArray" + } + ] + } + }, + { + "type": "SYMBOL", + "name": "_container_value_type" + } + ] + } + ] + }, + "_builtin_container_type": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "immutable_container_type" + }, + { + "type": "SYMBOL", + "name": "mutable_container_type" + } + ] + }, + "_container_value_type": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "<" + }, + { + "type": "FIELD", + "name": "type_parameter", + "content": { + "type": "SYMBOL", + "name": "_type" + } + }, + { + "type": "STRING", + "value": ">" + } + ] + }, + "unwrap_or": { + "type": "PREC_RIGHT", + "value": 80, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "??" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + "optional_unwrap": { + "type": "PREC_RIGHT", + "value": 170, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "STRING", + "value": "!" + } + ] + } + }, + "unary_expression": { + "type": "CHOICE", + "members": [ + { + "type": "PREC_LEFT", + "value": 120, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "--" + } + }, + { + "type": "FIELD", + "name": "arg", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 120, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "-" + } + }, + { + "type": "FIELD", + "name": "arg", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 120, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "!" + } + }, + { + "type": "FIELD", + "name": "arg", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + } + ] + }, + "binary_expression": { + "type": "CHOICE", + "members": [ + { + "type": "PREC_LEFT", + "value": 100, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "+" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 100, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "-" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 110, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "*" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 110, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "/" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 110, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "\\" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 110, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "%" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 140, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "**" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 10, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "||" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 20, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "&&" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 60, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "==" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 60, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "!=" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 70, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": ">" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 70, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": ">=" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 70, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "<=" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 70, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "op", + "content": { + "type": "STRING", + "value": "<" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + } + ] + }, + "closure_modifiers": { + "type": "REPEAT1", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "inflight_specifier" + } + ] + } + }, + "closure": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "modifiers", + "content": { + "type": "SYMBOL", + "name": "closure_modifiers" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "parameter_list", + "content": { + "type": "SYMBOL", + "name": "parameter_list" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_return_type" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "=>" + }, + { + "type": "FIELD", + "name": "block", + "content": { + "type": "SYMBOL", + "name": "block" + } + } + ] + }, + "await_expression": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "await" + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + } + }, + "defer_expression": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "defer" + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + } + }, + "parenthesized_expression": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "_collection_literal": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "array_literal" + }, + { + "type": "SYMBOL", + "name": "map_literal" + } + ] + }, + "array_literal": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "_builtin_container_type" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "element", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "element", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + } + ] + }, + "map_literal": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "_builtin_container_type" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "member", + "content": { + "type": "SYMBOL", + "name": "map_literal_member" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "member", + "content": { + "type": "SYMBOL", + "name": "map_literal_member" + } + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + } + ] + }, + "struct_literal": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "custom_type" + } + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "fields", + "content": { + "type": "SYMBOL", + "name": "struct_literal_member" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "fields", + "content": { + "type": "SYMBOL", + "name": "struct_literal_member" + } + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + } + ] + }, + "map_literal_member": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "STRING", + "value": "=>" + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + }, + "struct_literal_member": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + }, + "structured_access_expression": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "STRING", + "value": "[" + }, + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "STRING", + "value": "]" + } + ] + } + }, + "json_literal": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "type", + "content": { + "type": "SYMBOL", + "name": "json_container_type" + } + }, + { + "type": "FIELD", + "name": "element", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + }, + { + "type": "FIELD", + "name": "element", + "content": { + "type": "SYMBOL", + "name": "json_map_literal" + } + } + ] + }, + "json_map_literal": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "member", + "content": { + "type": "SYMBOL", + "name": "json_literal_member" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "FIELD", + "name": "member", + "content": { + "type": "SYMBOL", + "name": "json_literal_member" + } + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "json_literal_member": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SYMBOL", + "name": "string" + } + ] + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + }, + "json_container_type": { + "type": "SYMBOL", + "name": "_json_types" + }, + "_json_types": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "Json" + }, + { + "type": "STRING", + "value": "MutJson" + } + ] + }, + "test_statement": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "test" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "string" + } + }, + { + "type": "FIELD", + "name": "block", + "content": { + "type": "SYMBOL", + "name": "block" + } + } + ] + } + }, + "extras": [ + { + "type": "SYMBOL", + "name": "comment" + }, + { + "type": "PATTERN", + "value": "[\\s\\p{Zs}\\uFEFF\\u2060\\u200B]" + } + ], + "conflicts": [ + [ + "_reference_identifier", + "_type_identifier" + ], + [ + "parameter_definition", + "_reference_identifier" + ], + [ + "field_modifiers", + "method_modifiers" + ], + [ + "class_modifiers", + "closure_modifiers" + ], + [ + "inflight_method_signature", + "field_modifiers" + ] + ], + "precedences": [ + [ + { + "type": "SYMBOL", + "name": "json_map_literal" + }, + { + "type": "SYMBOL", + "name": "map_literal" + }, + { + "type": "SYMBOL", + "name": "array_literal" + } + ], + [ + { + "type": "SYMBOL", + "name": "json_literal" + }, + { + "type": "SYMBOL", + "name": "structured_access_expression" + } + ] + ], + "externals": [ + { + "type": "SYMBOL", + "name": "AUTOMATIC_SEMICOLON" + }, + { + "type": "SYMBOL", + "name": "AUTOMATIC_BLOCK" + } + ], + "inline": [], + "supertypes": [ + "expression", + "_literal" + ] +} +