diff options
Diffstat (limited to 'tree-sitter-yts/grammar.js')
| -rw-r--r-- | tree-sitter-yts/grammar.js | 80 |
1 files changed, 12 insertions, 68 deletions
diff --git a/tree-sitter-yts/grammar.js b/tree-sitter-yts/grammar.js index 7576228..2b36254 100644 --- a/tree-sitter-yts/grammar.js +++ b/tree-sitter-yts/grammar.js @@ -1,73 +1,17 @@ -// yt - A fully featured command line YouTube client -// -// Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de> -// SPDX-License-Identifier: GPL-3.0-or-later -// -// This file is part of Yt. -// -// You should have received a copy of the License along with this program. -// If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +/** + * @file Parser for yt's selection language + * @author Benedikt Peetz <benedikt.peetz@b-peetz.de> + * @license GPL-3-or-later + */ -module.exports = grammar({ +/// <reference types="tree-sitter-cli/dsl" /> +// @ts-check + +export default grammar({ name: "yts", rules: { - 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/], + // TODO: add the actual grammar rules + source_file: $ => "hello" + } }); |
