From cde4f74ed9dffa1415d9021c343eb599e8866b4d Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Sat, 14 Sep 2024 18:10:53 +0200 Subject: Update the grammar a bit --- grammar.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'grammar.js') diff --git a/grammar.js b/grammar.js index f01e720..0f13c6b 100644 --- a/grammar.js +++ b/grammar.js @@ -2,7 +2,16 @@ module.exports = grammar({ name: 'gsp', extras: $ => [$._S], rules: { - source_file: $ => repeat($.node), + source_file: $ => repeat(choice($.comment, $.node)), + + comment: $ => seq( + '/', + optional($.node_name), + optional($.attribute_list), + '{', + optional($.node_body), + '}', + ), node: $ => seq( optional('>'), @@ -14,16 +23,16 @@ module.exports = grammar({ ), node_body: $ => choice( - repeat1($.node), + repeat1(choice($.comment, $.node)), seq(choice('-', '='), optional($.text)), ), - node_name: $ => /[\/a-zA-Z:_\u{000C0}-\u{000D6}\u{000D8}-\u{000F6}\u{000F8}-\u{002FF}\u{00370}-\u{0037D}\u{0037F}-\u{01FFF}\u{0200C}-\u{0200D}\u{02070}-\u{0218F}\u{02C00}-\u{02FEF}\u{03001}-\u{0D7FF}\u{0F900}-\u{0FDCF}\u{0FDF0}-\u{0FFFD}\u{10000}-\u{EFFFF}][a-zA-Z0-9:_\-.·\u{00300}-\u{0036F}\u{0203F}-\u{02040}\u{000C0}-\u{000D6}\u{000D8}-\u{000F6}\u{000F8}-\u{002FF}\u{00370}-\u{0037D}\u{0037F}-\u{01FFF}\u{0200C}-\u{0200D}\u{02070}-\u{0218F}\u{02C00}-\u{02FEF}\u{03001}-\u{0D7FF}\u{0F900}-\u{0FDCF}\u{0FDF0}-\u{0FFFD}\u{10000}-\u{EFFFF}]*/u, + node_name: $ => /[a-zA-Z:_\u{000C0}-\u{000D6}\u{000D8}-\u{000F6}\u{000F8}-\u{002FF}\u{00370}-\u{0037D}\u{0037F}-\u{01FFF}\u{0200C}-\u{0200D}\u{02070}-\u{0218F}\u{02C00}-\u{02FEF}\u{03001}-\u{0D7FF}\u{0F900}-\u{0FDCF}\u{0FDF0}-\u{0FFFD}\u{10000}-\u{EFFFF}][a-zA-Z0-9:_\-.·\u{00300}-\u{0036F}\u{0203F}-\u{02040}\u{000C0}-\u{000D6}\u{000D8}-\u{000F6}\u{000F8}-\u{002FF}\u{00370}-\u{0037D}\u{0037F}-\u{01FFF}\u{0200C}-\u{0200D}\u{02070}-\u{0218F}\u{02C00}-\u{02FEF}\u{03001}-\u{0D7FF}\u{0F900}-\u{0FDCF}\u{0FDF0}-\u{0FFFD}\u{10000}-\u{EFFFF}]*/u, text: $ => repeat1( choice( $.literal_text, - seq('@', $.node), + seq('@', choice($.comment, $.node)), ), ), -- cgit v1.2.3