plum

#treesitter#compiler#wasm

git clone https://git.pyrossh.dev/plum

A statically typed, imperative programming language inspired by rust, python


plum-tooling/tree-sitter-plum/src/node-types.json
[
  {
    "type": "assert",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "assign",
    "named": true,
    "fields": {
      "op": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": ":=",
            "named": false
          },
          {
            "type": "=",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        },
        {
          "type": "field_target",
          "named": true
        },
        {
          "type": "var_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "attribute",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "fn_argument_list",
            "named": true
          }
        ]
      },
      "member": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "fn_identifier",
            "named": true
          }
        ]
      },
      "object": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "primary_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "binary_operator",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "primary_expression",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "%",
            "named": false
          },
          {
            "type": "&",
            "named": false
          },
          {
            "type": "*",
            "named": false
          },
          {
            "type": "+",
            "named": false
          },
          {
            "type": "-",
            "named": false
          },
          {
            "type": "/",
            "named": false
          },
          {
            "type": "<<",
            "named": false
          },
          {
            "type": ">>",
            "named": false
          },
          {
            "type": "^",
            "named": false
          },
          {
            "type": "|",
            "named": false
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "primary_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "body",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "assert",
          "named": true
        },
        {
          "type": "assign",
          "named": true
        },
        {
          "type": "break",
          "named": true
        },
        {
          "type": "continue",
          "named": true
        },
        {
          "type": "expression",
          "named": true
        },
        {
          "type": "for",
          "named": true
        },
        {
          "type": "if",
          "named": true
        },
        {
          "type": "match",
          "named": true
        },
        {
          "type": "return",
          "named": true
        },
        {
          "type": "todo",
          "named": true
        },
        {
          "type": "while",
          "named": true
        }
      ]
    }
  },
  {
    "type": "boolean_operator",
    "named": true,
    "fields": {
      "left": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "&&",
            "named": false
          },
          {
            "type": "||",
            "named": false
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "break",
    "named": true,
    "fields": {}
  },
  {
    "type": "case",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "body",
            "named": true
          },
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "guard": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "case_pattern",
          "named": true
        }
      ]
    }
  },
  {
    "type": "case_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "class_pattern",
          "named": true
        },
        {
          "type": "dotted_name",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "type_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "class_argument_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "field_argument",
          "named": true
        },
        {
          "type": "spread_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "class_call",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "class_argument_list",
            "named": true
          }
        ]
      },
      "generics": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "[",
            "named": false
          },
          {
            "type": "]",
            "named": false
          },
          {
            "type": "type",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "class_pattern",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "case_pattern",
          "named": true
        },
        {
          "type": "type_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "closure",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "body",
            "named": true
          },
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "var_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "comparison_operator",
    "named": true,
    "fields": {
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "!=",
            "named": false
          },
          {
            "type": "<",
            "named": false
          },
          {
            "type": "<=",
            "named": false
          },
          {
            "type": "<>",
            "named": false
          },
          {
            "type": "==",
            "named": false
          },
          {
            "type": ">",
            "named": false
          },
          {
            "type": ">=",
            "named": false
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "primary_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "const",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "const_identifier",
          "named": true
        },
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "continue",
    "named": true,
    "fields": {}
  },
  {
    "type": "dotted_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "var_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "else",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "body",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "else_if",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "body",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "elvis_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum",
    "named": true,
    "fields": {
      "generics": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "generics",
            "named": true
          }
        ]
      },
      "implements": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "methods": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "fn",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "params": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "enum_param",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "field",
          "named": true
        }
      ]
    }
  },
  {
    "type": "enum_named_field",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "var_identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "enum_param",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "var_identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "boolean_operator",
          "named": true
        },
        {
          "type": "closure",
          "named": true
        },
        {
          "type": "comparison_operator",
          "named": true
        },
        {
          "type": "elvis_expression",
          "named": true
        },
        {
          "type": "not_operator",
          "named": true
        },
        {
          "type": "primary_expression",
          "named": true
        },
        {
          "type": "ternary_expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "field",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "fn_identifier",
            "named": true
          },
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      },
      "parameters": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "enum_named_field",
            "named": true
          },
          {
            "type": "expression",
            "named": true
          },
          {
            "type": "type",
            "named": true
          }
        ]
      },
      "params": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "param",
            "named": true
          },
          {
            "type": "self",
            "named": true
          }
        ]
      },
      "returns": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "->",
            "named": false
          },
          {
            "type": "type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "field_argument",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "var_identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "field_target",
    "named": true,
    "fields": {
      "member": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "fn_identifier",
            "named": true
          }
        ]
      },
      "object": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "primary_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "fn",
    "named": true,
    "fields": {
      "body": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "=",
            "named": false
          },
          {
            "type": "body",
            "named": true
          },
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "externKw": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "extern",
            "named": false
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "fn_identifier",
            "named": true
          }
        ]
      },
      "params": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "(",
            "named": false
          },
          {
            "type": ")",
            "named": false
          },
          {
            "type": ",",
            "named": false
          },
          {
            "type": "param",
            "named": true
          },
          {
            "type": "self",
            "named": true
          }
        ]
      },
      "returns": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "->",
            "named": false
          },
          {
            "type": "type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "fn_argument_list",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "expression",
          "named": true
        },
        {
          "type": "keyword_argument",
          "named": true
        },
        {
          "type": "pair_argument",
          "named": true
        }
      ]
    }
  },
  {
    "type": "fn_call",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "fn_argument_list",
            "named": true
          }
        ]
      },
      "function": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          },
          {
            "type": "var_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "fn_value_type",
    "named": true,
    "fields": {
      "params": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "type",
            "named": true
          }
        ]
      },
      "returns": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "for",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "body",
            "named": true
          }
        ]
      },
      "left": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "var_identifier",
            "named": true
          }
        ]
      },
      "right": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "primary_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "generics",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "generic",
          "named": true
        },
        {
          "type": "type_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "guard_case",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "body",
            "named": true
          },
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "guard": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "_",
            "named": false
          },
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "if",
    "named": true,
    "fields": {
      "alternative": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "else_if",
            "named": true
          }
        ]
      },
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "body",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      },
      "otherwise": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "else",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "import",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "url",
          "named": true
        }
      ]
    }
  },
  {
    "type": "integer",
    "named": true,
    "fields": {}
  },
  {
    "type": "interpolation",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "keyword_argument",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "var_identifier",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "match",
    "named": true,
    "fields": {
      "case": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "case",
            "named": true
          },
          {
            "type": "guard_case",
            "named": true
          }
        ]
      },
      "subject": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "module",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "mod_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "not_operator",
    "named": true,
    "fields": {
      "argument": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "pair_argument",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "string",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "param",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "var_identifier",
            "named": true
          }
        ]
      },
      "type": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "fn_value_type",
            "named": true
          },
          {
            "type": "type",
            "named": true
          },
          {
            "type": "variadic_type",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "parenthesized_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "primary_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "attribute",
          "named": true
        },
        {
          "type": "binary_operator",
          "named": true
        },
        {
          "type": "class_call",
          "named": true
        },
        {
          "type": "const_identifier",
          "named": true
        },
        {
          "type": "float",
          "named": true
        },
        {
          "type": "fn_call",
          "named": true
        },
        {
          "type": "integer",
          "named": true
        },
        {
          "type": "parenthesized_expression",
          "named": true
        },
        {
          "type": "safe_attribute",
          "named": true
        },
        {
          "type": "self",
          "named": true
        },
        {
          "type": "string",
          "named": true
        },
        {
          "type": "try_expression",
          "named": true
        },
        {
          "type": "type_identifier",
          "named": true
        },
        {
          "type": "unary_operator",
          "named": true
        },
        {
          "type": "var_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "return",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "safe_attribute",
    "named": true,
    "fields": {
      "arguments": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "fn_argument_list",
            "named": true
          }
        ]
      },
      "member": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "fn_identifier",
            "named": true
          }
        ]
      },
      "object": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "primary_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "source",
    "named": true,
    "root": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "const",
          "named": true
        },
        {
          "type": "enum",
          "named": true
        },
        {
          "type": "fn",
          "named": true
        },
        {
          "type": "import",
          "named": true
        },
        {
          "type": "module",
          "named": true
        },
        {
          "type": "test",
          "named": true
        },
        {
          "type": "trait",
          "named": true
        }
      ]
    }
  },
  {
    "type": "spread_argument",
    "named": true,
    "fields": {
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "string",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "interpolation",
          "named": true
        },
        {
          "type": "string_content",
          "named": true
        },
        {
          "type": "string_end",
          "named": true
        },
        {
          "type": "string_start",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string_content",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "escape_interpolation",
          "named": true
        },
        {
          "type": "escape_sequence",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ternary_expression",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "expression",
          "named": true
        }
      ]
    }
  },
  {
    "type": "test",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "body",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "string",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "todo",
    "named": true,
    "fields": {}
  },
  {
    "type": "trait",
    "named": true,
    "fields": {
      "fields": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "field",
            "named": true
          }
        ]
      },
      "generics": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "generics",
            "named": true
          }
        ]
      },
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "type_identifier",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "try_expression",
    "named": true,
    "fields": {
      "value": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "primary_expression",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "type",
    "named": true,
    "fields": {
      "element": {
        "multiple": false,
        "required": false,
        "types": [
          {
            "type": "type",
            "named": true
          }
        ]
      },
      "generics": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": ",",
            "named": false
          },
          {
            "type": "[",
            "named": false
          },
          {
            "type": "]",
            "named": false
          },
          {
            "type": "type",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "generic",
          "named": true
        },
        {
          "type": "type_identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "unary_operator",
    "named": true,
    "fields": {
      "argument": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "primary_expression",
            "named": true
          }
        ]
      },
      "operator": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "+",
            "named": false
          },
          {
            "type": "-",
            "named": false
          }
        ]
      }
    }
  },
  {
    "type": "url",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "url_segment",
          "named": true
        }
      ]
    }
  },
  {
    "type": "variadic_type",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "type",
          "named": true
        }
      ]
    }
  },
  {
    "type": "while",
    "named": true,
    "fields": {
      "body": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "body",
            "named": true
          }
        ]
      },
      "condition": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "expression",
            "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": "-",
    "named": false
  },
  {
    "type": "->",
    "named": false
  },
  {
    "type": ".",
    "named": false
  },
  {
    "type": "..",
    "named": false
  },
  {
    "type": "...",
    "named": false
  },
  {
    "type": "/",
    "named": false
  },
  {
    "type": ":",
    "named": false
  },
  {
    "type": ":=",
    "named": false
  },
  {
    "type": "<",
    "named": false
  },
  {
    "type": "<<",
    "named": false
  },
  {
    "type": "<=",
    "named": false
  },
  {
    "type": "<>",
    "named": false
  },
  {
    "type": "=",
    "named": false
  },
  {
    "type": "==",
    "named": false
  },
  {
    "type": "=>",
    "named": false
  },
  {
    "type": ">",
    "named": false
  },
  {
    "type": ">=",
    "named": false
  },
  {
    "type": ">>",
    "named": false
  },
  {
    "type": "?",
    "named": false
  },
  {
    "type": "?.",
    "named": false
  },
  {
    "type": "?:",
    "named": false
  },
  {
    "type": "[",
    "named": false
  },
  {
    "type": "\\",
    "named": false
  },
  {
    "type": "]",
    "named": false
  },
  {
    "type": "^",
    "named": false
  },
  {
    "type": "_",
    "named": false
  },
  {
    "type": "assert",
    "named": false
  },
  {
    "type": "break",
    "named": false
  },
  {
    "type": "comment",
    "named": true,
    "extra": true
  },
  {
    "type": "const_identifier",
    "named": true
  },
  {
    "type": "continue",
    "named": false
  },
  {
    "type": "else",
    "named": false
  },
  {
    "type": "else if",
    "named": false
  },
  {
    "type": "enum",
    "named": false
  },
  {
    "type": "escape_interpolation",
    "named": true
  },
  {
    "type": "escape_sequence",
    "named": true
  },
  {
    "type": "extern",
    "named": false
  },
  {
    "type": "float",
    "named": true
  },
  {
    "type": "fn",
    "named": false
  },
  {
    "type": "fn_identifier",
    "named": true
  },
  {
    "type": "for",
    "named": false
  },
  {
    "type": "fun",
    "named": false
  },
  {
    "type": "generic",
    "named": true
  },
  {
    "type": "if",
    "named": false
  },
  {
    "type": "import",
    "named": false
  },
  {
    "type": "match",
    "named": false
  },
  {
    "type": "mod_identifier",
    "named": true
  },
  {
    "type": "module",
    "named": false
  },
  {
    "type": "range",
    "named": false
  },
  {
    "type": "return",
    "named": false
  },
  {
    "type": "self",
    "named": true
  },
  {
    "type": "string_end",
    "named": true
  },
  {
    "type": "string_start",
    "named": true
  },
  {
    "type": "test",
    "named": false
  },
  {
    "type": "todo",
    "named": false
  },
  {
    "type": "trait",
    "named": false
  },
  {
    "type": "type_identifier",
    "named": true
  },
  {
    "type": "url_segment",
    "named": true
  },
  {
    "type": "var_identifier",
    "named": true
  },
  {
    "type": "when",
    "named": false
  },
  {
    "type": "while",
    "named": false
  },
  {
    "type": "{",
    "named": false
  },
  {
    "type": "|",
    "named": false
  },
  {
    "type": "||",
    "named": false
  },
  {
    "type": "}",
    "named": false
  }
]