@elwood-lang/core 0.1.0

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/ast.d.ts ADDED
@@ -0,0 +1,237 @@
1
+ import type { SourceSpan } from './token.js';
2
+ export type ElwoodExpression = PipelineExpression | PathExpression | IdentifierExpression | LambdaExpression | ObjectExpression | ArrayExpression | LiteralExpression | InterpolatedStringExpression | BinaryExpression | UnaryExpression | IfExpression | MatchExpression | MemoExpression | MethodCallExpression | FunctionCallExpression | MemberAccessExpression | IndexExpression;
3
+ export interface ScriptNode {
4
+ type: 'Script';
5
+ bindings: LetBindingNode[];
6
+ returnExpression: ElwoodExpression | null;
7
+ span: SourceSpan;
8
+ }
9
+ export interface LetBindingNode {
10
+ type: 'LetBinding';
11
+ name: string;
12
+ value: ElwoodExpression;
13
+ span: SourceSpan;
14
+ }
15
+ export interface PipelineExpression {
16
+ type: 'Pipeline';
17
+ source: ElwoodExpression;
18
+ operations: PipeOperation[];
19
+ span: SourceSpan;
20
+ }
21
+ export interface PathExpression {
22
+ type: 'Path';
23
+ segments: PathSegment[];
24
+ isRooted: boolean;
25
+ span: SourceSpan;
26
+ }
27
+ export interface IdentifierExpression {
28
+ type: 'Identifier';
29
+ name: string;
30
+ span: SourceSpan;
31
+ }
32
+ export interface LambdaExpression {
33
+ type: 'Lambda';
34
+ parameters: string[];
35
+ body: ElwoodExpression;
36
+ span: SourceSpan;
37
+ }
38
+ export interface ObjectExpression {
39
+ type: 'Object';
40
+ properties: ObjectProperty[];
41
+ span: SourceSpan;
42
+ }
43
+ export interface ObjectProperty {
44
+ key: string;
45
+ value: ElwoodExpression;
46
+ span: SourceSpan;
47
+ isSpread?: boolean;
48
+ computedKey?: ElwoodExpression;
49
+ }
50
+ export interface ArrayExpression {
51
+ type: 'Array';
52
+ items: ElwoodExpression[];
53
+ span: SourceSpan;
54
+ }
55
+ export interface LiteralExpression {
56
+ type: 'Literal';
57
+ value: string | number | boolean | null;
58
+ span: SourceSpan;
59
+ }
60
+ export interface InterpolatedStringExpression {
61
+ type: 'InterpolatedString';
62
+ parts: InterpolationPart[];
63
+ span: SourceSpan;
64
+ }
65
+ export type InterpolationPart = {
66
+ type: 'Text';
67
+ text: string;
68
+ span: SourceSpan;
69
+ } | {
70
+ type: 'Expression';
71
+ expression: ElwoodExpression;
72
+ span: SourceSpan;
73
+ };
74
+ export interface BinaryExpression {
75
+ type: 'Binary';
76
+ left: ElwoodExpression;
77
+ operator: BinaryOperator;
78
+ right: ElwoodExpression;
79
+ span: SourceSpan;
80
+ }
81
+ export interface UnaryExpression {
82
+ type: 'Unary';
83
+ operator: UnaryOperator;
84
+ operand: ElwoodExpression;
85
+ span: SourceSpan;
86
+ }
87
+ export interface IfExpression {
88
+ type: 'If';
89
+ condition: ElwoodExpression;
90
+ thenBranch: ElwoodExpression;
91
+ elseBranch: ElwoodExpression;
92
+ span: SourceSpan;
93
+ }
94
+ export interface MatchExpression {
95
+ type: 'Match';
96
+ input: ElwoodExpression;
97
+ arms: MatchArm[];
98
+ span: SourceSpan;
99
+ }
100
+ export interface MatchArm {
101
+ pattern: ElwoodExpression | null;
102
+ result: ElwoodExpression;
103
+ span: SourceSpan;
104
+ }
105
+ export interface MemoExpression {
106
+ type: 'Memo';
107
+ lambda: LambdaExpression;
108
+ span: SourceSpan;
109
+ }
110
+ export interface MethodCallExpression {
111
+ type: 'MethodCall';
112
+ target: ElwoodExpression;
113
+ methodName: string;
114
+ arguments: ElwoodExpression[];
115
+ span: SourceSpan;
116
+ }
117
+ export interface FunctionCallExpression {
118
+ type: 'FunctionCall';
119
+ functionName: string;
120
+ arguments: ElwoodExpression[];
121
+ span: SourceSpan;
122
+ }
123
+ export interface MemberAccessExpression {
124
+ type: 'MemberAccess';
125
+ target: ElwoodExpression;
126
+ memberName: string;
127
+ span: SourceSpan;
128
+ }
129
+ export interface IndexExpression {
130
+ type: 'Index';
131
+ target: ElwoodExpression;
132
+ index: ElwoodExpression | null;
133
+ span: SourceSpan;
134
+ }
135
+ export type PipeOperation = WhereOperation | SelectOperation | SelectManyOperation | OrderByOperation | GroupByOperation | DistinctOperation | AggregateOperation | SliceOperation | BatchOperation | JoinOperation | ConcatOperation | ReduceOperation | QuantifierOperation | MatchOperation;
136
+ export interface WhereOperation {
137
+ type: 'Where';
138
+ predicate: ElwoodExpression;
139
+ span: SourceSpan;
140
+ }
141
+ export interface SelectOperation {
142
+ type: 'Select';
143
+ projection: ElwoodExpression;
144
+ span: SourceSpan;
145
+ }
146
+ export interface SelectManyOperation {
147
+ type: 'SelectMany';
148
+ projection: ElwoodExpression;
149
+ span: SourceSpan;
150
+ }
151
+ export interface OrderByOperation {
152
+ type: 'OrderBy';
153
+ keys: {
154
+ key: ElwoodExpression;
155
+ ascending: boolean;
156
+ }[];
157
+ span: SourceSpan;
158
+ }
159
+ export interface GroupByOperation {
160
+ type: 'GroupBy';
161
+ keySelector: ElwoodExpression;
162
+ span: SourceSpan;
163
+ }
164
+ export interface DistinctOperation {
165
+ type: 'Distinct';
166
+ span: SourceSpan;
167
+ }
168
+ export interface AggregateOperation {
169
+ type: 'Aggregate';
170
+ name: string;
171
+ predicate?: ElwoodExpression;
172
+ span: SourceSpan;
173
+ }
174
+ export interface SliceOperation {
175
+ type: 'Slice';
176
+ kind: 'take' | 'skip';
177
+ count: ElwoodExpression;
178
+ span: SourceSpan;
179
+ }
180
+ export interface BatchOperation {
181
+ type: 'Batch';
182
+ size: ElwoodExpression;
183
+ span: SourceSpan;
184
+ }
185
+ export interface JoinOperation {
186
+ type: 'Join';
187
+ source: ElwoodExpression;
188
+ leftKey: ElwoodExpression;
189
+ rightKey: ElwoodExpression;
190
+ intoAlias?: string;
191
+ mode: JoinMode;
192
+ span: SourceSpan;
193
+ }
194
+ export interface ConcatOperation {
195
+ type: 'Concat';
196
+ separator?: ElwoodExpression;
197
+ span: SourceSpan;
198
+ }
199
+ export interface ReduceOperation {
200
+ type: 'Reduce';
201
+ accumulator: ElwoodExpression;
202
+ initialValue?: ElwoodExpression;
203
+ span: SourceSpan;
204
+ }
205
+ export interface QuantifierOperation {
206
+ type: 'Quantifier';
207
+ kind: 'any' | 'all';
208
+ predicate: ElwoodExpression;
209
+ span: SourceSpan;
210
+ }
211
+ export interface MatchOperation {
212
+ type: 'MatchOp';
213
+ arms: MatchArm[];
214
+ span: SourceSpan;
215
+ }
216
+ export type JoinMode = 'inner' | 'left' | 'right' | 'full';
217
+ export type PathSegment = {
218
+ type: 'Property';
219
+ name: string;
220
+ span: SourceSpan;
221
+ } | {
222
+ type: 'Index';
223
+ index: number | null;
224
+ span: SourceSpan;
225
+ } | {
226
+ type: 'Slice';
227
+ start: number | null;
228
+ end: number | null;
229
+ span: SourceSpan;
230
+ } | {
231
+ type: 'RecursiveDescent';
232
+ name: string;
233
+ span: SourceSpan;
234
+ };
235
+ export type BinaryOperator = 'Add' | 'Subtract' | 'Multiply' | 'Divide' | 'Equal' | 'NotEqual' | 'LessThan' | 'LessThanOrEqual' | 'GreaterThan' | 'GreaterThanOrEqual' | 'And' | 'Or';
236
+ export type UnaryOperator = 'Negate' | 'Not';
237
+ //# sourceMappingURL=ast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"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"}
package/dist/ast.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { ElwoodExpression, ScriptNode } from './ast.js';
2
+ export declare function evaluateExpression(expr: ElwoodExpression, input: unknown): unknown;
3
+ export declare function evaluateScript(script: ScriptNode, input: unknown): unknown;
4
+ //# sourceMappingURL=evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAAE,UAAU,EAE7B,MAAM,UAAU,CAAC;AAgHlB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAIlF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAQ1E"}