mirror of
https://github.com/ivuorinen/tree-sitter-shellspec.git
synced 2026-01-26 11:43:59 +00:00
Documentation Fixes: - README.md: Update test count from 59 to 63 (badge, features, test command) - README.md: Fix lint script references to actual npm scripts - CONTRIBUTING.md: Correct format script reference to npm run format:check - package.json: Remove non-existent yamllint script, split lint:markdown into check/fix variants Grammar Enhancements: - Add fExampleGroup and xExampleGroup to Context block variants - Regenerate parser with new grammar (63/63 tests passing, 100% success rate) Syntax Highlighting: - Add fExampleGroup and xExampleGroup to focused/skipped block highlights - Remove non-matching Data modifier tokens (:raw, :expand, #|) - Add "End" keyword as block terminator Memory File Corrections: - Remove incorrect merge_group trigger references - Remove pr-lint.yml workflow references (deleted in previous optimization) - Update test counts with timestamps (59→63, added 2025-12-11) - Update conflict count (13→5, optimized) Code Style: - Auto-format renovate.json and tree-sitter.json with prettier
3319 lines
57 KiB
JSON
3319 lines
57 KiB
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": "shellspec_context_block",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "shellspec_data_block",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "shellspec_describe_block",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "shellspec_directive_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "shellspec_hook_block",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "shellspec_hook_statement",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "shellspec_it_block",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "shellspec_utility_block",
|
|
"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": "shellspec_context_block",
|
|
"named": true,
|
|
"fields": {
|
|
"description": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "raw_string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "word",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "_statement",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "shellspec_data_block",
|
|
"named": true,
|
|
"fields": {
|
|
"argument": {
|
|
"multiple": false,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "raw_string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "word",
|
|
"named": true
|
|
}
|
|
]
|
|
},
|
|
"label": {
|
|
"multiple": false,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "raw_string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "word",
|
|
"named": true
|
|
}
|
|
]
|
|
},
|
|
"modifier": {
|
|
"multiple": false,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "expand",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "raw",
|
|
"named": false
|
|
}
|
|
]
|
|
},
|
|
"statements": {
|
|
"multiple": true,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "&",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": ";",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": ";;",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "_statement",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "shellspec_describe_block",
|
|
"named": true,
|
|
"fields": {
|
|
"description": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "raw_string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "word",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "_statement",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "shellspec_directive_statement",
|
|
"named": true,
|
|
"fields": {
|
|
"condition": {
|
|
"multiple": true,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "raw_string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "word",
|
|
"named": true
|
|
}
|
|
]
|
|
},
|
|
"path": {
|
|
"multiple": false,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "raw_string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "word",
|
|
"named": true
|
|
}
|
|
]
|
|
},
|
|
"reason": {
|
|
"multiple": false,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "raw_string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "word",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "shellspec_hook_block",
|
|
"named": true,
|
|
"fields": {
|
|
"label": {
|
|
"multiple": false,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "raw_string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "word",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "_statement",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "shellspec_hook_statement",
|
|
"named": true,
|
|
"fields": {
|
|
"argument": {
|
|
"multiple": true,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "raw_string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "word",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "shellspec_it_block",
|
|
"named": true,
|
|
"fields": {
|
|
"description": {
|
|
"multiple": false,
|
|
"required": true,
|
|
"types": [
|
|
{
|
|
"type": "raw_string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "word",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "_statement",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "shellspec_utility_block",
|
|
"named": true,
|
|
"fields": {
|
|
"label": {
|
|
"multiple": false,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "raw_string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "word",
|
|
"named": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"children": {
|
|
"multiple": true,
|
|
"required": false,
|
|
"types": [
|
|
{
|
|
"type": "_statement",
|
|
"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": "-=",
|
|
"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": "After",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "AfterAll",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "AfterCall",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "AfterEach",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "AfterRun",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "Before",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "BeforeAll",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "BeforeCall",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "BeforeEach",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "BeforeRun",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "Context",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "Data",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "Describe",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "E",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "End",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "Example",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "ExampleGroup",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "Include",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "It",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "K",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "L",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "P",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "Parameters",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "Pending",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "Q",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "Skip",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "Specify",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "Todo",
|
|
"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": "expand",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "export",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "extglob_pattern",
|
|
"named": true
|
|
},
|
|
{
|
|
"type": "fContext",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "fDescribe",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "fExample",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "fExampleGroup",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "fIt",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "fSpecify",
|
|
"named": false
|
|
},
|
|
{
|
|
"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",
|
|
"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": "xContext",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "xDescribe",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "xExample",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "xExampleGroup",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "xIt",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "xSpecify",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "{",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "|",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "|&",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "|=",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "||",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "}",
|
|
"named": false
|
|
},
|
|
{
|
|
"type": "~",
|
|
"named": false
|
|
}
|
|
]
|