@jalvin/compiler 2.0.31 → 2.0.33
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/dist/codegen/index.d.ts +179 -0
- package/dist/codegen/index.d.ts.map +1 -0
- package/dist/codegen/index.js +2207 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/codegen.d.ts +1 -1
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +14 -17
- package/dist/codegen.js.map +1 -1
- package/dist/codegen_freestanding_c.d.ts +9 -0
- package/dist/codegen_freestanding_c.d.ts.map +1 -0
- package/dist/codegen_freestanding_c.js +321 -0
- package/dist/codegen_freestanding_c.js.map +1 -0
- package/dist/diagnostics.d.ts +2 -0
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +3 -1
- package/dist/diagnostics.js.map +1 -1
- package/dist/lexer/chars.d.ts +5 -0
- package/dist/lexer/chars.d.ts.map +1 -0
- package/dist/lexer/chars.js +20 -0
- package/dist/lexer/chars.js.map +1 -0
- package/dist/lexer/index.d.ts +37 -0
- package/dist/lexer/index.d.ts.map +1 -0
- package/dist/lexer/index.js +630 -0
- package/dist/lexer/index.js.map +1 -0
- package/dist/lexer/tokens.d.ts +135 -0
- package/dist/lexer/tokens.d.ts.map +1 -0
- package/dist/lexer/tokens.js +89 -0
- package/dist/lexer/tokens.js.map +1 -0
- package/dist/parser/constants.d.ts +3 -0
- package/dist/parser/constants.d.ts.map +1 -0
- package/dist/parser/constants.js +7 -0
- package/dist/parser/constants.js.map +1 -0
- package/dist/parser/helpers.d.ts +2 -0
- package/dist/parser/helpers.d.ts.map +1 -0
- package/dist/parser/helpers.js +9 -0
- package/dist/parser/helpers.js.map +1 -0
- package/dist/parser/index.d.ts +118 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +2387 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/typechecker/globals.d.ts +2 -0
- package/dist/typechecker/globals.d.ts.map +1 -0
- package/dist/typechecker/globals.js +15 -0
- package/dist/typechecker/globals.js.map +1 -0
- package/dist/typechecker/index.d.ts +146 -0
- package/dist/typechecker/index.d.ts.map +1 -0
- package/dist/typechecker/index.js +2288 -0
- package/dist/typechecker/index.js.map +1 -0
- package/dist/typechecker/types.d.ts +66 -0
- package/dist/typechecker/types.d.ts.map +1 -0
- package/dist/typechecker/types.js +39 -0
- package/dist/typechecker/types.js.map +1 -0
- package/dist/typechecker.d.ts +12 -0
- package/dist/typechecker.d.ts.map +1 -1
- package/dist/typechecker.js +243 -149
- package/dist/typechecker.js.map +1 -1
- package/package.json +10 -15
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateFreestandingC = generateFreestandingC;
|
|
4
|
+
const E_FREESTANDING_UNSUPPORTED = "E0900";
|
|
5
|
+
class Writer {
|
|
6
|
+
lines = [];
|
|
7
|
+
indent = 0;
|
|
8
|
+
line(text = "") {
|
|
9
|
+
this.lines.push(`${" ".repeat(this.indent)}${text}`);
|
|
10
|
+
}
|
|
11
|
+
push() {
|
|
12
|
+
this.indent++;
|
|
13
|
+
}
|
|
14
|
+
pop() {
|
|
15
|
+
this.indent = Math.max(0, this.indent - 1);
|
|
16
|
+
}
|
|
17
|
+
build() {
|
|
18
|
+
return this.lines.join("\n") + "\n";
|
|
19
|
+
}
|
|
20
|
+
lineMap() {
|
|
21
|
+
return this.lines.map((_, idx) => idx + 1);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function generateFreestandingC(program, diagnostics) {
|
|
25
|
+
const w = new Writer();
|
|
26
|
+
w.line("/* Jalvin freestanding C output */");
|
|
27
|
+
w.line("#include <stdbool.h>");
|
|
28
|
+
w.line("#include <stddef.h>");
|
|
29
|
+
w.line("#include <stdint.h>");
|
|
30
|
+
w.line();
|
|
31
|
+
if (program.imports.length > 0) {
|
|
32
|
+
for (const imp of program.imports) {
|
|
33
|
+
diagnostics.error(imp.span, E_FREESTANDING_UNSUPPORTED, "Imports are not supported by the freestanding C backend yet.");
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
for (const decl of program.declarations) {
|
|
37
|
+
switch (decl.kind) {
|
|
38
|
+
case "FunDecl":
|
|
39
|
+
emitFunDecl(w, decl, diagnostics);
|
|
40
|
+
w.line();
|
|
41
|
+
break;
|
|
42
|
+
case "PropertyDecl":
|
|
43
|
+
emitGlobalProperty(w, decl, diagnostics);
|
|
44
|
+
w.line();
|
|
45
|
+
break;
|
|
46
|
+
default:
|
|
47
|
+
diagnostics.error(decl.span, E_FREESTANDING_UNSUPPORTED, `Freestanding C backend does not support ${decl.kind} yet.`);
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
code: w.build(),
|
|
53
|
+
lineMap: w.lineMap(),
|
|
54
|
+
isJsx: false,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function emitFunDecl(w, decl, diagnostics) {
|
|
58
|
+
if (decl.typeParams.length > 0 || decl.receiver) {
|
|
59
|
+
diagnostics.error(decl.span, E_FREESTANDING_UNSUPPORTED, `Function '${decl.name}' uses type parameters or receiver types that are not supported in freestanding C output.`);
|
|
60
|
+
}
|
|
61
|
+
const returnType = mapTypeRef(decl.returnType, diagnostics, decl.span);
|
|
62
|
+
const params = decl.params.map((p) => `${mapTypeRef(p.type, diagnostics, p.span)} ${p.name}`).join(", ");
|
|
63
|
+
const signature = `${returnType} ${decl.name}(${params || "void"})`;
|
|
64
|
+
if (!decl.body) {
|
|
65
|
+
w.line(`${signature};`);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (decl.body.kind !== "Block") {
|
|
69
|
+
w.line(`${signature} {`);
|
|
70
|
+
w.push();
|
|
71
|
+
if (returnType === "void") {
|
|
72
|
+
w.line(`${emitExpr(decl.body, diagnostics)};`);
|
|
73
|
+
w.line("return;");
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
w.line(`return ${emitExpr(decl.body, diagnostics)};`);
|
|
77
|
+
}
|
|
78
|
+
w.pop();
|
|
79
|
+
w.line("}");
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
w.line(`${signature} {`);
|
|
83
|
+
w.push();
|
|
84
|
+
for (const stmt of decl.body.statements) {
|
|
85
|
+
emitStmt(w, stmt, diagnostics);
|
|
86
|
+
}
|
|
87
|
+
w.pop();
|
|
88
|
+
w.line("}");
|
|
89
|
+
}
|
|
90
|
+
function emitGlobalProperty(w, decl, diagnostics) {
|
|
91
|
+
const declaredType = decl.type ? mapTypeRef(decl.type, diagnostics, decl.span) : null;
|
|
92
|
+
const inferredType = inferTypeFromExpr(decl.initializer);
|
|
93
|
+
const type = declaredType ?? inferredType ?? "int32_t";
|
|
94
|
+
if (!decl.type && !decl.initializer) {
|
|
95
|
+
diagnostics.error(decl.span, E_FREESTANDING_UNSUPPORTED, `Global '${decl.name}' needs an explicit type or initializer for freestanding C output.`);
|
|
96
|
+
}
|
|
97
|
+
if (decl.initializer) {
|
|
98
|
+
w.line(`${type} ${decl.name} = ${emitExpr(decl.initializer, diagnostics)};`);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
w.line(`${type} ${decl.name};`);
|
|
102
|
+
}
|
|
103
|
+
function emitStmt(w, stmt, diagnostics) {
|
|
104
|
+
switch (stmt.kind) {
|
|
105
|
+
case "PropertyDecl": {
|
|
106
|
+
const declaredType = stmt.type ? mapTypeRef(stmt.type, diagnostics, stmt.span) : null;
|
|
107
|
+
const inferredType = inferTypeFromExpr(stmt.initializer);
|
|
108
|
+
const type = declaredType ?? inferredType ?? "int32_t";
|
|
109
|
+
const init = stmt.initializer ? ` = ${emitExpr(stmt.initializer, diagnostics)}` : "";
|
|
110
|
+
w.line(`${type} ${stmt.name}${init};`);
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
case "ExprStmt":
|
|
114
|
+
w.line(`${emitExpr(stmt.expr, diagnostics)};`);
|
|
115
|
+
break;
|
|
116
|
+
case "ReturnStmt":
|
|
117
|
+
if (stmt.value)
|
|
118
|
+
w.line(`return ${emitExpr(stmt.value, diagnostics)};`);
|
|
119
|
+
else
|
|
120
|
+
w.line("return;");
|
|
121
|
+
break;
|
|
122
|
+
case "IfStmt":
|
|
123
|
+
w.line(`if (${emitExpr(stmt.condition, diagnostics)}) {`);
|
|
124
|
+
w.push();
|
|
125
|
+
for (const s of stmt.then.statements)
|
|
126
|
+
emitStmt(w, s, diagnostics);
|
|
127
|
+
w.pop();
|
|
128
|
+
if (!stmt.else) {
|
|
129
|
+
w.line("}");
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
if (stmt.else.kind === "IfStmt") {
|
|
133
|
+
w.line(`} else if (${emitExpr(stmt.else.condition, diagnostics)}) {`);
|
|
134
|
+
w.push();
|
|
135
|
+
for (const s of stmt.else.then.statements)
|
|
136
|
+
emitStmt(w, s, diagnostics);
|
|
137
|
+
w.pop();
|
|
138
|
+
w.line("}");
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
w.line("} else {");
|
|
142
|
+
w.push();
|
|
143
|
+
for (const s of stmt.else.statements)
|
|
144
|
+
emitStmt(w, s, diagnostics);
|
|
145
|
+
w.pop();
|
|
146
|
+
w.line("}");
|
|
147
|
+
break;
|
|
148
|
+
case "WhileStmt":
|
|
149
|
+
w.line(`while (${emitExpr(stmt.condition, diagnostics)}) {`);
|
|
150
|
+
w.push();
|
|
151
|
+
for (const s of stmt.body.statements)
|
|
152
|
+
emitStmt(w, s, diagnostics);
|
|
153
|
+
w.pop();
|
|
154
|
+
w.line("}");
|
|
155
|
+
break;
|
|
156
|
+
case "Block":
|
|
157
|
+
w.line("{");
|
|
158
|
+
w.push();
|
|
159
|
+
for (const s of stmt.statements)
|
|
160
|
+
emitStmt(w, s, diagnostics);
|
|
161
|
+
w.pop();
|
|
162
|
+
w.line("}");
|
|
163
|
+
break;
|
|
164
|
+
case "BreakStmt":
|
|
165
|
+
w.line("break;");
|
|
166
|
+
break;
|
|
167
|
+
case "ContinueStmt":
|
|
168
|
+
w.line("continue;");
|
|
169
|
+
break;
|
|
170
|
+
default:
|
|
171
|
+
diagnostics.error(stmt.span, E_FREESTANDING_UNSUPPORTED, `Freestanding C backend does not support ${stmt.kind} yet.`);
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function emitExpr(expr, diagnostics) {
|
|
176
|
+
switch (expr.kind) {
|
|
177
|
+
case "IntLiteralExpr":
|
|
178
|
+
case "FloatLiteralExpr":
|
|
179
|
+
case "DoubleLiteralExpr":
|
|
180
|
+
return String(expr.value);
|
|
181
|
+
case "LongLiteralExpr":
|
|
182
|
+
return `${expr.value.toString()}LL`;
|
|
183
|
+
case "BooleanLiteralExpr":
|
|
184
|
+
return expr.value ? "true" : "false";
|
|
185
|
+
case "NullLiteralExpr":
|
|
186
|
+
return "NULL";
|
|
187
|
+
case "StringLiteralExpr":
|
|
188
|
+
return `"${escapeCString(expr.value)}"`;
|
|
189
|
+
case "NameExpr":
|
|
190
|
+
return expr.name;
|
|
191
|
+
case "ParenExpr":
|
|
192
|
+
return `(${emitExpr(expr.expr, diagnostics)})`;
|
|
193
|
+
case "UnaryExpr": {
|
|
194
|
+
const op = expr.op === "not" ? "!" : expr.op;
|
|
195
|
+
return expr.prefix
|
|
196
|
+
? `(${op}${emitExpr(expr.operand, diagnostics)})`
|
|
197
|
+
: `(${emitExpr(expr.operand, diagnostics)}${op})`;
|
|
198
|
+
}
|
|
199
|
+
case "BinaryExpr": {
|
|
200
|
+
const op = mapBinaryOp(expr.op, diagnostics, expr.span);
|
|
201
|
+
return `(${emitExpr(expr.left, diagnostics)} ${op} ${emitExpr(expr.right, diagnostics)})`;
|
|
202
|
+
}
|
|
203
|
+
case "AssignExpr":
|
|
204
|
+
return `(${emitAssignTarget(expr.target, diagnostics)} = ${emitExpr(expr.value, diagnostics)})`;
|
|
205
|
+
case "CompoundAssignExpr":
|
|
206
|
+
return `(${emitAssignTarget(expr.target, diagnostics)} ${expr.op} ${emitExpr(expr.value, diagnostics)})`;
|
|
207
|
+
case "IncrDecrExpr":
|
|
208
|
+
return expr.prefix
|
|
209
|
+
? `(${expr.op}${emitAssignTarget(expr.target, diagnostics)})`
|
|
210
|
+
: `(${emitAssignTarget(expr.target, diagnostics)}${expr.op})`;
|
|
211
|
+
case "CallExpr": {
|
|
212
|
+
if (expr.typeArgs.length > 0 || expr.trailingLambda) {
|
|
213
|
+
diagnostics.error(expr.span, E_FREESTANDING_UNSUPPORTED, "Generic calls and trailing lambdas are not supported by the freestanding C backend.");
|
|
214
|
+
}
|
|
215
|
+
const callee = emitExpr(expr.callee, diagnostics);
|
|
216
|
+
const args = expr.args.map((a) => {
|
|
217
|
+
if (a.name || a.spread) {
|
|
218
|
+
diagnostics.error(a.span, E_FREESTANDING_UNSUPPORTED, "Named and spread arguments are not supported by the freestanding C backend.");
|
|
219
|
+
}
|
|
220
|
+
return emitExpr(a.value, diagnostics);
|
|
221
|
+
}).join(", ");
|
|
222
|
+
return `${callee}(${args})`;
|
|
223
|
+
}
|
|
224
|
+
case "MemberExpr":
|
|
225
|
+
return `${emitExpr(expr.target, diagnostics)}.${expr.member}`;
|
|
226
|
+
case "IndexExpr":
|
|
227
|
+
return `${emitExpr(expr.target, diagnostics)}[${emitExpr(expr.index, diagnostics)}]`;
|
|
228
|
+
default:
|
|
229
|
+
diagnostics.error(expr.span, E_FREESTANDING_UNSUPPORTED, `Freestanding C backend does not support ${expr.kind} yet.`);
|
|
230
|
+
return "0";
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
function emitAssignTarget(target, diagnostics) {
|
|
234
|
+
switch (target.kind) {
|
|
235
|
+
case "NameExpr":
|
|
236
|
+
return target.name;
|
|
237
|
+
case "MemberExpr":
|
|
238
|
+
return `${emitExpr(target.target, diagnostics)}.${target.member}`;
|
|
239
|
+
case "IndexExpr":
|
|
240
|
+
return `${emitExpr(target.target, diagnostics)}[${emitExpr(target.index, diagnostics)}]`;
|
|
241
|
+
case "SafeMemberExpr":
|
|
242
|
+
diagnostics.error(target.span, E_FREESTANDING_UNSUPPORTED, "Safe member assignment is not supported by the freestanding C backend.");
|
|
243
|
+
return `${emitExpr(target.target, diagnostics)}.${target.member}`;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
function mapBinaryOp(op, diagnostics, span) {
|
|
247
|
+
switch (op) {
|
|
248
|
+
case "and": return "&&";
|
|
249
|
+
case "or": return "||";
|
|
250
|
+
case "xor": return "^";
|
|
251
|
+
case "shl": return "<<";
|
|
252
|
+
case "shr": return ">>";
|
|
253
|
+
case "ushr": return ">>";
|
|
254
|
+
case "..":
|
|
255
|
+
case "..<":
|
|
256
|
+
case "in":
|
|
257
|
+
case "!in":
|
|
258
|
+
diagnostics.error(span, E_FREESTANDING_UNSUPPORTED, `Operator '${op}' is not supported by the freestanding C backend.`);
|
|
259
|
+
return "/* unsupported */";
|
|
260
|
+
default:
|
|
261
|
+
return op;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
function mapTypeRef(type, diagnostics, span) {
|
|
265
|
+
if (!type)
|
|
266
|
+
return "void";
|
|
267
|
+
switch (type.kind) {
|
|
268
|
+
case "SimpleTypeRef": {
|
|
269
|
+
const rawName = type.name[type.name.length - 1] ?? "Any";
|
|
270
|
+
switch (rawName) {
|
|
271
|
+
case "Unit": return "void";
|
|
272
|
+
case "Boolean": return "bool";
|
|
273
|
+
case "Byte": return "int8_t";
|
|
274
|
+
case "Short": return "int16_t";
|
|
275
|
+
case "Int": return "int32_t";
|
|
276
|
+
case "Long": return "int64_t";
|
|
277
|
+
case "Float": return "float";
|
|
278
|
+
case "Double": return "double";
|
|
279
|
+
case "String": return "const char*";
|
|
280
|
+
case "Char": return "char";
|
|
281
|
+
case "Any": return "uintptr_t";
|
|
282
|
+
default:
|
|
283
|
+
diagnostics.error(span, E_FREESTANDING_UNSUPPORTED, `Type '${rawName}' is not supported by the freestanding C backend.`);
|
|
284
|
+
return "uintptr_t";
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
case "NullableTypeRef": {
|
|
288
|
+
const baseType = mapTypeRef(type.base, diagnostics, span);
|
|
289
|
+
if (baseType === "void")
|
|
290
|
+
return "void*";
|
|
291
|
+
if (baseType.endsWith("*"))
|
|
292
|
+
return baseType;
|
|
293
|
+
return `${baseType}*`;
|
|
294
|
+
}
|
|
295
|
+
default:
|
|
296
|
+
diagnostics.error(span, E_FREESTANDING_UNSUPPORTED, `Type form '${type.kind}' is not supported by the freestanding C backend.`);
|
|
297
|
+
return "uintptr_t";
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
function inferTypeFromExpr(expr) {
|
|
301
|
+
if (!expr)
|
|
302
|
+
return null;
|
|
303
|
+
switch (expr.kind) {
|
|
304
|
+
case "BooleanLiteralExpr": return "bool";
|
|
305
|
+
case "LongLiteralExpr": return "int64_t";
|
|
306
|
+
case "FloatLiteralExpr": return "float";
|
|
307
|
+
case "DoubleLiteralExpr": return "double";
|
|
308
|
+
case "StringLiteralExpr": return "const char*";
|
|
309
|
+
case "NullLiteralExpr": return "void*";
|
|
310
|
+
default: return "int32_t";
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
function escapeCString(value) {
|
|
314
|
+
return value
|
|
315
|
+
.replace(/\\/g, "\\\\")
|
|
316
|
+
.replace(/\n/g, "\\n")
|
|
317
|
+
.replace(/\r/g, "\\r")
|
|
318
|
+
.replace(/\t/g, "\\t")
|
|
319
|
+
.replace(/\"/g, '\\\"');
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=codegen_freestanding_c.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen_freestanding_c.js","sourceRoot":"","sources":["../src/codegen_freestanding_c.ts"],"names":[],"mappings":";;AAoCA,sDA+CC;AA1ED,MAAM,0BAA0B,GAAG,OAAO,CAAC;AAE3C,MAAM,MAAM;IACO,KAAK,GAAa,EAAE,CAAC;IAC9B,MAAM,GAAG,CAAC,CAAC;IAEnB,IAAI,CAAC,IAAI,GAAG,EAAE;QACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,IAAI;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,GAAG;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;CACF;AAED,SAAgB,qBAAqB,CACnC,OAAoB,EACpB,WAA0B;IAE1B,MAAM,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;IAEvB,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAC7C,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC/B,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC9B,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC9B,CAAC,CAAC,IAAI,EAAE,CAAC;IAET,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClC,WAAW,CAAC,KAAK,CACf,GAAG,CAAC,IAAI,EACR,0BAA0B,EAC1B,8DAA8D,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACxC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,SAAS;gBACZ,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;gBAClC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACT,MAAM;YACR,KAAK,cAAc;gBACjB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;gBACzC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACT,MAAM;YACR;gBACE,WAAW,CAAC,KAAK,CACf,IAAI,CAAC,IAAI,EACT,0BAA0B,EAC1B,2CAA2C,IAAI,CAAC,IAAI,OAAO,CAC5D,CAAC;gBACF,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,KAAK,EAAE,KAAK;KACb,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,CAAS,EAAE,IAAiB,EAAE,WAA0B;IAC3E,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChD,WAAW,CAAC,KAAK,CACf,IAAI,CAAC,IAAI,EACT,0BAA0B,EAC1B,aAAa,IAAI,CAAC,IAAI,2FAA2F,CAClH,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzG,MAAM,SAAS,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,IAAI,MAAM,GAAG,CAAC;IAEpE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;QACxB,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC,IAAI,EAAE,CAAC;QACT,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,CAAC,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC;QACD,CAAC,CAAC,GAAG,EAAE,CAAC;QACR,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,OAAO;IACT,CAAC;IAED,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC,IAAI,EAAE,CAAC;IACT,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACjC,CAAC;IACD,CAAC,CAAC,GAAG,EAAE,CAAC;IACR,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAS,EAAE,IAAsB,EAAE,WAA0B;IACvF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtF,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,YAAY,IAAI,YAAY,IAAI,SAAS,CAAC;IAEvD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,WAAW,CAAC,KAAK,CACf,IAAI,CAAC,IAAI,EACT,0BAA0B,EAC1B,WAAW,IAAI,CAAC,IAAI,oEAAoE,CACzF,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7E,OAAO;IACT,CAAC;IAED,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS,EAAE,IAAc,EAAE,WAA0B;IACrE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtF,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,YAAY,IAAI,YAAY,IAAI,SAAS,CAAC;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;YACvC,MAAM;QACR,CAAC;QACD,KAAK,UAAU;YACb,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM;QACR,KAAK,YAAY;YACf,IAAI,IAAI,CAAC,KAAK;gBAAE,CAAC,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;;gBAClE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM;QACR,KAAK,QAAQ;YACX,CAAC,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC,CAAC,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;YAClE,CAAC,CAAC,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACZ,MAAM;YACR,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChC,CAAC,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtE,CAAC,CAAC,IAAI,EAAE,CAAC;gBACT,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;oBAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;gBACvE,CAAC,CAAC,GAAG,EAAE,CAAC;gBACR,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACZ,MAAM;YACR,CAAC;YACD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACnB,CAAC,CAAC,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;YAClE,CAAC,CAAC,GAAG,EAAE,CAAC;YACR,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACZ,MAAM;QACR,KAAK,WAAW;YACd,CAAC,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;YAC7D,CAAC,CAAC,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;YAClE,CAAC,CAAC,GAAG,EAAE,CAAC;YACR,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACZ,MAAM;QACR,KAAK,OAAO;YACV,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACZ,CAAC,CAAC,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU;gBAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;YAC7D,CAAC,CAAC,GAAG,EAAE,CAAC;YACR,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACZ,MAAM;QACR,KAAK,WAAW;YACd,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjB,MAAM;QACR,KAAK,cAAc;YACjB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACpB,MAAM;QACR;YACE,WAAW,CAAC,KAAK,CACf,IAAI,CAAC,IAAI,EACT,0BAA0B,EAC1B,2CAA2C,IAAI,CAAC,IAAI,OAAO,CAC5D,CAAC;YACF,MAAM;IACV,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAc,EAAE,WAA0B;IAC1D,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,gBAAgB,CAAC;QACtB,KAAK,kBAAkB,CAAC;QACxB,KAAK,mBAAmB;YACtB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,iBAAiB;YACpB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;QACtC,KAAK,oBAAoB;YACvB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACvC,KAAK,iBAAiB;YACpB,OAAO,MAAM,CAAC;QAChB,KAAK,mBAAmB;YACtB,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1C,KAAK,UAAU;YACb,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC;QACjD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,MAAM;gBAChB,CAAC,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG;gBACjD,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;QACtD,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACxD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC;QAC5F,CAAC;QACD,KAAK,YAAY;YACf,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC;QAClG,KAAK,oBAAoB;YACvB,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC;QAC3G,KAAK,cAAc;YACjB,OAAO,IAAI,CAAC,MAAM;gBAChB,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG;gBAC7D,CAAC,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;QAClE,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpD,WAAW,CAAC,KAAK,CACf,IAAI,CAAC,IAAI,EACT,0BAA0B,EAC1B,qFAAqF,CACtF,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC/B,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;oBACvB,WAAW,CAAC,KAAK,CACf,CAAC,CAAC,IAAI,EACN,0BAA0B,EAC1B,6EAA6E,CAC9E,CAAC;gBACJ,CAAC;gBACD,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,OAAO,GAAG,MAAM,IAAI,IAAI,GAAG,CAAC;QAC9B,CAAC;QACD,KAAK,YAAY;YACf,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChE,KAAK,WAAW;YACd,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC;QACvF;YACE,WAAW,CAAC,KAAK,CACf,IAAI,CAAC,IAAI,EACT,0BAA0B,EAC1B,2CAA2C,IAAI,CAAC,IAAI,OAAO,CAC5D,CAAC;YACF,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAwB,EAAE,WAA0B;IAC5E,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,UAAU;YACb,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,KAAK,YAAY;YACf,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACpE,KAAK,WAAW;YACd,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC;QAC3F,KAAK,gBAAgB;YACnB,WAAW,CAAC,KAAK,CACf,MAAM,CAAC,IAAI,EACX,0BAA0B,EAC1B,wEAAwE,CACzE,CAAC;YACF,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;IACtE,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAgB,EAAE,WAA0B,EAAE,IAAc;IAC/E,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC;QACxB,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC;QACvB,KAAK,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC;QACvB,KAAK,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC;QACxB,KAAK,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC;QACxB,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC;QACzB,KAAK,IAAI,CAAC;QACV,KAAK,KAAK,CAAC;QACX,KAAK,IAAI,CAAC;QACV,KAAK,KAAK;YACR,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,0BAA0B,EAAE,aAAa,EAAE,mDAAmD,CAAC,CAAC;YACxH,OAAO,mBAAmB,CAAC;QAC7B;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAwB,EAAE,WAA0B,EAAE,IAAc;IACtF,IAAI,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;IACzB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC;YACzD,QAAQ,OAAO,EAAE,CAAC;gBAChB,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;gBAC3B,KAAK,SAAS,CAAC,CAAC,OAAO,MAAM,CAAC;gBAC9B,KAAK,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC;gBAC7B,KAAK,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;gBAC/B,KAAK,KAAK,CAAC,CAAC,OAAO,SAAS,CAAC;gBAC7B,KAAK,MAAM,CAAC,CAAC,OAAO,SAAS,CAAC;gBAC9B,KAAK,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC;gBAC7B,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;gBAC/B,KAAK,QAAQ,CAAC,CAAC,OAAO,aAAa,CAAC;gBACpC,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;gBAC3B,KAAK,KAAK,CAAC,CAAC,OAAO,WAAW,CAAC;gBAC/B;oBACE,WAAW,CAAC,KAAK,CACf,IAAI,EACJ,0BAA0B,EAC1B,SAAS,OAAO,mDAAmD,CACpE,CAAC;oBACF,OAAO,WAAW,CAAC;YACvB,CAAC;QACH,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,QAAQ,KAAK,MAAM;gBAAE,OAAO,OAAO,CAAC;YACxC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,QAAQ,CAAC;YAC5C,OAAO,GAAG,QAAQ,GAAG,CAAC;QACxB,CAAC;QACD;YACE,WAAW,CAAC,KAAK,CACf,IAAI,EACJ,0BAA0B,EAC1B,cAAc,IAAI,CAAC,IAAI,mDAAmD,CAC3E,CAAC;YACF,OAAO,WAAW,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAqB;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,oBAAoB,CAAC,CAAC,OAAO,MAAM,CAAC;QACzC,KAAK,iBAAiB,CAAC,CAAC,OAAO,SAAS,CAAC;QACzC,KAAK,kBAAkB,CAAC,CAAC,OAAO,OAAO,CAAC;QACxC,KAAK,mBAAmB,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC1C,KAAK,mBAAmB,CAAC,CAAC,OAAO,aAAa,CAAC;QAC/C,KAAK,iBAAiB,CAAC,CAAC,OAAO,OAAO,CAAC;QACvC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK;SACT,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5B,CAAC"}
|
package/dist/diagnostics.d.ts
CHANGED
|
@@ -58,6 +58,8 @@ export declare const E_OVERRIDE_NOTHING = "E0311";
|
|
|
58
58
|
export declare const E_CLASS_EXTENDS_FINAL = "E0312";
|
|
59
59
|
export declare const E_CONST_VAL_REASSIGNMENT = "E0320";
|
|
60
60
|
export declare const E_LATEINIT_INVALID = "E0321";
|
|
61
|
+
export declare const E_COMPONENT_CONTEXT_REQUIRED = "E0322";
|
|
62
|
+
export declare const E_COMPONENT_CALL_ORDER = "E0323";
|
|
61
63
|
export declare const W_UNUSED_VARIABLE = "W0001";
|
|
62
64
|
export declare const W_UNREACHABLE_CODE = "W0002";
|
|
63
65
|
export declare const W_IMPLICIT_ANY = "W0003";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAE3C,IAAI,KAAK,IAAI,aAAa,CAAC,UAAU,CAAC,CAErC;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,UAAU,CAAC;IAIjD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,cAAc,EAAO,GAAG,IAAI;IAIpF,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,cAAc,EAAO,GAAG,IAAI;IAItF,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,cAAc,EAAO,GAAG,IAAI;IAInF,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,cAAc,EAAO,GAAG,IAAI;IAInF,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAIjC,mFAAmF;IACnF,UAAU,IAAI,MAAM;IAIpB,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIlC,sEAAsE;IACtE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;CAyBhC;AAKD,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAC7C,eAAO,MAAM,gBAAgB,UAAU,CAAC;AACxC,eAAO,MAAM,iBAAiB,UAAU,CAAC;AACzC,eAAO,MAAM,4BAA4B,UAAU,CAAC;AACpD,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAGhD,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAC1C,eAAO,MAAM,gBAAgB,UAAU,CAAC;AACxC,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAC7C,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAC5C,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAChD,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAC7C,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAG3C,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAC1C,eAAO,MAAM,cAAc,UAAU,CAAC;AACtC,eAAO,MAAM,yBAAyB,UAAU,CAAC;AACjD,eAAO,MAAM,iBAAiB,UAAU,CAAC;AACzC,eAAO,MAAM,gBAAgB,UAAU,CAAC;AACxC,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAC7C,eAAO,MAAM,gCAAgC,UAAU,CAAC;AACxD,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAChD,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAChD,eAAO,MAAM,iCAAiC,UAAU,CAAC;AACzD,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAC1C,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAC7C,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAChD,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAC1C,eAAO,MAAM,4BAA4B,UAAU,CAAC;AACpD,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAG9C,eAAO,MAAM,iBAAiB,UAAU,CAAC;AACzC,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAC1C,eAAO,MAAM,cAAc,UAAU,CAAC;AACtC,eAAO,MAAM,YAAY,UAAU,CAAC"}
|
package/dist/diagnostics.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Jalvin Diagnostics — structured error/warning/info reporting
|
|
4
4
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.W_DEPRECATED = exports.W_IMPLICIT_ANY = exports.W_UNREACHABLE_CODE = exports.W_UNUSED_VARIABLE = exports.E_LATEINIT_INVALID = exports.E_CONST_VAL_REASSIGNMENT = exports.E_CLASS_EXTENDS_FINAL = exports.E_OVERRIDE_NOTHING = exports.E_ABSTRACT_MEMBER_NOT_IMPLEMENTED = exports.E_DUPLICATE_CLASS_MEMBER = exports.E_SUSPEND_IN_NON_SUSPEND = exports.E_SEALED_SUBTYPE_OUTSIDE_PACKAGE = exports.E_WHEN_NOT_EXHAUSTIVE = exports.E_NOT_A_FUNCTION = exports.E_WRONG_ARG_COUNT = exports.E_UNSAFE_NULL_DEREFERENCE = exports.E_NOT_NULLABLE = exports.E_UNDEFINED_SYMBOL = exports.E_TYPE_MISMATCH = exports.E_WHEN_MISSING_ELSE = exports.E_MISSING_RETURN_TYPE = exports.E_INCOMPATIBLE_MODIFIERS = exports.E_DUPLICATE_MODIFIER = exports.E_EXPECTED_TYPE = exports.E_EXPECTED_EXPRESSION = exports.E_EXPECTED_TOKEN = exports.E_UNEXPECTED_TOKEN = exports.E_INVALID_NUMBER_LITERAL = exports.E_UNTERMINATED_BLOCK_COMMENT = exports.E_UNEXPECTED_CHAR = exports.E_INVALID_ESCAPE = exports.E_UNTERMINATED_STRING = exports.DiagnosticBag = void 0;
|
|
6
|
+
exports.W_DEPRECATED = exports.W_IMPLICIT_ANY = exports.W_UNREACHABLE_CODE = exports.W_UNUSED_VARIABLE = exports.E_COMPONENT_CALL_ORDER = exports.E_COMPONENT_CONTEXT_REQUIRED = exports.E_LATEINIT_INVALID = exports.E_CONST_VAL_REASSIGNMENT = exports.E_CLASS_EXTENDS_FINAL = exports.E_OVERRIDE_NOTHING = exports.E_ABSTRACT_MEMBER_NOT_IMPLEMENTED = exports.E_DUPLICATE_CLASS_MEMBER = exports.E_SUSPEND_IN_NON_SUSPEND = exports.E_SEALED_SUBTYPE_OUTSIDE_PACKAGE = exports.E_WHEN_NOT_EXHAUSTIVE = exports.E_NOT_A_FUNCTION = exports.E_WRONG_ARG_COUNT = exports.E_UNSAFE_NULL_DEREFERENCE = exports.E_NOT_NULLABLE = exports.E_UNDEFINED_SYMBOL = exports.E_TYPE_MISMATCH = exports.E_WHEN_MISSING_ELSE = exports.E_MISSING_RETURN_TYPE = exports.E_INCOMPATIBLE_MODIFIERS = exports.E_DUPLICATE_MODIFIER = exports.E_EXPECTED_TYPE = exports.E_EXPECTED_EXPRESSION = exports.E_EXPECTED_TOKEN = exports.E_UNEXPECTED_TOKEN = exports.E_INVALID_NUMBER_LITERAL = exports.E_UNTERMINATED_BLOCK_COMMENT = exports.E_UNEXPECTED_CHAR = exports.E_INVALID_ESCAPE = exports.E_UNTERMINATED_STRING = exports.DiagnosticBag = void 0;
|
|
7
7
|
class DiagnosticBag {
|
|
8
8
|
_items = [];
|
|
9
9
|
get items() {
|
|
@@ -104,6 +104,8 @@ exports.E_OVERRIDE_NOTHING = "E0311";
|
|
|
104
104
|
exports.E_CLASS_EXTENDS_FINAL = "E0312";
|
|
105
105
|
exports.E_CONST_VAL_REASSIGNMENT = "E0320";
|
|
106
106
|
exports.E_LATEINIT_INVALID = "E0321";
|
|
107
|
+
exports.E_COMPONENT_CONTEXT_REQUIRED = "E0322";
|
|
108
|
+
exports.E_COMPONENT_CALL_ORDER = "E0323";
|
|
107
109
|
// Codegen warnings: W0001–W0099
|
|
108
110
|
exports.W_UNUSED_VARIABLE = "W0001";
|
|
109
111
|
exports.W_UNREACHABLE_CODE = "W0002";
|
package/dist/diagnostics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function isIdentStart(ch: string): boolean;
|
|
2
|
+
export declare function isIdentContinue(ch: string): boolean;
|
|
3
|
+
export declare function isDigit(ch: string): boolean;
|
|
4
|
+
export declare function isHexDigit(ch: string): boolean;
|
|
5
|
+
//# sourceMappingURL=chars.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chars.d.ts","sourceRoot":"","sources":["../../src/lexer/chars.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE3C;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE9C"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Character classification helpers used by the lexer.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.isIdentStart = isIdentStart;
|
|
5
|
+
exports.isIdentContinue = isIdentContinue;
|
|
6
|
+
exports.isDigit = isDigit;
|
|
7
|
+
exports.isHexDigit = isHexDigit;
|
|
8
|
+
function isIdentStart(ch) {
|
|
9
|
+
return /[a-zA-Z_]/.test(ch);
|
|
10
|
+
}
|
|
11
|
+
function isIdentContinue(ch) {
|
|
12
|
+
return /[a-zA-Z0-9_]/.test(ch);
|
|
13
|
+
}
|
|
14
|
+
function isDigit(ch) {
|
|
15
|
+
return ch >= "0" && ch <= "9";
|
|
16
|
+
}
|
|
17
|
+
function isHexDigit(ch) {
|
|
18
|
+
return (ch >= "0" && ch <= "9") || (ch >= "a" && ch <= "f") || (ch >= "A" && ch <= "F");
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=chars.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chars.js","sourceRoot":"","sources":["../../src/lexer/chars.ts"],"names":[],"mappings":";AAAA,sDAAsD;;AAEtD,oCAEC;AAED,0CAEC;AAED,0BAEC;AAED,gCAEC;AAdD,SAAgB,YAAY,CAAC,EAAU;IACrC,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,eAAe,CAAC,EAAU;IACxC,OAAO,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,OAAO,CAAC,EAAU;IAChC,OAAO,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC;AAChC,CAAC;AAED,SAAgB,UAAU,CAAC,EAAU;IACnC,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;AAC1F,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { DiagnosticBag } from "../diagnostics.js";
|
|
2
|
+
import { type Token } from "./tokens.js";
|
|
3
|
+
export { ASI_SET, KEYWORDS, TokenKind, type Token } from "./tokens.js";
|
|
4
|
+
export declare class Lexer {
|
|
5
|
+
private pos;
|
|
6
|
+
private line;
|
|
7
|
+
private col;
|
|
8
|
+
private readonly src;
|
|
9
|
+
private readonly file;
|
|
10
|
+
private readonly diag;
|
|
11
|
+
constructor(src: string, file: string, diag: DiagnosticBag);
|
|
12
|
+
tokenize(): Token[];
|
|
13
|
+
private nextToken;
|
|
14
|
+
private lexIdentOrKeyword;
|
|
15
|
+
private lexNumber;
|
|
16
|
+
private lexString;
|
|
17
|
+
private lexRawString;
|
|
18
|
+
private parseEscape;
|
|
19
|
+
private lexSymbol;
|
|
20
|
+
private skipLineComment;
|
|
21
|
+
private skipBlockComment;
|
|
22
|
+
/**
|
|
23
|
+
* Returns true when the next meaningful token after the current newline is a
|
|
24
|
+
* dot-continuation (`.member` or `?.member`), in which case ASI must NOT be
|
|
25
|
+
* inserted so that multi-line method chains work correctly.
|
|
26
|
+
*
|
|
27
|
+
* Scans forward from `this.pos + 1` skipping whitespace and comments.
|
|
28
|
+
* `.` followed by another `.` (range `..`) does NOT count as continuation.
|
|
29
|
+
*/
|
|
30
|
+
private peekIsDotContinuation;
|
|
31
|
+
private advance;
|
|
32
|
+
private peek;
|
|
33
|
+
private spanAt;
|
|
34
|
+
private makeSpan;
|
|
35
|
+
}
|
|
36
|
+
export declare function lex(src: string, file: string, diag: DiagnosticBag): Token[];
|
|
37
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lexer/index.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,aAAa,EAMd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAgC,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAMvE,qBAAa,KAAK;IAChB,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;gBAEzB,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa;IAM1D,QAAQ,IAAI,KAAK,EAAE;IAqDnB,OAAO,CAAC,SAAS;IAyBjB,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,SAAS;IA8FjB,OAAO,CAAC,SAAS;IAgFjB,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,WAAW;IAkDnB,OAAO,CAAC,SAAS;IAyFjB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,gBAAgB;IAuBxB;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IAqC7B,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,QAAQ;CAWjB;AAMD,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,KAAK,EAAE,CAE3E"}
|