@cirru/parser.ts 0.0.7 → 0.0.9

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/index.js CHANGED
@@ -3,292 +3,272 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseOneLiner = exports.parse = void 0;
4
4
  const types_1 = require("./types");
5
5
  const tree_1 = require("./tree");
6
- let graspeExprs = (pullToken) => {
7
- let acc = [];
8
- let pointer = acc;
9
- let pointerStack = [];
10
- while (true) {
11
- let cursor = pullToken();
12
- // console.log(pointerStack, pointer, cursor);
13
- switch (cursor) {
14
- case types_1.ELexControl.close:
15
- if (pointerStack.length === 0) {
16
- return pointer;
17
- }
18
- let collected = pointer;
19
- pointer = pointerStack.pop();
20
- pointer.push(collected);
21
- break;
22
- case types_1.ELexControl.open:
23
- pointerStack.push(pointer);
24
- pointer = [];
25
- break;
26
- case types_1.ELexControl.close:
27
- throw new Error("Unexpected close token");
28
- default:
29
- if ((0, tree_1.isString)(cursor)) {
30
- pointer.push(cursor);
31
- break;
32
- }
33
- else {
34
- console.log(JSON.stringify(cursor));
35
- throw new Error("Unknown cursor");
36
- }
37
- }
38
- }
39
- };
40
- let buildExprs = (pullToken) => {
41
- let acc = [];
42
- while (true) {
43
- let chunk = pullToken();
44
- if (chunk === types_1.ELexControl.open) {
45
- let expr = graspeExprs(pullToken);
46
- acc.push(expr);
47
- continue;
6
+ // Single-pass lex + build: eliminates the intermediate tokens[] array entirely.
7
+ // The lexer drives a stack-based tree builder directly — no token buffer, no pullToken closure.
8
+ //
9
+ // Stack model:
10
+ // result[] — top-level expressions being collected
11
+ // stack[] — in-progress arrays at deeper nesting (from indent or '(')
12
+ // current — innermost array currently being populated; null when between top-level exprs
13
+ //
14
+ // emitOpen() → push current onto stack, start a fresh array as current
15
+ // (or, if current is null, start the first/next top-level expression)
16
+ // emitClose() → complete current array; if stack is empty push to result, else push to parent
17
+ // emitToken() → append a string leaf to current
18
+ //
19
+ // "first" tracks whether emitOpen() has been called for the outermost wrapper yet.
20
+ // The original code used acc.unshift(open) + trailing closes; here we emit that open
21
+ // lazily on the first non-whitespace character so we avoid any end-of-input special case.
22
+ let lexAndBuild = (code) => {
23
+ const CHAR_SPACE = 32;
24
+ const CHAR_NEWLINE = 10;
25
+ const CHAR_DQUOTE = 34;
26
+ const CHAR_APOSTROPHE = 39;
27
+ const CHAR_LPAREN = 40;
28
+ const CHAR_RPAREN = 41;
29
+ const CHAR_BACKSLASH = 92;
30
+ const CHAR_R = 114;
31
+ const CHAR_T = 116;
32
+ const CHAR_N = 110;
33
+ const CHAR_U = 117;
34
+ const result = [];
35
+ const stack = [];
36
+ let current = null;
37
+ let hasDollar = false;
38
+ let hasComma = false;
39
+ let state = types_1.ELexState.indent;
40
+ let buffer = ""; // string content when escape sequences appear
41
+ let level = 0;
42
+ let indentCount = 0;
43
+ let tokenStart = 0;
44
+ let stringStart = 0;
45
+ let stringHasEscape = false;
46
+ // Whether we've emitted the very first emitOpen() (the outer wrapper)
47
+ let first = true;
48
+ const len = code.length;
49
+ const emitOpen = () => {
50
+ if (current !== null)
51
+ stack.push(current);
52
+ current = [];
53
+ };
54
+ const emitClose = () => {
55
+ const completed = current;
56
+ if (stack.length === 0) {
57
+ result.push(completed);
58
+ current = null;
48
59
  }
49
- else if (chunk == null) {
50
- return acc;
60
+ else {
61
+ current = stack.pop();
62
+ current.push(completed);
51
63
  }
52
- else if (chunk === types_1.ELexControl.close) {
53
- throw new Error(`Unexpected ")"`);
64
+ };
65
+ const emitToken = (tok) => {
66
+ current.push(tok);
67
+ if (tok === "$")
68
+ hasDollar = true;
69
+ else if (tok === ",")
70
+ hasComma = true;
71
+ };
72
+ // Called whenever a new line's first non-whitespace character is encountered.
73
+ // newLevel = indentCount >> 1 (already validated as even before calling).
74
+ // On the very first call: lazily emit the outer open, then any extra opens for depth.
75
+ // Subsequent calls: emit close/open boundaries as the indent level changes.
76
+ const flushIndent = (newLevel) => {
77
+ if (first) {
78
+ first = false;
79
+ emitOpen(); // outer wrapper open (replaces acc.unshift at end of original)
80
+ for (let i = 0; i < newLevel; i++)
81
+ emitOpen();
82
+ level = newLevel;
83
+ return;
54
84
  }
55
- else {
56
- throw new Error(`Unexpected chunk ${JSON.stringify(chunk)}`);
85
+ if (newLevel === level) {
86
+ emitClose();
87
+ emitOpen(); // sibling expression boundary
88
+ return;
57
89
  }
58
- }
59
- };
60
- let parseIndentation = (buffer) => {
61
- let size = buffer.length;
62
- if ((0, tree_1.isOdd)(size)) {
63
- throw new Error(`Invalid indentation size ${size}`);
64
- }
65
- return size / 2;
66
- };
67
- let lex = (initialCode) => {
68
- let acc = [];
69
- let state = types_1.ELexState.indent;
70
- let buffer = "";
71
- let code = initialCode;
72
- // let count = 0;
73
- let pointer = 0;
74
- while (true) {
75
- // count += 1;
76
- // if (count > 1000) {
77
- // break;
78
- // }
79
- if (pointer >= code.length) {
80
- switch (state) {
81
- case types_1.ELexState.space:
82
- return acc;
83
- case types_1.ELexState.token:
84
- acc.push(buffer);
85
- return acc;
86
- break;
87
- case types_1.ELexState.escape:
88
- throw new Error("Should not be escape");
89
- case types_1.ELexState.indent:
90
- return acc;
91
- case types_1.ELexState.string:
92
- throw new Error("Should not be string");
93
- default:
94
- console.log(state);
95
- throw new Error("Unkown state");
96
- }
90
+ if (newLevel > level) {
91
+ for (let i = 0; i < newLevel - level; i++)
92
+ emitOpen();
97
93
  }
98
94
  else {
99
- let c = code[pointer];
100
- pointer += 1;
101
- switch (state) {
102
- case types_1.ELexState.space:
103
- switch (c) {
104
- case " ":
105
- [acc, state, buffer] = [acc, types_1.ELexState.space, ""];
106
- break;
107
- case "\n":
108
- [acc, state, buffer] = [acc, types_1.ELexState.indent, ""];
109
- break;
110
- case "(":
111
- acc.push(types_1.ELexControl.open);
112
- [state, buffer] = [types_1.ELexState.space, ""];
113
- break;
114
- case ")":
115
- acc.push(types_1.ELexControl.close);
116
- [state, buffer] = [types_1.ELexState.space, ""];
117
- break;
118
- case '"':
119
- [acc, state, buffer] = [acc, types_1.ELexState.string, ""];
120
- break;
121
- default:
122
- [acc, state, buffer] = [acc, types_1.ELexState.token, c];
123
- break;
124
- }
125
- break;
126
- case types_1.ELexState.token:
127
- switch (c) {
128
- case " ":
129
- acc.push(buffer);
130
- [state, buffer] = [types_1.ELexState.space, ""];
131
- break;
132
- case '"':
133
- acc.push(buffer);
134
- [state, buffer] = [types_1.ELexState.string, ""];
135
- break;
136
- case "\n":
137
- acc.push(buffer);
138
- [state, buffer] = [types_1.ELexState.indent, ""];
139
- break;
140
- case "(":
141
- acc.push(buffer, types_1.ELexControl.open);
142
- [state, buffer] = [types_1.ELexState.space, ""];
143
- break;
144
- case ")":
145
- acc.push(buffer, types_1.ELexControl.close);
146
- [state, buffer] = [types_1.ELexState.space, ""];
147
- break;
148
- default:
149
- [acc, state, buffer] = [acc, types_1.ELexState.token, `${buffer}${c}`];
150
- break;
151
- }
152
- break;
153
- case types_1.ELexState.string:
154
- switch (c) {
155
- case '"':
156
- acc.push(buffer);
157
- [state, buffer] = [types_1.ELexState.space, ""];
158
- break;
159
- case "\\":
160
- [acc, state, buffer] = [acc, types_1.ELexState.escape, buffer];
161
- break;
162
- case "\n":
163
- throw new Error("Expected newline in string");
164
- default:
165
- [acc, state, buffer] = [acc, types_1.ELexState.string, `${buffer}${c}`];
166
- break;
167
- }
168
- break;
169
- case types_1.ELexState.escape:
170
- switch (c) {
171
- case '"':
172
- [acc, state, buffer] = [acc, types_1.ELexState.string, `${buffer}"`];
173
- break;
174
- case "'":
175
- [acc, state, buffer] = [acc, types_1.ELexState.string, `${buffer}'`];
176
- break;
177
- case "t":
178
- [acc, state, buffer] = [acc, types_1.ELexState.string, `${buffer}\t`];
179
- break;
180
- case "n":
181
- [acc, state, buffer] = [acc, types_1.ELexState.string, `${buffer}\n`];
182
- break;
183
- case "r":
184
- [acc, state, buffer] = [acc, types_1.ELexState.string, `${buffer}\r`];
185
- break;
186
- case "\\":
187
- [acc, state, buffer] = [acc, types_1.ELexState.string, `${buffer}\\`];
188
- break;
189
- case "u":
190
- console.warn(`unicode escaping not supported yet, ${code.slice(pointer - 1, pointer + 10)}...`);
191
- [acc, state, buffer] = [acc, types_1.ELexState.string, `${buffer}\\u`];
192
- break;
193
- default:
194
- throw new Error(`Unknown \\${c} in escape`);
195
- }
196
- break;
197
- case types_1.ELexState.indent:
198
- switch (c) {
199
- case " ":
200
- [acc, state, buffer] = [acc, types_1.ELexState.indent, `${buffer}${c}`];
201
- break;
202
- case "\n":
203
- [acc, state, buffer] = [acc, types_1.ELexState.indent, ""];
204
- break;
205
- case '"':
206
- acc.push(parseIndentation(buffer));
207
- [state, buffer] = [types_1.ELexState.string, ""];
208
- break;
209
- case "(":
210
- acc.push(parseIndentation(buffer), types_1.ELexControl.open);
211
- [state, buffer] = [types_1.ELexState.space, ""];
212
- break;
213
- default:
214
- acc.push(parseIndentation(buffer));
215
- [state, buffer] = [types_1.ELexState.token, c];
216
- break;
217
- }
218
- break;
219
- default:
220
- console.log("Unknown state:", c);
221
- return acc;
222
- }
95
+ for (let i = 0; i < level - newLevel; i++)
96
+ emitClose();
97
+ emitClose();
98
+ emitOpen();
223
99
  }
224
- }
225
- return acc;
226
- };
227
- let repeat = (times, x) => {
228
- let xs = [];
229
- for (let i = 1; i <= times; i++) {
230
- xs.push(x);
231
- }
232
- return xs;
233
- };
234
- let resolveIndentations = (initialTokens) => {
235
- let acc = [];
236
- let level = 0;
237
- let tokens = initialTokens;
100
+ level = newLevel;
101
+ };
238
102
  let pointer = 0;
239
- while (true) {
240
- if (pointer >= tokens.length) {
241
- if ((0, tree_1.isEmpty)(acc)) {
242
- return [];
243
- }
244
- else {
245
- acc.unshift(types_1.ELexControl.open);
246
- (0, tree_1.pushToList)(acc, repeat(level, types_1.ELexControl.close), [types_1.ELexControl.close]);
247
- return acc;
248
- }
249
- }
250
- else {
251
- let cursor = tokens[pointer];
252
- if (typeof cursor === "string") {
253
- acc.push(cursor);
254
- pointer += 1;
255
- [level] = [level];
256
- }
257
- else if (cursor === types_1.ELexControl.open || cursor === types_1.ELexControl.close) {
258
- acc.push(cursor);
259
- pointer += 1;
260
- [level] = [level];
261
- }
262
- else if (typeof cursor === "number") {
263
- if (cursor > level) {
264
- let delta = cursor - level;
265
- (0, tree_1.pushToList)(acc, repeat(delta, types_1.ELexControl.open));
266
- pointer += 1;
267
- [level] = [cursor];
103
+ while (pointer < len) {
104
+ const c = code.charCodeAt(pointer++);
105
+ switch (state) {
106
+ case types_1.ELexState.space:
107
+ switch (c) {
108
+ case CHAR_SPACE:
109
+ break;
110
+ case CHAR_NEWLINE:
111
+ state = types_1.ELexState.indent;
112
+ indentCount = 0;
113
+ break;
114
+ case CHAR_LPAREN:
115
+ emitOpen();
116
+ break;
117
+ case CHAR_RPAREN:
118
+ emitClose();
119
+ break;
120
+ case CHAR_DQUOTE:
121
+ state = types_1.ELexState.string;
122
+ stringStart = pointer;
123
+ stringHasEscape = false;
124
+ buffer = "";
125
+ break;
126
+ default:
127
+ state = types_1.ELexState.token;
128
+ tokenStart = pointer - 1;
129
+ break;
268
130
  }
269
- else if (cursor < level) {
270
- let delta = level - cursor;
271
- (0, tree_1.pushToList)(acc, repeat(delta, types_1.ELexControl.close), [types_1.ELexControl.close, types_1.ELexControl.open]);
272
- pointer += 1;
273
- [level] = [cursor];
131
+ break;
132
+ case types_1.ELexState.token:
133
+ switch (c) {
134
+ case CHAR_SPACE:
135
+ emitToken(code.slice(tokenStart, pointer - 1));
136
+ state = types_1.ELexState.space;
137
+ break;
138
+ case CHAR_DQUOTE:
139
+ emitToken(code.slice(tokenStart, pointer - 1));
140
+ state = types_1.ELexState.string;
141
+ stringStart = pointer;
142
+ stringHasEscape = false;
143
+ buffer = "";
144
+ break;
145
+ case CHAR_NEWLINE:
146
+ emitToken(code.slice(tokenStart, pointer - 1));
147
+ state = types_1.ELexState.indent;
148
+ indentCount = 0;
149
+ break;
150
+ case CHAR_LPAREN:
151
+ emitToken(code.slice(tokenStart, pointer - 1));
152
+ emitOpen();
153
+ state = types_1.ELexState.space;
154
+ break;
155
+ case CHAR_RPAREN:
156
+ emitToken(code.slice(tokenStart, pointer - 1));
157
+ emitClose();
158
+ state = types_1.ELexState.space;
159
+ break;
160
+ default:
161
+ break;
274
162
  }
275
- else {
276
- if ((0, tree_1.isEmpty)(acc)) {
277
- acc = [];
278
- }
279
- else {
280
- acc.push(types_1.ELexControl.close, types_1.ELexControl.open);
281
- }
282
- pointer += 1;
283
- [level] = [level];
163
+ break;
164
+ case types_1.ELexState.string:
165
+ switch (c) {
166
+ case CHAR_DQUOTE:
167
+ emitToken(stringHasEscape ? buffer : code.slice(stringStart, pointer - 1));
168
+ state = types_1.ELexState.space;
169
+ break;
170
+ case CHAR_BACKSLASH:
171
+ if (!stringHasEscape) {
172
+ buffer = code.slice(stringStart, pointer - 1);
173
+ stringHasEscape = true;
174
+ }
175
+ state = types_1.ELexState.escape;
176
+ break;
177
+ case CHAR_NEWLINE:
178
+ throw new Error("Expected newline in string");
179
+ default:
180
+ if (stringHasEscape)
181
+ buffer = buffer + code[pointer - 1];
182
+ break;
284
183
  }
285
- }
286
- else {
287
- console.log(cursor);
288
- throw new Error("Unknown token");
289
- }
184
+ break;
185
+ case types_1.ELexState.escape:
186
+ switch (c) {
187
+ case CHAR_DQUOTE:
188
+ buffer = buffer + '"';
189
+ break;
190
+ case CHAR_APOSTROPHE:
191
+ buffer = buffer + "'";
192
+ break;
193
+ case CHAR_T:
194
+ buffer = buffer + "\t";
195
+ break;
196
+ case CHAR_N:
197
+ buffer = buffer + "\n";
198
+ break;
199
+ case CHAR_R:
200
+ buffer = buffer + "\r";
201
+ break;
202
+ case CHAR_BACKSLASH:
203
+ buffer = buffer + "\\";
204
+ break;
205
+ case CHAR_U:
206
+ console.warn(`unicode escaping not supported yet, ${code.slice(pointer - 1, pointer + 10)}...`);
207
+ buffer = buffer + "\\u";
208
+ break;
209
+ default:
210
+ throw new Error(`Unknown \\${code[pointer - 1]} in escape`);
211
+ }
212
+ state = types_1.ELexState.string;
213
+ break;
214
+ case types_1.ELexState.indent:
215
+ switch (c) {
216
+ case CHAR_SPACE:
217
+ indentCount++;
218
+ break;
219
+ case CHAR_NEWLINE:
220
+ indentCount = 0;
221
+ break;
222
+ case CHAR_DQUOTE:
223
+ if ((0, tree_1.isOdd)(indentCount))
224
+ throw new Error(`Invalid indentation size ${indentCount}`);
225
+ flushIndent(indentCount >> 1);
226
+ state = types_1.ELexState.string;
227
+ stringStart = pointer;
228
+ stringHasEscape = false;
229
+ buffer = "";
230
+ indentCount = 0;
231
+ break;
232
+ case CHAR_LPAREN:
233
+ if ((0, tree_1.isOdd)(indentCount))
234
+ throw new Error(`Invalid indentation size ${indentCount}`);
235
+ flushIndent(indentCount >> 1);
236
+ emitOpen();
237
+ state = types_1.ELexState.space;
238
+ indentCount = 0;
239
+ break;
240
+ default:
241
+ if ((0, tree_1.isOdd)(indentCount))
242
+ throw new Error(`Invalid indentation size ${indentCount}`);
243
+ flushIndent(indentCount >> 1);
244
+ state = types_1.ELexState.token;
245
+ tokenStart = pointer - 1;
246
+ indentCount = 0;
247
+ break;
248
+ }
249
+ break;
290
250
  }
291
251
  }
252
+ // Flush any token still in progress at end of input
253
+ if (state === types_1.ELexState.token) {
254
+ emitToken(code.slice(tokenStart, len));
255
+ }
256
+ else if (state === types_1.ELexState.escape) {
257
+ throw new Error("Should not be escape");
258
+ }
259
+ else if (state === types_1.ELexState.string) {
260
+ throw new Error("Should not be string");
261
+ }
262
+ if (first)
263
+ return []; // no content was seen
264
+ // Close remaining open levels (mirrors the original: level closes + 1 final close)
265
+ for (let i = 0; i < level; i++)
266
+ emitClose();
267
+ emitClose();
268
+ if (hasDollar || hasComma) {
269
+ return (0, tree_1.resolveDollarComma)(result);
270
+ }
271
+ return result;
292
272
  };
293
273
  /**
294
274
  * Parse Cirru code into an abstract syntax tree (AST).
@@ -303,14 +283,7 @@ let resolveIndentations = (initialTokens) => {
303
283
  * ```
304
284
  */
305
285
  let parse = (code) => {
306
- let tokens = resolveIndentations(lex(code));
307
- let pointer = 0;
308
- let pullToken = () => {
309
- let c = tokens[pointer];
310
- pointer += 1;
311
- return c;
312
- };
313
- return (0, tree_1.resolveComma)((0, tree_1.resolveDollar)(buildExprs(pullToken)));
286
+ return lexAndBuild(code);
314
287
  };
315
288
  exports.parse = parse;
316
289
  /**
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAEpC,iCAAmD;AAInD,gFAAgF;AAChF,gGAAgG;AAChG,EAAE;AACF,eAAe;AACf,wDAAwD;AACxD,4EAA4E;AAC5E,+FAA+F;AAC/F,EAAE;AACF,yEAAyE;AACzE,oFAAoF;AACpF,+FAA+F;AAC/F,iDAAiD;AACjD,EAAE;AACF,mFAAmF;AACnF,qFAAqF;AACrF,0FAA0F;AAC1F,IAAI,WAAW,GAAG,CAAC,IAAY,EAAgB,EAAE;IAC/C,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,eAAe,GAAG,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,GAAG,CAAC;IACnB,MAAM,MAAM,GAAG,GAAG,CAAC;IACnB,MAAM,MAAM,GAAG,GAAG,CAAC;IACnB,MAAM,MAAM,GAAG,GAAG,CAAC;IAEnB,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,IAAI,OAAO,GAAwB,IAAI,CAAC;IACxC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,KAAK,GAAG,iBAAS,CAAC,MAAmB,CAAC;IAC1C,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,8CAA8C;IAC/D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,sEAAsE;IACtE,IAAI,KAAK,GAAG,IAAI,CAAC;IAEjB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IAExB,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,IAAI,OAAO,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,GAAG,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,MAAM,SAAS,GAAG,OAAQ,CAAC;QAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO,GAAG,IAAI,CAAC;SAChB;aAAM;YACL,OAAO,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACzB;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE;QAC/B,OAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,GAAG,KAAK,GAAG;YAAE,SAAS,GAAG,IAAI,CAAC;aAC7B,IAAI,GAAG,KAAK,GAAG;YAAE,QAAQ,GAAG,IAAI,CAAC;IACxC,CAAC,CAAC;IAEF,8EAA8E;IAC9E,0EAA0E;IAC1E,sFAAsF;IACtF,4EAA4E;IAC5E,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,EAAE;QACvC,IAAI,KAAK,EAAE;YACT,KAAK,GAAG,KAAK,CAAC;YACd,QAAQ,EAAE,CAAC,CAAC,+DAA+D;YAC3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE;gBAAE,QAAQ,EAAE,CAAC;YAC9C,KAAK,GAAG,QAAQ,CAAC;YACjB,OAAO;SACR;QACD,IAAI,QAAQ,KAAK,KAAK,EAAE;YACtB,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAC,CAAC,8BAA8B;YAC1C,OAAO;SACR;QACD,IAAI,QAAQ,GAAG,KAAK,EAAE;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,KAAK,EAAE,CAAC,EAAE;gBAAE,QAAQ,EAAE,CAAC;SACvD;aAAM;YACL,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,QAAQ,EAAE,CAAC,EAAE;gBAAE,SAAS,EAAE,CAAC;YACvD,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAC;SACZ;QACD,KAAK,GAAG,QAAQ,CAAC;IACnB,CAAC,CAAC;IAEF,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,OAAO,GAAG,GAAG,EAAE;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,QAAQ,KAAK,EAAE;YACb,KAAK,iBAAS,CAAC,KAAK;gBAClB,QAAQ,CAAC,EAAE;oBACT,KAAK,UAAU;wBACb,MAAM;oBACR,KAAK,YAAY;wBACf,KAAK,GAAG,iBAAS,CAAC,MAAM,CAAC;wBACzB,WAAW,GAAG,CAAC,CAAC;wBAChB,MAAM;oBACR,KAAK,WAAW;wBACd,QAAQ,EAAE,CAAC;wBACX,MAAM;oBACR,KAAK,WAAW;wBACd,SAAS,EAAE,CAAC;wBACZ,MAAM;oBACR,KAAK,WAAW;wBACd,KAAK,GAAG,iBAAS,CAAC,MAAM,CAAC;wBACzB,WAAW,GAAG,OAAO,CAAC;wBACtB,eAAe,GAAG,KAAK,CAAC;wBACxB,MAAM,GAAG,EAAE,CAAC;wBACZ,MAAM;oBACR;wBACE,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;wBACxB,UAAU,GAAG,OAAO,GAAG,CAAC,CAAC;wBACzB,MAAM;iBACT;gBACD,MAAM;YACR,KAAK,iBAAS,CAAC,KAAK;gBAClB,QAAQ,CAAC,EAAE;oBACT,KAAK,UAAU;wBACb,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC/C,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;wBACxB,MAAM;oBACR,KAAK,WAAW;wBACd,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC/C,KAAK,GAAG,iBAAS,CAAC,MAAM,CAAC;wBACzB,WAAW,GAAG,OAAO,CAAC;wBACtB,eAAe,GAAG,KAAK,CAAC;wBACxB,MAAM,GAAG,EAAE,CAAC;wBACZ,MAAM;oBACR,KAAK,YAAY;wBACf,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC/C,KAAK,GAAG,iBAAS,CAAC,MAAM,CAAC;wBACzB,WAAW,GAAG,CAAC,CAAC;wBAChB,MAAM;oBACR,KAAK,WAAW;wBACd,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC/C,QAAQ,EAAE,CAAC;wBACX,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;wBACxB,MAAM;oBACR,KAAK,WAAW;wBACd,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC/C,SAAS,EAAE,CAAC;wBACZ,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;wBACxB,MAAM;oBACR;wBACE,MAAM;iBACT;gBACD,MAAM;YACR,KAAK,iBAAS,CAAC,MAAM;gBACnB,QAAQ,CAAC,EAAE;oBACT,KAAK,WAAW;wBACd,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC3E,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;wBACxB,MAAM;oBACR,KAAK,cAAc;wBACjB,IAAI,CAAC,eAAe,EAAE;4BACpB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;4BAC9C,eAAe,GAAG,IAAI,CAAC;yBACxB;wBACD,KAAK,GAAG,iBAAS,CAAC,MAAM,CAAC;wBACzB,MAAM;oBACR,KAAK,YAAY;wBACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;oBAChD;wBACE,IAAI,eAAe;4BAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;wBACzD,MAAM;iBACT;gBACD,MAAM;YACR,KAAK,iBAAS,CAAC,MAAM;gBACnB,QAAQ,CAAC,EAAE;oBACT,KAAK,WAAW;wBACd,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;wBACtB,MAAM;oBACR,KAAK,eAAe;wBAClB,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;wBACtB,MAAM;oBACR,KAAK,MAAM;wBACT,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;wBACvB,MAAM;oBACR,KAAK,MAAM;wBACT,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;wBACvB,MAAM;oBACR,KAAK,MAAM;wBACT,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;wBACvB,MAAM;oBACR,KAAK,cAAc;wBACjB,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;wBACvB,MAAM;oBACR,KAAK,MAAM;wBACT,OAAO,CAAC,IAAI,CAAC,uCAAuC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;wBAChG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;wBACxB,MAAM;oBACR;wBACE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;iBAC/D;gBACD,KAAK,GAAG,iBAAS,CAAC,MAAM,CAAC;gBACzB,MAAM;YACR,KAAK,iBAAS,CAAC,MAAM;gBACnB,QAAQ,CAAC,EAAE;oBACT,KAAK,UAAU;wBACb,WAAW,EAAE,CAAC;wBACd,MAAM;oBACR,KAAK,YAAY;wBACf,WAAW,GAAG,CAAC,CAAC;wBAChB,MAAM;oBACR,KAAK,WAAW;wBACd,IAAI,IAAA,YAAK,EAAC,WAAW,CAAC;4BAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,WAAW,EAAE,CAAC,CAAC;wBACnF,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;wBAC9B,KAAK,GAAG,iBAAS,CAAC,MAAM,CAAC;wBACzB,WAAW,GAAG,OAAO,CAAC;wBACtB,eAAe,GAAG,KAAK,CAAC;wBACxB,MAAM,GAAG,EAAE,CAAC;wBACZ,WAAW,GAAG,CAAC,CAAC;wBAChB,MAAM;oBACR,KAAK,WAAW;wBACd,IAAI,IAAA,YAAK,EAAC,WAAW,CAAC;4BAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,WAAW,EAAE,CAAC,CAAC;wBACnF,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;wBAC9B,QAAQ,EAAE,CAAC;wBACX,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;wBACxB,WAAW,GAAG,CAAC,CAAC;wBAChB,MAAM;oBACR;wBACE,IAAI,IAAA,YAAK,EAAC,WAAW,CAAC;4BAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,WAAW,EAAE,CAAC,CAAC;wBACnF,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;wBAC9B,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;wBACxB,UAAU,GAAG,OAAO,GAAG,CAAC,CAAC;wBACzB,WAAW,GAAG,CAAC,CAAC;wBAChB,MAAM;iBACT;gBACD,MAAM;SACT;KACF;IAED,oDAAoD;IACpD,IAAI,KAAK,KAAK,iBAAS,CAAC,KAAK,EAAE;QAC7B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;KACxC;SAAM,IAAI,KAAK,KAAK,iBAAS,CAAC,MAAM,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACzC;SAAM,IAAI,KAAK,KAAK,iBAAS,CAAC,MAAM,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACzC;IAED,IAAI,KAAK;QAAE,OAAO,EAAE,CAAC,CAAC,sBAAsB;IAE5C,mFAAmF;IACnF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;QAAE,SAAS,EAAE,CAAC;IAC5C,SAAS,EAAE,CAAC;IAEZ,IAAI,SAAS,IAAI,QAAQ,EAAE;QACzB,OAAO,IAAA,yBAAkB,EAAC,MAAM,CAAC,CAAC;KACnC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACI,IAAI,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE;IAClC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC;AAFS,QAAA,KAAK,SAEd;AAEF;;;;;;;;;;;;;;;GAeG;AACI,IAAI,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE;IAC1C,IAAI,MAAM,GAAG,IAAA,aAAK,EAAC,IAAI,CAAC,CAAC;IACzB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,MAAM,cAAc,CAAC,CAAC;KACjF;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC;AANS,QAAA,aAAa,iBAMtB"}
package/lib/tree.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ICirruNode } from "./types";
1
+ import type { ICirruNode } from "./types";
2
2
  export declare let pushToList: <T>(acc: T[], xs: T[], ys?: T[], zs?: T[]) => T[];
3
3
  export declare let isArray: (arg: any) => arg is any[];
4
4
  export declare let isEmpty: (xs: any[] | string) => boolean;
@@ -8,3 +8,4 @@ export declare let isNumber: (x: any) => boolean;
8
8
  export declare let isOdd: (x: number) => boolean;
9
9
  export declare let resolveComma: (xs: ICirruNode[]) => ICirruNode[];
10
10
  export declare let resolveDollar: (xs: ICirruNode[]) => ICirruNode[];
11
+ export declare let resolveDollarComma: (xs: ICirruNode[]) => ICirruNode[];