{
  "name": "powershell",
  "rules": {
    "program": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "param_block"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "statement_list"
        }
      ]
    },
    "comment": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "PATTERN",
            "value": "#[^\\n]*"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "<#"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[^#`]+"
                    },
                    {
                      "type": "PATTERN",
                      "value": "#+[^>#]"
                    },
                    {
                      "type": "PATTERN",
                      "value": "`.{1}|`\\n"
                    }
                  ]
                }
              },
              {
                "type": "PATTERN",
                "value": "#+>"
              }
            ]
          }
        ]
      }
    },
    "_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "integer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "real_literal"
        }
      ]
    },
    "integer_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "decimal_integer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "hexadecimal_integer_literal"
        }
      ]
    },
    "decimal_integer_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "PATTERN",
            "value": "[0-9]+"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "l"
                  },
                  {
                    "type": "STRING",
                    "value": "d"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "kb"
                  },
                  {
                    "type": "STRING",
                    "value": "mb"
                  },
                  {
                    "type": "STRING",
                    "value": "gb"
                  },
                  {
                    "type": "STRING",
                    "value": "tb"
                  },
                  {
                    "type": "STRING",
                    "value": "pb"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "hexadecimal_integer_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "0x"
          },
          {
            "type": "PATTERN",
            "value": "[0-9a-fA-F]+"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "l"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "kb"
                  },
                  {
                    "type": "STRING",
                    "value": "mb"
                  },
                  {
                    "type": "STRING",
                    "value": "gb"
                  },
                  {
                    "type": "STRING",
                    "value": "tb"
                  },
                  {
                    "type": "STRING",
                    "value": "pb"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "real_literal": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "[0-9]+\\.[0-9]+"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "TOKEN",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "e"
                        },
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": "+"
                                },
                                {
                                  "type": "STRING",
                                  "value": "-"
                                }
                              ]
                            },
                            {
                              "type": "BLANK"
                            }
                          ]
                        },
                        {
                          "type": "PATTERN",
                          "value": "[0-9]+"
                        }
                      ]
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "kb"
                      },
                      {
                        "type": "STRING",
                        "value": "mb"
                      },
                      {
                        "type": "STRING",
                        "value": "gb"
                      },
                      {
                        "type": "STRING",
                        "value": "tb"
                      },
                      {
                        "type": "STRING",
                        "value": "pb"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "\\.[0-9]+"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "TOKEN",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "e"
                        },
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": "+"
                                },
                                {
                                  "type": "STRING",
                                  "value": "-"
                                }
                              ]
                            },
                            {
                              "type": "BLANK"
                            }
                          ]
                        },
                        {
                          "type": "PATTERN",
                          "value": "[0-9]+"
                        }
                      ]
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "kb"
                      },
                      {
                        "type": "STRING",
                        "value": "mb"
                      },
                      {
                        "type": "STRING",
                        "value": "gb"
                      },
                      {
                        "type": "STRING",
                        "value": "tb"
                      },
                      {
                        "type": "STRING",
                        "value": "pb"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "[0-9]+"
              },
              {
                "type": "TOKEN",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "e"
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "STRING",
                              "value": "+"
                            },
                            {
                              "type": "STRING",
                              "value": "-"
                            }
                          ]
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    },
                    {
                      "type": "PATTERN",
                      "value": "[0-9]+"
                    }
                  ]
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "kb"
                      },
                      {
                        "type": "STRING",
                        "value": "mb"
                      },
                      {
                        "type": "STRING",
                        "value": "gb"
                      },
                      {
                        "type": "STRING",
                        "value": "tb"
                      },
                      {
                        "type": "STRING",
                        "value": "pb"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "string_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "expandable_string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "verbatim_string_characters"
        },
        {
          "type": "SYMBOL",
          "name": "expandable_here_string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "verbatim_here_string_characters"
        }
      ]
    },
    "expandable_string_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "PATTERN",
          "value": "\\\"(\\s*\\#*)*"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "PATTERN",
                  "value": "[^\\$\\\"`]+"
                }
              },
              {
                "type": "SYMBOL",
                "name": "variable"
              },
              {
                "type": "SYMBOL",
                "name": "sub_expression"
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "PATTERN",
                  "value": "\\$(`.{1}|`\\n|[\\s\\\\])"
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "PATTERN",
                  "value": "`.{1}|`\\n"
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "\"\""
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "$"
                }
              }
            ]
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "IMMEDIATE_TOKEN",
            "content": {
              "type": "STRING",
              "value": "$"
            }
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "(\\s*\\#*)*\\\""
          }
        }
      ]
    },
    "expandable_here_string_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "PATTERN",
          "value": "@\\\" *\\n"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "PATTERN",
                  "value": "[^\\$\\n`]+"
                }
              },
              {
                "type": "SYMBOL",
                "name": "variable"
              },
              {
                "type": "SYMBOL",
                "name": "sub_expression"
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "PATTERN",
                  "value": "\\n+[^\\\"\\n]"
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "PATTERN",
                  "value": "\\n+\\\"[^@]"
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "$"
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "PATTERN",
                  "value": "`.{1}|`\\n"
                }
              }
            ]
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "\\n+\\\"@"
          }
        }
      ]
    },
    "verbatim_string_characters": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "'"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[^']+"
                },
                {
                  "type": "STRING",
                  "value": "''"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "'"
          }
        ]
      }
    },
    "verbatim_here_string_characters": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "PATTERN",
            "value": "@\\'\\s*\\n"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[^\\n]"
                },
                {
                  "type": "PATTERN",
                  "value": "\\n+[^\\'\\n]"
                },
                {
                  "type": "PATTERN",
                  "value": "\\n\\'[^@]"
                }
              ]
            }
          },
          {
            "type": "PATTERN",
            "value": "\\n+\\'@"
          }
        ]
      }
    },
    "simple_name": {
      "type": "PATTERN",
      "value": "[a-zA-Z_][a-zA-Z0-9_]*"
    },
    "type_identifier": {
      "type": "PATTERN",
      "value": "[a-zA-Z0-9_]+"
    },
    "type_name": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "type_identifier"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_name"
            },
            {
              "type": "STRING",
              "value": "."
            },
            {
              "type": "SYMBOL",
              "name": "type_identifier"
            }
          ]
        }
      ]
    },
    "array_type_name": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "type_name"
        },
        {
          "type": "STRING",
          "value": "["
        }
      ]
    },
    "generic_type_name": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "type_name"
        },
        {
          "type": "STRING",
          "value": "["
        }
      ]
    },
    "assignement_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "STRING",
          "value": "!="
        },
        {
          "type": "STRING",
          "value": "+="
        },
        {
          "type": "STRING",
          "value": "*="
        },
        {
          "type": "STRING",
          "value": "/="
        },
        {
          "type": "STRING",
          "value": "%="
        }
      ]
    },
    "file_redirection_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": ">"
        },
        {
          "type": "STRING",
          "value": ">>"
        },
        {
          "type": "STRING",
          "value": "2>"
        },
        {
          "type": "STRING",
          "value": "2>>"
        },
        {
          "type": "STRING",
          "value": "3>"
        },
        {
          "type": "STRING",
          "value": "3>>"
        },
        {
          "type": "STRING",
          "value": "4>"
        },
        {
          "type": "STRING",
          "value": "4>>"
        },
        {
          "type": "STRING",
          "value": "5>"
        },
        {
          "type": "STRING",
          "value": "5>>"
        },
        {
          "type": "STRING",
          "value": "6>"
        },
        {
          "type": "STRING",
          "value": "6>>"
        },
        {
          "type": "STRING",
          "value": "*>"
        },
        {
          "type": "STRING",
          "value": "*>>"
        },
        {
          "type": "STRING",
          "value": "<"
        }
      ]
    },
    "merging_redirection_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "*>&1"
        },
        {
          "type": "STRING",
          "value": "2>&1"
        },
        {
          "type": "STRING",
          "value": "3>&1"
        },
        {
          "type": "STRING",
          "value": "4>&1"
        },
        {
          "type": "STRING",
          "value": "5>&1"
        },
        {
          "type": "STRING",
          "value": "6>&1"
        },
        {
          "type": "STRING",
          "value": "*>&2"
        },
        {
          "type": "STRING",
          "value": "1>&2"
        },
        {
          "type": "STRING",
          "value": "3>&2"
        },
        {
          "type": "STRING",
          "value": "4>&2"
        },
        {
          "type": "STRING",
          "value": "5>&2"
        },
        {
          "type": "STRING",
          "value": "6>&2"
        }
      ]
    },
    "comparison_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "-as"
        },
        {
          "type": "STRING",
          "value": "-ccontains"
        },
        {
          "type": "STRING",
          "value": "-ceq"
        },
        {
          "type": "STRING",
          "value": "-cge"
        },
        {
          "type": "STRING",
          "value": "-cgt"
        },
        {
          "type": "STRING",
          "value": "-cle"
        },
        {
          "type": "STRING",
          "value": "-clike"
        },
        {
          "type": "STRING",
          "value": "-clt"
        },
        {
          "type": "STRING",
          "value": "-cmatch"
        },
        {
          "type": "STRING",
          "value": "-cne"
        },
        {
          "type": "STRING",
          "value": "-cnotcontains"
        },
        {
          "type": "STRING",
          "value": "-cnotlike"
        },
        {
          "type": "STRING",
          "value": "-cnotmatch"
        },
        {
          "type": "STRING",
          "value": "-contains"
        },
        {
          "type": "STRING",
          "value": "-creplace"
        },
        {
          "type": "STRING",
          "value": "-csplit"
        },
        {
          "type": "STRING",
          "value": "-eq"
        },
        {
          "type": "STRING",
          "value": "-ge"
        },
        {
          "type": "STRING",
          "value": "-gt"
        },
        {
          "type": "STRING",
          "value": "-icontains"
        },
        {
          "type": "STRING",
          "value": "-ieq"
        },
        {
          "type": "STRING",
          "value": "-ige"
        },
        {
          "type": "STRING",
          "value": "-igt"
        },
        {
          "type": "STRING",
          "value": "-ile"
        },
        {
          "type": "STRING",
          "value": "-ilike"
        },
        {
          "type": "STRING",
          "value": "-ilt"
        },
        {
          "type": "STRING",
          "value": "-imatch"
        },
        {
          "type": "STRING",
          "value": "-in"
        },
        {
          "type": "STRING",
          "value": "-ine"
        },
        {
          "type": "STRING",
          "value": "-inotcontains"
        },
        {
          "type": "STRING",
          "value": "-inotlike"
        },
        {
          "type": "STRING",
          "value": "-inotmatch"
        },
        {
          "type": "STRING",
          "value": "-ireplace"
        },
        {
          "type": "STRING",
          "value": "-is"
        },
        {
          "type": "STRING",
          "value": "-isnot"
        },
        {
          "type": "STRING",
          "value": "-isplit"
        },
        {
          "type": "STRING",
          "value": "-join"
        },
        {
          "type": "STRING",
          "value": "-le"
        },
        {
          "type": "STRING",
          "value": "-like"
        },
        {
          "type": "STRING",
          "value": "-lt"
        },
        {
          "type": "STRING",
          "value": "-match"
        },
        {
          "type": "STRING",
          "value": "-ne"
        },
        {
          "type": "STRING",
          "value": "-notcontains"
        },
        {
          "type": "STRING",
          "value": "-notin"
        },
        {
          "type": "STRING",
          "value": "-notlike"
        },
        {
          "type": "STRING",
          "value": "-notmatch"
        },
        {
          "type": "STRING",
          "value": "-replace"
        },
        {
          "type": "STRING",
          "value": "-shl"
        },
        {
          "type": "STRING",
          "value": "-shr"
        },
        {
          "type": "STRING",
          "value": "-split"
        }
      ]
    },
    "format_operator": {
      "type": "STRING",
      "value": "-f"
    },
    "variable": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "$$"
        },
        {
          "type": "STRING",
          "value": "$^"
        },
        {
          "type": "STRING",
          "value": "$?"
        },
        {
          "type": "STRING",
          "value": "$_"
        },
        {
          "type": "TOKEN",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "$"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "global:"
                          },
                          {
                            "type": "STRING",
                            "value": "local:"
                          },
                          {
                            "type": "STRING",
                            "value": "private:"
                          },
                          {
                            "type": "STRING",
                            "value": "script:"
                          },
                          {
                            "type": "STRING",
                            "value": "using:"
                          },
                          {
                            "type": "STRING",
                            "value": "workflow:"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[a-zA-Z0-9_]+"
                          }
                        ]
                      },
                      {
                        "type": "STRING",
                        "value": ":"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[a-zA-Z0-9_]+|\\?"
              }
            ]
          }
        },
        {
          "type": "TOKEN",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "@"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "global:"
                          },
                          {
                            "type": "STRING",
                            "value": "local:"
                          },
                          {
                            "type": "STRING",
                            "value": "private:"
                          },
                          {
                            "type": "STRING",
                            "value": "script:"
                          },
                          {
                            "type": "STRING",
                            "value": "using:"
                          },
                          {
                            "type": "STRING",
                            "value": "workflow:"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[a-zA-Z0-9_]+"
                          }
                        ]
                      },
                      {
                        "type": "STRING",
                        "value": ":"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "PATTERN",
                "value": "[a-zA-Z0-9_]+|\\?"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "braced_variable"
        }
      ]
    },
    "braced_variable": {
      "type": "PATTERN",
      "value": "\\${[^}]+}"
    },
    "generic_token": {
      "type": "TOKEN",
      "content": {
        "type": "PATTERN",
        "value": "[^\\(\\)\\$\\\"\\'\\-\\{\\}@\\|\\[`][^\\s\\(\\)\\}\\|;]*"
      }
    },
    "_command_token": {
      "type": "TOKEN",
      "content": {
        "type": "PATTERN",
        "value": "[^\\(\\)\\{\\}\\s;]+"
      }
    },
    "command_parameter": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "PATTERN",
            "value": "-+[a-zA-Z_?\\-`]+"
          },
          {
            "type": "STRING",
            "value": "--"
          }
        ]
      }
    },
    "_verbatim_command_argument_chars": {
      "type": "REPEAT1",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "PATTERN",
            "value": "\"[^\"]*\""
          },
          {
            "type": "PATTERN",
            "value": "&[^&]*"
          },
          {
            "type": "PATTERN",
            "value": "[^\\|\\n]+"
          }
        ]
      }
    },
    "script_block": {
      "type": "CHOICE",
      "members": [
        {
          "type": "FIELD",
          "name": "script_block_body",
          "content": {
            "type": "SYMBOL",
            "name": "script_block_body"
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "param_block"
                },
                {
                  "type": "SYMBOL",
                  "name": "_statement_terminator"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "STRING",
                    "value": ";"
                  }
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "script_block_body",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "script_block_body"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "param_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attribute_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "param"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "parameter_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "parameter_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "script_parameter"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "script_parameter"
              }
            ]
          }
        }
      ]
    },
    "script_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attribute_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "variable"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "script_parameter_default"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "script_parameter_default": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "script_block_body": {
      "type": "CHOICE",
      "members": [
        {
          "type": "FIELD",
          "name": "named_block_list",
          "content": {
            "type": "SYMBOL",
            "name": "named_block_list"
          }
        },
        {
          "type": "FIELD",
          "name": "statement_list",
          "content": {
            "type": "SYMBOL",
            "name": "statement_list"
          }
        }
      ]
    },
    "named_block_list": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "named_block"
      }
    },
    "named_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "block_name"
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        }
      ]
    },
    "block_name": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "dynamicparam"
        },
        {
          "type": "STRING",
          "value": "begin"
        },
        {
          "type": "STRING",
          "value": "process"
        },
        {
          "type": "STRING",
          "value": "end"
        }
      ]
    },
    "statement_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "FIELD",
          "name": "statement_list",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "statement_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "statement_list": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "_statement"
      }
    },
    "_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "if_statement"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "label"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "_labeled_statement"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "function_statement"
          },
          {
            "type": "SYMBOL",
            "name": "class_statement"
          },
          {
            "type": "SYMBOL",
            "name": "enum_statement"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "flow_control_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_statement_terminator"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "trap_statement"
          },
          {
            "type": "SYMBOL",
            "name": "try_statement"
          },
          {
            "type": "SYMBOL",
            "name": "data_statement"
          },
          {
            "type": "SYMBOL",
            "name": "inlinescript_statement"
          },
          {
            "type": "SYMBOL",
            "name": "parallel_statement"
          },
          {
            "type": "SYMBOL",
            "name": "sequence_statement"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "pipeline"
              },
              {
                "type": "SYMBOL",
                "name": "_statement_terminator"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "empty_statement"
          }
        ]
      }
    },
    "empty_statement": {
      "type": "PREC",
      "value": 3,
      "content": {
        "type": "STRING",
        "value": ";"
      }
    },
    "if_statement": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "if"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "pipeline"
            }
          },
          {
            "type": "STRING",
            "value": ")"
          },
          {
            "type": "SYMBOL",
            "name": "statement_block"
          },
          {
            "type": "FIELD",
            "name": "elseif_clauses",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "elseif_clauses"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "else_clause",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "else_clause"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "elseif_clauses": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "SYMBOL",
          "name": "elseif_clause"
        }
      }
    },
    "elseif_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "elseif"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "pipeline"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        }
      ]
    },
    "else_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "else"
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        }
      ]
    },
    "_labeled_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "switch_statement"
        },
        {
          "type": "SYMBOL",
          "name": "foreach_statement"
        },
        {
          "type": "SYMBOL",
          "name": "for_statement"
        },
        {
          "type": "SYMBOL",
          "name": "while_statement"
        },
        {
          "type": "SYMBOL",
          "name": "do_statement"
        }
      ]
    },
    "switch_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "switch"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "switch_parameters"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "switch_condition"
        },
        {
          "type": "SYMBOL",
          "name": "switch_body"
        }
      ]
    },
    "switch_parameters": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "switch_parameter"
      }
    },
    "switch_parameter": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "-regex"
        },
        {
          "type": "STRING",
          "value": "-wildcard"
        },
        {
          "type": "STRING",
          "value": "-exact"
        },
        {
          "type": "STRING",
          "value": "-casesensitive"
        },
        {
          "type": "STRING",
          "value": "-parallel"
        }
      ]
    },
    "switch_condition": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "pipeline"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "-file"
            },
            {
              "type": "SYMBOL",
              "name": "switch_filename"
            }
          ]
        }
      ]
    },
    "switch_filename": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_command_token"
        },
        {
          "type": "SYMBOL",
          "name": "_primary_expression"
        }
      ]
    },
    "switch_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "switch_clauses"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "switch_clauses": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "switch_clause"
      }
    },
    "switch_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "switch_clause_condition"
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        },
        {
          "type": "SYMBOL",
          "name": "_statement_terminator"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "STRING",
            "value": ";"
          }
        }
      ]
    },
    "switch_clause_condition": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_command_token"
        },
        {
          "type": "SYMBOL",
          "name": "_primary_expression"
        }
      ]
    },
    "foreach_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "foreach"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "foreach_parameter"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "variable"
        },
        {
          "type": "STRING",
          "value": "in"
        },
        {
          "type": "SYMBOL",
          "name": "pipeline"
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        }
      ]
    },
    "foreach_parameter": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "-parallel"
        }
      ]
    },
    "for_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "FIELD",
                          "name": "for_initializer",
                          "content": {
                            "type": "SYMBOL",
                            "name": "for_initializer"
                          }
                        },
                        {
                          "type": "SYMBOL",
                          "name": "_statement_terminator"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ";"
                            },
                            {
                              "type": "STRING",
                              "value": "\n"
                            }
                          ]
                        },
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "FIELD",
                                  "name": "for_condition",
                                  "content": {
                                    "type": "SYMBOL",
                                    "name": "for_condition"
                                  }
                                },
                                {
                                  "type": "SYMBOL",
                                  "name": "_statement_terminator"
                                }
                              ]
                            },
                            {
                              "type": "BLANK"
                            }
                          ]
                        },
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "CHOICE",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": ";"
                                    },
                                    {
                                      "type": "STRING",
                                      "value": "\n"
                                    }
                                  ]
                                },
                                {
                                  "type": "CHOICE",
                                  "members": [
                                    {
                                      "type": "SEQ",
                                      "members": [
                                        {
                                          "type": "FIELD",
                                          "name": "for_iterator",
                                          "content": {
                                            "type": "SYMBOL",
                                            "name": "for_iterator"
                                          }
                                        },
                                        {
                                          "type": "SYMBOL",
                                          "name": "_statement_terminator"
                                        }
                                      ]
                                    },
                                    {
                                      "type": "BLANK"
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "type": "BLANK"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        }
      ]
    },
    "for_initializer": {
      "type": "SYMBOL",
      "name": "pipeline"
    },
    "for_condition": {
      "type": "SYMBOL",
      "name": "pipeline"
    },
    "for_iterator": {
      "type": "SYMBOL",
      "name": "pipeline"
    },
    "while_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "while_condition"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        }
      ]
    },
    "while_condition": {
      "type": "SYMBOL",
      "name": "pipeline"
    },
    "do_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "do"
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "while"
            },
            {
              "type": "STRING",
              "value": "until"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "while_condition"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "function_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "function"
            },
            {
              "type": "STRING",
              "value": "filter"
            },
            {
              "type": "STRING",
              "value": "workflow"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "function_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "function_parameter_declaration"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "script_block"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "function_name": {
      "type": "SYMBOL",
      "name": "_command_token"
    },
    "function_parameter_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "parameter_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "flow_control_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "break"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "label_expression"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "continue"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "label_expression"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "throw"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "pipeline"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "return"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "pipeline"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "exit"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "pipeline"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "label": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "PATTERN",
            "value": "[a-zA-Z_][a-zA-Z0-9_]*"
          }
        ]
      }
    },
    "label_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "label"
        },
        {
          "type": "SYMBOL",
          "name": "unary_expression"
        }
      ]
    },
    "trap_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "trap"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_literal"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        }
      ]
    },
    "try_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "try"
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "catch_clauses"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "finally_clause"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "finally_clause"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "catch_clauses": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "catch_clause"
      }
    },
    "catch_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "catch"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "catch_type_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        }
      ]
    },
    "catch_type_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "type_literal"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "type_literal"
              }
            ]
          }
        }
      ]
    },
    "finally_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "finally"
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        }
      ]
    },
    "data_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "data"
        },
        {
          "type": "SYMBOL",
          "name": "data_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "data_commands_allowed"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        }
      ]
    },
    "data_name": {
      "type": "SYMBOL",
      "name": "simple_name"
    },
    "data_commands_allowed": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "-supportedcommand"
        },
        {
          "type": "SYMBOL",
          "name": "data_commands_list"
        }
      ]
    },
    "data_commands_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "data_command"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "data_command"
              }
            ]
          }
        }
      ]
    },
    "data_command": {
      "type": "SYMBOL",
      "name": "command_name_expr"
    },
    "inlinescript_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "inlinescript"
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        }
      ]
    },
    "parallel_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "parallel"
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        }
      ]
    },
    "sequence_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "sequence"
        },
        {
          "type": "SYMBOL",
          "name": "statement_block"
        }
      ]
    },
    "pipeline": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "assignment_expression"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "redirections"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_pipeline_tail"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "command"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "verbatim_command_argument"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_pipeline_tail"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "left_assignment_expression": {
      "type": "SYMBOL",
      "name": "_expression"
    },
    "assignment_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "left_assignment_expression"
        },
        {
          "type": "SYMBOL",
          "name": "assignement_operator"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_statement"
          }
        }
      ]
    },
    "_pipeline_tail": {
      "type": "REPEAT1",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "|"
          },
          {
            "type": "SYMBOL",
            "name": "command"
          }
        ]
      }
    },
    "command": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "command_name",
              "content": {
                "type": "SYMBOL",
                "name": "command_name"
              }
            },
            {
              "type": "FIELD",
              "name": "command_elements",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "command_elements"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "foreach_command"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "command_invokation_operator"
            },
            {
              "type": "FIELD",
              "name": "command_name",
              "content": {
                "type": "SYMBOL",
                "name": "command_name_expr"
              }
            },
            {
              "type": "FIELD",
              "name": "command_elements",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "command_elements"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "command_invokation_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "STRING",
          "value": "&"
        }
      ]
    },
    "_expandable_string_literal_immediate": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[^\\$\"`]+"
              },
              {
                "type": "SYMBOL",
                "name": "variable"
              },
              {
                "type": "PATTERN",
                "value": "\\$`(.{1}|`\\n)"
              },
              {
                "type": "PATTERN",
                "value": "`.{1}|`\\n"
              },
              {
                "type": "STRING",
                "value": "\"\""
              },
              {
                "type": "SYMBOL",
                "name": "sub_expression"
              }
            ]
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "STRING",
            "value": "$"
          }
        },
        {
          "type": "STRING",
          "value": "\""
        }
      ]
    },
    "command_name": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "PATTERN",
            "value": "[^\\{\\}\\(\\);,\\|\\&`\"'\\s\\n\\[\\]\\+\\-\\*\\/\\$@<\\!%]+"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "IMMEDIATE_TOKEN",
                  "content": {
                    "type": "PATTERN",
                    "value": "[^\\{\\}\\(\\);,\\|\\&\"'\\s\\n]+"
                  }
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "IMMEDIATE_TOKEN",
                      "content": {
                        "type": "STRING",
                        "value": "\""
                      }
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expandable_string_literal_immediate"
                    }
                  ]
                },
                {
                  "type": "IMMEDIATE_TOKEN",
                  "content": {
                    "type": "STRING",
                    "value": "\"\""
                  }
                },
                {
                  "type": "IMMEDIATE_TOKEN",
                  "content": {
                    "type": "STRING",
                    "value": "''"
                  }
                }
              ]
            }
          }
        ]
      }
    },
    "path_command_name_token": {
      "type": "PATTERN",
      "value": "[0-9a-zA-Z_?\\-\\.\\\\]+"
    },
    "path_command_name": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "path_command_name_token"
            },
            {
              "type": "SYMBOL",
              "name": "variable"
            }
          ]
        }
      }
    },
    "command_name_expr": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "command_name"
        },
        {
          "type": "SYMBOL",
          "name": "path_command_name"
        },
        {
          "type": "SYMBOL",
          "name": "_primary_expression"
        }
      ]
    },
    "command_elements": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "SYMBOL",
          "name": "_command_element"
        }
      }
    },
    "_command_element": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "command_parameter"
        },
        {
          "type": "SYMBOL",
          "name": "_command_argument"
        },
        {
          "type": "SYMBOL",
          "name": "redirection"
        },
        {
          "type": "SYMBOL",
          "name": "stop_parsing"
        }
      ]
    },
    "stop_parsing": {
      "type": "PATTERN",
      "value": "--%[^\\n]*"
    },
    "command_argument_sep": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "REPEAT1",
            "content": {
              "type": "STRING",
              "value": " "
            }
          },
          {
            "type": "STRING",
            "value": ":"
          }
        ]
      }
    },
    "_command_argument": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "command_argument_sep"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "generic_token"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_primary_expression"
        },
        {
          "type": "STRING",
          "value": ","
        }
      ]
    },
    "foreach_command": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "%"
            },
            {
              "type": "STRING",
              "value": "foreach-object"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "command_elements",
          "content": {
            "type": "REPEAT1",
            "content": {
              "type": "SYMBOL",
              "name": "script_block_expression"
            }
          }
        }
      ]
    },
    "verbatim_command_argument": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "--%"
        },
        {
          "type": "SYMBOL",
          "name": "_verbatim_command_argument_chars"
        }
      ]
    },
    "redirections": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "redirection"
      }
    },
    "redirection": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "merging_redirection_operator"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "file_redirection_operator"
            },
            {
              "type": "SYMBOL",
              "name": "redirected_file_name"
            }
          ]
        }
      ]
    },
    "redirected_file_name": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_command_argument"
        },
        {
          "type": "SYMBOL",
          "name": "_primary_expression"
        }
      ]
    },
    "class_attribute": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "hidden"
        },
        {
          "type": "STRING",
          "value": "static"
        }
      ]
    },
    "class_property_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attribute"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "class_attribute"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_literal"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "variable"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "class_method_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_literal"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "variable"
        }
      ]
    },
    "class_method_parameter_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "class_method_parameter"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "class_method_parameter"
              }
            ]
          }
        }
      ]
    },
    "class_method_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attribute"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "class_attribute"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_literal"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "simple_name"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "class_method_parameter_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "script_block"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "class_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "class"
        },
        {
          "type": "SYMBOL",
          "name": "simple_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "SYMBOL",
                  "name": "simple_name"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "simple_name"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "class_property_definition"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_statement_terminator"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "STRING",
                      "value": ";"
                    }
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "class_method_definition"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "enum_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "enum"
        },
        {
          "type": "SYMBOL",
          "name": "simple_name"
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "enum_member"
              },
              {
                "type": "SYMBOL",
                "name": "_statement_terminator"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "STRING",
                  "value": ";"
                }
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "enum_member": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "simple_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "integer_literal"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_expression": {
      "type": "SYMBOL",
      "name": "logical_expression"
    },
    "logical_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "bitwise_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "logical_expression"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "-and"
                  },
                  {
                    "type": "STRING",
                    "value": "-or"
                  },
                  {
                    "type": "STRING",
                    "value": "-xor"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "bitwise_expression"
              }
            ]
          }
        ]
      }
    },
    "bitwise_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "comparison_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "bitwise_expression"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "-band"
                  },
                  {
                    "type": "STRING",
                    "value": "-bor"
                  },
                  {
                    "type": "STRING",
                    "value": "-bxor"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "comparison_expression"
              }
            ]
          }
        ]
      }
    },
    "comparison_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "additive_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "comparison_expression"
              },
              {
                "type": "SYMBOL",
                "name": "comparison_operator"
              },
              {
                "type": "SYMBOL",
                "name": "additive_expression"
              }
            ]
          }
        ]
      }
    },
    "additive_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "multiplicative_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "additive_expression"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "+"
                  },
                  {
                    "type": "STRING",
                    "value": "-"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "multiplicative_expression"
              }
            ]
          }
        ]
      }
    },
    "multiplicative_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "format_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "multiplicative_expression"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "/"
                  },
                  {
                    "type": "STRING",
                    "value": "\\"
                  },
                  {
                    "type": "STRING",
                    "value": "%"
                  },
                  {
                    "type": "STRING",
                    "value": "*"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "format_expression"
              }
            ]
          }
        ]
      }
    },
    "format_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "range_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "format_expression"
              },
              {
                "type": "SYMBOL",
                "name": "format_operator"
              },
              {
                "type": "SYMBOL",
                "name": "range_expression"
              }
            ]
          }
        ]
      }
    },
    "range_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "array_literal_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "range_expression"
              },
              {
                "type": "STRING",
                "value": ".."
              },
              {
                "type": "SYMBOL",
                "name": "array_literal_expression"
              }
            ]
          }
        ]
      }
    },
    "array_literal_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "unary_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "array_literal_expression"
              },
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "unary_expression"
              }
            ]
          }
        ]
      }
    },
    "unary_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_primary_expression"
          },
          {
            "type": "SYMBOL",
            "name": "expression_with_unary_operator"
          }
        ]
      }
    },
    "expression_with_unary_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "SYMBOL",
              "name": "unary_expression"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "-not"
            },
            {
              "type": "SYMBOL",
              "name": "unary_expression"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "!"
            },
            {
              "type": "SYMBOL",
              "name": "unary_expression"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "-bnot"
            },
            {
              "type": "SYMBOL",
              "name": "unary_expression"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "+"
            },
            {
              "type": "SYMBOL",
              "name": "unary_expression"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "-"
            },
            {
              "type": "SYMBOL",
              "name": "unary_expression"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "pre_increment_expression"
        },
        {
          "type": "SYMBOL",
          "name": "pre_decrement_expression"
        },
        {
          "type": "SYMBOL",
          "name": "cast_expression"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "-split"
            },
            {
              "type": "SYMBOL",
              "name": "unary_expression"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "-join"
            },
            {
              "type": "SYMBOL",
              "name": "unary_expression"
            }
          ]
        }
      ]
    },
    "pre_increment_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "++"
        },
        {
          "type": "SYMBOL",
          "name": "unary_expression"
        }
      ]
    },
    "pre_decrement_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "--"
        },
        {
          "type": "SYMBOL",
          "name": "unary_expression"
        }
      ]
    },
    "cast_expression": {
      "type": "PREC",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "type_literal"
          },
          {
            "type": "SYMBOL",
            "name": "unary_expression"
          }
        ]
      }
    },
    "attributed_variable": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "type_literal"
        },
        {
          "type": "SYMBOL",
          "name": "variable"
        }
      ]
    },
    "_primary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_value"
        },
        {
          "type": "SYMBOL",
          "name": "member_access"
        },
        {
          "type": "SYMBOL",
          "name": "element_access"
        },
        {
          "type": "SYMBOL",
          "name": "invokation_expression"
        },
        {
          "type": "SYMBOL",
          "name": "post_increment_expression"
        },
        {
          "type": "SYMBOL",
          "name": "post_decrement_expression"
        }
      ]
    },
    "_value": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "SYMBOL",
          "name": "sub_expression"
        },
        {
          "type": "SYMBOL",
          "name": "array_expression"
        },
        {
          "type": "SYMBOL",
          "name": "script_block_expression"
        },
        {
          "type": "SYMBOL",
          "name": "hash_literal_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_literal"
        },
        {
          "type": "SYMBOL",
          "name": "type_literal"
        },
        {
          "type": "SYMBOL",
          "name": "variable"
        }
      ]
    },
    "parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "pipeline"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "sub_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "$("
        },
        {
          "type": "FIELD",
          "name": "statements",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "statement_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "array_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@("
        },
        {
          "type": "FIELD",
          "name": "statements",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "statement_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "script_block_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "param_block"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "script_block"
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "hash_literal_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "hash_literal_body"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "hash_literal_body": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "hash_entry"
      }
    },
    "hash_entry": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "key_expression"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "_statement"
        },
        {
          "type": "SYMBOL",
          "name": "_statement_terminator"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "STRING",
            "value": ";"
          }
        }
      ]
    },
    "key_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "simple_name"
        },
        {
          "type": "SYMBOL",
          "name": "unary_expression"
        }
      ]
    },
    "post_increment_expression": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_primary_expression"
          },
          {
            "type": "STRING",
            "value": "++"
          }
        ]
      }
    },
    "post_decrement_expression": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_primary_expression"
          },
          {
            "type": "STRING",
            "value": "--"
          }
        ]
      }
    },
    "member_access": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_primary_expression"
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "."
                }
              },
              {
                "type": "SYMBOL",
                "name": "member_name"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_primary_expression"
              },
              {
                "type": "STRING",
                "value": "::"
              },
              {
                "type": "SYMBOL",
                "name": "member_name"
              }
            ]
          }
        ]
      }
    },
    "member_name": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "simple_name"
        },
        {
          "type": "SYMBOL",
          "name": "string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "expression_with_unary_operator"
        },
        {
          "type": "SYMBOL",
          "name": "_value"
        }
      ]
    },
    "element_access": {
      "type": "PREC",
      "value": 3,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_primary_expression"
          },
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "invokation_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_primary_expression"
            },
            {
              "type": "IMMEDIATE_TOKEN",
              "content": {
                "type": "STRING",
                "value": "."
              }
            },
            {
              "type": "SYMBOL",
              "name": "member_name"
            },
            {
              "type": "SYMBOL",
              "name": "argument_list"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_primary_expression"
            },
            {
              "type": "STRING",
              "value": "::"
            },
            {
              "type": "SYMBOL",
              "name": "member_name"
            },
            {
              "type": "SYMBOL",
              "name": "argument_list"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "invokation_foreach_expression"
        }
      ]
    },
    "invokation_foreach_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_primary_expression"
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": ".foreach"
          }
        },
        {
          "type": "SYMBOL",
          "name": "script_block_expression"
        }
      ]
    },
    "argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "argument_expression_list",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "argument_expression_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "argument_expression_list": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "argument_expression"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "argument_expression"
                }
              ]
            }
          }
        ]
      }
    },
    "argument_expression": {
      "type": "SYMBOL",
      "name": "logical_argument_expression"
    },
    "logical_argument_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "bitwise_argument_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "logical_argument_expression"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "-and"
                  },
                  {
                    "type": "STRING",
                    "value": "-or"
                  },
                  {
                    "type": "STRING",
                    "value": "-xor"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "bitwise_argument_expression"
              }
            ]
          }
        ]
      }
    },
    "bitwise_argument_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "comparison_argument_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "bitwise_argument_expression"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "-and"
                  },
                  {
                    "type": "STRING",
                    "value": "-or"
                  },
                  {
                    "type": "STRING",
                    "value": "-xor"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "comparison_argument_expression"
              }
            ]
          }
        ]
      }
    },
    "comparison_argument_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "additive_argument_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "comparison_argument_expression"
              },
              {
                "type": "SYMBOL",
                "name": "comparison_operator"
              },
              {
                "type": "SYMBOL",
                "name": "additive_argument_expression"
              }
            ]
          }
        ]
      }
    },
    "additive_argument_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "multiplicative_argument_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "additive_argument_expression"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "+"
                  },
                  {
                    "type": "STRING",
                    "value": "-"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "multiplicative_argument_expression"
              }
            ]
          }
        ]
      }
    },
    "multiplicative_argument_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "format_argument_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "multiplicative_argument_expression"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "/"
                  },
                  {
                    "type": "STRING",
                    "value": "\\"
                  },
                  {
                    "type": "STRING",
                    "value": "%"
                  },
                  {
                    "type": "STRING",
                    "value": "*"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "format_argument_expression"
              }
            ]
          }
        ]
      }
    },
    "format_argument_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "range_argument_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "format_argument_expression"
              },
              {
                "type": "SYMBOL",
                "name": "format_operator"
              },
              {
                "type": "SYMBOL",
                "name": "range_argument_expression"
              }
            ]
          }
        ]
      }
    },
    "range_argument_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "unary_expression"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "range_argument_expression"
              },
              {
                "type": "STRING",
                "value": ".."
              },
              {
                "type": "SYMBOL",
                "name": "unary_expression"
              }
            ]
          }
        ]
      }
    },
    "type_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SYMBOL",
          "name": "type_spec"
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "type_spec": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "array_type_name"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "dimension"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "]"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "generic_type_name"
            },
            {
              "type": "SYMBOL",
              "name": "generic_type_arguments"
            },
            {
              "type": "STRING",
              "value": "]"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "type_name"
        }
      ]
    },
    "dimension": {
      "type": "REPEAT1",
      "content": {
        "type": "STRING",
        "value": ","
      }
    },
    "generic_type_arguments": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "type_spec"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "type_spec"
              }
            ]
          }
        }
      ]
    },
    "attribute_list": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "attribute"
      }
    },
    "attribute": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "["
            },
            {
              "type": "SYMBOL",
              "name": "attribute_name"
            },
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "attribute_arguments"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": ")"
            },
            {
              "type": "STRING",
              "value": "]"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "type_literal"
        }
      ]
    },
    "attribute_name": {
      "type": "SYMBOL",
      "name": "type_spec"
    },
    "attribute_arguments": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "attribute_argument"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "attribute_argument"
              }
            ]
          }
        }
      ]
    },
    "attribute_argument": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "simple_name"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "="
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    }
  },
  "extras": [
    {
      "type": "SYMBOL",
      "name": "comment"
    },
    {
      "type": "PATTERN",
      "value": "\\s"
    },
    {
      "type": "PATTERN",
      "value": "`\\n"
    },
    {
      "type": "PATTERN",
      "value": "[\\uFEFF\\u2060\\u200B\\u00A0]"
    }
  ],
  "conflicts": [
    [
      "array_type_name",
      "generic_type_name"
    ],
    [
      "_command_argument",
      "redirected_file_name"
    ],
    [
      "_literal",
      "member_name"
    ],
    [
      "class_property_definition",
      "attribute"
    ],
    [
      "class_method_definition",
      "attribute"
    ],
    [
      "class_method_definition",
      "class_property_definition"
    ],
    [
      "expandable_string_literal"
    ],
    [
      "path_command_name",
      "_value"
    ]
  ],
  "precedences": [],
  "externals": [
    {
      "type": "SYMBOL",
      "name": "_statement_terminator"
    }
  ],
  "inline": [],
  "supertypes": []
}

