[
{
"type": "declaration",
"named": true,
"subtypes": [
{
"type": "assert_statement",
"named": true
},
{
"type": "metadata_declaration",
"named": true
},
{
"type": "module_declaration",
"named": true
},
{
"type": "output_declaration",
"named": true
},
{
"type": "parameter_declaration",
"named": true
},
{
"type": "resource_declaration",
"named": true
},
{
"type": "test_block",
"named": true
},
{
"type": "type_declaration",
"named": true
},
{
"type": "user_defined_function",
"named": true
},
{
"type": "variable_declaration",
"named": true
}
]
},
{
"type": "expression",
"named": true,
"subtypes": [
{
"type": "assignment_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "lambda_expression",
"named": true
},
{
"type": "primary_expression",
"named": true
},
{
"type": "ternary_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
},
{
"type": "primary_expression",
"named": true,
"subtypes": [
{
"type": "array",
"named": true
},
{
"type": "boolean",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "for_statement",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "null",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "object",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "resource_expression",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "subscript_expression",
"named": true
}
]
},
{
"type": "statement",
"named": true,
"subtypes": [
{
"type": "declaration",
"named": true
},
{
"type": "decorators",
"named": true
},
{
"type": "import_functionality",
"named": true
},
{
"type": "import_statement",
"named": true
},
{
"type": "import_with_statement",
"named": true
},
{
"type": "target_scope_assignment",
"named": true
},
{
"type": "using_statement",
"named": true
}
]
},
{
"type": "arguments",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "array",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "decorators",
"named": true
},
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "array_type",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "assert_statement",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "assignment_expression",
"named": true,
"fields": {
"left": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "resource_expression",
"named": true
},
{
"type": "subscript_expression",
"named": true
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "binary_expression",
"named": true,
"fields": {
"left": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "!=",
"named": false
},
{
"type": "!~",
"named": false
},
{
"type": "%",
"named": false
},
{
"type": "&&",
"named": false
},
{
"type": "*",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": "/",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": "<=",
"named": false
},
{
"type": "==",
"named": false
},
{
"type": "=~",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": ">=",
"named": false
},
{
"type": "??",
"named": false
},
{
"type": "|",
"named": false
},
{
"type": "||",
"named": false
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "boolean",
"named": true,
"fields": {}
},
{
"type": "call_expression",
"named": true,
"fields": {
"arguments": {
"multiple": false,
"required": true,
"types": [
{
"type": "arguments",
"named": true
}
]
},
"function": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "nullable_return_type",
"named": true
}
]
}
},
{
"type": "compatible_identifier",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
{
"type": "decorator",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "call_expression",
"named": true
}
]
}
},
{
"type": "decorators",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "decorator",
"named": true
}
]
}
},
{
"type": "for_loop_parameters",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "loop_enumerator",
"named": true
},
{
"type": "loop_variable",
"named": true
}
]
}
},
{
"type": "for_statement",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "if_statement",
"named": true
}
]
},
"initializer": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "for_loop_parameters",
"named": true
}
]
}
},
{
"type": "if_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "object",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
}
]
}
},
{
"type": "import_functionality",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
}
},
{
"type": "import_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
}
},
{
"type": "import_with_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
}
},
{
"type": "infrastructure",
"named": true,
"root": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "statement",
"named": true
}
]
}
},
{
"type": "interpolation",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "lambda_expression",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "member_expression",
"named": true,
"fields": {
"object": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "parameterized_type",
"named": true
}
]
},
"property": {
"multiple": false,
"required": true,
"types": [
{
"type": "property_identifier",
"named": true
}
]
}
}
},
{
"type": "metadata_declaration",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "identifier",
"named": true
}
]
}
},
{
"type": "module_declaration",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "for_statement",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_statement",
"named": true
},
{
"type": "object",
"named": true
},
{
"type": "string",
"named": true
}
]
}
},
{
"type": "negated_type",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "nullable_type",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "array_type",
"named": true
},
{
"type": "expression",
"named": true
},
{
"type": "parenthesized_type",
"named": true
},
{
"type": "primitive_type",
"named": true
}
]
}
},
{
"type": "object",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "decorators",
"named": true
},
{
"type": "object_property",
"named": true
}
]
}
},
{
"type": "object_property",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "array_type",
"named": true
},
{
"type": "compatible_identifier",
"named": true
},
{
"type": "expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "nullable_type",
"named": true
},
{
"type": "parameterized_type",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "resource_declaration",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "union_type",
"named": true
}
]
}
},
{
"type": "output_declaration",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "type",
"named": true
}
]
}
},
{
"type": "parameter",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "type",
"named": true
}
]
}
},
{
"type": "parameter_declaration",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "type",
"named": true
}
]
}
},
{
"type": "parameterized_type",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "type_arguments",
"named": true
}
]
}
},
{
"type": "parameters",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "parameter",
"named": true
}
]
}
},
{
"type": "parenthesized_expression",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "parenthesized_type",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "primitive_type",
"named": true,
"fields": {}
},
{
"type": "resource_declaration",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "for_statement",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_statement",
"named": true
},
{
"type": "object",
"named": true
},
{
"type": "string",
"named": true
}
]
}
},
{
"type": "resource_expression",
"named": true,
"fields": {
"object": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"resource": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
}
},
{
"type": "string",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "escape_sequence",
"named": true
},
{
"type": "interpolation",
"named": true
},
{
"type": "string_content",
"named": true
}
]
}
},
{
"type": "string_content",
"named": true,
"fields": {}
},
{
"type": "subscript_expression",
"named": true,
"fields": {
"index": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"object": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "target_scope_assignment",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "string",
"named": true
}
]
}
},
{
"type": "ternary_expression",
"named": true,
"fields": {
"alternative": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"consequence": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "test_block",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "object",
"named": true
},
{
"type": "string",
"named": true
}
]
}
},
{
"type": "type",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "array_type",
"named": true
},
{
"type": "boolean",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "negated_type",
"named": true
},
{
"type": "null",
"named": true
},
{
"type": "nullable_type",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "object",
"named": true
},
{
"type": "parameterized_type",
"named": true
},
{
"type": "parenthesized_type",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "union_type",
"named": true
}
]
}
},
{
"type": "type_arguments",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "string",
"named": true
}
]
}
},
{
"type": "type_declaration",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "array_type",
"named": true
},
{
"type": "expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "nullable_type",
"named": true
},
{
"type": "parameterized_type",
"named": true
},
{
"type": "union_type",
"named": true
}
]
}
},
{
"type": "unary_expression",
"named": true,
"fields": {
"argument": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "!",
"named": false
},
{
"type": "-",
"named": false
}
]
}
}
},
{
"type": "union_type",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "array_type",
"named": true
},
{
"type": "boolean",
"named": true
},
{
"type": "expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "negated_type",
"named": true
},
{
"type": "null",
"named": true
},
{
"type": "nullable_type",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "object",
"named": true
},
{
"type": "parameterized_type",
"named": true
},
{
"type": "parenthesized_type",
"named": true
},
{
"type": "primitive_type",
"named": true
},
{
"type": "string",
"named": true
}
]
}
},
{
"type": "user_defined_function",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"returns": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "parameters",
"named": true
}
]
}
},
{
"type": "using_statement",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "string",
"named": true
}
]
}
},
{
"type": "variable_declaration",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "identifier",
"named": true
}
]
}
},
{
"type": "!",
"named": false
},
{
"type": "!=",
"named": false
},
{
"type": "!~",
"named": false
},
{
"type": "${",
"named": false
},
{
"type": "%",
"named": false
},
{
"type": "&&",
"named": false
},
{
"type": "'",
"named": false
},
{
"type": "'''",
"named": false
},
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "*",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": ",",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": ".",
"named": false
},
{
"type": ".?",
"named": false
},
{
"type": "/",
"named": false
},
{
"type": ":",
"named": false
},
{
"type": "::",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": "<=",
"named": false
},
{
"type": "=",
"named": false
},
{
"type": "==",
"named": false
},
{
"type": "=>",
"named": false
},
{
"type": "=~",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": ">=",
"named": false
},
{
"type": "?",
"named": false
},
{
"type": "??",
"named": false
},
{
"type": "@",
"named": false
},
{
"type": "[",
"named": false
},
{
"type": "]",
"named": false
},
{
"type": "array",
"named": false
},
{
"type": "as",
"named": false
},
{
"type": "assert",
"named": false
},
{
"type": "bool",
"named": false
},
{
"type": "comment",
"named": true
},
{
"type": "diagnostic_comment",
"named": true
},
{
"type": "escape_sequence",
"named": true
},
{
"type": "existing",
"named": false
},
{
"type": "false",
"named": false
},
{
"type": "for",
"named": false
},
{
"type": "from",
"named": false
},
{
"type": "func",
"named": false
},
{
"type": "identifier",
"named": true
},
{
"type": "if",
"named": false
},
{
"type": "import",
"named": false
},
{
"type": "in",
"named": false
},
{
"type": "int",
"named": false
},
{
"type": "loop_enumerator",
"named": true
},
{
"type": "loop_variable",
"named": true
},
{
"type": "metadata",
"named": false
},
{
"type": "module",
"named": false
},
{
"type": "null",
"named": true
},
{
"type": "nullable_return_type",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "object",
"named": false
},
{
"type": "output",
"named": false
},
{
"type": "param",
"named": false
},
{
"type": "property_identifier",
"named": true
},
{
"type": "provider",
"named": false
},
{
"type": "resource",
"named": false
},
{
"type": "secureObject",
"named": false
},
{
"type": "secureString",
"named": false
},
{
"type": "string",
"named": false
},
{
"type": "targetScope",
"named": false
},
{
"type": "test",
"named": false
},
{
"type": "true",
"named": false
},
{
"type": "type",
"named": false
},
{
"type": "using",
"named": false
},
{
"type": "var",
"named": false
},
{
"type": "with",
"named": false
},
{
"type": "{",
"named": false
},
{
"type": "|",
"named": false
},
{
"type": "||",
"named": false
},
{
"type": "}",
"named": false
}
]