@bablr/language-en-spamex 0.4.3 → 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,19 +1,20 @@
1
1
  /* @macrome
2
2
  * @generatedby @bablr/macrome-generator-bablr
3
- * @generatedfrom ./grammar.macro.js#6b39cdf5f891cd30ee8febf0552c121fa76a3c6a
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
- let _initProto, _MatcherDecs, _NodeMatcherDecs, _BooleanAttributeDecs, _MappingAttributeDecs, _StringMatcherDecs, _StringDecs, _RegexDecs, _ListDecs, _PunctuatorDecs, _AnyDecs;
12
- import { Node, CoveredBy, InjectFrom } from '@bablr/helpers/decorators';
11
+ let _initProto, _MatcherDecs, _NodeMatcherDecs, _CloseNodeMatcherDecs, _BooleanAttributeDecs, _MappingAttributeDecs, _StringMatcherDecs, _StringDecs, _RegexDecs, _ListDecs, _PunctuatorDecs, _AnyDecs;
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';
16
16
  import * as Space from '@bablr/language-en-blank-space';
17
+ import { notNull } from '@bablr/agast-helpers/tree';
17
18
  export const canonicalURL = 'https://bablr.org/languages/core/en/spamex';
18
19
  export const dependencies = {
19
20
  Regex,
@@ -25,639 +26,916 @@ const {
25
26
  } = CSTML;
26
27
  export const grammar = class SpamexGrammar {
27
28
  static {
28
- [_initProto] = _applyDecs(this, [[_MatcherDecs, 2, "Matcher"], [_NodeMatcherDecs, 2, "NodeMatcher"], [_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;
29
30
  }
30
31
  constructor() {
31
32
  _initProto(this);
32
33
  }
33
- *[(_MatcherDecs = CoveredBy('Expression'), _NodeMatcherDecs = [CoveredBy('Matcher'), CoveredBy('Expression'), Node], _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), "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")]() {
34
35
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
35
36
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
36
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
37
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
38
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
39
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
40
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
41
- type: _t.s_node(_l.Spamex, "Identifier", "Any"),
42
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
43
- }, {}), _t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
44
- sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
45
- }, {}), _t.node(_l.Instruction, "Array", [_t.ref`openToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`closeToken`], {
46
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "["),
47
- elements: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
48
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
49
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
50
- type: _t.s_node(_l.Spamex, "Identifier", "NodeMatcher"),
51
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
52
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
53
- content: _t.node(_l.CSTML, "Content", [_t.lit("<")], {}, {}),
54
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
55
- }, {}),
56
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
57
- }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
58
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
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`]]], {
38
+ openToken: _t.s_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_node(_l.Spamex, "Punctuator", "<"),
59
42
  flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
60
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
61
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
62
- type: _t.s_node(_l.Spamex, "Identifier", "String"),
63
- intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
64
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
65
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
66
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
67
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
68
- elements: [_t.node(_l.Regex, "Character", [_t.lit("'")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("\"")], {}, {})],
69
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
70
- }, {
71
- negate: false
72
- })]
73
- }, {})],
74
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
75
- }, {}),
76
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
77
- }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
78
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
79
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
80
- language: _t.s_node(_l.Spamex, "Identifier", "Regex"),
81
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
82
- type: _t.s_node(_l.Spamex, "Identifier", "Pattern"),
83
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
84
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
85
- content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
86
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
87
- }, {}),
88
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
43
+ type: _t.s_node(_l.Spamex, "Identifier", "Any"),
44
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
45
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
46
+ }, {})
47
+ }, {}), _t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
48
+ sigilToken: _t.s_node(_l.Instruction, "Keyword", "null")
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`]]], {
50
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "["),
51
+ elements: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
53
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
54
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
55
+ type: _t.s_node(_l.Spamex, "Identifier", "NodeMatcher"),
56
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
57
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
58
+ content: _t.node(_l.CSTML, "Content", [_t.lit("<")], {}, {}),
59
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
60
+ }, {}),
61
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
62
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
63
+ }, {})
64
+ }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`]]], {
66
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
67
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
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"),
73
+ intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
74
+ openToken: _t.s_node(_l.Regex, "Punctuator", "/"),
75
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
76
+ elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
77
+ openToken: _t.s_node(_l.Regex, "Punctuator", "["),
78
+ elements: [_t.node(_l.Regex, "Character", [_t.lit("'")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("\"")], {}, {})],
79
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "]")
80
+ }, {
81
+ negate: false
82
+ })]
83
+ }, {})],
84
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "/")
85
+ }, {}),
86
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
87
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
88
+ }, {})
89
+ }, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`]]], {
91
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
92
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
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"),
98
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
99
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
100
+ content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
101
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
102
+ }, {}),
103
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
104
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
105
+ }, {})
89
106
  }, {})],
90
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "]")
107
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", "]")
91
108
  }, {})],
92
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
109
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
93
110
  }, {})
94
111
  }, {});
95
112
  }
96
113
  *NodeMatcher() {
97
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
114
+ let open = yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
98
115
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
99
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
100
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
101
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
102
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
103
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
104
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
105
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
106
- }, {}),
107
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
108
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
109
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
110
- content: _t.node(_l.CSTML, "Content", [_t.lit("<")], {}, {}),
111
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
112
- }, {}),
113
- attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
114
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balancedSpan")], {}, {}),
115
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
116
- value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
117
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
118
- content: _t.node(_l.CSTML, "Content", [_t.lit("Tag")], {}, {}),
119
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
120
- }, {})
121
- }, {}), _t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
122
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balanced")], {}, {}),
123
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
124
- value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
125
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
126
- content: _t.node(_l.CSTML, "Content", [_t.lit(">")], {}, {}),
127
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
128
- }, {})
129
- }, {})],
130
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
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`], {
117
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
118
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
120
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
121
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
122
+ type: _t.s_node(_l.Spamex, "Identifier", "OpenNodeMatcher"),
123
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
124
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
125
+ }, {})
131
126
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
132
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
127
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
133
128
  content: _t.node(_l.CSTML, "Content", [_t.lit("open")], {}, {}),
134
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
129
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
135
130
  }, {})],
136
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
131
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
137
132
  }, {})
138
133
  }, {});
139
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
140
- verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
141
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
142
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
143
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.ref`closeToken`], {
144
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
145
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
146
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
147
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
148
- type: _t.s_node(_l.Spamex, "Identifier", "Flags"),
149
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
150
- }, {})],
151
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
152
- }, {})
153
- }, {});
154
- if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
155
- verb: _t.s_node(_l.Instruction, "Identifier", "match"),
156
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
157
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
158
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
159
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
160
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`], {
161
- elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
162
- element: _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
163
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
164
- elements: [_t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
165
- min: _t.node(_l.Regex, "Character", [_t.lit("a")], {}, {}),
166
- rangeToken: _t.s_i_node(_l.Regex, "Punctuator", "-"),
167
- max: _t.node(_l.Regex, "Character", [_t.lit("z")], {}, {})
168
- }, {}), _t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
169
- min: _t.node(_l.Regex, "Character", [_t.lit("A")], {}, {}),
170
- rangeToken: _t.s_i_node(_l.Regex, "Punctuator", "-"),
171
- max: _t.node(_l.Regex, "Character", [_t.lit("Z")], {}, {})
172
- }, {})],
173
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
174
- }, {
175
- negate: false
176
- }),
177
- value: _t.s_i_node(_l.Regex, "Keyword", "+")
178
- }, {
179
- min: 1,
180
- max: Infinity,
181
- greedy: true
182
- }), _t.node(_l.Regex, "Character", [_t.lit(":")], {}, {})]
183
- }, {})],
184
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
185
- }, {})],
186
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
187
- }, {})
188
- }, {})) {
134
+ const selfClosing = notNull(open.get('selfClosingTagToken'));
135
+ if (selfClosing) {
189
136
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
190
137
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
191
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
192
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
193
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.ref`closeToken`], {
194
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
195
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
196
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
197
- }, {}),
198
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
199
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
200
- type: _t.s_node(_l.Spamex, "Identifier", "Identifier"),
201
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
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`], {
139
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
140
+ values: [_t.node(_l.Instruction, "Array", [_t.ref`openToken`, _t.ref`closeToken`], {
141
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "["),
142
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", "]")
202
143
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
203
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
204
- content: _t.node(_l.CSTML, "Content", [_t.lit("language")], {}, {}),
205
- 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", "'")
206
147
  }, {})],
207
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
148
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
208
149
  }, {})
209
150
  }, {});
210
151
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
211
152
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
212
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
213
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
214
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
215
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
216
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
217
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
218
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
219
- }, {}),
220
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
221
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
222
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
223
- content: _t.node(_l.CSTML, "Content", [_t.lit(":")], {}, {}),
224
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
225
- }, {}),
226
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
227
- }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
228
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
229
- content: _t.node(_l.CSTML, "Content", [_t.lit("namespaceOperator")], {}, {}),
230
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
231
- }, {})],
232
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
233
- }, {})
234
- }, {});
235
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
236
- verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
237
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
238
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
239
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.ref`closeToken`], {
240
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
241
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
242
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
243
- }, {}),
244
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
245
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
246
- type: _t.s_node(_l.Spamex, "Identifier", "Identifier"),
247
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
248
- }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
249
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
250
- content: _t.node(_l.CSTML, "Content", [_t.lit("type")], {}, {}),
251
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
252
- }, {})],
253
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
254
- }, {})
255
- }, {});
256
- } else {
257
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
258
- verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
259
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
260
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
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`], {
154
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
261
155
  values: [_t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
262
- sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
156
+ sigilToken: _t.s_node(_l.Instruction, "Keyword", "null")
263
157
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
264
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
265
- content: _t.node(_l.CSTML, "Content", [_t.lit("language")], {}, {}),
266
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
158
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
159
+ content: _t.node(_l.CSTML, "Content", [_t.lit("close")], {}, {}),
160
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
267
161
  }, {})],
268
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
162
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
269
163
  }, {})
270
164
  }, {});
165
+ } else {
166
+ // TODO
167
+ yield* eatMatchTrivia();
271
168
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
272
169
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
273
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
274
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
275
- values: [_t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
276
- sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
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`], {
171
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
172
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
174
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
175
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
176
+ type: _t.s_node(_l.Spamex, "Identifier", "CloseNodeMatcher"),
177
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
178
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
179
+ }, {})
277
180
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
278
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
279
- content: _t.node(_l.CSTML, "Content", [_t.lit("namespaceOperator")], {}, {}),
280
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
181
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
182
+ content: _t.node(_l.CSTML, "Content", [_t.lit("close")], {}, {}),
183
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
281
184
  }, {})],
282
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
185
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
283
186
  }, {})
284
187
  }, {});
285
- yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
286
- verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
287
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
288
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
289
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.ref`closeToken`], {
290
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
188
+ }
189
+ }
190
+ *OpenNodeMatcher() {
191
+ yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
192
+ verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
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`], {
194
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
195
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`]]], {
197
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
291
198
  flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
292
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
199
+ tokenToken: _t.s_node(_l.CSTML, "Punctuator", "*")
293
200
  }, {}),
294
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
295
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
296
- type: _t.s_node(_l.Spamex, "Identifier", "Identifier"),
297
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
298
- }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
299
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
300
- content: _t.node(_l.CSTML, "Content", [_t.lit("type")], {}, {}),
301
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
302
- }, {})],
303
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
304
- }, {})
305
- }, {});
201
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
202
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
203
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
204
+ content: _t.node(_l.CSTML, "Content", [_t.lit("<")], {}, {}),
205
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
206
+ }, {}),
207
+ attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
208
+ key: _t.s_node(_l.Spamex, "Identifier", "balancedSpan"),
209
+ mapToken: _t.s_node(_l.Spamex, "Punctuator", "="),
210
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
211
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
212
+ content: _t.node(_l.CSTML, "Content", [_t.lit("Tag")], {}, {}),
213
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
214
+ }, {})
215
+ }, {}), _t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
216
+ key: _t.s_node(_l.Spamex, "Identifier", "balanced"),
217
+ mapToken: _t.s_node(_l.Spamex, "Punctuator", "="),
218
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
219
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
220
+ content: _t.node(_l.CSTML, "Content", [_t.lit(">")], {}, {}),
221
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
222
+ }, {})
223
+ }, {})],
224
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
225
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
226
+ }, {})
227
+ }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
228
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
229
+ content: _t.node(_l.CSTML, "Content", [_t.lit("open")], {}, {}),
230
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
231
+ }, {})],
232
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
233
+ }, {})
234
+ }, {});
235
+ yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
236
+ verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
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`], {
238
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
239
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
241
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
242
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
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", ">")
250
+ }, {})
251
+ }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
252
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
253
+ content: _t.node(_l.CSTML, "Content", [_t.lit("flags")], {}, {}),
254
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
255
+ }, {})],
256
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
257
+ }, {})
258
+ }, {});
259
+ if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
260
+ verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
261
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
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
+ })]
293
+ }, {})],
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
+ }, {})
299
+ }, {})],
300
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
301
+ }, {})
302
+ }, {})) {
303
+ // continue
304
+ } else if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
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", "'")
347
+ }, {})],
348
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
349
+ }, {})
350
+ }, {})) {
351
+ // continue
306
352
  }
307
353
  let sp = yield* eatMatchTrivia();
308
- if (sp && (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
354
+ if (sp && !(yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
355
+ verb: _t.s_node(_l.Instruction, "Identifier", "match"),
356
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
357
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
358
+ values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
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
+ }, {})]
366
+ }, {})],
367
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "/")
368
+ }, {})],
369
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
370
+ }, {})
371
+ }, {})) && (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
309
372
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
310
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
311
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
312
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
313
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
314
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
315
- type: _t.s_node(_l.Spamex, "Identifier", "StringMatcher"),
316
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
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`], {
374
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
375
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
377
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
378
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
379
+ type: _t.s_node(_l.Spamex, "Identifier", "StringMatcher"),
380
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
381
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
382
+ }, {})
317
383
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
318
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
319
- content: _t.node(_l.CSTML, "Content", [_t.lit("intrinsicValue")], {}, {}),
320
- 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", "'")
321
387
  }, {})],
322
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
388
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
323
389
  }, {})
324
390
  }, {}))) {
325
391
  sp = yield* eatMatchTrivia();
326
392
  }
327
393
  while (sp && (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
328
394
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
329
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
330
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
331
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
332
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
333
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`], {
395
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
396
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
397
+ values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
398
+ openToken: _t.s_node(_l.Regex, "Punctuator", "/"),
399
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`], {
334
400
  elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
335
401
  element: _t.node(_l.Regex, "Character", [_t.lit("!")], {}, {}),
336
- value: _t.s_i_node(_l.Regex, "Keyword", "?")
402
+ value: _t.s_node(_l.Regex, "Keyword", "?")
337
403
  }, {
338
404
  min: 0,
339
405
  max: 1,
340
406
  greedy: true
341
- }), _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
342
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
407
+ }), _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
408
+ openToken: _t.s_node(_l.Regex, "Punctuator", "["),
343
409
  elements: [_t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
344
410
  min: _t.node(_l.Regex, "Character", [_t.lit("a")], {}, {}),
345
- rangeToken: _t.s_i_node(_l.Regex, "Punctuator", "-"),
411
+ rangeToken: _t.s_node(_l.Regex, "Punctuator", "-"),
346
412
  max: _t.node(_l.Regex, "Character", [_t.lit("z")], {}, {})
347
413
  }, {}), _t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
348
414
  min: _t.node(_l.Regex, "Character", [_t.lit("A")], {}, {}),
349
- rangeToken: _t.s_i_node(_l.Regex, "Punctuator", "-"),
415
+ rangeToken: _t.s_node(_l.Regex, "Punctuator", "-"),
350
416
  max: _t.node(_l.Regex, "Character", [_t.lit("Z")], {}, {})
351
417
  }, {})],
352
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
418
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "]")
353
419
  }, {
354
420
  negate: false
355
421
  })]
356
422
  }, {})],
357
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
423
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "/")
358
424
  }, {})],
359
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
425
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
360
426
  }, {})
361
427
  }, {}))) {
362
428
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
363
429
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
364
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
365
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
366
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
367
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
368
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
369
- type: _t.s_node(_l.Spamex, "Identifier", "Attribute"),
370
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
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`], {
431
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
432
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
434
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
435
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
436
+ type: _t.s_node(_l.Spamex, "Identifier", "Attribute"),
437
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
438
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
439
+ }, {})
371
440
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
372
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
441
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
373
442
  content: _t.node(_l.CSTML, "Content", [_t.lit("attributes[]")], {}, {}),
374
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
443
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
375
444
  }, {})],
376
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
445
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
377
446
  }, {})
378
447
  }, {});
379
448
  sp = yield* eatMatchTrivia();
380
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_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`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`], {
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", "*")
459
+ }, {}),
460
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
461
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
462
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
463
+ content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
464
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
465
+ }, {}),
466
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
467
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
468
+ }, {})
469
+ }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
470
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
471
+ content: _t.node(_l.CSTML, "Content", [_t.lit("selfClosingTagToken")], {}, {}),
472
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
473
+ }, {})],
474
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
475
+ }, {})
476
+ }, {});
381
477
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
382
478
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
383
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
384
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
385
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
386
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
387
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
388
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
389
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
390
- }, {}),
391
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
392
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
393
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
394
- content: _t.node(_l.CSTML, "Content", [_t.lit(">")], {}, {}),
395
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
396
- }, {}),
397
- attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
398
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balancer")], {}, {})
399
- }, {})],
400
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
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`], {
480
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
481
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`]]], {
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", "*")
486
+ }, {}),
487
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
488
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
489
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
490
+ content: _t.node(_l.CSTML, "Content", [_t.lit(">")], {}, {}),
491
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
492
+ }, {}),
493
+ attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
494
+ key: _t.s_node(_l.Spamex, "Identifier", "balancer")
495
+ }, {})],
496
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
497
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
498
+ }, {})
401
499
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
402
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
500
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
403
501
  content: _t.node(_l.CSTML, "Content", [_t.lit("close")], {}, {}),
404
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
502
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
503
+ }, {})],
504
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
505
+ }, {})
506
+ }, {});
507
+ }
508
+ *CloseNodeMatcher() {
509
+ yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
510
+ verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
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`], {
512
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
513
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`]]], {
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", "*")
518
+ }, {}),
519
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
520
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
521
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
522
+ content: _t.node(_l.CSTML, "Content", [_t.lit("</")], {}, {}),
523
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
524
+ }, {}),
525
+ attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
526
+ key: _t.s_node(_l.Spamex, "Identifier", "balanced"),
527
+ mapToken: _t.s_node(_l.Spamex, "Punctuator", "="),
528
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
529
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
530
+ content: _t.node(_l.CSTML, "Content", [_t.lit(">")], {}, {}),
531
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
532
+ }, {})
533
+ }, {})],
534
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
535
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
536
+ }, {})
537
+ }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
538
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
539
+ content: _t.node(_l.CSTML, "Content", [_t.lit("openToken")], {}, {}),
540
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
405
541
  }, {})],
406
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
542
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
543
+ }, {})
544
+ }, {});
545
+ yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
546
+ verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
547
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
548
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
549
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
551
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
552
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
553
+ type: _t.s_node(_l.Spamex, "Identifier", "TagType"),
554
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
555
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
556
+ }, {})
557
+ }, {})],
558
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
559
+ }, {})
560
+ }, {});
561
+ yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
562
+ verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
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`], {
564
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
565
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`]]], {
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", "*")
570
+ }, {}),
571
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
572
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
573
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
574
+ content: _t.node(_l.CSTML, "Content", [_t.lit(">")], {}, {}),
575
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
576
+ }, {}),
577
+ attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
578
+ key: _t.s_node(_l.Spamex, "Identifier", "balancer")
579
+ }, {})],
580
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
581
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
582
+ }, {})
583
+ }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
584
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
585
+ content: _t.node(_l.CSTML, "Content", [_t.lit("closeToken")], {}, {}),
586
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
587
+ }, {})],
588
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
407
589
  }, {})
408
590
  }, {});
409
591
  }
410
592
  *Attributes() {
411
593
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
412
594
  verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
413
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
414
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
415
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
416
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
417
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
418
- type: _t.s_node(_l.Spamex, "Identifier", "List"),
419
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
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`]]], {
596
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
597
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
599
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
600
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
601
+ type: _t.s_node(_l.Spamex, "Identifier", "List"),
602
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
603
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
604
+ }, {})
420
605
  }, {}), _t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
421
- sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
422
- }, {}), _t.node(_l.Instruction, "Object", [_t.ref`openToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`properties[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`properties[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`closeToken`], {
423
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "{"),
424
- properties: [_t.node(_l.Instruction, "Property", [_t.ref`key`, _t.ref`mapToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`value`], {
606
+ sigilToken: _t.s_node(_l.Instruction, "Keyword", "null")
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`]]], {
608
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "{"),
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`], {
425
610
  key: _t.node(_l.Instruction, "Literal", [_t.lit("element")], {}, {}),
426
- mapToken: _t.s_i_node(_l.Instruction, "Punctuator", ":"),
427
- value: _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
428
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
429
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
430
- type: _t.s_node(_l.Spamex, "Identifier", "Attribute"),
431
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
611
+ mapToken: _t.s_node(_l.Instruction, "Punctuator", ":"),
612
+ value: _t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
614
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
615
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
616
+ type: _t.s_node(_l.Spamex, "Identifier", "Attribute"),
617
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
618
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
619
+ }, {})
432
620
  }, {})
433
- }, {}), _t.node(_l.Instruction, "Property", [_t.ref`key`, _t.ref`mapToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`value`], {
621
+ }, {}), _t.node(_l.Instruction, "Property", [_t.ref`key`, _t.ref`mapToken`, _t.embedded(_t.node(_l.Instruction, "Space", [_t.lit(" ")], {}, {})), _t.ref`value`], {
434
622
  key: _t.node(_l.Instruction, "Literal", [_t.lit("allowTrailingSeparator")], {}, {}),
435
- mapToken: _t.s_i_node(_l.Instruction, "Punctuator", ":"),
623
+ mapToken: _t.s_node(_l.Instruction, "Punctuator", ":"),
436
624
  value: _t.node(_l.Instruction, "Boolean", [_t.ref`sigilToken`], {
437
- sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "false")
625
+ sigilToken: _t.s_node(_l.Instruction, "Keyword", "false")
438
626
  }, {})
439
627
  }, {})],
440
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "}")
628
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", "}")
441
629
  }, {})],
442
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
630
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
443
631
  }, {})
444
632
  }, {});
445
633
  }
446
634
  *Attribute() {
447
635
  if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
448
636
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
449
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
450
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
451
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
452
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
453
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`], {
637
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
638
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
639
+ values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
640
+ openToken: _t.s_node(_l.Regex, "Punctuator", "/"),
641
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`], {
454
642
  elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
455
- element: _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
456
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
643
+ element: _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
644
+ openToken: _t.s_node(_l.Regex, "Punctuator", "["),
457
645
  elements: [_t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
458
646
  min: _t.node(_l.Regex, "Character", [_t.lit("a")], {}, {}),
459
- rangeToken: _t.s_i_node(_l.Regex, "Punctuator", "-"),
647
+ rangeToken: _t.s_node(_l.Regex, "Punctuator", "-"),
460
648
  max: _t.node(_l.Regex, "Character", [_t.lit("z")], {}, {})
461
649
  }, {}), _t.node(_l.Regex, "CharacterClassRange", [_t.ref`min`, _t.ref`rangeToken`, _t.ref`max`], {
462
650
  min: _t.node(_l.Regex, "Character", [_t.lit("A")], {}, {}),
463
- rangeToken: _t.s_i_node(_l.Regex, "Punctuator", "-"),
651
+ rangeToken: _t.s_node(_l.Regex, "Punctuator", "-"),
464
652
  max: _t.node(_l.Regex, "Character", [_t.lit("Z")], {}, {})
465
653
  }, {})],
466
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
654
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "]")
467
655
  }, {
468
656
  negate: false
469
657
  }),
470
- value: _t.s_i_node(_l.Regex, "Keyword", "+")
658
+ value: _t.s_node(_l.Regex, "Keyword", "+")
471
659
  }, {
472
660
  min: 1,
473
661
  max: Infinity,
474
662
  greedy: true
475
663
  }), _t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
476
664
  element: _t.node(_l.Regex, "SpaceCharacterSet", [_t.ref`escapeToken`, _t.ref`value`], {
477
- escapeToken: _t.s_i_node(_l.Regex, "Punctuator", "\\"),
478
- 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")
479
667
  }, {}),
480
- value: _t.s_i_node(_l.Regex, "Keyword", "*")
668
+ value: _t.s_node(_l.Regex, "Keyword", "*")
481
669
  }, {
482
670
  min: 0,
483
671
  max: Infinity,
484
672
  greedy: true
485
673
  }), _t.node(_l.Regex, "Character", [_t.lit("=")], {}, {})]
486
674
  }, {})],
487
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
675
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "/")
488
676
  }, {})],
489
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
677
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
490
678
  }, {})
491
679
  }, {})) {
492
680
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
493
681
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
494
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
495
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
496
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
497
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
498
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
499
- type: _t.s_node(_l.Spamex, "Identifier", "MappingAttribute"),
500
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
682
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
683
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
684
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
686
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
687
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
688
+ type: _t.s_node(_l.Spamex, "Identifier", "MappingAttribute"),
689
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
690
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
691
+ }, {})
501
692
  }, {})],
502
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
693
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
503
694
  }, {})
504
695
  }, {});
505
696
  } else {
506
697
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
507
698
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
508
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
509
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
510
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
511
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
512
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
513
- type: _t.s_node(_l.Spamex, "Identifier", "BooleanAttribute"),
514
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
699
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
700
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
701
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
703
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
704
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
705
+ type: _t.s_node(_l.Spamex, "Identifier", "BooleanAttribute"),
706
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
707
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
708
+ }, {})
515
709
  }, {})],
516
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
710
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
517
711
  }, {})
518
712
  }, {});
519
713
  }
520
714
  }
521
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
+ }
522
773
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
523
774
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
524
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
525
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
526
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.ref`closeToken`], {
527
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
528
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
529
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
530
- }, {}),
531
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
532
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
533
- type: _t.s_node(_l.Spamex, "Identifier", "Identifier"),
534
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
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`], {
776
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
777
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
779
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
780
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
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")]
785
+ }, {}),
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", ">")
790
+ }, {})
535
791
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
536
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
537
- content: _t.node(_l.CSTML, "Content", [_t.lit("key")], {}, {}),
538
- 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", "'")
539
795
  }, {})],
540
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
796
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
541
797
  }, {})
542
798
  }, {});
543
799
  }
544
800
  *MappingAttribute() {
545
801
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
546
802
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
547
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
548
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
549
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.ref`closeToken`], {
550
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
551
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
552
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
553
- }, {}),
554
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
555
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
556
- type: _t.s_node(_l.Spamex, "Identifier", "Identifier"),
557
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
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`], {
804
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
805
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
807
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
808
+ flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
809
+ tokenToken: _t.s_node(_l.CSTML, "Punctuator", "*")
810
+ }, {}),
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", ">")
818
+ }, {})
558
819
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
559
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
560
- content: _t.node(_l.CSTML, "Content", [_t.lit("key")], {}, {}),
561
- 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", "'")
562
823
  }, {})],
563
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
824
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
564
825
  }, {})
565
826
  }, {});
566
827
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
567
828
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
568
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
569
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
570
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
571
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
572
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
573
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
574
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
575
- }, {}),
576
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
577
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
578
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
579
- content: _t.node(_l.CSTML, "Content", [_t.lit("=")], {}, {}),
580
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
581
- }, {}),
582
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
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`], {
830
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
831
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
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", "*")
836
+ }, {}),
837
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
838
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
839
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
840
+ content: _t.node(_l.CSTML, "Content", [_t.lit("=")], {}, {}),
841
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
842
+ }, {}),
843
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
844
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
845
+ }, {})
583
846
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
584
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
847
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
585
848
  content: _t.node(_l.CSTML, "Content", [_t.lit("mapOperator")], {}, {}),
586
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
849
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
587
850
  }, {})],
588
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
851
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
589
852
  }, {})
590
853
  }, {});
591
854
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
592
855
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
593
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
594
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
595
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.ref`closeToken`], {
596
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
597
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
598
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
599
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
600
- type: _t.s_node(_l.Spamex, "Identifier", "AttributeValue"),
601
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
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`], {
857
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
858
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
860
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
861
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
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", ">")
869
+ }, {})
602
870
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
603
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
604
- content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
605
- 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", "'")
606
874
  }, {})],
607
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
875
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
608
876
  }, {})
609
877
  }, {});
610
878
  }
611
879
  *StringMatcher() {
612
880
  if (yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
613
881
  verb: _t.s_node(_l.Instruction, "Identifier", "match"),
614
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
615
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
616
- values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
617
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
618
- alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
619
- elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
620
- openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
882
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
883
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
884
+ values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.arr(), _t.ref`alternatives[]`, _t.ref`closeToken`], {
885
+ openToken: _t.s_node(_l.Regex, "Punctuator", "/"),
886
+ alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.arr(), _t.ref`elements[]`], {
887
+ elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.arr(), _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
888
+ openToken: _t.s_node(_l.Regex, "Punctuator", "["),
621
889
  elements: [_t.node(_l.Regex, "Character", [_t.lit("'")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("\"")], {}, {})],
622
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
890
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "]")
623
891
  }, {
624
892
  negate: false
625
893
  })]
626
894
  }, {})],
627
- closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
895
+ closeToken: _t.s_node(_l.Regex, "Punctuator", "/")
628
896
  }, {})],
629
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
897
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
630
898
  }, {})
631
899
  }, {})) {
632
900
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
633
901
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
634
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
635
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
636
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.ref`closeToken`], {
637
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
638
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
639
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
640
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
641
- type: _t.s_node(_l.Spamex, "Identifier", "String"),
642
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
902
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
903
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
904
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
905
+ open: _t.node(_l.Spamex, "OpenNodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.embedded(_t.node(_l.Spamex, "Space", [_t.lit(" ")], {}, {})), _t.ref`selfClosingTagToken`, _t.ref`closeToken`], {
906
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
907
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
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", ">")
915
+ }, {})
643
916
  }, {})],
644
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
917
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
645
918
  }, {})
646
919
  }, {});
647
920
  } else {
648
921
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
649
922
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
650
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
651
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
652
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.ref`closeToken`], {
653
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
654
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
655
- language: _t.s_node(_l.Spamex, "Identifier", "Regex"),
656
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
657
- type: _t.s_node(_l.Spamex, "Identifier", "Pattern"),
658
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
923
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
924
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
925
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
927
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
928
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
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", ">")
936
+ }, {})
659
937
  }, {})],
660
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
938
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
661
939
  }, {})
662
940
  }, {});
663
941
  }
@@ -665,119 +943,138 @@ export const grammar = class SpamexGrammar {
665
943
  *String() {
666
944
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
667
945
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
668
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
669
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
670
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.ref`closeToken`], {
671
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
672
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
673
- language: _t.s_node(_l.Spamex, "Identifier", "CSTML"),
674
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
675
- type: _t.s_node(_l.Spamex, "Identifier", "String"),
676
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
946
+ arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.arr(), _t.ref`values[]`, _t.ref`closeToken`], {
947
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
948
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
950
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
951
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
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", ">")
959
+ }, {})
677
960
  }, {})],
678
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
961
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
679
962
  }, {})
680
963
  }, {});
681
964
  }
682
965
  *Regex() {
683
966
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
684
967
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
685
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
686
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
687
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
688
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
689
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
690
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
691
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
692
- }, {}),
693
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
694
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
695
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
696
- content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
697
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
698
- }, {}),
699
- attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
700
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balanced")], {}, {}),
701
- mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
702
- value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
703
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
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`], {
969
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
970
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`]]], {
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", "*")
975
+ }, {}),
976
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
977
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
978
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
704
979
  content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
705
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
706
- }, {})
707
- }, {})],
708
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
980
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
981
+ }, {}),
982
+ attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
983
+ key: _t.s_node(_l.Spamex, "Identifier", "balanced"),
984
+ mapToken: _t.s_node(_l.Spamex, "Punctuator", "="),
985
+ value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
986
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
987
+ content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
988
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
989
+ }, {})
990
+ }, {})],
991
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
992
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
993
+ }, {})
709
994
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
710
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
995
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
711
996
  content: _t.node(_l.CSTML, "Content", [_t.lit("open")], {}, {}),
712
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
997
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
713
998
  }, {})],
714
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
999
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
715
1000
  }, {})
716
1001
  }, {});
717
1002
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
718
1003
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
719
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
720
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
721
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.ref`closeToken`], {
722
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
723
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
724
- language: _t.s_node(_l.Spamex, "Identifier", "Regex"),
725
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
726
- type: _t.s_node(_l.Spamex, "Identifier", "Alternatives"),
727
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
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`], {
1005
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
1006
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
1008
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
1009
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
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", ">")
1017
+ }, {})
728
1018
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
729
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
730
- content: _t.node(_l.CSTML, "Content", [_t.lit("alternatives[]")], {}, {}),
731
- 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", "'")
732
1022
  }, {})],
733
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
1023
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
734
1024
  }, {})
735
1025
  }, {});
736
1026
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
737
1027
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
738
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
739
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
740
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
741
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
742
- flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
743
- intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
744
- tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
745
- }, {}),
746
- type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
747
- intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
748
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
749
- content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
750
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
751
- }, {}),
752
- attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
753
- key: _t.node(_l.Spamex, "Literal", [_t.lit("balancer")], {}, {})
754
- }, {})],
755
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
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`], {
1029
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
1030
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`]]], {
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", "*")
1035
+ }, {}),
1036
+ type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
1037
+ intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
1038
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
1039
+ content: _t.node(_l.CSTML, "Content", [_t.lit("/")], {}, {}),
1040
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
1041
+ }, {}),
1042
+ attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
1043
+ key: _t.s_node(_l.Spamex, "Identifier", "balancer")
1044
+ }, {})],
1045
+ selfClosingTagToken: _t.s_node(_l.Spamex, "Punctuator", "/"),
1046
+ closeToken: _t.s_node(_l.Spamex, "Punctuator", ">")
1047
+ }, {})
756
1048
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
757
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
1049
+ openToken: _t.s_node(_l.CSTML, "Punctuator", "'"),
758
1050
  content: _t.node(_l.CSTML, "Content", [_t.lit("close")], {}, {}),
759
- closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
1051
+ closeToken: _t.s_node(_l.CSTML, "Punctuator", "'")
760
1052
  }, {})],
761
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
1053
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
762
1054
  }, {})
763
1055
  }, {});
764
1056
  yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
765
1057
  verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
766
- arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
767
- openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
768
- values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`language`, _t.ref`namespaceSeparatorToken`, _t.ref`type`, _t.ref`closeToken`], {
769
- openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
770
- flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
771
- language: _t.s_node(_l.Spamex, "Identifier", "Regex"),
772
- namespaceSeparatorToken: _t.s_i_node(_l.Spamex, "Punctuator", ":"),
773
- type: _t.s_node(_l.Spamex, "Identifier", "Flags"),
774
- closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
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`], {
1059
+ openToken: _t.s_node(_l.Instruction, "Punctuator", "("),
1060
+ values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`open`], {
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`], {
1062
+ openToken: _t.s_node(_l.Spamex, "Punctuator", "<"),
1063
+ flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
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", ">")
1071
+ }, {})
775
1072
  }, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
776
- openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
777
- content: _t.node(_l.CSTML, "Content", [_t.lit("flags")], {}, {}),
778
- 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", "'")
779
1076
  }, {})],
780
- closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
1077
+ closeToken: _t.s_node(_l.Instruction, "Punctuator", ")")
781
1078
  }, {})
782
1079
  }, {});
783
1080
  }