{
  "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
  "name": "cst",
  "rules": {
    "cst": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_eol"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_line"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_eol"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_line": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "range"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "_space"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "node"
            },
            {
              "type": "SYMBOL",
              "name": "text"
            },
            {
              "type": "SYMBOL",
              "name": "literal"
            },
            {
              "type": "SYMBOL",
              "name": "error"
            },
            {
              "type": "SYMBOL",
              "name": "missing"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_eol"
        }
      ]
    },
    "range": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "start",
          "content": {
            "type": "SYMBOL",
            "name": "position"
          }
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "_space"
          }
        },
        {
          "type": "STRING",
          "value": "-"
        },
        {
          "type": "SYMBOL",
          "name": "_space"
        },
        {
          "type": "FIELD",
          "name": "end",
          "content": {
            "type": "SYMBOL",
            "name": "position"
          }
        }
      ]
    },
    "position": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "row",
          "content": {
            "type": "SYMBOL",
            "name": "number"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "column",
          "content": {
            "type": "SYMBOL",
            "name": "number"
          }
        }
      ]
    },
    "node": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "field"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_mark"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_identifier"
          },
          "named": true,
          "value": "kind"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_space"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_space"
                },
                {
                  "type": "SYMBOL",
                  "name": "text"
                }
              ]
            }
          ]
        }
      ]
    },
    "text": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "`"
        },
        {
          "type": "SYMBOL",
          "name": "content"
        },
        {
          "type": "STRING",
          "value": "`"
        }
      ]
    },
    "literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "\""
        },
        {
          "type": "SYMBOL",
          "name": "content"
        },
        {
          "type": "STRING",
          "value": "\""
        }
      ]
    },
    "error": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_mark"
        },
        {
          "type": "STRING",
          "value": "ERROR"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_space"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_space"
                },
                {
                  "type": "SYMBOL",
                  "name": "text"
                }
              ]
            }
          ]
        }
      ]
    },
    "missing": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "MISSING"
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": ":"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_space"
        },
        {
          "type": "SYMBOL",
          "name": "literal"
        }
      ]
    },
    "field": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_identifier"
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": ":"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_space"
        }
      ]
    },
    "content": {
      "type": "REPEAT1",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "PATTERN",
            "value": "[^\\r\\n]"
          },
          {
            "type": "FIELD",
            "name": "escape",
            "content": {
              "type": "SYMBOL",
              "name": "_escape"
            }
          }
        ]
      }
    },
    "_identifier": {
      "type": "PATTERN",
      "value": "[\\w-][\\w.-]*"
    },
    "_escape": {
      "type": "PATTERN",
      "value": "\\\\[nrt0\\\\vf`\"]"
    },
    "number": {
      "type": "PATTERN",
      "value": "\\d+"
    },
    "_mark": {
      "type": "STRING",
      "value": "•"
    },
    "_space": {
      "type": "PATTERN",
      "value": " "
    },
    "_eol": {
      "type": "PATTERN",
      "value": "[\\r\\n]|\\r\\n"
    }
  },
  "extras": [],
  "conflicts": [],
  "precedences": [],
  "externals": [],
  "inline": [],
  "supertypes": [],
  "reserved": {}
}