aboutsummaryrefslogtreecommitdiff
path: root/grammar.js
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-09-14 18:10:53 +0200
committerThomas Voss <mail@thomasvoss.com> 2024-09-14 18:10:53 +0200
commitcde4f74ed9dffa1415d9021c343eb599e8866b4d (patch)
tree68cd8ec7ed3458515736ef825abcf39979602338 /grammar.js
parentc549d8b3bbbade9ccb8c208295b35f5afbc7913b (diff)
Update the grammar a bit
Diffstat (limited to 'grammar.js')
-rw-r--r--grammar.js17
1 files changed, 13 insertions, 4 deletions
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)),
),
),