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