{
  "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
  "name": "elixir",
  "rules": {
    "source": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_terminator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_terminator"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_expression"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_terminator"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_terminator": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "REPEAT",
                "content": {
                  "type": "PATTERN",
                  "value": "\\r?\\n"
                }
              },
              {
                "type": "STRING",
                "value": ";"
              }
            ]
          },
          {
            "type": "REPEAT1",
            "content": {
              "type": "PATTERN",
              "value": "\\r?\\n"
            }
          }
        ]
      }
    },
    "_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "block"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "alias"
        },
        {
          "type": "SYMBOL",
          "name": "integer"
        },
        {
          "type": "SYMBOL",
          "name": "float"
        },
        {
          "type": "SYMBOL",
          "name": "char"
        },
        {
          "type": "SYMBOL",
          "name": "boolean"
        },
        {
          "type": "SYMBOL",
          "name": "nil"
        },
        {
          "type": "SYMBOL",
          "name": "_atom"
        },
        {
          "type": "SYMBOL",
          "name": "string"
        },
        {
          "type": "SYMBOL",
          "name": "charlist"
        },
        {
          "type": "SYMBOL",
          "name": "sigil"
        },
        {
          "type": "SYMBOL",
          "name": "list"
        },
        {
          "type": "SYMBOL",
          "name": "tuple"
        },
        {
          "type": "SYMBOL",
          "name": "bitstring"
        },
        {
          "type": "SYMBOL",
          "name": "map"
        },
        {
          "type": "SYMBOL",
          "name": "_nullary_operator"
        },
        {
          "type": "SYMBOL",
          "name": "unary_operator"
        },
        {
          "type": "SYMBOL",
          "name": "binary_operator"
        },
        {
          "type": "SYMBOL",
          "name": "dot"
        },
        {
          "type": "SYMBOL",
          "name": "call"
        },
        {
          "type": "SYMBOL",
          "name": "access_call"
        },
        {
          "type": "SYMBOL",
          "name": "anonymous_function"
        }
      ]
    },
    "block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_terminator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "stab_clause"
                        }
                      ]
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_terminator"
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "stab_clause"
                              }
                            ]
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "_expression"
                            }
                          ]
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "_terminator"
                              },
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "SYMBOL",
                                    "name": "_expression"
                                  }
                                ]
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_terminator"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "identifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PATTERN",
          "value": "[_\\p{Ll}\\p{Lm}\\p{Lo}\\p{Nl}\\u1885\\u1886\\u2118\\u212E\\u309B\\u309C][\\p{ID_Continue}]*[?!]?",
          "flags": "u"
        },
        {
          "type": "STRING",
          "value": "..."
        }
      ]
    },
    "alias": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "PATTERN",
            "value": "[A-Z][_a-zA-Z0-9]*"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "\\s*\\.\\s*"
                },
                {
                  "type": "PATTERN",
                  "value": "[A-Z][_a-zA-Z0-9]*"
                }
              ]
            }
          }
        ]
      }
    },
    "integer": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "[0-9]+"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "_"
                    },
                    {
                      "type": "PATTERN",
                      "value": "[0-9]+"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "0b"
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[0-1]+"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "_"
                        },
                        {
                          "type": "PATTERN",
                          "value": "[0-1]+"
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "0o"
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[0-7]+"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "_"
                        },
                        {
                          "type": "PATTERN",
                          "value": "[0-7]+"
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "0x"
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[0-9a-fA-F]+"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "_"
                        },
                        {
                          "type": "PATTERN",
                          "value": "[0-9a-fA-F]+"
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "float": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "[0-9]+"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "_"
                    },
                    {
                      "type": "PATTERN",
                      "value": "[0-9]+"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "[0-9]+"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "_"
                    },
                    {
                      "type": "PATTERN",
                      "value": "[0-9]+"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[eE]"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "-"
                          },
                          {
                            "type": "STRING",
                            "value": "+"
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "[0-9]+"
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": "_"
                                },
                                {
                                  "type": "PATTERN",
                                  "value": "[0-9]+"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "0b"
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[0-1]+"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "_"
                                    },
                                    {
                                      "type": "PATTERN",
                                      "value": "[0-1]+"
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "0o"
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[0-7]+"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "_"
                                    },
                                    {
                                      "type": "PATTERN",
                                      "value": "[0-7]+"
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "0x"
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[0-9a-fA-F]+"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "_"
                                    },
                                    {
                                      "type": "PATTERN",
                                      "value": "[0-9a-fA-F]+"
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "char": {
      "type": "PATTERN",
      "value": "\\?(.|\\\\.)"
    },
    "boolean": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "true"
        },
        {
          "type": "STRING",
          "value": "false"
        }
      ]
    },
    "nil": {
      "type": "STRING",
      "value": "nil"
    },
    "_atom": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "atom"
        },
        {
          "type": "SYMBOL",
          "name": "quoted_atom"
        }
      ]
    },
    "atom": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[\\p{ID_Start}_][\\p{ID_Continue}@]*[?!]?",
                "flags": "u"
              },
              {
                "type": "STRING",
                "value": "->"
              },
              {
                "type": "STRING",
                "value": "::"
              },
              {
                "type": "STRING",
                "value": "|"
              },
              {
                "type": "STRING",
                "value": "&"
              },
              {
                "type": "STRING",
                "value": "="
              },
              {
                "type": "STRING",
                "value": "^^^"
              },
              {
                "type": "STRING",
                "value": "//"
              },
              {
                "type": "STRING",
                "value": ".."
              },
              {
                "type": "STRING",
                "value": "**"
              },
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "STRING",
                "value": "@"
              },
              {
                "type": "STRING",
                "value": "<-"
              },
              {
                "type": "STRING",
                "value": "\\\\"
              },
              {
                "type": "STRING",
                "value": "||"
              },
              {
                "type": "STRING",
                "value": "|||"
              },
              {
                "type": "STRING",
                "value": "&&"
              },
              {
                "type": "STRING",
                "value": "&&&"
              },
              {
                "type": "STRING",
                "value": "=="
              },
              {
                "type": "STRING",
                "value": "!="
              },
              {
                "type": "STRING",
                "value": "=~"
              },
              {
                "type": "STRING",
                "value": "==="
              },
              {
                "type": "STRING",
                "value": "!=="
              },
              {
                "type": "STRING",
                "value": "<"
              },
              {
                "type": "STRING",
                "value": ">"
              },
              {
                "type": "STRING",
                "value": "<="
              },
              {
                "type": "STRING",
                "value": ">="
              },
              {
                "type": "STRING",
                "value": "|>"
              },
              {
                "type": "STRING",
                "value": "<<<"
              },
              {
                "type": "STRING",
                "value": ">>>"
              },
              {
                "type": "STRING",
                "value": "<<~"
              },
              {
                "type": "STRING",
                "value": "~>>"
              },
              {
                "type": "STRING",
                "value": "<~"
              },
              {
                "type": "STRING",
                "value": "~>"
              },
              {
                "type": "STRING",
                "value": "<~>"
              },
              {
                "type": "STRING",
                "value": "<|>"
              },
              {
                "type": "STRING",
                "value": "++"
              },
              {
                "type": "STRING",
                "value": "--"
              },
              {
                "type": "STRING",
                "value": "+++"
              },
              {
                "type": "STRING",
                "value": "---"
              },
              {
                "type": "STRING",
                "value": "<>"
              },
              {
                "type": "STRING",
                "value": "+"
              },
              {
                "type": "STRING",
                "value": "-"
              },
              {
                "type": "STRING",
                "value": "*"
              },
              {
                "type": "STRING",
                "value": "/"
              },
              {
                "type": "STRING",
                "value": "+"
              },
              {
                "type": "STRING",
                "value": "-"
              },
              {
                "type": "STRING",
                "value": "!"
              },
              {
                "type": "STRING",
                "value": "^"
              },
              {
                "type": "STRING",
                "value": "~~~"
              },
              {
                "type": "STRING",
                "value": "..."
              },
              {
                "type": "STRING",
                "value": "%{}"
              },
              {
                "type": "STRING",
                "value": "{}"
              },
              {
                "type": "STRING",
                "value": "%"
              },
              {
                "type": "STRING",
                "value": "<<>>"
              },
              {
                "type": "STRING",
                "value": "..//"
              }
            ]
          }
        ]
      }
    },
    "quoted_atom": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_quoted_atom_start"
          },
          "named": false,
          "value": ":"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_quoted_i_double"
            },
            {
              "type": "SYMBOL",
              "name": "_quoted_i_single"
            }
          ]
        }
      ]
    },
    "_quoted_i_double": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "\""
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_i_double"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "interpolation"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escape_sequence"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_i_double"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "\""
          }
        }
      ]
    },
    "_quoted_double": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "\""
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_double"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_double"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "\""
          }
        }
      ]
    },
    "_quoted_i_single": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "'"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_i_single"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "interpolation"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escape_sequence"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_i_single"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "'"
          }
        }
      ]
    },
    "_quoted_single": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "'"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_single"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_single"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "'"
          }
        }
      ]
    },
    "_quoted_i_heredoc_single": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "'''"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_i_heredoc_single"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "interpolation"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escape_sequence"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_i_heredoc_single"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "'''"
          }
        }
      ]
    },
    "_quoted_heredoc_single": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "'''"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_heredoc_single"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_heredoc_single"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "'''"
          }
        }
      ]
    },
    "_quoted_i_heredoc_double": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "\"\"\""
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_i_heredoc_double"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "interpolation"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escape_sequence"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_i_heredoc_double"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "\"\"\""
          }
        }
      ]
    },
    "_quoted_heredoc_double": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "\"\"\""
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_heredoc_double"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_heredoc_double"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "\"\"\""
          }
        }
      ]
    },
    "_quoted_i_parenthesis": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "("
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_i_parenthesis"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "interpolation"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escape_sequence"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_i_parenthesis"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": ")"
          }
        }
      ]
    },
    "_quoted_parenthesis": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "("
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_parenthesis"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_parenthesis"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": ")"
          }
        }
      ]
    },
    "_quoted_i_curly": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "{"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_i_curly"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "interpolation"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escape_sequence"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_i_curly"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "}"
          }
        }
      ]
    },
    "_quoted_curly": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "{"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_curly"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_curly"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "}"
          }
        }
      ]
    },
    "_quoted_i_square": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "["
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_i_square"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "interpolation"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escape_sequence"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_i_square"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "]"
          }
        }
      ]
    },
    "_quoted_square": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "["
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_square"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_square"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "]"
          }
        }
      ]
    },
    "_quoted_i_angle": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "<"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_i_angle"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "interpolation"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escape_sequence"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_i_angle"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": ">"
          }
        }
      ]
    },
    "_quoted_angle": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "<"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_angle"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_angle"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": ">"
          }
        }
      ]
    },
    "_quoted_i_bar": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "|"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_i_bar"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "interpolation"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escape_sequence"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_i_bar"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "|"
          }
        }
      ]
    },
    "_quoted_bar": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "|"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_bar"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_bar"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "|"
          }
        }
      ]
    },
    "_quoted_i_slash": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "/"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_i_slash"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "interpolation"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escape_sequence"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_i_slash"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "/"
          }
        }
      ]
    },
    "_quoted_slash": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "quoted_start",
          "content": {
            "type": "STRING",
            "value": "/"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_quoted_content_slash"
              },
              "named": true,
              "value": "quoted_content"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_quoted_content_slash"
                    },
                    "named": true,
                    "value": "quoted_content"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "quoted_end",
          "content": {
            "type": "STRING",
            "value": "/"
          }
        }
      ]
    },
    "string": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_quoted_i_double"
        },
        {
          "type": "SYMBOL",
          "name": "_quoted_i_heredoc_double"
        }
      ]
    },
    "charlist": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_quoted_i_single"
        },
        {
          "type": "SYMBOL",
          "name": "_quoted_i_heredoc_single"
        }
      ]
    },
    "interpolation": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "#{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "escape_sequence": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[^ux]"
              },
              {
                "type": "PATTERN",
                "value": "x[0-9a-fA-F]{1,2}"
              },
              {
                "type": "PATTERN",
                "value": "x\\{[0-9a-fA-F]+\\}"
              },
              {
                "type": "PATTERN",
                "value": "u\\{[0-9a-fA-F]+\\}"
              },
              {
                "type": "PATTERN",
                "value": "u[0-9a-fA-F]{4}"
              }
            ]
          }
        ]
      }
    },
    "sigil": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "~"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "IMMEDIATE_TOKEN",
                    "content": {
                      "type": "PATTERN",
                      "value": "[a-z]"
                    }
                  },
                  "named": true,
                  "value": "sigil_name"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_i_double"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_i_single"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_i_heredoc_single"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_i_heredoc_double"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_i_parenthesis"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_i_curly"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_i_square"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_i_angle"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_i_bar"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_i_slash"
                    }
                  ]
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "IMMEDIATE_TOKEN",
                    "content": {
                      "type": "PATTERN",
                      "value": "[A-Z][A-Z0-9]*"
                    }
                  },
                  "named": true,
                  "value": "sigil_name"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_double"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_single"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_heredoc_single"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_heredoc_double"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_parenthesis"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_curly"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_square"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_angle"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_bar"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_quoted_slash"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "PATTERN",
                  "value": "[a-zA-Z0-9]+"
                }
              },
              "named": true,
              "value": "sigil_modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "keywords": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "pair"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "pair"
                }
              ]
            }
          }
        ]
      }
    },
    "_keywords_with_trailing_separator": {
      "type": "SEQ",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "pair"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "pair"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "pair": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "key",
          "content": {
            "type": "SYMBOL",
            "name": "_keyword"
          }
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        }
      ]
    },
    "_keyword": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "keyword"
        },
        {
          "type": "SYMBOL",
          "name": "quoted_keyword"
        }
      ]
    },
    "keyword": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[\\p{ID_Start}_][\\p{ID_Continue}@]*[?!]?",
                "flags": "u"
              },
              {
                "type": "STRING",
                "value": "->"
              },
              {
                "type": "STRING",
                "value": "|"
              },
              {
                "type": "STRING",
                "value": "&"
              },
              {
                "type": "STRING",
                "value": "="
              },
              {
                "type": "STRING",
                "value": "^^^"
              },
              {
                "type": "STRING",
                "value": "//"
              },
              {
                "type": "STRING",
                "value": ".."
              },
              {
                "type": "STRING",
                "value": "**"
              },
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "STRING",
                "value": "@"
              },
              {
                "type": "STRING",
                "value": "<-"
              },
              {
                "type": "STRING",
                "value": "\\\\"
              },
              {
                "type": "STRING",
                "value": "||"
              },
              {
                "type": "STRING",
                "value": "|||"
              },
              {
                "type": "STRING",
                "value": "&&"
              },
              {
                "type": "STRING",
                "value": "&&&"
              },
              {
                "type": "STRING",
                "value": "=="
              },
              {
                "type": "STRING",
                "value": "!="
              },
              {
                "type": "STRING",
                "value": "=~"
              },
              {
                "type": "STRING",
                "value": "==="
              },
              {
                "type": "STRING",
                "value": "!=="
              },
              {
                "type": "STRING",
                "value": "<"
              },
              {
                "type": "STRING",
                "value": ">"
              },
              {
                "type": "STRING",
                "value": "<="
              },
              {
                "type": "STRING",
                "value": ">="
              },
              {
                "type": "STRING",
                "value": "|>"
              },
              {
                "type": "STRING",
                "value": "<<<"
              },
              {
                "type": "STRING",
                "value": ">>>"
              },
              {
                "type": "STRING",
                "value": "<<~"
              },
              {
                "type": "STRING",
                "value": "~>>"
              },
              {
                "type": "STRING",
                "value": "<~"
              },
              {
                "type": "STRING",
                "value": "~>"
              },
              {
                "type": "STRING",
                "value": "<~>"
              },
              {
                "type": "STRING",
                "value": "<|>"
              },
              {
                "type": "STRING",
                "value": "++"
              },
              {
                "type": "STRING",
                "value": "--"
              },
              {
                "type": "STRING",
                "value": "+++"
              },
              {
                "type": "STRING",
                "value": "---"
              },
              {
                "type": "STRING",
                "value": "<>"
              },
              {
                "type": "STRING",
                "value": "+"
              },
              {
                "type": "STRING",
                "value": "-"
              },
              {
                "type": "STRING",
                "value": "*"
              },
              {
                "type": "STRING",
                "value": "/"
              },
              {
                "type": "STRING",
                "value": "+"
              },
              {
                "type": "STRING",
                "value": "-"
              },
              {
                "type": "STRING",
                "value": "!"
              },
              {
                "type": "STRING",
                "value": "^"
              },
              {
                "type": "STRING",
                "value": "~~~"
              },
              {
                "type": "STRING",
                "value": "..."
              },
              {
                "type": "STRING",
                "value": "%{}"
              },
              {
                "type": "STRING",
                "value": "{}"
              },
              {
                "type": "STRING",
                "value": "%"
              },
              {
                "type": "STRING",
                "value": "<<>>"
              },
              {
                "type": "STRING",
                "value": "..//"
              }
            ]
          },
          {
            "type": "PATTERN",
            "value": ":\\s"
          }
        ]
      }
    },
    "quoted_keyword": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_quoted_i_double"
            },
            {
              "type": "SYMBOL",
              "name": "_quoted_i_single"
            }
          ]
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": ":\\s"
          }
        }
      ]
    },
    "list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_items_with_trailing_separator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "tuple": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_items_with_trailing_separator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "bitstring": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<<"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_items_with_trailing_separator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ">>"
        }
      ]
    },
    "map": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "%"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "struct"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "{"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "_items_with_trailing_separator"
                },
                "named": true,
                "value": "map_content"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "}"
          }
        ]
      }
    },
    "struct": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "alias"
          },
          {
            "type": "SYMBOL",
            "name": "_atom"
          },
          {
            "type": "SYMBOL",
            "name": "identifier"
          },
          {
            "type": "SYMBOL",
            "name": "unary_operator"
          },
          {
            "type": "SYMBOL",
            "name": "dot"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_call_with_parentheses"
            },
            "named": true,
            "value": "call"
          }
        ]
      }
    },
    "_items_with_trailing_separator": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_expression"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "_expression"
                            },
                            {
                              "type": "REPEAT",
                              "content": {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": ","
                                  },
                                  {
                                    "type": "SYMBOL",
                                    "name": "_expression"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        {
                          "type": "STRING",
                          "value": ","
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_keywords_with_trailing_separator"
                  },
                  "named": true,
                  "value": "keywords"
                }
              ]
            }
          ]
        }
      ]
    },
    "_nullary_operator": {
      "type": "ALIAS",
      "content": {
        "type": "PREC",
        "value": 160,
        "content": {
          "type": "STRING",
          "value": ".."
        }
      },
      "named": true,
      "value": "operator_identifier"
    },
    "unary_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_DYNAMIC",
          "value": -1,
          "content": {
            "type": "PREC",
            "value": 60,
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_before_unary_op"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "FIELD",
                  "name": "operator",
                  "content": {
                    "type": "STRING",
                    "value": "&"
                  }
                },
                {
                  "type": "FIELD",
                  "name": "operand",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_capture_expression"
                  }
                }
              ]
            }
          }
        },
        {
          "type": "PREC_DYNAMIC",
          "value": -1,
          "content": {
            "type": "PREC",
            "value": 200,
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_before_unary_op"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "FIELD",
                  "name": "operator",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "+"
                      },
                      {
                        "type": "STRING",
                        "value": "-"
                      },
                      {
                        "type": "STRING",
                        "value": "!"
                      },
                      {
                        "type": "STRING",
                        "value": "^"
                      },
                      {
                        "type": "STRING",
                        "value": "~~~"
                      },
                      {
                        "type": "STRING",
                        "value": "not"
                      }
                    ]
                  }
                },
                {
                  "type": "FIELD",
                  "name": "operand",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                }
              ]
            }
          }
        },
        {
          "type": "PREC_DYNAMIC",
          "value": -1,
          "content": {
            "type": "PREC",
            "value": 220,
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_before_unary_op"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "FIELD",
                  "name": "operator",
                  "content": {
                    "type": "STRING",
                    "value": "@"
                  }
                },
                {
                  "type": "FIELD",
                  "name": "operand",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                }
              ]
            }
          }
        },
        {
          "type": "PREC_DYNAMIC",
          "value": -1,
          "content": {
            "type": "PREC",
            "value": 235,
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_before_unary_op"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "FIELD",
                  "name": "operator",
                  "content": {
                    "type": "STRING",
                    "value": "&"
                  }
                },
                {
                  "type": "FIELD",
                  "name": "operand",
                  "content": {
                    "type": "SYMBOL",
                    "name": "integer"
                  }
                }
              ]
            }
          }
        }
      ]
    },
    "_capture_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "("
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "STRING",
                "value": ")"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "binary_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "<-"
                    },
                    {
                      "type": "STRING",
                      "value": "\\\\"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 20,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "when"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "keywords"
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 30,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "::"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 40,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "|"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "keywords"
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 50,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "=>"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 70,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 80,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "||"
                    },
                    {
                      "type": "STRING",
                      "value": "|||"
                    },
                    {
                      "type": "STRING",
                      "value": "or"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 90,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "&&"
                    },
                    {
                      "type": "STRING",
                      "value": "&&&"
                    },
                    {
                      "type": "STRING",
                      "value": "and"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 100,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "=="
                    },
                    {
                      "type": "STRING",
                      "value": "!="
                    },
                    {
                      "type": "STRING",
                      "value": "=~"
                    },
                    {
                      "type": "STRING",
                      "value": "==="
                    },
                    {
                      "type": "STRING",
                      "value": "!=="
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 110,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "<"
                    },
                    {
                      "type": "STRING",
                      "value": ">"
                    },
                    {
                      "type": "STRING",
                      "value": "<="
                    },
                    {
                      "type": "STRING",
                      "value": ">="
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 120,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "|>"
                    },
                    {
                      "type": "STRING",
                      "value": "<<<"
                    },
                    {
                      "type": "STRING",
                      "value": ">>>"
                    },
                    {
                      "type": "STRING",
                      "value": "<<~"
                    },
                    {
                      "type": "STRING",
                      "value": "~>>"
                    },
                    {
                      "type": "STRING",
                      "value": "<~"
                    },
                    {
                      "type": "STRING",
                      "value": "~>"
                    },
                    {
                      "type": "STRING",
                      "value": "<~>"
                    },
                    {
                      "type": "STRING",
                      "value": "<|>"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 130,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "in"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_not_in"
                      },
                      "named": false,
                      "value": "not in"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 140,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "^^^"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 150,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "//"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 160,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "++"
                    },
                    {
                      "type": "STRING",
                      "value": "--"
                    },
                    {
                      "type": "STRING",
                      "value": "+++"
                    },
                    {
                      "type": "STRING",
                      "value": "---"
                    },
                    {
                      "type": "STRING",
                      "value": "<>"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 160,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ".."
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 170,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "+"
                    },
                    {
                      "type": "STRING",
                      "value": "-"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 180,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "*"
                    },
                    {
                      "type": "STRING",
                      "value": "/"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 190,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "**"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 180,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "operator_identifier"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "/"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "integer"
                }
              }
            ]
          }
        }
      ]
    },
    "operator_identifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC",
          "value": 60,
          "content": {
            "type": "STRING",
            "value": "&"
          }
        },
        {
          "type": "PREC",
          "value": 200,
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "+"
              },
              {
                "type": "STRING",
                "value": "-"
              },
              {
                "type": "STRING",
                "value": "!"
              },
              {
                "type": "STRING",
                "value": "^"
              },
              {
                "type": "STRING",
                "value": "~~~"
              },
              {
                "type": "STRING",
                "value": "not"
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": 220,
          "content": {
            "type": "STRING",
            "value": "@"
          }
        },
        {
          "type": "STRING",
          "value": "<-"
        },
        {
          "type": "STRING",
          "value": "\\\\"
        },
        {
          "type": "STRING",
          "value": "when"
        },
        {
          "type": "STRING",
          "value": "::"
        },
        {
          "type": "STRING",
          "value": "|"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "STRING",
          "value": "||"
        },
        {
          "type": "STRING",
          "value": "|||"
        },
        {
          "type": "STRING",
          "value": "or"
        },
        {
          "type": "STRING",
          "value": "&&"
        },
        {
          "type": "STRING",
          "value": "&&&"
        },
        {
          "type": "STRING",
          "value": "and"
        },
        {
          "type": "STRING",
          "value": "=="
        },
        {
          "type": "STRING",
          "value": "!="
        },
        {
          "type": "STRING",
          "value": "=~"
        },
        {
          "type": "STRING",
          "value": "==="
        },
        {
          "type": "STRING",
          "value": "!=="
        },
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "STRING",
          "value": ">"
        },
        {
          "type": "STRING",
          "value": "<="
        },
        {
          "type": "STRING",
          "value": ">="
        },
        {
          "type": "STRING",
          "value": "|>"
        },
        {
          "type": "STRING",
          "value": "<<<"
        },
        {
          "type": "STRING",
          "value": ">>>"
        },
        {
          "type": "STRING",
          "value": "<<~"
        },
        {
          "type": "STRING",
          "value": "~>>"
        },
        {
          "type": "STRING",
          "value": "<~"
        },
        {
          "type": "STRING",
          "value": "~>"
        },
        {
          "type": "STRING",
          "value": "<~>"
        },
        {
          "type": "STRING",
          "value": "<|>"
        },
        {
          "type": "STRING",
          "value": "in"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_not_in"
          },
          "named": false,
          "value": "not in"
        },
        {
          "type": "STRING",
          "value": "^^^"
        },
        {
          "type": "STRING",
          "value": "++"
        },
        {
          "type": "STRING",
          "value": "--"
        },
        {
          "type": "STRING",
          "value": "+++"
        },
        {
          "type": "STRING",
          "value": "---"
        },
        {
          "type": "STRING",
          "value": "<>"
        },
        {
          "type": "STRING",
          "value": "*"
        },
        {
          "type": "STRING",
          "value": "/"
        },
        {
          "type": "STRING",
          "value": "**"
        },
        {
          "type": "STRING",
          "value": "->"
        }
      ]
    },
    "dot": {
      "type": "PREC",
      "value": 210,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "STRING",
              "value": "."
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "alias"
                },
                {
                  "type": "SYMBOL",
                  "name": "tuple"
                }
              ]
            }
          }
        ]
      }
    },
    "call": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_call_without_parentheses"
        },
        {
          "type": "SYMBOL",
          "name": "_call_with_parentheses"
        }
      ]
    },
    "_call_without_parentheses": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_local_call_without_parentheses"
        },
        {
          "type": "SYMBOL",
          "name": "_local_call_just_do_block"
        },
        {
          "type": "SYMBOL",
          "name": "_remote_call_without_parentheses"
        }
      ]
    },
    "_call_with_parentheses": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_local_call_with_parentheses"
        },
        {
          "type": "SYMBOL",
          "name": "_remote_call_with_parentheses"
        },
        {
          "type": "SYMBOL",
          "name": "_anonymous_call"
        },
        {
          "type": "SYMBOL",
          "name": "_double_call"
        }
      ]
    },
    "_local_call_without_parentheses": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "target",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_call_arguments_without_parentheses"
            },
            "named": true,
            "value": "arguments"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_newline_before_do"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "SYMBOL",
                    "name": "do_block"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_local_call_with_parentheses": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "target",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_call_arguments_with_parentheses_immediate"
            },
            "named": true,
            "value": "arguments"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_newline_before_do"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "SYMBOL",
                    "name": "do_block"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_local_call_just_do_block": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "target",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "SYMBOL",
            "name": "do_block"
          }
        ]
      }
    },
    "_remote_call_without_parentheses": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "target",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_remote_dot"
              },
              "named": true,
              "value": "dot"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "_call_arguments_without_parentheses"
                },
                "named": true,
                "value": "arguments"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_newline_before_do"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "SYMBOL",
                    "name": "do_block"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_remote_call_with_parentheses": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "target",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_remote_dot"
              },
              "named": true,
              "value": "dot"
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_call_arguments_with_parentheses_immediate"
            },
            "named": true,
            "value": "arguments"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_newline_before_do"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "SYMBOL",
                    "name": "do_block"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_remote_dot": {
      "type": "PREC",
      "value": 210,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "STRING",
              "value": "."
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "and"
                      },
                      {
                        "type": "STRING",
                        "value": "in"
                      },
                      {
                        "type": "STRING",
                        "value": "not"
                      },
                      {
                        "type": "STRING",
                        "value": "or"
                      },
                      {
                        "type": "STRING",
                        "value": "when"
                      },
                      {
                        "type": "STRING",
                        "value": "true"
                      },
                      {
                        "type": "STRING",
                        "value": "false"
                      },
                      {
                        "type": "STRING",
                        "value": "nil"
                      },
                      {
                        "type": "STRING",
                        "value": "after"
                      },
                      {
                        "type": "STRING",
                        "value": "catch"
                      },
                      {
                        "type": "STRING",
                        "value": "do"
                      },
                      {
                        "type": "STRING",
                        "value": "else"
                      },
                      {
                        "type": "STRING",
                        "value": "end"
                      },
                      {
                        "type": "STRING",
                        "value": "fn"
                      },
                      {
                        "type": "STRING",
                        "value": "rescue"
                      }
                    ]
                  },
                  "named": true,
                  "value": "identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "operator_identifier"
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_quoted_i_double"
                  },
                  "named": true,
                  "value": "string"
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_quoted_i_single"
                  },
                  "named": true,
                  "value": "charlist"
                }
              ]
            }
          }
        ]
      }
    },
    "_anonymous_call": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "target",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_anonymous_dot"
            },
            "named": true,
            "value": "dot"
          }
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_call_arguments_with_parentheses"
          },
          "named": true,
          "value": "arguments"
        }
      ]
    },
    "_anonymous_dot": {
      "type": "PREC",
      "value": 210,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "STRING",
              "value": "."
            }
          }
        ]
      }
    },
    "_double_call": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "target",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_local_call_with_parentheses"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_remote_call_with_parentheses"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_anonymous_call"
                  }
                ]
              },
              "named": true,
              "value": "call"
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_call_arguments_with_parentheses"
            },
            "named": true,
            "value": "arguments"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_newline_before_do"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "SYMBOL",
                    "name": "do_block"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_call_arguments_with_parentheses": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_call_arguments_with_trailing_separator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_call_arguments_with_parentheses_immediate": {
      "type": "SEQ",
      "members": [
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "("
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_call_arguments_with_trailing_separator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_call_arguments_with_trailing_separator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_keywords_with_trailing_separator"
                      },
                      "named": true,
                      "value": "keywords"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_keywords_with_trailing_separator"
          },
          "named": true,
          "value": "keywords"
        }
      ]
    },
    "_call_arguments_without_parentheses": {
      "type": "PREC_DYNAMIC",
      "value": -1,
      "content": {
        "type": "PREC_RIGHT",
        "value": 0,
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_expression"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "keywords"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "keywords"
            }
          ]
        }
      }
    },
    "do_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "do"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_terminator"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "stab_clause"
                            }
                          ]
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "_terminator"
                              },
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "SYMBOL",
                                    "name": "stab_clause"
                                  }
                                ]
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "SYMBOL",
                                  "name": "_expression"
                                }
                              ]
                            },
                            {
                              "type": "REPEAT",
                              "content": {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "SYMBOL",
                                    "name": "_terminator"
                                  },
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "SYMBOL",
                                        "name": "_expression"
                                      }
                                    ]
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "_terminator"
                            },
                            {
                              "type": "BLANK"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "after_block"
              },
              {
                "type": "SYMBOL",
                "name": "rescue_block"
              },
              {
                "type": "SYMBOL",
                "name": "catch_block"
              },
              {
                "type": "SYMBOL",
                "name": "else_block"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "end"
        }
      ]
    },
    "after_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "after"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_terminator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "stab_clause"
                        }
                      ]
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_terminator"
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "stab_clause"
                              }
                            ]
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "_expression"
                            }
                          ]
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "_terminator"
                              },
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "SYMBOL",
                                    "name": "_expression"
                                  }
                                ]
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_terminator"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "rescue_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "rescue"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_terminator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "stab_clause"
                        }
                      ]
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_terminator"
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "stab_clause"
                              }
                            ]
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "_expression"
                            }
                          ]
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "_terminator"
                              },
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "SYMBOL",
                                    "name": "_expression"
                                  }
                                ]
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_terminator"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "catch_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "catch"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_terminator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "stab_clause"
                        }
                      ]
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_terminator"
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "stab_clause"
                              }
                            ]
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "_expression"
                            }
                          ]
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "_terminator"
                              },
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "SYMBOL",
                                    "name": "_expression"
                                  }
                                ]
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_terminator"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "else_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "else"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_terminator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "stab_clause"
                        }
                      ]
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_terminator"
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "stab_clause"
                              }
                            ]
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "_expression"
                            }
                          ]
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "_terminator"
                              },
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "SYMBOL",
                                    "name": "_expression"
                                  }
                                ]
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_terminator"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "access_call": {
      "type": "PREC",
      "value": 205,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "target",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "IMMEDIATE_TOKEN",
            "content": {
              "type": "STRING",
              "value": "["
            }
          },
          {
            "type": "FIELD",
            "name": "key",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "stab_clause": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_stab_clause_left"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "STRING",
              "value": "->"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "body"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_stab_clause_left": {
      "type": "CHOICE",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_stab_clause_arguments_with_parentheses"
          },
          "named": true,
          "value": "arguments"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_stab_clause_arguments_with_parentheses_with_guard"
          },
          "named": true,
          "value": "binary_operator"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_stab_clause_arguments_without_parentheses"
          },
          "named": true,
          "value": "arguments"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_stab_clause_arguments_without_parentheses_with_guard"
          },
          "named": true,
          "value": "binary_operator"
        }
      ]
    },
    "_stab_clause_arguments_with_parentheses": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PREC_RIGHT",
                            "value": 20,
                            "content": {
                              "type": "SYMBOL",
                              "name": "_expression"
                            }
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": ","
                                },
                                {
                                  "type": "PREC_RIGHT",
                                  "value": 20,
                                  "content": {
                                    "type": "SYMBOL",
                                    "name": "_expression"
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": ","
                              },
                              {
                                "type": "SYMBOL",
                                "name": "keywords"
                              }
                            ]
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "SYMBOL",
                    "name": "keywords"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "_stab_clause_arguments_without_parentheses": {
      "type": "PREC",
      "value": 20,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PREC",
                    "value": 20,
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "PREC",
                          "value": 20,
                          "content": {
                            "type": "SYMBOL",
                            "name": "_expression"
                          }
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "keywords"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "keywords"
          }
        ]
      }
    },
    "_stab_clause_arguments_with_parentheses_with_guard": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_stab_clause_arguments_with_parentheses"
            },
            "named": true,
            "value": "arguments"
          }
        },
        {
          "type": "FIELD",
          "name": "operator",
          "content": {
            "type": "STRING",
            "value": "when"
          }
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        }
      ]
    },
    "_stab_clause_arguments_without_parentheses_with_guard": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_stab_clause_arguments_without_parentheses"
              },
              "named": true,
              "value": "arguments"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "STRING",
              "value": "when"
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "body": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_terminator"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_terminator"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_terminator"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_terminator"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "anonymous_function": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "fn"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_terminator"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "stab_clause"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_terminator"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "stab_clause"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "end"
        }
      ]
    },
    "comment": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": -1,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "#"
            },
            {
              "type": "PATTERN",
              "value": ".*"
            }
          ]
        }
      }
    }
  },
  "extras": [
    {
      "type": "PATTERN",
      "value": "\\r?\\n"
    },
    {
      "type": "PATTERN",
      "value": "[ \\t]|\\r?\\n|\\\\\\r?\\n"
    },
    {
      "type": "SYMBOL",
      "name": "comment"
    },
    {
      "type": "SYMBOL",
      "name": "_newline_before_comment"
    },
    {
      "type": "SYMBOL",
      "name": "_newline_before_binary_operator"
    }
  ],
  "conflicts": [
    [
      "_expression",
      "_local_call_without_parentheses"
    ],
    [
      "binary_operator",
      "_stab_clause_arguments_without_parentheses"
    ],
    [
      "_stab_clause_arguments_without_parentheses",
      "_stab_clause_arguments_with_parentheses"
    ],
    [
      "operator_identifier",
      "stab_clause"
    ],
    [
      "unary_operator",
      "operator_identifier"
    ],
    [
      "body"
    ]
  ],
  "precedences": [],
  "externals": [
    {
      "type": "SYMBOL",
      "name": "_quoted_content_i_single"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_i_double"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_i_heredoc_single"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_i_heredoc_double"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_i_parenthesis"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_i_curly"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_i_square"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_i_angle"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_i_bar"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_i_slash"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_single"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_double"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_heredoc_single"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_heredoc_double"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_parenthesis"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_curly"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_square"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_angle"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_bar"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_content_slash"
    },
    {
      "type": "SYMBOL",
      "name": "_newline_before_do"
    },
    {
      "type": "SYMBOL",
      "name": "_newline_before_binary_operator"
    },
    {
      "type": "SYMBOL",
      "name": "_newline_before_comment"
    },
    {
      "type": "SYMBOL",
      "name": "_before_unary_op"
    },
    {
      "type": "SYMBOL",
      "name": "_not_in"
    },
    {
      "type": "SYMBOL",
      "name": "_quoted_atom_start"
    }
  ],
  "inline": [],
  "supertypes": []
}
