[ { "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": "ansii_c_string", "named": true }, { "type": "command_substitution", "named": true }, { "type": "expansion", "named": true }, { "type": "process_substitution", "named": true }, { "type": "raw_string", "named": true }, { "type": "simple_expansion", "named": true }, { "type": "string", "named": true }, { "type": "string_expansion", "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": "while_statement", "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": 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": "test_operator", "named": true }, { "type": "||", "named": false } ] }, "right": { "multiple": false, "required": true, "types": [ { "type": "_expression", "named": true }, { "type": "regex", "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": false, "required": false, "types": [ { "type": "_expression", "named": true } ] }, "initializer": { "multiple": false, "required": false, "types": [ { "type": "_expression", "named": true } ] }, "update": { "multiple": false, "required": false, "types": [ { "type": "_expression", "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 } ] } }, "children": { "multiple": true, "required": false, "types": [ { "type": "_statement", "named": true }, { "type": "heredoc_body", "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": "_primary_expression", "named": true }, { "type": "concatenation", "named": true }, { "type": "regex", "named": true } ] }, "name": { "multiple": false, "required": true, "types": [ { "type": "command_name", "named": true } ] } }, "children": { "multiple": true, "required": false, "types": [ { "type": "file_redirect", "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": {}, "children": { "multiple": true, "required": true, "types": [ { "type": "_statement", "named": true }, { "type": "file_redirect", "named": true }, { "type": "heredoc_body", "named": true } ] } }, { "type": "compound_statement", "named": true, "fields": {}, "children": { "multiple": true, "required": false, "types": [ { "type": "_statement", "named": true }, { "type": "heredoc_body", "named": true } ] } }, { "type": "concatenation", "named": true, "fields": {}, "children": { "multiple": true, "required": false, "types": [ { "type": "_primary_expression", "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": "heredoc_body", "named": true } ] } }, { "type": "elif_clause", "named": true, "fields": {}, "children": { "multiple": true, "required": true, "types": [ { "type": "_statement", "named": true }, { "type": "heredoc_body", "named": true } ] } }, { "type": "else_clause", "named": true, "fields": {}, "children": { "multiple": true, "required": false, "types": [ { "type": "_statement", "named": true }, { "type": "heredoc_body", "named": true } ] } }, { "type": "expansion", "named": true, "fields": {}, "children": { "multiple": true, "required": false, "types": [ { "type": "_primary_expression", "named": true }, { "type": "concatenation", "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": false, "required": true, "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": "subshell", "named": true }, { "type": "test_command", "named": true } ] }, "name": { "multiple": false, "required": true, "types": [ { "type": "word", "named": true } ] } } }, { "type": "heredoc_body", "named": true, "fields": {}, "children": { "multiple": true, "required": false, "types": [ { "type": "command_substitution", "named": true }, { "type": "expansion", "named": true }, { "type": "simple_expansion", "named": true } ] } }, { "type": "heredoc_redirect", "named": true, "fields": {}, "children": { "multiple": false, "required": true, "types": [ { "type": "heredoc_start", "named": true } ] } }, { "type": "herestring_redirect", "named": true, "fields": {}, "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": "\n", "named": false }, { "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": "heredoc_body", "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": "parenthesized_expression", "named": true, "fields": {}, "children": { "multiple": false, "required": true, "types": [ { "type": "_expression", "named": true } ] } }, { "type": "pipeline", "named": true, "fields": {}, "children": { "multiple": true, "required": true, "types": [ { "type": "_statement", "named": true } ] } }, { "type": "postfix_expression", "named": true, "fields": {}, "children": { "multiple": false, "required": true, "types": [ { "type": "_expression", "named": true } ] } }, { "type": "process_substitution", "named": true, "fields": {}, "children": { "multiple": true, "required": true, "types": [ { "type": "_statement", "named": true }, { "type": "heredoc_body", "named": true } ] } }, { "type": "program", "named": true, "fields": {}, "children": { "multiple": true, "required": false, "types": [ { "type": "_statement", "named": true }, { "type": "heredoc_body", "named": true } ] } }, { "type": "redirected_statement", "named": true, "fields": { "body": { "multiple": false, "required": true, "types": [ { "type": "_statement", "named": true } ] }, "redirect": { "multiple": true, "required": true, "types": [ { "type": "file_redirect", "named": true }, { "type": "heredoc_redirect", "named": true }, { "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": "command_substitution", "named": true }, { "type": "expansion", "named": true }, { "type": "simple_expansion", "named": true } ] } }, { "type": "string_expansion", "named": true, "fields": {}, "children": { "multiple": false, "required": true, "types": [ { "type": "raw_string", "named": true }, { "type": "string", "named": true } ] } }, { "type": "subscript", "named": true, "fields": { "index": { "multiple": false, "required": true, "types": [ { "type": "_primary_expression", "named": true }, { "type": "concatenation", "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": "heredoc_body", "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_command", "named": true, "fields": {}, "children": { "multiple": false, "required": true, "types": [ { "type": "_expression", "named": true } ] } }, { "type": "unary_expression", "named": true, "fields": {}, "children": { "multiple": true, "required": true, "types": [ { "type": "_expression", "named": true }, { "type": "test_operator", "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": "concatenation", "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": "\n", "named": false }, { "type": "&", "named": false }, { "type": ";", "named": false }, { "type": ";;", "named": false }, { "type": "_statement", "named": true } ] } } }, { "type": "word", "named": true, "fields": {} }, { "type": "\n", "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": "=", "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": "ansii_c_string", "named": true }, { "type": "case", "named": false }, { "type": "comment", "named": 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": "fi", "named": false }, { "type": "file_descriptor", "named": true }, { "type": "for", "named": false }, { "type": "function", "named": false }, { "type": "heredoc_start", "named": true }, { "type": "if", "named": false }, { "type": "in", "named": false }, { "type": "local", "named": false }, { "type": "raw_string", "named": true }, { "type": "readonly", "named": false }, { "type": "regex", "named": true }, { "type": "special_variable_name", "named": true }, { "type": "test_operator", "named": true }, { "type": "then", "named": false }, { "type": "typeset", "named": false }, { "type": "unset", "named": false }, { "type": "unsetenv", "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 } ]