[
  {
    "type": "_expr",
    "named": true,
    "subtypes": [
      {
        "type": "_identifier",
        "named": true
      },
      {
        "type": "_literals",
        "named": true
      },
      {
        "type": "_shorthand",
        "named": true
      },
      {
        "type": "_special_forms",
        "named": true
      },
      {
        "type": "_specials",
        "named": true
      },
      {
        "type": "array",
        "named": true
      },
      {
        "type": "peg_set",
        "named": true
      },
      {
        "type": "sqr_array",
        "named": true
      },
      {
        "type": "sqr_tuple",
        "named": true
      },
      {
        "type": "struct",
        "named": true
      },
      {
        "type": "table",
        "named": true
      },
      {
        "type": "tuple",
        "named": true
      }
    ]
  },
  {
    "type": "_identifier",
    "named": true,
    "subtypes": [
      {
        "type": "keyword",
        "named": true
      },
      {
        "type": "symbol",
        "named": true
      }
    ]
  },
  {
    "type": "_literals",
    "named": true,
    "subtypes": [
      {
        "type": "bool_literal",
        "named": true
      },
      {
        "type": "buffer_literal",
        "named": true
      },
      {
        "type": "long_buffer_literal",
        "named": true
      },
      {
        "type": "long_str_literal",
        "named": true
      },
      {
        "type": "nil_literal",
        "named": true
      },
      {
        "type": "number_literal",
        "named": true
      },
      {
        "type": "str_literal",
        "named": true
      }
    ]
  },
  {
    "type": "_shorthand",
    "named": true,
    "subtypes": [
      {
        "type": "short_fn",
        "named": true
      },
      {
        "type": "short_quasiquote",
        "named": true
      },
      {
        "type": "short_quote",
        "named": true
      },
      {
        "type": "short_splice",
        "named": true
      },
      {
        "type": "short_unquote",
        "named": true
      }
    ]
  },
  {
    "type": "_special_forms",
    "named": true,
    "subtypes": [
      {
        "type": "break",
        "named": true
      },
      {
        "type": "def",
        "named": true
      },
      {
        "type": "do",
        "named": true
      },
      {
        "type": "fn",
        "named": true
      },
      {
        "type": "if",
        "named": true
      },
      {
        "type": "quasiquote",
        "named": true
      },
      {
        "type": "quote",
        "named": true
      },
      {
        "type": "set",
        "named": true
      },
      {
        "type": "splice",
        "named": true
      },
      {
        "type": "unquote",
        "named": true
      },
      {
        "type": "upscope",
        "named": true
      },
      {
        "type": "var",
        "named": true
      },
      {
        "type": "while",
        "named": true
      }
    ]
  },
  {
    "type": "_specials",
    "named": true,
    "subtypes": [
      {
        "type": "extra_defs",
        "named": true
      }
    ]
  },
  {
    "type": "array",
    "named": true,
    "fields": {
      "item": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "body",
    "named": true,
    "fields": {
      "form": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "bool_literal",
    "named": true,
    "fields": {}
  },
  {
    "type": "break",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "def",
    "named": true,
    "fields": {
      "metadata": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "metadata",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "do",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "body",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "extra_defs",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "body",
            "named": true
          }
        ]
      },
      "metadata": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "metadata",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_identifier",
            "named": true
          },
          {
            "type": "quasiquote",
            "named": true
          },
          {
            "type": "quote",
            "named": true
          },
          {
            "type": "short_quasiquote",
            "named": true
          },
          {
            "type": "short_quote",
            "named": true
          },
          {
            "type": "short_splice",
            "named": true
          },
          {
            "type": "short_unquote",
            "named": true
          },
          {
            "type": "splice",
            "named": true
          },
          {
            "type": "unquote",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_identifier",
            "named": true
          },
          {
            "type": "parameters",
            "named": true
          },
          {
            "type": "quasiquote",
            "named": true
          },
          {
            "type": "quote",
            "named": true
          },
          {
            "type": "short_quasiquote",
            "named": true
          },
          {
            "type": "short_quote",
            "named": true
          },
          {
            "type": "short_splice",
            "named": true
          },
          {
            "type": "short_unquote",
            "named": true
          },
          {
            "type": "splice",
            "named": true
          },
          {
            "type": "tuple_parameters",
            "named": true
          },
          {
            "type": "unquote",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "fn",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "body",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_identifier",
            "named": true
          },
          {
            "type": "quasiquote",
            "named": true
          },
          {
            "type": "quote",
            "named": true
          },
          {
            "type": "short_quasiquote",
            "named": true
          },
          {
            "type": "short_quote",
            "named": true
          },
          {
            "type": "short_splice",
            "named": true
          },
          {
            "type": "short_unquote",
            "named": true
          },
          {
            "type": "splice",
            "named": true
          },
          {
            "type": "unquote",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_identifier",
            "named": true
          },
          {
            "type": "parameters",
            "named": true
          },
          {
            "type": "quasiquote",
            "named": true
          },
          {
            "type": "quote",
            "named": true
          },
          {
            "type": "short_quasiquote",
            "named": true
          },
          {
            "type": "short_quote",
            "named": true
          },
          {
            "type": "short_splice",
            "named": true
          },
          {
            "type": "short_unquote",
            "named": true
          },
          {
            "type": "splice",
            "named": true
          },
          {
            "type": "tuple_parameters",
            "named": true
          },
          {
            "type": "unquote",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "if",
    "named": true,
    "fields": {
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      },
      "else": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      },
      "then": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "long_buffer_literal",
    "named": true,
    "fields": {}
  },
  {
    "type": "long_str_literal",
    "named": true,
    "fields": {}
  },
  {
    "type": "metadata",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "keyword",
          "named": true
        },
        {
          "type": "long_str_literal",
          "named": true
        },
        {
          "type": "quasiquote",
          "named": true
        },
        {
          "type": "quote",
          "named": true
        },
        {
          "type": "short_quasiquote",
          "named": true
        },
        {
          "type": "short_quote",
          "named": true
        },
        {
          "type": "short_splice",
          "named": true
        },
        {
          "type": "short_unquote",
          "named": true
        },
        {
          "type": "splice",
          "named": true
        },
        {
          "type": "str_literal",
          "named": true
        },
        {
          "type": "struct",
          "named": true
        },
        {
          "type": "unquote",
          "named": true
        }
      ]
    }
  },
  {
    "type": "number_literal",
    "named": true,
    "fields": {}
  },
  {
    "type": "parameters",
    "named": true,
    "fields": {
      "parameter": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "keys_marker",
          "named": true
        },
        {
          "type": "optional_marker",
          "named": true
        },
        {
          "type": "variadic_marker",
          "named": true
        }
      ]
    }
  },
  {
    "type": "peg_set",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "long_str_literal",
          "named": true
        },
        {
          "type": "quote",
          "named": true
        },
        {
          "type": "short_quote",
          "named": true
        },
        {
          "type": "str_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "quasiquote",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "quote",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "set",
    "named": true,
    "fields": {
      "l_value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      },
      "r_value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "short_fn",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "short_quasiquote",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "short_quote",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "short_splice",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "short_unquote",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "_expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "source_file",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "_expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "splice",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "sqr_array",
    "named": true,
    "fields": {
      "item": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "sqr_tuple",
    "named": true,
    "fields": {
      "item": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "struct",
    "named": true,
    "fields": {
      "key": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "table",
    "named": true,
    "fields": {
      "key": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "tuple",
    "named": true,
    "fields": {
      "item": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "tuple_parameters",
    "named": true,
    "fields": {
      "parameter": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "keys_marker",
          "named": true
        },
        {
          "type": "optional_marker",
          "named": true
        },
        {
          "type": "variadic_marker",
          "named": true
        }
      ]
    }
  },
  {
    "type": "unquote",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "_expr",
          "named": true
        }
      ]
    }
  },
  {
    "type": "upscope",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "body",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "var",
    "named": true,
    "fields": {
      "metadata": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "metadata",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "while",
    "named": true,
    "fields": {
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      },
      "form": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "_expr",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "'",
    "named": false
  },
  {
    "type": "(",
    "named": false
  },
  {
    "type": ")",
    "named": false
  },
  {
    "type": ",",
    "named": false
  },
  {
    "type": ";",
    "named": false
  },
  {
    "type": "@(",
    "named": false
  },
  {
    "type": "@[",
    "named": false
  },
  {
    "type": "@{",
    "named": false
  },
  {
    "type": "[",
    "named": false
  },
  {
    "type": "]",
    "named": false
  },
  {
    "type": "break",
    "named": false
  },
  {
    "type": "buffer_literal",
    "named": true
  },
  {
    "type": "def",
    "named": false
  },
  {
    "type": "defmacro",
    "named": false
  },
  {
    "type": "defmacro-",
    "named": false
  },
  {
    "type": "defn",
    "named": false
  },
  {
    "type": "defn-",
    "named": false
  },
  {
    "type": "do",
    "named": false
  },
  {
    "type": "false",
    "named": false
  },
  {
    "type": "fn",
    "named": false
  },
  {
    "type": "if",
    "named": false
  },
  {
    "type": "keys_marker",
    "named": true
  },
  {
    "type": "keyword",
    "named": true
  },
  {
    "type": "line_comment",
    "named": true
  },
  {
    "type": "nil_literal",
    "named": true
  },
  {
    "type": "optional_marker",
    "named": true
  },
  {
    "type": "quasiquote",
    "named": false
  },
  {
    "type": "quote",
    "named": false
  },
  {
    "type": "set",
    "named": false
  },
  {
    "type": "splice",
    "named": false
  },
  {
    "type": "str_literal",
    "named": true
  },
  {
    "type": "symbol",
    "named": true
  },
  {
    "type": "true",
    "named": false
  },
  {
    "type": "unquote",
    "named": false
  },
  {
    "type": "upscope",
    "named": false
  },
  {
    "type": "var",
    "named": false
  },
  {
    "type": "varfn",
    "named": false
  },
  {
    "type": "varfn-",
    "named": false
  },
  {
    "type": "variadic_marker",
    "named": true
  },
  {
    "type": "while",
    "named": false
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "|",
    "named": false
  },
  {
    "type": "}",
    "named": false
  },
  {
    "type": "~",
    "named": false
  }
]