diff options
| author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2026-05-26 18:04:55 +0200 |
|---|---|---|
| committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2026-05-26 18:04:55 +0200 |
| commit | 397419041649bbe2b7d61ae87e5bec698c343302 (patch) | |
| tree | 975614df3499278cfeca1b1e958ad65e7708f3b2 /tree-sitter-yts/grammar.js | |
| parent | build(treewide): Update (diff) | |
| download | yt-397419041649bbe2b7d61ae87e5bec698c343302.zip | |
fix(tree-sitter-yts): Avoid deleting the grammer.js file
Tree-sitter replaced it with an empty one during the update.
Diffstat (limited to '')
| -rw-r--r-- | tree-sitter-yts/grammar.js | 61 |
1 files changed, 58 insertions, 3 deletions
diff --git a/tree-sitter-yts/grammar.js b/tree-sitter-yts/grammar.js index 2b36254..cf76d78 100644 --- a/tree-sitter-yts/grammar.js +++ b/tree-sitter-yts/grammar.js @@ -11,7 +11,62 @@ export default grammar({ name: "yts", rules: { - // TODO: add the actual grammar rules - source_file: $ => "hello" - } + source_file: ($) => repeat(choice($.line, $.comment)), + line: ($) => + seq( + $.command, + repeat($.flag), + $.id, + $.title, + $.date, + $.author, + $.duration, + $.url, + "\n", + ), + + command: ($) => + choice( + "pick", + "p", + "watch", + "w", + "watched", + "wd", + "add", + "a", + "drop", + "d", + "url", + "u", + ), + flag: ($) => + choice( + /-\w [^\s]+/, + /-\w '[^']*'/, + /-\w "[^"]*"/, + /-\w=[^\s]+/, + /-\w='[^']*'/, + /-\w="[^"]*"/, + + /--\w[\w-]+ [^\s]+/, + /--\w[\w-]+ '[^']*'/, + /--\w[\w-]+ "[^"]*"/, + /--\w[\w-]+=[^\s]+/, + /--\w[\w-]+='[^']*'/, + /--\w[\w-]+="[^"]*"/, + ), + id: ($) => /[a-z0-9]+/, + title: ($) => seq($._q, /[^"]+/, $._q), + date: ($) => + seq($._q, choice("[No release date]", /\d{4}-\d{2}-\d{2}/), $._q), + author: ($) => seq($._q, choice("[No author]", /[^"]+/), $._q), + duration: ($) => + seq($._q, seq(choice("[No duration]", /\d+m \d+s/, /\d+h \d+m/)), $._q), + url: ($) => seq($._q, /[^"]+/, $._q), + comment: ($) => /#.*/, + _q: ($) => $.quote, + quote: ($) => /"/, + }, + extras: ($) => [/\s/], }); |
