tree-sitter-bash
Version:
Bash grammar for tree-sitter
2,802 lines • 49.3 kB
JSON
[
{
"type": "_expression",
"named": true,
"subtypes": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "ternary_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "word",
"named": true
}
]
},
{
"type": "_primary_expression",
"named": true,
"subtypes": [
{
"type": "ansi_c_string",
"named": true
},
{
"type": "arithmetic_expansion",
"named": true
},
{
"type": "brace_expression",
"named": true
},
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "process_substitution",
"named": true
},
{
"type": "raw_string",
"named": true
},
{
"type": "simple_expansion",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "translated_string",
"named": true
},
{
"type": "word",
"named": true
}
]
},
{
"type": "_statement",
"named": true,
"subtypes": [
{
"type": "c_style_for_statement",
"named": true
},
{
"type": "case_statement",
"named": true
},
{
"type": "command",
"named": true
},
{
"type": "compound_statement",
"named": true
},
{
"type": "declaration_command",
"named": true
},
{
"type": "for_statement",
"named": true
},
{
"type": "function_definition",
"named": true
},
{
"type": "if_statement",
"named": true
},
{
"type": "list",
"named": true
},
{
"type": "negated_command",
"named": true
},
{
"type": "pipeline",
"named": true
},
{
"type": "redirected_statement",
"named": true
},
{
"type": "subshell",
"named": true
},
{
"type": "test_command",
"named": true
},
{
"type": "unset_command",
"named": true
},
{
"type": "variable_assignment",
"named": true
},
{
"type": "variable_assignments",
"named": true
},
{
"type": "while_statement",
"named": true
}
]
},
{
"type": "arithmetic_expansion",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "simple_expansion",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "subscript",
"named": true
},
{
"type": "ternary_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
}
},
{
"type": "array",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
}
]
}
},
{
"type": "binary_expression",
"named": true,
"fields": {
"left": {
"multiple": false,
"required": false,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "simple_expansion",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "subscript",
"named": true
},
{
"type": "variable_name",
"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": "-a",
"named": false
},
{
"type": "-o",
"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": "test_operator",
"named": true
},
{
"type": "|",
"named": false
},
{
"type": "|=",
"named": false
},
{
"type": "||",
"named": false
}
]
},
"right": {
"multiple": true,
"required": false,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "extglob_pattern",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "regex",
"named": true
},
{
"type": "simple_expansion",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "subscript",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "binary_expression",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
}
},
{
"type": "brace_expression",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "number",
"named": true
}
]
}
},
{
"type": "c_style_for_statement",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "compound_statement",
"named": true
},
{
"type": "do_group",
"named": true
}
]
},
"condition": {
"multiple": true,
"required": false,
"types": [
{
"type": ",",
"named": false
},
{
"type": "binary_expression",
"named": true
},
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "simple_expansion",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_assignment",
"named": true
},
{
"type": "word",
"named": true
}
]
},
"initializer": {
"multiple": true,
"required": false,
"types": [
{
"type": ",",
"named": false
},
{
"type": "binary_expression",
"named": true
},
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "simple_expansion",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_assignment",
"named": true
},
{
"type": "word",
"named": true
}
]
},
"update": {
"multiple": true,
"required": false,
"types": [
{
"type": ",",
"named": false
},
{
"type": "binary_expression",
"named": true
},
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "simple_expansion",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_assignment",
"named": true
},
{
"type": "word",
"named": true
}
]
}
}
},
{
"type": "case_item",
"named": true,
"fields": {
"fallthrough": {
"multiple": false,
"required": false,
"types": [
{
"type": ";&",
"named": false
},
{
"type": ";;&",
"named": false
}
]
},
"termination": {
"multiple": false,
"required": false,
"types": [
{
"type": ";;",
"named": false
}
]
},
"value": {
"multiple": true,
"required": true,
"types": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
},
{
"type": "extglob_pattern",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
}
]
}
},
{
"type": "case_statement",
"named": true,
"fields": {
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "case_item",
"named": true
}
]
}
},
{
"type": "command",
"named": true,
"fields": {
"argument": {
"multiple": true,
"required": false,
"types": [
{
"type": "$",
"named": false
},
{
"type": "==",
"named": false
},
{
"type": "=~",
"named": false
},
{
"type": "_primary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
},
{
"type": "regex",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "command_name",
"named": true
}
]
},
"redirect": {
"multiple": true,
"required": false,
"types": [
{
"type": "file_redirect",
"named": true
},
{
"type": "herestring_redirect",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "subshell",
"named": true
},
{
"type": "variable_assignment",
"named": true
}
]
}
},
{
"type": "command_name",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
}
]
}
},
{
"type": "command_substitution",
"named": true,
"fields": {
"redirect": {
"multiple": false,
"required": false,
"types": [
{
"type": "file_redirect",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
}
]
}
},
{
"type": "compound_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
}
]
}
},
{
"type": "concatenation",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "array",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
}
},
{
"type": "declaration_command",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
},
{
"type": "variable_assignment",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
}
},
{
"type": "do_group",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
}
]
}
},
{
"type": "elif_clause",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
}
},
{
"type": "else_clause",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
}
]
}
},
{
"type": "expansion",
"named": true,
"fields": {
"operator": {
"multiple": true,
"required": false,
"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
},
{
"type": ":=",
"named": false
},
{
"type": ":?",
"named": false
},
{
"type": "=",
"named": false
},
{
"type": "?",
"named": false
},
{
"type": "@",
"named": false
},
{
"type": "A",
"named": false
},
{
"type": "E",
"named": false
},
{
"type": "K",
"named": false
},
{
"type": "L",
"named": false
},
{
"type": "P",
"named": false
},
{
"type": "Q",
"named": false
},
{
"type": "U",
"named": false
},
{
"type": "^",
"named": false
},
{
"type": "^^",
"named": false
},
{
"type": "a",
"named": false
},
{
"type": "k",
"named": false
},
{
"type": "u",
"named": false
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "array",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "regex",
"named": true
},
{
"type": "special_variable_name",
"named": true
},
{
"type": "subscript",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
}
},
{
"type": "file_redirect",
"named": true,
"fields": {
"descriptor": {
"multiple": false,
"required": false,
"types": [
{
"type": "file_descriptor",
"named": true
}
]
},
"destination": {
"multiple": true,
"required": false,
"types": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
}
]
}
}
},
{
"type": "for_statement",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "do_group",
"named": true
}
]
},
"value": {
"multiple": true,
"required": false,
"types": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
}
]
},
"variable": {
"multiple": false,
"required": true,
"types": [
{
"type": "variable_name",
"named": true
}
]
}
}
},
{
"type": "function_definition",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "compound_statement",
"named": true
},
{
"type": "if_statement",
"named": true
},
{
"type": "subshell",
"named": true
},
{
"type": "test_command",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "word",
"named": true
}
]
},
"redirect": {
"multiple": false,
"required": false,
"types": [
{
"type": "file_redirect",
"named": true
},
{
"type": "herestring_redirect",
"named": true
}
]
}
}
},
{
"type": "heredoc_body",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "heredoc_content",
"named": true
},
{
"type": "simple_expansion",
"named": true
}
]
}
},
{
"type": "heredoc_redirect",
"named": true,
"fields": {
"argument": {
"multiple": true,
"required": false,
"types": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
}
]
},
"descriptor": {
"multiple": false,
"required": false,
"types": [
{
"type": "file_descriptor",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": false,
"types": [
{
"type": "&&",
"named": false
},
{
"type": "||",
"named": false
}
]
},
"redirect": {
"multiple": true,
"required": false,
"types": [
{
"type": "file_redirect",
"named": true
},
{
"type": "herestring_redirect",
"named": true
}
]
},
"right": {
"multiple": false,
"required": false,
"types": [
{
"type": "_statement",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "heredoc_body",
"named": true
},
{
"type": "heredoc_end",
"named": true
},
{
"type": "heredoc_start",
"named": true
},
{
"type": "pipeline",
"named": true
}
]
}
},
{
"type": "herestring_redirect",
"named": true,
"fields": {
"descriptor": {
"multiple": false,
"required": false,
"types": [
{
"type": "file_descriptor",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
}
]
}
},
{
"type": "if_statement",
"named": true,
"fields": {
"condition": {
"multiple": true,
"required": true,
"types": [
{
"type": "&",
"named": false
},
{
"type": ";",
"named": false
},
{
"type": ";;",
"named": false
},
{
"type": "_statement",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
},
{
"type": "elif_clause",
"named": true
},
{
"type": "else_clause",
"named": true
}
]
}
},
{
"type": "list",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
}
},
{
"type": "negated_command",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "command",
"named": true
},
{
"type": "subshell",
"named": true
},
{
"type": "test_command",
"named": true
},
{
"type": "variable_assignment",
"named": true
}
]
}
},
{
"type": "number",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
}
]
}
},
{
"type": "parenthesized_expression",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "simple_expansion",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "subscript",
"named": true
},
{
"type": "variable_assignment",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
}
},
{
"type": "pipeline",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
}
},
{
"type": "postfix_expression",
"named": true,
"fields": {
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "++",
"named": false
},
{
"type": "--",
"named": false
}
]
}
},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "simple_expansion",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "subscript",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
}
},
{
"type": "process_substitution",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
}
},
{
"type": "program",
"named": true,
"root": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_statement",
"named": true
}
]
}
},
{
"type": "redirected_statement",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": false,
"types": [
{
"type": "_statement",
"named": true
}
]
},
"redirect": {
"multiple": true,
"required": false,
"types": [
{
"type": "file_redirect",
"named": true
},
{
"type": "heredoc_redirect",
"named": true
},
{
"type": "herestring_redirect",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "herestring_redirect",
"named": true
}
]
}
},
{
"type": "simple_expansion",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "special_variable_name",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
}
},
{
"type": "string",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "arithmetic_expansion",
"named": true
},
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "simple_expansion",
"named": true
},
{
"type": "string_content",
"named": true
}
]
}
},
{
"type": "subscript",
"named": true,
"fields": {
"index": {
"multiple": false,
"required": true,
"types": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "variable_name",
"named": true
}
]
}
}
},
{
"type": "subshell",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
}
},
{
"type": "ternary_expression",
"named": true,
"fields": {
"alternative": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "simple_expansion",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "subscript",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "simple_expansion",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "subscript",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
},
"consequence": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "simple_expansion",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "subscript",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
}
}
},
{
"type": "test_command",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "redirected_statement",
"named": true
}
]
}
},
{
"type": "translated_string",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "string",
"named": true
}
]
}
},
{
"type": "unary_expression",
"named": true,
"fields": {
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "!",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": "++",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": "--",
"named": false
},
{
"type": "test_operator",
"named": true
},
{
"type": "~",
"named": false
}
]
}
},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "_expression",
"named": true
},
{
"type": "command_substitution",
"named": true
},
{
"type": "expansion",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "simple_expansion",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "subscript",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
}
},
{
"type": "unset_command",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
}
},
{
"type": "variable_assignment",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "subscript",
"named": true
},
{
"type": "variable_name",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "_primary_expression",
"named": true
},
{
"type": "array",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "concatenation",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "postfix_expression",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "variable_assignment",
"named": true
}
]
}
}
},
{
"type": "variable_assignments",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "variable_assignment",
"named": true
}
]
}
},
{
"type": "while_statement",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "do_group",
"named": true
}
]
},
"condition": {
"multiple": true,
"required": true,
"types": [
{
"type": "&",
"named": false
},
{
"type": ";",
"named": false
},
{
"type": ";;",
"named": false
},
{
"type": "_statement",
"named": true
}
]
}
}
},
{
"type": "word",
"named": true,
"fields": {}
},
{
"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": "-a",
"named": false
},
{
"type": "-o",
"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": "?",
"named": false
},
{
"type": "@",
"named": false
},
{
"type": "A",
"named": false
},
{
"type": "E",
"named": false
},
{
"type": "K",
"named": false
},
{
"type": "L",
"named": false
},
{
"type": "P",
"named": false
},
{
"type": "Q",
"named": false
},
{
"type": "U",
"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": "a",
"named": false
},
{
"type": "ansi_c_string",
"named": true
},
{
"type": "case",
"named": false
},
{
"type": "comment",
"named": true,
"extra": true
},
{
"type": "declare",
"named": false
},
{
"type": "do",
"named": false
},
{
"type": "done",
"named": false
},
{
"type": "elif",
"named": false
},
{
"type": "else",
"named": false
},
{
"type": "esac",
"named": false
},
{
"type": "export",
"named": false
},
{
"type": "extglob_pattern",
"named": true
},
{
"type": "fi",
"named": false
},
{
"type": "file_descriptor",
"named": true
},
{
"type": "for",
"named": false
},
{
"type": "function",
"named": false
},
{
"type": "heredoc_content",
"named": true
},
{
"type": "heredoc_end",
"named": true
},
{
"type": "heredoc_start",
"named": true
},
{
"type": "if",
"named": false
},
{
"type": "in",
"named": false
},
{
"type": "k",
"named": false
},
{
"type": "local",
"named": false
},
{
"type": "raw_string",
"named": true
},
{
"type": "readonly",
"named": false
},
{
"type": "regex",
"named": true
},
{
"type": "select",
"named": false
},
{
"type": "special_variable_name",
"named": true
},
{
"type": "string_content",
"named": true
},
{
"type": "test_operator",
"named": true
},
{
"type": "then",
"named": false
},
{
"type": "typeset",
"named": false
},
{
"type": "u",
"named": false
},
{
"type": "unset",
"named": false
},
{
"type": "unsetenv",
"named": false
},
{
"type": "until",
"named": false
},
{
"type": "variable_name",
"named": true
},
{
"type": "while",
"named": false
},
{
"type": "{",
"named": false
},
{
"type": "|",
"named": false
},
{
"type": "|&",
"named": false
},
{
"type": "|=",
"named": false
},
{
"type": "||",
"named": false
},
{
"type": "}",
"named": false
},
{
"type": "~",
"named": false
}
]