{
  "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
  "name": "bash",
  "word": "word",
  "rules": {
    "program": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_statements"
        },
        {
          "type": "BLANK"
        }
      ]
    },
    "_statements": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_statement"
                },
                {
                  "type": "SYMBOL",
                  "name": "_terminator"
                }
              ]
            }
          },
          {
            "type": "SYMBOL",
            "name": "_statement"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_terminator"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_terminated_statement": {
      "type": "REPEAT1",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_statement"
          },
          {
            "type": "SYMBOL",
            "name": "_terminator"
          }
        ]
      }
    },
    "_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_statement_not_subshell"
        },
        {
          "type": "SYMBOL",
          "name": "subshell"
        }
      ]
    },
    "_statement_not_subshell": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "redirected_statement"
        },
        {
          "type": "SYMBOL",
          "name": "variable_assignment"
        },
        {
          "type": "SYMBOL",
          "name": "variable_assignments"
        },
        {
          "type": "SYMBOL",
          "name": "command"
        },
        {
          "type": "SYMBOL",
          "name": "declaration_command"
        },
        {
          "type": "SYMBOL",
          "name": "unset_command"
        },
        {
          "type": "SYMBOL",
          "name": "test_command"
        },
        {
          "type": "SYMBOL",
          "name": "negated_command"
        },
        {
          "type": "SYMBOL",
          "name": "for_statement"
        },
        {
          "type": "SYMBOL",
          "name": "c_style_for_statement"
        },
        {
          "type": "SYMBOL",
          "name": "while_statement"
        },
        {
          "type": "SYMBOL",
          "name": "if_statement"
        },
        {
          "type": "SYMBOL",
          "name": "case_statement"
        },
        {
          "type": "SYMBOL",
          "name": "pipeline"
        },
        {
          "type": "SYMBOL",
          "name": "list"
        },
        {
          "type": "SYMBOL",
          "name": "compound_statement"
        },
        {
          "type": "SYMBOL",
          "name": "function_definition"
        }
      ]
    },
    "_statement_not_pipeline": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "redirected_statement"
          },
          {
            "type": "SYMBOL",
            "name": "variable_assignment"
          },
          {
            "type": "SYMBOL",
            "name": "variable_assignments"
          },
          {
            "type": "SYMBOL",
            "name": "command"
          },
          {
            "type": "SYMBOL",
            "name": "declaration_command"
          },
          {
            "type": "SYMBOL",
            "name": "unset_command"
          },
          {
            "type": "SYMBOL",
            "name": "test_command"
          },
          {
            "type": "SYMBOL",
            "name": "negated_command"
          },
          {
            "type": "SYMBOL",
            "name": "for_statement"
          },
          {
            "type": "SYMBOL",
            "name": "c_style_for_statement"
          },
          {
            "type": "SYMBOL",
            "name": "while_statement"
          },
          {
            "type": "SYMBOL",
            "name": "if_statement"
          },
          {
            "type": "SYMBOL",
            "name": "case_statement"
          },
          {
            "type": "SYMBOL",
            "name": "list"
          },
          {
            "type": "SYMBOL",
            "name": "compound_statement"
          },
          {
            "type": "SYMBOL",
            "name": "function_definition"
          },
          {
            "type": "SYMBOL",
            "name": "subshell"
          }
        ]
      }
    },
    "redirected_statement": {
      "type": "PREC_DYNAMIC",
      "value": -1,
      "content": {
        "type": "PREC_RIGHT",
        "value": -1,
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "body",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_statement"
                  }
                },
                {
                  "type": "FIELD",
                  "name": "redirect",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "REPEAT1",
                        "content": {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "file_redirect"
                            },
                            {
                              "type": "SYMBOL",
                              "name": "heredoc_redirect"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "body",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "if_statement"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "while_statement"
                      }
                    ]
                  }
                },
                {
                  "type": "SYMBOL",
                  "name": "herestring_redirect"
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "redirect",
              "content": {
                "type": "REPEAT1",
                "content": {
                  "type": "SYMBOL",
                  "name": "_redirect"
                }
              }
            },
            {
              "type": "SYMBOL",
              "name": "herestring_redirect"
            }
          ]
        }
      }
    },
    "for_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "for"
            },
            {
              "type": "STRING",
              "value": "select"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "variable",
          "content": {
            "type": "SYMBOL",
            "name": "_simple_variable_name"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "in"
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "REPEAT1",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_literal"
                    }
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_terminator"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "do_group"
          }
        }
      ]
    },
    "c_style_for_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "STRING",
          "value": "(("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_for_body"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "))"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ";"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "do_group"
              },
              {
                "type": "SYMBOL",
                "name": "compound_statement"
              }
            ]
          }
        }
      ]
    },
    "_for_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "initializer",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_c_expression"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "_c_expression"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "_c_terminator"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_c_expression"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "_c_expression"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "_c_terminator"
        },
        {
          "type": "FIELD",
          "name": "update",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_c_expression"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "_c_expression"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        }
      ]
    },
    "_c_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_c_expression_not_assignment"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_c_variable_assignment"
          },
          "named": true,
          "value": "variable_assignment"
        }
      ]
    },
    "_c_expression_not_assignment": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_c_word"
        },
        {
          "type": "SYMBOL",
          "name": "simple_expansion"
        },
        {
          "type": "SYMBOL",
          "name": "expansion"
        },
        {
          "type": "SYMBOL",
          "name": "number"
        },
        {
          "type": "SYMBOL",
          "name": "string"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_c_unary_expression"
          },
          "named": true,
          "value": "unary_expression"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_c_binary_expression"
          },
          "named": true,
          "value": "binary_expression"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_c_postfix_expression"
          },
          "named": true,
          "value": "postfix_expression"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_c_parenthesized_expression"
          },
          "named": true,
          "value": "parenthesized_expression"
        },
        {
          "type": "SYMBOL",
          "name": "command_substitution"
        }
      ]
    },
    "_c_variable_assignment": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_c_word"
            },
            "named": true,
            "value": "variable_name"
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_c_expression"
          }
        }
      ]
    },
    "_c_unary_expression": {
      "type": "PREC",
      "value": 17,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "++"
                },
                {
                  "type": "STRING",
                  "value": "--"
                }
              ]
            }
          },
          {
            "type": "SYMBOL",
            "name": "_c_expression_not_assignment"
          }
        ]
      }
    },
    "_c_binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 0,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "+="
                    },
                    {
                      "type": "STRING",
                      "value": "-="
                    },
                    {
                      "type": "STRING",
                      "value": "*="
                    },
                    {
                      "type": "STRING",
                      "value": "/="
                    },
                    {
                      "type": "STRING",
                      "value": "%="
                    },
                    {
                      "type": "STRING",
                      "value": "**="
                    },
                    {
                      "type": "STRING",
                      "value": "<<="
                    },
                    {
                      "type": "STRING",
                      "value": ">>="
                    },
                    {
                      "type": "STRING",
                      "value": "&="
                    },
                    {
                      "type": "STRING",
                      "value": "^="
                    },
                    {
                      "type": "STRING",
                      "value": "|="
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "||"
                    },
                    {
                      "type": "STRING",
                      "value": "-o"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 4,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "&&"
                    },
                    {
                      "type": "STRING",
                      "value": "-a"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "|"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 6,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "^"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 7,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "=="
                    },
                    {
                      "type": "STRING",
                      "value": "!="
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "<"
                    },
                    {
                      "type": "STRING",
                      "value": ">"
                    },
                    {
                      "type": "STRING",
                      "value": "<="
                    },
                    {
                      "type": "STRING",
                      "value": ">="
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 12,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "<<"
                    },
                    {
                      "type": "STRING",
                      "value": ">>"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 13,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "+"
                    },
                    {
                      "type": "STRING",
                      "value": "-"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 14,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "*"
                    },
                    {
                      "type": "STRING",
                      "value": "/"
                    },
                    {
                      "type": "STRING",
                      "value": "%"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 15,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "**"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_c_expression_not_assignment"
                }
              }
            ]
          }
        }
      ]
    },
    "_c_postfix_expression": {
      "type": "PREC",
      "value": 18,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_c_expression_not_assignment"
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "++"
                },
                {
                  "type": "STRING",
                  "value": "--"
                }
              ]
            }
          }
        ]
      }
    },
    "_c_parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_c_expression"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_c_expression"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_c_word": {
      "type": "ALIAS",
      "content": {
        "type": "PATTERN",
        "value": "[a-zA-Z_][a-zA-Z0-9_]*"
      },
      "named": true,
      "value": "word"
    },
    "while_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "while"
            },
            {
              "type": "STRING",
              "value": "until"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "_terminated_statement"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "do_group"
          }
        }
      ]
    },
    "do_group": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "do"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_terminated_statement"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "done"
        }
      ]
    },
    "if_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "if"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "_terminated_statement"
          }
        },
        {
          "type": "STRING",
          "value": "then"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_terminated_statement"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "elif_clause"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "else_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "fi"
        }
      ]
    },
    "elif_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "elif"
        },
        {
          "type": "SYMBOL",
          "name": "_terminated_statement"
        },
        {
          "type": "STRING",
          "value": "then"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_terminated_statement"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "else_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "else"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_terminated_statement"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "case_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "case"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_literal"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_terminator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "in"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_terminator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SYMBOL",
                    "name": "case_item"
                  }
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "last_case_item"
                  },
                  "named": true,
                  "value": "case_item"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "esac"
        }
      ]
    },
    "case_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "("
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_literal"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_extglob_blob"
                      }
                    ]
                  }
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "|"
                      },
                      {
                        "type": "FIELD",
                        "name": "value",
                        "content": {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "_literal"
                            },
                            {
                              "type": "SYMBOL",
                              "name": "_extglob_blob"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_statements"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "PREC",
          "value": 1,
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "termination",
                "content": {
                  "type": "STRING",
                  "value": ";;"
                }
              },
              {
                "type": "FIELD",
                "name": "fallthrough",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ";&"
                    },
                    {
                      "type": "STRING",
                      "value": ";;&"
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    },
    "last_case_item": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_literal"
              },
              {
                "type": "SYMBOL",
                "name": "_extglob_blob"
              }
            ]
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "|"
              },
              {
                "type": "FIELD",
                "name": "value",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_literal"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_extglob_blob"
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_statements"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "PREC",
              "value": 1,
              "content": {
                "type": "STRING",
                "value": ";;"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "function_definition": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "function"
                  },
                  {
                    "type": "FIELD",
                    "name": "name",
                    "content": {
                      "type": "SYMBOL",
                      "name": "word"
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "("
                          },
                          {
                            "type": "STRING",
                            "value": ")"
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "name",
                    "content": {
                      "type": "SYMBOL",
                      "name": "word"
                    }
                  },
                  {
                    "type": "STRING",
                    "value": "("
                  },
                  {
                    "type": "STRING",
                    "value": ")"
                  }
                ]
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "compound_statement"
                },
                {
                  "type": "SYMBOL",
                  "name": "subshell"
                },
                {
                  "type": "SYMBOL",
                  "name": "test_command"
                },
                {
                  "type": "SYMBOL",
                  "name": "if_statement"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "redirect",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_redirect"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "compound_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "{"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_terminated_statement"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "TOKEN",
              "content": {
                "type": "PREC",
                "value": -1,
                "content": {
                  "type": "STRING",
                  "value": "}"
                }
              }
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "(("
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_arithmetic_expression"
                  },
                  {
                    "type": "STRING",
                    "value": ","
                  }
                ]
              }
            },
            {
              "type": "SYMBOL",
              "name": "_arithmetic_expression"
            },
            {
              "type": "STRING",
              "value": "))"
            }
          ]
        }
      ]
    },
    "subshell": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_statements"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "pipeline": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_statement_not_pipeline"
          },
          {
            "type": "REPEAT1",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "|"
                    },
                    {
                      "type": "STRING",
                      "value": "|&"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "_statement_not_pipeline"
                }
              ]
            }
          }
        ]
      }
    },
    "list": {
      "type": "PREC_LEFT",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_statement"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "&&"
              },
              {
                "type": "STRING",
                "value": "||"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_statement"
          }
        ]
      }
    },
    "negated_command": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "!"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "PREC",
              "value": 2,
              "content": {
                "type": "SYMBOL",
                "name": "command"
              }
            },
            {
              "type": "PREC",
              "value": 1,
              "content": {
                "type": "SYMBOL",
                "name": "variable_assignment"
              }
            },
            {
              "type": "SYMBOL",
              "name": "test_command"
            },
            {
              "type": "SYMBOL",
              "name": "subshell"
            }
          ]
        }
      ]
    },
    "test_command": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "["
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_expression"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "redirected_statement"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": "]"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "[["
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_test_command_binary_expression"
                      },
                      "named": true,
                      "value": "binary_expression"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": "]]"
                }
              ]
            }
          ]
        }
      ]
    },
    "_test_command_binary_expression": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "STRING",
              "value": "="
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_regex_no_space"
              },
              "named": true,
              "value": "regex"
            }
          }
        ]
      }
    },
    "declaration_command": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "declare"
              },
              {
                "type": "STRING",
                "value": "typeset"
              },
              {
                "type": "STRING",
                "value": "export"
              },
              {
                "type": "STRING",
                "value": "readonly"
              },
              {
                "type": "STRING",
                "value": "local"
              }
            ]
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_literal"
                },
                {
                  "type": "SYMBOL",
                  "name": "_simple_variable_name"
                },
                {
                  "type": "SYMBOL",
                  "name": "variable_assignment"
                }
              ]
            }
          }
        ]
      }
    },
    "unset_command": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "unset"
              },
              {
                "type": "STRING",
                "value": "unsetenv"
              }
            ]
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_literal"
                },
                {
                  "type": "SYMBOL",
                  "name": "_simple_variable_name"
                }
              ]
            }
          }
        ]
      }
    },
    "command": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "variable_assignment"
                },
                {
                  "type": "FIELD",
                  "name": "redirect",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_redirect"
                  }
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "command_name"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "REPEAT",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "FIELD",
                      "name": "argument",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_literal"
                      }
                    },
                    {
                      "type": "FIELD",
                      "name": "argument",
                      "content": {
                        "type": "ALIAS",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_bare_dollar"
                        },
                        "named": false,
                        "value": "$"
                      }
                    },
                    {
                      "type": "FIELD",
                      "name": "argument",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "=~"
                              },
                              {
                                "type": "STRING",
                                "value": "=="
                              }
                            ]
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "_literal"
                              },
                              {
                                "type": "SYMBOL",
                                "name": "regex"
                              }
                            ]
                          }
                        ]
                      }
                    },
                    {
                      "type": "FIELD",
                      "name": "redirect",
                      "content": {
                        "type": "SYMBOL",
                        "name": "herestring_redirect"
                      }
                    }
                  ]
                }
              },
              {
                "type": "SYMBOL",
                "name": "subshell"
              }
            ]
          }
        ]
      }
    },
    "command_name": {
      "type": "SYMBOL",
      "name": "_literal"
    },
    "variable_assignment": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "variable_name"
              },
              {
                "type": "SYMBOL",
                "name": "subscript"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "="
            },
            {
              "type": "STRING",
              "value": "+="
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_literal"
              },
              {
                "type": "SYMBOL",
                "name": "array"
              },
              {
                "type": "SYMBOL",
                "name": "_empty_value"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "_comment_word"
                },
                "named": true,
                "value": "word"
              }
            ]
          }
        }
      ]
    },
    "variable_assignments": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "variable_assignment"
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "variable_assignment"
          }
        }
      ]
    },
    "subscript": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "variable_name"
          }
        },
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "FIELD",
          "name": "index",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_literal"
              },
              {
                "type": "SYMBOL",
                "name": "binary_expression"
              },
              {
                "type": "SYMBOL",
                "name": "unary_expression"
              },
              {
                "type": "SYMBOL",
                "name": "compound_statement"
              },
              {
                "type": "SYMBOL",
                "name": "subshell"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_concat"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_concat"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "file_redirect": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "descriptor",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "file_descriptor"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "<"
                      },
                      {
                        "type": "STRING",
                        "value": ">"
                      },
                      {
                        "type": "STRING",
                        "value": ">>"
                      },
                      {
                        "type": "STRING",
                        "value": "&>"
                      },
                      {
                        "type": "STRING",
                        "value": "&>>"
                      },
                      {
                        "type": "STRING",
                        "value": "<&"
                      },
                      {
                        "type": "STRING",
                        "value": ">&"
                      },
                      {
                        "type": "STRING",
                        "value": ">|"
                      }
                    ]
                  },
                  {
                    "type": "FIELD",
                    "name": "destination",
                    "content": {
                      "type": "REPEAT1",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_literal"
                      }
                    }
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "<&-"
                      },
                      {
                        "type": "STRING",
                        "value": ">&-"
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "FIELD",
                        "name": "destination",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_literal"
                        }
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "heredoc_redirect": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "descriptor",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "file_descriptor"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "<<"
            },
            {
              "type": "STRING",
              "value": "<<-"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "heredoc_start"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_heredoc_pipeline"
                  },
                  "named": true,
                  "value": "pipeline"
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "FIELD",
                      "name": "redirect",
                      "content": {
                        "type": "REPEAT1",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_redirect"
                        }
                      }
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_heredoc_expression"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "_heredoc_expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "_heredoc_command"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "PATTERN",
          "value": "\\n"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_heredoc_body"
            },
            {
              "type": "SYMBOL",
              "name": "_simple_heredoc_body"
            }
          ]
        }
      ]
    },
    "_heredoc_pipeline": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "|"
            },
            {
              "type": "STRING",
              "value": "|&"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_statement"
        }
      ]
    },
    "_heredoc_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "operator",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "||"
              },
              {
                "type": "STRING",
                "value": "&&"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        }
      ]
    },
    "_heredoc_command": {
      "type": "REPEAT1",
      "content": {
        "type": "FIELD",
        "name": "argument",
        "content": {
          "type": "SYMBOL",
          "name": "_literal"
        }
      }
    },
    "_heredoc_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "heredoc_body"
        },
        {
          "type": "SYMBOL",
          "name": "heredoc_end"
        }
      ]
    },
    "heredoc_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_heredoc_body_beginning"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expansion"
              },
              {
                "type": "SYMBOL",
                "name": "simple_expansion"
              },
              {
                "type": "SYMBOL",
                "name": "command_substitution"
              },
              {
                "type": "SYMBOL",
                "name": "heredoc_content"
              }
            ]
          }
        }
      ]
    },
    "_simple_heredoc_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "simple_heredoc_body"
          },
          "named": true,
          "value": "heredoc_body"
        },
        {
          "type": "SYMBOL",
          "name": "heredoc_end"
        }
      ]
    },
    "herestring_redirect": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "descriptor",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "file_descriptor"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "<<<"
          },
          {
            "type": "SYMBOL",
            "name": "_literal"
          }
        ]
      }
    },
    "_redirect": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "file_redirect"
        },
        {
          "type": "SYMBOL",
          "name": "herestring_redirect"
        }
      ]
    },
    "_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_literal"
        },
        {
          "type": "SYMBOL",
          "name": "unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "ternary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "binary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "postfix_expression"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        }
      ]
    },
    "binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "PREC_LEFT",
              "value": 0,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "+="
                        },
                        {
                          "type": "STRING",
                          "value": "-="
                        },
                        {
                          "type": "STRING",
                          "value": "*="
                        },
                        {
                          "type": "STRING",
                          "value": "/="
                        },
                        {
                          "type": "STRING",
                          "value": "%="
                        },
                        {
                          "type": "STRING",
                          "value": "**="
                        },
                        {
                          "type": "STRING",
                          "value": "<<="
                        },
                        {
                          "type": "STRING",
                          "value": ">>="
                        },
                        {
                          "type": "STRING",
                          "value": "&="
                        },
                        {
                          "type": "STRING",
                          "value": "^="
                        },
                        {
                          "type": "STRING",
                          "value": "|="
                        }
                      ]
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 1,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "="
                        },
                        {
                          "type": "STRING",
                          "value": "=~"
                        }
                      ]
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 3,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "||"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 4,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "&&"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 5,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "|"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 6,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "^"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 7,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "&"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 8,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "=="
                        },
                        {
                          "type": "STRING",
                          "value": "!="
                        }
                      ]
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 9,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "<"
                        },
                        {
                          "type": "STRING",
                          "value": ">"
                        },
                        {
                          "type": "STRING",
                          "value": "<="
                        },
                        {
                          "type": "STRING",
                          "value": ">="
                        }
                      ]
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 10,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "SYMBOL",
                      "name": "test_operator"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 12,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "<<"
                        },
                        {
                          "type": "STRING",
                          "value": ">>"
                        }
                      ]
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 13,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "+"
                        },
                        {
                          "type": "STRING",
                          "value": "-"
                        }
                      ]
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 14,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "*"
                        },
                        {
                          "type": "STRING",
                          "value": "/"
                        },
                        {
                          "type": "STRING",
                          "value": "%"
                        }
                      ]
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_RIGHT",
              "value": 15,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "**"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "PREC",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "=~"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_regex_no_space"
                  },
                  "named": true,
                  "value": "regex"
                }
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "=="
                    },
                    {
                      "type": "STRING",
                      "value": "!="
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_extglob_blob"
                }
              }
            ]
          }
        }
      ]
    },
    "ternary_expression": {
      "type": "PREC_LEFT",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "?"
          },
          {
            "type": "FIELD",
            "name": "consequence",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "unary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC",
          "value": 17,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "TOKEN",
                      "content": {
                        "type": "PREC",
                        "value": 1,
                        "content": {
                          "type": "STRING",
                          "value": "++"
                        }
                      }
                    },
                    {
                      "type": "TOKEN",
                      "content": {
                        "type": "PREC",
                        "value": 1,
                        "content": {
                          "type": "STRING",
                          "value": "--"
                        }
                      }
                    }
                  ]
                }
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "TOKEN",
                      "content": {
                        "type": "PREC",
                        "value": 1,
                        "content": {
                          "type": "STRING",
                          "value": "-"
                        }
                      }
                    },
                    {
                      "type": "TOKEN",
                      "content": {
                        "type": "PREC",
                        "value": 1,
                        "content": {
                          "type": "STRING",
                          "value": "+"
                        }
                      }
                    },
                    {
                      "type": "TOKEN",
                      "content": {
                        "type": "PREC",
                        "value": 1,
                        "content": {
                          "type": "STRING",
                          "value": "~"
                        }
                      }
                    }
                  ]
                }
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "!"
                }
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "SYMBOL",
                  "name": "test_operator"
                }
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        }
      ]
    },
    "postfix_expression": {
      "type": "PREC",
      "value": 18,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "++"
                },
                {
                  "type": "STRING",
                  "value": "--"
                }
              ]
            }
          }
        ]
      }
    },
    "parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "concatenation"
        },
        {
          "type": "SYMBOL",
          "name": "_primary_expression"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PREC",
            "value": -2,
            "content": {
              "type": "REPEAT1",
              "content": {
                "type": "SYMBOL",
                "name": "_special_character"
              }
            }
          },
          "named": true,
          "value": "word"
        }
      ]
    },
    "_primary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "word"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "test_operator"
          },
          "named": true,
          "value": "word"
        },
        {
          "type": "SYMBOL",
          "name": "string"
        },
        {
          "type": "SYMBOL",
          "name": "raw_string"
        },
        {
          "type": "SYMBOL",
          "name": "translated_string"
        },
        {
          "type": "SYMBOL",
          "name": "ansi_c_string"
        },
        {
          "type": "SYMBOL",
          "name": "number"
        },
        {
          "type": "SYMBOL",
          "name": "expansion"
        },
        {
          "type": "SYMBOL",
          "name": "simple_expansion"
        },
        {
          "type": "SYMBOL",
          "name": "command_substitution"
        },
        {
          "type": "SYMBOL",
          "name": "process_substitution"
        },
        {
          "type": "SYMBOL",
          "name": "arithmetic_expansion"
        },
        {
          "type": "SYMBOL",
          "name": "brace_expression"
        }
      ]
    },
    "arithmetic_expansion": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "$(("
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_arithmetic_expression"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "STRING",
              "value": "))"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "$["
            },
            {
              "type": "SYMBOL",
              "name": "_arithmetic_expression"
            },
            {
              "type": "STRING",
              "value": "]"
            }
          ]
        }
      ]
    },
    "brace_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_brace_start"
          },
          "named": false,
          "value": "{"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "IMMEDIATE_TOKEN",
            "content": {
              "type": "PATTERN",
              "value": "\\d+"
            }
          },
          "named": true,
          "value": "number"
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": ".."
          }
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "IMMEDIATE_TOKEN",
            "content": {
              "type": "PATTERN",
              "value": "\\d+"
            }
          },
          "named": true,
          "value": "number"
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "}"
          }
        }
      ]
    },
    "_arithmetic_expression": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_arithmetic_literal"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_arithmetic_unary_expression"
            },
            "named": true,
            "value": "unary_expression"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_arithmetic_ternary_expression"
            },
            "named": true,
            "value": "ternary_expression"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_arithmetic_binary_expression"
            },
            "named": true,
            "value": "binary_expression"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_arithmetic_postfix_expression"
            },
            "named": true,
            "value": "postfix_expression"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_arithmetic_parenthesized_expression"
            },
            "named": true,
            "value": "parenthesized_expression"
          },
          {
            "type": "SYMBOL",
            "name": "command_substitution"
          }
        ]
      }
    },
    "_arithmetic_literal": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "number"
          },
          {
            "type": "SYMBOL",
            "name": "subscript"
          },
          {
            "type": "SYMBOL",
            "name": "simple_expansion"
          },
          {
            "type": "SYMBOL",
            "name": "expansion"
          },
          {
            "type": "SYMBOL",
            "name": "_simple_variable_name"
          },
          {
            "type": "SYMBOL",
            "name": "variable_name"
          },
          {
            "type": "SYMBOL",
            "name": "string"
          },
          {
            "type": "SYMBOL",
            "name": "raw_string"
          }
        ]
      }
    },
    "_arithmetic_binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 0,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "+="
                    },
                    {
                      "type": "STRING",
                      "value": "-="
                    },
                    {
                      "type": "STRING",
                      "value": "*="
                    },
                    {
                      "type": "STRING",
                      "value": "/="
                    },
                    {
                      "type": "STRING",
                      "value": "%="
                    },
                    {
                      "type": "STRING",
                      "value": "**="
                    },
                    {
                      "type": "STRING",
                      "value": "<<="
                    },
                    {
                      "type": "STRING",
                      "value": ">>="
                    },
                    {
                      "type": "STRING",
                      "value": "&="
                    },
                    {
                      "type": "STRING",
                      "value": "^="
                    },
                    {
                      "type": "STRING",
                      "value": "|="
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "="
                    },
                    {
                      "type": "STRING",
                      "value": "=~"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "||"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 4,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "&&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "|"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 6,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "^"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 7,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "=="
                    },
                    {
                      "type": "STRING",
                      "value": "!="
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "<"
                    },
                    {
                      "type": "STRING",
                      "value": ">"
                    },
                    {
                      "type": "STRING",
                      "value": "<="
                    },
                    {
                      "type": "STRING",
                      "value": ">="
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 12,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "<<"
                    },
                    {
                      "type": "STRING",
                      "value": ">>"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 13,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "+"
                    },
                    {
                      "type": "STRING",
                      "value": "-"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 14,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "*"
                    },
                    {
                      "type": "STRING",
                      "value": "/"
                    },
                    {
                      "type": "STRING",
                      "value": "%"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 15,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "**"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_arithmetic_expression"
                }
              }
            ]
          }
        }
      ]
    },
    "_arithmetic_ternary_expression": {
      "type": "PREC_LEFT",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_arithmetic_expression"
            }
          },
          {
            "type": "STRING",
            "value": "?"
          },
          {
            "type": "FIELD",
            "name": "consequence",
            "content": {
              "type": "SYMBOL",
              "name": "_arithmetic_expression"
            }
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "SYMBOL",
              "name": "_arithmetic_expression"
            }
          }
        ]
      }
    },
    "_arithmetic_unary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC",
          "value": 17,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "TOKEN",
                      "content": {
                        "type": "PREC",
                        "value": 1,
                        "content": {
                          "type": "STRING",
                          "value": "++"
                        }
                      }
                    },
                    {
                      "type": "TOKEN",
                      "content": {
                        "type": "PREC",
                        "value": 1,
                        "content": {
                          "type": "STRING",
                          "value": "--"
                        }
                      }
                    }
                  ]
                }
              },
              {
                "type": "SYMBOL",
                "name": "_arithmetic_expression"
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "TOKEN",
                      "content": {
                        "type": "PREC",
                        "value": 1,
                        "content": {
                          "type": "STRING",
                          "value": "-"
                        }
                      }
                    },
                    {
                      "type": "TOKEN",
                      "content": {
                        "type": "PREC",
                        "value": 1,
                        "content": {
                          "type": "STRING",
                          "value": "+"
                        }
                      }
                    },
                    {
                      "type": "TOKEN",
                      "content": {
                        "type": "PREC",
                        "value": 1,
                        "content": {
                          "type": "STRING",
                          "value": "~"
                        }
                      }
                    }
                  ]
                }
              },
              {
                "type": "SYMBOL",
                "name": "_arithmetic_expression"
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "!"
                }
              },
              {
                "type": "SYMBOL",
                "name": "_arithmetic_expression"
              }
            ]
          }
        }
      ]
    },
    "_arithmetic_postfix_expression": {
      "type": "PREC",
      "value": 18,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_arithmetic_expression"
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "++"
                },
                {
                  "type": "STRING",
                  "value": "--"
                }
              ]
            }
          }
        ]
      }
    },
    "_arithmetic_parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_arithmetic_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "concatenation": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_primary_expression"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "_special_character"
                },
                "named": true,
                "value": "word"
              }
            ]
          },
          {
            "type": "REPEAT1",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_concat"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "PATTERN",
                        "value": "`\\s*`"
                      },
                      "named": false,
                      "value": "``"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_primary_expression"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_special_character"
                      },
                      "named": true,
                      "value": "word"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_comment_word"
                      },
                      "named": true,
                      "value": "word"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_bare_dollar"
                      },
                      "named": false,
                      "value": "$"
                    }
                  ]
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_concat"
                  },
                  {
                    "type": "STRING",
                    "value": "$"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_special_character": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": -1,
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "{"
            },
            {
              "type": "STRING",
              "value": "}"
            },
            {
              "type": "STRING",
              "value": "["
            },
            {
              "type": "STRING",
              "value": "]"
            }
          ]
        }
      }
    },
    "string": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "\""
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "$"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "SYMBOL",
                        "name": "string_content"
                      }
                    ]
                  },
                  {
                    "type": "SYMBOL",
                    "name": "expansion"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "simple_expansion"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "command_substitution"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "arithmetic_expansion"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_concat"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "$"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "\""
        }
      ]
    },
    "string_content": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": -1,
        "content": {
          "type": "PATTERN",
          "value": "([^\"`$\\\\\\r\\n]|\\\\(.|\\r?\\n))+"
        }
      }
    },
    "translated_string": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "$"
        },
        {
          "type": "SYMBOL",
          "name": "string"
        }
      ]
    },
    "array": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_literal"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "raw_string": {
      "type": "PATTERN",
      "value": "'[^']*'"
    },
    "ansi_c_string": {
      "type": "PATTERN",
      "value": "\\$'([^']|\\\\')*'"
    },
    "number": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PATTERN",
          "value": "-?(0x)?[0-9]+(#[0-9A-Za-z@_]+)?"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "PATTERN",
              "value": "-?(0x)?[0-9]+#"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "expansion"
                },
                {
                  "type": "SYMBOL",
                  "name": "command_substitution"
                }
              ]
            }
          ]
        }
      ]
    },
    "simple_expansion": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "$"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_simple_variable_name"
            },
            {
              "type": "SYMBOL",
              "name": "_multiline_variable_name"
            },
            {
              "type": "SYMBOL",
              "name": "_special_variable_name"
            },
            {
              "type": "SYMBOL",
              "name": "variable_name"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": "!"
              },
              "named": true,
              "value": "special_variable_name"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": "#"
              },
              "named": true,
              "value": "special_variable_name"
            }
          ]
        }
      ]
    },
    "string_expansion": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "$"
        },
        {
          "type": "SYMBOL",
          "name": "string"
        }
      ]
    },
    "expansion": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "${"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expansion_body"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_expansion_body": {
      "type": "CHOICE",
      "members": [
        {
          "type": "REPEAT1",
          "content": {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_external_expansion_sym_hash"
                  },
                  "named": false,
                  "value": "#"
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_external_expansion_sym_bang"
                  },
                  "named": false,
                  "value": "!"
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_external_expansion_sym_equal"
                  },
                  "named": false,
                  "value": "="
                }
              ]
            }
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "FIELD",
                  "name": "operator",
                  "content": {
                    "type": "IMMEDIATE_TOKEN",
                    "content": {
                      "type": "STRING",
                      "value": "!"
                    }
                  }
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "variable_name"
                },
                {
                  "type": "SYMBOL",
                  "name": "_simple_variable_name"
                },
                {
                  "type": "SYMBOL",
                  "name": "_special_variable_name"
                },
                {
                  "type": "SYMBOL",
                  "name": "subscript"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expansion_expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expansion_regex"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expansion_regex_replacement"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expansion_regex_removal"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expansion_max_length"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expansion_operator"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "!"
                }
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_simple_variable_name"
                },
                {
                  "type": "SYMBOL",
                  "name": "variable_name"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "FIELD",
                  "name": "operator",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "IMMEDIATE_TOKEN",
                        "content": {
                          "type": "STRING",
                          "value": "@"
                        }
                      },
                      {
                        "type": "IMMEDIATE_TOKEN",
                        "content": {
                          "type": "STRING",
                          "value": "*"
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "FIELD",
                  "name": "operator",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "IMMEDIATE_TOKEN",
                        "content": {
                          "type": "STRING",
                          "value": "#"
                        }
                      },
                      {
                        "type": "IMMEDIATE_TOKEN",
                        "content": {
                          "type": "STRING",
                          "value": "!"
                        }
                      },
                      {
                        "type": "IMMEDIATE_TOKEN",
                        "content": {
                          "type": "STRING",
                          "value": "="
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "subscript"
                },
                {
                  "type": "SYMBOL",
                  "name": "_simple_variable_name"
                },
                {
                  "type": "SYMBOL",
                  "name": "_special_variable_name"
                },
                {
                  "type": "SYMBOL",
                  "name": "command_substitution"
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_external_expansion_sym_hash"
                      },
                      "named": false,
                      "value": "#"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_external_expansion_sym_bang"
                      },
                      "named": false,
                      "value": "!"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_external_expansion_sym_equal"
                      },
                      "named": false,
                      "value": "="
                    }
                  ]
                }
              }
            }
          ]
        }
      ]
    },
    "_expansion_expression": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "IMMEDIATE_TOKEN",
                  "content": {
                    "type": "STRING",
                    "value": "="
                  }
                },
                {
                  "type": "IMMEDIATE_TOKEN",
                  "content": {
                    "type": "STRING",
                    "value": ":="
                  }
                },
                {
                  "type": "IMMEDIATE_TOKEN",
                  "content": {
                    "type": "STRING",
                    "value": "-"
                  }
                },
                {
                  "type": "IMMEDIATE_TOKEN",
                  "content": {
                    "type": "STRING",
                    "value": ":-"
                  }
                },
                {
                  "type": "IMMEDIATE_TOKEN",
                  "content": {
                    "type": "STRING",
                    "value": "+"
                  }
                },
                {
                  "type": "IMMEDIATE_TOKEN",
                  "content": {
                    "type": "STRING",
                    "value": ":+"
                  }
                },
                {
                  "type": "IMMEDIATE_TOKEN",
                  "content": {
                    "type": "STRING",
                    "value": "?"
                  }
                },
                {
                  "type": "IMMEDIATE_TOKEN",
                  "content": {
                    "type": "STRING",
                    "value": ":?"
                  }
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "ALIAS",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_concatenation_in_expansion"
                        },
                        "named": true,
                        "value": "concatenation"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "command_substitution"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "word"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "expansion"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "simple_expansion"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "array"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "string"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "raw_string"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "ansi_c_string"
                      },
                      {
                        "type": "ALIAS",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_expansion_word"
                        },
                        "named": true,
                        "value": "word"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_expansion_regex": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "operator",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "#"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "_immediate_double_hash"
                },
                "named": false,
                "value": "##"
              },
              {
                "type": "STRING",
                "value": "%"
              },
              {
                "type": "STRING",
                "value": "%%"
              }
            ]
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "regex"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "STRING",
                  "value": ")"
                },
                "named": true,
                "value": "regex"
              },
              {
                "type": "SYMBOL",
                "name": "string"
              },
              {
                "type": "SYMBOL",
                "name": "raw_string"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "\\s+"
                },
                "named": true,
                "value": "regex"
              }
            ]
          }
        }
      ]
    },
    "_expansion_regex_replacement": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "operator",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "/"
              },
              {
                "type": "STRING",
                "value": "//"
              },
              {
                "type": "STRING",
                "value": "/#"
              },
              {
                "type": "STRING",
                "value": "/%"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_regex_no_slash"
                  },
                  "named": true,
                  "value": "regex"
                },
                {
                  "type": "SYMBOL",
                  "name": "string"
                },
                {
                  "type": "SYMBOL",
                  "name": "command_substitution"
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "string"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_regex_no_slash"
                      },
                      "named": true,
                      "value": "regex"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "operator",
                  "content": {
                    "type": "STRING",
                    "value": "/"
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "_primary_expression"
                            },
                            {
                              "type": "ALIAS",
                              "content": {
                                "type": "PREC",
                                "value": -2,
                                "content": {
                                  "type": "REPEAT1",
                                  "content": {
                                    "type": "SYMBOL",
                                    "name": "_special_character"
                                  }
                                }
                              },
                              "named": true,
                              "value": "word"
                            },
                            {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "SYMBOL",
                                  "name": "command_substitution"
                                },
                                {
                                  "type": "ALIAS",
                                  "content": {
                                    "type": "SYMBOL",
                                    "name": "_expansion_word"
                                  },
                                  "named": true,
                                  "value": "word"
                                }
                              ]
                            },
                            {
                              "type": "ALIAS",
                              "content": {
                                "type": "SYMBOL",
                                "name": "_expansion_word"
                              },
                              "named": true,
                              "value": "word"
                            },
                            {
                              "type": "ALIAS",
                              "content": {
                                "type": "SYMBOL",
                                "name": "_concatenation_in_expansion"
                              },
                              "named": true,
                              "value": "concatenation"
                            },
                            {
                              "type": "SYMBOL",
                              "name": "array"
                            }
                          ]
                        },
                        {
                          "type": "FIELD",
                          "name": "operator",
                          "content": {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "/"
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_expansion_regex_removal": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "operator",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "STRING",
                "value": ",,"
              },
              {
                "type": "STRING",
                "value": "^"
              },
              {
                "type": "STRING",
                "value": "^^"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "regex"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_expansion_max_length": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "operator",
          "content": {
            "type": "STRING",
            "value": ":"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_simple_variable_name"
                },
                {
                  "type": "SYMBOL",
                  "name": "number"
                },
                {
                  "type": "SYMBOL",
                  "name": "arithmetic_expansion"
                },
                {
                  "type": "SYMBOL",
                  "name": "expansion"
                },
                {
                  "type": "SYMBOL",
                  "name": "parenthesized_expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "command_substitution"
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expansion_max_length_binary_expression"
                  },
                  "named": true,
                  "value": "binary_expression"
                },
                {
                  "type": "PATTERN",
                  "value": "\\n"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "operator",
                  "content": {
                    "type": "STRING",
                    "value": ":"
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "simple_expansion"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_simple_variable_name"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "number"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "arithmetic_expansion"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "expansion"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "parenthesized_expression"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "command_substitution"
                        },
                        {
                          "type": "ALIAS",
                          "content": {
                            "type": "SYMBOL",
                            "name": "_expansion_max_length_binary_expression"
                          },
                          "named": true,
                          "value": "binary_expression"
                        },
                        {
                          "type": "PATTERN",
                          "value": "\\n"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_expansion_max_length_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_simple_variable_name"
        },
        {
          "type": "SYMBOL",
          "name": "number"
        },
        {
          "type": "SYMBOL",
          "name": "expansion"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_expansion_max_length_binary_expression"
          },
          "named": true,
          "value": "binary_expression"
        }
      ]
    },
    "_expansion_max_length_binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 13,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expansion_max_length_expression"
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "+"
                    },
                    {
                      "type": "STRING",
                      "value": "-"
                    }
                  ]
                }
              },
              {
                "type": "SYMBOL",
                "name": "_expansion_max_length_expression"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 14,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expansion_max_length_expression"
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "*"
                    },
                    {
                      "type": "STRING",
                      "value": "/"
                    },
                    {
                      "type": "STRING",
                      "value": "%"
                    }
                  ]
                }
              },
              {
                "type": "SYMBOL",
                "name": "_expansion_max_length_expression"
              }
            ]
          }
        }
      ]
    },
    "_expansion_operator": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "operator",
          "content": {
            "type": "IMMEDIATE_TOKEN",
            "content": {
              "type": "STRING",
              "value": "@"
            }
          }
        },
        {
          "type": "FIELD",
          "name": "operator",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "U"
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "u"
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "L"
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "Q"
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "E"
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "P"
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "A"
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "K"
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "a"
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "k"
                }
              }
            ]
          }
        }
      ]
    },
    "_concatenation_in_expansion": {
      "type": "PREC",
      "value": -2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "word"
              },
              {
                "type": "SYMBOL",
                "name": "variable_name"
              },
              {
                "type": "SYMBOL",
                "name": "simple_expansion"
              },
              {
                "type": "SYMBOL",
                "name": "expansion"
              },
              {
                "type": "SYMBOL",
                "name": "string"
              },
              {
                "type": "SYMBOL",
                "name": "raw_string"
              },
              {
                "type": "SYMBOL",
                "name": "ansi_c_string"
              },
              {
                "type": "SYMBOL",
                "name": "command_substitution"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expansion_word"
                },
                "named": true,
                "value": "word"
              },
              {
                "type": "SYMBOL",
                "name": "array"
              },
              {
                "type": "SYMBOL",
                "name": "process_substitution"
              }
            ]
          },
          {
            "type": "REPEAT1",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_concat"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "PATTERN",
                        "value": "`\\s*`"
                      },
                      "named": false,
                      "value": "``"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "word"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "variable_name"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "simple_expansion"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "expansion"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "string"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "raw_string"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "ansi_c_string"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "command_substitution"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_expansion_word"
                      },
                      "named": true,
                      "value": "word"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "array"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "process_substitution"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    },
    "command_substitution": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "$("
            },
            {
              "type": "SYMBOL",
              "name": "_statements"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "$("
            },
            {
              "type": "FIELD",
              "name": "redirect",
              "content": {
                "type": "SYMBOL",
                "name": "file_redirect"
              }
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "PREC",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "`"
              },
              {
                "type": "SYMBOL",
                "name": "_statements"
              },
              {
                "type": "STRING",
                "value": "`"
              }
            ]
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "$`"
            },
            {
              "type": "SYMBOL",
              "name": "_statements"
            },
            {
              "type": "STRING",
              "value": "`"
            }
          ]
        }
      ]
    },
    "process_substitution": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "<("
            },
            {
              "type": "STRING",
              "value": ">("
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_statements"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_extglob_blob": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "extglob_pattern"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "extglob_pattern"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "string"
                },
                {
                  "type": "SYMBOL",
                  "name": "expansion"
                },
                {
                  "type": "SYMBOL",
                  "name": "command_substitution"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "extglob_pattern"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "comment": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": -10,
        "content": {
          "type": "PATTERN",
          "value": "#.*"
        }
      }
    },
    "_comment_word": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": -8,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[^'\"<>{}\\[\\]()`$|&;\\\\\\s]"
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "\\"
                    },
                    {
                      "type": "PATTERN",
                      "value": "[^\\s]"
                    }
                  ]
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[^'\"<>{}\\[\\]()`$|&;\\\\\\s]"
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "\\"
                      },
                      {
                        "type": "PATTERN",
                        "value": "[^\\s]"
                      }
                    ]
                  },
                  {
                    "type": "STRING",
                    "value": "\\ "
                  }
                ]
              }
            }
          ]
        }
      }
    },
    "_simple_variable_name": {
      "type": "ALIAS",
      "content": {
        "type": "PATTERN",
        "value": "\\w+"
      },
      "named": true,
      "value": "variable_name"
    },
    "_multiline_variable_name": {
      "type": "ALIAS",
      "content": {
        "type": "TOKEN",
        "content": {
          "type": "PREC",
          "value": -1,
          "content": {
            "type": "PATTERN",
            "value": "(\\w|\\\\\\r?\\n)+"
          }
        }
      },
      "named": true,
      "value": "variable_name"
    },
    "_special_variable_name": {
      "type": "ALIAS",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "*"
          },
          {
            "type": "STRING",
            "value": "@"
          },
          {
            "type": "STRING",
            "value": "?"
          },
          {
            "type": "STRING",
            "value": "!"
          },
          {
            "type": "STRING",
            "value": "#"
          },
          {
            "type": "STRING",
            "value": "-"
          },
          {
            "type": "STRING",
            "value": "$"
          },
          {
            "type": "STRING",
            "value": "_"
          }
        ]
      },
      "named": true,
      "value": "special_variable_name"
    },
    "word": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[^#'\"<>{}\\[\\]()`$|&;\\\\\\s]"
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "\\"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[^\\s]"
                  }
                ]
              }
            ]
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[^'\"<>{}\\[\\]()`$|&;\\\\\\s]"
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "\\"
                    },
                    {
                      "type": "PATTERN",
                      "value": "[^\\s]"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": "\\ "
                }
              ]
            }
          }
        ]
      }
    },
    "_c_terminator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": ";"
        },
        {
          "type": "PATTERN",
          "value": "\\n"
        },
        {
          "type": "STRING",
          "value": "&"
        }
      ]
    },
    "_terminator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": ";"
        },
        {
          "type": "STRING",
          "value": ";;"
        },
        {
          "type": "PATTERN",
          "value": "\\n"
        },
        {
          "type": "STRING",
          "value": "&"
        }
      ]
    }
  },
  "extras": [
    {
      "type": "SYMBOL",
      "name": "comment"
    },
    {
      "type": "PATTERN",
      "value": "\\s"
    },
    {
      "type": "PATTERN",
      "value": "\\\\\\r?\\n"
    },
    {
      "type": "PATTERN",
      "value": "\\\\( |\\t|\\v|\\f)"
    }
  ],
  "conflicts": [
    [
      "_expression",
      "command_name"
    ],
    [
      "command",
      "variable_assignments"
    ],
    [
      "redirected_statement",
      "command"
    ],
    [
      "redirected_statement",
      "command_substitution"
    ],
    [
      "function_definition",
      "command_name"
    ],
    [
      "pipeline"
    ]
  ],
  "precedences": [],
  "externals": [
    {
      "type": "SYMBOL",
      "name": "heredoc_start"
    },
    {
      "type": "SYMBOL",
      "name": "simple_heredoc_body"
    },
    {
      "type": "SYMBOL",
      "name": "_heredoc_body_beginning"
    },
    {
      "type": "SYMBOL",
      "name": "heredoc_content"
    },
    {
      "type": "SYMBOL",
      "name": "heredoc_end"
    },
    {
      "type": "SYMBOL",
      "name": "file_descriptor"
    },
    {
      "type": "SYMBOL",
      "name": "_empty_value"
    },
    {
      "type": "SYMBOL",
      "name": "_concat"
    },
    {
      "type": "SYMBOL",
      "name": "variable_name"
    },
    {
      "type": "SYMBOL",
      "name": "test_operator"
    },
    {
      "type": "SYMBOL",
      "name": "regex"
    },
    {
      "type": "SYMBOL",
      "name": "_regex_no_slash"
    },
    {
      "type": "SYMBOL",
      "name": "_regex_no_space"
    },
    {
      "type": "SYMBOL",
      "name": "_expansion_word"
    },
    {
      "type": "SYMBOL",
      "name": "extglob_pattern"
    },
    {
      "type": "SYMBOL",
      "name": "_bare_dollar"
    },
    {
      "type": "SYMBOL",
      "name": "_brace_start"
    },
    {
      "type": "SYMBOL",
      "name": "_immediate_double_hash"
    },
    {
      "type": "SYMBOL",
      "name": "_external_expansion_sym_hash"
    },
    {
      "type": "SYMBOL",
      "name": "_external_expansion_sym_bang"
    },
    {
      "type": "SYMBOL",
      "name": "_external_expansion_sym_equal"
    },
    {
      "type": "STRING",
      "value": "}"
    },
    {
      "type": "STRING",
      "value": "]"
    },
    {
      "type": "STRING",
      "value": "<<"
    },
    {
      "type": "STRING",
      "value": "<<-"
    },
    {
      "type": "PATTERN",
      "value": "\\n"
    },
    {
      "type": "STRING",
      "value": "("
    },
    {
      "type": "STRING",
      "value": "esac"
    },
    {
      "type": "SYMBOL",
      "name": "__error_recovery"
    }
  ],
  "inline": [
    "_statement",
    "_terminator",
    "_literal",
    "_terminated_statement",
    "_primary_expression",
    "_simple_variable_name",
    "_multiline_variable_name",
    "_special_variable_name",
    "_c_word",
    "_statement_not_subshell",
    "_redirect"
  ],
  "supertypes": [
    "_statement",
    "_expression",
    "_primary_expression"
  ],
  "reserved": {}
}