@bablr/language-en-regex-vm-pattern 0.5.0 → 0.6.0

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.
package/lib/grammar.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /* @macrome
2
2
  * @generatedby @bablr/macrome-generator-bablr
3
- * @generatedfrom ./grammar.macro.js#0192cf3b558fb962d2a5953bdecaa0d4b13288a1
3
+ * @generatedfrom ./grammar.macro.js#b8b1884da489877bbffd6722d41a244d00a0d1ce
4
4
  * This file is autogenerated. Please do not edit it directly.
5
5
  * When editing run `npx macrome watch` then change the file this is generated from.
6
6
  */
@@ -12,7 +12,7 @@ let _initProto, _FlagsDecs, _GroupDecs, _AssertionDecs, _StartOfInputAssertionDe
12
12
  import { Node, CoveredBy, InjectFrom, Attributes, AllowEmpty } from '@bablr/helpers/decorators';
13
13
  import objectEntries from 'iter-tools-es/methods/object-entries';
14
14
  import * as Shared from '@bablr/helpers/productions';
15
- import { buildString, buildBoolean, buildNumber, buildNull } from '@bablr/agast-vm-helpers';
15
+ import { buildString, buildBoolean, buildNumber, buildNullTag } from '@bablr/agast-vm-helpers';
16
16
  export const canonicalURL = 'https://bablr.org/languages/core/en/bablr-regex-pattern';
17
17
  export const dependencies = {};
18
18
  const escapables = new Map(objectEntries({
@@ -32,18 +32,18 @@ const flagCharacters = {
32
32
  const unique = flags => flags.length === new Set(flags).size;
33
33
  const getSpecialPattern = span => {
34
34
  if (span === 'Pattern') {
35
- return _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
35
+ return _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
36
36
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
37
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
38
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
37
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
38
+ elements: [_t.node(_l.Regex, "CharacterClass", [20, [[_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], [_t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`], [_t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`], [_t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`]]], {
39
39
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
40
- elements: [_t.node(_l.Regex, "Character", [_t.lit("*")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("+")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("{")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("}")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("[")], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\]")], {}, {
40
+ elements: [16, [[_t.node(_l.Regex, "Character", [_t.lit("*")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("+")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("{")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("}")], {}, {})], [_t.node(_l.Regex, "Character", [_t.lit("[")], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\]")], {}, {
41
41
  cooked: "]"
42
- }))], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("(")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit(")")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit(".")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("^")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("$")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("|")], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\n")], {}, {
42
+ }))], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("(")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit(")")], {}, {})], [_t.node(_l.Regex, "Character", [_t.lit(".")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("^")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("$")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("|")], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\n")], {}, {
43
43
  cooked: "\n"
44
- }))], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
44
+ }))], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\\\")], {}, {
45
45
  cooked: "\\"
46
- }))], {}, {})],
46
+ }))], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("<")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit(">")], {}, {})]]],
47
47
  closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
48
48
  }, {
49
49
  negate: false
@@ -52,14 +52,14 @@ const getSpecialPattern = span => {
52
52
  closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
53
53
  }, {});
54
54
  } else if (span === 'CharacterClass') {
55
- return _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
55
+ return _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
56
56
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
57
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
58
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
57
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
58
+ elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
59
59
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
60
- elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\]")], {}, {
60
+ elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\]")], {}, {
61
61
  cooked: "]"
62
- }))], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
62
+ }))], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\\\")], {}, {
63
63
  cooked: "\\"
64
64
  }))], {}, {})],
65
65
  closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
@@ -83,38 +83,41 @@ export const grammar = class RegexGrammar {
83
83
  *[(_FlagsDecs = [Attributes(Object.keys(flagCharacters)), AllowEmpty, Node], _GroupDecs = [CoveredBy('Element'), Node], _AssertionDecs = CoveredBy('Element'), _StartOfInputAssertionDecs = [CoveredBy('Assertion'), Node], _EndOfInputAssertionDecs = [CoveredBy('Assertion'), Node], _WordBoundaryAssertionDecs = [Attributes(['negate']), CoveredBy('Assertion'), Node], _GapDecs = [CoveredBy('Assertion'), Node], _CharacterDecs = [CoveredBy('Element'), CoveredBy('CharacterClassElement'), Node], _CharacterClassDecs = [Attributes(['negate']), CoveredBy('Element'), Node], _CharacterClassRangeDecs = [CoveredBy('CharacterClassElement'), Node], _CharacterSetDecs = CoveredBy('Element'), _AnyCharacterSetDecs = [CoveredBy('CharacterSet'), Node], _DigitCharacterSetDecs = [Attributes(['negate']), CoveredBy('CharacterSet'), Node], _SpaceCharacterSetDecs = [Attributes(['negate']), CoveredBy('CharacterSet'), Node], _WordCharacterSetDecs = [Attributes(['negate']), CoveredBy('CharacterSet'), Node], _QuantifierDecs = [Attributes(['min', 'max']), Node], _EscapeSequenceDecs = [Attributes(['cooked']), Node], _AnyDecs = InjectFrom(Shared), _KeywordDecs = [Node, InjectFrom(Shared)], _PunctuatorDecs = [Node, InjectFrom(Shared)], "Pattern")]() {
84
84
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
85
85
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
86
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
86
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
87
87
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
88
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
89
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
90
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
91
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
92
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
93
- }, {}),
94
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
95
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
96
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
97
- content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
98
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
99
- }, {}),
100
- attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
101
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balanced")], {}, {}),
102
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
103
- value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
88
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
89
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [14, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {}))], [_t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.arr()], [_t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`]]], {
90
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
91
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
92
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
93
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
94
+ }, {}),
95
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
96
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
104
97
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
105
98
  content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
106
99
  closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
107
- }, {})
108
- }, {}), _t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
109
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balancedSpan")], {}, {}),
110
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
111
- value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
112
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
113
- content: _t.node(_l.CSTML, "Content", [_t.lit("Pattern")], {}, {}),
114
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
115
- }, {})
116
- }, {})],
117
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
100
+ }, {}),
101
+ attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
102
+ key: _t.s_node(_l.Spamex, "Identifier", "balanced"),
103
+ mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
104
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
105
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
106
+ content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
107
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
108
+ }, {})
109
+ }, {}), _t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
110
+ key: _t.s_node(_l.Spamex, "Identifier", "balancedSpan"),
111
+ mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
112
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
113
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
114
+ content: _t.node(_l.CSTML, "Content", [_t.lit("Pattern")], {}, {}),
115
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
116
+ }, {})
117
+ }, {})],
118
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
119
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
120
+ }, {})
118
121
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
119
122
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
120
123
  content: _t.node(_l.CSTML, "Content", [_t.lit("openToken")], {}, {}),
@@ -125,37 +128,43 @@ export const grammar = class RegexGrammar {
125
128
  }, {});
126
129
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
127
130
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
128
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
131
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
129
132
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
130
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
131
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
132
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
133
- type: _t.s_node(_l.Spamex, "Identifier", "Alternatives"),
134
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
133
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
134
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
135
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
136
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
137
+ type: _t.s_node(_l.Spamex, "Identifier", "Alternatives"),
138
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
139
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
140
+ }, {})
135
141
  }, {})],
136
142
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
137
143
  }, {})
138
144
  }, {});
139
145
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
140
146
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
141
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
147
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
142
148
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
143
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
144
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
145
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
146
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
147
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
148
- }, {}),
149
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
150
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
151
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
152
- content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
153
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
154
- }, {}),
155
- attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
156
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balancer")], {}, {})
157
- }, {})],
158
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
149
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
150
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [12, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {}))], [_t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.arr(), _t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`]]], {
151
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
152
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
153
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
154
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
155
+ }, {}),
156
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
157
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
158
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
159
+ content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
160
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
161
+ }, {}),
162
+ attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
163
+ key: _t.s_node(_l.Spamex, "Identifier", "balancer")
164
+ }, {})],
165
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
166
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
167
+ }, {})
159
168
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
160
169
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
161
170
  content: _t.node(_l.CSTML, "Content", [_t.lit("closeToken")], {}, {}),
@@ -166,13 +175,16 @@ export const grammar = class RegexGrammar {
166
175
  }, {});
167
176
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
168
177
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
169
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
178
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
170
179
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
171
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
172
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
173
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
174
- type: _t.s_node(_l.Spamex, "Identifier", "Flags"),
175
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
180
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
181
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
182
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
183
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
184
+ type: _t.s_node(_l.Spamex, "Identifier", "Flags"),
185
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
186
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
187
+ }, {})
176
188
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
177
189
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
178
190
  content: _t.node(_l.CSTML, "Content", [_t.lit("flags")], {}, {}),
@@ -187,13 +199,13 @@ export const grammar = class RegexGrammar {
187
199
  }) {
188
200
  const flags = yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
189
201
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
190
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
202
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
191
203
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
192
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
204
+ values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
193
205
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
194
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
206
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
195
207
  elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
196
- element: _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
208
+ element: _t.node(_l.Regex, "CharacterClass", [10, [[_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], [_t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`]]], {
197
209
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
198
210
  elements: [_t.node(_l.Regex, "Character", [_t.lit("g")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("i")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("m")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("s")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("u")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("y")], {}, {})],
199
211
  closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
@@ -221,7 +233,7 @@ export const grammar = class RegexGrammar {
221
233
  if (flagsStr.includes(chr)) {
222
234
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
223
235
  verb: _t.s_node(_l.Instruction, "Identifier", "bindAttribute"),
224
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, ..._interpolateArrayChildren(buildString(name), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
236
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), ..._interpolateArrayChildren(buildString(name), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
225
237
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
226
238
  values: [..._interpolateArray(buildString(name)), _t.node(_l.Instruction, "Boolean", [_t.ref`sigilToken`], {
227
239
  sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "true")
@@ -232,7 +244,7 @@ export const grammar = class RegexGrammar {
232
244
  } else {
233
245
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
234
246
  verb: _t.s_node(_l.Instruction, "Identifier", "bindAttribute"),
235
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, ..._interpolateArrayChildren(buildString(name), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
247
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), ..._interpolateArrayChildren(buildString(name), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
236
248
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
237
249
  values: [..._interpolateArray(buildString(name)), _t.node(_l.Instruction, "Boolean", [_t.ref`sigilToken`], {
238
250
  sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "false")
@@ -245,16 +257,19 @@ export const grammar = class RegexGrammar {
245
257
  for (const flagChr of flagsStr) {
246
258
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
247
259
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
248
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
260
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
249
261
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
250
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
251
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
252
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
253
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
254
- }, {}),
255
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
256
- intrinsicValue: buildString(flagChr),
257
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
262
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
263
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
264
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
265
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
266
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
267
+ }, {}),
268
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
269
+ intrinsicValue: buildString(flagChr),
270
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
271
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
272
+ }, {})
258
273
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
259
274
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
260
275
  content: _t.node(_l.CSTML, "Content", [_t.lit("tokens[]")], {}, {}),
@@ -269,13 +284,16 @@ export const grammar = class RegexGrammar {
269
284
  do {
270
285
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
271
286
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
272
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
287
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
273
288
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
274
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
275
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
276
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
277
- type: _t.s_node(_l.Spamex, "Identifier", "Alternative"),
278
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
289
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
290
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
291
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
292
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
293
+ type: _t.s_node(_l.Spamex, "Identifier", "Alternative"),
294
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
295
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
296
+ }, {})
279
297
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
280
298
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
281
299
  content: _t.node(_l.CSTML, "Content", [_t.lit("alternatives[]")], {}, {}),
@@ -286,21 +304,24 @@ export const grammar = class RegexGrammar {
286
304
  }, {});
287
305
  } while (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
288
306
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
289
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
307
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
290
308
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
291
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
292
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
293
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
294
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
295
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
296
- }, {}),
297
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
298
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
299
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
300
- content: _t.node(_l.CSTML, "Content", [_t.lit("|")], {}, {}),
301
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
302
- }, {}),
303
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
309
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
310
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
311
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
312
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
313
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
314
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
315
+ }, {}),
316
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
317
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
318
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
319
+ content: _t.node(_l.CSTML, "Content", [_t.lit("|")], {}, {}),
320
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
321
+ }, {}),
322
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
323
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
324
+ }, {})
304
325
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
305
326
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
306
327
  content: _t.node(_l.CSTML, "Content", [_t.lit("separators[]")], {}, {}),
@@ -313,13 +334,16 @@ export const grammar = class RegexGrammar {
313
334
  *Alternative() {
314
335
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
315
336
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
316
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
337
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
317
338
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
318
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
319
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
320
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
321
- type: _t.s_node(_l.Spamex, "Identifier", "Elements"),
322
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
339
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
340
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
341
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
342
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
343
+ type: _t.s_node(_l.Spamex, "Identifier", "Elements"),
344
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
345
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
346
+ }, {})
323
347
  }, {})],
324
348
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
325
349
  }, {})
@@ -329,12 +353,12 @@ export const grammar = class RegexGrammar {
329
353
  let matched = false;
330
354
  while (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
331
355
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
332
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
356
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
333
357
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
334
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
358
+ values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
335
359
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
336
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
337
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`negateToken`, _t.ref`elements[]`, _t.ref`closeToken`], {
360
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
361
+ elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`negateToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`closeToken`], {
338
362
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
339
363
  negateToken: _t.s_i_node(_l.Regex, "Keyword", "^"),
340
364
  elements: [_t.node(_l.Regex, "Character", [_t.lit("|")], {}, {})],
@@ -351,15 +375,18 @@ export const grammar = class RegexGrammar {
351
375
  matched = true;
352
376
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
353
377
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
354
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
378
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
355
379
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
356
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
357
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
358
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
359
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
360
- }, {}),
361
- type: _t.s_node(_l.Spamex, "Identifier", "Element"),
362
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
380
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
381
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
382
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
383
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
384
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
385
+ }, {}),
386
+ type: _t.s_node(_l.Spamex, "Identifier", "Element"),
387
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
388
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
389
+ }, {})
363
390
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
364
391
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
365
392
  content: _t.node(_l.CSTML, "Content", [_t.lit("elements[]")], {}, {}),
@@ -371,7 +398,7 @@ export const grammar = class RegexGrammar {
371
398
  }
372
399
  if (!matched) yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
373
400
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
374
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
401
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
375
402
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
376
403
  values: [_t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
377
404
  sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
@@ -387,309 +414,262 @@ export const grammar = class RegexGrammar {
387
414
  *Element() {
388
415
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
389
416
  verb: _t.s_node(_l.Instruction, "Identifier", "guard"),
390
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
391
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
392
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
393
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
394
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
395
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
396
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
397
- }, {}),
398
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
399
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
400
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
401
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
402
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
403
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
404
- elements: [_t.node(_l.Regex, "Character", [_t.lit("*")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("+")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("?")], {}, {})],
405
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
406
- }, {
407
- negate: false
408
- })]
409
- }, {})],
410
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
411
- }, {}),
412
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
413
- }, {})],
414
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
415
- }, {})
416
- }, {});
417
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
418
- verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
419
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
417
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
420
418
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
421
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
422
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
423
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
424
- type: _t.s_node(_l.Spamex, "Identifier", "Any"),
425
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
426
- }, {}), _t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
427
- sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
428
- }, {}), _t.node(_l.Instruction, "Array", [_t.ref`openToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`closeToken`], {
429
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "["),
430
- elements: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
431
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
432
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
433
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
434
- }, {}),
435
- type: _t.s_node(_l.Spamex, "Identifier", "CharacterClass"),
436
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
437
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
438
- content: _t.node(_l.CSTML, "Content", [_t.lit("[")], {}, {}),
439
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
440
- }, {}),
441
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
442
- }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
443
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
444
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
445
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
446
- }, {}),
447
- type: _t.s_node(_l.Spamex, "Identifier", "Group"),
448
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
449
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
450
- content: _t.node(_l.CSTML, "Content", [_t.lit("(?:")], {}, {}),
451
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
452
- }, {}),
453
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
454
- }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
455
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
456
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
457
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
458
- }, {}),
459
- type: _t.s_node(_l.Spamex, "Identifier", "Assertion"),
460
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`separators[]`, _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`], {
461
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
462
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
463
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
464
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
465
- elements: [_t.node(_l.Regex, "Character", [_t.lit("$")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("^")], {}, {})],
466
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
467
- }, {
468
- negate: false
469
- })]
470
- }, {}), _t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`], {
471
- elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
472
- cooked: "\\"
473
- }))], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("b")], {}, {})]
474
- }, {})],
475
- separators: [_t.s_i_node(_l.Regex, "Punctuator", "|")],
476
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
477
- flags: _t.node(_l.Regex, "Flags", [_t.ref`tokens[]`], {
478
- tokens: [_t.s_i_node(_l.Regex, "Keyword", "i")]
479
- }, {
480
- global: false,
481
- ignoreCase: true,
482
- multiline: false,
483
- dotAll: false,
484
- unicode: false,
485
- sticky: false
486
- })
487
- }, {}),
488
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
489
- }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
490
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
491
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
492
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
493
- }, {}),
494
- type: _t.s_node(_l.Spamex, "Identifier", "Gap"),
495
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
496
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
497
- content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
498
- cooked: "\\"
499
- })), _t.lit("g")], {}, {}),
500
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
501
- }, {}),
502
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
503
- }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
419
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
420
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
504
421
  openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
505
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
506
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
422
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
423
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
424
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
507
425
  }, {}),
508
- type: _t.s_node(_l.Spamex, "Identifier", "CharacterSet"),
509
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`separators[]`, _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`], {
426
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
427
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
510
428
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
511
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
512
- elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\.")], {}, {
513
- cooked: "."
514
- }))], {}, {})]
515
- }, {}), _t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`], {
516
- elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
517
- cooked: "\\"
518
- }))], {}, {}), _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
429
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
430
+ elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
519
431
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
520
- elements: [_t.node(_l.Regex, "Character", [_t.lit("d")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("s")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("w")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("p")], {}, {})],
432
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("*")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("+")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("?")], {}, {})],
521
433
  closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
522
434
  }, {
523
435
  negate: false
524
436
  })]
525
437
  }, {})],
526
- separators: [_t.s_i_node(_l.Regex, "Punctuator", "|")],
527
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
528
- flags: _t.node(_l.Regex, "Flags", [_t.ref`tokens[]`], {
529
- tokens: [_t.s_i_node(_l.Regex, "Keyword", "i")]
530
- }, {
531
- global: false,
532
- ignoreCase: true,
533
- multiline: false,
534
- dotAll: false,
535
- unicode: false,
536
- sticky: false
537
- })
538
- }, {}),
539
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
540
- }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
541
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
542
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`, _t.ref`expressionToken`], {
543
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*"),
544
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
438
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
545
439
  }, {}),
546
- type: _t.s_node(_l.Spamex, "Identifier", "Character"),
440
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
547
441
  closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
548
- }, {})],
549
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "]")
442
+ }, {})
550
443
  }, {})],
551
444
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
552
445
  }, {})
553
446
  }, {});
554
- if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
555
- verb: _t.s_node(_l.Instruction, "Identifier", "match"),
556
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
447
+ yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
448
+ verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
449
+ arguments: _t.node(_l.Instruction, "Tuple", [9, [[_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`], [_t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`]]], {
557
450
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
558
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
559
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
560
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
561
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
562
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
563
- elements: [_t.node(_l.Regex, "Character", [_t.lit("*")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("+")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("?")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("{")], {}, {})],
564
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
565
- }, {
566
- negate: false
567
- })]
568
- }, {})],
569
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
570
- }, {})],
571
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
572
- }, {})
573
- }, {})) {
574
- return _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
575
- verb: _t.s_node(_l.Instruction, "Identifier", "holdForMatch"),
576
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
577
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
578
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
451
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
452
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
579
453
  openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
580
454
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
581
- type: _t.s_node(_l.Spamex, "Identifier", "Quantifier"),
455
+ type: _t.s_node(_l.Spamex, "Identifier", "Any"),
456
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
582
457
  closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
583
- }, {})],
584
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
585
- }, {})
586
- }, {});
587
- }
588
- }
589
- *Group() {
590
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
591
- verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
592
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
593
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
594
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
595
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
596
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
597
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
598
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
599
- }, {}),
600
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
601
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
602
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
603
- content: _t.node(_l.CSTML, "Content", [_t.lit("(?:")], {}, {}),
604
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
605
- }, {}),
606
- attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
607
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balanced")], {}, {}),
608
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
609
- value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
610
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
611
- content: _t.node(_l.CSTML, "Content", [_t.lit(")")], {}, {}),
612
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
458
+ }, {})
459
+ }, {}), _t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
460
+ sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
461
+ }, {}), _t.node(_l.Instruction, "Array", [17, [[_t.ref`openToken`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.arr()], [_t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {}))], [_t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {}))], [_t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`closeToken`]]], {
462
+ openToken: _t.s_i_node(_l.Instruction, "Punctuator", "["),
463
+ elements: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
464
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
465
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
466
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
467
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
468
+ }, {}),
469
+ type: _t.s_node(_l.Spamex, "Identifier", "CharacterClass"),
470
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
471
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
472
+ content: _t.node(_l.CSTML, "Content", [_t.lit("[")], {}, {}),
473
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
474
+ }, {}),
475
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
476
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
613
477
  }, {})
614
- }, {})],
615
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
616
- }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
617
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
618
- content: _t.node(_l.CSTML, "Content", [_t.lit("openToken")], {}, {}),
619
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
620
- }, {})],
621
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
622
- }, {})
623
- }, {});
624
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
625
- verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
626
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
627
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
628
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
629
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
630
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
631
- type: _t.s_node(_l.Spamex, "Identifier", "Alternatives"),
632
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
478
+ }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
479
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
480
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
481
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
482
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
483
+ }, {}),
484
+ type: _t.s_node(_l.Spamex, "Identifier", "Group"),
485
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
486
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
487
+ content: _t.node(_l.CSTML, "Content", [_t.lit("(?:")], {}, {}),
488
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
489
+ }, {}),
490
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
491
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
492
+ }, {})
493
+ }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
494
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
495
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
496
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
497
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
498
+ }, {}),
499
+ type: _t.s_node(_l.Spamex, "Identifier", "Assertion"),
500
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [10, [[_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`], [_t.ref`separators[]`, _t.arr(), _t.ref`separators[]`, _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`]]], {
501
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
502
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
503
+ elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
504
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
505
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("$")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("^")], {}, {})],
506
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
507
+ }, {
508
+ negate: false
509
+ })]
510
+ }, {}), _t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`], {
511
+ elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\\\")], {}, {
512
+ cooked: "\\"
513
+ }))], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("b")], {}, {})]
514
+ }, {})],
515
+ separators: [_t.s_i_node(_l.Regex, "Punctuator", "|")],
516
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
517
+ flags: _t.node(_l.Regex, "Flags", [_t.ref`tokens[]`, _t.arr(), _t.ref`tokens[]`], {
518
+ tokens: [_t.s_i_node(_l.Regex, "Keyword", "i")]
519
+ }, {
520
+ global: false,
521
+ ignoreCase: true,
522
+ multiline: false,
523
+ dotAll: false,
524
+ unicode: false,
525
+ sticky: false
526
+ })
527
+ }, {}),
528
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
529
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
530
+ }, {})
531
+ }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
532
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
533
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
534
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
535
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
536
+ }, {}),
537
+ type: _t.s_node(_l.Spamex, "Identifier", "Gap"),
538
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
539
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
540
+ content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
541
+ cooked: "\\"
542
+ })), _t.lit("g")], {}, {}),
543
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
544
+ }, {}),
545
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
546
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
547
+ }, {})
548
+ }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
549
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
550
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
551
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
552
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
553
+ }, {}),
554
+ type: _t.s_node(_l.Spamex, "Identifier", "CharacterSet"),
555
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [10, [[_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`], [_t.ref`separators[]`, _t.arr(), _t.ref`separators[]`, _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`]]], {
556
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
557
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
558
+ elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\.")], {}, {
559
+ cooked: "."
560
+ }))], {}, {})]
561
+ }, {}), _t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`], {
562
+ elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\\\")], {}, {
563
+ cooked: "\\"
564
+ }))], {}, {}), _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
565
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
566
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("d")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("s")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("w")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("p")], {}, {})],
567
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
568
+ }, {
569
+ negate: false
570
+ })]
571
+ }, {})],
572
+ separators: [_t.s_i_node(_l.Regex, "Punctuator", "|")],
573
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
574
+ flags: _t.node(_l.Regex, "Flags", [_t.ref`tokens[]`, _t.arr(), _t.ref`tokens[]`], {
575
+ tokens: [_t.s_i_node(_l.Regex, "Keyword", "i")]
576
+ }, {
577
+ global: false,
578
+ ignoreCase: true,
579
+ multiline: false,
580
+ dotAll: false,
581
+ unicode: false,
582
+ sticky: false
583
+ })
584
+ }, {}),
585
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
586
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
587
+ }, {})
588
+ }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
589
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
590
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
591
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`, _t.ref`expressionToken`], {
592
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*"),
593
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
594
+ }, {}),
595
+ type: _t.s_node(_l.Spamex, "Identifier", "Character"),
596
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
597
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
598
+ }, {})
599
+ }, {})],
600
+ closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "]")
633
601
  }, {})],
634
602
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
635
603
  }, {})
636
604
  }, {});
637
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
638
- verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
639
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
605
+ if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
606
+ verb: _t.s_node(_l.Instruction, "Identifier", "match"),
607
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
640
608
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
641
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
642
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
643
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
644
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
645
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
646
- }, {}),
647
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
648
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
649
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
650
- content: _t.node(_l.CSTML, "Content", [_t.lit(")")], {}, {}),
651
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
652
- }, {}),
653
- attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
654
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balancer")], {}, {})
609
+ values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
610
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
611
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
612
+ elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
613
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
614
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("*")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("+")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("?")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("{")], {}, {})],
615
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
616
+ }, {
617
+ negate: false
618
+ })]
655
619
  }, {})],
656
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
657
- }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
658
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
659
- content: _t.node(_l.CSTML, "Content", [_t.lit("closeToken")], {}, {}),
660
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
620
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
661
621
  }, {})],
662
622
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
663
623
  }, {})
664
- }, {});
624
+ }, {})) {
625
+ return _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
626
+ verb: _t.s_node(_l.Instruction, "Identifier", "holdForMatch"),
627
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
628
+ openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
629
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
630
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
631
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
632
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
633
+ type: _t.s_node(_l.Spamex, "Identifier", "Quantifier"),
634
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
635
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
636
+ }, {})
637
+ }, {})],
638
+ closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
639
+ }, {})
640
+ }, {});
641
+ }
665
642
  }
666
- *CapturingGroup() {
643
+ *Group() {
667
644
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
668
645
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
669
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
646
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
670
647
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
671
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
672
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
673
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
674
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
675
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
676
- }, {}),
677
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
678
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
679
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
680
- content: _t.node(_l.CSTML, "Content", [_t.lit("(")], {}, {}),
681
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
682
- }, {}),
683
- attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
684
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balanced")], {}, {}),
685
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
686
- value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
648
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
649
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [12, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {}))], [_t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.arr(), _t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`]]], {
650
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
651
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
652
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
653
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
654
+ }, {}),
655
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
656
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
687
657
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
688
- content: _t.node(_l.CSTML, "Content", [_t.lit(")")], {}, {}),
658
+ content: _t.node(_l.CSTML, "Content", [_t.lit("(?:")], {}, {}),
689
659
  closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
690
- }, {})
691
- }, {})],
692
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
660
+ }, {}),
661
+ attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
662
+ key: _t.s_node(_l.Spamex, "Identifier", "balanced"),
663
+ mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
664
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
665
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
666
+ content: _t.node(_l.CSTML, "Content", [_t.lit(")")], {}, {}),
667
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
668
+ }, {})
669
+ }, {})],
670
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
671
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
672
+ }, {})
693
673
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
694
674
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
695
675
  content: _t.node(_l.CSTML, "Content", [_t.lit("openToken")], {}, {}),
@@ -700,37 +680,43 @@ export const grammar = class RegexGrammar {
700
680
  }, {});
701
681
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
702
682
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
703
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
683
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
704
684
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
705
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
706
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
707
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
708
- type: _t.s_node(_l.Spamex, "Identifier", "Alternatives"),
709
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
685
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
686
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
687
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
688
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
689
+ type: _t.s_node(_l.Spamex, "Identifier", "Alternatives"),
690
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
691
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
692
+ }, {})
710
693
  }, {})],
711
694
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
712
695
  }, {})
713
696
  }, {});
714
697
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
715
698
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
716
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
699
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
717
700
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
718
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
719
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
720
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
721
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
722
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
723
- }, {}),
724
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
725
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
726
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
727
- content: _t.node(_l.CSTML, "Content", [_t.lit(")")], {}, {}),
728
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
729
- }, {}),
730
- attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
731
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balancer")], {}, {})
732
- }, {})],
733
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
701
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
702
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [12, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {}))], [_t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.arr(), _t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`]]], {
703
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
704
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
705
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
706
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
707
+ }, {}),
708
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
709
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
710
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
711
+ content: _t.node(_l.CSTML, "Content", [_t.lit(")")], {}, {}),
712
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
713
+ }, {}),
714
+ attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
715
+ key: _t.s_node(_l.Spamex, "Identifier", "balancer")
716
+ }, {})],
717
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
718
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
719
+ }, {})
734
720
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
735
721
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
736
722
  content: _t.node(_l.CSTML, "Content", [_t.lit("closeToken")], {}, {}),
@@ -740,71 +726,169 @@ export const grammar = class RegexGrammar {
740
726
  }, {})
741
727
  }, {});
742
728
  }
743
- *Assertion() {
729
+ *CapturingGroup() {
744
730
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
745
731
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
746
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
732
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
747
733
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
748
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
749
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
750
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
751
- type: _t.s_node(_l.Spamex, "Identifier", "Any"),
752
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
753
- }, {}), _t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
754
- sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
755
- }, {}), _t.node(_l.Instruction, "Array", [_t.ref`openToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`closeToken`], {
756
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "["),
757
- elements: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
734
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
735
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [12, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {}))], [_t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.arr(), _t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`]]], {
758
736
  openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
759
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
737
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
738
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
760
739
  tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
761
740
  }, {}),
762
- type: _t.s_node(_l.Spamex, "Identifier", "StartOfInputAssertion"),
741
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
763
742
  intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
764
743
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
765
- content: _t.node(_l.CSTML, "Content", [_t.lit("^")], {}, {}),
744
+ content: _t.node(_l.CSTML, "Content", [_t.lit("(")], {}, {}),
766
745
  closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
767
746
  }, {}),
747
+ attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
748
+ key: _t.s_node(_l.Spamex, "Identifier", "balanced"),
749
+ mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
750
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
751
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
752
+ content: _t.node(_l.CSTML, "Content", [_t.lit(")")], {}, {}),
753
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
754
+ }, {})
755
+ }, {})],
756
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
768
757
  closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
769
- }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
758
+ }, {})
759
+ }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
760
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
761
+ content: _t.node(_l.CSTML, "Content", [_t.lit("openToken")], {}, {}),
762
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
763
+ }, {})],
764
+ closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
765
+ }, {})
766
+ }, {});
767
+ yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
768
+ verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
769
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
770
+ openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
771
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
772
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
770
773
  openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
771
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
774
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
775
+ type: _t.s_node(_l.Spamex, "Identifier", "Alternatives"),
776
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
777
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
778
+ }, {})
779
+ }, {})],
780
+ closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
781
+ }, {})
782
+ }, {});
783
+ yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
784
+ verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
785
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
786
+ openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
787
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
788
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [12, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {}))], [_t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.arr(), _t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`]]], {
789
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
790
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
791
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
772
792
  tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
773
793
  }, {}),
774
- type: _t.s_node(_l.Spamex, "Identifier", "EndOfInputAssertion"),
794
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
775
795
  intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
776
796
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
777
- content: _t.node(_l.CSTML, "Content", [_t.lit("$")], {}, {}),
797
+ content: _t.node(_l.CSTML, "Content", [_t.lit(")")], {}, {}),
778
798
  closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
779
799
  }, {}),
800
+ attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
801
+ key: _t.s_node(_l.Spamex, "Identifier", "balancer")
802
+ }, {})],
803
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
780
804
  closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
781
- }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
805
+ }, {})
806
+ }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
807
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
808
+ content: _t.node(_l.CSTML, "Content", [_t.lit("closeToken")], {}, {}),
809
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
810
+ }, {})],
811
+ closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
812
+ }, {})
813
+ }, {});
814
+ }
815
+ *Assertion() {
816
+ yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
817
+ verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
818
+ arguments: _t.node(_l.Instruction, "Tuple", [9, [[_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`], [_t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`]]], {
819
+ openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
820
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
821
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
782
822
  openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
783
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`, _t.ref`escapeToken`], {
784
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*"),
785
- escapeToken: _t.s_i_node(_l.CSTML, "Punctuator", "@")
786
- }, {}),
787
- type: _t.s_node(_l.Spamex, "Identifier", "WordBoundaryAssertion"),
788
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`], {
789
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
790
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`], {
791
- elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
792
- cooked: "\\"
793
- }))], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("b")], {}, {})]
794
- }, {})],
795
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
796
- flags: _t.node(_l.Regex, "Flags", [_t.ref`tokens[]`], {
797
- tokens: [_t.s_i_node(_l.Regex, "Keyword", "i")]
798
- }, {
799
- global: false,
800
- ignoreCase: true,
801
- multiline: false,
802
- dotAll: false,
803
- unicode: false,
804
- sticky: false
805
- })
806
- }, {}),
823
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
824
+ type: _t.s_node(_l.Spamex, "Identifier", "Any"),
825
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
807
826
  closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
827
+ }, {})
828
+ }, {}), _t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
829
+ sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
830
+ }, {}), _t.node(_l.Instruction, "Array", [11, [[_t.ref`openToken`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.arr()], [_t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`closeToken`]]], {
831
+ openToken: _t.s_i_node(_l.Instruction, "Punctuator", "["),
832
+ elements: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
833
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
834
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
835
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
836
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
837
+ }, {}),
838
+ type: _t.s_node(_l.Spamex, "Identifier", "StartOfInputAssertion"),
839
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
840
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
841
+ content: _t.node(_l.CSTML, "Content", [_t.lit("^")], {}, {}),
842
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
843
+ }, {}),
844
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
845
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
846
+ }, {})
847
+ }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
848
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
849
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
850
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
851
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
852
+ }, {}),
853
+ type: _t.s_node(_l.Spamex, "Identifier", "EndOfInputAssertion"),
854
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
855
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
856
+ content: _t.node(_l.CSTML, "Content", [_t.lit("$")], {}, {}),
857
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
858
+ }, {}),
859
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
860
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
861
+ }, {})
862
+ }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
863
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
864
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
865
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`, _t.ref`escapeToken`], {
866
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*"),
867
+ escapeToken: _t.s_i_node(_l.CSTML, "Punctuator", "@")
868
+ }, {}),
869
+ type: _t.s_node(_l.Spamex, "Identifier", "WordBoundaryAssertion"),
870
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`], {
871
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
872
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`], {
873
+ elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\\\")], {}, {
874
+ cooked: "\\"
875
+ }))], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("b")], {}, {})]
876
+ }, {})],
877
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
878
+ flags: _t.node(_l.Regex, "Flags", [_t.ref`tokens[]`, _t.arr(), _t.ref`tokens[]`], {
879
+ tokens: [_t.s_i_node(_l.Regex, "Keyword", "i")]
880
+ }, {
881
+ global: false,
882
+ ignoreCase: true,
883
+ multiline: false,
884
+ dotAll: false,
885
+ unicode: false,
886
+ sticky: false
887
+ })
888
+ }, {}),
889
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
890
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
891
+ }, {})
808
892
  }, {})],
809
893
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "]")
810
894
  }, {})],
@@ -815,21 +899,24 @@ export const grammar = class RegexGrammar {
815
899
  *StartOfInputAssertion() {
816
900
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
817
901
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
818
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
902
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
819
903
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
820
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
821
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
822
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
823
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
824
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
825
- }, {}),
826
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
827
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
828
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
829
- content: _t.node(_l.CSTML, "Content", [_t.lit("^")], {}, {}),
830
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
831
- }, {}),
832
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
904
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
905
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
906
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
907
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
908
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
909
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
910
+ }, {}),
911
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
912
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
913
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
914
+ content: _t.node(_l.CSTML, "Content", [_t.lit("^")], {}, {}),
915
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
916
+ }, {}),
917
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
918
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
919
+ }, {})
833
920
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
834
921
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
835
922
  content: _t.node(_l.CSTML, "Content", [_t.lit("sigilToken")], {}, {}),
@@ -842,21 +929,24 @@ export const grammar = class RegexGrammar {
842
929
  *EndOfInputAssertion() {
843
930
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
844
931
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
845
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
932
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
846
933
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
847
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
848
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
849
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
850
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
851
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
852
- }, {}),
853
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
854
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
855
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
856
- content: _t.node(_l.CSTML, "Content", [_t.lit("$")], {}, {}),
857
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
858
- }, {}),
859
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
934
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
935
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
936
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
937
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
938
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
939
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
940
+ }, {}),
941
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
942
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
943
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
944
+ content: _t.node(_l.CSTML, "Content", [_t.lit("$")], {}, {}),
945
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
946
+ }, {}),
947
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
948
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
949
+ }, {})
860
950
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
861
951
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
862
952
  content: _t.node(_l.CSTML, "Content", [_t.lit("sigilToken")], {}, {}),
@@ -871,23 +961,26 @@ export const grammar = class RegexGrammar {
871
961
  }) {
872
962
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
873
963
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
874
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
964
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
875
965
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
876
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
877
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
878
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
879
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
880
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
881
- }, {}),
882
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
883
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
884
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
885
- content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
886
- cooked: "\\"
887
- }))], {}, {}),
888
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
889
- }, {}),
890
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
966
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
967
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
968
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
969
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
970
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
971
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
972
+ }, {}),
973
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
974
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
975
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
976
+ content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
977
+ cooked: "\\"
978
+ }))], {}, {}),
979
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
980
+ }, {}),
981
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
982
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
983
+ }, {})
891
984
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
892
985
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
893
986
  content: _t.node(_l.CSTML, "Content", [_t.lit("escapeToken")], {}, {}),
@@ -898,33 +991,36 @@ export const grammar = class RegexGrammar {
898
991
  }, {});
899
992
  const m = yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
900
993
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
901
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
994
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
902
995
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
903
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
904
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
905
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
906
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
907
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
908
- }, {}),
909
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
910
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`], {
911
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
912
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
913
- elements: [_t.node(_l.Regex, "Character", [_t.lit("b")], {}, {})]
914
- }, {})],
915
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
916
- flags: _t.node(_l.Regex, "Flags", [_t.ref`tokens[]`], {
917
- tokens: [_t.s_i_node(_l.Regex, "Keyword", "i")]
918
- }, {
919
- global: false,
920
- ignoreCase: true,
921
- multiline: false,
922
- dotAll: false,
923
- unicode: false,
924
- sticky: false
925
- })
926
- }, {}),
927
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
996
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
997
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
998
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
999
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1000
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1001
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1002
+ }, {}),
1003
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
1004
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`], {
1005
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1006
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
1007
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("b")], {}, {})]
1008
+ }, {})],
1009
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1010
+ flags: _t.node(_l.Regex, "Flags", [_t.ref`tokens[]`, _t.arr(), _t.ref`tokens[]`], {
1011
+ tokens: [_t.s_i_node(_l.Regex, "Keyword", "i")]
1012
+ }, {
1013
+ global: false,
1014
+ ignoreCase: true,
1015
+ multiline: false,
1016
+ dotAll: false,
1017
+ unicode: false,
1018
+ sticky: false
1019
+ })
1020
+ }, {}),
1021
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1022
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1023
+ }, {})
928
1024
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
929
1025
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
930
1026
  content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
@@ -935,7 +1031,7 @@ export const grammar = class RegexGrammar {
935
1031
  }, {});
936
1032
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
937
1033
  verb: _t.s_node(_l.Instruction, "Identifier", "bindAttribute"),
938
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(buildBoolean(ctx.sourceTextFor(m) === 'B'), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
1034
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(buildBoolean(ctx.sourceTextFor(m) === 'B'), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
939
1035
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
940
1036
  values: [_t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
941
1037
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
@@ -949,23 +1045,26 @@ export const grammar = class RegexGrammar {
949
1045
  *Gap() {
950
1046
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
951
1047
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
952
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1048
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
953
1049
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
954
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
955
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
956
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
957
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
958
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
959
- }, {}),
960
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
961
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
962
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
963
- content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
964
- cooked: "\\"
965
- }))], {}, {}),
966
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
967
- }, {}),
968
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1050
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1051
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1052
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1053
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1054
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1055
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1056
+ }, {}),
1057
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1058
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1059
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1060
+ content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
1061
+ cooked: "\\"
1062
+ }))], {}, {}),
1063
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1064
+ }, {}),
1065
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1066
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1067
+ }, {})
969
1068
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
970
1069
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
971
1070
  content: _t.node(_l.CSTML, "Content", [_t.lit("escapeToken")], {}, {}),
@@ -976,21 +1075,24 @@ export const grammar = class RegexGrammar {
976
1075
  }, {});
977
1076
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
978
1077
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
979
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1078
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
980
1079
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
981
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
982
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
983
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
984
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
985
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
986
- }, {}),
987
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
988
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
989
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
990
- content: _t.node(_l.CSTML, "Content", [_t.lit("g")], {}, {}),
991
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
992
- }, {}),
993
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1080
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1081
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1082
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1083
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1084
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1085
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1086
+ }, {}),
1087
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
1088
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1089
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1090
+ content: _t.node(_l.CSTML, "Content", [_t.lit("g")], {}, {}),
1091
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1092
+ }, {}),
1093
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1094
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1095
+ }, {})
994
1096
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
995
1097
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
996
1098
  content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
@@ -1003,7 +1105,7 @@ export const grammar = class RegexGrammar {
1003
1105
  *Character() {
1004
1106
  if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1005
1107
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
1006
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
1108
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
1007
1109
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1008
1110
  values: [_t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1009
1111
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
@@ -1017,15 +1119,18 @@ export const grammar = class RegexGrammar {
1017
1119
  }, {})) {
1018
1120
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1019
1121
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1020
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1122
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1021
1123
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1022
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
1023
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1024
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`escapeToken`], {
1025
- escapeToken: _t.s_i_node(_l.CSTML, "Punctuator", "@")
1026
- }, {}),
1027
- type: _t.s_node(_l.Spamex, "Identifier", "EscapeSequence"),
1028
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1124
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1125
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1126
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1127
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`escapeToken`], {
1128
+ escapeToken: _t.s_i_node(_l.CSTML, "Punctuator", "@")
1129
+ }, {}),
1130
+ type: _t.s_node(_l.Spamex, "Identifier", "EscapeSequence"),
1131
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1132
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1133
+ }, {})
1029
1134
  }, {}), _t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
1030
1135
  sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
1031
1136
  }, {})],
@@ -1035,19 +1140,19 @@ export const grammar = class RegexGrammar {
1035
1140
  } else {
1036
1141
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1037
1142
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1038
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
1143
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
1039
1144
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1040
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
1145
+ values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
1041
1146
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1042
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
1043
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`negateToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1147
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
1148
+ elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`negateToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1044
1149
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1045
1150
  negateToken: _t.s_i_node(_l.Regex, "Keyword", "^"),
1046
- elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\r")], {}, {
1151
+ elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\r")], {}, {
1047
1152
  cooked: "\r"
1048
- }))], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\n")], {}, {
1153
+ }))], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\n")], {}, {
1049
1154
  cooked: "\n"
1050
- }))], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\t")], {}, {
1155
+ }))], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\t")], {}, {
1051
1156
  cooked: "\t"
1052
1157
  }))], {}, {})],
1053
1158
  closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
@@ -1065,38 +1170,41 @@ export const grammar = class RegexGrammar {
1065
1170
  *CharacterClass() {
1066
1171
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1067
1172
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1068
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1173
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1069
1174
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1070
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
1071
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1072
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1073
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1074
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1075
- }, {}),
1076
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1077
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1078
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1079
- content: _t.node(_l.CSTML, "Content", [_t.lit("[")], {}, {}),
1080
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1081
- }, {}),
1082
- attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
1083
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balancedSpan")], {}, {}),
1084
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
1085
- value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1086
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1087
- content: _t.node(_l.CSTML, "Content", [_t.lit("CharacterClass")], {}, {}),
1088
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1089
- }, {})
1090
- }, {}), _t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
1091
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balanced")], {}, {}),
1092
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
1093
- value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1175
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1176
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [14, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {}))], [_t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.arr()], [_t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`]]], {
1177
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1178
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1179
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1180
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1181
+ }, {}),
1182
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1183
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1094
1184
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1095
- content: _t.node(_l.CSTML, "Content", [_t.lit("]")], {}, {}),
1185
+ content: _t.node(_l.CSTML, "Content", [_t.lit("[")], {}, {}),
1096
1186
  closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1097
- }, {})
1098
- }, {})],
1099
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1187
+ }, {}),
1188
+ attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
1189
+ key: _t.s_node(_l.Spamex, "Identifier", "balancedSpan"),
1190
+ mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
1191
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1192
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1193
+ content: _t.node(_l.CSTML, "Content", [_t.lit("CharacterClass")], {}, {}),
1194
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1195
+ }, {})
1196
+ }, {}), _t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
1197
+ key: _t.s_node(_l.Spamex, "Identifier", "balanced"),
1198
+ mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
1199
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1200
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1201
+ content: _t.node(_l.CSTML, "Content", [_t.lit("]")], {}, {}),
1202
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1203
+ }, {})
1204
+ }, {})],
1205
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1206
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1207
+ }, {})
1100
1208
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1101
1209
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1102
1210
  content: _t.node(_l.CSTML, "Content", [_t.lit("openToken")], {}, {}),
@@ -1107,21 +1215,24 @@ export const grammar = class RegexGrammar {
1107
1215
  }, {});
1108
1216
  let neg = yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1109
1217
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
1110
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1218
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1111
1219
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1112
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1113
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1114
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1115
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1116
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1117
- }, {}),
1118
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
1119
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1120
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1121
- content: _t.node(_l.CSTML, "Content", [_t.lit("^")], {}, {}),
1122
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1123
- }, {}),
1124
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1220
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1221
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1222
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1223
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1224
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1225
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1226
+ }, {}),
1227
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
1228
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1229
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1230
+ content: _t.node(_l.CSTML, "Content", [_t.lit("^")], {}, {}),
1231
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1232
+ }, {}),
1233
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1234
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1235
+ }, {})
1125
1236
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1126
1237
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1127
1238
  content: _t.node(_l.CSTML, "Content", [_t.lit("negateToken")], {}, {}),
@@ -1132,7 +1243,7 @@ export const grammar = class RegexGrammar {
1132
1243
  }, {});
1133
1244
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1134
1245
  verb: _t.s_node(_l.Instruction, "Identifier", "bindAttribute"),
1135
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(buildBoolean(neg), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
1246
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(buildBoolean(neg), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
1136
1247
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1137
1248
  values: [_t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1138
1249
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
@@ -1144,17 +1255,17 @@ export const grammar = class RegexGrammar {
1144
1255
  }, {});
1145
1256
  while (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1146
1257
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
1147
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
1258
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
1148
1259
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1149
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`], {
1260
+ values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`], {
1150
1261
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1151
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
1262
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
1152
1263
  elements: [_t.node(_l.Regex, "AnyCharacterSet", [_t.ref`sigilToken`], {
1153
1264
  sigilToken: _t.s_i_node(_l.Regex, "Keyword", ".")
1154
1265
  }, {})]
1155
1266
  }, {})],
1156
1267
  closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1157
- flags: _t.node(_l.Regex, "Flags", [_t.ref`tokens[]`], {
1268
+ flags: _t.node(_l.Regex, "Flags", [_t.ref`tokens[]`, _t.arr(), _t.ref`tokens[]`], {
1158
1269
  tokens: [_t.s_i_node(_l.Regex, "Keyword", "s")]
1159
1270
  }, {
1160
1271
  global: false,
@@ -1170,15 +1281,18 @@ export const grammar = class RegexGrammar {
1170
1281
  }, {})) {
1171
1282
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1172
1283
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1173
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1284
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1174
1285
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1175
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
1176
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1177
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
1178
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1179
- }, {}),
1180
- type: _t.s_node(_l.Spamex, "Identifier", "CharacterClassElement"),
1181
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1286
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1287
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1288
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1289
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
1290
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1291
+ }, {}),
1292
+ type: _t.s_node(_l.Spamex, "Identifier", "CharacterClassElement"),
1293
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1294
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1295
+ }, {})
1182
1296
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1183
1297
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1184
1298
  content: _t.node(_l.CSTML, "Content", [_t.lit("elements[]")], {}, {}),
@@ -1190,24 +1304,27 @@ export const grammar = class RegexGrammar {
1190
1304
  }
1191
1305
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1192
1306
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1193
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1307
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1194
1308
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1195
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
1196
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1197
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1198
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1199
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1200
- }, {}),
1201
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1202
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1203
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1204
- content: _t.node(_l.CSTML, "Content", [_t.lit("]")], {}, {}),
1205
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1206
- }, {}),
1207
- attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
1208
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balancer")], {}, {})
1209
- }, {})],
1210
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1309
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1310
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [12, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {}))], [_t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.arr(), _t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`]]], {
1311
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1312
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1313
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1314
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1315
+ }, {}),
1316
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1317
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1318
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1319
+ content: _t.node(_l.CSTML, "Content", [_t.lit("]")], {}, {}),
1320
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1321
+ }, {}),
1322
+ attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
1323
+ key: _t.s_node(_l.Spamex, "Identifier", "balancer")
1324
+ }, {})],
1325
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1326
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1327
+ }, {})
1211
1328
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1212
1329
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1213
1330
  content: _t.node(_l.CSTML, "Content", [_t.lit("closeToken")], {}, {}),
@@ -1220,67 +1337,79 @@ export const grammar = class RegexGrammar {
1220
1337
  *CharacterClassElement() {
1221
1338
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1222
1339
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1223
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1340
+ arguments: _t.node(_l.Instruction, "Tuple", [9, [[_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`], [_t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`]]], {
1224
1341
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1225
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
1226
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1227
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
1228
- type: _t.s_node(_l.Spamex, "Identifier", "Any"),
1229
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1342
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1343
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1344
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1345
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
1346
+ type: _t.s_node(_l.Spamex, "Identifier", "Any"),
1347
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1348
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1349
+ }, {})
1230
1350
  }, {}), _t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
1231
1351
  sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
1232
- }, {}), _t.node(_l.Instruction, "Array", [_t.ref`openToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`closeToken`], {
1352
+ }, {}), _t.node(_l.Instruction, "Array", [11, [[_t.ref`openToken`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.arr()], [_t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`closeToken`]]], {
1233
1353
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "["),
1234
- elements: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1235
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1236
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
1237
- type: _t.s_node(_l.Spamex, "Identifier", "CharacterSet"),
1238
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`], {
1239
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1240
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`], {
1241
- elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
1242
- cooked: "\\"
1243
- }))], {}, {}), _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1244
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1245
- elements: [_t.node(_l.Regex, "Character", [_t.lit("d")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("s")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("w")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("p")], {}, {})],
1246
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1354
+ elements: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1355
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1356
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1357
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
1358
+ type: _t.s_node(_l.Spamex, "Identifier", "CharacterSet"),
1359
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`, _t.ref`flags`], {
1360
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1361
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`], {
1362
+ elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\\\")], {}, {
1363
+ cooked: "\\"
1364
+ }))], {}, {}), _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1365
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1366
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("d")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("s")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("w")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("p")], {}, {})],
1367
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1368
+ }, {
1369
+ negate: false
1370
+ })]
1371
+ }, {})],
1372
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1373
+ flags: _t.node(_l.Regex, "Flags", [_t.ref`tokens[]`, _t.arr(), _t.ref`tokens[]`], {
1374
+ tokens: [_t.s_i_node(_l.Regex, "Keyword", "i")]
1247
1375
  }, {
1248
- negate: false
1249
- })]
1250
- }, {})],
1251
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1252
- flags: _t.node(_l.Regex, "Flags", [_t.ref`tokens[]`], {
1253
- tokens: [_t.s_i_node(_l.Regex, "Keyword", "i")]
1254
- }, {
1255
- global: false,
1256
- ignoreCase: true,
1257
- multiline: false,
1258
- dotAll: false,
1259
- unicode: false,
1260
- sticky: false
1261
- })
1262
- }, {}),
1263
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1264
- }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1265
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1266
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
1267
- type: _t.s_node(_l.Spamex, "Identifier", "Gap"),
1268
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1269
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1270
- content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
1271
- cooked: "\\"
1272
- })), _t.lit("g")], {}, {}),
1273
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1274
- }, {}),
1275
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1276
- }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
1277
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1278
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`, _t.ref`expressionToken`], {
1279
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*"),
1280
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1281
- }, {}),
1282
- type: _t.s_node(_l.Spamex, "Identifier", "Character"),
1283
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1376
+ global: false,
1377
+ ignoreCase: true,
1378
+ multiline: false,
1379
+ dotAll: false,
1380
+ unicode: false,
1381
+ sticky: false
1382
+ })
1383
+ }, {}),
1384
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1385
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1386
+ }, {})
1387
+ }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1388
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1389
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1390
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
1391
+ type: _t.s_node(_l.Spamex, "Identifier", "Gap"),
1392
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1393
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1394
+ content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
1395
+ cooked: "\\"
1396
+ })), _t.lit("g")], {}, {}),
1397
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1398
+ }, {}),
1399
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1400
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1401
+ }, {})
1402
+ }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1403
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1404
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1405
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`, _t.ref`expressionToken`], {
1406
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*"),
1407
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1408
+ }, {}),
1409
+ type: _t.s_node(_l.Spamex, "Identifier", "Character"),
1410
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1411
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1412
+ }, {})
1284
1413
  }, {})],
1285
1414
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "]")
1286
1415
  }, {})],
@@ -1289,7 +1418,7 @@ export const grammar = class RegexGrammar {
1289
1418
  }, {});
1290
1419
  if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1291
1420
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
1292
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
1421
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
1293
1422
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1294
1423
  values: [_t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1295
1424
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
@@ -1301,15 +1430,18 @@ export const grammar = class RegexGrammar {
1301
1430
  }, {})) {
1302
1431
  return _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1303
1432
  verb: _t.s_node(_l.Instruction, "Identifier", "holdForMatch"),
1304
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
1433
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
1305
1434
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1306
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
1307
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1308
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
1309
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1310
- }, {}),
1311
- type: _t.s_node(_l.Spamex, "Identifier", "CharacterClassRange"),
1312
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1435
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1436
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1437
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1438
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
1439
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1440
+ }, {}),
1441
+ type: _t.s_node(_l.Spamex, "Identifier", "CharacterClassRange"),
1442
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1443
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1444
+ }, {})
1313
1445
  }, {})],
1314
1446
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
1315
1447
  }, {})
@@ -1319,16 +1451,19 @@ export const grammar = class RegexGrammar {
1319
1451
  *CharacterClassRange() {
1320
1452
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1321
1453
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1322
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1454
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1323
1455
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1324
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
1325
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1326
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`, _t.ref`expressionToken`], {
1327
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*"),
1328
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1329
- }, {}),
1330
- type: _t.s_node(_l.Spamex, "Identifier", "Character"),
1331
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1456
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1457
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1458
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1459
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`, _t.ref`expressionToken`], {
1460
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*"),
1461
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1462
+ }, {}),
1463
+ type: _t.s_node(_l.Spamex, "Identifier", "Character"),
1464
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1465
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1466
+ }, {})
1332
1467
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1333
1468
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1334
1469
  content: _t.node(_l.CSTML, "Content", [_t.lit("min")], {}, {}),
@@ -1339,21 +1474,24 @@ export const grammar = class RegexGrammar {
1339
1474
  }, {});
1340
1475
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1341
1476
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1342
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1477
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1343
1478
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1344
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1345
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1346
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1347
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1348
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1349
- }, {}),
1350
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1351
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1352
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1353
- content: _t.node(_l.CSTML, "Content", [_t.lit("-")], {}, {}),
1354
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1355
- }, {}),
1356
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1479
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1480
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1481
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1482
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1483
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1484
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1485
+ }, {}),
1486
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1487
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1488
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1489
+ content: _t.node(_l.CSTML, "Content", [_t.lit("-")], {}, {}),
1490
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1491
+ }, {}),
1492
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1493
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1494
+ }, {})
1357
1495
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1358
1496
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1359
1497
  content: _t.node(_l.CSTML, "Content", [_t.lit("sigilToken")], {}, {}),
@@ -1364,16 +1502,19 @@ export const grammar = class RegexGrammar {
1364
1502
  }, {});
1365
1503
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1366
1504
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1367
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1505
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1368
1506
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1369
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
1370
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1371
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`, _t.ref`expressionToken`], {
1372
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*"),
1373
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1374
- }, {}),
1375
- type: _t.s_node(_l.Spamex, "Identifier", "Character"),
1376
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1507
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1508
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1509
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1510
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`, _t.ref`expressionToken`], {
1511
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*"),
1512
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1513
+ }, {}),
1514
+ type: _t.s_node(_l.Spamex, "Identifier", "Character"),
1515
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1516
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1517
+ }, {})
1377
1518
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1378
1519
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1379
1520
  content: _t.node(_l.CSTML, "Content", [_t.lit("max")], {}, {}),
@@ -1386,95 +1527,110 @@ export const grammar = class RegexGrammar {
1386
1527
  *CharacterSet() {
1387
1528
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1388
1529
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1389
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1530
+ arguments: _t.node(_l.Instruction, "Tuple", [9, [[_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`], [_t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`]]], {
1390
1531
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1391
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
1392
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1393
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
1394
- type: _t.s_node(_l.Spamex, "Identifier", "Any"),
1395
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1532
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1533
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1534
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1535
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
1536
+ type: _t.s_node(_l.Spamex, "Identifier", "Any"),
1537
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1538
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1539
+ }, {})
1396
1540
  }, {}), _t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
1397
1541
  sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
1398
- }, {}), _t.node(_l.Instruction, "Array", [_t.ref`openToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`closeToken`], {
1542
+ }, {}), _t.node(_l.Instruction, "Array", [13, [[_t.ref`openToken`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.arr()], [_t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {}))], [_t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`closeToken`]]], {
1399
1543
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "["),
1400
- elements: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1401
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1402
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
1403
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1404
- }, {}),
1405
- type: _t.s_node(_l.Spamex, "Identifier", "AnyCharacterSet"),
1406
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1407
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1408
- content: _t.node(_l.CSTML, "Content", [_t.lit(".")], {}, {}),
1409
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1410
- }, {}),
1411
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1412
- }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1413
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1414
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
1415
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1416
- }, {}),
1417
- type: _t.s_node(_l.Spamex, "Identifier", "DigitCharacterSet"),
1418
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
1419
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1420
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`], {
1421
- elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
1422
- cooked: "\\"
1423
- }))], {}, {}), _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1424
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1425
- elements: [_t.node(_l.Regex, "Character", [_t.lit("d")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("D")], {}, {})],
1426
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1427
- }, {
1428
- negate: false
1429
- })]
1430
- }, {})],
1431
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
1432
- }, {}),
1433
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1434
- }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1435
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1436
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
1437
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1438
- }, {}),
1439
- type: _t.s_node(_l.Spamex, "Identifier", "SpaceCharacterSet"),
1440
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
1441
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1442
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`], {
1443
- elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
1444
- cooked: "\\"
1445
- }))], {}, {}), _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1446
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1447
- elements: [_t.node(_l.Regex, "Character", [_t.lit("s")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("S")], {}, {})],
1448
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1449
- }, {
1450
- negate: false
1451
- })]
1452
- }, {})],
1453
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
1454
- }, {}),
1455
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1456
- }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1457
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1458
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
1459
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1460
- }, {}),
1461
- type: _t.s_node(_l.Spamex, "Identifier", "WordCharacterSet"),
1462
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
1463
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1464
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`], {
1465
- elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
1466
- cooked: "\\"
1467
- }))], {}, {}), _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1468
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1469
- elements: [_t.node(_l.Regex, "Character", [_t.lit("w")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("W")], {}, {})],
1470
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1471
- }, {
1472
- negate: false
1473
- })]
1474
- }, {})],
1475
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
1476
- }, {}),
1477
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1544
+ elements: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1545
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1546
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1547
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
1548
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1549
+ }, {}),
1550
+ type: _t.s_node(_l.Spamex, "Identifier", "AnyCharacterSet"),
1551
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1552
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1553
+ content: _t.node(_l.CSTML, "Content", [_t.lit(".")], {}, {}),
1554
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1555
+ }, {}),
1556
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1557
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1558
+ }, {})
1559
+ }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1560
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1561
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1562
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
1563
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1564
+ }, {}),
1565
+ type: _t.s_node(_l.Spamex, "Identifier", "DigitCharacterSet"),
1566
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
1567
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1568
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`], {
1569
+ elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\\\")], {}, {
1570
+ cooked: "\\"
1571
+ }))], {}, {}), _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1572
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1573
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("d")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("D")], {}, {})],
1574
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1575
+ }, {
1576
+ negate: false
1577
+ })]
1578
+ }, {})],
1579
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
1580
+ }, {}),
1581
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1582
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1583
+ }, {})
1584
+ }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1585
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1586
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1587
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
1588
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1589
+ }, {}),
1590
+ type: _t.s_node(_l.Spamex, "Identifier", "SpaceCharacterSet"),
1591
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
1592
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1593
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`], {
1594
+ elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\\\")], {}, {
1595
+ cooked: "\\"
1596
+ }))], {}, {}), _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1597
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1598
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("s")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("S")], {}, {})],
1599
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1600
+ }, {
1601
+ negate: false
1602
+ })]
1603
+ }, {})],
1604
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
1605
+ }, {}),
1606
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1607
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1608
+ }, {})
1609
+ }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1610
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1611
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1612
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
1613
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1614
+ }, {}),
1615
+ type: _t.s_node(_l.Spamex, "Identifier", "WordCharacterSet"),
1616
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
1617
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1618
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`], {
1619
+ elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\\\")], {}, {
1620
+ cooked: "\\"
1621
+ }))], {}, {}), _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1622
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1623
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("w")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("W")], {}, {})],
1624
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1625
+ }, {
1626
+ negate: false
1627
+ })]
1628
+ }, {})],
1629
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
1630
+ }, {}),
1631
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1632
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1633
+ }, {})
1478
1634
  }, {})],
1479
1635
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "]")
1480
1636
  }, {})],
@@ -1485,21 +1641,24 @@ export const grammar = class RegexGrammar {
1485
1641
  *AnyCharacterSet() {
1486
1642
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1487
1643
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1488
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1644
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1489
1645
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1490
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1491
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1492
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1493
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1494
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1495
- }, {}),
1496
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
1497
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1498
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1499
- content: _t.node(_l.CSTML, "Content", [_t.lit(".")], {}, {}),
1500
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1501
- }, {}),
1502
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1646
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1647
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1648
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1649
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1650
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1651
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1652
+ }, {}),
1653
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
1654
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1655
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1656
+ content: _t.node(_l.CSTML, "Content", [_t.lit(".")], {}, {}),
1657
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1658
+ }, {}),
1659
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1660
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1661
+ }, {})
1503
1662
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1504
1663
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1505
1664
  content: _t.node(_l.CSTML, "Content", [_t.lit("sigilToken")], {}, {}),
@@ -1514,23 +1673,26 @@ export const grammar = class RegexGrammar {
1514
1673
  }) {
1515
1674
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1516
1675
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1517
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1676
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1518
1677
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1519
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1520
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1521
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1522
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1523
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1524
- }, {}),
1525
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1526
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1527
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1528
- content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
1529
- cooked: "\\"
1530
- }))], {}, {}),
1531
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1532
- }, {}),
1533
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1678
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1679
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1680
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1681
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1682
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1683
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1684
+ }, {}),
1685
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1686
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1687
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1688
+ content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
1689
+ cooked: "\\"
1690
+ }))], {}, {}),
1691
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1692
+ }, {}),
1693
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1694
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1695
+ }, {})
1534
1696
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1535
1697
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1536
1698
  content: _t.node(_l.CSTML, "Content", [_t.lit("escapeToken")], {}, {}),
@@ -1541,29 +1703,32 @@ export const grammar = class RegexGrammar {
1541
1703
  }, {});
1542
1704
  let code = yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1543
1705
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1544
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1706
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1545
1707
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1546
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1547
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1548
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1549
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1550
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1551
- }, {}),
1552
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
1553
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
1554
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1555
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
1556
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1557
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1558
- elements: [_t.node(_l.Regex, "Character", [_t.lit("d")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("D")], {}, {})],
1559
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1560
- }, {
1561
- negate: false
1562
- })]
1563
- }, {})],
1564
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
1565
- }, {}),
1566
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1708
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1709
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1710
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1711
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1712
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1713
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1714
+ }, {}),
1715
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
1716
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
1717
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1718
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
1719
+ elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1720
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1721
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("d")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("D")], {}, {})],
1722
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1723
+ }, {
1724
+ negate: false
1725
+ })]
1726
+ }, {})],
1727
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
1728
+ }, {}),
1729
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1730
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1731
+ }, {})
1567
1732
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1568
1733
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1569
1734
  content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
@@ -1574,7 +1739,7 @@ export const grammar = class RegexGrammar {
1574
1739
  }, {});
1575
1740
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1576
1741
  verb: _t.s_node(_l.Instruction, "Identifier", "bindAttribute"),
1577
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(buildBoolean(ctx.sourceTextFor(code) === 'D'), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
1742
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(buildBoolean(ctx.sourceTextFor(code) === 'D'), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
1578
1743
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1579
1744
  values: [_t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1580
1745
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
@@ -1590,23 +1755,26 @@ export const grammar = class RegexGrammar {
1590
1755
  }) {
1591
1756
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1592
1757
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1593
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1758
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1594
1759
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1595
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1596
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1597
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1598
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1599
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1600
- }, {}),
1601
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1602
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1603
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1604
- content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
1605
- cooked: "\\"
1606
- }))], {}, {}),
1607
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1608
- }, {}),
1609
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1760
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1761
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1762
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1763
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1764
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1765
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1766
+ }, {}),
1767
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1768
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1769
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1770
+ content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
1771
+ cooked: "\\"
1772
+ }))], {}, {}),
1773
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1774
+ }, {}),
1775
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1776
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1777
+ }, {})
1610
1778
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1611
1779
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1612
1780
  content: _t.node(_l.CSTML, "Content", [_t.lit("escapeToken")], {}, {}),
@@ -1617,29 +1785,32 @@ export const grammar = class RegexGrammar {
1617
1785
  }, {});
1618
1786
  let code = yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1619
1787
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1620
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1788
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1621
1789
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1622
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1623
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1624
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1625
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1626
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1627
- }, {}),
1628
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
1629
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
1630
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1631
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
1632
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1633
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1634
- elements: [_t.node(_l.Regex, "Character", [_t.lit("s")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("S")], {}, {})],
1635
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1636
- }, {
1637
- negate: false
1638
- })]
1639
- }, {})],
1640
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
1641
- }, {}),
1642
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1790
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1791
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1792
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1793
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1794
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1795
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1796
+ }, {}),
1797
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
1798
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
1799
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1800
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
1801
+ elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1802
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1803
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("s")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("S")], {}, {})],
1804
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1805
+ }, {
1806
+ negate: false
1807
+ })]
1808
+ }, {})],
1809
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
1810
+ }, {}),
1811
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1812
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1813
+ }, {})
1643
1814
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1644
1815
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1645
1816
  content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
@@ -1650,7 +1821,7 @@ export const grammar = class RegexGrammar {
1650
1821
  }, {});
1651
1822
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1652
1823
  verb: _t.s_node(_l.Instruction, "Identifier", "bindAttribute"),
1653
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(buildBoolean(ctx.sourceTextFor(code) === 'S'), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
1824
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(buildBoolean(ctx.sourceTextFor(code) === 'S'), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
1654
1825
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1655
1826
  values: [_t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1656
1827
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
@@ -1666,23 +1837,26 @@ export const grammar = class RegexGrammar {
1666
1837
  }) {
1667
1838
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1668
1839
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1669
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1840
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1670
1841
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1671
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1672
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1673
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1674
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1675
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1676
- }, {}),
1677
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1678
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1679
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1680
- content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
1681
- cooked: "\\"
1682
- }))], {}, {}),
1683
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1684
- }, {}),
1685
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1842
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1843
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1844
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1845
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1846
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1847
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1848
+ }, {}),
1849
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1850
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1851
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1852
+ content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
1853
+ cooked: "\\"
1854
+ }))], {}, {}),
1855
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1856
+ }, {}),
1857
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1858
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1859
+ }, {})
1686
1860
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1687
1861
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1688
1862
  content: _t.node(_l.CSTML, "Content", [_t.lit("escapeToken")], {}, {}),
@@ -1693,29 +1867,32 @@ export const grammar = class RegexGrammar {
1693
1867
  }, {});
1694
1868
  let code = yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1695
1869
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1696
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1870
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1697
1871
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1698
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1699
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1700
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1701
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1702
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1703
- }, {}),
1704
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
1705
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
1706
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1707
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
1708
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1709
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1710
- elements: [_t.node(_l.Regex, "Character", [_t.lit("w")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("W")], {}, {})],
1711
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1712
- }, {
1713
- negate: false
1714
- })]
1715
- }, {})],
1716
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
1717
- }, {}),
1718
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1872
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1873
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1874
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1875
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1876
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1877
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1878
+ }, {}),
1879
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
1880
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
1881
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1882
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
1883
+ elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1884
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1885
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("w")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("W")], {}, {})],
1886
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1887
+ }, {
1888
+ negate: false
1889
+ })]
1890
+ }, {})],
1891
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
1892
+ }, {}),
1893
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1894
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1895
+ }, {})
1719
1896
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1720
1897
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1721
1898
  content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
@@ -1726,7 +1903,7 @@ export const grammar = class RegexGrammar {
1726
1903
  }, {});
1727
1904
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1728
1905
  verb: _t.s_node(_l.Instruction, "Identifier", "bindAttribute"),
1729
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(buildBoolean(ctx.sourceTextFor(code) === 'W'), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
1906
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(buildBoolean(ctx.sourceTextFor(code) === 'W'), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
1730
1907
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1731
1908
  values: [_t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1732
1909
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
@@ -1742,15 +1919,18 @@ export const grammar = class RegexGrammar {
1742
1919
  }) {
1743
1920
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1744
1921
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1745
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1922
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1746
1923
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1747
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
1748
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1749
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
1750
- expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1751
- }, {}),
1752
- type: _t.s_node(_l.Spamex, "Identifier", "Element"),
1753
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1924
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1925
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1926
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1927
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`expressionToken`], {
1928
+ expressionToken: _t.s_i_node(_l.CSTML, "Punctuator", "+")
1929
+ }, {}),
1930
+ type: _t.s_node(_l.Spamex, "Identifier", "Element"),
1931
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1932
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1933
+ }, {})
1754
1934
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1755
1935
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1756
1936
  content: _t.node(_l.CSTML, "Content", [_t.lit("element")], {}, {}),
@@ -1762,29 +1942,32 @@ export const grammar = class RegexGrammar {
1762
1942
  let attrs, sigil;
1763
1943
  if (sigil = yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1764
1944
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
1765
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1945
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1766
1946
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1767
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1768
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1769
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1770
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1771
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1772
- }, {}),
1773
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
1774
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
1775
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1776
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
1777
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1778
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1779
- elements: [_t.node(_l.Regex, "Character", [_t.lit("*")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("+")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("?")], {}, {})],
1780
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1781
- }, {
1782
- negate: false
1783
- })]
1784
- }, {})],
1785
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
1786
- }, {}),
1787
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1947
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1948
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1949
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1950
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1951
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1952
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1953
+ }, {}),
1954
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
1955
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
1956
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1957
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
1958
+ elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1959
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
1960
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("*")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("+")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("?")], {}, {})],
1961
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
1962
+ }, {
1963
+ negate: false
1964
+ })]
1965
+ }, {})],
1966
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
1967
+ }, {}),
1968
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1969
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1970
+ }, {})
1788
1971
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1789
1972
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1790
1973
  content: _t.node(_l.CSTML, "Content", [_t.lit("sigilToken")], {}, {}),
@@ -1815,30 +1998,33 @@ export const grammar = class RegexGrammar {
1815
1998
  }
1816
1999
  } else if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1817
2000
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1818
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2001
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1819
2002
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1820
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
1821
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1822
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1823
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1824
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1825
- }, {}),
1826
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1827
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1828
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1829
- content: _t.node(_l.CSTML, "Content", [_t.lit("{")], {}, {}),
1830
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1831
- }, {}),
1832
- attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
1833
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balanced")], {}, {}),
1834
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
1835
- value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2003
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2004
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [12, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {}))], [_t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.arr(), _t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`]]], {
2005
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2006
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2007
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2008
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2009
+ }, {}),
2010
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
2011
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1836
2012
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1837
- content: _t.node(_l.CSTML, "Content", [_t.lit("}")], {}, {}),
2013
+ content: _t.node(_l.CSTML, "Content", [_t.lit("{")], {}, {}),
1838
2014
  closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1839
- }, {})
1840
- }, {})],
1841
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2015
+ }, {}),
2016
+ attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
2017
+ key: _t.s_node(_l.Spamex, "Identifier", "balanced"),
2018
+ mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
2019
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2020
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2021
+ content: _t.node(_l.CSTML, "Content", [_t.lit("}")], {}, {}),
2022
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2023
+ }, {})
2024
+ }, {})],
2025
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2026
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2027
+ }, {})
1842
2028
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1843
2029
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1844
2030
  content: _t.node(_l.CSTML, "Content", [_t.lit("openToken")], {}, {}),
@@ -1850,15 +2036,18 @@ export const grammar = class RegexGrammar {
1850
2036
  let max;
1851
2037
  let min = yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1852
2038
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1853
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2039
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1854
2040
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1855
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
1856
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1857
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
1858
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1859
- }, {}),
1860
- type: _t.s_node(_l.Spamex, "Identifier", "UnsignedInteger"),
1861
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2041
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2042
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
2043
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2044
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
2045
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2046
+ }, {}),
2047
+ type: _t.s_node(_l.Spamex, "Identifier", "UnsignedInteger"),
2048
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2049
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2050
+ }, {})
1862
2051
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1863
2052
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1864
2053
  content: _t.node(_l.CSTML, "Content", [_t.lit("min")], {}, {}),
@@ -1869,21 +2058,24 @@ export const grammar = class RegexGrammar {
1869
2058
  }, {});
1870
2059
  if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1871
2060
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
1872
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2061
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1873
2062
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1874
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
1875
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1876
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1877
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1878
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1879
- }, {}),
1880
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1881
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1882
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1883
- content: _t.node(_l.CSTML, "Content", [_t.lit(",")], {}, {}),
1884
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1885
- }, {}),
1886
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2063
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2064
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
2065
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2066
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2067
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2068
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2069
+ }, {}),
2070
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
2071
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2072
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2073
+ content: _t.node(_l.CSTML, "Content", [_t.lit(",")], {}, {}),
2074
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2075
+ }, {}),
2076
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2077
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2078
+ }, {})
1887
2079
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1888
2080
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1889
2081
  content: _t.node(_l.CSTML, "Content", [_t.lit("separator")], {}, {}),
@@ -1894,15 +2086,18 @@ export const grammar = class RegexGrammar {
1894
2086
  }, {})) {
1895
2087
  max = yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1896
2088
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
1897
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2089
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1898
2090
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1899
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
1900
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1901
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
1902
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1903
- }, {}),
1904
- type: _t.s_node(_l.Spamex, "Identifier", "UnsignedInteger"),
1905
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2091
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2092
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
2093
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2094
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
2095
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2096
+ }, {}),
2097
+ type: _t.s_node(_l.Spamex, "Identifier", "UnsignedInteger"),
2098
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2099
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2100
+ }, {})
1906
2101
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1907
2102
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1908
2103
  content: _t.node(_l.CSTML, "Content", [_t.lit("max")], {}, {}),
@@ -1922,24 +2117,27 @@ export const grammar = class RegexGrammar {
1922
2117
  };
1923
2118
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1924
2119
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1925
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2120
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
1926
2121
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1927
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
1928
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1929
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1930
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1931
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1932
- }, {}),
1933
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1934
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1935
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1936
- content: _t.node(_l.CSTML, "Content", [_t.lit("}")], {}, {}),
1937
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1938
- }, {}),
1939
- attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
1940
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balancer")], {}, {})
1941
- }, {})],
1942
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2122
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2123
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [12, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {}))], [_t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.arr(), _t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`]]], {
2124
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2125
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2126
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2127
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2128
+ }, {}),
2129
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
2130
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2131
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2132
+ content: _t.node(_l.CSTML, "Content", [_t.lit("}")], {}, {}),
2133
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2134
+ }, {}),
2135
+ attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
2136
+ key: _t.s_node(_l.Spamex, "Identifier", "balancer")
2137
+ }, {})],
2138
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2139
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2140
+ }, {})
1943
2141
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1944
2142
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1945
2143
  content: _t.node(_l.CSTML, "Content", [_t.lit("closeToken")], {}, {}),
@@ -1951,25 +2149,25 @@ export const grammar = class RegexGrammar {
1951
2149
  }
1952
2150
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1953
2151
  verb: _t.s_node(_l.Instruction, "Identifier", "bindAttribute"),
1954
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(attrs.min ? buildNumber(attrs.min) : buildNull(), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
2152
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(attrs.min ? buildNumber(attrs.min) : buildNullTag(), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
1955
2153
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1956
2154
  values: [_t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1957
2155
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1958
2156
  content: _t.node(_l.CSTML, "Content", [_t.lit("min")], {}, {}),
1959
2157
  closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1960
- }, {}), ..._interpolateArray(attrs.min ? buildNumber(attrs.min) : buildNull())],
2158
+ }, {}), ..._interpolateArray(attrs.min ? buildNumber(attrs.min) : buildNullTag())],
1961
2159
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
1962
2160
  }, {})
1963
2161
  }, {});
1964
2162
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1965
2163
  verb: _t.s_node(_l.Instruction, "Identifier", "bindAttribute"),
1966
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(attrs.max ? buildNumber(attrs.max) : buildNull(), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
2164
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(attrs.max ? buildNumber(attrs.max) : buildNullTag(), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
1967
2165
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1968
2166
  values: [_t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1969
2167
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1970
2168
  content: _t.node(_l.CSTML, "Content", [_t.lit("max")], {}, {}),
1971
2169
  closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1972
- }, {}), ..._interpolateArray(attrs.max ? buildNumber(attrs.max) : buildNull())],
2170
+ }, {}), ..._interpolateArray(attrs.max ? buildNumber(attrs.max) : buildNullTag())],
1973
2171
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
1974
2172
  }, {})
1975
2173
  }, {});
@@ -1977,11 +2175,11 @@ export const grammar = class RegexGrammar {
1977
2175
  *UnsignedInteger() {
1978
2176
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1979
2177
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1980
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
2178
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
1981
2179
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1982
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
2180
+ values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
1983
2181
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
1984
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
2182
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
1985
2183
  elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
1986
2184
  element: _t.node(_l.Regex, "DigitCharacterSet", [_t.ref`escapeToken`, _t.ref`value`], {
1987
2185
  escapeToken: _t.s_i_node(_l.Regex, "Punctuator", "\\"),
@@ -2008,32 +2206,35 @@ export const grammar = class RegexGrammar {
2008
2206
  const parentSpan = state.span;
2009
2207
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2010
2208
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
2011
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2209
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2012
2210
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2013
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
2014
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2015
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2016
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2017
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2018
- }, {}),
2019
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
2020
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2021
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2022
- content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
2023
- cooked: "\\"
2024
- }))], {}, {}),
2025
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2026
- }, {}),
2027
- attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
2028
- key: _t.node(_l.Spamex, "Literal", [_t.lit("openSpan")], {}, {}),
2029
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
2030
- value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2211
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2212
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [12, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {}))], [_t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.arr(), _t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`]]], {
2213
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2214
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2215
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2216
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2217
+ }, {}),
2218
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
2219
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2031
2220
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2032
- content: _t.node(_l.CSTML, "Content", [_t.lit("Escape")], {}, {}),
2221
+ content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
2222
+ cooked: "\\"
2223
+ }))], {}, {}),
2033
2224
  closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2034
- }, {})
2035
- }, {})],
2036
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2225
+ }, {}),
2226
+ attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
2227
+ key: _t.s_node(_l.Spamex, "Identifier", "openSpan"),
2228
+ mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
2229
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2230
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2231
+ content: _t.node(_l.CSTML, "Content", [_t.lit("Escape")], {}, {}),
2232
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2233
+ }, {})
2234
+ }, {})],
2235
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2236
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2237
+ }, {})
2037
2238
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2038
2239
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2039
2240
  content: _t.node(_l.CSTML, "Content", [_t.lit("escape")], {}, {}),
@@ -2045,14 +2246,14 @@ export const grammar = class RegexGrammar {
2045
2246
  let match, cooked;
2046
2247
  if (match = yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2047
2248
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
2048
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
2249
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
2049
2250
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2050
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
2251
+ values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
2051
2252
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
2052
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
2053
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
2253
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
2254
+ elements: [_t.node(_l.Regex, "CharacterClass", [10, [[_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], [_t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`]]], {
2054
2255
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
2055
- elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
2256
+ elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\\\")], {}, {
2056
2257
  cooked: "\\"
2057
2258
  }))], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("/")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("n")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("r")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("t")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("0")], {}, {})],
2058
2259
  closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
@@ -2068,26 +2269,29 @@ export const grammar = class RegexGrammar {
2068
2269
  const match_ = ctx.sourceTextFor(match);
2069
2270
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2070
2271
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
2071
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2272
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2072
2273
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2073
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
2074
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2075
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2076
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2077
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2078
- }, {}),
2079
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
2080
- intrinsicValue: buildString(match_),
2081
- attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
2082
- key: _t.node(_l.Spamex, "Literal", [_t.lit("closeSpan")], {}, {}),
2083
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
2084
- value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2085
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2086
- content: _t.node(_l.CSTML, "Content", [_t.lit("Escape")], {}, {}),
2087
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2088
- }, {})
2089
- }, {})],
2090
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2274
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2275
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [12, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {}))], [_t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.arr(), _t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`]]], {
2276
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2277
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2278
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2279
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2280
+ }, {}),
2281
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
2282
+ intrinsicValue: buildString(match_),
2283
+ attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
2284
+ key: _t.s_node(_l.Spamex, "Identifier", "closeSpan"),
2285
+ mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
2286
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2287
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2288
+ content: _t.node(_l.CSTML, "Content", [_t.lit("Escape")], {}, {}),
2289
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2290
+ }, {})
2291
+ }, {})],
2292
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2293
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2294
+ }, {})
2091
2295
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2092
2296
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2093
2297
  content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
@@ -2099,7 +2303,7 @@ export const grammar = class RegexGrammar {
2099
2303
  cooked = escapables.get(match_) || match_;
2100
2304
  } else if (match = yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2101
2305
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
2102
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, ..._interpolateArrayChildren(getSpecialPattern(parentSpan, ctx.reifyExpression(props)), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
2306
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), ..._interpolateArrayChildren(getSpecialPattern(parentSpan, ctx.reifyExpression(props)), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
2103
2307
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2104
2308
  values: [..._interpolateArray(getSpecialPattern(parentSpan, ctx.reifyExpression(props)))],
2105
2309
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
@@ -2108,26 +2312,29 @@ export const grammar = class RegexGrammar {
2108
2312
  const match_ = ctx.sourceTextFor(match);
2109
2313
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2110
2314
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
2111
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2315
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2112
2316
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2113
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
2114
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2115
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2116
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2117
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2118
- }, {}),
2119
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
2120
- intrinsicValue: buildString(match_),
2121
- attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
2122
- key: _t.node(_l.Spamex, "Literal", [_t.lit("closeSpan")], {}, {}),
2123
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
2124
- value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2125
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2126
- content: _t.node(_l.CSTML, "Content", [_t.lit("Escape")], {}, {}),
2127
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2128
- }, {})
2129
- }, {})],
2130
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2317
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2318
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [12, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {}))], [_t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.arr(), _t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`]]], {
2319
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2320
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2321
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2322
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2323
+ }, {}),
2324
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
2325
+ intrinsicValue: buildString(match_),
2326
+ attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
2327
+ key: _t.s_node(_l.Spamex, "Identifier", "closeSpan"),
2328
+ mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
2329
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2330
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2331
+ content: _t.node(_l.CSTML, "Content", [_t.lit("Escape")], {}, {}),
2332
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2333
+ }, {})
2334
+ }, {})],
2335
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2336
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2337
+ }, {})
2131
2338
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2132
2339
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2133
2340
  content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
@@ -2139,12 +2346,12 @@ export const grammar = class RegexGrammar {
2139
2346
  cooked = ctx.sourceTextFor(match);
2140
2347
  } else if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2141
2348
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
2142
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
2349
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
2143
2350
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2144
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
2351
+ values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
2145
2352
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
2146
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
2147
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
2353
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
2354
+ elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
2148
2355
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
2149
2356
  elements: [_t.node(_l.Regex, "Character", [_t.lit("u")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("x")], {}, {})],
2150
2357
  closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
@@ -2159,22 +2366,25 @@ export const grammar = class RegexGrammar {
2159
2366
  }, {})) {
2160
2367
  const codeNode = yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2161
2368
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
2162
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2369
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2163
2370
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2164
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
2165
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2166
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
2167
- type: _t.s_node(_l.Spamex, "Identifier", "EscapeCode"),
2168
- attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
2169
- key: _t.node(_l.Spamex, "Literal", [_t.lit("closeSpan")], {}, {}),
2170
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
2171
- value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2172
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2173
- content: _t.node(_l.CSTML, "Content", [_t.lit("Escape")], {}, {}),
2174
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2175
- }, {})
2176
- }, {})],
2177
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2371
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2372
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [10, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {}))], [_t.ref`attributes[]`, _t.arr(), _t.ref`attributes[]`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`]]], {
2373
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2374
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
2375
+ type: _t.s_node(_l.Spamex, "Identifier", "EscapeCode"),
2376
+ attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
2377
+ key: _t.s_node(_l.Spamex, "Identifier", "closeSpan"),
2378
+ mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
2379
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2380
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2381
+ content: _t.node(_l.CSTML, "Content", [_t.lit("Escape")], {}, {}),
2382
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2383
+ }, {})
2384
+ }, {})],
2385
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2386
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2387
+ }, {})
2178
2388
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2179
2389
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2180
2390
  content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
@@ -2195,7 +2405,7 @@ export const grammar = class RegexGrammar {
2195
2405
  }
2196
2406
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2197
2407
  verb: _t.s_node(_l.Instruction, "Identifier", "bindAttribute"),
2198
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(buildString(cooked), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
2408
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(buildString(cooked), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
2199
2409
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2200
2410
  values: [_t.s_node(_l.Instruction, "Identifier", "cooked"), ..._interpolateArray(buildString(cooked))],
2201
2411
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
@@ -2205,21 +2415,24 @@ export const grammar = class RegexGrammar {
2205
2415
  *EscapeCode() {
2206
2416
  if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2207
2417
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
2208
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2418
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2209
2419
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2210
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
2211
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2212
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2213
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2214
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2215
- }, {}),
2216
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
2217
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2218
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2219
- content: _t.node(_l.CSTML, "Content", [_t.lit("u")], {}, {}),
2220
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2221
- }, {}),
2222
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2420
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2421
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
2422
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2423
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2424
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2425
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2426
+ }, {}),
2427
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
2428
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2429
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2430
+ content: _t.node(_l.CSTML, "Content", [_t.lit("u")], {}, {}),
2431
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2432
+ }, {}),
2433
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2434
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2435
+ }, {})
2223
2436
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2224
2437
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2225
2438
  content: _t.node(_l.CSTML, "Content", [_t.lit("type")], {}, {}),
@@ -2230,21 +2443,24 @@ export const grammar = class RegexGrammar {
2230
2443
  }, {})) {
2231
2444
  if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2232
2445
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
2233
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2446
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2234
2447
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2235
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
2236
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2237
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2238
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2239
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2240
- }, {}),
2241
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
2242
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2243
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2244
- content: _t.node(_l.CSTML, "Content", [_t.lit("{")], {}, {}),
2245
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2246
- }, {}),
2247
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2448
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2449
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
2450
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2451
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2452
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2453
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2454
+ }, {}),
2455
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
2456
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2457
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2458
+ content: _t.node(_l.CSTML, "Content", [_t.lit("{")], {}, {}),
2459
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2460
+ }, {}),
2461
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2462
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2463
+ }, {})
2248
2464
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2249
2465
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2250
2466
  content: _t.node(_l.CSTML, "Content", [_t.lit("openToken")], {}, {}),
@@ -2255,13 +2471,16 @@ export const grammar = class RegexGrammar {
2255
2471
  }, {})) {
2256
2472
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2257
2473
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
2258
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2474
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2259
2475
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2260
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
2261
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2262
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
2263
- type: _t.s_node(_l.Spamex, "Identifier", "Digits"),
2264
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2476
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2477
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
2478
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2479
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
2480
+ type: _t.s_node(_l.Spamex, "Identifier", "Digits"),
2481
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2482
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2483
+ }, {})
2265
2484
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2266
2485
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2267
2486
  content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
@@ -2272,21 +2491,24 @@ export const grammar = class RegexGrammar {
2272
2491
  }, {});
2273
2492
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2274
2493
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
2275
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2494
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2276
2495
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2277
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
2278
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2279
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2280
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2281
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2282
- }, {}),
2283
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
2284
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2285
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2286
- content: _t.node(_l.CSTML, "Content", [_t.lit("}")], {}, {}),
2287
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2288
- }, {}),
2289
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2496
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2497
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
2498
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2499
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2500
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2501
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2502
+ }, {}),
2503
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
2504
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2505
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2506
+ content: _t.node(_l.CSTML, "Content", [_t.lit("}")], {}, {}),
2507
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2508
+ }, {}),
2509
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2510
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2511
+ }, {})
2290
2512
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2291
2513
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2292
2514
  content: _t.node(_l.CSTML, "Content", [_t.lit("closeToken")], {}, {}),
@@ -2298,32 +2520,35 @@ export const grammar = class RegexGrammar {
2298
2520
  } else {
2299
2521
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2300
2522
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
2301
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2523
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2302
2524
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2303
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
2304
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2305
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
2306
- type: _t.s_node(_l.Spamex, "Identifier", "Digits"),
2307
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
2308
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
2309
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
2310
- elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`openToken`, _t.ref`min`, _t.ref`closeToken`], {
2311
- element: _t.node(_l.Regex, "DigitCharacterSet", [_t.ref`escapeToken`, _t.ref`value`], {
2312
- escapeToken: _t.s_i_node(_l.Regex, "Punctuator", "\\"),
2313
- value: _t.s_i_node(_l.Regex, "Keyword", "d")
2314
- }, {}),
2315
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "{"),
2316
- min: _t.node(_l.Regex, "Number", [_t.lit("4")], {}, {}),
2317
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "}")
2318
- }, {
2319
- min: 4,
2320
- max: undefined,
2321
- greedy: true
2322
- })]
2323
- }, {})],
2324
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
2325
- }, {}),
2326
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2525
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2526
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
2527
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2528
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
2529
+ type: _t.s_node(_l.Spamex, "Identifier", "Digits"),
2530
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
2531
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
2532
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
2533
+ elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`openToken`, _t.ref`min`, _t.ref`closeToken`], {
2534
+ element: _t.node(_l.Regex, "DigitCharacterSet", [_t.ref`escapeToken`, _t.ref`value`], {
2535
+ escapeToken: _t.s_i_node(_l.Regex, "Punctuator", "\\"),
2536
+ value: _t.s_i_node(_l.Regex, "Keyword", "d")
2537
+ }, {}),
2538
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "{"),
2539
+ min: _t.node(_l.Regex, "Number", [_t.lit("4")], {}, {}),
2540
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "}")
2541
+ }, {
2542
+ min: 4,
2543
+ max: undefined,
2544
+ greedy: true
2545
+ })]
2546
+ }, {})],
2547
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
2548
+ }, {}),
2549
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2550
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2551
+ }, {})
2327
2552
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2328
2553
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2329
2554
  content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
@@ -2334,7 +2559,7 @@ export const grammar = class RegexGrammar {
2334
2559
  }, {});
2335
2560
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2336
2561
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
2337
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2562
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2338
2563
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2339
2564
  values: [_t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
2340
2565
  sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
@@ -2349,21 +2574,24 @@ export const grammar = class RegexGrammar {
2349
2574
  }
2350
2575
  } else if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2351
2576
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
2352
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2577
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2353
2578
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2354
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
2355
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2356
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2357
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2358
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2359
- }, {}),
2360
- type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
2361
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2362
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2363
- content: _t.node(_l.CSTML, "Content", [_t.lit("x")], {}, {}),
2364
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2365
- }, {}),
2366
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2579
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2580
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
2581
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2582
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
2583
+ intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
2584
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2585
+ }, {}),
2586
+ type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
2587
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2588
+ openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2589
+ content: _t.node(_l.CSTML, "Content", [_t.lit("x")], {}, {}),
2590
+ closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
2591
+ }, {}),
2592
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2593
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2594
+ }, {})
2367
2595
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2368
2596
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2369
2597
  content: _t.node(_l.CSTML, "Content", [_t.lit("type")], {}, {}),
@@ -2374,7 +2602,7 @@ export const grammar = class RegexGrammar {
2374
2602
  }, {})) {
2375
2603
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2376
2604
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
2377
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2605
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2378
2606
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2379
2607
  values: [_t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
2380
2608
  sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
@@ -2388,32 +2616,35 @@ export const grammar = class RegexGrammar {
2388
2616
  }, {});
2389
2617
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2390
2618
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
2391
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2619
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2392
2620
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2393
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
2394
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2395
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
2396
- type: _t.s_node(_l.Spamex, "Identifier", "Digits"),
2397
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
2398
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
2399
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
2400
- elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`openToken`, _t.ref`min`, _t.ref`closeToken`], {
2401
- element: _t.node(_l.Regex, "DigitCharacterSet", [_t.ref`escapeToken`, _t.ref`value`], {
2402
- escapeToken: _t.s_i_node(_l.Regex, "Punctuator", "\\"),
2403
- value: _t.s_i_node(_l.Regex, "Keyword", "d")
2404
- }, {}),
2405
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "{"),
2406
- min: _t.node(_l.Regex, "Number", [_t.lit("2")], {}, {}),
2407
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "}")
2408
- }, {
2409
- min: 2,
2410
- max: undefined,
2411
- greedy: true
2412
- })]
2413
- }, {})],
2414
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
2415
- }, {}),
2416
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2621
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2622
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
2623
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2624
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
2625
+ type: _t.s_node(_l.Spamex, "Identifier", "Digits"),
2626
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
2627
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
2628
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
2629
+ elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`openToken`, _t.ref`min`, _t.ref`closeToken`], {
2630
+ element: _t.node(_l.Regex, "DigitCharacterSet", [_t.ref`escapeToken`, _t.ref`value`], {
2631
+ escapeToken: _t.s_i_node(_l.Regex, "Punctuator", "\\"),
2632
+ value: _t.s_i_node(_l.Regex, "Keyword", "d")
2633
+ }, {}),
2634
+ openToken: _t.s_i_node(_l.Regex, "Punctuator", "{"),
2635
+ min: _t.node(_l.Regex, "Number", [_t.lit("2")], {}, {}),
2636
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "}")
2637
+ }, {
2638
+ min: 2,
2639
+ max: undefined,
2640
+ greedy: true
2641
+ })]
2642
+ }, {})],
2643
+ closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
2644
+ }, {}),
2645
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2646
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2647
+ }, {})
2417
2648
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
2418
2649
  openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
2419
2650
  content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
@@ -2424,7 +2655,7 @@ export const grammar = class RegexGrammar {
2424
2655
  }, {});
2425
2656
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2426
2657
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
2427
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2658
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
2428
2659
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2429
2660
  values: [_t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
2430
2661
  sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
@@ -2441,15 +2672,18 @@ export const grammar = class RegexGrammar {
2441
2672
  *Digits() {
2442
2673
  while (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2443
2674
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
2444
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
2675
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
2445
2676
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2446
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
2447
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2448
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
2449
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2450
- }, {}),
2451
- type: _t.s_node(_l.Spamex, "Identifier", "Digit"),
2452
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2677
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
2678
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
2679
+ openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
2680
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
2681
+ tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
2682
+ }, {}),
2683
+ type: _t.s_node(_l.Spamex, "Identifier", "Digit"),
2684
+ selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
2685
+ closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
2686
+ }, {})
2453
2687
  }, {})],
2454
2688
  closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
2455
2689
  }, {})
@@ -2458,11 +2692,11 @@ export const grammar = class RegexGrammar {
2458
2692
  *Digit() {
2459
2693
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
2460
2694
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
2461
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
2695
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
2462
2696
  openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
2463
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
2697
+ values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
2464
2698
  openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
2465
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
2699
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
2466
2700
  elements: [_t.node(_l.Regex, "DigitCharacterSet", [_t.ref`escapeToken`, _t.ref`value`], {
2467
2701
  escapeToken: _t.s_i_node(_l.Regex, "Punctuator", "\\"),
2468
2702
  value: _t.s_i_node(_l.Regex, "Keyword", "d")