{ "$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": [] }