@k-l-lambda/lilylet 0.1.72 → 0.1.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- // AUTO-GENERATED by tools/buildHighlight.ts from source/lilylet/lilylet.jison.
1
+ // AUTO-GENERATED by tools/buildHighlight.ts from source/lilylet/grammar.jison.js.
2
2
  // Do NOT edit by hand. Run `npm run build:highlight` to regenerate.
3
3
  //
4
4
  // Framework-agnostic syntax-highlighting definition for Lilylet, derived from
@@ -10,102 +10,102 @@
10
10
  * applies LONGEST-match (flex semantics), using order only as a tie-breaker.
11
11
  */
12
12
  export const HIGHLIGHT_RULES = [
13
- { re: /\%.*/iy, scope: "comment" },
14
- { re: /\[title/iy, scope: "header" },
15
- { re: /\[subtitle/iy, scope: "header" },
16
- { re: /\[composer/iy, scope: "header" },
17
- { re: /\[arranger/iy, scope: "header" },
18
- { re: /\[lyricist/iy, scope: "header" },
19
- { re: /\[opus/iy, scope: "header" },
20
- { re: /\[instrument\-[A-Za-z0-9_]+(?:\-[A-Za-z0-9_]+)*/iy, scope: "header" },
21
- { re: /\[instrument/iy, scope: "header" },
22
- { re: /\[genre/iy, scope: "header" },
23
- { re: /\[staves/iy, scope: "header" },
24
- { re: /\[auto\-beam/iy, scope: "header" },
25
- { re: /\]/iy, scope: "squareBracket" },
26
- { re: /"[^"]*"/iy, scope: "string" },
27
- { re: /\\clef/iy, scope: "keyword" },
28
- { re: /\\key/iy, scope: "keyword" },
29
- { re: /\\time/iy, scope: "keyword" },
30
- { re: /\\partial/iy, scope: "keyword" },
31
- { re: /\\numericTimeSignature/iy, scope: "keyword" },
32
- { re: /\\defaultTimeSignature/iy, scope: "keyword" },
33
- { re: /\\tempo/iy, scope: "keyword" },
34
- { re: /\\staff/iy, scope: "keyword" },
35
- { re: /\\grace/iy, scope: "grace" },
36
- { re: /\\times/iy, scope: "tuplet" },
37
- { re: /\\tuplet/iy, scope: "tuplet" },
38
- { re: /\\repeat/iy, scope: "keyword" },
39
- { re: /\\ottava/iy, scope: "keyword" },
40
- { re: /\\stemUp/iy, scope: "stem" },
41
- { re: /\\stemDown/iy, scope: "stem" },
42
- { re: /\\stemNeutral/iy, scope: "stem" },
43
- { re: /\\major/iy, scope: "mode" },
44
- { re: /\\minor/iy, scope: "mode" },
45
- { re: /\\sustainOn/iy, scope: "pedal" },
46
- { re: /\\sustainOff/iy, scope: "pedal" },
47
- { re: /\\bar/iy, scope: "keyword" },
48
- { re: /\\coda/iy, scope: "navigation" },
49
- { re: /\\segno/iy, scope: "navigation" },
50
- { re: /\\chords/iy, scope: "keyword" },
51
- { re: /\\markup/iy, scope: "markup" },
52
- { re: /\\</iy, scope: "hairpin" },
53
- { re: /\\>/iy, scope: "hairpin" },
54
- { re: /\\!/iy, scope: "hairpin" },
55
- { re: /\\staccato/iy, scope: "articulation" },
56
- { re: /\\staccatissimo/iy, scope: "articulation" },
57
- { re: /\\tenuto/iy, scope: "articulation" },
58
- { re: /\\marcato/iy, scope: "articulation" },
59
- { re: /\\accent/iy, scope: "articulation" },
60
- { re: /\\portato/iy, scope: "articulation" },
61
- { re: /\\trill/iy, scope: "ornament" },
62
- { re: /\\turn/iy, scope: "ornament" },
63
- { re: /\\mordent/iy, scope: "ornament" },
64
- { re: /\\prall/iy, scope: "ornament" },
65
- { re: /\\fermata/iy, scope: "ornament" },
66
- { re: /\\shortfermata/iy, scope: "ornament" },
67
- { re: /\\arpeggio/iy, scope: "ornament" },
68
- { re: /\\ppp/iy, scope: "dynamic" },
69
- { re: /\\pp/iy, scope: "dynamic" },
70
- { re: /\\mp/iy, scope: "dynamic" },
71
- { re: /\\mf/iy, scope: "dynamic" },
72
- { re: /\\fff/iy, scope: "dynamic" },
73
- { re: /\\ff/iy, scope: "dynamic" },
74
- { re: /\\sfz/iy, scope: "dynamic" },
75
- { re: /\\rfz/iy, scope: "dynamic" },
76
- { re: /\\sf/iy, scope: "dynamic" },
77
- { re: /\\fp/iy, scope: "dynamic" },
78
- { re: /\\p/iy, scope: "dynamic" },
79
- { re: /\\f/iy, scope: "dynamic" },
80
- { re: /\\rest/iy, scope: "rest" },
81
- { re: /\\\\\\/iy, scope: "separator" },
82
- { re: /\\\\/iy, scope: "separator" },
83
- { re: /tremolo/iy, scope: "keyword" },
84
- { re: /[a-g](ss|ff|s|f)?/iy, scope: "pitch" },
85
- { re: /'/iy, scope: "octave" },
86
- { re: /,/iy, scope: "octave" },
87
- { re: /[0-9]+/iy, scope: "number" },
88
- { re: /\//iy, scope: "operator" },
89
- { re: /#/iy, scope: "punctuation" },
90
- { re: /\{/iy, scope: "brace" },
91
- { re: /\}/iy, scope: "brace" },
92
- { re: /</iy, scope: "chordBracket" },
93
- { re: />/iy, scope: "chordBracket" },
94
- { re: /\|/iy, scope: "bar" },
95
- { re: /\[/iy, scope: "squareBracket" },
96
- { re: /\]/iy, scope: "squareBracket" },
97
- { re: /\(/iy, scope: "paren" },
98
- { re: /\)/iy, scope: "paren" },
99
- { re: /~/iy, scope: "tie" },
100
- { re: /\./iy, scope: "punctuation" },
101
- { re: /-/iy, scope: "punctuation" },
102
- { re: /[_]/iy, scope: "punctuation" },
103
- { re: /\^/iy, scope: "punctuation" },
104
- { re: /!/iy, scope: "punctuation" },
105
- { re: /:/iy, scope: "operator" },
106
- { re: /=/iy, scope: "operator" },
107
- { re: /[rR]/iy, scope: "rest" },
108
- { re: /[sS]/iy, scope: "rest" },
13
+ { re: /(?:%.*)/iy, scope: "comment" },
14
+ { re: /(?:\[title\b)/iy, scope: "header" },
15
+ { re: /(?:\[subtitle\b)/iy, scope: "header" },
16
+ { re: /(?:\[composer\b)/iy, scope: "header" },
17
+ { re: /(?:\[arranger\b)/iy, scope: "header" },
18
+ { re: /(?:\[lyricist\b)/iy, scope: "header" },
19
+ { re: /(?:\[opus\b)/iy, scope: "header" },
20
+ { re: /(?:\[instrument-[A-Za-z0-9_]+(?:-[A-Za-z0-9_]+)*)/iy, scope: "header" },
21
+ { re: /(?:\[instrument\b)/iy, scope: "header" },
22
+ { re: /(?:\[genre\b)/iy, scope: "header" },
23
+ { re: /(?:\[staves\b)/iy, scope: "header" },
24
+ { re: /(?:\[auto-beam\b)/iy, scope: "header" },
25
+ { re: /(?:\])/iy, scope: "squareBracket" },
26
+ { re: /(?:"[^"]*")/iy, scope: "string" },
27
+ { re: /(?:\\clef\b)/iy, scope: "keyword" },
28
+ { re: /(?:\\key\b)/iy, scope: "keyword" },
29
+ { re: /(?:\\time\b)/iy, scope: "keyword" },
30
+ { re: /(?:\\partial\b)/iy, scope: "keyword" },
31
+ { re: /(?:\\numericTimeSignature\b)/iy, scope: "keyword" },
32
+ { re: /(?:\\defaultTimeSignature\b)/iy, scope: "keyword" },
33
+ { re: /(?:\\tempo\b)/iy, scope: "keyword" },
34
+ { re: /(?:\\staff\b)/iy, scope: "keyword" },
35
+ { re: /(?:\\grace\b)/iy, scope: "grace" },
36
+ { re: /(?:\\times\b)/iy, scope: "tuplet" },
37
+ { re: /(?:\\tuplet\b)/iy, scope: "tuplet" },
38
+ { re: /(?:\\repeat\b)/iy, scope: "keyword" },
39
+ { re: /(?:\\ottava\b)/iy, scope: "keyword" },
40
+ { re: /(?:\\stemUp\b)/iy, scope: "stem" },
41
+ { re: /(?:\\stemDown\b)/iy, scope: "stem" },
42
+ { re: /(?:\\stemNeutral\b)/iy, scope: "stem" },
43
+ { re: /(?:\\major\b)/iy, scope: "mode" },
44
+ { re: /(?:\\minor\b)/iy, scope: "mode" },
45
+ { re: /(?:\\sustainOn\b)/iy, scope: "pedal" },
46
+ { re: /(?:\\sustainOff\b)/iy, scope: "pedal" },
47
+ { re: /(?:\\bar\b)/iy, scope: "keyword" },
48
+ { re: /(?:\\coda\b)/iy, scope: "navigation" },
49
+ { re: /(?:\\segno\b)/iy, scope: "navigation" },
50
+ { re: /(?:\\chords\b)/iy, scope: "keyword" },
51
+ { re: /(?:\\markup\b)/iy, scope: "markup" },
52
+ { re: /(?:\\<)/iy, scope: "hairpin" },
53
+ { re: /(?:\\>)/iy, scope: "hairpin" },
54
+ { re: /(?:\\!)/iy, scope: "hairpin" },
55
+ { re: /(?:\\staccato\b)/iy, scope: "articulation" },
56
+ { re: /(?:\\staccatissimo\b)/iy, scope: "articulation" },
57
+ { re: /(?:\\tenuto\b)/iy, scope: "articulation" },
58
+ { re: /(?:\\marcato\b)/iy, scope: "articulation" },
59
+ { re: /(?:\\accent\b)/iy, scope: "articulation" },
60
+ { re: /(?:\\portato\b)/iy, scope: "articulation" },
61
+ { re: /(?:\\trill\b)/iy, scope: "ornament" },
62
+ { re: /(?:\\turn\b)/iy, scope: "ornament" },
63
+ { re: /(?:\\mordent\b)/iy, scope: "ornament" },
64
+ { re: /(?:\\prall\b)/iy, scope: "ornament" },
65
+ { re: /(?:\\fermata\b)/iy, scope: "ornament" },
66
+ { re: /(?:\\shortfermata\b)/iy, scope: "ornament" },
67
+ { re: /(?:\\arpeggio\b)/iy, scope: "ornament" },
68
+ { re: /(?:\\ppp\b)/iy, scope: "dynamic" },
69
+ { re: /(?:\\pp\b)/iy, scope: "dynamic" },
70
+ { re: /(?:\\mp\b)/iy, scope: "dynamic" },
71
+ { re: /(?:\\mf\b)/iy, scope: "dynamic" },
72
+ { re: /(?:\\fff\b)/iy, scope: "dynamic" },
73
+ { re: /(?:\\ff\b)/iy, scope: "dynamic" },
74
+ { re: /(?:\\sfz\b)/iy, scope: "dynamic" },
75
+ { re: /(?:\\rfz\b)/iy, scope: "dynamic" },
76
+ { re: /(?:\\sf\b)/iy, scope: "dynamic" },
77
+ { re: /(?:\\fp\b)/iy, scope: "dynamic" },
78
+ { re: /(?:\\p\b)/iy, scope: "dynamic" },
79
+ { re: /(?:\\f)/iy, scope: "dynamic" },
80
+ { re: /(?:\\rest\b)/iy, scope: "rest" },
81
+ { re: /(?:\\\\\\)/iy, scope: "separator" },
82
+ { re: /(?:\\\\)/iy, scope: "separator" },
83
+ { re: /(?:tremolo\b)/iy, scope: "keyword" },
84
+ { re: /(?:[a-g](ss|ff|s|f)?)/iy, scope: "pitch" },
85
+ { re: /(?:')/iy, scope: "octave" },
86
+ { re: /(?:,)/iy, scope: "octave" },
87
+ { re: /(?:[0-9]+)/iy, scope: "number" },
88
+ { re: /(?:\/)/iy, scope: "operator" },
89
+ { re: /(?:#)/iy, scope: "punctuation" },
90
+ { re: /(?:\{)/iy, scope: "brace" },
91
+ { re: /(?:\})/iy, scope: "brace" },
92
+ { re: /(?:<)/iy, scope: "chordBracket" },
93
+ { re: /(?:>)/iy, scope: "chordBracket" },
94
+ { re: /(?:\|)/iy, scope: "bar" },
95
+ { re: /(?:\[)/iy, scope: "squareBracket" },
96
+ { re: /(?:\])/iy, scope: "squareBracket" },
97
+ { re: /(?:\()/iy, scope: "paren" },
98
+ { re: /(?:\))/iy, scope: "paren" },
99
+ { re: /(?:~)/iy, scope: "tie" },
100
+ { re: /(?:\.)/iy, scope: "punctuation" },
101
+ { re: /(?:-)/iy, scope: "punctuation" },
102
+ { re: /(?:[_])/iy, scope: "punctuation" },
103
+ { re: /(?:\^)/iy, scope: "punctuation" },
104
+ { re: /(?:!)/iy, scope: "punctuation" },
105
+ { re: /(?::)/iy, scope: "operator" },
106
+ { re: /(?:=)/iy, scope: "operator" },
107
+ { re: /(?:[rR])/iy, scope: "rest" },
108
+ { re: /(?:[sS])/iy, scope: "rest" },
109
109
  ];
110
110
  /**
111
111
  * Match a single token at `pos` in `line` using longest-match. Returns the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@k-l-lambda/lilylet",
3
- "version": "0.1.72",
3
+ "version": "0.1.73",
4
4
  "description": "Lilylet is a lilyopnd-like sheet music language designed for Markdown rendering and symbolic music representation in AIGC applications.",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -1,4 +1,4 @@
1
- // AUTO-GENERATED by tools/buildHighlight.ts from source/lilylet/lilylet.jison.
1
+ // AUTO-GENERATED by tools/buildHighlight.ts from source/lilylet/grammar.jison.js.
2
2
  // Do NOT edit by hand. Run `npm run build:highlight` to regenerate.
3
3
  //
4
4
  // Framework-agnostic syntax-highlighting definition for Lilylet, derived from
@@ -56,102 +56,102 @@ export interface HighlightToken {
56
56
  * applies LONGEST-match (flex semantics), using order only as a tie-breaker.
57
57
  */
58
58
  export const HIGHLIGHT_RULES: HighlightRule[] = [
59
- { re: /\%.*/iy, scope: "comment" },
60
- { re: /\[title/iy, scope: "header" },
61
- { re: /\[subtitle/iy, scope: "header" },
62
- { re: /\[composer/iy, scope: "header" },
63
- { re: /\[arranger/iy, scope: "header" },
64
- { re: /\[lyricist/iy, scope: "header" },
65
- { re: /\[opus/iy, scope: "header" },
66
- { re: /\[instrument\-[A-Za-z0-9_]+(?:\-[A-Za-z0-9_]+)*/iy, scope: "header" },
67
- { re: /\[instrument/iy, scope: "header" },
68
- { re: /\[genre/iy, scope: "header" },
69
- { re: /\[staves/iy, scope: "header" },
70
- { re: /\[auto\-beam/iy, scope: "header" },
71
- { re: /\]/iy, scope: "squareBracket" },
72
- { re: /"[^"]*"/iy, scope: "string" },
73
- { re: /\\clef/iy, scope: "keyword" },
74
- { re: /\\key/iy, scope: "keyword" },
75
- { re: /\\time/iy, scope: "keyword" },
76
- { re: /\\partial/iy, scope: "keyword" },
77
- { re: /\\numericTimeSignature/iy, scope: "keyword" },
78
- { re: /\\defaultTimeSignature/iy, scope: "keyword" },
79
- { re: /\\tempo/iy, scope: "keyword" },
80
- { re: /\\staff/iy, scope: "keyword" },
81
- { re: /\\grace/iy, scope: "grace" },
82
- { re: /\\times/iy, scope: "tuplet" },
83
- { re: /\\tuplet/iy, scope: "tuplet" },
84
- { re: /\\repeat/iy, scope: "keyword" },
85
- { re: /\\ottava/iy, scope: "keyword" },
86
- { re: /\\stemUp/iy, scope: "stem" },
87
- { re: /\\stemDown/iy, scope: "stem" },
88
- { re: /\\stemNeutral/iy, scope: "stem" },
89
- { re: /\\major/iy, scope: "mode" },
90
- { re: /\\minor/iy, scope: "mode" },
91
- { re: /\\sustainOn/iy, scope: "pedal" },
92
- { re: /\\sustainOff/iy, scope: "pedal" },
93
- { re: /\\bar/iy, scope: "keyword" },
94
- { re: /\\coda/iy, scope: "navigation" },
95
- { re: /\\segno/iy, scope: "navigation" },
96
- { re: /\\chords/iy, scope: "keyword" },
97
- { re: /\\markup/iy, scope: "markup" },
98
- { re: /\\</iy, scope: "hairpin" },
99
- { re: /\\>/iy, scope: "hairpin" },
100
- { re: /\\!/iy, scope: "hairpin" },
101
- { re: /\\staccato/iy, scope: "articulation" },
102
- { re: /\\staccatissimo/iy, scope: "articulation" },
103
- { re: /\\tenuto/iy, scope: "articulation" },
104
- { re: /\\marcato/iy, scope: "articulation" },
105
- { re: /\\accent/iy, scope: "articulation" },
106
- { re: /\\portato/iy, scope: "articulation" },
107
- { re: /\\trill/iy, scope: "ornament" },
108
- { re: /\\turn/iy, scope: "ornament" },
109
- { re: /\\mordent/iy, scope: "ornament" },
110
- { re: /\\prall/iy, scope: "ornament" },
111
- { re: /\\fermata/iy, scope: "ornament" },
112
- { re: /\\shortfermata/iy, scope: "ornament" },
113
- { re: /\\arpeggio/iy, scope: "ornament" },
114
- { re: /\\ppp/iy, scope: "dynamic" },
115
- { re: /\\pp/iy, scope: "dynamic" },
116
- { re: /\\mp/iy, scope: "dynamic" },
117
- { re: /\\mf/iy, scope: "dynamic" },
118
- { re: /\\fff/iy, scope: "dynamic" },
119
- { re: /\\ff/iy, scope: "dynamic" },
120
- { re: /\\sfz/iy, scope: "dynamic" },
121
- { re: /\\rfz/iy, scope: "dynamic" },
122
- { re: /\\sf/iy, scope: "dynamic" },
123
- { re: /\\fp/iy, scope: "dynamic" },
124
- { re: /\\p/iy, scope: "dynamic" },
125
- { re: /\\f/iy, scope: "dynamic" },
126
- { re: /\\rest/iy, scope: "rest" },
127
- { re: /\\\\\\/iy, scope: "separator" },
128
- { re: /\\\\/iy, scope: "separator" },
129
- { re: /tremolo/iy, scope: "keyword" },
130
- { re: /[a-g](ss|ff|s|f)?/iy, scope: "pitch" },
131
- { re: /'/iy, scope: "octave" },
132
- { re: /,/iy, scope: "octave" },
133
- { re: /[0-9]+/iy, scope: "number" },
134
- { re: /\//iy, scope: "operator" },
135
- { re: /#/iy, scope: "punctuation" },
136
- { re: /\{/iy, scope: "brace" },
137
- { re: /\}/iy, scope: "brace" },
138
- { re: /</iy, scope: "chordBracket" },
139
- { re: />/iy, scope: "chordBracket" },
140
- { re: /\|/iy, scope: "bar" },
141
- { re: /\[/iy, scope: "squareBracket" },
142
- { re: /\]/iy, scope: "squareBracket" },
143
- { re: /\(/iy, scope: "paren" },
144
- { re: /\)/iy, scope: "paren" },
145
- { re: /~/iy, scope: "tie" },
146
- { re: /\./iy, scope: "punctuation" },
147
- { re: /-/iy, scope: "punctuation" },
148
- { re: /[_]/iy, scope: "punctuation" },
149
- { re: /\^/iy, scope: "punctuation" },
150
- { re: /!/iy, scope: "punctuation" },
151
- { re: /:/iy, scope: "operator" },
152
- { re: /=/iy, scope: "operator" },
153
- { re: /[rR]/iy, scope: "rest" },
154
- { re: /[sS]/iy, scope: "rest" },
59
+ { re: /(?:%.*)/iy, scope: "comment" },
60
+ { re: /(?:\[title\b)/iy, scope: "header" },
61
+ { re: /(?:\[subtitle\b)/iy, scope: "header" },
62
+ { re: /(?:\[composer\b)/iy, scope: "header" },
63
+ { re: /(?:\[arranger\b)/iy, scope: "header" },
64
+ { re: /(?:\[lyricist\b)/iy, scope: "header" },
65
+ { re: /(?:\[opus\b)/iy, scope: "header" },
66
+ { re: /(?:\[instrument-[A-Za-z0-9_]+(?:-[A-Za-z0-9_]+)*)/iy, scope: "header" },
67
+ { re: /(?:\[instrument\b)/iy, scope: "header" },
68
+ { re: /(?:\[genre\b)/iy, scope: "header" },
69
+ { re: /(?:\[staves\b)/iy, scope: "header" },
70
+ { re: /(?:\[auto-beam\b)/iy, scope: "header" },
71
+ { re: /(?:\])/iy, scope: "squareBracket" },
72
+ { re: /(?:"[^"]*")/iy, scope: "string" },
73
+ { re: /(?:\\clef\b)/iy, scope: "keyword" },
74
+ { re: /(?:\\key\b)/iy, scope: "keyword" },
75
+ { re: /(?:\\time\b)/iy, scope: "keyword" },
76
+ { re: /(?:\\partial\b)/iy, scope: "keyword" },
77
+ { re: /(?:\\numericTimeSignature\b)/iy, scope: "keyword" },
78
+ { re: /(?:\\defaultTimeSignature\b)/iy, scope: "keyword" },
79
+ { re: /(?:\\tempo\b)/iy, scope: "keyword" },
80
+ { re: /(?:\\staff\b)/iy, scope: "keyword" },
81
+ { re: /(?:\\grace\b)/iy, scope: "grace" },
82
+ { re: /(?:\\times\b)/iy, scope: "tuplet" },
83
+ { re: /(?:\\tuplet\b)/iy, scope: "tuplet" },
84
+ { re: /(?:\\repeat\b)/iy, scope: "keyword" },
85
+ { re: /(?:\\ottava\b)/iy, scope: "keyword" },
86
+ { re: /(?:\\stemUp\b)/iy, scope: "stem" },
87
+ { re: /(?:\\stemDown\b)/iy, scope: "stem" },
88
+ { re: /(?:\\stemNeutral\b)/iy, scope: "stem" },
89
+ { re: /(?:\\major\b)/iy, scope: "mode" },
90
+ { re: /(?:\\minor\b)/iy, scope: "mode" },
91
+ { re: /(?:\\sustainOn\b)/iy, scope: "pedal" },
92
+ { re: /(?:\\sustainOff\b)/iy, scope: "pedal" },
93
+ { re: /(?:\\bar\b)/iy, scope: "keyword" },
94
+ { re: /(?:\\coda\b)/iy, scope: "navigation" },
95
+ { re: /(?:\\segno\b)/iy, scope: "navigation" },
96
+ { re: /(?:\\chords\b)/iy, scope: "keyword" },
97
+ { re: /(?:\\markup\b)/iy, scope: "markup" },
98
+ { re: /(?:\\<)/iy, scope: "hairpin" },
99
+ { re: /(?:\\>)/iy, scope: "hairpin" },
100
+ { re: /(?:\\!)/iy, scope: "hairpin" },
101
+ { re: /(?:\\staccato\b)/iy, scope: "articulation" },
102
+ { re: /(?:\\staccatissimo\b)/iy, scope: "articulation" },
103
+ { re: /(?:\\tenuto\b)/iy, scope: "articulation" },
104
+ { re: /(?:\\marcato\b)/iy, scope: "articulation" },
105
+ { re: /(?:\\accent\b)/iy, scope: "articulation" },
106
+ { re: /(?:\\portato\b)/iy, scope: "articulation" },
107
+ { re: /(?:\\trill\b)/iy, scope: "ornament" },
108
+ { re: /(?:\\turn\b)/iy, scope: "ornament" },
109
+ { re: /(?:\\mordent\b)/iy, scope: "ornament" },
110
+ { re: /(?:\\prall\b)/iy, scope: "ornament" },
111
+ { re: /(?:\\fermata\b)/iy, scope: "ornament" },
112
+ { re: /(?:\\shortfermata\b)/iy, scope: "ornament" },
113
+ { re: /(?:\\arpeggio\b)/iy, scope: "ornament" },
114
+ { re: /(?:\\ppp\b)/iy, scope: "dynamic" },
115
+ { re: /(?:\\pp\b)/iy, scope: "dynamic" },
116
+ { re: /(?:\\mp\b)/iy, scope: "dynamic" },
117
+ { re: /(?:\\mf\b)/iy, scope: "dynamic" },
118
+ { re: /(?:\\fff\b)/iy, scope: "dynamic" },
119
+ { re: /(?:\\ff\b)/iy, scope: "dynamic" },
120
+ { re: /(?:\\sfz\b)/iy, scope: "dynamic" },
121
+ { re: /(?:\\rfz\b)/iy, scope: "dynamic" },
122
+ { re: /(?:\\sf\b)/iy, scope: "dynamic" },
123
+ { re: /(?:\\fp\b)/iy, scope: "dynamic" },
124
+ { re: /(?:\\p\b)/iy, scope: "dynamic" },
125
+ { re: /(?:\\f)/iy, scope: "dynamic" },
126
+ { re: /(?:\\rest\b)/iy, scope: "rest" },
127
+ { re: /(?:\\\\\\)/iy, scope: "separator" },
128
+ { re: /(?:\\\\)/iy, scope: "separator" },
129
+ { re: /(?:tremolo\b)/iy, scope: "keyword" },
130
+ { re: /(?:[a-g](ss|ff|s|f)?)/iy, scope: "pitch" },
131
+ { re: /(?:')/iy, scope: "octave" },
132
+ { re: /(?:,)/iy, scope: "octave" },
133
+ { re: /(?:[0-9]+)/iy, scope: "number" },
134
+ { re: /(?:\/)/iy, scope: "operator" },
135
+ { re: /(?:#)/iy, scope: "punctuation" },
136
+ { re: /(?:\{)/iy, scope: "brace" },
137
+ { re: /(?:\})/iy, scope: "brace" },
138
+ { re: /(?:<)/iy, scope: "chordBracket" },
139
+ { re: /(?:>)/iy, scope: "chordBracket" },
140
+ { re: /(?:\|)/iy, scope: "bar" },
141
+ { re: /(?:\[)/iy, scope: "squareBracket" },
142
+ { re: /(?:\])/iy, scope: "squareBracket" },
143
+ { re: /(?:\()/iy, scope: "paren" },
144
+ { re: /(?:\))/iy, scope: "paren" },
145
+ { re: /(?:~)/iy, scope: "tie" },
146
+ { re: /(?:\.)/iy, scope: "punctuation" },
147
+ { re: /(?:-)/iy, scope: "punctuation" },
148
+ { re: /(?:[_])/iy, scope: "punctuation" },
149
+ { re: /(?:\^)/iy, scope: "punctuation" },
150
+ { re: /(?:!)/iy, scope: "punctuation" },
151
+ { re: /(?::)/iy, scope: "operator" },
152
+ { re: /(?:=)/iy, scope: "operator" },
153
+ { re: /(?:[rR])/iy, scope: "rest" },
154
+ { re: /(?:[sS])/iy, scope: "rest" },
155
155
  ];
156
156
 
157
157
  /**