@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.
- package/README.md +8 -3
- package/dist/src/bindings/python.d.ts +20 -0
- package/dist/src/bindings/python.d.ts.map +1 -0
- package/dist/src/bindings/python.js +403 -0
- package/dist/src/bindings/python.js.map +1 -0
- package/dist/src/compilers/javascript.js +1 -1
- package/dist/src/compilers/javascript.js.map +1 -1
- package/dist/src/compilers/python.d.ts +28 -0
- package/dist/src/compilers/python.d.ts.map +1 -0
- package/dist/src/compilers/python.js +297 -0
- package/dist/src/compilers/python.js.map +1 -0
- package/dist/src/eloc.js +12 -4
- package/dist/src/eloc.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser.js +5 -5
- package/dist/src/parser.js.map +1 -1
- package/dist/src/preludes/index.d.ts +1 -1
- package/dist/src/preludes/index.d.ts.map +1 -1
- package/dist/src/preludes/index.js +13 -1
- package/dist/src/preludes/index.js.map +1 -1
- package/dist/src/runtime.d.ts +7 -0
- package/dist/src/runtime.d.ts.map +1 -1
- package/dist/src/runtime.js +403 -1
- package/dist/src/runtime.js.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
-
|
|
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));
|
package/dist/src/eloc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eloc.js","sourceRoot":"","sources":["../../src/eloc.ts"],"names":[],"mappings":";;;AAEA,2BAAiD;AACjD,qCAAiC;AACjC,2CAAyD;AACzD,uDAAqE;AACrE,yCAAuD;AACvD,yCAAiE;AAEjE,8DAA8D;AAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAI1C,+CAA+C;AAC/C,SAAS,eAAe,CAAC,MAAc;IACrC,
|
|
1
|
+
{"version":3,"file":"eloc.js","sourceRoot":"","sources":["../../src/eloc.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -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';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -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");
|
package/dist/src/index.js.map
CHANGED
|
@@ -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"}
|
package/dist/src/parser.js
CHANGED
|
@@ -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
|
|
863
|
-
const firstValue = this.
|
|
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.
|
|
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.
|
|
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.
|
|
951
|
+
const value = this.pipe();
|
|
952
952
|
bindings.push({ name, value });
|
|
953
953
|
}
|
|
954
954
|
this.eat('IN');
|