@enspirit/elo 0.9.7 → 0.9.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.
@@ -0,0 +1,28 @@
1
+ import { Expr } from '../ast';
2
+ /**
3
+ * Python compilation options
4
+ */
5
+ export interface PythonCompileOptions {
6
+ /** If true, immediately execute the function with None as input */
7
+ execute?: boolean;
8
+ /** If true, strip guard/check assertions from output */
9
+ stripGuards?: boolean;
10
+ }
11
+ /**
12
+ * Result of Python compilation
13
+ */
14
+ export interface PythonCompileResult {
15
+ /** The generated Python code */
16
+ code: string;
17
+ /** Whether the code uses the input variable _ */
18
+ usesInput: boolean;
19
+ }
20
+ /**
21
+ * Compiles Elo expressions to Python code
22
+ */
23
+ export declare function compileToPython(expr: Expr, options?: PythonCompileOptions): string;
24
+ /**
25
+ * Compiles Elo expressions to Python with metadata about input usage.
26
+ */
27
+ export declare function compileToPythonWithMeta(expr: Expr, options?: PythonCompileOptions): PythonCompileResult;
28
+ //# sourceMappingURL=python.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../src/compilers/python.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAO9B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,SAAS,EAAE,OAAO,CAAC;CACpB;AAoDD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAGlF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,mBAAmB,CAqBvG"}
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compileToPython = compileToPython;
4
+ exports.compileToPythonWithMeta = compileToPythonWithMeta;
5
+ const ir_1 = require("../ir");
6
+ const transform_1 = require("../transform");
7
+ const python_1 = require("../bindings/python");
8
+ const runtime_1 = require("../runtime");
9
+ /**
10
+ * Python operator precedence (higher = binds tighter)
11
+ */
12
+ const PY_PRECEDENCE = {
13
+ 'or': 0,
14
+ 'and': 1,
15
+ '==': 2, '!=': 2,
16
+ '<': 3, '>': 3, '<=': 3, '>=': 3,
17
+ '+': 4, '-': 4,
18
+ '*': 5, '/': 5, '%': 5,
19
+ '**': 6,
20
+ };
21
+ /**
22
+ * Check if an IR expression needs parentheses when used as child of a binary op
23
+ */
24
+ function needsParens(child, parentOp, side) {
25
+ if (!(0, python_1.isNativeBinaryOp)(child))
26
+ return false;
27
+ const call = child;
28
+ const childOp = python_1.PYTHON_OP_MAP[call.fn];
29
+ if (!childOp)
30
+ return false;
31
+ const parentPrec = PY_PRECEDENCE[parentOp] || 0;
32
+ const childPrec = PY_PRECEDENCE[childOp] || 0;
33
+ if (childPrec < parentPrec)
34
+ return true;
35
+ if (childPrec === parentPrec && side === 'right' && (parentOp === '-' || parentOp === '/')) {
36
+ return true;
37
+ }
38
+ // Non-associative operators need parens when chained
39
+ const nonAssociative = ['==', '!=', '<', '>', '<=', '>='];
40
+ if (childPrec === parentPrec && nonAssociative.includes(parentOp) && nonAssociative.includes(childOp)) {
41
+ return true;
42
+ }
43
+ return false;
44
+ }
45
+ // Create the Python standard library binding
46
+ const pyLib = (0, python_1.createPythonBinding)();
47
+ /**
48
+ * Compiles Elo expressions to Python code
49
+ */
50
+ function compileToPython(expr, options) {
51
+ const result = compileToPythonWithMeta(expr, options);
52
+ return result.code;
53
+ }
54
+ /**
55
+ * Compiles Elo expressions to Python with metadata about input usage.
56
+ */
57
+ function compileToPythonWithMeta(expr, options) {
58
+ const ir = (0, transform_1.transform)(expr);
59
+ const actuallyUsesInput = (0, ir_1.usesInput)(ir);
60
+ const emitOptions = { stripGuards: options?.stripGuards || false };
61
+ const result = emitPyWithHelpers(ir, emitOptions);
62
+ // Resolve helper dependencies
63
+ const allHelpers = new Set(result.requiredHelpers);
64
+ for (const helper of result.requiredHelpers) {
65
+ const deps = runtime_1.PY_HELPER_DEPS[helper];
66
+ if (deps) {
67
+ for (const dep of deps) {
68
+ allHelpers.add(dep);
69
+ }
70
+ }
71
+ }
72
+ // Helpers are provided by the prelude (--prelude-only), not embedded per-expression.
73
+ // Wrap as lambda: (lambda _: CODE)(None)
74
+ const suffix = options?.execute ? '(None)' : '';
75
+ return { code: `(lambda _: ${result.code})${suffix}`, usesInput: actuallyUsesInput };
76
+ }
77
+ function emitPyWithHelpers(ir, options) {
78
+ const requiredHelpers = new Set();
79
+ const code = emitPy(ir, requiredHelpers, options);
80
+ return { code, requiredHelpers };
81
+ }
82
+ /**
83
+ * Emit Python code from IR
84
+ */
85
+ function emitPy(ir, requiredHelpers, options) {
86
+ const ctx = {
87
+ emit: (child) => emitPy(child, requiredHelpers, options),
88
+ emitWithParens: (child, parentOp, side) => {
89
+ const emitted = emitPy(child, requiredHelpers, options);
90
+ if (needsParens(child, parentOp, side)) {
91
+ return `(${emitted})`;
92
+ }
93
+ return emitted;
94
+ },
95
+ requireHelper: requiredHelpers ? (name) => requiredHelpers.add(name) : undefined,
96
+ };
97
+ switch (ir.type) {
98
+ case 'int_literal':
99
+ case 'float_literal':
100
+ return ir.value.toString();
101
+ case 'bool_literal':
102
+ return ir.value ? 'True' : 'False';
103
+ case 'null_literal':
104
+ return 'None';
105
+ case 'string_literal':
106
+ return JSON.stringify(ir.value);
107
+ case 'date_literal': {
108
+ // Parse date string to emit as _elo_dt(y, m, d)
109
+ const [y, m, d] = ir.value.split('-').map(Number);
110
+ return `_elo_dt(${y}, ${m}, ${d})`;
111
+ }
112
+ case 'datetime_literal': {
113
+ // Parse datetime string: "2024-01-15T10:30:00" or "2024-01-15T10:30:00Z"
114
+ const dtVal = ir.value.replace(/Z$/, '');
115
+ const [datePart, timePart] = dtVal.split('T');
116
+ const [dy, dm, dd] = datePart.split('-').map(Number);
117
+ if (timePart) {
118
+ const [th, tm, ts] = timePart.split(':').map(Number);
119
+ return `_elo_dt(${dy}, ${dm}, ${dd}, ${th}, ${tm}, ${ts || 0})`;
120
+ }
121
+ return `_elo_dt(${dy}, ${dm}, ${dd})`;
122
+ }
123
+ case 'duration_literal':
124
+ return `EloDuration.from_iso(${JSON.stringify(ir.value)})`;
125
+ case 'object_literal': {
126
+ const props = ir.properties.map(p => `${JSON.stringify(p.key)}: ${ctx.emit(p.value)}`).join(', ');
127
+ return `{${props}}`;
128
+ }
129
+ case 'array_literal': {
130
+ const elements = ir.elements.map(e => ctx.emit(e)).join(', ');
131
+ return `[${elements}]`;
132
+ }
133
+ case 'variable':
134
+ return ir.name;
135
+ case 'member_access': {
136
+ const object = ctx.emit(ir.object);
137
+ // Use .get() for safe access (returns None for missing keys)
138
+ return `${object}.get(${JSON.stringify(ir.property)})`;
139
+ }
140
+ case 'let': {
141
+ // Use walrus operator: (x := val, body)[-1]
142
+ // For multiple bindings, chain: (a := 1, b := 2, body)[-1]
143
+ const allBindings = [];
144
+ let current = ir;
145
+ while (current.type === 'let') {
146
+ for (const b of current.bindings) {
147
+ allBindings.push({ name: b.name, value: ctx.emit(b.value) });
148
+ }
149
+ current = current.body;
150
+ }
151
+ const body = ctx.emit(current);
152
+ const assignments = allBindings.map(b => `${b.name} := ${b.value}`);
153
+ return `(${[...assignments, body].join(', ')})[-1]`;
154
+ }
155
+ case 'call':
156
+ return pyLib.emit(ir.fn, ir.args, ir.argTypes, ctx);
157
+ case 'if': {
158
+ const cond = ctx.emit(ir.condition);
159
+ const thenBranch = ctx.emit(ir.then);
160
+ const elseBranch = ctx.emit(ir.else);
161
+ return `(${thenBranch}) if (${cond}) else (${elseBranch})`;
162
+ }
163
+ case 'lambda': {
164
+ const params = ir.params.map(p => p.name).join(', ');
165
+ const body = ctx.emit(ir.body);
166
+ return `lambda ${params}: ${body}`;
167
+ }
168
+ case 'apply': {
169
+ const fn = ctx.emit(ir.fn);
170
+ const args = ir.args.map(a => ctx.emit(a)).join(', ');
171
+ // Wrap lambda in parens
172
+ const needsParensWrap = ir.fn.type === 'lambda';
173
+ const fnExpr = needsParensWrap ? `(${fn})` : fn;
174
+ return `${fnExpr}(${args})`;
175
+ }
176
+ case 'alternative': {
177
+ // Null-coalescing: (lambda: v if (v := a) is not None else b)()
178
+ // For simplicity, use nested ternary
179
+ const alts = ir.alternatives;
180
+ if (alts.length === 1)
181
+ return ctx.emit(alts[0]);
182
+ // Build from right: last is default, each prior checks for None
183
+ let result = ctx.emit(alts[alts.length - 1]);
184
+ for (let i = alts.length - 2; i >= 0; i--) {
185
+ const alt = ctx.emit(alts[i]);
186
+ const tmpVar = `_alt${i}`;
187
+ result = `(${tmpVar}) if (${tmpVar} := ${alt}) is not None else (${result})`;
188
+ }
189
+ return `(${result})`;
190
+ }
191
+ case 'datapath': {
192
+ const segments = ir.segments.map(s => typeof s === 'string' ? JSON.stringify(s) : s.toString());
193
+ return `[${segments.join(', ')}]`;
194
+ }
195
+ case 'typedef': {
196
+ // Generate parser function for the type and bind it
197
+ const parserCode = emitTypeExprParser(ir.typeExpr, ctx);
198
+ ctx.requireHelper?.('pUnwrap');
199
+ const body = ctx.emit(ir.body);
200
+ // Use walrus pattern: (_p_Name := parser, Name := lambda v: pUnwrap(_p_Name(v, '')), body)[-1]
201
+ return `(_p_${ir.name} := ${parserCode}, ${ir.name} := lambda v: pUnwrap(_p_${ir.name}(v, '')), ${body})[-1]`;
202
+ }
203
+ case 'guard': {
204
+ const body = ctx.emit(ir.body);
205
+ if (options?.stripGuards) {
206
+ return body;
207
+ }
208
+ // Generate guard checks using kAssert helper
209
+ ctx.requireHelper?.('kAssert');
210
+ const guardChecks = ir.constraints.map(c => {
211
+ const conditionCode = ctx.emit(c.condition);
212
+ const errorMsg = c.label
213
+ ? (c.label.includes(' ') ? c.label : `${ir.guardType} '${c.label}' failed`)
214
+ : `${ir.guardType} failed`;
215
+ return `kAssert(${conditionCode}, ${JSON.stringify(errorMsg)})`;
216
+ });
217
+ // Chain with tuple: (check1, check2, body)[-1]
218
+ return `(${[...guardChecks, body].join(', ')})[-1]`;
219
+ }
220
+ }
221
+ }
222
+ /**
223
+ * Emit a parser expression for a type expression in Python.
224
+ * Uses combinator helpers (pSchema, pArray, pUnion, pSubtype) so that
225
+ * each result is a single expression compatible with walrus-operator chains.
226
+ */
227
+ function emitTypeExprParser(typeExpr, ctx) {
228
+ switch (typeExpr.kind) {
229
+ case 'type_ref': {
230
+ const parserMap = {
231
+ 'Any': 'pAny',
232
+ 'Null': 'pNull',
233
+ 'String': 'pString',
234
+ 'Int': 'pInt',
235
+ 'Float': 'pFloat',
236
+ 'Bool': 'pBool',
237
+ 'Boolean': 'pBool',
238
+ 'Datetime': 'pDatetime',
239
+ };
240
+ const parserName = parserMap[typeExpr.name];
241
+ if (parserName) {
242
+ ctx.requireHelper?.(parserName);
243
+ return parserName;
244
+ }
245
+ // User-defined type reference
246
+ const firstChar = typeExpr.name.charAt(0);
247
+ if (firstChar === firstChar.toUpperCase() && firstChar !== firstChar.toLowerCase()) {
248
+ return `_p_${typeExpr.name}`;
249
+ }
250
+ throw new Error(`Unknown type in type definition: ${typeExpr.name}`);
251
+ }
252
+ case 'type_schema': {
253
+ ctx.requireHelper?.('pSchema');
254
+ const propEntries = typeExpr.properties.map(prop => {
255
+ const propParser = emitTypeExprParser(prop.typeExpr, ctx);
256
+ return `(${JSON.stringify(prop.key)}, ${propParser}, ${prop.optional ? 'True' : 'False'})`;
257
+ });
258
+ let extrasMode;
259
+ let extrasParser = 'None';
260
+ if (typeExpr.extras === undefined || typeExpr.extras === 'closed') {
261
+ extrasMode = '"closed"';
262
+ }
263
+ else if (typeExpr.extras === 'ignored') {
264
+ extrasMode = '"ignored"';
265
+ }
266
+ else {
267
+ extrasMode = '"typed"';
268
+ extrasParser = emitTypeExprParser(typeExpr.extras, ctx);
269
+ }
270
+ return `pSchema([${propEntries.join(', ')}], ${extrasMode}, ${extrasParser})`;
271
+ }
272
+ case 'subtype_constraint': {
273
+ ctx.requireHelper?.('pSubtype');
274
+ const baseParser = emitTypeExprParser(typeExpr.baseType, ctx);
275
+ const varName = typeExpr.variable;
276
+ const checks = typeExpr.constraints.map(c => {
277
+ const conditionCode = ctx.emit(c.condition);
278
+ const errorMsg = c.label
279
+ ? (c.label.includes(' ') ? c.label : `constraint '${c.label}' failed`)
280
+ : 'constraint failed';
281
+ return `(${JSON.stringify(errorMsg)}, lambda ${varName}: ${conditionCode})`;
282
+ });
283
+ return `pSubtype(${baseParser}, [${checks.join(', ')}])`;
284
+ }
285
+ case 'array_type': {
286
+ ctx.requireHelper?.('pArray');
287
+ const elemParser = emitTypeExprParser(typeExpr.elementType, ctx);
288
+ return `pArray(${elemParser})`;
289
+ }
290
+ case 'union_type': {
291
+ ctx.requireHelper?.('pUnion');
292
+ const parsers = typeExpr.types.map(t => emitTypeExprParser(t, ctx));
293
+ return `pUnion([${parsers.join(', ')}])`;
294
+ }
295
+ }
296
+ }
297
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/compilers/python.ts"],"names":[],"mappings":"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"}
package/dist/src/eloc.js CHANGED
@@ -6,12 +6,15 @@ const parser_1 = require("./parser");
6
6
  const ruby_1 = require("./compilers/ruby");
7
7
  const javascript_1 = require("./compilers/javascript");
8
8
  const sql_1 = require("./compilers/sql");
9
+ const python_1 = require("./compilers/python");
9
10
  const preludes_1 = require("./preludes");
10
11
  // eslint-disable-next-line @typescript-eslint/no-var-requires
11
12
  const pkg = require('../../package.json');
12
13
  // Map CLI target names to prelude target names
13
14
  function toPreludeTarget(target) {
14
- return target === 'js' ? 'javascript' : target;
15
+ if (target === 'js')
16
+ return 'javascript';
17
+ return target;
15
18
  }
16
19
  function parseArgs(args) {
17
20
  const options = {
@@ -31,8 +34,8 @@ function parseArgs(args) {
31
34
  case '-t':
32
35
  case '--target':
33
36
  const target = args[++i];
34
- if (target !== 'ruby' && target !== 'js' && target !== 'sql') {
35
- console.error(`Invalid target: ${target}. Must be one of: ruby, js, sql`);
37
+ if (target !== 'ruby' && target !== 'js' && target !== 'sql' && target !== 'python') {
38
+ console.error(`Invalid target: ${target}. Must be one of: ruby, js, sql, python`);
36
39
  process.exit(1);
37
40
  }
38
41
  options.target = target;
@@ -88,7 +91,7 @@ Usage:
88
91
 
89
92
  Options:
90
93
  -e, --expression <expr> Expression to compile (like ruby -e)
91
- -t, --target <lang> Target language: ruby, js (default), sql
94
+ -t, --target <lang> Target language: ruby, js (default), sql, python
92
95
  -x, --execute Output self-executing code (calls function with null/nil)
93
96
  -p, --prelude Include necessary library imports/requires
94
97
  --prelude-only Output only the prelude (no expression needed)
@@ -148,6 +151,11 @@ function compile(source, target, options = {}) {
148
151
  code = result.code;
149
152
  break;
150
153
  }
154
+ case 'python': {
155
+ const result = (0, python_1.compileToPythonWithMeta)(ast, { execute, stripGuards });
156
+ code = result.code;
157
+ break;
158
+ }
151
159
  }
152
160
  if (includePrelude) {
153
161
  const preludeContent = (0, preludes_1.getPrelude)(toPreludeTarget(target));
@@ -1 +1 @@
1
- {"version":3,"file":"eloc.js","sourceRoot":"","sources":["../../src/eloc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eloc.js","sourceRoot":"","sources":["../../src/eloc.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,8 @@ export { compileToJavaScript, compileToJavaScriptWithMeta } from './compilers/ja
11
11
  export type { JavaScriptCompileOptions, JavaScriptCompileResult } from './compilers/javascript';
12
12
  export { compileToSQL } from './compilers/sql';
13
13
  export type { SQLCompileOptions } from './compilers/sql';
14
+ export { compileToPython } from './compilers/python';
15
+ export type { PythonCompileOptions } from './compilers/python';
14
16
  export { JS_HELPERS } from './runtime';
15
17
  export { getPrelude } from './preludes';
16
18
  export type { Target as PreludeTarget } from './preludes';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1F,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACxC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACV,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1F,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACxC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACV,MAAM,WAAW,CAAC"}
package/dist/src/index.js CHANGED
@@ -17,7 +17,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
17
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.getFormat = exports.defaultFormats = exports.eloAdapter = exports.csvAdapter = exports.jsonAdapter = exports.toCSV = exports.parseCSV = exports.toEloCode = exports.getPrelude = exports.JS_HELPERS = exports.compileToSQL = exports.compileToJavaScriptWithMeta = exports.compileToJavaScript = exports.compileToRuby = exports.compile = void 0;
20
+ exports.getFormat = exports.defaultFormats = exports.eloAdapter = exports.csvAdapter = exports.jsonAdapter = exports.toCSV = exports.parseCSV = exports.toEloCode = exports.getPrelude = exports.JS_HELPERS = exports.compileToPython = exports.compileToSQL = exports.compileToJavaScriptWithMeta = exports.compileToJavaScript = exports.compileToRuby = exports.compile = void 0;
21
21
  __exportStar(require("./ast"), exports);
22
22
  __exportStar(require("./parser"), exports);
23
23
  var compile_1 = require("./compile");
@@ -29,6 +29,8 @@ Object.defineProperty(exports, "compileToJavaScript", { enumerable: true, get: f
29
29
  Object.defineProperty(exports, "compileToJavaScriptWithMeta", { enumerable: true, get: function () { return javascript_1.compileToJavaScriptWithMeta; } });
30
30
  var sql_1 = require("./compilers/sql");
31
31
  Object.defineProperty(exports, "compileToSQL", { enumerable: true, get: function () { return sql_1.compileToSQL; } });
32
+ var python_1 = require("./compilers/python");
33
+ Object.defineProperty(exports, "compileToPython", { enumerable: true, get: function () { return python_1.compileToPython; } });
32
34
  var runtime_1 = require("./runtime");
33
35
  Object.defineProperty(exports, "JS_HELPERS", { enumerable: true, get: function () { return runtime_1.JS_HELPERS; } });
34
36
  var preludes_1 = require("./preludes");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,wCAAsB;AACtB,2CAAyB;AACzB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAEhB,yCAAiD;AAAxC,qGAAA,aAAa,OAAA;AAEtB,qDAA0F;AAAjF,iHAAA,mBAAmB,OAAA;AAAE,yHAAA,2BAA2B,OAAA;AAEzD,uCAA+C;AAAtC,mGAAA,YAAY,OAAA;AAErB,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AACnB,uCAAwC;AAA/B,sGAAA,UAAU,OAAA;AAEnB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,6BAAwC;AAA/B,+FAAA,QAAQ,OAAA;AAAE,4FAAA,KAAK,OAAA;AAExB,qCAMmB;AALjB,sGAAA,WAAW,OAAA;AACX,qGAAA,UAAU,OAAA;AACV,qGAAA,UAAU,OAAA;AACV,yGAAA,cAAc,OAAA;AACd,oGAAA,SAAS,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,wCAAsB;AACtB,2CAAyB;AACzB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAEhB,yCAAiD;AAAxC,qGAAA,aAAa,OAAA;AAEtB,qDAA0F;AAAjF,iHAAA,mBAAmB,OAAA;AAAE,yHAAA,2BAA2B,OAAA;AAEzD,uCAA+C;AAAtC,mGAAA,YAAY,OAAA;AAErB,6CAAqD;AAA5C,yGAAA,eAAe,OAAA;AAExB,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AACnB,uCAAwC;AAA/B,sGAAA,UAAU,OAAA;AAEnB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,6BAAwC;AAA/B,+FAAA,QAAQ,OAAA;AAAE,4FAAA,KAAK,OAAA;AAExB,qCAMmB;AALjB,sGAAA,WAAW,OAAA;AACX,qGAAA,UAAU,OAAA;AACV,qGAAA,UAAU,OAAA;AACV,yGAAA,cAAc,OAAA;AACd,oGAAA,SAAS,OAAA"}
@@ -859,8 +859,8 @@ class Parser {
859
859
  const firstName = this.currentToken.value;
860
860
  this.eat('IDENTIFIER');
861
861
  this.eat('ASSIGN');
862
- // Binding values parsed at logical_or level (prevents unparenthesized nested let in bindings)
863
- const firstValue = this.logical_or();
862
+ // Binding values parsed at pipe level (pipe won't consume 'in'/'guard'/'check' keywords)
863
+ const firstValue = this.pipe();
864
864
  bindings.push({ name: firstName, value: firstValue });
865
865
  // Parse additional bindings
866
866
  while (this.currentToken.type === 'COMMA') {
@@ -872,7 +872,7 @@ class Parser {
872
872
  const name = this.currentToken.value;
873
873
  this.eat('IDENTIFIER');
874
874
  this.eat('ASSIGN');
875
- const value = this.logical_or();
875
+ const value = this.pipe();
876
876
  bindings.push({ name, value });
877
877
  }
878
878
  // Check for let...guard or let...check sugar: let x = ... guard/check condition in body
@@ -937,7 +937,7 @@ class Parser {
937
937
  const firstName = this.currentToken.value;
938
938
  this.eat('IDENTIFIER');
939
939
  this.eat('ASSIGN');
940
- const firstValue = this.logical_or();
940
+ const firstValue = this.pipe();
941
941
  bindings.push({ name: firstName, value: firstValue });
942
942
  // Parse additional bindings
943
943
  while (this.currentToken.type === 'COMMA') {
@@ -948,7 +948,7 @@ class Parser {
948
948
  const name = this.currentToken.value;
949
949
  this.eat('IDENTIFIER');
950
950
  this.eat('ASSIGN');
951
- const value = this.logical_or();
951
+ const value = this.pipe();
952
952
  bindings.push({ name, value });
953
953
  }
954
954
  this.eat('IN');