@bablr/language-en-spamex 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,15 +1,15 @@
1
1
  /* @macrome
2
2
  * @generatedby @bablr/macrome-generator-bablr
3
- * @generatedfrom ./grammar.macro.js#947c1c880e407496daeaf713698fdd425fcfa3dd
3
+ * @generatedfrom ./grammar.macro.js#504bb9fbdbabe4d9286f5687e8ce2e2d71e82fa2
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
  */
7
7
  import _applyDecs from "@babel/runtime/helpers/applyDecs2305";
8
- import { interpolateArray as _interpolateArray, interpolateArrayChildren as _interpolateArrayChildren, interpolateString as _interpolateString } from "@bablr/agast-helpers/template";
8
+ import { interpolateArray as _interpolateArray, interpolateFragmentChildren as _interpolateFragmentChildren, interpolateString as _interpolateString } from "@bablr/agast-helpers/template";
9
9
  import * as _l from "@bablr/agast-vm-helpers/languages";
10
10
  import * as _t from "@bablr/agast-helpers/shorthand";
11
11
  let _initProto, _MatcherDecs, _NodeMatcherDecs, _CloseNodeMatcherDecs, _BooleanAttributeDecs, _MappingAttributeDecs, _StringMatcherDecs, _StringDecs, _RegexDecs, _ListDecs, _PunctuatorDecs, _AnyDecs;
12
- import { Node, CoveredBy, InjectFrom } from '@bablr/helpers/decorators';
12
+ import { Node, CoveredBy, InjectFrom, UnboundAttributes } from '@bablr/helpers/decorators';
13
13
  import * as productions from '@bablr/helpers/productions';
14
14
  import * as Regex from '@bablr/language-en-regex-vm-pattern';
15
15
  import * as CSTML from '@bablr/language-en-cstml';
@@ -26,105 +26,87 @@ const {
26
26
  } = CSTML;
27
27
  export const grammar = class SpamexGrammar {
28
28
  static {
29
- [_initProto] = _applyDecs(this, [[Node, 2, "Pattern"], [_MatcherDecs, 2, "Matcher"], [_NodeMatcherDecs, 2, "NodeMatcher"], [Node, 2, "OpenNodeMatcher"], [_CloseNodeMatcherDecs, 2, "CloseNodeMatcher"], [_BooleanAttributeDecs, 2, "BooleanAttribute"], [_MappingAttributeDecs, 2, "MappingAttribute"], [_StringMatcherDecs, 2, "StringMatcher"], [_StringDecs, 2, "String"], [_RegexDecs, 2, "Regex"], [_ListDecs, 2, "List"], [_PunctuatorDecs, 2, "Punctuator"], [_AnyDecs, 2, "Any"]], []).e;
29
+ [_initProto] = _applyDecs(this, [[_MatcherDecs, 2, "Matcher"], [_NodeMatcherDecs, 2, "NodeMatcher"], [Node, 2, "OpenNodeMatcher"], [_CloseNodeMatcherDecs, 2, "CloseNodeMatcher"], [_BooleanAttributeDecs, 2, "BooleanAttribute"], [_MappingAttributeDecs, 2, "MappingAttribute"], [_StringMatcherDecs, 2, "StringMatcher"], [_StringDecs, 2, "String"], [_RegexDecs, 2, "Regex"], [_ListDecs, 2, "List"], [_PunctuatorDecs, 2, "Punctuator"], [_AnyDecs, 2, "Any"]], []).e;
30
30
  }
31
31
  constructor() {
32
32
  _initProto(this);
33
33
  }
34
- *[(_MatcherDecs = CoveredBy('Expression'), _NodeMatcherDecs = [Node, CoveredBy('Matcher')], _CloseNodeMatcherDecs = [Node, CoveredBy('Matcher')], _BooleanAttributeDecs = [CoveredBy('Attribute'), Node], _MappingAttributeDecs = [CoveredBy('Attribute'), Node], _StringMatcherDecs = [CoveredBy('Matcher'), CoveredBy('Expression')], _StringDecs = [CoveredBy('StringMatcher'), CoveredBy('Matcher'), CoveredBy('Expression'), Node], _RegexDecs = [CoveredBy('StringMatcher'), CoveredBy('Matcher'), CoveredBy('Expression'), Node], _ListDecs = InjectFrom(productions), _PunctuatorDecs = [Node, InjectFrom(productions)], _AnyDecs = InjectFrom(productions), "Pattern")]() {
35
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
36
- verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
37
- 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`], {
38
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
39
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
40
- 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`], {
41
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
42
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
43
- type: _t.s_node(_l.Spamex, "Identifier", "Matcher"),
44
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
45
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
46
- }, {})
47
- }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
48
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
49
- content: _t.node(_l.CSTML, "Content", [_t.lit("matcher")], {}, {}),
50
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
51
- }, {})],
52
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
53
- }, {})
54
- }, {});
55
- }
56
- *Matcher() {
34
+ *[(_MatcherDecs = CoveredBy('Expression'), _NodeMatcherDecs = [Node, CoveredBy('Matcher')], _CloseNodeMatcherDecs = [Node, CoveredBy('Matcher')], _BooleanAttributeDecs = [UnboundAttributes(['true']), Node, CoveredBy('Attribute')], _MappingAttributeDecs = [CoveredBy('Attribute'), Node], _StringMatcherDecs = [CoveredBy('Matcher'), CoveredBy('Expression')], _StringDecs = [CoveredBy('StringMatcher'), CoveredBy('Matcher'), CoveredBy('Expression'), Node], _RegexDecs = [CoveredBy('StringMatcher'), CoveredBy('Matcher'), CoveredBy('Expression'), Node], _ListDecs = InjectFrom(productions), _PunctuatorDecs = [Node, InjectFrom(productions)], _AnyDecs = InjectFrom(productions), "Matcher")]() {
57
35
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
58
36
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
59
37
  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`]]], {
60
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
38
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
61
39
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
62
40
  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`], {
63
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
41
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
64
42
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
65
43
  type: _t.s_node(_l.Spamex, "Identifier", "Any"),
66
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
67
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
44
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
45
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
68
46
  }, {})
69
47
  }, {}), _t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
70
- sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
48
+ sigilToken: _t.s_node(_l.Instruction, "Keyword", "null")
71
49
  }, {}), _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`]]], {
72
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "["),
50
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "["),
73
51
  elements: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
74
52
  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`], {
75
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
53
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
76
54
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
77
55
  type: _t.s_node(_l.Spamex, "Identifier", "NodeMatcher"),
78
56
  intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
79
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
57
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
80
58
  content: _t.node(_l.CSTML, "Content", [_t.lit("<")], {}, {}),
81
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
59
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
82
60
  }, {}),
83
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
84
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
61
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
62
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
85
63
  }, {})
86
64
  }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
87
65
  open: _t.node(_l.Spamex, "OpenNodeMatcher", [10, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`], [_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`]]], {
88
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
66
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
89
67
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
90
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
91
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
92
- type: _t.s_node(_l.Spamex, "Identifier", "String"),
68
+ language: _t.node(_l.CSTML, "IdentifierPath", [_t.ref`segments[]`, _t.arr(), _t.ref`segments[]`], {
69
+ segments: [_t.s_node(_l.CSTML, "Identifier", "CSTML")]
70
+ }, {}),
71
+ namespaceSeparatorToken: _t.s_node(_l.CSTML, "Punctuator", ":"),
72
+ type: _t.s_node(_l.CSTML, "Identifier", "String"),
93
73
  intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
94
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
74
+ openToken: _t.s_node(_l.Regex, "Punctuator", "/"),
95
75
  alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
96
76
  elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
97
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
77
+ openToken: _t.s_node(_l.Regex, "Punctuator", "["),
98
78
  elements: [_t.node(_l.Regex, "Character", [_t.lit("'")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("\"")], {}, {})],
99
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
79
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "]")
100
80
  }, {
101
81
  negate: false
102
82
  })]
103
83
  }, {})],
104
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
84
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "/")
105
85
  }, {}),
106
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
107
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
86
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
87
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
108
88
  }, {})
109
89
  }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
110
90
  open: _t.node(_l.Spamex, "OpenNodeMatcher", [10, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`], [_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`]]], {
111
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
91
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
112
92
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
113
- language: _t.s_node(_l.Spamex, "Identifier", "Regex"),
114
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
115
- type: _t.s_node(_l.Spamex, "Identifier", "Pattern"),
93
+ language: _t.node(_l.CSTML, "IdentifierPath", [_t.ref`segments[]`, _t.arr(), _t.ref`segments[]`], {
94
+ segments: [_t.s_node(_l.CSTML, "Identifier", "Regex")]
95
+ }, {}),
96
+ namespaceSeparatorToken: _t.s_node(_l.CSTML, "Punctuator", ":"),
97
+ type: _t.s_node(_l.CSTML, "Identifier", "Pattern"),
116
98
  intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
117
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
99
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
118
100
  content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
119
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
101
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
120
102
  }, {}),
121
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
122
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
103
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
104
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
123
105
  }, {})
124
106
  }, {})],
125
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "]")
107
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", "]")
126
108
  }, {})],
127
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
109
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
128
110
  }, {})
129
111
  }, {});
130
112
  }
@@ -132,59 +114,52 @@ export const grammar = class SpamexGrammar {
132
114
  let open = yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
133
115
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
134
116
  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`], {
135
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
117
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
136
118
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
137
119
  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`], {
138
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
120
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
139
121
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
140
122
  type: _t.s_node(_l.Spamex, "Identifier", "OpenNodeMatcher"),
141
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
142
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
123
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
124
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
143
125
  }, {})
144
126
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
145
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
127
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
146
128
  content: _t.node(_l.CSTML, "Content", [_t.lit("open")], {}, {}),
147
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
129
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
148
130
  }, {})],
149
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
131
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
150
132
  }, {})
151
133
  }, {});
152
-
153
- // Problem: not handling gaps
154
- // gaps have a non-nullish representation
155
- //
156
- const {
157
- selfClosingTagToken
158
- } = open.properties;
159
- const selfClosing = notNull(selfClosingTagToken);
134
+ const selfClosing = notNull(open.get('selfClosingTagToken'));
160
135
  if (selfClosing) {
161
136
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
162
137
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
163
138
  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`], {
164
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
139
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
165
140
  values: [_t.node(_l.Instruction, "Array", [_t.ref`openToken`, _t.ref`closeToken`], {
166
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "["),
167
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "]")
141
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "["),
142
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", "]")
168
143
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
169
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
170
- content: _t.node(_l.CSTML, "Content", [_t.lit("children[]")], {}, {}),
171
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
144
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
145
+ content: _t.node(_l.CSTML, "Content", [_t.lit("children[]$")], {}, {}),
146
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
172
147
  }, {})],
173
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
148
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
174
149
  }, {})
175
150
  }, {});
176
151
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
177
152
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
178
153
  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`], {
179
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
154
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
180
155
  values: [_t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
181
- sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
156
+ sigilToken: _t.s_node(_l.Instruction, "Keyword", "null")
182
157
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
183
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
158
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
184
159
  content: _t.node(_l.CSTML, "Content", [_t.lit("close")], {}, {}),
185
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
160
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
186
161
  }, {})],
187
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
162
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
188
163
  }, {})
189
164
  }, {});
190
165
  } else {
@@ -193,21 +168,21 @@ export const grammar = class SpamexGrammar {
193
168
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
194
169
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
195
170
  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`], {
196
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
171
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
197
172
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
198
173
  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`], {
199
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
174
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
200
175
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
201
176
  type: _t.s_node(_l.Spamex, "Identifier", "CloseNodeMatcher"),
202
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
203
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
177
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
178
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
204
179
  }, {})
205
180
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
206
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
181
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
207
182
  content: _t.node(_l.CSTML, "Content", [_t.lit("close")], {}, {}),
208
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
183
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
209
184
  }, {})],
210
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
185
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
211
186
  }, {})
212
187
  }, {});
213
188
  }
@@ -216,388 +191,201 @@ export const grammar = class SpamexGrammar {
216
191
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
217
192
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
218
193
  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`], {
219
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
194
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
220
195
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
221
196
  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`]]], {
222
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
223
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
224
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
225
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
197
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
198
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
199
+ tokenToken: _t.s_node(_l.CSTML, "Punctuator", "*")
226
200
  }, {}),
227
201
  type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
228
202
  intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
229
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
203
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
230
204
  content: _t.node(_l.CSTML, "Content", [_t.lit("<")], {}, {}),
231
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
205
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
232
206
  }, {}),
233
207
  attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
234
208
  key: _t.s_node(_l.Spamex, "Identifier", "balancedSpan"),
235
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
209
+ mapToken: _t.s_node(_l.Spamex, "Punctuator", "="),
236
210
  value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
237
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
211
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
238
212
  content: _t.node(_l.CSTML, "Content", [_t.lit("Tag")], {}, {}),
239
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
213
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
240
214
  }, {})
241
215
  }, {}), _t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
242
216
  key: _t.s_node(_l.Spamex, "Identifier", "balanced"),
243
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
217
+ mapToken: _t.s_node(_l.Spamex, "Punctuator", "="),
244
218
  value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
245
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
219
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
246
220
  content: _t.node(_l.CSTML, "Content", [_t.lit(">")], {}, {}),
247
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
221
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
248
222
  }, {})
249
223
  }, {})],
250
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
251
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
224
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
225
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
252
226
  }, {})
253
227
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
254
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
228
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
255
229
  content: _t.node(_l.CSTML, "Content", [_t.lit("open")], {}, {}),
256
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
230
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
257
231
  }, {})],
258
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
232
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
259
233
  }, {})
260
234
  }, {});
261
235
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
262
236
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
263
237
  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`], {
264
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
238
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
265
239
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
266
240
  open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
267
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
241
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
268
242
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
269
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
270
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
271
- type: _t.s_node(_l.Spamex, "Identifier", "Flags"),
272
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
273
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
243
+ language: _t.node(_l.CSTML, "IdentifierPath", [_t.ref`segments[]`, _t.arr(), _t.ref`segments[]`], {
244
+ segments: [_t.s_node(_l.CSTML, "Identifier", "CSTML")]
245
+ }, {}),
246
+ namespaceSeparatorToken: _t.s_node(_l.CSTML, "Punctuator", ":"),
247
+ type: _t.s_node(_l.CSTML, "Identifier", "Flags"),
248
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
249
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
274
250
  }, {})
275
251
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
276
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
252
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
277
253
  content: _t.node(_l.CSTML, "Content", [_t.lit("flags")], {}, {}),
278
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
254
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
279
255
  }, {})],
280
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
256
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
281
257
  }, {})
282
258
  }, {});
283
259
  if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
284
- verb: _t.s_node(_l.Instruction, "Identifier", "match"),
285
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
286
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
287
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
288
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
289
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`], {
290
- elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
291
- element: _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
292
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
293
- elements: [_t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
294
- min: _t.node(_l.Regex, "Character", [_t.lit("a")], {}, {}),
295
- rangeToken: _t.s_i_node(_l.Regex, "Punctuator", "-"),
296
- max: _t.node(_l.Regex, "Character", [_t.lit("z")], {}, {})
297
- }, {}), _t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
298
- min: _t.node(_l.Regex, "Character", [_t.lit("A")], {}, {}),
299
- rangeToken: _t.s_i_node(_l.Regex, "Punctuator", "-"),
300
- max: _t.node(_l.Regex, "Character", [_t.lit("Z")], {}, {})
301
- }, {})],
302
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
303
- }, {
304
- negate: false
305
- }),
306
- value: _t.s_i_node(_l.Regex, "Keyword", "+")
307
- }, {
308
- min: 1,
309
- max: Infinity,
310
- greedy: true
311
- }), _t.node(_l.Regex, "Character", [_t.lit(":")], {}, {})]
312
- }, {})],
313
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
314
- }, {})],
315
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
316
- }, {})
317
- }, {})) {
318
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
319
- verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
320
- 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`], {
321
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
322
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
323
- open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
324
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
325
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
326
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
327
- }, {}),
328
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
329
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
330
- type: _t.s_node(_l.Spamex, "Identifier", "Identifier"),
331
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
332
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
333
- }, {})
334
- }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
335
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
336
- content: _t.node(_l.CSTML, "Content", [_t.lit("language")], {}, {}),
337
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
338
- }, {})],
339
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
340
- }, {})
341
- }, {});
342
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
343
- verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
344
- 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`], {
345
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
346
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
347
- 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`], {
348
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
349
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
350
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
351
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
352
- }, {}),
353
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
354
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
355
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
356
- content: _t.node(_l.CSTML, "Content", [_t.lit(":")], {}, {}),
357
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
358
- }, {}),
359
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
360
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
361
- }, {})
362
- }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
363
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
364
- content: _t.node(_l.CSTML, "Content", [_t.lit("namespaceOperator")], {}, {}),
365
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
366
- }, {})],
367
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
368
- }, {})
369
- }, {});
370
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
371
- verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
372
- 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`], {
373
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
374
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
375
- open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
376
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
377
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
378
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
379
- }, {}),
380
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
381
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
382
- type: _t.s_node(_l.Spamex, "Identifier", "Identifier"),
383
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
384
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
385
- }, {})
386
- }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
387
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
388
- content: _t.node(_l.CSTML, "Content", [_t.lit("type")], {}, {}),
389
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
390
- }, {})],
391
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
392
- }, {})
393
- }, {});
394
- } else if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
395
- verb: _t.s_node(_l.Instruction, "Identifier", "match"),
260
+ verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
396
261
  arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
397
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
398
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
399
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
400
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
401
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
402
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
403
- elements: [_t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
404
- min: _t.node(_l.Regex, "Character", [_t.lit("a")], {}, {}),
405
- rangeToken: _t.s_i_node(_l.Regex, "Punctuator", "-"),
406
- max: _t.node(_l.Regex, "Character", [_t.lit("z")], {}, {})
407
- }, {}), _t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
408
- min: _t.node(_l.Regex, "Character", [_t.lit("A")], {}, {}),
409
- rangeToken: _t.s_i_node(_l.Regex, "Punctuator", "-"),
410
- max: _t.node(_l.Regex, "Character", [_t.lit("Z")], {}, {})
262
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
263
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
264
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [10, [[_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`], [_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`]]], {
265
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
266
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
267
+ language: _t.node(_l.CSTML, "IdentifierPath", [_t.ref`segments[]`, _t.arr(), _t.ref`segments[]`], {
268
+ segments: [_t.s_node(_l.CSTML, "Identifier", "CSTML")]
269
+ }, {}),
270
+ namespaceSeparatorToken: _t.s_node(_l.CSTML, "Punctuator", ":"),
271
+ type: _t.s_node(_l.CSTML, "Identifier", "TagType"),
272
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
273
+ openToken: _t.s_node(_l.Regex, "Punctuator", "/"),
274
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
275
+ elements: [_t.node(_l.Regex, "CharacterClass", [9, [[_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`closeToken`]]], {
276
+ openToken: _t.s_node(_l.Regex, "Punctuator", "["),
277
+ elements: [_t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
278
+ min: _t.node(_l.Regex, "Character", [_t.lit("a")], {}, {}),
279
+ rangeToken: _t.s_node(_l.Regex, "Punctuator", "-"),
280
+ max: _t.node(_l.Regex, "Character", [_t.lit("z")], {}, {})
281
+ }, {}), _t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
282
+ min: _t.node(_l.Regex, "Character", [_t.lit("A")], {}, {}),
283
+ rangeToken: _t.s_node(_l.Regex, "Punctuator", "-"),
284
+ max: _t.node(_l.Regex, "Character", [_t.lit("Z")], {}, {})
285
+ }, {}), _t.node(_l.Regex, "Character", [_t.lit("'")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("\"")], {}, {}), _t.node(_l.Regex, "Gap", [_t.ref`escapeToken`, _t.ref`value`], {
286
+ escapeToken: _t.s_node(_l.Regex, "Punctuator", "\\"),
287
+ value: _t.s_node(_l.Regex, "Keyword", "g")
288
+ }, {})],
289
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "]")
290
+ }, {
291
+ negate: false
292
+ })]
411
293
  }, {})],
412
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
413
- }, {
414
- negate: false
415
- })]
416
- }, {})],
417
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
294
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "/")
295
+ }, {}),
296
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
297
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
298
+ }, {})
418
299
  }, {})],
419
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
300
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
420
301
  }, {})
421
302
  }, {})) {
422
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
423
- verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
424
- 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`], {
425
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
426
- values: [_t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
427
- sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
428
- }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
429
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
430
- content: _t.node(_l.CSTML, "Content", [_t.lit("language")], {}, {}),
431
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
432
- }, {})],
433
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
434
- }, {})
435
- }, {});
436
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
437
- verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
438
- 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`], {
439
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
440
- values: [_t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
441
- sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
442
- }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
443
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
444
- content: _t.node(_l.CSTML, "Content", [_t.lit("namespaceOperator")], {}, {}),
445
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
446
- }, {})],
447
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
448
- }, {})
449
- }, {});
450
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
451
- verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
452
- 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`], {
453
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
454
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
455
- open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
456
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
457
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
458
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
459
- }, {}),
460
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
461
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
462
- type: _t.s_node(_l.Spamex, "Identifier", "Identifier"),
463
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
464
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
465
- }, {})
466
- }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
467
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
468
- content: _t.node(_l.CSTML, "Content", [_t.lit("type")], {}, {}),
469
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
470
- }, {})],
471
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
472
- }, {})
473
- }, {});
303
+ // continue
474
304
  } else if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
475
- verb: _t.s_node(_l.Instruction, "Identifier", "match"),
476
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
477
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
478
- values: [_t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
479
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
480
- content: _t.node(_l.CSTML, "Content", [_t.lit("?")], {}, {}),
481
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
305
+ verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
306
+ 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`], {
307
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
308
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
309
+ 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`], {
310
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
311
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
312
+ tokenToken: _t.s_node(_l.CSTML, "Punctuator", "*")
313
+ }, {}),
314
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
315
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [9, [[_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`]]], {
316
+ openToken: _t.s_node(_l.Regex, "Punctuator", "/"),
317
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
318
+ elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
319
+ element: _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
320
+ openToken: _t.s_node(_l.Regex, "Punctuator", "["),
321
+ elements: [_t.node(_l.Regex, "Character", [_t.lit(" ")], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\t")], {}, {
322
+ cooked: "\t"
323
+ }))], {}, {})],
324
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "]")
325
+ }, {
326
+ negate: false
327
+ }),
328
+ value: _t.s_node(_l.Regex, "Keyword", "+")
329
+ }, {
330
+ min: 1,
331
+ max: Infinity,
332
+ greedy: true
333
+ })]
334
+ }, {}), _t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
335
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("?")], {}, {})]
336
+ }, {})],
337
+ separators: [_t.s_node(_l.Regex, "Punctuator", "|")],
338
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "/")
339
+ }, {}),
340
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
341
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
342
+ }, {})
343
+ }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
344
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
345
+ content: _t.node(_l.CSTML, "Content", [_t.lit("type$")], {}, {}),
346
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
482
347
  }, {})],
483
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
348
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
484
349
  }, {})
485
350
  }, {})) {
486
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
487
- verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
488
- 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`], {
489
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
490
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
491
- 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`], {
492
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
493
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
494
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
495
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
496
- }, {}),
497
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
498
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
499
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
500
- content: _t.node(_l.CSTML, "Content", [_t.lit("?")], {}, {}),
501
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
502
- }, {}),
503
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
504
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
505
- }, {})
506
- }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
507
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
508
- content: _t.node(_l.CSTML, "Content", [_t.lit("type")], {}, {}),
509
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
510
- }, {})],
511
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
512
- }, {})
513
- }, {});
514
- } else if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
351
+ // continue
352
+ }
353
+ let sp = yield* eatMatchTrivia();
354
+ if (sp && !(yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
515
355
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
516
356
  arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
517
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
357
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
518
358
  values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
519
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
520
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
521
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
522
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
523
- elements: [_t.node(_l.Regex, "Character", [_t.lit(" ")], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\t")], {}, {
524
- cooked: "\t"
525
- }))], {}, {})],
526
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
527
- }, {
528
- negate: false
529
- })]
359
+ openToken: _t.s_node(_l.Regex, "Punctuator", "/"),
360
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`], {
361
+ elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\/")], {}, {
362
+ cooked: "/"
363
+ }))], {}, {}), _t.node(_l.Regex, "EndOfInputAssertion", [_t.ref`sigilToken`], {
364
+ sigilToken: _t.s_node(_l.Regex, "Keyword", "$")
365
+ }, {})]
530
366
  }, {})],
531
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
367
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "/")
532
368
  }, {})],
533
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
369
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
534
370
  }, {})
535
- }, {})) {
536
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
537
- verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
538
- 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`], {
539
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
540
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
541
- 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`], {
542
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
543
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
544
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
545
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
546
- }, {}),
547
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
548
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
549
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
550
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
551
- elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
552
- element: _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
553
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
554
- elements: [_t.node(_l.Regex, "Character", [_t.lit(" ")], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.Regex, "Escape", [_t.lit("\\t")], {}, {
555
- cooked: "\t"
556
- }))], {}, {})],
557
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
558
- }, {
559
- negate: false
560
- }),
561
- value: _t.s_i_node(_l.Regex, "Keyword", "+")
562
- }, {
563
- min: 1,
564
- max: Infinity,
565
- greedy: true
566
- })]
567
- }, {})],
568
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
569
- }, {}),
570
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
571
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
572
- }, {})
573
- }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
574
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
575
- content: _t.node(_l.CSTML, "Content", [_t.lit("type")], {}, {}),
576
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
577
- }, {})],
578
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
579
- }, {})
580
- }, {});
581
- }
582
- let sp = yield* eatMatchTrivia();
583
- if (sp && (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
371
+ }, {})) && (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
584
372
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
585
373
  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`], {
586
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
374
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
587
375
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
588
376
  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`], {
589
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
377
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
590
378
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
591
379
  type: _t.s_node(_l.Spamex, "Identifier", "StringMatcher"),
592
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
593
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
380
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
381
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
594
382
  }, {})
595
383
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
596
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
597
- content: _t.node(_l.CSTML, "Content", [_t.lit("intrinsicValue")], {}, {}),
598
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
384
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
385
+ content: _t.node(_l.CSTML, "Content", [_t.lit("intrinsicValue$")], {}, {}),
386
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
599
387
  }, {})],
600
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
388
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
601
389
  }, {})
602
390
  }, {}))) {
603
391
  sp = yield* eatMatchTrivia();
@@ -605,56 +393,56 @@ export const grammar = class SpamexGrammar {
605
393
  while (sp && (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
606
394
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
607
395
  arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
608
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
396
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
609
397
  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", "/"),
398
+ openToken: _t.s_node(_l.Regex, "Punctuator", "/"),
611
399
  alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`], {
612
400
  elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
613
401
  element: _t.node(_l.Regex, "Character", [_t.lit("!")], {}, {}),
614
- value: _t.s_i_node(_l.Regex, "Keyword", "?")
402
+ value: _t.s_node(_l.Regex, "Keyword", "?")
615
403
  }, {
616
404
  min: 0,
617
405
  max: 1,
618
406
  greedy: true
619
407
  }), _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
620
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
408
+ openToken: _t.s_node(_l.Regex, "Punctuator", "["),
621
409
  elements: [_t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
622
410
  min: _t.node(_l.Regex, "Character", [_t.lit("a")], {}, {}),
623
- rangeToken: _t.s_i_node(_l.Regex, "Punctuator", "-"),
411
+ rangeToken: _t.s_node(_l.Regex, "Punctuator", "-"),
624
412
  max: _t.node(_l.Regex, "Character", [_t.lit("z")], {}, {})
625
413
  }, {}), _t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
626
414
  min: _t.node(_l.Regex, "Character", [_t.lit("A")], {}, {}),
627
- rangeToken: _t.s_i_node(_l.Regex, "Punctuator", "-"),
415
+ rangeToken: _t.s_node(_l.Regex, "Punctuator", "-"),
628
416
  max: _t.node(_l.Regex, "Character", [_t.lit("Z")], {}, {})
629
417
  }, {})],
630
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
418
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "]")
631
419
  }, {
632
420
  negate: false
633
421
  })]
634
422
  }, {})],
635
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
423
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "/")
636
424
  }, {})],
637
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
425
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
638
426
  }, {})
639
427
  }, {}))) {
640
428
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
641
429
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
642
430
  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`], {
643
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
431
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
644
432
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
645
433
  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`], {
646
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
434
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
647
435
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
648
436
  type: _t.s_node(_l.Spamex, "Identifier", "Attribute"),
649
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
650
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
437
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
438
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
651
439
  }, {})
652
440
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
653
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
441
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
654
442
  content: _t.node(_l.CSTML, "Content", [_t.lit("attributes[]")], {}, {}),
655
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
443
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
656
444
  }, {})],
657
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
445
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
658
446
  }, {})
659
447
  }, {});
660
448
  sp = yield* eatMatchTrivia();
@@ -662,60 +450,58 @@ export const grammar = class SpamexGrammar {
662
450
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
663
451
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
664
452
  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`], {
665
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
453
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
666
454
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
667
455
  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`], {
668
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
669
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
670
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
671
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
456
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
457
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
458
+ tokenToken: _t.s_node(_l.CSTML, "Punctuator", "*")
672
459
  }, {}),
673
460
  type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
674
461
  intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
675
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
462
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
676
463
  content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
677
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
464
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
678
465
  }, {}),
679
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
680
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
466
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
467
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
681
468
  }, {})
682
469
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
683
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
470
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
684
471
  content: _t.node(_l.CSTML, "Content", [_t.lit("selfClosingTagToken")], {}, {}),
685
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
472
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
686
473
  }, {})],
687
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
474
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
688
475
  }, {})
689
476
  }, {});
690
477
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
691
478
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
692
479
  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`], {
693
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
480
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
694
481
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
695
482
  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`]]], {
696
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
697
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
698
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
699
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
483
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
484
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
485
+ tokenToken: _t.s_node(_l.CSTML, "Punctuator", "*")
700
486
  }, {}),
701
487
  type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
702
488
  intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
703
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
489
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
704
490
  content: _t.node(_l.CSTML, "Content", [_t.lit(">")], {}, {}),
705
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
491
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
706
492
  }, {}),
707
493
  attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
708
494
  key: _t.s_node(_l.Spamex, "Identifier", "balancer")
709
495
  }, {})],
710
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
711
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
496
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
497
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
712
498
  }, {})
713
499
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
714
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
500
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
715
501
  content: _t.node(_l.CSTML, "Content", [_t.lit("close")], {}, {}),
716
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
502
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
717
503
  }, {})],
718
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
504
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
719
505
  }, {})
720
506
  }, {});
721
507
  }
@@ -723,85 +509,83 @@ export const grammar = class SpamexGrammar {
723
509
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
724
510
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
725
511
  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`], {
726
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
512
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
727
513
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
728
514
  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`]]], {
729
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
730
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
731
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
732
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
515
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
516
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
517
+ tokenToken: _t.s_node(_l.CSTML, "Punctuator", "*")
733
518
  }, {}),
734
519
  type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
735
520
  intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
736
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
521
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
737
522
  content: _t.node(_l.CSTML, "Content", [_t.lit("</")], {}, {}),
738
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
523
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
739
524
  }, {}),
740
525
  attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
741
526
  key: _t.s_node(_l.Spamex, "Identifier", "balanced"),
742
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
527
+ mapToken: _t.s_node(_l.Spamex, "Punctuator", "="),
743
528
  value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
744
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
529
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
745
530
  content: _t.node(_l.CSTML, "Content", [_t.lit(">")], {}, {}),
746
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
531
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
747
532
  }, {})
748
533
  }, {})],
749
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
750
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
534
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
535
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
751
536
  }, {})
752
537
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
753
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
538
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
754
539
  content: _t.node(_l.CSTML, "Content", [_t.lit("openToken")], {}, {}),
755
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
540
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
756
541
  }, {})],
757
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
542
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
758
543
  }, {})
759
544
  }, {});
760
545
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
761
546
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
762
547
  arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
763
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
548
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
764
549
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
765
550
  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`], {
766
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
551
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
767
552
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
768
553
  type: _t.s_node(_l.Spamex, "Identifier", "TagType"),
769
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
770
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
554
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
555
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
771
556
  }, {})
772
557
  }, {})],
773
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
558
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
774
559
  }, {})
775
560
  }, {});
776
561
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
777
562
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
778
563
  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`], {
779
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
564
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
780
565
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
781
566
  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`]]], {
782
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
783
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
784
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
785
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
567
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
568
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
569
+ tokenToken: _t.s_node(_l.CSTML, "Punctuator", "*")
786
570
  }, {}),
787
571
  type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
788
572
  intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
789
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
573
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
790
574
  content: _t.node(_l.CSTML, "Content", [_t.lit(">")], {}, {}),
791
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
575
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
792
576
  }, {}),
793
577
  attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
794
578
  key: _t.s_node(_l.Spamex, "Identifier", "balancer")
795
579
  }, {})],
796
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
797
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
580
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
581
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
798
582
  }, {})
799
583
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
800
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
584
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
801
585
  content: _t.node(_l.CSTML, "Content", [_t.lit("closeToken")], {}, {}),
802
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
586
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
803
587
  }, {})],
804
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
588
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
805
589
  }, {})
806
590
  }, {});
807
591
  }
@@ -809,41 +593,41 @@ export const grammar = class SpamexGrammar {
809
593
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
810
594
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
811
595
  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`]]], {
812
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
596
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
813
597
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
814
598
  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`], {
815
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
599
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
816
600
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
817
601
  type: _t.s_node(_l.Spamex, "Identifier", "List"),
818
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
819
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
602
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
603
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
820
604
  }, {})
821
605
  }, {}), _t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
822
- sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
606
+ sigilToken: _t.s_node(_l.Instruction, "Keyword", "null")
823
607
  }, {}), _t.node(_l.Instruction, "Object", [9, [[_t.ref`openToken`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`properties[]`, _t.arr()], [_t.ref`properties[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`properties[]`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit("\n ")], {}, {})), _t.ref`closeToken`]]], {
824
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "{"),
608
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "{"),
825
609
  properties: [_t.node(_l.Instruction, "Property", [_t.ref`key`, _t.ref`mapToken`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`value`], {
826
610
  key: _t.node(_l.Instruction, "Literal", [_t.lit("element")], {}, {}),
827
- mapToken: _t.s_i_node(_l.Instruction, "Punctuator", ":"),
611
+ mapToken: _t.s_node(_l.Instruction, "Punctuator", ":"),
828
612
  value: _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
829
613
  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`], {
830
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
614
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
831
615
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
832
616
  type: _t.s_node(_l.Spamex, "Identifier", "Attribute"),
833
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
834
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
617
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
618
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
835
619
  }, {})
836
620
  }, {})
837
621
  }, {}), _t.node(_l.Instruction, "Property", [_t.ref`key`, _t.ref`mapToken`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`value`], {
838
622
  key: _t.node(_l.Instruction, "Literal", [_t.lit("allowTrailingSeparator")], {}, {}),
839
- mapToken: _t.s_i_node(_l.Instruction, "Punctuator", ":"),
623
+ mapToken: _t.s_node(_l.Instruction, "Punctuator", ":"),
840
624
  value: _t.node(_l.Instruction, "Boolean", [_t.ref`sigilToken`], {
841
- sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "false")
625
+ sigilToken: _t.s_node(_l.Instruction, "Keyword", "false")
842
626
  }, {})
843
627
  }, {})],
844
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "}")
628
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", "}")
845
629
  }, {})],
846
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
630
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
847
631
  }, {})
848
632
  }, {});
849
633
  }
@@ -851,106 +635,165 @@ export const grammar = class SpamexGrammar {
851
635
  if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
852
636
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
853
637
  arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
854
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
638
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
855
639
  values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
856
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
640
+ openToken: _t.s_node(_l.Regex, "Punctuator", "/"),
857
641
  alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`], {
858
642
  elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
859
643
  element: _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
860
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
644
+ openToken: _t.s_node(_l.Regex, "Punctuator", "["),
861
645
  elements: [_t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
862
646
  min: _t.node(_l.Regex, "Character", [_t.lit("a")], {}, {}),
863
- rangeToken: _t.s_i_node(_l.Regex, "Punctuator", "-"),
647
+ rangeToken: _t.s_node(_l.Regex, "Punctuator", "-"),
864
648
  max: _t.node(_l.Regex, "Character", [_t.lit("z")], {}, {})
865
649
  }, {}), _t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
866
650
  min: _t.node(_l.Regex, "Character", [_t.lit("A")], {}, {}),
867
- rangeToken: _t.s_i_node(_l.Regex, "Punctuator", "-"),
651
+ rangeToken: _t.s_node(_l.Regex, "Punctuator", "-"),
868
652
  max: _t.node(_l.Regex, "Character", [_t.lit("Z")], {}, {})
869
653
  }, {})],
870
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
654
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "]")
871
655
  }, {
872
656
  negate: false
873
657
  }),
874
- value: _t.s_i_node(_l.Regex, "Keyword", "+")
658
+ value: _t.s_node(_l.Regex, "Keyword", "+")
875
659
  }, {
876
660
  min: 1,
877
661
  max: Infinity,
878
662
  greedy: true
879
663
  }), _t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
880
664
  element: _t.node(_l.Regex, "SpaceCharacterSet", [_t.ref`escapeToken`, _t.ref`value`], {
881
- escapeToken: _t.s_i_node(_l.Regex, "Punctuator", "\\"),
882
- value: _t.s_i_node(_l.Regex, "Keyword", "s")
665
+ escapeToken: _t.s_node(_l.Regex, "Punctuator", "\\"),
666
+ value: _t.s_node(_l.Regex, "Keyword", "s")
883
667
  }, {}),
884
- value: _t.s_i_node(_l.Regex, "Keyword", "*")
668
+ value: _t.s_node(_l.Regex, "Keyword", "*")
885
669
  }, {
886
670
  min: 0,
887
671
  max: Infinity,
888
672
  greedy: true
889
673
  }), _t.node(_l.Regex, "Character", [_t.lit("=")], {}, {})]
890
674
  }, {})],
891
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
675
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "/")
892
676
  }, {})],
893
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
677
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
894
678
  }, {})
895
679
  }, {})) {
896
680
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
897
681
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
898
682
  arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
899
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
683
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
900
684
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
901
685
  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`], {
902
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
686
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
903
687
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
904
688
  type: _t.s_node(_l.Spamex, "Identifier", "MappingAttribute"),
905
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
906
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
689
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
690
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
907
691
  }, {})
908
692
  }, {})],
909
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
693
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
910
694
  }, {})
911
695
  }, {});
912
696
  } else {
913
697
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
914
698
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
915
699
  arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
916
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
700
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
917
701
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
918
702
  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`], {
919
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
703
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
920
704
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
921
705
  type: _t.s_node(_l.Spamex, "Identifier", "BooleanAttribute"),
922
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
923
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
706
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
707
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
924
708
  }, {})
925
709
  }, {})],
926
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
710
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
927
711
  }, {})
928
712
  }, {});
929
713
  }
930
714
  }
931
715
  *BooleanAttribute() {
716
+ if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
717
+ verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
718
+ 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`], {
719
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
720
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
721
+ 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`], {
722
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
723
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
724
+ tokenToken: _t.s_node(_l.CSTML, "Punctuator", "*")
725
+ }, {}),
726
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
727
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
728
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
729
+ content: _t.node(_l.CSTML, "Content", [_t.lit("!")], {}, {}),
730
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
731
+ }, {}),
732
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
733
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
734
+ }, {})
735
+ }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
736
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
737
+ content: _t.node(_l.CSTML, "Content", [_t.lit("negateToken")], {}, {}),
738
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
739
+ }, {})],
740
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
741
+ }, {})
742
+ }, {})) {
743
+ yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
744
+ verb: _t.s_node(_l.Instruction, "Identifier", "bindAttribute"),
745
+ 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`], {
746
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
747
+ values: [_t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
748
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
749
+ content: _t.node(_l.CSTML, "Content", [_t.lit("true")], {}, {}),
750
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
751
+ }, {}), _t.node(_l.Instruction, "Boolean", [_t.ref`sigilToken`], {
752
+ sigilToken: _t.s_node(_l.Instruction, "Keyword", "false")
753
+ }, {})],
754
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
755
+ }, {})
756
+ }, {});
757
+ } else {
758
+ yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
759
+ verb: _t.s_node(_l.Instruction, "Identifier", "bindAttribute"),
760
+ 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`], {
761
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
762
+ values: [_t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
763
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
764
+ content: _t.node(_l.CSTML, "Content", [_t.lit("true")], {}, {}),
765
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
766
+ }, {}), _t.node(_l.Instruction, "Boolean", [_t.ref`sigilToken`], {
767
+ sigilToken: _t.s_node(_l.Instruction, "Keyword", "true")
768
+ }, {})],
769
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
770
+ }, {})
771
+ }, {});
772
+ }
932
773
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
933
774
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
934
775
  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`], {
935
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
776
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
936
777
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
937
778
  open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
938
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
779
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
939
780
  flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
940
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
781
+ tokenToken: _t.s_node(_l.CSTML, "Punctuator", "*")
782
+ }, {}),
783
+ language: _t.node(_l.CSTML, "IdentifierPath", [_t.ref`segments[]`, _t.arr(), _t.ref`segments[]`], {
784
+ segments: [_t.s_node(_l.CSTML, "Identifier", "CSTML")]
941
785
  }, {}),
942
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
943
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
944
- type: _t.s_node(_l.Spamex, "Identifier", "Identifier"),
945
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
946
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
786
+ namespaceSeparatorToken: _t.s_node(_l.CSTML, "Punctuator", ":"),
787
+ type: _t.s_node(_l.CSTML, "Identifier", "Identifier"),
788
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
789
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
947
790
  }, {})
948
791
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
949
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
950
- content: _t.node(_l.CSTML, "Content", [_t.lit("key")], {}, {}),
951
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
792
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
793
+ content: _t.node(_l.CSTML, "Content", [_t.lit("key$")], {}, {}),
794
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
952
795
  }, {})],
953
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
796
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
954
797
  }, {})
955
798
  }, {});
956
799
  }
@@ -958,75 +801,78 @@ export const grammar = class SpamexGrammar {
958
801
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
959
802
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
960
803
  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`], {
961
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
804
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
962
805
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
963
806
  open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
964
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
807
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
965
808
  flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
966
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
809
+ tokenToken: _t.s_node(_l.CSTML, "Punctuator", "*")
967
810
  }, {}),
968
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
969
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
970
- type: _t.s_node(_l.Spamex, "Identifier", "Identifier"),
971
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
972
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
811
+ language: _t.node(_l.CSTML, "IdentifierPath", [_t.ref`segments[]`, _t.arr(), _t.ref`segments[]`], {
812
+ segments: [_t.s_node(_l.CSTML, "Identifier", "CSTML")]
813
+ }, {}),
814
+ namespaceSeparatorToken: _t.s_node(_l.CSTML, "Punctuator", ":"),
815
+ type: _t.s_node(_l.CSTML, "Identifier", "Identifier"),
816
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
817
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
973
818
  }, {})
974
819
  }, {}), _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.lit("key")], {}, {}),
977
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
820
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
821
+ content: _t.node(_l.CSTML, "Content", [_t.lit("key$")], {}, {}),
822
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
978
823
  }, {})],
979
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
824
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
980
825
  }, {})
981
826
  }, {});
982
827
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
983
828
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
984
829
  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`], {
985
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
830
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
986
831
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
987
832
  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`], {
988
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
989
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
990
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
991
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
833
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
834
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
835
+ tokenToken: _t.s_node(_l.CSTML, "Punctuator", "*")
992
836
  }, {}),
993
837
  type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
994
838
  intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
995
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
839
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
996
840
  content: _t.node(_l.CSTML, "Content", [_t.lit("=")], {}, {}),
997
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
841
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
998
842
  }, {}),
999
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1000
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
843
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
844
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
1001
845
  }, {})
1002
846
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1003
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
847
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
1004
848
  content: _t.node(_l.CSTML, "Content", [_t.lit("mapOperator")], {}, {}),
1005
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
849
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
1006
850
  }, {})],
1007
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
851
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
1008
852
  }, {})
1009
853
  }, {});
1010
854
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1011
855
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1012
856
  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`], {
1013
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
857
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
1014
858
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1015
859
  open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1016
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
860
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
1017
861
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
1018
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
1019
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
1020
- type: _t.s_node(_l.Spamex, "Identifier", "AttributeValue"),
1021
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1022
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
862
+ language: _t.node(_l.CSTML, "IdentifierPath", [_t.ref`segments[]`, _t.arr(), _t.ref`segments[]`], {
863
+ segments: [_t.s_node(_l.CSTML, "Identifier", "CSTML")]
864
+ }, {}),
865
+ namespaceSeparatorToken: _t.s_node(_l.CSTML, "Punctuator", ":"),
866
+ type: _t.s_node(_l.CSTML, "Identifier", "AttributeValue"),
867
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
868
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
1023
869
  }, {})
1024
870
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1025
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1026
- content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
1027
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
871
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
872
+ content: _t.node(_l.CSTML, "Content", [_t.lit("value$")], {}, {}),
873
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
1028
874
  }, {})],
1029
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
875
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
1030
876
  }, {})
1031
877
  }, {});
1032
878
  }
@@ -1034,58 +880,62 @@ export const grammar = class SpamexGrammar {
1034
880
  if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1035
881
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
1036
882
  arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
1037
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
883
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
1038
884
  values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
1039
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
885
+ openToken: _t.s_node(_l.Regex, "Punctuator", "/"),
1040
886
  alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
1041
887
  elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
1042
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
888
+ openToken: _t.s_node(_l.Regex, "Punctuator", "["),
1043
889
  elements: [_t.node(_l.Regex, "Character", [_t.lit("'")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("\"")], {}, {})],
1044
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
890
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "]")
1045
891
  }, {
1046
892
  negate: false
1047
893
  })]
1048
894
  }, {})],
1049
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
895
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "/")
1050
896
  }, {})],
1051
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
897
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
1052
898
  }, {})
1053
899
  }, {})) {
1054
900
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1055
901
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1056
902
  arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
1057
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
903
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
1058
904
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1059
905
  open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1060
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
906
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
1061
907
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
1062
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
1063
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
1064
- type: _t.s_node(_l.Spamex, "Identifier", "String"),
1065
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1066
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
908
+ language: _t.node(_l.CSTML, "IdentifierPath", [_t.ref`segments[]`, _t.arr(), _t.ref`segments[]`], {
909
+ segments: [_t.s_node(_l.CSTML, "Identifier", "CSTML")]
910
+ }, {}),
911
+ namespaceSeparatorToken: _t.s_node(_l.CSTML, "Punctuator", ":"),
912
+ type: _t.s_node(_l.CSTML, "Identifier", "String"),
913
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
914
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
1067
915
  }, {})
1068
916
  }, {})],
1069
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
917
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
1070
918
  }, {})
1071
919
  }, {});
1072
920
  } else {
1073
921
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1074
922
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1075
923
  arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
1076
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
924
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
1077
925
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1078
926
  open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1079
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
927
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
1080
928
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
1081
- language: _t.s_node(_l.Spamex, "Identifier", "Regex"),
1082
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
1083
- type: _t.s_node(_l.Spamex, "Identifier", "Pattern"),
1084
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1085
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
929
+ language: _t.node(_l.CSTML, "IdentifierPath", [_t.ref`segments[]`, _t.arr(), _t.ref`segments[]`], {
930
+ segments: [_t.s_node(_l.CSTML, "Identifier", "Regex")]
931
+ }, {}),
932
+ namespaceSeparatorToken: _t.s_node(_l.CSTML, "Punctuator", ":"),
933
+ type: _t.s_node(_l.CSTML, "Identifier", "Pattern"),
934
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
935
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
1086
936
  }, {})
1087
937
  }, {})],
1088
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
938
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
1089
939
  }, {})
1090
940
  }, {});
1091
941
  }
@@ -1094,19 +944,21 @@ export const grammar = class SpamexGrammar {
1094
944
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1095
945
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1096
946
  arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
1097
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
947
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
1098
948
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1099
949
  open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1100
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
950
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
1101
951
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
1102
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
1103
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
1104
- type: _t.s_node(_l.Spamex, "Identifier", "String"),
1105
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1106
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
952
+ language: _t.node(_l.CSTML, "IdentifierPath", [_t.ref`segments[]`, _t.arr(), _t.ref`segments[]`], {
953
+ segments: [_t.s_node(_l.CSTML, "Identifier", "CSTML")]
954
+ }, {}),
955
+ namespaceSeparatorToken: _t.s_node(_l.CSTML, "Punctuator", ":"),
956
+ type: _t.s_node(_l.CSTML, "Identifier", "String"),
957
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
958
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
1107
959
  }, {})
1108
960
  }, {})],
1109
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
961
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
1110
962
  }, {})
1111
963
  }, {});
1112
964
  }
@@ -1114,113 +966,115 @@ export const grammar = class SpamexGrammar {
1114
966
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1115
967
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1116
968
  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`], {
1117
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
969
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
1118
970
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1119
971
  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`]]], {
1120
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1121
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1122
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1123
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
972
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
973
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
974
+ tokenToken: _t.s_node(_l.CSTML, "Punctuator", "*")
1124
975
  }, {}),
1125
976
  type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1126
977
  intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1127
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
978
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
1128
979
  content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
1129
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
980
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
1130
981
  }, {}),
1131
982
  attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
1132
983
  key: _t.s_node(_l.Spamex, "Identifier", "balanced"),
1133
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
984
+ mapToken: _t.s_node(_l.Spamex, "Punctuator", "="),
1134
985
  value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1135
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
986
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
1136
987
  content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
1137
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
988
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
1138
989
  }, {})
1139
990
  }, {})],
1140
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1141
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
991
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
992
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
1142
993
  }, {})
1143
994
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1144
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
995
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
1145
996
  content: _t.node(_l.CSTML, "Content", [_t.lit("open")], {}, {}),
1146
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
997
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
1147
998
  }, {})],
1148
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
999
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
1149
1000
  }, {})
1150
1001
  }, {});
1151
1002
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1152
1003
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1153
1004
  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`], {
1154
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1005
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
1155
1006
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1156
1007
  open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1157
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1008
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
1158
1009
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
1159
- language: _t.s_node(_l.Spamex, "Identifier", "Regex"),
1160
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
1161
- type: _t.s_node(_l.Spamex, "Identifier", "Alternatives"),
1162
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1163
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1010
+ language: _t.node(_l.CSTML, "IdentifierPath", [_t.ref`segments[]`, _t.arr(), _t.ref`segments[]`], {
1011
+ segments: [_t.s_node(_l.CSTML, "Identifier", "Regex")]
1012
+ }, {}),
1013
+ namespaceSeparatorToken: _t.s_node(_l.CSTML, "Punctuator", ":"),
1014
+ type: _t.s_node(_l.CSTML, "Identifier", "Alternatives"),
1015
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
1016
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
1164
1017
  }, {})
1165
1018
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1166
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1167
- content: _t.node(_l.CSTML, "Content", [_t.lit("alternatives[]")], {}, {}),
1168
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1019
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
1020
+ content: _t.node(_l.CSTML, "Content", [_t.lit("alternatives[]$")], {}, {}),
1021
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
1169
1022
  }, {})],
1170
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
1023
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
1171
1024
  }, {})
1172
1025
  }, {});
1173
1026
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1174
1027
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1175
1028
  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`], {
1176
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1029
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
1177
1030
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1178
1031
  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`]]], {
1179
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1180
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
1181
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
1182
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
1032
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
1033
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
1034
+ tokenToken: _t.s_node(_l.CSTML, "Punctuator", "*")
1183
1035
  }, {}),
1184
1036
  type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1185
1037
  intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1186
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1038
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
1187
1039
  content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
1188
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1040
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
1189
1041
  }, {}),
1190
1042
  attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
1191
1043
  key: _t.s_node(_l.Spamex, "Identifier", "balancer")
1192
1044
  }, {})],
1193
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1194
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1045
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
1046
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
1195
1047
  }, {})
1196
1048
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1197
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1049
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
1198
1050
  content: _t.node(_l.CSTML, "Content", [_t.lit("close")], {}, {}),
1199
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1051
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
1200
1052
  }, {})],
1201
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
1053
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
1202
1054
  }, {})
1203
1055
  }, {});
1204
1056
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
1205
1057
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
1206
1058
  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`], {
1207
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
1059
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
1208
1060
  values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
1209
1061
  open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
1210
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
1062
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
1211
1063
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
1212
- language: _t.s_node(_l.Spamex, "Identifier", "Regex"),
1213
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
1214
- type: _t.s_node(_l.Spamex, "Identifier", "Flags"),
1215
- selfClosingTagToken: _t.s_i_node(_l.Spamex, "Punctuator", "/"),
1216
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
1064
+ language: _t.node(_l.CSTML, "IdentifierPath", [_t.ref`segments[]`, _t.arr(), _t.ref`segments[]`], {
1065
+ segments: [_t.s_node(_l.CSTML, "Identifier", "Regex")]
1066
+ }, {}),
1067
+ namespaceSeparatorToken: _t.s_node(_l.CSTML, "Punctuator", ":"),
1068
+ type: _t.s_node(_l.CSTML, "Identifier", "Flags"),
1069
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
1070
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
1217
1071
  }, {})
1218
1072
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1219
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1220
- content: _t.node(_l.CSTML, "Content", [_t.lit("flags")], {}, {}),
1221
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1073
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
1074
+ content: _t.node(_l.CSTML, "Content", [_t.lit("flags$")], {}, {}),
1075
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
1222
1076
  }, {})],
1223
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
1077
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
1224
1078
  }, {})
1225
1079
  }, {});
1226
1080
  }