[
{
"type": "expression",
"named": true,
"subtypes": [
{
"type": "array",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "class_identifier",
"named": true
},
{
"type": "function_call",
"named": true
},
{
"type": "hash",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "literal",
"named": true
},
{
"type": "method_call",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable",
"named": true
}
]
},
{
"type": "literal",
"named": true,
"subtypes": [
{
"type": "boolean",
"named": true
},
{
"type": "float",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "regex",
"named": true
},
{
"type": "resource_reference",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "undef",
"named": true
}
]
},
{
"type": "statement",
"named": true,
"subtypes": [
{
"type": "assignment",
"named": true
},
{
"type": "case_statement",
"named": true
},
{
"type": "class_definition",
"named": true
},
{
"type": "class_identifier",
"named": true
},
{
"type": "defined_resource_type",
"named": true
},
{
"type": "function_call",
"named": true
},
{
"type": "function_declaration",
"named": true
},
{
"type": "hash",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "if_statement",
"named": true
},
{
"type": "include_statement",
"named": true
},
{
"type": "method_call",
"named": true
},
{
"type": "node_definition",
"named": true
},
{
"type": "relation",
"named": true
},
{
"type": "resource_collector",
"named": true
},
{
"type": "resource_declaration",
"named": true
},
{
"type": "resource_default",
"named": true
},
{
"type": "resource_reference",
"named": true
},
{
"type": "selector",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "tag_statement",
"named": true
},
{
"type": "type_declaration",
"named": true
},
{
"type": "variable",
"named": true
}
]
},
{
"type": "type",
"named": true,
"subtypes": [
{
"type": "array_type",
"named": true
},
{
"type": "attribute_type",
"named": true
},
{
"type": "builtin_type",
"named": true
},
{
"type": "class_identifier",
"named": true
},
{
"type": "composite_type",
"named": true
},
{
"type": "identifier",
"named": true
}
]
},
{
"type": "array",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "array_type",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "default",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "type",
"named": true
}
]
}
},
{
"type": "assignment",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "attribute",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "regex",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "variable",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "selector",
"named": true
}
]
}
}
},
{
"type": "attribute_type",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "attribute_type_entry",
"named": true
}
]
}
},
{
"type": "attribute_type_entry",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "number",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "type",
"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": "and",
"named": false
},
{
"type": "in",
"named": false
},
{
"type": "or",
"named": false
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "block",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "statement",
"named": true
}
]
}
},
{
"type": "boolean",
"named": true,
"fields": {}
},
{
"type": "builtin_type",
"named": true,
"fields": {}
},
{
"type": "case_item",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "block",
"named": true
},
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "case_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "case_item",
"named": true
},
{
"type": "default_case",
"named": true
},
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "class_definition",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "block",
"named": true
},
{
"type": "class_identifier",
"named": true
},
{
"type": "class_inherits",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "parameter_list",
"named": true
}
]
}
},
{
"type": "class_identifier",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
{
"type": "class_inherits",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "class_identifier",
"named": true
},
{
"type": "identifier",
"named": true
}
]
}
},
{
"type": "composite_type",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "string",
"named": true
},
{
"type": "type",
"named": true
}
]
}
},
{
"type": "default",
"named": true,
"fields": {}
},
{
"type": "default_case",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "block",
"named": true
}
]
}
},
{
"type": "defined_resource_type",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "block",
"named": true
},
{
"type": "class_identifier",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "parameter_list",
"named": true
}
]
}
},
{
"type": "else_statement",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "block",
"named": true
}
]
}
},
{
"type": "elsif_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "block",
"named": true
},
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "function_call",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "lambda",
"named": true
}
]
}
},
{
"type": "function_declaration",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "block",
"named": true
},
{
"type": "parameter_list",
"named": true
},
{
"type": "type",
"named": true
}
]
}
},
{
"type": "hash",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "attribute",
"named": true
}
]
}
},
{
"type": "if_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "block",
"named": true
},
{
"type": "else_statement",
"named": true
},
{
"type": "elsif_statement",
"named": true
},
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "include_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "class_identifier",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "variable",
"named": true
}
]
}
},
{
"type": "interpolation",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "if_statement",
"named": true
}
]
}
},
{
"type": "lambda",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "block",
"named": true
},
{
"type": "variable",
"named": true
}
]
}
},
{
"type": "method_call",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "node_definition",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "block",
"named": true
},
{
"type": "node_name",
"named": true
}
]
}
},
{
"type": "node_name",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "default",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
}
},
{
"type": "parameter",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "type",
"named": true
}
]
}
},
{
"type": "parameter_list",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "parameter",
"named": true
}
]
}
},
{
"type": "parenthesized_expression",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "relation",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "statement",
"named": true
}
]
}
},
{
"type": "resource_collector",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "search_expression",
"named": true
}
]
}
},
{
"type": "resource_declaration",
"named": true,
"fields": {
"exported": {
"multiple": false,
"required": false,
"types": [
{
"type": "@@",
"named": false
}
]
},
"title": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"type": {
"multiple": false,
"required": true,
"types": [
{
"type": "class_identifier",
"named": true
},
{
"type": "identifier",
"named": true
}
]
},
"virtual": {
"multiple": false,
"required": false,
"types": [
{
"type": "@",
"named": false
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "attribute",
"named": true
}
]
}
},
{
"type": "resource_default",
"named": true,
"fields": {
"type": {
"multiple": false,
"required": true,
"types": [
{
"type": "class_identifier",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "resource_reference",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "attribute",
"named": true
}
]
}
},
{
"type": "resource_reference",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "resource_reference",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "variable",
"named": true
}
]
}
},
{
"type": "search_expression",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "literal",
"named": true
}
]
}
},
{
"type": "selector",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "assignment",
"named": true
},
{
"type": "attribute",
"named": true
},
{
"type": "variable",
"named": true
}
]
}
},
{
"type": "source_file",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "statement",
"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": "variable",
"named": true
}
]
}
},
{
"type": "tag_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "class_identifier",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "variable",
"named": true
}
]
}
},
{
"type": "type_declaration",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "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": "-",
"named": false
}
]
}
}
},
{
"type": "variable",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "class_identifier",
"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": ">>",
"named": false
},
{
"type": "?",
"named": false
},
{
"type": "@",
"named": false
},
{
"type": "@@",
"named": false
},
{
"type": "Array",
"named": false
},
{
"type": "Boolean",
"named": false
},
{
"type": "Data",
"named": false
},
{
"type": "Default",
"named": false
},
{
"type": "File",
"named": false
},
{
"type": "Float",
"named": false
},
{
"type": "Hash",
"named": false
},
{
"type": "Integer",
"named": false
},
{
"type": "Regexp",
"named": false
},
{
"type": "String",
"named": false
},
{
"type": "Undef",
"named": false
},
{
"type": "Variant",
"named": false
},
{
"type": "[",
"named": false
},
{
"type": "]",
"named": false
},
{
"type": "and",
"named": false
},
{
"type": "case",
"named": false
},
{
"type": "class",
"named": false
},
{
"type": "comment",
"named": true
},
{
"type": "default",
"named": false
},
{
"type": "define",
"named": false
},
{
"type": "else",
"named": false
},
{
"type": "elsif",
"named": false
},
{
"type": "escape_sequence",
"named": true
},
{
"type": "false",
"named": false
},
{
"type": "float",
"named": true
},
{
"type": "function",
"named": false
},
{
"type": "identifier",
"named": true
},
{
"type": "if",
"named": false
},
{
"type": "in",
"named": false
},
{
"type": "include",
"named": false
},
{
"type": "inherits",
"named": false
},
{
"type": "node",
"named": false
},
{
"type": "number",
"named": true
},
{
"type": "or",
"named": false
},
{
"type": "regex",
"named": true
},
{
"type": "string_content",
"named": true
},
{
"type": "tag",
"named": false
},
{
"type": "true",
"named": false
},
{
"type": "type",
"named": false
},
{
"type": "undef",
"named": true
},
{
"type": "{",
"named": false
},
{
"type": "|",
"named": false
},
{
"type": "|>",
"named": false
},
{
"type": "|>>",
"named": false
},
{
"type": "}",
"named": false
},
{
"type": "~>",
"named": false
}
]