{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "harn",
"word": "identifier",
"rules": {
"source_file": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_top_level_item"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_top_level_item"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"_top_level_item": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributed_declaration"
},
{
"type": "SYMBOL",
"name": "pipeline_declaration"
},
{
"type": "SYMBOL",
"name": "import_declaration"
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
},
"attributed_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "attribute"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "pipeline_declaration"
},
{
"type": "SYMBOL",
"name": "fn_declaration"
},
{
"type": "SYMBOL",
"name": "tool_declaration"
},
{
"type": "SYMBOL",
"name": "skill_declaration"
},
{
"type": "SYMBOL",
"name": "eval_pack_declaration"
},
{
"type": "SYMBOL",
"name": "struct_declaration"
},
{
"type": "SYMBOL",
"name": "enum_declaration"
},
{
"type": "SYMBOL",
"name": "type_declaration"
},
{
"type": "SYMBOL",
"name": "interface_declaration"
},
{
"type": "SYMBOL",
"name": "impl_block"
}
]
}
]
},
"attribute": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "attribute_arg"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "attribute_arg"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"attribute_arg": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_attribute_value"
}
}
]
},
{
"type": "SYMBOL",
"name": "_attribute_value"
}
]
},
"_attribute_value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SYMBOL",
"name": "raw_string_literal"
},
{
"type": "SYMBOL",
"name": "integer_literal"
},
{
"type": "SYMBOL",
"name": "float_literal"
},
{
"type": "SYMBOL",
"name": "true"
},
{
"type": "SYMBOL",
"name": "false"
},
{
"type": "SYMBOL",
"name": "nil"
},
{
"type": "SYMBOL",
"name": "list_literal"
},
{
"type": "SYMBOL",
"name": "dict_literal"
},
{
"type": "SYMBOL",
"name": "attribute_call"
},
{
"type": "SYMBOL",
"name": "attribute_path"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "SYMBOL",
"name": "integer_literal"
}
]
}
]
},
"attribute_path": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
"attribute_call": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_path"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "attribute_arg"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "attribute_arg"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_newline": {
"type": "STRING",
"value": "\n"
},
"comment": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "//"
},
{
"type": "PATTERN",
"value": "[^\\n]*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#!"
},
{
"type": "PATTERN",
"value": "[^\\n]*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/*"
},
{
"type": "PATTERN",
"value": "[^*]*\\*+([^/*][^*]*\\*+)*"
},
{
"type": "STRING",
"value": "/"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/*"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^/*]"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/"
},
{
"type": "PATTERN",
"value": "[^*]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "PATTERN",
"value": "[^/]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/*"
},
{
"type": "PATTERN",
"value": "[^*]*\\*+([^/*][^*]*\\*+)*"
},
{
"type": "STRING",
"value": "/"
}
]
}
]
}
},
{
"type": "STRING",
"value": "*/"
}
]
}
]
}
},
"pipeline_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "pub"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "pipeline"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "FIELD",
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "type_annotation"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "extends"
},
{
"type": "FIELD",
"name": "parent",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"import_declaration": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "pub"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "import"
},
{
"type": "SYMBOL",
"name": "string_literal"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "pub"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "import"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "STRING",
"value": "from"
},
{
"type": "SYMBOL",
"name": "string_literal"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "pub"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "import"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "STRING",
"value": "from"
},
{
"type": "SYMBOL",
"name": "string_literal"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "pub"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "import"
},
{
"type": "FIELD",
"name": "path",
"content": {
"type": "SYMBOL",
"name": "scoped_import_path"
}
},
{
"type": "STRING",
"value": "::"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
}
]
},
"scoped_import_path": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[a-zA-Z_][a-zA-Z0-9_]*(::[a-zA-Z_][a-zA-Z0-9_]*)+"
}
},
"enum_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "pub"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "enum"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "generic_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "enum_variant"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"enum_variant": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"struct_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "pub"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "struct"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "generic_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "struct_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "SYMBOL",
"name": "struct_field"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"struct_field": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_annotation"
}
}
]
},
"impl_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "impl"
},
{
"type": "FIELD",
"name": "type_name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "fn_declaration"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "SYMBOL",
"name": "fn_declaration"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "let_binding"
},
{
"type": "SYMBOL",
"name": "const_binding"
},
{
"type": "SYMBOL",
"name": "var_binding"
},
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "for_statement"
},
{
"type": "SYMBOL",
"name": "while_statement"
},
{
"type": "SYMBOL",
"name": "match_statement"
},
{
"type": "SYMBOL",
"name": "retry_statement"
},
{
"type": "SYMBOL",
"name": "cost_route_block"
},
{
"type": "SYMBOL",
"name": "return_statement"
},
{
"type": "SYMBOL",
"name": "throw_statement"
},
{
"type": "SYMBOL",
"name": "fn_declaration"
},
{
"type": "SYMBOL",
"name": "tool_declaration"
},
{
"type": "SYMBOL",
"name": "skill_declaration"
},
{
"type": "SYMBOL",
"name": "eval_pack_declaration"
},
{
"type": "SYMBOL",
"name": "override_declaration"
},
{
"type": "SYMBOL",
"name": "enum_declaration"
},
{
"type": "SYMBOL",
"name": "struct_declaration"
},
{
"type": "SYMBOL",
"name": "impl_block"
},
{
"type": "SYMBOL",
"name": "interface_declaration"
},
{
"type": "SYMBOL",
"name": "type_declaration"
},
{
"type": "SYMBOL",
"name": "parallel_expression"
},
{
"type": "SYMBOL",
"name": "parallel_each_expression"
},
{
"type": "SYMBOL",
"name": "parallel_settle_expression"
},
{
"type": "SYMBOL",
"name": "defer_statement"
},
{
"type": "SYMBOL",
"name": "deadline_block"
},
{
"type": "SYMBOL",
"name": "guard_statement"
},
{
"type": "SYMBOL",
"name": "require_statement"
},
{
"type": "SYMBOL",
"name": "mutex_block"
},
{
"type": "SYMBOL",
"name": "scope_block"
},
{
"type": "SYMBOL",
"name": "select_block"
},
{
"type": "SYMBOL",
"name": "break_statement"
},
{
"type": "SYMBOL",
"name": "continue_statement"
},
{
"type": "SYMBOL",
"name": "yield_expression"
},
{
"type": "SYMBOL",
"name": "emit_expression"
},
{
"type": "SYMBOL",
"name": "assignment"
},
{
"type": "SYMBOL",
"name": "compound_assignment"
},
{
"type": "SYMBOL",
"name": "expression_statement"
}
]
},
"expression_statement": {
"type": "PREC",
"value": 1,
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
"let_binding": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_binding_pattern"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_annotation"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "struct_construct"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
},
"var_binding": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "var"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_binding_pattern"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_annotation"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "struct_construct"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
},
"const_binding": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "const"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_annotation"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "struct_construct"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
},
"_binding_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "dict_pattern"
},
{
"type": "SYMBOL",
"name": "list_pattern"
},
{
"type": "SYMBOL",
"name": "pair_pattern"
}
]
},
"pair_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
},
"dict_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "dict_pattern_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "dict_pattern_field"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"dict_pattern_field": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "..."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"list_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "list_pattern_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "list_pattern_element"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"list_pattern_element": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "..."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"assignment": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "target",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "property_access"
},
{
"type": "SYMBOL",
"name": "subscript_expression"
}
]
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"compound_assignment": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "target",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "property_access"
},
{
"type": "SYMBOL",
"name": "subscript_expression"
}
]
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+="
},
{
"type": "STRING",
"value": "-="
},
{
"type": "STRING",
"value": "*="
},
{
"type": "STRING",
"value": "/="
},
{
"type": "STRING",
"value": "%="
}
]
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"if_statement": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "consequence",
"content": {
"type": "SYMBOL",
"name": "block"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "block"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"for_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "FIELD",
"name": "variable",
"content": {
"type": "SYMBOL",
"name": "_binding_pattern"
}
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "iterable",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "body",
"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": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"match_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "match"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "match_arm"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "SYMBOL",
"name": "match_arm"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"match_arm": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_match_pattern"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "FIELD",
"name": "guard",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "->"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"_match_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "or_pattern"
}
]
},
"or_pattern": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
}
},
"retry_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "retry"
},
{
"type": "FIELD",
"name": "count",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"cost_route_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "cost_route"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "cost_route_option"
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "cost_route_option"
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"cost_route_option": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"return_statement": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "BLANK"
}
]
}
]
}
},
"throw_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "throw"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"break_statement": {
"type": "STRING",
"value": "break"
},
"continue_statement": {
"type": "STRING",
"value": "continue"
},
"deadline_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "deadline"
},
{
"type": "FIELD",
"name": "duration",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"guard_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "guard"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "else"
},
{
"type": "FIELD",
"name": "else_body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"require_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "require"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "message",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"mutex_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "mutex"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"scope_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "scope"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"select_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "select"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "select_case"
},
{
"type": "SYMBOL",
"name": "select_timeout"
},
{
"type": "SYMBOL",
"name": "select_default"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "select_case"
},
{
"type": "SYMBOL",
"name": "select_timeout"
},
{
"type": "SYMBOL",
"name": "select_default"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"select_case": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "variable",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "from"
},
{
"type": "FIELD",
"name": "channel",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"select_timeout": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "timeout"
},
{
"type": "FIELD",
"name": "duration",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"select_default": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "default"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"yield_expression": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "yield"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "BLANK"
}
]
}
]
}
},
"emit_expression": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "emit"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"fn_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "pub"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "gen"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "fn"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "generic_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "type_annotation"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "where_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"tool_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "pub"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "tool"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "type_annotation"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "tool_description"
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "tool_description"
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"tool_description": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "description"
},
{
"type": "SYMBOL",
"name": "string_literal"
}
]
},
"skill_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "pub"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "skill"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field_name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "field_value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field_name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "field_value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"eval_pack_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "pub"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "eval_pack"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "id",
"content": {
"type": "SYMBOL",
"name": "string_literal"
}
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "FIELD",
"name": "id",
"content": {
"type": "SYMBOL",
"name": "string_literal"
}
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field_name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "field_value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "summarize"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field_name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "field_value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "summarize"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"generic_params": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "generic_param"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "generic_param"
}
]
}
}
]
},
{
"type": "STRING",
"value": ">"
}
]
},
"generic_param": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "variance",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "in"
},
{
"type": "STRING",
"value": "out"
}
]
}
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"type_arguments": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "<"
}
},
"named": false,
"value": "<"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "type_annotation"
}
]
}
}
]
},
{
"type": "STRING",
"value": ">"
}
]
},
"where_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "where"
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
]
}
}
]
}
]
},
"interface_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "interface"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "generic_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "associated_type_declaration"
},
{
"type": "SYMBOL",
"name": "interface_method"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "associated_type_declaration"
},
{
"type": "SYMBOL",
"name": "interface_method"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"associated_type_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "default",
"content": {
"type": "SYMBOL",
"name": "type_annotation"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"type_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "generic_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_annotation"
}
}
]
},
"interface_method": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "fn"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "generic_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "type_annotation"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"override_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "override"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "pipe_expression"
},
{
"type": "SYMBOL",
"name": "ternary_expression"
},
{
"type": "SYMBOL",
"name": "nil_coalescing_expression"
},
{
"type": "SYMBOL",
"name": "binary_expression"
},
{
"type": "SYMBOL",
"name": "range_expression"
},
{
"type": "SYMBOL",
"name": "unary_expression"
},
{
"type": "SYMBOL",
"name": "call_expression"
},
{
"type": "SYMBOL",
"name": "generic_call_expression"
},
{
"type": "SYMBOL",
"name": "hitl_expression"
},
{
"type": "SYMBOL",
"name": "method_call"
},
{
"type": "SYMBOL",
"name": "property_access"
},
{
"type": "SYMBOL",
"name": "subscript_expression"
},
{
"type": "SYMBOL",
"name": "slice_expression"
},
{
"type": "SYMBOL",
"name": "try_unwrap_expression"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
},
{
"type": "SYMBOL",
"name": "spawn_expression"
},
{
"type": "SYMBOL",
"name": "try_expression"
},
{
"type": "SYMBOL",
"name": "try_star_expression"
},
{
"type": "SYMBOL",
"name": "deadline_block"
},
{
"type": "SYMBOL",
"name": "parallel_expression"
},
{
"type": "SYMBOL",
"name": "parallel_each_expression"
},
{
"type": "SYMBOL",
"name": "parallel_settle_expression"
},
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "retry_statement"
},
{
"type": "SYMBOL",
"name": "cost_route_block"
},
{
"type": "SYMBOL",
"name": "match_statement"
},
{
"type": "SYMBOL",
"name": "_primary"
}
]
},
"pipe_expression": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": "|>"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"ternary_expression": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "?"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"nil_coalescing_expression": {
"type": "PREC_LEFT",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": "??"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"binary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": "||"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": "&&"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "=="
},
{
"type": "STRING",
"value": "!="
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": ">"
},
{
"type": "STRING",
"value": "<="
},
{
"type": "STRING",
"value": ">="
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "not"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": "+"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": "*"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": "/"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": "%"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": "**"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
},
"range_expression": {
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "to"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "exclusive"
},
{
"type": "BLANK"
}
]
}
]
}
},
"unary_expression": {
"type": "PREC_RIGHT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "STRING",
"value": "-"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"call_expression": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "property_access"
},
{
"type": "SYMBOL",
"name": "subscript_expression"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
}
]
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"generic_call_expression": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "property_access"
},
{
"type": "SYMBOL",
"name": "subscript_expression"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
}
]
}
},
{
"type": "FIELD",
"name": "type_arguments",
"content": {
"type": "SYMBOL",
"name": "type_arguments"
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"hitl_expression": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "primitive",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "ask_user"
},
{
"type": "STRING",
"value": "dual_control"
},
{
"type": "STRING",
"value": "escalate_to"
},
{
"type": "STRING",
"value": "request_approval"
}
]
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "hitl_arg"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "SYMBOL",
"name": "hitl_arg"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"hitl_arg": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"method_call": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "object",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "STRING",
"value": "?."
}
]
},
{
"type": "FIELD",
"name": "method",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "keyword_identifier"
}
]
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"property_access": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "object",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "STRING",
"value": "?."
}
]
},
{
"type": "FIELD",
"name": "property",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "keyword_identifier"
}
]
}
}
]
}
},
"subscript_expression": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "object",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "STRING",
"value": "?["
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"slice_expression": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "object",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "start",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "end",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"try_unwrap_expression": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "?"
}
}
]
}
},
"parenthesized_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"spawn_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "spawn"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"try_expression": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "try"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "catch"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "error_var",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "error_type",
"content": {
"type": "SYMBOL",
"name": "type_annotation"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "FIELD",
"name": "error_var",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "handler",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "finally"
},
{
"type": "FIELD",
"name": "finalizer",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"try_star_expression": {
"type": "PREC_RIGHT",
"value": 20,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "try"
},
{
"type": "STRING",
"value": "*"
},
{
"type": "FIELD",
"name": "operand",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"parallel_options": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_line_sep"
}
]
}
},
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_line_sep"
}
]
}
},
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_line_sep"
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"parallel_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "parallel"
},
{
"type": "FIELD",
"name": "count",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "options",
"content": {
"type": "SYMBOL",
"name": "parallel_options"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_line_sep"
}
]
}
},
{
"type": "FIELD",
"name": "variable",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "->"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_line_sep"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"parallel_each_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "parallel"
},
{
"type": "STRING",
"value": "each"
},
{
"type": "FIELD",
"name": "list",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "options",
"content": {
"type": "SYMBOL",
"name": "parallel_options"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_line_sep"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "variable",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "->"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_line_sep"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "as"
},
{
"type": "FIELD",
"name": "stream_marker",
"content": {
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "stream"
},
"named": true,
"value": "stream_marker"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"parallel_settle_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "parallel"
},
{
"type": "STRING",
"value": "settle"
},
{
"type": "FIELD",
"name": "list",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "options",
"content": {
"type": "SYMBOL",
"name": "parallel_options"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_line_sep"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "variable",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "->"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_line_sep"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"defer_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "defer"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"_primary": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "interpolated_string"
},
{
"type": "SYMBOL",
"name": "multiline_string_literal"
},
{
"type": "SYMBOL",
"name": "raw_string_literal"
},
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SYMBOL",
"name": "integer_literal"
},
{
"type": "SYMBOL",
"name": "float_literal"
},
{
"type": "SYMBOL",
"name": "duration_literal"
},
{
"type": "SYMBOL",
"name": "true"
},
{
"type": "SYMBOL",
"name": "false"
},
{
"type": "SYMBOL",
"name": "nil"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "list_literal"
},
{
"type": "SYMBOL",
"name": "dict_literal"
},
{
"type": "SYMBOL",
"name": "closure"
},
{
"type": "SYMBOL",
"name": "fn_expression"
}
]
},
"string_literal": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\"\\\\$\\n]"
},
{
"type": "PATTERN",
"value": "\\\\[ntr\\\\\"$]"
},
{
"type": "PATTERN",
"value": "\\$[^{]"
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
}
},
"multiline_string_literal": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\"\"\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\"]"
},
{
"type": "PATTERN",
"value": "\"[^\"]"
},
{
"type": "PATTERN",
"value": "\"\"[^\"]"
}
]
}
},
{
"type": "STRING",
"value": "\"\"\""
}
]
}
},
"raw_string_literal": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "r\""
},
{
"type": "REPEAT",
"content": {
"type": "PATTERN",
"value": "[^\"\\n]"
}
},
{
"type": "STRING",
"value": "\""
}
]
}
},
"interpolated_string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "interpolation"
},
{
"type": "SYMBOL",
"name": "string_content"
},
{
"type": "SYMBOL",
"name": "string_dollar"
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
},
"string_content": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^\"\\\\$\\n]+"
}
}
},
"string_dollar": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "$"
}
},
"interpolation": {
"type": "SEQ",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "${"
}
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "}"
}
]
},
"integer_literal": {
"type": "PATTERN",
"value": "\\d+"
},
"float_literal": {
"type": "PATTERN",
"value": "\\d+\\.\\d+"
},
"duration_literal": {
"type": "PATTERN",
"value": "\\d+(ms|s|m|h|d|w)"
},
"true": {
"type": "STRING",
"value": "true"
},
"false": {
"type": "STRING",
"value": "false"
},
"nil": {
"type": "STRING",
"value": "nil"
},
"identifier": {
"type": "PATTERN",
"value": "[a-zA-Z_][a-zA-Z0-9_]*"
},
"list_literal": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_list_element"
},
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
]
}
},
{
"type": "STRING",
"value": "]"
}
]
},
"_list_element": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "spread_expression"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"dict_literal": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_dict_element"
},
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"_dict_element": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "spread_expression"
},
{
"type": "SYMBOL",
"name": "dict_entry"
}
]
},
"dict_entry": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "keyword_identifier"
},
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "]"
}
]
}
]
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"spread_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "..."
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"closure": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "->"
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"fn_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "fn"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"parameter_list": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "typed_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "SYMBOL",
"name": "typed_parameter"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"typed_parameter": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "..."
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_annotation"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "default",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"argument_list": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_argument_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
{
"type": "SYMBOL",
"name": "_argument_element"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_sep"
},
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"keyword_identifier": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "pipeline"
},
{
"type": "STRING",
"value": "extends"
},
{
"type": "STRING",
"value": "override"
},
{
"type": "STRING",
"value": "let"
},
{
"type": "STRING",
"value": "const"
},
{
"type": "STRING",
"value": "var"
},
{
"type": "STRING",
"value": "if"
},
{
"type": "STRING",
"value": "else"
},
{
"type": "STRING",
"value": "for"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "STRING",
"value": "match"
},
{
"type": "STRING",
"value": "retry"
},
{
"type": "STRING",
"value": "parallel"
},
{
"type": "STRING",
"value": "defer"
},
{
"type": "STRING",
"value": "return"
},
{
"type": "STRING",
"value": "import"
},
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
},
{
"type": "STRING",
"value": "nil"
},
{
"type": "STRING",
"value": "try"
},
{
"type": "STRING",
"value": "catch"
},
{
"type": "STRING",
"value": "throw"
},
{
"type": "STRING",
"value": "finally"
},
{
"type": "STRING",
"value": "fn"
},
{
"type": "STRING",
"value": "spawn"
},
{
"type": "STRING",
"value": "while"
},
{
"type": "STRING",
"value": "type"
},
{
"type": "STRING",
"value": "enum"
},
{
"type": "STRING",
"value": "eval_pack"
},
{
"type": "STRING",
"value": "struct"
},
{
"type": "STRING",
"value": "interface"
},
{
"type": "STRING",
"value": "pub"
},
{
"type": "STRING",
"value": "from"
},
{
"type": "STRING",
"value": "to"
},
{
"type": "STRING",
"value": "tool"
},
{
"type": "STRING",
"value": "skill"
},
{
"type": "STRING",
"value": "exclusive"
},
{
"type": "STRING",
"value": "guard"
},
{
"type": "STRING",
"value": "require"
},
{
"type": "STRING",
"value": "deadline"
},
{
"type": "STRING",
"value": "yield"
},
{
"type": "STRING",
"value": "emit"
},
{
"type": "STRING",
"value": "mutex"
},
{
"type": "STRING",
"value": "break"
},
{
"type": "STRING",
"value": "continue"
},
{
"type": "STRING",
"value": "select"
},
{
"type": "STRING",
"value": "impl"
},
{
"type": "STRING",
"value": "ask_user"
},
{
"type": "STRING",
"value": "dual_control"
},
{
"type": "STRING",
"value": "escalate_to"
},
{
"type": "STRING",
"value": "request_approval"
}
]
},
"_argument_element": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "spread_expression"
},
{
"type": "SYMBOL",
"name": "struct_construct"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"struct_construct": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type_name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "fields",
"content": {
"type": "SYMBOL",
"name": "dict_literal"
}
}
]
},
"type_annotation": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "fn_type"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "STRING",
"value": ">"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "STRING",
"value": ">"
}
]
},
{
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "type_annotation"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "STRING",
"value": "&"
},
{
"type": "SYMBOL",
"name": "type_annotation"
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "STRING",
"value": "?"
}
]
}
},
{
"type": "SYMBOL",
"name": "shape_type"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SYMBOL",
"name": "raw_string_literal"
},
{
"type": "SYMBOL",
"name": "integer_literal"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "SYMBOL",
"name": "integer_literal"
}
]
}
]
},
"fn_type": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "fn"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_annotation"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "type_annotation"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "type_annotation"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"shape_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "shape_field"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "shape_field"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"shape_field": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_annotation"
}
}
]
}
},
"extras": [
{
"type": "PATTERN",
"value": "[ \\t\\r]"
},
{
"type": "PATTERN",
"value": "\\\\\\r?\\n[ \\t]*"
},
{
"type": "SYMBOL",
"name": "comment"
}
],
"conflicts": [
[
"dict_literal",
"shape_type"
],
[
"_statement",
"_expression"
],
[
"_primary",
"type_annotation"
],
[
"_primary",
"typed_parameter"
],
[
"typed_parameter",
"shape_field"
],
[
"parallel_expression"
],
[
"typed_parameter",
"type_annotation"
],
[
"type_arguments",
"type_annotation"
],
[
"block"
],
[
"closure"
],
[
"select_block"
],
[
"parallel_each_expression"
],
[
"parallel_settle_expression"
],
[
"_primary",
"struct_construct"
],
[
"struct_declaration"
],
[
"tool_declaration"
],
[
"impl_block"
],
[
"interface_declaration"
],
[
"match_statement"
],
[
"skill_declaration",
"pipe_expression",
"binary_expression",
"method_call",
"property_access"
],
[
"skill_declaration",
"pipe_expression",
"nil_coalescing_expression",
"binary_expression",
"method_call",
"property_access"
],
[
"eval_pack_declaration",
"pipe_expression",
"binary_expression",
"method_call",
"property_access"
],
[
"eval_pack_declaration",
"pipe_expression",
"nil_coalescing_expression",
"binary_expression",
"method_call",
"property_access"
],
[
"pipe_expression",
"binary_expression",
"unary_expression",
"method_call",
"property_access"
],
[
"pipe_expression",
"binary_expression",
"method_call",
"property_access"
],
[
"pipe_expression",
"nil_coalescing_expression",
"binary_expression",
"method_call",
"property_access"
],
[
"pipe_expression",
"ternary_expression",
"binary_expression",
"method_call",
"property_access"
],
[
"pipe_expression",
"range_expression",
"binary_expression",
"method_call",
"property_access"
],
[
"pipe_expression",
"nil_coalescing_expression",
"binary_expression",
"range_expression",
"method_call",
"property_access"
],
[
"pipe_expression",
"ternary_expression",
"nil_coalescing_expression",
"binary_expression",
"method_call",
"property_access"
],
[
"pipe_expression",
"nil_coalescing_expression",
"binary_expression",
"unary_expression",
"method_call",
"property_access"
]
],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "_block_sep"
},
{
"type": "SYMBOL",
"name": "_line_sep"
}
],
"inline": [],
"supertypes": [],
"reserved": {}
}