@misterscan/sesi 1.1.1

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.
Files changed (82) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +191 -0
  3. package/bin/sesi.js +56 -0
  4. package/dist/ai-runtime.d.ts +15 -0
  5. package/dist/ai-runtime.d.ts.map +1 -0
  6. package/dist/ai-runtime.js +214 -0
  7. package/dist/ai-runtime.js.map +1 -0
  8. package/dist/builtins.d.ts +7 -0
  9. package/dist/builtins.d.ts.map +1 -0
  10. package/dist/builtins.js +473 -0
  11. package/dist/builtins.js.map +1 -0
  12. package/dist/index.d.ts +3 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +72 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/interpreter.d.ts +36 -0
  17. package/dist/interpreter.d.ts.map +1 -0
  18. package/dist/interpreter.js +495 -0
  19. package/dist/interpreter.js.map +1 -0
  20. package/dist/lexer.d.ts +26 -0
  21. package/dist/lexer.d.ts.map +1 -0
  22. package/dist/lexer.js +340 -0
  23. package/dist/lexer.js.map +1 -0
  24. package/dist/parser.d.ts +55 -0
  25. package/dist/parser.d.ts.map +1 -0
  26. package/dist/parser.js +1022 -0
  27. package/dist/parser.js.map +1 -0
  28. package/dist/types.d.ts +304 -0
  29. package/dist/types.d.ts.map +1 -0
  30. package/dist/types.js +63 -0
  31. package/dist/types.js.map +1 -0
  32. package/docs/ARCHITECTURE.md +430 -0
  33. package/docs/BUILTINS.md +577 -0
  34. package/docs/COMPARISON.md +334 -0
  35. package/docs/DISTRIBUTED_SYSTEMS.md +71 -0
  36. package/docs/IMAGE_GENERATION.md +76 -0
  37. package/docs/IMPLEMENTATION_SUMMARY.md +533 -0
  38. package/docs/QUICKSTART.md +351 -0
  39. package/docs/README.md +191 -0
  40. package/docs/ROADMAP.md +408 -0
  41. package/docs/SPECIFICATION.md +462 -0
  42. package/docs/SYSTEMS_REASONING.md +522 -0
  43. package/examples/01_hello.sesi +2 -0
  44. package/examples/02_variables.sesi +11 -0
  45. package/examples/03_functions.sesi +6 -0
  46. package/examples/04_conditionals.sesi +6 -0
  47. package/examples/05_loops.sesi +12 -0
  48. package/examples/06_arrays_objects.sesi +18 -0
  49. package/examples/07_prompts.sesi +10 -0
  50. package/examples/08_model_call.sesi +5 -0
  51. package/examples/09_structured_output.sesi +7 -0
  52. package/examples/10_code_generation.sesi +5 -0
  53. package/examples/11_memory_conversation.sesi +16 -0
  54. package/examples/12_classification.sesi +8 -0
  55. package/examples/13_data_pipeline.sesi +35 -0
  56. package/examples/14_folder_explainer.sesi +58 -0
  57. package/examples/15_image_generation.sesi +17 -0
  58. package/main/atm_deposit.sesi +37 -0
  59. package/main/atm_withdraw.sesi +37 -0
  60. package/main/data.txt +1 -0
  61. package/main/math_aggregator.sesi +15 -0
  62. package/main/math_generator.sesi +7 -0
  63. package/main/math_processor.sesi +23 -0
  64. package/main/orchestrator.sesi +15 -0
  65. package/main/playground.sesi +1 -0
  66. package/main/setup_swarm.sesi +5 -0
  67. package/main/start.sesi +13 -0
  68. package/main/tax_calculator.sesi +15 -0
  69. package/main/tests/compare.sesi +23 -0
  70. package/main/tests/compare.ts +104 -0
  71. package/main/tests/debug.sesi +1 -0
  72. package/main/tests/demo.sesi +24 -0
  73. package/main/tests/primitive_validation.sesi +18 -0
  74. package/main/tests/test_connection.sesi +4 -0
  75. package/main/tests/test_failure_debug.sesi +2 -0
  76. package/main/tests/test_image.sesi +3 -0
  77. package/main/tests/test_parser_config.sesi +2 -0
  78. package/main/tests/test_syntax.sesi +3 -0
  79. package/main/tests/test_tool_call.sesi +14 -0
  80. package/main/tests/try.sesi +7 -0
  81. package/main/vault.sesi +15 -0
  82. package/package.json +50 -0
@@ -0,0 +1,495 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Interpreter = void 0;
4
+ // Tree-walking interpreter for Sesi
5
+ const types_1 = require("./types");
6
+ const builtins_1 = require("./builtins");
7
+ const ai_runtime_1 = require("./ai-runtime");
8
+ class Interpreter {
9
+ constructor() {
10
+ this.prompts = new Map();
11
+ this.memory = new Map();
12
+ this.globalEnv = new types_1.Environment();
13
+ this.currentEnv = this.globalEnv;
14
+ // Add built-in functions
15
+ const builtins = (0, builtins_1.getBuiltins)();
16
+ for (const [name, fn] of builtins) {
17
+ this.globalEnv.define(name, fn);
18
+ }
19
+ }
20
+ async interpret(program) {
21
+ for (const statement of program.statements) {
22
+ await this.executeStatement(statement);
23
+ }
24
+ }
25
+ async executeStatement(statement) {
26
+ switch (statement.type) {
27
+ case 'LetStatement':
28
+ await this.executeLet(statement);
29
+ break;
30
+ case 'ConstStatement':
31
+ await this.executeConst(statement);
32
+ break;
33
+ case 'FunctionStatement':
34
+ await this.executeFunction(statement);
35
+ break;
36
+ case 'ExpressionStatement':
37
+ await this.executeExpression(statement);
38
+ break;
39
+ case 'BlockStatement':
40
+ await this.executeBlock(statement, new types_1.Environment(this.currentEnv));
41
+ break;
42
+ case 'IfStatement':
43
+ await this.executeIf(statement);
44
+ break;
45
+ case 'WhileStatement':
46
+ await this.executeWhile(statement);
47
+ break;
48
+ case 'ForStatement':
49
+ await this.executeFor(statement);
50
+ break;
51
+ case 'ReturnStatement':
52
+ throw new types_1.ReturnValue((statement).value
53
+ ? await this.evaluateExpression((statement).value)
54
+ : null);
55
+ case 'BreakStatement':
56
+ throw new types_1.BreakException();
57
+ case 'ContinueStatement':
58
+ throw new types_1.ContinueException();
59
+ case 'TryStatement':
60
+ await this.executeTry(statement);
61
+ break;
62
+ case 'MemoryStatement':
63
+ await this.executeMemory(statement);
64
+ break;
65
+ case 'ImportStatement':
66
+ console.log('Import not yet implemented');
67
+ break;
68
+ case 'ExportStatement':
69
+ console.log('Export not yet implemented');
70
+ break;
71
+ }
72
+ }
73
+ async executeLet(stmt) {
74
+ const value = stmt.value ? await this.evaluateExpression(stmt.value) : null;
75
+ this.currentEnv.define(stmt.name, value);
76
+ }
77
+ async executeConst(stmt) {
78
+ const value = await this.evaluateExpression(stmt.value);
79
+ this.currentEnv.define(stmt.name, value);
80
+ }
81
+ executeFunction(stmt) {
82
+ const fn = {
83
+ type: 'function',
84
+ name: stmt.name,
85
+ params: stmt.parameters,
86
+ body: stmt.body,
87
+ closure: this.currentEnv,
88
+ };
89
+ this.currentEnv.define(stmt.name, fn);
90
+ }
91
+ async executeExpression(stmt) {
92
+ await this.evaluateExpression(stmt.expression);
93
+ }
94
+ async executeBlock(block, env) {
95
+ const previous = this.currentEnv;
96
+ this.currentEnv = env;
97
+ try {
98
+ for (const statement of block.statements) {
99
+ await this.executeStatement(statement);
100
+ }
101
+ }
102
+ finally {
103
+ this.currentEnv = previous;
104
+ }
105
+ }
106
+ async executeTry(stmt) {
107
+ try {
108
+ await this.executeBlock(stmt.tryBlock, new types_1.Environment(this.currentEnv));
109
+ }
110
+ catch (e) {
111
+ if (e instanceof types_1.BreakException || e instanceof types_1.ContinueException || e instanceof types_1.ReturnValue) {
112
+ throw e;
113
+ }
114
+ const catchEnv = new types_1.Environment(this.currentEnv);
115
+ catchEnv.define(stmt.catchParameter, e instanceof Error ? e.message : String(e));
116
+ await this.executeBlock(stmt.catchBlock, catchEnv);
117
+ }
118
+ }
119
+ async executeIf(stmt) {
120
+ const condition = await this.evaluateExpression(stmt.condition);
121
+ if ((0, builtins_1.isTruthy)(condition)) {
122
+ await this.executeBlock(stmt.thenBranch, new types_1.Environment(this.currentEnv));
123
+ }
124
+ else if (stmt.elseBranch) {
125
+ if (stmt.elseBranch.type === 'BlockStatement') {
126
+ await this.executeBlock(stmt.elseBranch, new types_1.Environment(this.currentEnv));
127
+ }
128
+ else {
129
+ await this.executeStatement(stmt.elseBranch);
130
+ }
131
+ }
132
+ }
133
+ async executeWhile(stmt) {
134
+ while ((0, builtins_1.isTruthy)(await this.evaluateExpression(stmt.condition))) {
135
+ try {
136
+ await this.executeBlock(stmt.body, new types_1.Environment(this.currentEnv));
137
+ }
138
+ catch (e) {
139
+ if (e instanceof types_1.BreakException) {
140
+ break;
141
+ }
142
+ if (e instanceof types_1.ContinueException) {
143
+ continue;
144
+ }
145
+ throw e;
146
+ }
147
+ }
148
+ }
149
+ async executeFor(stmt) {
150
+ const forEnv = new types_1.Environment(this.currentEnv);
151
+ const previous = this.currentEnv;
152
+ this.currentEnv = forEnv;
153
+ try {
154
+ if (stmt.iterable) {
155
+ // for x in array
156
+ const iterable = await this.evaluateExpression(stmt.iterable);
157
+ if (Array.isArray(iterable)) {
158
+ for (const item of iterable) {
159
+ this.currentEnv.define(stmt.variable, item);
160
+ try {
161
+ await this.executeBlock(stmt.body, new types_1.Environment(this.currentEnv));
162
+ }
163
+ catch (e) {
164
+ if (e instanceof types_1.BreakException) {
165
+ break;
166
+ }
167
+ if (e instanceof types_1.ContinueException) {
168
+ continue;
169
+ }
170
+ throw e;
171
+ }
172
+ }
173
+ }
174
+ }
175
+ else if (stmt.start && stmt.end) {
176
+ // for x = 0 to 10
177
+ const start = await this.evaluateExpression(stmt.start);
178
+ const end = await this.evaluateExpression(stmt.end);
179
+ if (typeof start === 'number' && typeof end === 'number') {
180
+ for (let i = start; i < end; i++) {
181
+ this.currentEnv.define(stmt.variable, i);
182
+ try {
183
+ await this.executeBlock(stmt.body, new types_1.Environment(this.currentEnv));
184
+ }
185
+ catch (e) {
186
+ if (e instanceof types_1.BreakException) {
187
+ break;
188
+ }
189
+ if (e instanceof types_1.ContinueException) {
190
+ continue;
191
+ }
192
+ throw e;
193
+ }
194
+ }
195
+ }
196
+ }
197
+ }
198
+ finally {
199
+ this.currentEnv = previous;
200
+ }
201
+ }
202
+ async executeMemory(stmt) {
203
+ const value = stmt.initialValue ? await this.evaluateExpression(stmt.initialValue) : '';
204
+ const stringValue = (0, builtins_1.stringify)(value);
205
+ this.memory.set(stmt.name, stringValue);
206
+ ai_runtime_1.aiRuntime.initializeMemory(stmt.name, stringValue);
207
+ this.currentEnv.define(stmt.name, stringValue);
208
+ }
209
+ async evaluateExpression(expr) {
210
+ switch (expr.type) {
211
+ case 'Literal':
212
+ return (expr).value;
213
+ case 'Identifier':
214
+ return this.currentEnv.get((expr).name);
215
+ case 'BinaryOp':
216
+ return await this.evaluateBinaryOp(expr);
217
+ case 'UnaryOp':
218
+ return await this.evaluateUnaryOp(expr);
219
+ case 'LogicalOp':
220
+ return await this.evaluateLogicalOp(expr);
221
+ case 'Assignment':
222
+ return await this.evaluateAssignment(expr);
223
+ case 'CallExpression':
224
+ return await this.evaluateCall(expr);
225
+ case 'MemberExpression':
226
+ return await this.evaluateMember(expr);
227
+ case 'IndexExpression':
228
+ return await this.evaluateIndex(expr);
229
+ case 'ArrayLiteral':
230
+ return await this.evaluateArray(expr);
231
+ case 'ObjectLiteral':
232
+ return await this.evaluateObject(expr);
233
+ case 'PromptExpression':
234
+ return await this.evaluatePrompt(expr);
235
+ case 'ImageCallExpression':
236
+ return await this.evaluateImageCall(expr);
237
+ case 'ModelCallExpression':
238
+ return await this.evaluateModelCall(expr);
239
+ case 'StructuredOutputExpression':
240
+ return await this.evaluateStructuredOutput(expr);
241
+ case 'ToolCallExpression':
242
+ return await this.evaluateToolCall(expr);
243
+ default:
244
+ return null;
245
+ }
246
+ }
247
+ async evaluateBinaryOp(expr) {
248
+ const left = await this.evaluateExpression(expr.left);
249
+ const right = await this.evaluateExpression(expr.right);
250
+ switch (expr.operator) {
251
+ case '+':
252
+ if (typeof left === 'string' || typeof right === 'string') {
253
+ return (0, builtins_1.stringify)(left) + (0, builtins_1.stringify)(right);
254
+ }
255
+ return left + right;
256
+ case '-':
257
+ return left - right;
258
+ case '*':
259
+ return left * right;
260
+ case '/':
261
+ return left / right;
262
+ case '%':
263
+ return left % right;
264
+ case '==':
265
+ return (0, builtins_1.isEqual)(left, right);
266
+ case '!=':
267
+ return !(0, builtins_1.isEqual)(left, right);
268
+ case '<':
269
+ return (0, builtins_1.compareValues)(left, right) < 0;
270
+ case '<=':
271
+ return (0, builtins_1.compareValues)(left, right) <= 0;
272
+ case '>':
273
+ return (0, builtins_1.compareValues)(left, right) > 0;
274
+ case '>=':
275
+ return (0, builtins_1.compareValues)(left, right) >= 0;
276
+ default:
277
+ return null;
278
+ }
279
+ }
280
+ async evaluateUnaryOp(expr) {
281
+ const operand = await this.evaluateExpression(expr.operand);
282
+ switch (expr.operator) {
283
+ case '-':
284
+ return -operand;
285
+ case '!':
286
+ return !(0, builtins_1.isTruthy)(operand);
287
+ default:
288
+ return null;
289
+ }
290
+ }
291
+ async evaluateLogicalOp(expr) {
292
+ const left = await this.evaluateExpression(expr.left);
293
+ if (expr.operator === '||') {
294
+ if ((0, builtins_1.isTruthy)(left))
295
+ return left;
296
+ return await this.evaluateExpression(expr.right);
297
+ }
298
+ else {
299
+ // &&
300
+ if (!(0, builtins_1.isTruthy)(left))
301
+ return left;
302
+ return await this.evaluateExpression(expr.right);
303
+ }
304
+ }
305
+ async evaluateAssignment(expr) {
306
+ const value = await this.evaluateExpression(expr.right);
307
+ if (expr.left.type === 'Identifier') {
308
+ const name = (expr.left).name;
309
+ this.currentEnv.set(name, value);
310
+ if (this.memory.has(name)) {
311
+ const stringValue = (0, builtins_1.stringify)(value);
312
+ this.memory.set(name, stringValue);
313
+ ai_runtime_1.aiRuntime.updateMemory(name, stringValue);
314
+ }
315
+ return value;
316
+ }
317
+ if (expr.left.type === 'IndexExpression') {
318
+ const indexExpr = expr.left;
319
+ const obj = await this.evaluateExpression(indexExpr.object);
320
+ const index = await this.evaluateExpression(indexExpr.index);
321
+ if (Array.isArray(obj) && typeof index === 'number') {
322
+ obj[index] = value;
323
+ }
324
+ else if (typeof obj === 'object' && obj !== null && typeof index === 'string') {
325
+ obj[index] = value;
326
+ }
327
+ return value;
328
+ }
329
+ if (expr.left.type === 'MemberExpression') {
330
+ const memberExpr = expr.left;
331
+ const obj = await this.evaluateExpression(memberExpr.object);
332
+ if (typeof obj === 'object' && obj !== null) {
333
+ obj[memberExpr.property] = value;
334
+ }
335
+ return value;
336
+ }
337
+ return value;
338
+ }
339
+ async evaluateCall(expr) {
340
+ const callee = await this.evaluateExpression(expr.callee);
341
+ if (typeof callee !== 'object' || !callee || callee.type !== 'function') {
342
+ throw new Error(`Not a function: ${(0, builtins_1.stringify)(callee)}`);
343
+ }
344
+ const fn = callee;
345
+ const args = [];
346
+ for (const arg of expr.arguments) {
347
+ args.push(await this.evaluateExpression(arg));
348
+ }
349
+ if (fn.isBuiltin && fn.builtin) {
350
+ return fn.builtin(...args);
351
+ }
352
+ // User-defined function
353
+ const callEnv = new types_1.Environment(fn.closure);
354
+ // Bind parameters
355
+ for (let i = 0; i < fn.params.length; i++) {
356
+ const param = fn.params[i];
357
+ const value = i < args.length ? args[i] : (param.defaultValue ? await this.evaluateExpression(param.defaultValue) : null);
358
+ callEnv.define(param.name, value);
359
+ }
360
+ const previous = this.currentEnv;
361
+ this.currentEnv = callEnv;
362
+ try {
363
+ await this.executeBlock(fn.body, callEnv);
364
+ return null;
365
+ }
366
+ catch (e) {
367
+ if (e instanceof types_1.ReturnValue) {
368
+ return e.value;
369
+ }
370
+ throw e;
371
+ }
372
+ finally {
373
+ this.currentEnv = previous;
374
+ }
375
+ }
376
+ async evaluateMember(expr) {
377
+ const obj = await this.evaluateExpression(expr.object);
378
+ if (typeof obj === 'object' && obj !== null) {
379
+ return obj[expr.property] ?? null;
380
+ }
381
+ return null;
382
+ }
383
+ async evaluateIndex(expr) {
384
+ const obj = await this.evaluateExpression(expr.object);
385
+ const index = await this.evaluateExpression(expr.index);
386
+ if (Array.isArray(obj) && typeof index === 'number') {
387
+ return obj[index] ?? null;
388
+ }
389
+ if (typeof obj === 'object' && obj !== null && typeof index === 'string') {
390
+ return obj[index] ?? null;
391
+ }
392
+ return null;
393
+ }
394
+ async evaluateArray(expr) {
395
+ const elements = [];
396
+ for (const elem of expr.elements) {
397
+ elements.push(await this.evaluateExpression(elem));
398
+ }
399
+ return elements;
400
+ }
401
+ async evaluateObject(expr) {
402
+ const obj = {};
403
+ for (const prop of expr.properties) {
404
+ obj[prop.key] = await this.evaluateExpression(prop.value);
405
+ }
406
+ return obj;
407
+ }
408
+ async evaluatePrompt(expr) {
409
+ const parts = [];
410
+ for (const content of expr.content) {
411
+ const value = await this.evaluateExpression(content);
412
+ parts.push((0, builtins_1.stringify)(value));
413
+ }
414
+ const prompt = parts.join('');
415
+ this.prompts.set(expr.name, prompt);
416
+ this.currentEnv.define(expr.name, prompt);
417
+ return prompt;
418
+ }
419
+ async evaluateImageCall(expr) {
420
+ let promptText = await this.evaluateExpression(expr.prompt);
421
+ if (typeof promptText !== 'string') {
422
+ promptText = (0, builtins_1.stringify)(promptText);
423
+ }
424
+ const response = await ai_runtime_1.aiRuntime.callModel({
425
+ model: expr.modelName,
426
+ prompt: promptText,
427
+ temperature: expr.config?.temperature ? await this.evaluateExpression(expr.config.temperature) : undefined,
428
+ maxTokens: expr.config?.max_tokens ? await this.evaluateExpression(expr.config.max_tokens) : undefined,
429
+ topK: expr.config?.top_k ? await this.evaluateExpression(expr.config.top_k) : undefined,
430
+ topP: expr.config?.top_p ? await this.evaluateExpression(expr.config.top_p) : undefined,
431
+ ratio: expr.config?.ratio ? await this.evaluateExpression(expr.config.ratio) : undefined,
432
+ size: expr.config?.size ? await this.evaluateExpression(expr.config.size) : undefined,
433
+ });
434
+ return response.text;
435
+ }
436
+ async evaluateModelCall(expr) {
437
+ let promptText = await this.evaluateExpression(expr.prompt);
438
+ if (typeof promptText !== 'string') {
439
+ promptText = (0, builtins_1.stringify)(promptText);
440
+ }
441
+ const response = await ai_runtime_1.aiRuntime.callModel({
442
+ model: expr.modelName,
443
+ prompt: promptText,
444
+ temperature: expr.config?.temperature ? await this.evaluateExpression(expr.config.temperature) : undefined,
445
+ maxTokens: expr.config?.max_tokens ? await this.evaluateExpression(expr.config.max_tokens) : undefined,
446
+ });
447
+ return response.text;
448
+ }
449
+ async evaluateStructuredOutput(expr) {
450
+ const modelResponse = await this.evaluateModelCall(expr.modelCall);
451
+ const schemaObj = {};
452
+ for (const [key, typeAnnotation] of Object.entries(expr.schema)) {
453
+ schemaObj[key] = typeAnnotation.name || 'string';
454
+ }
455
+ const structured = await ai_runtime_1.aiRuntime.parseStructuredOutput(modelResponse, schemaObj);
456
+ return structured;
457
+ }
458
+ async evaluateToolCall(expr) {
459
+ const fn = this.currentEnv.get(expr.functionName);
460
+ if (typeof fn !== 'object' || !fn || fn.type !== 'function') {
461
+ throw new Error(`Tool not found: ${expr.functionName}`);
462
+ }
463
+ const args = [];
464
+ for (const arg of expr.arguments) {
465
+ args.push(await this.evaluateExpression(arg));
466
+ }
467
+ const runtimeFn = fn;
468
+ if (runtimeFn.isBuiltin && runtimeFn.builtin) {
469
+ return runtimeFn.builtin(...args);
470
+ }
471
+ const callEnv = new types_1.Environment(runtimeFn.closure);
472
+ for (let i = 0; i < runtimeFn.params.length; i++) {
473
+ const param = runtimeFn.params[i];
474
+ const value = i < args.length ? args[i] : (param.defaultValue ? await this.evaluateExpression(param.defaultValue) : null);
475
+ callEnv.define(param.name, value);
476
+ }
477
+ const previous = this.currentEnv;
478
+ this.currentEnv = callEnv;
479
+ try {
480
+ await this.executeBlock(runtimeFn.body, callEnv);
481
+ return null;
482
+ }
483
+ catch (e) {
484
+ if (e instanceof types_1.ReturnValue) {
485
+ return e.value;
486
+ }
487
+ throw e;
488
+ }
489
+ finally {
490
+ this.currentEnv = previous;
491
+ }
492
+ }
493
+ }
494
+ exports.Interpreter = Interpreter;
495
+ //# sourceMappingURL=interpreter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Token } from './types';
2
+ export declare class Lexer {
3
+ private source;
4
+ private position;
5
+ private line;
6
+ private column;
7
+ private tokens;
8
+ private keywords;
9
+ constructor(source: string);
10
+ scanTokens(): Token[];
11
+ private scanToken;
12
+ private skipWhitespaceAndComments;
13
+ private string;
14
+ private number;
15
+ private identifier;
16
+ private match;
17
+ private peek;
18
+ private peekNext;
19
+ private isAlpha;
20
+ private isAlphaNumeric;
21
+ private isDigit;
22
+ private isAtEnd;
23
+ private advance;
24
+ private addToken;
25
+ }
26
+ //# sourceMappingURL=lexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAa,MAAM,SAAS,CAAC;AAE3C,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO,CAAC,QAAQ,CA4Bb;gBAES,MAAM,EAAE,MAAM;IAI1B,UAAU,IAAI,KAAK,EAAE;IAoBrB,OAAO,CAAC,SAAS;IAsHjB,OAAO,CAAC,yBAAyB;IA0BjC,OAAO,CAAC,MAAM;IA8Cd,OAAO,CAAC,MAAM;IAkBd,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,QAAQ;CAUjB"}