{
  "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
  "name": "yts",
  "rules": {
    "source_file": {
      "type": "REPEAT",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "line"
          },
          {
            "type": "SYMBOL",
            "name": "comment"
          }
        ]
      }
    },
    "line": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "command"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "flag"
          }
        },
        {
          "type": "SYMBOL",
          "name": "id"
        },
        {
          "type": "SYMBOL",
          "name": "title"
        },
        {
          "type": "SYMBOL",
          "name": "date"
        },
        {
          "type": "SYMBOL",
          "name": "author"
        },
        {
          "type": "SYMBOL",
          "name": "duration"
        },
        {
          "type": "SYMBOL",
          "name": "url"
        },
        {
          "type": "STRING",
          "value": "\n"
        }
      ]
    },
    "command": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "pick"
        },
        {
          "type": "STRING",
          "value": "p"
        },
        {
          "type": "STRING",
          "value": "watch"
        },
        {
          "type": "STRING",
          "value": "w"
        },
        {
          "type": "STRING",
          "value": "watched"
        },
        {
          "type": "STRING",
          "value": "wd"
        },
        {
          "type": "STRING",
          "value": "add"
        },
        {
          "type": "STRING",
          "value": "a"
        },
        {
          "type": "STRING",
          "value": "drop"
        },
        {
          "type": "STRING",
          "value": "d"
        },
        {
          "type": "STRING",
          "value": "url"
        },
        {
          "type": "STRING",
          "value": "u"
        }
      ]
    },
    "flag": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PATTERN",
          "value": "-\\w [^\\s]+"
        },
        {
          "type": "PATTERN",
          "value": "-\\w '[^']*'"
        },
        {
          "type": "PATTERN",
          "value": "-\\w \"[^\"]*\""
        },
        {
          "type": "PATTERN",
          "value": "-\\w=[^\\s]+"
        },
        {
          "type": "PATTERN",
          "value": "-\\w='[^']*'"
        },
        {
          "type": "PATTERN",
          "value": "-\\w=\"[^\"]*\""
        },
        {
          "type": "PATTERN",
          "value": "--\\w[\\w-]+ [^\\s]+"
        },
        {
          "type": "PATTERN",
          "value": "--\\w[\\w-]+ '[^']*'"
        },
        {
          "type": "PATTERN",
          "value": "--\\w[\\w-]+ \"[^\"]*\""
        },
        {
          "type": "PATTERN",
          "value": "--\\w[\\w-]+=[^\\s]+"
        },
        {
          "type": "PATTERN",
          "value": "--\\w[\\w-]+='[^']*'"
        },
        {
          "type": "PATTERN",
          "value": "--\\w[\\w-]+=\"[^\"]*\""
        }
      ]
    },
    "id": {
      "type": "PATTERN",
      "value": "[a-z0-9]+"
    },
    "title": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_q"
        },
        {
          "type": "PATTERN",
          "value": "[^\"]+"
        },
        {
          "type": "SYMBOL",
          "name": "_q"
        }
      ]
    },
    "date": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_q"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "[No release date]"
            },
            {
              "type": "PATTERN",
              "value": "\\d{4}-\\d{2}-\\d{2}"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_q"
        }
      ]
    },
    "author": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_q"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "[No author]"
            },
            {
              "type": "PATTERN",
              "value": "[^\"]+"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_q"
        }
      ]
    },
    "duration": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_q"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "[No duration]"
                },
                {
                  "type": "PATTERN",
                  "value": "\\d+m \\d+s"
                },
                {
                  "type": "PATTERN",
                  "value": "\\d+h \\d+m"
                }
              ]
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_q"
        }
      ]
    },
    "url": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_q"
        },
        {
          "type": "PATTERN",
          "value": "[^\"]+"
        },
        {
          "type": "SYMBOL",
          "name": "_q"
        }
      ]
    },
    "comment": {
      "type": "PATTERN",
      "value": "#.*"
    },
    "_q": {
      "type": "SYMBOL",
      "name": "quote"
    },
    "quote": {
      "type": "PATTERN",
      "value": "\""
    }
  },
  "extras": [
    {
      "type": "PATTERN",
      "value": "\\s"
    }
  ],
  "conflicts": [],
  "precedences": [],
  "externals": [],
  "inline": [],
  "supertypes": []
}