pub const NODE_TYPES: &str = "[\n {\n \"type\": \"_expression\",\n \"named\": true,\n \"subtypes\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"binary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n },\n {\n \"type\": \"parenthesized_expression\",\n \"named\": true\n },\n {\n \"type\": \"postfix_expression\",\n \"named\": true\n },\n {\n \"type\": \"ternary_expression\",\n \"named\": true\n },\n {\n \"type\": \"unary_expression\",\n \"named\": true\n },\n {\n \"type\": \"word\",\n \"named\": true\n }\n ]\n },\n {\n \"type\": \"_primary_expression\",\n \"named\": true,\n \"subtypes\": [\n {\n \"type\": \"ansi_c_string\",\n \"named\": true\n },\n {\n \"type\": \"arithmetic_expansion\",\n \"named\": true\n },\n {\n \"type\": \"brace_expression\",\n \"named\": true\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"number\",\n \"named\": true\n },\n {\n \"type\": \"process_substitution\",\n \"named\": true\n },\n {\n \"type\": \"raw_string\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n },\n {\n \"type\": \"string\",\n \"named\": true\n },\n {\n \"type\": \"translated_string\",\n \"named\": true\n },\n {\n \"type\": \"word\",\n \"named\": true\n }\n ]\n },\n {\n \"type\": \"_statement\",\n \"named\": true,\n \"subtypes\": [\n {\n \"type\": \"c_style_for_statement\",\n \"named\": true\n },\n {\n \"type\": \"case_statement\",\n \"named\": true\n },\n {\n \"type\": \"command\",\n \"named\": true\n },\n {\n \"type\": \"compound_statement\",\n \"named\": true\n },\n {\n \"type\": \"declaration_command\",\n \"named\": true\n },\n {\n \"type\": \"for_statement\",\n \"named\": true\n },\n {\n \"type\": \"function_definition\",\n \"named\": true\n },\n {\n \"type\": \"if_statement\",\n \"named\": true\n },\n {\n \"type\": \"list\",\n \"named\": true\n },\n {\n \"type\": \"negated_command\",\n \"named\": true\n },\n {\n \"type\": \"pipeline\",\n \"named\": true\n },\n {\n \"type\": \"redirected_statement\",\n \"named\": true\n },\n {\n \"type\": \"subshell\",\n \"named\": true\n },\n {\n \"type\": \"test_command\",\n \"named\": true\n },\n {\n \"type\": \"unset_command\",\n \"named\": true\n },\n {\n \"type\": \"variable_assignment\",\n \"named\": true\n },\n {\n \"type\": \"variable_assignments\",\n \"named\": true\n },\n {\n \"type\": \"while_statement\",\n \"named\": true\n }\n ]\n },\n {\n \"type\": \"arithmetic_expansion\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"binary_expression\",\n \"named\": true\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"number\",\n \"named\": true\n },\n {\n \"type\": \"parenthesized_expression\",\n \"named\": true\n },\n {\n \"type\": \"postfix_expression\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n },\n {\n \"type\": \"string\",\n \"named\": true\n },\n {\n \"type\": \"subscript\",\n \"named\": true\n },\n {\n \"type\": \"ternary_expression\",\n \"named\": true\n },\n {\n \"type\": \"unary_expression\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"array\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"binary_expression\",\n \"named\": true,\n \"fields\": {\n \"left\": {\n \"multiple\": false,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_expression\",\n \"named\": true\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"number\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n },\n {\n \"type\": \"string\",\n \"named\": true\n },\n {\n \"type\": \"subscript\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n },\n \"operator\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"!=\",\n \"named\": false\n },\n {\n \"type\": \"%\",\n \"named\": false\n },\n {\n \"type\": \"%=\",\n \"named\": false\n },\n {\n \"type\": \"&\",\n \"named\": false\n },\n {\n \"type\": \"&&\",\n \"named\": false\n },\n {\n \"type\": \"&=\",\n \"named\": false\n },\n {\n \"type\": \"*\",\n \"named\": false\n },\n {\n \"type\": \"**\",\n \"named\": false\n },\n {\n \"type\": \"**=\",\n \"named\": false\n },\n {\n \"type\": \"*=\",\n \"named\": false\n },\n {\n \"type\": \"+\",\n \"named\": false\n },\n {\n \"type\": \"+=\",\n \"named\": false\n },\n {\n \"type\": \"-\",\n \"named\": false\n },\n {\n \"type\": \"-=\",\n \"named\": false\n },\n {\n \"type\": \"-a\",\n \"named\": false\n },\n {\n \"type\": \"-o\",\n \"named\": false\n },\n {\n \"type\": \"/\",\n \"named\": false\n },\n {\n \"type\": \"/=\",\n \"named\": false\n },\n {\n \"type\": \"<\",\n \"named\": false\n },\n {\n \"type\": \"<<\",\n \"named\": false\n },\n {\n \"type\": \"<<=\",\n \"named\": false\n },\n {\n \"type\": \"<=\",\n \"named\": false\n },\n {\n \"type\": \"=\",\n \"named\": false\n },\n {\n \"type\": \"==\",\n \"named\": false\n },\n {\n \"type\": \"=~\",\n \"named\": false\n },\n {\n \"type\": \">\",\n \"named\": false\n },\n {\n \"type\": \">=\",\n \"named\": false\n },\n {\n \"type\": \">>\",\n \"named\": false\n },\n {\n \"type\": \">>=\",\n \"named\": false\n },\n {\n \"type\": \"^\",\n \"named\": false\n },\n {\n \"type\": \"^=\",\n \"named\": false\n },\n {\n \"type\": \"test_operator\",\n \"named\": true\n },\n {\n \"type\": \"|\",\n \"named\": false\n },\n {\n \"type\": \"|=\",\n \"named\": false\n },\n {\n \"type\": \"||\",\n \"named\": false\n }\n ]\n },\n \"right\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_expression\",\n \"named\": true\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"extglob_pattern\",\n \"named\": true\n },\n {\n \"type\": \"number\",\n \"named\": true\n },\n {\n \"type\": \"regex\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n },\n {\n \"type\": \"string\",\n \"named\": true\n },\n {\n \"type\": \"subscript\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n }\n },\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"binary_expression\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"number\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"brace_expression\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"number\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"c_style_for_statement\",\n \"named\": true,\n \"fields\": {\n \"body\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"compound_statement\",\n \"named\": true\n },\n {\n \"type\": \"do_group\",\n \"named\": true\n }\n ]\n },\n \"condition\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \",\",\n \"named\": false\n },\n {\n \"type\": \"binary_expression\",\n \"named\": true\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"number\",\n \"named\": true\n },\n {\n \"type\": \"parenthesized_expression\",\n \"named\": true\n },\n {\n \"type\": \"postfix_expression\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n },\n {\n \"type\": \"string\",\n \"named\": true\n },\n {\n \"type\": \"unary_expression\",\n \"named\": true\n },\n {\n \"type\": \"variable_assignment\",\n \"named\": true\n },\n {\n \"type\": \"word\",\n \"named\": true\n }\n ]\n },\n \"initializer\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \",\",\n \"named\": false\n },\n {\n \"type\": \"binary_expression\",\n \"named\": true\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"number\",\n \"named\": true\n },\n {\n \"type\": \"parenthesized_expression\",\n \"named\": true\n },\n {\n \"type\": \"postfix_expression\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n },\n {\n \"type\": \"string\",\n \"named\": true\n },\n {\n \"type\": \"unary_expression\",\n \"named\": true\n },\n {\n \"type\": \"variable_assignment\",\n \"named\": true\n },\n {\n \"type\": \"word\",\n \"named\": true\n }\n ]\n },\n \"update\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \",\",\n \"named\": false\n },\n {\n \"type\": \"binary_expression\",\n \"named\": true\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"number\",\n \"named\": true\n },\n {\n \"type\": \"parenthesized_expression\",\n \"named\": true\n },\n {\n \"type\": \"postfix_expression\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n },\n {\n \"type\": \"string\",\n \"named\": true\n },\n {\n \"type\": \"unary_expression\",\n \"named\": true\n },\n {\n \"type\": \"variable_assignment\",\n \"named\": true\n },\n {\n \"type\": \"word\",\n \"named\": true\n }\n ]\n }\n }\n },\n {\n \"type\": \"case_item\",\n \"named\": true,\n \"fields\": {\n \"fallthrough\": {\n \"multiple\": false,\n \"required\": false,\n \"types\": [\n {\n \"type\": \";&\",\n \"named\": false\n },\n {\n \"type\": \";;&\",\n \"named\": false\n }\n ]\n },\n \"termination\": {\n \"multiple\": false,\n \"required\": false,\n \"types\": [\n {\n \"type\": \";;\",\n \"named\": false\n }\n ]\n },\n \"value\": {\n \"multiple\": true,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n },\n {\n \"type\": \"extglob_pattern\",\n \"named\": true\n }\n ]\n }\n },\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"case_statement\",\n \"named\": true,\n \"fields\": {\n \"value\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n }\n ]\n }\n },\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"case_item\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"command\",\n \"named\": true,\n \"fields\": {\n \"argument\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"$\",\n \"named\": false\n },\n {\n \"type\": \"==\",\n \"named\": false\n },\n {\n \"type\": \"=~\",\n \"named\": false\n },\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n },\n {\n \"type\": \"regex\",\n \"named\": true\n }\n ]\n },\n \"name\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"command_name\",\n \"named\": true\n }\n ]\n },\n \"redirect\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"file_redirect\",\n \"named\": true\n },\n {\n \"type\": \"herestring_redirect\",\n \"named\": true\n }\n ]\n }\n },\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"subshell\",\n \"named\": true\n },\n {\n \"type\": \"variable_assignment\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"command_name\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true,\n \"fields\": {\n \"redirect\": {\n \"multiple\": false,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"file_redirect\",\n \"named\": true\n }\n ]\n }\n },\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"compound_statement\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"concatenation\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"array\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"declaration_command\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n },\n {\n \"type\": \"variable_assignment\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"do_group\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"elif_clause\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"else_clause\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"expansion\",\n \"named\": true,\n \"fields\": {\n \"operator\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"!\",\n \"named\": false\n },\n {\n \"type\": \"#\",\n \"named\": false\n },\n {\n \"type\": \"##\",\n \"named\": false\n },\n {\n \"type\": \"%\",\n \"named\": false\n },\n {\n \"type\": \"%%\",\n \"named\": false\n },\n {\n \"type\": \"*\",\n \"named\": false\n },\n {\n \"type\": \"+\",\n \"named\": false\n },\n {\n \"type\": \",\",\n \"named\": false\n },\n {\n \"type\": \",,\",\n \"named\": false\n },\n {\n \"type\": \"-\",\n \"named\": false\n },\n {\n \"type\": \"/\",\n \"named\": false\n },\n {\n \"type\": \"/#\",\n \"named\": false\n },\n {\n \"type\": \"/%\",\n \"named\": false\n },\n {\n \"type\": \"//\",\n \"named\": false\n },\n {\n \"type\": \":\",\n \"named\": false\n },\n {\n \"type\": \":+\",\n \"named\": false\n },\n {\n \"type\": \":-\",\n \"named\": false\n },\n {\n \"type\": \":=\",\n \"named\": false\n },\n {\n \"type\": \":?\",\n \"named\": false\n },\n {\n \"type\": \"=\",\n \"named\": false\n },\n {\n \"type\": \"?\",\n \"named\": false\n },\n {\n \"type\": \"@\",\n \"named\": false\n },\n {\n \"type\": \"A\",\n \"named\": false\n },\n {\n \"type\": \"E\",\n \"named\": false\n },\n {\n \"type\": \"K\",\n \"named\": false\n },\n {\n \"type\": \"L\",\n \"named\": false\n },\n {\n \"type\": \"P\",\n \"named\": false\n },\n {\n \"type\": \"Q\",\n \"named\": false\n },\n {\n \"type\": \"U\",\n \"named\": false\n },\n {\n \"type\": \"^\",\n \"named\": false\n },\n {\n \"type\": \"^^\",\n \"named\": false\n },\n {\n \"type\": \"a\",\n \"named\": false\n },\n {\n \"type\": \"k\",\n \"named\": false\n },\n {\n \"type\": \"u\",\n \"named\": false\n }\n ]\n }\n },\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"array\",\n \"named\": true\n },\n {\n \"type\": \"binary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n },\n {\n \"type\": \"parenthesized_expression\",\n \"named\": true\n },\n {\n \"type\": \"regex\",\n \"named\": true\n },\n {\n \"type\": \"special_variable_name\",\n \"named\": true\n },\n {\n \"type\": \"subscript\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"file_redirect\",\n \"named\": true,\n \"fields\": {\n \"descriptor\": {\n \"multiple\": false,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"file_descriptor\",\n \"named\": true\n }\n ]\n },\n \"destination\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n }\n ]\n }\n }\n },\n {\n \"type\": \"for_statement\",\n \"named\": true,\n \"fields\": {\n \"body\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"do_group\",\n \"named\": true\n }\n ]\n },\n \"value\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n }\n ]\n },\n \"variable\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n }\n }\n },\n {\n \"type\": \"function_definition\",\n \"named\": true,\n \"fields\": {\n \"body\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"compound_statement\",\n \"named\": true\n },\n {\n \"type\": \"if_statement\",\n \"named\": true\n },\n {\n \"type\": \"subshell\",\n \"named\": true\n },\n {\n \"type\": \"test_command\",\n \"named\": true\n }\n ]\n },\n \"name\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"word\",\n \"named\": true\n }\n ]\n },\n \"redirect\": {\n \"multiple\": false,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"file_redirect\",\n \"named\": true\n },\n {\n \"type\": \"herestring_redirect\",\n \"named\": true\n }\n ]\n }\n }\n },\n {\n \"type\": \"heredoc_body\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"heredoc_content\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"heredoc_redirect\",\n \"named\": true,\n \"fields\": {\n \"argument\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n }\n ]\n },\n \"descriptor\": {\n \"multiple\": false,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"file_descriptor\",\n \"named\": true\n }\n ]\n },\n \"operator\": {\n \"multiple\": false,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"&&\",\n \"named\": false\n },\n {\n \"type\": \"||\",\n \"named\": false\n }\n ]\n },\n \"redirect\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"file_redirect\",\n \"named\": true\n },\n {\n \"type\": \"herestring_redirect\",\n \"named\": true\n }\n ]\n },\n \"right\": {\n \"multiple\": false,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n }\n },\n \"children\": {\n \"multiple\": true,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"heredoc_body\",\n \"named\": true\n },\n {\n \"type\": \"heredoc_end\",\n \"named\": true\n },\n {\n \"type\": \"heredoc_start\",\n \"named\": true\n },\n {\n \"type\": \"pipeline\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"herestring_redirect\",\n \"named\": true,\n \"fields\": {\n \"descriptor\": {\n \"multiple\": false,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"file_descriptor\",\n \"named\": true\n }\n ]\n }\n },\n \"children\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"if_statement\",\n \"named\": true,\n \"fields\": {\n \"condition\": {\n \"multiple\": true,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"&\",\n \"named\": false\n },\n {\n \"type\": \";\",\n \"named\": false\n },\n {\n \"type\": \";;\",\n \"named\": false\n },\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n }\n },\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_statement\",\n \"named\": true\n },\n {\n \"type\": \"elif_clause\",\n \"named\": true\n },\n {\n \"type\": \"else_clause\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"list\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"negated_command\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"command\",\n \"named\": true\n },\n {\n \"type\": \"subshell\",\n \"named\": true\n },\n {\n \"type\": \"test_command\",\n \"named\": true\n },\n {\n \"type\": \"variable_assignment\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"number\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": false,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"parenthesized_expression\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_expression\",\n \"named\": true\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"number\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n },\n {\n \"type\": \"string\",\n \"named\": true\n },\n {\n \"type\": \"subscript\",\n \"named\": true\n },\n {\n \"type\": \"variable_assignment\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"pipeline\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"postfix_expression\",\n \"named\": true,\n \"fields\": {\n \"operator\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"++\",\n \"named\": false\n },\n {\n \"type\": \"--\",\n \"named\": false\n }\n ]\n }\n },\n \"children\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_expression\",\n \"named\": true\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"number\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n },\n {\n \"type\": \"string\",\n \"named\": true\n },\n {\n \"type\": \"subscript\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"process_substitution\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"program\",\n \"named\": true,\n \"root\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"redirected_statement\",\n \"named\": true,\n \"fields\": {\n \"body\": {\n \"multiple\": false,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n },\n \"redirect\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"file_redirect\",\n \"named\": true\n },\n {\n \"type\": \"heredoc_redirect\",\n \"named\": true\n },\n {\n \"type\": \"herestring_redirect\",\n \"named\": true\n }\n ]\n }\n },\n \"children\": {\n \"multiple\": false,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"herestring_redirect\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"special_variable_name\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"string\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"arithmetic_expansion\",\n \"named\": true\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n },\n {\n \"type\": \"string_content\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"subscript\",\n \"named\": true,\n \"fields\": {\n \"index\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"binary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n },\n {\n \"type\": \"parenthesized_expression\",\n \"named\": true\n },\n {\n \"type\": \"unary_expression\",\n \"named\": true\n }\n ]\n },\n \"name\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n }\n }\n },\n {\n \"type\": \"subshell\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"ternary_expression\",\n \"named\": true,\n \"fields\": {\n \"alternative\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_expression\",\n \"named\": true\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"number\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n },\n {\n \"type\": \"string\",\n \"named\": true\n },\n {\n \"type\": \"subscript\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n },\n \"condition\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_expression\",\n \"named\": true\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"number\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n },\n {\n \"type\": \"string\",\n \"named\": true\n },\n {\n \"type\": \"subscript\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n },\n \"consequence\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_expression\",\n \"named\": true\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"number\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n },\n {\n \"type\": \"string\",\n \"named\": true\n },\n {\n \"type\": \"subscript\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n }\n }\n },\n {\n \"type\": \"test_command\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": false,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_expression\",\n \"named\": true\n },\n {\n \"type\": \"redirected_statement\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"translated_string\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"string\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"unary_expression\",\n \"named\": true,\n \"fields\": {\n \"operator\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"!\",\n \"named\": false\n },\n {\n \"type\": \"+\",\n \"named\": false\n },\n {\n \"type\": \"++\",\n \"named\": false\n },\n {\n \"type\": \"-\",\n \"named\": false\n },\n {\n \"type\": \"--\",\n \"named\": false\n },\n {\n \"type\": \"test_operator\",\n \"named\": true\n },\n {\n \"type\": \"~\",\n \"named\": false\n }\n ]\n }\n },\n \"children\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_expression\",\n \"named\": true\n },\n {\n \"type\": \"command_substitution\",\n \"named\": true\n },\n {\n \"type\": \"expansion\",\n \"named\": true\n },\n {\n \"type\": \"number\",\n \"named\": true\n },\n {\n \"type\": \"simple_expansion\",\n \"named\": true\n },\n {\n \"type\": \"string\",\n \"named\": true\n },\n {\n \"type\": \"subscript\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"unset_command\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": false,\n \"types\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"variable_assignment\",\n \"named\": true,\n \"fields\": {\n \"name\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"subscript\",\n \"named\": true\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n }\n ]\n },\n \"value\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"_primary_expression\",\n \"named\": true\n },\n {\n \"type\": \"array\",\n \"named\": true\n },\n {\n \"type\": \"binary_expression\",\n \"named\": true\n },\n {\n \"type\": \"concatenation\",\n \"named\": true\n },\n {\n \"type\": \"parenthesized_expression\",\n \"named\": true\n },\n {\n \"type\": \"postfix_expression\",\n \"named\": true\n },\n {\n \"type\": \"unary_expression\",\n \"named\": true\n },\n {\n \"type\": \"variable_assignment\",\n \"named\": true\n }\n ]\n }\n }\n },\n {\n \"type\": \"variable_assignments\",\n \"named\": true,\n \"fields\": {},\n \"children\": {\n \"multiple\": true,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"variable_assignment\",\n \"named\": true\n }\n ]\n }\n },\n {\n \"type\": \"while_statement\",\n \"named\": true,\n \"fields\": {\n \"body\": {\n \"multiple\": false,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"do_group\",\n \"named\": true\n }\n ]\n },\n \"condition\": {\n \"multiple\": true,\n \"required\": true,\n \"types\": [\n {\n \"type\": \"&\",\n \"named\": false\n },\n {\n \"type\": \";\",\n \"named\": false\n },\n {\n \"type\": \";;\",\n \"named\": false\n },\n {\n \"type\": \"_statement\",\n \"named\": true\n }\n ]\n }\n }\n },\n {\n \"type\": \"word\",\n \"named\": true,\n \"fields\": {}\n },\n {\n \"type\": \"!\",\n \"named\": false\n },\n {\n \"type\": \"!=\",\n \"named\": false\n },\n {\n \"type\": \"\\\"\",\n \"named\": false\n },\n {\n \"type\": \"#\",\n \"named\": false\n },\n {\n \"type\": \"##\",\n \"named\": false\n },\n {\n \"type\": \"$\",\n \"named\": false\n },\n {\n \"type\": \"$(\",\n \"named\": false\n },\n {\n \"type\": \"$((\",\n \"named\": false\n },\n {\n \"type\": \"$[\",\n \"named\": false\n },\n {\n \"type\": \"$`\",\n \"named\": false\n },\n {\n \"type\": \"${\",\n \"named\": false\n },\n {\n \"type\": \"%\",\n \"named\": false\n },\n {\n \"type\": \"%%\",\n \"named\": false\n },\n {\n \"type\": \"%=\",\n \"named\": false\n },\n {\n \"type\": \"&\",\n \"named\": false\n },\n {\n \"type\": \"&&\",\n \"named\": false\n },\n {\n \"type\": \"&=\",\n \"named\": false\n },\n {\n \"type\": \"&>\",\n \"named\": false\n },\n {\n \"type\": \"&>>\",\n \"named\": false\n },\n {\n \"type\": \"(\",\n \"named\": false\n },\n {\n \"type\": \"((\",\n \"named\": false\n },\n {\n \"type\": \")\",\n \"named\": false\n },\n {\n \"type\": \"))\",\n \"named\": false\n },\n {\n \"type\": \"*\",\n \"named\": false\n },\n {\n \"type\": \"**\",\n \"named\": false\n },\n {\n \"type\": \"**=\",\n \"named\": false\n },\n {\n \"type\": \"*=\",\n \"named\": false\n },\n {\n \"type\": \"+\",\n \"named\": false\n },\n {\n \"type\": \"++\",\n \"named\": false\n },\n {\n \"type\": \"+=\",\n \"named\": false\n },\n {\n \"type\": \",\",\n \"named\": false\n },\n {\n \"type\": \",,\",\n \"named\": false\n },\n {\n \"type\": \"-\",\n \"named\": false\n },\n {\n \"type\": \"--\",\n \"named\": false\n },\n {\n \"type\": \"-=\",\n \"named\": false\n },\n {\n \"type\": \"-a\",\n \"named\": false\n },\n {\n \"type\": \"-o\",\n \"named\": false\n },\n {\n \"type\": \"..\",\n \"named\": false\n },\n {\n \"type\": \"/\",\n \"named\": false\n },\n {\n \"type\": \"/#\",\n \"named\": false\n },\n {\n \"type\": \"/%\",\n \"named\": false\n },\n {\n \"type\": \"//\",\n \"named\": false\n },\n {\n \"type\": \"/=\",\n \"named\": false\n },\n {\n \"type\": \":\",\n \"named\": false\n },\n {\n \"type\": \":+\",\n \"named\": false\n },\n {\n \"type\": \":-\",\n \"named\": false\n },\n {\n \"type\": \":=\",\n \"named\": false\n },\n {\n \"type\": \":?\",\n \"named\": false\n },\n {\n \"type\": \";\",\n \"named\": false\n },\n {\n \"type\": \";&\",\n \"named\": false\n },\n {\n \"type\": \";;\",\n \"named\": false\n },\n {\n \"type\": \";;&\",\n \"named\": false\n },\n {\n \"type\": \"<\",\n \"named\": false\n },\n {\n \"type\": \"<&\",\n \"named\": false\n },\n {\n \"type\": \"<&-\",\n \"named\": false\n },\n {\n \"type\": \"<(\",\n \"named\": false\n },\n {\n \"type\": \"<<\",\n \"named\": false\n },\n {\n \"type\": \"<<-\",\n \"named\": false\n },\n {\n \"type\": \"<<<\",\n \"named\": false\n },\n {\n \"type\": \"<<=\",\n \"named\": false\n },\n {\n \"type\": \"<=\",\n \"named\": false\n },\n {\n \"type\": \"=\",\n \"named\": false\n },\n {\n \"type\": \"==\",\n \"named\": false\n },\n {\n \"type\": \"=~\",\n \"named\": false\n },\n {\n \"type\": \">\",\n \"named\": false\n },\n {\n \"type\": \">&\",\n \"named\": false\n },\n {\n \"type\": \">&-\",\n \"named\": false\n },\n {\n \"type\": \">(\",\n \"named\": false\n },\n {\n \"type\": \">=\",\n \"named\": false\n },\n {\n \"type\": \">>\",\n \"named\": false\n },\n {\n \"type\": \">>=\",\n \"named\": false\n },\n {\n \"type\": \">|\",\n \"named\": false\n },\n {\n \"type\": \"?\",\n \"named\": false\n },\n {\n \"type\": \"@\",\n \"named\": false\n },\n {\n \"type\": \"A\",\n \"named\": false\n },\n {\n \"type\": \"E\",\n \"named\": false\n },\n {\n \"type\": \"K\",\n \"named\": false\n },\n {\n \"type\": \"L\",\n \"named\": false\n },\n {\n \"type\": \"P\",\n \"named\": false\n },\n {\n \"type\": \"Q\",\n \"named\": false\n },\n {\n \"type\": \"U\",\n \"named\": false\n },\n {\n \"type\": \"[\",\n \"named\": false\n },\n {\n \"type\": \"[[\",\n \"named\": false\n },\n {\n \"type\": \"]\",\n \"named\": false\n },\n {\n \"type\": \"]]\",\n \"named\": false\n },\n {\n \"type\": \"^\",\n \"named\": false\n },\n {\n \"type\": \"^=\",\n \"named\": false\n },\n {\n \"type\": \"^^\",\n \"named\": false\n },\n {\n \"type\": \"`\",\n \"named\": false\n },\n {\n \"type\": \"``\",\n \"named\": false\n },\n {\n \"type\": \"a\",\n \"named\": false\n },\n {\n \"type\": \"ansi_c_string\",\n \"named\": true\n },\n {\n \"type\": \"case\",\n \"named\": false\n },\n {\n \"type\": \"comment\",\n \"named\": true\n },\n {\n \"type\": \"declare\",\n \"named\": false\n },\n {\n \"type\": \"do\",\n \"named\": false\n },\n {\n \"type\": \"done\",\n \"named\": false\n },\n {\n \"type\": \"elif\",\n \"named\": false\n },\n {\n \"type\": \"else\",\n \"named\": false\n },\n {\n \"type\": \"esac\",\n \"named\": false\n },\n {\n \"type\": \"export\",\n \"named\": false\n },\n {\n \"type\": \"extglob_pattern\",\n \"named\": true\n },\n {\n \"type\": \"fi\",\n \"named\": false\n },\n {\n \"type\": \"file_descriptor\",\n \"named\": true\n },\n {\n \"type\": \"for\",\n \"named\": false\n },\n {\n \"type\": \"function\",\n \"named\": false\n },\n {\n \"type\": \"heredoc_content\",\n \"named\": true\n },\n {\n \"type\": \"heredoc_end\",\n \"named\": true\n },\n {\n \"type\": \"heredoc_start\",\n \"named\": true\n },\n {\n \"type\": \"if\",\n \"named\": false\n },\n {\n \"type\": \"in\",\n \"named\": false\n },\n {\n \"type\": \"k\",\n \"named\": false\n },\n {\n \"type\": \"local\",\n \"named\": false\n },\n {\n \"type\": \"raw_string\",\n \"named\": true\n },\n {\n \"type\": \"readonly\",\n \"named\": false\n },\n {\n \"type\": \"regex\",\n \"named\": true\n },\n {\n \"type\": \"select\",\n \"named\": false\n },\n {\n \"type\": \"special_variable_name\",\n \"named\": true\n },\n {\n \"type\": \"string_content\",\n \"named\": true\n },\n {\n \"type\": \"test_operator\",\n \"named\": true\n },\n {\n \"type\": \"then\",\n \"named\": false\n },\n {\n \"type\": \"typeset\",\n \"named\": false\n },\n {\n \"type\": \"u\",\n \"named\": false\n },\n {\n \"type\": \"unset\",\n \"named\": false\n },\n {\n \"type\": \"unsetenv\",\n \"named\": false\n },\n {\n \"type\": \"until\",\n \"named\": false\n },\n {\n \"type\": \"variable_name\",\n \"named\": true\n },\n {\n \"type\": \"while\",\n \"named\": false\n },\n {\n \"type\": \"{\",\n \"named\": false\n },\n {\n \"type\": \"|\",\n \"named\": false\n },\n {\n \"type\": \"|&\",\n \"named\": false\n },\n {\n \"type\": \"|=\",\n \"named\": false\n },\n {\n \"type\": \"||\",\n \"named\": false\n },\n {\n \"type\": \"}\",\n \"named\": false\n },\n {\n \"type\": \"~\",\n \"named\": false\n }\n]";
Expand description
The content of the node-types.json
file for this grammar.