grammar.json•98.1 kB
{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "gdscript",
"word": "_identifier",
"rules": {
"source": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
"_identifier": {
"type": "PATTERN",
"value": "[a-zA-Z_][a-zA-Z_0-9]*"
},
"identifier": {
"type": "SYMBOL",
"name": "_identifier"
},
"name": {
"type": "SYMBOL",
"name": "_identifier"
},
"comment": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "PATTERN",
"value": ".*"
}
]
}
},
"true": {
"type": "STRING",
"value": "true"
},
"false": {
"type": "STRING",
"value": "false"
},
"null": {
"type": "STRING",
"value": "null"
},
"static_keyword": {
"type": "STRING",
"value": "static"
},
"remote_keyword": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "remote"
},
{
"type": "STRING",
"value": "master"
},
{
"type": "STRING",
"value": "puppet"
},
{
"type": "STRING",
"value": "remotesync"
},
{
"type": "STRING",
"value": "mastersync"
},
{
"type": "STRING",
"value": "puppetsync"
}
]
},
"escape_sequence": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "u[a-fA-F\\d]{4}"
},
{
"type": "PATTERN",
"value": "U[a-fA-F\\d]{8}"
},
{
"type": "PATTERN",
"value": "x[a-fA-F\\d]{2}"
},
{
"type": "PATTERN",
"value": "o\\d{3}"
},
{
"type": "PATTERN",
"value": "\\r\\n"
},
{
"type": "PATTERN",
"value": "[^uxo]"
}
]
}
]
}
},
"string": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_start"
},
"named": false,
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "escape_sequence"
},
{
"type": "SYMBOL",
"name": "_string_content"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_end"
},
"named": false,
"value": "\""
}
]
},
"float": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]+_?"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]+_?"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[eE][\\+-]?"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]+_?"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]+_?"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "."
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]+_?"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[eE][\\+-]?"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]+_?"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]+_?"
}
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[eE][\\+-]?"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]+_?"
}
}
]
}
]
}
]
}
},
"integer": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0x"
},
{
"type": "STRING",
"value": "0X"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "_?[A-Fa-f0-9]+"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0o"
},
{
"type": "STRING",
"value": "0O"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "_?[0-7]+"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0b"
},
{
"type": "STRING",
"value": "0B"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "_?[0-1]+"
}
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]+_?"
}
}
]
}
},
"string_name": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "string"
},
"named": false,
"value": "value"
}
]
},
"node_path": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "STRING",
"value": "^"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "PATTERN",
"value": "[0-9a-zA-Z_/\\- .]*"
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "PATTERN",
"value": "[0-9a-zA-Z_/\\- .]*"
},
{
"type": "STRING",
"value": "'"
}
]
}
]
}
]
}
},
"get_node": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "$"
},
{
"type": "STRING",
"value": "%"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "PATTERN",
"value": "[0-9a-zA-Z_/\\- .]*"
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "PATTERN",
"value": "[0-9a-zA-Z_/\\- .]*"
},
{
"type": "STRING",
"value": "'"
}
]
}
]
},
{
"type": "PATTERN",
"value": "[a-zA-Z_][a-zA-Z_/0-9]*"
}
]
}
]
}
},
"type": {
"type": "PREC",
"value": 20,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "subscript"
}
]
}
},
"_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_statements"
},
{
"type": "SYMBOL",
"name": "_compound_statement"
}
]
},
"body": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_statements"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_body_end"
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "_body_end"
}
]
}
]
},
"_simple_statements": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_simple_statement"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "_simple_statement"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "_body_end"
}
]
}
]
},
"_simple_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_annotations"
},
{
"type": "SYMBOL",
"name": "tool_statement"
},
{
"type": "SYMBOL",
"name": "signal_statement"
},
{
"type": "SYMBOL",
"name": "class_name_statement"
},
{
"type": "SYMBOL",
"name": "extends_statement"
},
{
"type": "SYMBOL",
"name": "expression_statement"
},
{
"type": "SYMBOL",
"name": "export_variable_statement"
},
{
"type": "SYMBOL",
"name": "onready_variable_statement"
},
{
"type": "SYMBOL",
"name": "variable_statement"
},
{
"type": "SYMBOL",
"name": "const_statement"
},
{
"type": "SYMBOL",
"name": "return_statement"
},
{
"type": "SYMBOL",
"name": "pass_statement"
},
{
"type": "SYMBOL",
"name": "break_statement"
},
{
"type": "SYMBOL",
"name": "breakpoint_statement"
},
{
"type": "SYMBOL",
"name": "continue_statement"
}
]
},
"expression_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "assignment"
},
{
"type": "SYMBOL",
"name": "augmented_assignment"
}
]
},
"annotation": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "arguments"
},
{
"type": "BLANK"
}
]
}
]
},
"_annotations": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "annotation"
}
},
"annotations": {
"type": "SYMBOL",
"name": "_annotations"
},
"inferred_type": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ":="
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "="
}
]
}
]
},
"_variable_assignment": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_rhs_expression"
}
}
]
},
"_variable_inferred_type_assignment": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "inferred_type"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_rhs_expression"
}
}
]
},
"_variable_typed_assignment": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_rhs_expression"
}
}
]
},
"_variable_typed_definition": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
}
]
},
{
"type": "SYMBOL",
"name": "_variable_typed_assignment"
}
]
},
"set_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "set"
},
{
"type": "SYMBOL",
"name": "parameters"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "body"
},
"named": false,
"value": "body"
}
]
},
"get_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "get"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "parameters"
},
"named": false,
"value": "()"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "body"
},
"named": false,
"value": "body"
}
]
},
"_set_assign": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "set"
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "set",
"content": {
"type": "SYMBOL",
"name": "setter"
}
}
]
},
"_get_assign": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "get"
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "get",
"content": {
"type": "SYMBOL",
"name": "getter"
}
}
]
},
"_setget_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "set",
"content": {
"type": "SYMBOL",
"name": "set_body"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "get",
"content": {
"type": "SYMBOL",
"name": "get_body"
}
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "get",
"content": {
"type": "SYMBOL",
"name": "get_body"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "set",
"content": {
"type": "SYMBOL",
"name": "set_body"
}
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_set_assign"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_get_assign"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_get_assign"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_set_assign"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
]
},
"setter": {
"type": "SYMBOL",
"name": "_identifier"
},
"getter": {
"type": "SYMBOL",
"name": "_identifier"
},
"setget": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_setget_body"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "setget"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "setter"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "setter"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "getter"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "getter"
}
]
}
]
}
]
}
]
},
"_variable_statement": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "annotations"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "static",
"content": {
"type": "SYMBOL",
"name": "static_keyword"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "var"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_variable_typed_definition"
},
{
"type": "SYMBOL",
"name": "_variable_inferred_type_assignment"
},
{
"type": "SYMBOL",
"name": "_variable_assignment"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "setget",
"content": {
"type": "SYMBOL",
"name": "setget"
}
},
{
"type": "BLANK"
}
]
}
]
},
"variable_statement": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "remote_keyword"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_variable_statement"
}
]
},
"export_variable_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "export"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "export_arguments",
"content": {
"type": "SYMBOL",
"name": "arguments"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "onready"
},
{
"type": "SYMBOL",
"name": "remote_keyword"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_variable_statement"
}
]
},
"onready_variable_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "onready"
},
{
"type": "SYMBOL",
"name": "_variable_statement"
}
]
},
"const_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "const"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_variable_inferred_type_assignment"
},
{
"type": "SYMBOL",
"name": "_variable_typed_assignment"
},
{
"type": "SYMBOL",
"name": "_variable_assignment"
}
]
}
]
},
"return_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_rhs_expression"
},
{
"type": "BLANK"
}
]
}
]
},
"pass_statement": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "STRING",
"value": "pass"
}
},
"break_statement": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "STRING",
"value": "break"
}
},
"breakpoint_statement": {
"type": "STRING",
"value": "breakpoint"
},
"continue_statement": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "STRING",
"value": "continue"
}
},
"tool_statement": {
"type": "STRING",
"value": "tool"
},
"signal_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "signal"
},
{
"type": "SYMBOL",
"name": "name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameters"
},
{
"type": "BLANK"
}
]
}
]
},
"class_name_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "class_name"
},
{
"type": "SYMBOL",
"name": "name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "icon_path",
"content": {
"type": "SYMBOL",
"name": "string"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"extends_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "extends"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "type"
}
]
}
]
},
"_compound_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "for_statement"
},
{
"type": "SYMBOL",
"name": "while_statement"
},
{
"type": "SYMBOL",
"name": "function_definition"
},
{
"type": "SYMBOL",
"name": "constructor_definition"
},
{
"type": "SYMBOL",
"name": "class_definition"
},
{
"type": "SYMBOL",
"name": "enum_definition"
},
{
"type": "SYMBOL",
"name": "match_statement"
}
]
},
"if_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body"
}
},
{
"type": "REPEAT",
"content": {
"type": "FIELD",
"name": "alternative",
"content": {
"type": "SYMBOL",
"name": "elif_clause"
}
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "SYMBOL",
"name": "else_clause"
}
},
{
"type": "BLANK"
}
]
}
]
},
"elif_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "elif"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body"
}
}
]
},
"else_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body"
}
}
]
},
"for_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body"
}
}
]
},
"while_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "while"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body"
}
}
]
},
"class_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "class"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "extends",
"content": {
"type": "SYMBOL",
"name": "extends_statement"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body"
}
}
]
},
"enum_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "enum"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "name"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "enumerator_list"
}
}
]
},
"enumerator_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "enumerator"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "enumerator"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_enumerator_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "binary_operator"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "unary_operator"
},
{
"type": "SYMBOL",
"name": "attribute"
},
{
"type": "SYMBOL",
"name": "subscript"
},
{
"type": "SYMBOL",
"name": "call"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
}
]
},
"enumerator": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_enumerator_expression"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"match_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "match"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "match_body"
}
}
]
},
"match_body": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "pattern_section"
}
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
},
"pattern_guard": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "when"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"pattern_section": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_pattern"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "pattern_guard"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body"
}
}
]
},
"_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_primary_expression"
},
{
"type": "SYMBOL",
"name": "pattern_binding"
}
]
},
"pattern_binding": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "var"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"pattern_open_ending": {
"type": "STRING",
"value": ".."
},
"_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_primary_expression"
},
{
"type": "SYMBOL",
"name": "conditional_expression"
},
{
"type": "SYMBOL",
"name": "await_expression"
}
]
},
"_primary_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "binary_operator"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "true"
},
{
"type": "SYMBOL",
"name": "false"
},
{
"type": "SYMBOL",
"name": "null"
},
{
"type": "SYMBOL",
"name": "unary_operator"
},
{
"type": "SYMBOL",
"name": "string_name"
},
{
"type": "SYMBOL",
"name": "node_path"
},
{
"type": "SYMBOL",
"name": "get_node"
},
{
"type": "SYMBOL",
"name": "attribute"
},
{
"type": "SYMBOL",
"name": "subscript"
},
{
"type": "SYMBOL",
"name": "base_call"
},
{
"type": "SYMBOL",
"name": "call"
},
{
"type": "SYMBOL",
"name": "array"
},
{
"type": "SYMBOL",
"name": "dictionary"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
}
]
},
"_rhs_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "lambda"
}
]
},
"_attribute_expression": {
"type": "PREC",
"value": 19,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "binary_operator"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "true"
},
{
"type": "SYMBOL",
"name": "false"
},
{
"type": "SYMBOL",
"name": "null"
},
{
"type": "SYMBOL",
"name": "unary_operator"
},
{
"type": "SYMBOL",
"name": "node_path"
},
{
"type": "SYMBOL",
"name": "get_node"
},
{
"type": "SYMBOL",
"name": "subscript"
},
{
"type": "SYMBOL",
"name": "base_call"
},
{
"type": "SYMBOL",
"name": "call"
},
{
"type": "SYMBOL",
"name": "array"
},
{
"type": "SYMBOL",
"name": "dictionary"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
}
]
}
},
"binary_operator": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "in"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "and"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "&&"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "or"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "||"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "+"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "-"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "*"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "/"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "**"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "%"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "|"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "&"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "^"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "<<"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": ">>"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "<"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "<="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "=="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "!="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": ">="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": ">"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "STRING",
"value": "as"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 15,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
},
{
"type": "FIELD",
"name": "op",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "is"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "not"
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_primary_expression"
}
}
]
}
}
]
},
"unary_operator": {
"type": "CHOICE",
"members": [
{
"type": "PREC",
"value": 14,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "not"
},
{
"type": "STRING",
"value": "!"
}
]
},
{
"type": "SYMBOL",
"name": "_primary_expression"
}
]
}
},
{
"type": "PREC",
"value": 14,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "SYMBOL",
"name": "_primary_expression"
}
]
}
},
{
"type": "PREC",
"value": 14,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "SYMBOL",
"name": "_primary_expression"
}
]
}
},
{
"type": "PREC",
"value": 14,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "~"
},
{
"type": "SYMBOL",
"name": "_primary_expression"
}
]
}
}
]
},
"subscript": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_primary_expression"
},
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "]"
}
]
},
"attribute_call": {
"type": "PREC",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "arguments"
}
]
}
},
"attribute_subscript": {
"type": "PREC",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "_primary_expression"
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"attribute": {
"type": "PREC",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_attribute_expression"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_subscript"
},
{
"type": "SYMBOL",
"name": "attribute_call"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
]
}
}
]
}
},
"conditional_expression": {
"type": "PREC_RIGHT",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "if"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "else"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"parenthesized_expression": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_rhs_expression"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"await_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "await"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"assignment": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_rhs_expression"
}
}
]
},
"augmented_assignment": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+="
},
{
"type": "STRING",
"value": "-="
},
{
"type": "STRING",
"value": "*="
},
{
"type": "STRING",
"value": "/="
},
{
"type": "STRING",
"value": "**="
},
{
"type": "STRING",
"value": "%="
},
{
"type": "STRING",
"value": ">>="
},
{
"type": "STRING",
"value": "<<="
},
{
"type": "STRING",
"value": "&="
},
{
"type": "STRING",
"value": "^="
},
{
"type": "STRING",
"value": "|="
}
]
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_rhs_expression"
}
}
]
},
"pair": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "_rhs_expression"
}
},
{
"type": "STRING",
"value": ":"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "="
}
]
}
]
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_rhs_expression"
},
{
"type": "SYMBOL",
"name": "pattern_binding"
}
]
}
}
]
},
"dictionary": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "pair"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "pair"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "pattern_open_ending"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"array": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_rhs_expression"
},
{
"type": "SYMBOL",
"name": "pattern_binding"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_rhs_expression"
},
{
"type": "SYMBOL",
"name": "pattern_binding"
}
]
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "pattern_open_ending"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"typed_parameter": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
}
]
}
},
"default_parameter": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_rhs_expression"
}
}
]
},
"typed_default_parameter": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_rhs_expression"
}
}
]
}
},
"_parameters": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "typed_parameter"
},
{
"type": "SYMBOL",
"name": "default_parameter"
},
{
"type": "SYMBOL",
"name": "typed_default_parameter"
}
]
},
"parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_parameters"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_parameters"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_return_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "FIELD",
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "type"
}
}
]
},
"function_definition": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "static_keyword"
},
{
"type": "SYMBOL",
"name": "remote_keyword"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "annotations"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "func"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "name"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameters"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_return_type"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body"
}
}
]
},
"lambda": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "func"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "name"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "parameters"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_return_type"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "body"
}
]
},
"constructor_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "func"
},
{
"type": "STRING",
"value": "_init"
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameters"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "FIELD",
"name": "constructor_arguments",
"content": {
"type": "SYMBOL",
"name": "arguments"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "FIELD",
"name": "return_type",
"content": {
"type": "SYMBOL",
"name": "type"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body"
}
}
]
},
"arguments": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_rhs_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_rhs_expression"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"base_call": {
"type": "PREC",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "arguments"
}
]
}
},
"call": {
"type": "PREC",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_primary_expression"
},
{
"type": "SYMBOL",
"name": "arguments"
}
]
}
}
},
"extras": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "PATTERN",
"value": "[\\s\\uFEFF\\u2060\\u200B]|\\\\\\r?\\n"
}
],
"conflicts": [],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_dedent"
},
{
"type": "SYMBOL",
"name": "_string_start"
},
{
"type": "SYMBOL",
"name": "_string_content"
},
{
"type": "SYMBOL",
"name": "_string_end"
},
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "STRING",
"value": "]"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
"value": "}"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_body_end"
}
],
"inline": [
"_simple_statement",
"_compound_statement"
],
"supertypes": [
"_compound_statement",
"_pattern",
"_expression",
"_primary_expression",
"_attribute_expression",
"_parameters"
]
}