{ "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": "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": "watch" }, { "type": "STRING", "value": "drop" }, { "type": "STRING", "value": "p" }, { "type": "STRING", "value": "w" }, { "type": "STRING", "value": "d" } ] }, "id": { "type": "PATTERN", "value": "[0-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": "PATTERN", "value": "\\d{4}-\\d{2}-\\d{2}" }, { "type": "SYMBOL", "name": "_q" } ] }, "author": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_q" }, { "type": "PATTERN", "value": "[^\"]+" }, { "type": "SYMBOL", "name": "_q" } ] }, "duration": { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "_q" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "[" }, { "type": "CHOICE", "members": [ { "type": "STRING", "value": "No Duration" }, { "type": "PATTERN", "value": "\\d+m \\d+s" }, { "type": "PATTERN", "value": "\\d+h \\d+m" } ] }, { "type": "STRING", "value": "]" } ] }, { "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" }, { "type": "PATTERN", "value": "\\\\\\r?\\n" } ], "conflicts": [], "precedences": [], "externals": [], "inline": [], "supertypes": [] }