@rcrsr/rill 0.8.5 → 0.9.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-nodes.d.ts +189 -49
- package/dist/ast-nodes.d.ts.map +1 -1
- package/dist/ast-unions.d.ts +1 -1
- package/dist/ast-unions.d.ts.map +1 -1
- package/dist/constants.d.ts +14 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +29 -0
- package/dist/constants.js.map +1 -0
- package/dist/error-classes.d.ts +3 -1
- package/dist/error-classes.d.ts.map +1 -1
- package/dist/error-classes.js +11 -5
- package/dist/error-classes.js.map +1 -1
- package/dist/error-registry.d.ts.map +1 -1
- package/dist/error-registry.js +293 -9
- package/dist/error-registry.js.map +1 -1
- package/dist/ext/crypto/index.d.ts +2 -1
- package/dist/ext/crypto/index.d.ts.map +1 -1
- package/dist/ext/crypto/index.js +7 -0
- package/dist/ext/crypto/index.js.map +1 -1
- package/dist/ext/exec/index.d.ts +2 -1
- package/dist/ext/exec/index.d.ts.map +1 -1
- package/dist/ext/exec/index.js +6 -0
- package/dist/ext/exec/index.js.map +1 -1
- package/dist/ext/fetch/index.d.ts +2 -1
- package/dist/ext/fetch/index.d.ts.map +1 -1
- package/dist/ext/fetch/index.js +6 -0
- package/dist/ext/fetch/index.js.map +1 -1
- package/dist/ext/fs/index.d.ts +2 -1
- package/dist/ext/fs/index.d.ts.map +1 -1
- package/dist/ext/fs/index.js +3 -0
- package/dist/ext/fs/index.js.map +1 -1
- package/dist/ext/kv/index.d.ts +48 -12
- package/dist/ext/kv/index.d.ts.map +1 -1
- package/dist/ext/kv/index.js +225 -63
- package/dist/ext/kv/index.js.map +1 -1
- package/dist/ext/kv/store.d.ts +4 -0
- package/dist/ext/kv/store.d.ts.map +1 -1
- package/dist/ext/kv/store.js +14 -0
- package/dist/ext/kv/store.js.map +1 -1
- package/dist/generated/introspection-data.d.ts +1 -1
- package/dist/generated/introspection-data.d.ts.map +1 -1
- package/dist/generated/introspection-data.js +194 -185
- package/dist/generated/introspection-data.js.map +1 -1
- package/dist/generated/version-data.d.ts +1 -1
- package/dist/generated/version-data.js +3 -3
- package/dist/highlight-map.d.ts.map +1 -1
- package/dist/highlight-map.js +8 -2
- package/dist/highlight-map.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/lexer/operators.d.ts.map +1 -1
- package/dist/lexer/operators.js +0 -2
- package/dist/lexer/operators.js.map +1 -1
- package/dist/lexer/readers.d.ts +18 -1
- package/dist/lexer/readers.d.ts.map +1 -1
- package/dist/lexer/readers.js +55 -0
- package/dist/lexer/readers.js.map +1 -1
- package/dist/parser/helpers.d.ts +8 -13
- package/dist/parser/helpers.d.ts.map +1 -1
- package/dist/parser/helpers.js +42 -35
- package/dist/parser/helpers.js.map +1 -1
- package/dist/parser/index.d.ts +1 -0
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +1 -0
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/parser-collect.d.ts.map +1 -1
- package/dist/parser/parser-collect.js +34 -5
- package/dist/parser/parser-collect.js.map +1 -1
- package/dist/parser/parser-control.d.ts.map +1 -1
- package/dist/parser/parser-control.js +9 -0
- package/dist/parser/parser-control.js.map +1 -1
- package/dist/parser/parser-expr.d.ts +3 -1
- package/dist/parser/parser-expr.d.ts.map +1 -1
- package/dist/parser/parser-expr.js +377 -100
- package/dist/parser/parser-expr.js.map +1 -1
- package/dist/parser/parser-extract.d.ts +3 -5
- package/dist/parser/parser-extract.d.ts.map +1 -1
- package/dist/parser/parser-extract.js +37 -69
- package/dist/parser/parser-extract.js.map +1 -1
- package/dist/parser/parser-functions.d.ts +2 -2
- package/dist/parser/parser-functions.d.ts.map +1 -1
- package/dist/parser/parser-functions.js +112 -36
- package/dist/parser/parser-functions.js.map +1 -1
- package/dist/parser/parser-literals.d.ts +4 -3
- package/dist/parser/parser-literals.d.ts.map +1 -1
- package/dist/parser/parser-literals.js +257 -42
- package/dist/parser/parser-literals.js.map +1 -1
- package/dist/parser/parser-script.d.ts.map +1 -1
- package/dist/parser/parser-script.js +25 -12
- package/dist/parser/parser-script.js.map +1 -1
- package/dist/parser/parser-shape.d.ts +13 -0
- package/dist/parser/parser-shape.d.ts.map +1 -0
- package/dist/parser/parser-shape.js +72 -0
- package/dist/parser/parser-shape.js.map +1 -0
- package/dist/parser/parser-types.d.ts +21 -0
- package/dist/parser/parser-types.d.ts.map +1 -0
- package/dist/parser/parser-types.js +30 -0
- package/dist/parser/parser-types.js.map +1 -0
- package/dist/parser/parser-variables.d.ts.map +1 -1
- package/dist/parser/parser-variables.js +10 -1
- package/dist/parser/parser-variables.js.map +1 -1
- package/dist/runtime/core/callable.d.ts +25 -22
- package/dist/runtime/core/callable.d.ts.map +1 -1
- package/dist/runtime/core/callable.js +43 -36
- package/dist/runtime/core/callable.js.map +1 -1
- package/dist/runtime/core/context.d.ts.map +1 -1
- package/dist/runtime/core/context.js +8 -8
- package/dist/runtime/core/context.js.map +1 -1
- package/dist/runtime/core/equals.d.ts.map +1 -1
- package/dist/runtime/core/equals.js +142 -30
- package/dist/runtime/core/equals.js.map +1 -1
- package/dist/runtime/core/eval/base.d.ts +2 -2
- package/dist/runtime/core/eval/base.d.ts.map +1 -1
- package/dist/runtime/core/eval/evaluator.d.ts.map +1 -1
- package/dist/runtime/core/eval/evaluator.js +3 -1
- package/dist/runtime/core/eval/evaluator.js.map +1 -1
- package/dist/runtime/core/eval/index.d.ts +16 -1
- package/dist/runtime/core/eval/index.d.ts.map +1 -1
- package/dist/runtime/core/eval/index.js +22 -2
- package/dist/runtime/core/eval/index.js.map +1 -1
- package/dist/runtime/core/eval/mixins/annotations.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/annotations.js +14 -8
- package/dist/runtime/core/eval/mixins/annotations.js.map +1 -1
- package/dist/runtime/core/eval/mixins/closures.d.ts +0 -2
- package/dist/runtime/core/eval/mixins/closures.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/closures.js +286 -105
- package/dist/runtime/core/eval/mixins/closures.js.map +1 -1
- package/dist/runtime/core/eval/mixins/collections.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/collections.js +65 -25
- package/dist/runtime/core/eval/mixins/collections.js.map +1 -1
- package/dist/runtime/core/eval/mixins/control-flow.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/control-flow.js +21 -17
- package/dist/runtime/core/eval/mixins/control-flow.js.map +1 -1
- package/dist/runtime/core/eval/mixins/conversion.d.ts +30 -0
- package/dist/runtime/core/eval/mixins/conversion.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/conversion.js +203 -0
- package/dist/runtime/core/eval/mixins/conversion.js.map +1 -0
- package/dist/runtime/core/eval/mixins/core.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/core.js +101 -32
- package/dist/runtime/core/eval/mixins/core.js.map +1 -1
- package/dist/runtime/core/eval/mixins/extraction.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/extraction.js +136 -30
- package/dist/runtime/core/eval/mixins/extraction.js.map +1 -1
- package/dist/runtime/core/eval/mixins/list-dispatch.d.ts +17 -0
- package/dist/runtime/core/eval/mixins/list-dispatch.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/list-dispatch.js +97 -0
- package/dist/runtime/core/eval/mixins/list-dispatch.js.map +1 -0
- package/dist/runtime/core/eval/mixins/literals.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/literals.js +64 -82
- package/dist/runtime/core/eval/mixins/literals.js.map +1 -1
- package/dist/runtime/core/eval/mixins/types.d.ts +4 -0
- package/dist/runtime/core/eval/mixins/types.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/types.js +202 -3
- package/dist/runtime/core/eval/mixins/types.js.map +1 -1
- package/dist/runtime/core/eval/mixins/variables.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/variables.js +42 -7
- package/dist/runtime/core/eval/mixins/variables.js.map +1 -1
- package/dist/runtime/core/execute.d.ts.map +1 -1
- package/dist/runtime/core/execute.js +2 -15
- package/dist/runtime/core/execute.js.map +1 -1
- package/dist/runtime/core/field-descriptor.d.ts +29 -0
- package/dist/runtime/core/field-descriptor.d.ts.map +1 -0
- package/dist/runtime/core/field-descriptor.js +27 -0
- package/dist/runtime/core/field-descriptor.js.map +1 -0
- package/dist/runtime/core/types.d.ts +15 -6
- package/dist/runtime/core/types.d.ts.map +1 -1
- package/dist/runtime/core/types.js.map +1 -1
- package/dist/runtime/core/values.d.ts +107 -9
- package/dist/runtime/core/values.d.ts.map +1 -1
- package/dist/runtime/core/values.js +453 -43
- package/dist/runtime/core/values.js.map +1 -1
- package/dist/runtime/ext/builtins.d.ts.map +1 -1
- package/dist/runtime/ext/builtins.js +47 -107
- package/dist/runtime/ext/builtins.js.map +1 -1
- package/dist/runtime/ext/extensions.d.ts +134 -1
- package/dist/runtime/ext/extensions.d.ts.map +1 -1
- package/dist/runtime/ext/extensions.js.map +1 -1
- package/dist/runtime/index.d.ts +7 -4
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +7 -2
- package/dist/runtime/index.js.map +1 -1
- package/dist/token-types.d.ts +7 -2
- package/dist/token-types.d.ts.map +1 -1
- package/dist/token-types.js +9 -2
- package/dist/token-types.js.map +1 -1
- package/dist/value-types.d.ts +19 -1
- package/dist/value-types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -6,6 +6,7 @@ import { Parser } from './parser.js';
|
|
|
6
6
|
import { ParseError, TOKEN_TYPES } from '../types.js';
|
|
7
7
|
import { LexerError } from '../lexer/index.js';
|
|
8
8
|
import { check, advance, expect, current, isAtEnd, skipNewlines, makeSpan, } from './state.js';
|
|
9
|
+
const RESERVED_ANNOTATION_KEYS = ['type', 'input', 'output'];
|
|
9
10
|
// ============================================================
|
|
10
11
|
// SCRIPT PARSING
|
|
11
12
|
// ============================================================
|
|
@@ -166,20 +167,19 @@ Parser.prototype.parseAnnotatedStatement = function () {
|
|
|
166
167
|
expect(this.state, TOKEN_TYPES.LPAREN, 'Expected (');
|
|
167
168
|
const annotations = this.parseAnnotationArgs();
|
|
168
169
|
expect(this.state, TOKEN_TYPES.RPAREN, 'Expected )', 'RILL-P005');
|
|
170
|
+
skipNewlines(this.state);
|
|
169
171
|
// Parse the inner statement (which could also be annotated)
|
|
170
172
|
const statement = this.parseStatement();
|
|
171
|
-
// If inner is annotated,
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
178
|
-
: statement;
|
|
173
|
+
// If inner is already annotated, return it unchanged.
|
|
174
|
+
// BC-2: The immediately-preceding annotation attaches to the closure;
|
|
175
|
+
// the outer annotation is discarded.
|
|
176
|
+
if (statement.type === 'AnnotatedStatement') {
|
|
177
|
+
return statement;
|
|
178
|
+
}
|
|
179
179
|
return {
|
|
180
180
|
type: 'AnnotatedStatement',
|
|
181
181
|
annotations,
|
|
182
|
-
statement
|
|
182
|
+
statement,
|
|
183
183
|
span: makeSpan(start, current(this.state).span.end),
|
|
184
184
|
};
|
|
185
185
|
};
|
|
@@ -199,9 +199,9 @@ Parser.prototype.parseAnnotationArgs = function () {
|
|
|
199
199
|
};
|
|
200
200
|
Parser.prototype.parseAnnotationArg = function () {
|
|
201
201
|
const start = current(this.state).span.start;
|
|
202
|
-
// Spread argument:
|
|
203
|
-
if (check(this.state, TOKEN_TYPES.
|
|
204
|
-
advance(this.state); // consume
|
|
202
|
+
// Spread argument: ...expr
|
|
203
|
+
if (check(this.state, TOKEN_TYPES.ELLIPSIS)) {
|
|
204
|
+
advance(this.state); // consume ...
|
|
205
205
|
const expression = this.parseExpression();
|
|
206
206
|
return {
|
|
207
207
|
type: 'SpreadArg',
|
|
@@ -209,8 +209,21 @@ Parser.prototype.parseAnnotationArg = function () {
|
|
|
209
209
|
span: makeSpan(start, current(this.state).span.end),
|
|
210
210
|
};
|
|
211
211
|
}
|
|
212
|
+
// Description shorthand: bare string expands to description: <string>
|
|
213
|
+
if (check(this.state, TOKEN_TYPES.STRING)) {
|
|
214
|
+
const value = this.parseExpression();
|
|
215
|
+
return {
|
|
216
|
+
type: 'NamedArg',
|
|
217
|
+
name: 'description',
|
|
218
|
+
value,
|
|
219
|
+
span: makeSpan(start, current(this.state).span.end),
|
|
220
|
+
};
|
|
221
|
+
}
|
|
212
222
|
// Named argument: key: value
|
|
213
223
|
const nameToken = expect(this.state, TOKEN_TYPES.IDENTIFIER, 'Expected annotation name');
|
|
224
|
+
if (RESERVED_ANNOTATION_KEYS.includes(nameToken.value)) {
|
|
225
|
+
throw new ParseError('RILL-P001', `Annotation key "${nameToken.value}" is reserved`, nameToken.span.start);
|
|
226
|
+
}
|
|
214
227
|
expect(this.state, TOKEN_TYPES.COLON, 'Expected :');
|
|
215
228
|
const value = this.parseExpression();
|
|
216
229
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-script.js","sourceRoot":"","sources":["../../src/parser/parser-script.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAWrC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EACL,KAAK,EACL,OAAO,EACP,MAAM,EACN,OAAO,EACP,OAAO,EACP,YAAY,EACZ,QAAQ,GACT,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"parser-script.js","sourceRoot":"","sources":["../../src/parser/parser-script.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser Extension: Type Constructor Parsing
|
|
3
|
+
* type-constructor = ("list" | "dict" | "tuple" | "ordered") "(" [type-arg-list] ")" ;
|
|
4
|
+
* type-arg-list = type-arg ("," type-arg)* [","] ;
|
|
5
|
+
* type-arg = identifier ":" expression | expression ;
|
|
6
|
+
*/
|
|
7
|
+
import type { TypeConstructorNode } from '../types.js';
|
|
8
|
+
declare module './parser.js' {
|
|
9
|
+
interface Parser {
|
|
10
|
+
parseTypeConstructor(constructorName: string): TypeConstructorNode;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=parser-shape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-shape.d.ts","sourceRoot":"","sources":["../../src/parser/parser-shape.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAEV,mBAAmB,EAEpB,MAAM,aAAa,CAAC;AAarB,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAU,MAAM;QACd,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,mBAAmB,CAAC;KACpE;CACF"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser Extension: Type Constructor Parsing
|
|
3
|
+
* type-constructor = ("list" | "dict" | "tuple" | "ordered") "(" [type-arg-list] ")" ;
|
|
4
|
+
* type-arg-list = type-arg ("," type-arg)* [","] ;
|
|
5
|
+
* type-arg = identifier ":" expression | expression ;
|
|
6
|
+
*/
|
|
7
|
+
import { Parser } from './parser.js';
|
|
8
|
+
import { ParseError, TOKEN_TYPES } from '../types.js';
|
|
9
|
+
import { check, advance, expect, current, skipNewlines, makeSpan, peek, } from './state.js';
|
|
10
|
+
// ============================================================
|
|
11
|
+
// TYPE CONSTRUCTOR PARSING
|
|
12
|
+
// ============================================================
|
|
13
|
+
/**
|
|
14
|
+
* Parse a type constructor: list(args), dict(k: T, ...), tuple(T...), ordered(k: T, ...).
|
|
15
|
+
* Called when current identifier is in ['list', 'dict', 'tuple', 'ordered'] and next token is LPAREN.
|
|
16
|
+
* Consumes: constructorName "(" [type-arg-list] ")"
|
|
17
|
+
* Produces TypeConstructorNode.
|
|
18
|
+
*/
|
|
19
|
+
Parser.prototype.parseTypeConstructor = function (constructorName) {
|
|
20
|
+
const validNames = ['list', 'dict', 'tuple', 'ordered'];
|
|
21
|
+
if (!validNames.includes(constructorName)) {
|
|
22
|
+
throw new ParseError('RILL-P001', `Expected type constructor name (list, dict, tuple, ordered), got: ${constructorName}`, current(this.state).span.start);
|
|
23
|
+
}
|
|
24
|
+
const start = current(this.state).span.start;
|
|
25
|
+
// Consume the constructor name identifier token
|
|
26
|
+
advance(this.state);
|
|
27
|
+
expect(this.state, TOKEN_TYPES.LPAREN, 'Expected (');
|
|
28
|
+
skipNewlines(this.state);
|
|
29
|
+
const args = [];
|
|
30
|
+
if (!check(this.state, TOKEN_TYPES.RPAREN)) {
|
|
31
|
+
args.push(parseTypeArg(this));
|
|
32
|
+
skipNewlines(this.state);
|
|
33
|
+
while (check(this.state, TOKEN_TYPES.COMMA)) {
|
|
34
|
+
advance(this.state);
|
|
35
|
+
skipNewlines(this.state);
|
|
36
|
+
if (check(this.state, TOKEN_TYPES.RPAREN))
|
|
37
|
+
break; // trailing comma
|
|
38
|
+
args.push(parseTypeArg(this));
|
|
39
|
+
skipNewlines(this.state);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const rparen = expect(this.state, TOKEN_TYPES.RPAREN, 'Expected )', 'RILL-P005');
|
|
43
|
+
return {
|
|
44
|
+
type: 'TypeConstructor',
|
|
45
|
+
constructorName: constructorName,
|
|
46
|
+
args,
|
|
47
|
+
span: makeSpan(start, rparen.span.end),
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
// ============================================================
|
|
51
|
+
// TYPE ARG PARSING (internal)
|
|
52
|
+
// ============================================================
|
|
53
|
+
/**
|
|
54
|
+
* Parse a single type argument: `identifier ":" expression` (named) or `expression` (positional).
|
|
55
|
+
* Lookahead: if current is IDENTIFIER and next is COLON, parse as named arg.
|
|
56
|
+
* Otherwise parse as positional.
|
|
57
|
+
*/
|
|
58
|
+
function parseTypeArg(parser) {
|
|
59
|
+
// Named arg: identifier ":" expression
|
|
60
|
+
if (check(parser.state, TOKEN_TYPES.IDENTIFIER) &&
|
|
61
|
+
peek(parser.state, 1).type === TOKEN_TYPES.COLON) {
|
|
62
|
+
const nameToken = advance(parser.state); // consume identifier
|
|
63
|
+
advance(parser.state); // consume ':'
|
|
64
|
+
skipNewlines(parser.state);
|
|
65
|
+
const value = parser.parseExpression();
|
|
66
|
+
return { kind: 'named', name: nameToken.value, value };
|
|
67
|
+
}
|
|
68
|
+
// Positional arg: expression
|
|
69
|
+
const value = parser.parseExpression();
|
|
70
|
+
return { kind: 'positional', value };
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=parser-shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-shape.js","sourceRoot":"","sources":["../../src/parser/parser-shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser Utility: Type Reference Parsing
|
|
3
|
+
* Parses a type-ref production: either a static type name or a dynamic $variable.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
import { type TypeRef } from '../types.js';
|
|
7
|
+
import { type ParserState } from './state.js';
|
|
8
|
+
/**
|
|
9
|
+
* Parse a type reference from the current position in the token stream.
|
|
10
|
+
*
|
|
11
|
+
* Grammar: `type-ref = type-name | "$" , identifier`
|
|
12
|
+
*
|
|
13
|
+
* - `$identifier` → `{ kind: 'dynamic', varName: identifier }`
|
|
14
|
+
* - `type-name` → `{ kind: 'static', typeName }`
|
|
15
|
+
*
|
|
16
|
+
* Throws ParseError if neither a `$identifier` nor a valid type name is found.
|
|
17
|
+
*
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
export declare function parseTypeRef(state: ParserState): TypeRef;
|
|
21
|
+
//# sourceMappingURL=parser-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-types.d.ts","sourceRoot":"","sources":["../../src/parser/parser-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,OAAO,EAAe,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,KAAK,WAAW,EAA0B,MAAM,YAAY,CAAC;AAGtE;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAaxD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser Utility: Type Reference Parsing
|
|
3
|
+
* Parses a type-ref production: either a static type name or a dynamic $variable.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
import { TOKEN_TYPES } from '../types.js';
|
|
7
|
+
import { check, advance, expect } from './state.js';
|
|
8
|
+
import { VALID_TYPE_NAMES, parseTypeName } from './helpers.js';
|
|
9
|
+
/**
|
|
10
|
+
* Parse a type reference from the current position in the token stream.
|
|
11
|
+
*
|
|
12
|
+
* Grammar: `type-ref = type-name | "$" , identifier`
|
|
13
|
+
*
|
|
14
|
+
* - `$identifier` → `{ kind: 'dynamic', varName: identifier }`
|
|
15
|
+
* - `type-name` → `{ kind: 'static', typeName }`
|
|
16
|
+
*
|
|
17
|
+
* Throws ParseError if neither a `$identifier` nor a valid type name is found.
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export function parseTypeRef(state) {
|
|
22
|
+
if (check(state, TOKEN_TYPES.DOLLAR)) {
|
|
23
|
+
advance(state); // consume $
|
|
24
|
+
const nameToken = expect(state, TOKEN_TYPES.IDENTIFIER, 'Expected variable name after $');
|
|
25
|
+
return { kind: 'dynamic', varName: nameToken.value };
|
|
26
|
+
}
|
|
27
|
+
const typeName = parseTypeName(state, VALID_TYPE_NAMES);
|
|
28
|
+
return { kind: 'static', typeName };
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=parser-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-types.js","sourceRoot":"","sources":["../../src/parser/parser-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAgB,WAAW,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAoB,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,KAAkB;IAC7C,IAAI,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;QAC5B,MAAM,SAAS,GAAG,MAAM,CACtB,KAAK,EACL,WAAW,CAAC,UAAU,EACtB,gCAAgC,CACjC,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACxD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-variables.d.ts","sourceRoot":"","sources":["../../src/parser/parser-variables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,QAAQ,EACR,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"parser-variables.d.ts","sourceRoot":"","sources":["../../src/parser/parser-variables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,QAAQ,EACR,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAC;AAiBrB,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAU,MAAM;QACd,aAAa,IAAI,YAAY,CAAC;QAC9B,sBAAsB,CACpB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,cAAc,GACpB,YAAY,CAAC;QAChB,gBAAgB,IAAI;YAClB,WAAW,EAAE,cAAc,EAAE,CAAC;YAC9B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;SACvC,CAAC;QACF,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAAC;QACxE,2BAA2B,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;QACrE,oBAAoB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC;QACxC,iBAAiB,IAAI,QAAQ,CAAC;KAC/B;CACF"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { Parser } from './parser.js';
|
|
6
6
|
import { TOKEN_TYPES, ParseError } from '../types.js';
|
|
7
|
-
import { check, advance, expect, makeSpan, current } from './state.js';
|
|
7
|
+
import { check, advance, expect, makeSpan, current, skipNewlinesIfFollowedBy, } from './state.js';
|
|
8
8
|
import { isMethodCallWithArgs, VALID_TYPE_NAMES, parseTypeName, } from './helpers.js';
|
|
9
9
|
// ============================================================
|
|
10
10
|
// VARIABLE PARSING
|
|
@@ -52,6 +52,9 @@ Parser.prototype.makeVariableWithAccess = function (name, isPipeVar, start) {
|
|
|
52
52
|
Parser.prototype.parseAccessChain = function () {
|
|
53
53
|
const accessChain = [];
|
|
54
54
|
let existenceCheck = null;
|
|
55
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.DOT);
|
|
56
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.DOT_QUESTION);
|
|
57
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.LBRACKET);
|
|
55
58
|
while (check(this.state, TOKEN_TYPES.DOT, TOKEN_TYPES.DOT_QUESTION, TOKEN_TYPES.LBRACKET)) {
|
|
56
59
|
if (check(this.state, TOKEN_TYPES.DOT) &&
|
|
57
60
|
isMethodCallWithArgs(this.state)) {
|
|
@@ -63,6 +66,9 @@ Parser.prototype.parseAccessChain = function () {
|
|
|
63
66
|
const closeBracket = expect(this.state, TOKEN_TYPES.RBRACKET, 'Expected ] after index expression', 'RILL-P005');
|
|
64
67
|
const span = makeSpan(openBracket.span.start, closeBracket.span.end);
|
|
65
68
|
accessChain.push({ accessKind: 'bracket', expression, span });
|
|
69
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.DOT);
|
|
70
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.DOT_QUESTION);
|
|
71
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.LBRACKET);
|
|
66
72
|
continue;
|
|
67
73
|
}
|
|
68
74
|
if (check(this.state, TOKEN_TYPES.DOT_QUESTION)) {
|
|
@@ -85,6 +91,9 @@ Parser.prototype.parseAccessChain = function () {
|
|
|
85
91
|
break;
|
|
86
92
|
}
|
|
87
93
|
accessChain.push(access);
|
|
94
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.DOT);
|
|
95
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.DOT_QUESTION);
|
|
96
|
+
skipNewlinesIfFollowedBy(this.state, TOKEN_TYPES.LBRACKET);
|
|
88
97
|
}
|
|
89
98
|
return { accessChain, existenceCheck };
|
|
90
99
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-variables.js","sourceRoot":"","sources":["../../src/parser/parser-variables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"parser-variables.js","sourceRoot":"","sources":["../../src/parser/parser-variables.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,12 +24,14 @@
|
|
|
24
24
|
* - Per spec algorithm: "Apply default values for missing arguments before validation"
|
|
25
25
|
* - Mutation occurs before host function receives args, maintaining immutability contract
|
|
26
26
|
*/
|
|
27
|
-
import type { BodyNode, SourceLocation } from '../../types.js';
|
|
28
|
-
|
|
27
|
+
import type { BodyNode, RillFunctionReturnType, RillTypeName, SourceLocation } from '../../types.js';
|
|
28
|
+
export type { RillFunctionReturnType } from '../../types.js';
|
|
29
|
+
import type { RillStructuralType, RillTypeValue, RillValue } from './values.js';
|
|
29
30
|
interface RuntimeContextLike {
|
|
30
31
|
readonly parent?: RuntimeContextLike | undefined;
|
|
31
32
|
readonly variables: Map<string, RillValue>;
|
|
32
33
|
pipeValue: RillValue;
|
|
34
|
+
readonly metadata?: Record<string, string> | undefined;
|
|
33
35
|
}
|
|
34
36
|
/**
|
|
35
37
|
* Callable function signature.
|
|
@@ -44,18 +46,13 @@ export type CallableFn = (args: RillValue[], ctx: RuntimeContextLike, location?:
|
|
|
44
46
|
*/
|
|
45
47
|
export interface CallableParam {
|
|
46
48
|
readonly name: string;
|
|
47
|
-
readonly typeName:
|
|
49
|
+
readonly typeName: RillTypeName | null;
|
|
48
50
|
readonly defaultValue: RillValue | null;
|
|
49
51
|
/** Evaluated parameter-level annotations (e.g., ^(cache: true)) */
|
|
50
52
|
readonly annotations: Record<string, RillValue>;
|
|
51
53
|
/** Human-readable parameter description (optional, from host functions) */
|
|
52
54
|
readonly description?: string;
|
|
53
55
|
}
|
|
54
|
-
/**
|
|
55
|
-
* Return type declaration for host-provided functions.
|
|
56
|
-
* Limited to 6 primitive types plus 'any' (default).
|
|
57
|
-
*/
|
|
58
|
-
export type RillFunctionReturnType = 'string' | 'number' | 'bool' | 'list' | 'dict' | 'vector' | 'any';
|
|
59
56
|
/**
|
|
60
57
|
* Parameter metadata for host-provided functions.
|
|
61
58
|
*
|
|
@@ -65,8 +62,8 @@ export type RillFunctionReturnType = 'string' | 'number' | 'bool' | 'list' | 'di
|
|
|
65
62
|
export interface HostFunctionParam {
|
|
66
63
|
/** Parameter name (for error messages and documentation) */
|
|
67
64
|
readonly name: string;
|
|
68
|
-
/** Expected type:
|
|
69
|
-
readonly type: 'string' | 'number' | 'bool' | 'list' | 'dict' | 'vector';
|
|
65
|
+
/** Expected type: 6 primitive types plus 'any' */
|
|
66
|
+
readonly type: 'string' | 'number' | 'bool' | 'list' | 'dict' | 'vector' | 'any';
|
|
70
67
|
/** Default value if argument omitted. Makes parameter optional. */
|
|
71
68
|
readonly defaultValue?: RillValue;
|
|
72
69
|
/** Human-readable parameter description (optional) */
|
|
@@ -115,6 +112,10 @@ export interface ScriptCallable extends CallableBase {
|
|
|
115
112
|
readonly annotations: Record<string, RillValue>;
|
|
116
113
|
/** Evaluated parameter annotations keyed by parameter name */
|
|
117
114
|
readonly paramAnnotations: Record<string, Record<string, RillValue>>;
|
|
115
|
+
/** Cached input structural type built from params at creation time — used by `$fn.^input` */
|
|
116
|
+
readonly inputShape: RillStructuralType;
|
|
117
|
+
/** Return type target from `:type-target` syntax — set in Phase 2, undefined until then */
|
|
118
|
+
readonly returnShape?: RillTypeValue | undefined;
|
|
118
119
|
}
|
|
119
120
|
/** Runtime callable - Rill's built-in functions (type, log, json, identity) */
|
|
120
121
|
export interface RuntimeCallable extends CallableBase {
|
|
@@ -164,6 +165,20 @@ export declare function formatCallable(callable: RillCallable): string;
|
|
|
164
165
|
* 5. Same parameter-level annotations
|
|
165
166
|
*/
|
|
166
167
|
export declare function callableEquals(a: ScriptCallable, b: ScriptCallable, valueEquals?: (a: RillValue, b: RillValue) => boolean): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Build a RillStructuralType closure variant from a closure's parameter list.
|
|
170
|
+
*
|
|
171
|
+
* Called at closure creation time to build the structural type for `$fn.^input`.
|
|
172
|
+
* - Typed params map to { kind: 'primitive', name }
|
|
173
|
+
* - Untyped params (typeName: null) map to { kind: 'any' }
|
|
174
|
+
* - Return type is always { kind: 'any' }
|
|
175
|
+
*
|
|
176
|
+
* No validation: parser already validates type names.
|
|
177
|
+
*
|
|
178
|
+
* @param params - Closure parameter definitions
|
|
179
|
+
* @returns Frozen RillStructuralType with closure variant
|
|
180
|
+
*/
|
|
181
|
+
export declare function paramsToStructuralType(params: CallableParam[]): RillStructuralType;
|
|
167
182
|
/**
|
|
168
183
|
* Validate defaultValue type matches declared parameter type.
|
|
169
184
|
*
|
|
@@ -175,17 +190,6 @@ export declare function callableEquals(a: ScriptCallable, b: ScriptCallable, val
|
|
|
175
190
|
* @throws Error if defaultValue type doesn't match param.type
|
|
176
191
|
*/
|
|
177
192
|
export declare function validateDefaultValueType(param: HostFunctionParam, _functionName: string): void;
|
|
178
|
-
/**
|
|
179
|
-
* Validate returnType is a valid RillFunctionReturnType literal.
|
|
180
|
-
*
|
|
181
|
-
* Called at registration time to catch configuration errors early.
|
|
182
|
-
* Throws Error (not RuntimeError) to indicate registration failure.
|
|
183
|
-
*
|
|
184
|
-
* @param returnType - Return type value to validate
|
|
185
|
-
* @param functionName - Function name for error messages
|
|
186
|
-
* @throws Error if returnType is not a valid literal
|
|
187
|
-
*/
|
|
188
|
-
export declare function validateReturnType(returnType: unknown, functionName: string): void;
|
|
189
193
|
/**
|
|
190
194
|
* Validate host function arguments against parameter declarations.
|
|
191
195
|
*
|
|
@@ -212,5 +216,4 @@ export declare function validateHostFunctionArgs(args: RillValue[], params: read
|
|
|
212
216
|
* @throws RuntimeError with RUNTIME_TYPE_ERROR on validation failure
|
|
213
217
|
*/
|
|
214
218
|
export declare function validateCallableArgs(args: RillValue[], params: readonly CallableParam[], functionName: string, location?: SourceLocation): void;
|
|
215
|
-
export {};
|
|
216
219
|
//# sourceMappingURL=callable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callable.d.ts","sourceRoot":"","sources":["../../../src/runtime/core/callable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"callable.d.ts","sourceRoot":"","sources":["../../../src/runtime/core/callable.ts"],"names":[],"mappings":"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"}
|
|
@@ -154,6 +154,32 @@ export function callableEquals(a, b, valueEquals = (x, y) => formatValue(x) ===
|
|
|
154
154
|
}
|
|
155
155
|
return true;
|
|
156
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Build a RillStructuralType closure variant from a closure's parameter list.
|
|
159
|
+
*
|
|
160
|
+
* Called at closure creation time to build the structural type for `$fn.^input`.
|
|
161
|
+
* - Typed params map to { kind: 'primitive', name }
|
|
162
|
+
* - Untyped params (typeName: null) map to { kind: 'any' }
|
|
163
|
+
* - Return type is always { kind: 'any' }
|
|
164
|
+
*
|
|
165
|
+
* No validation: parser already validates type names.
|
|
166
|
+
*
|
|
167
|
+
* @param params - Closure parameter definitions
|
|
168
|
+
* @returns Frozen RillStructuralType with closure variant
|
|
169
|
+
*/
|
|
170
|
+
export function paramsToStructuralType(params) {
|
|
171
|
+
const closureParams = params.map((param) => {
|
|
172
|
+
const paramType = param.typeName !== null
|
|
173
|
+
? { kind: 'primitive', name: param.typeName }
|
|
174
|
+
: { kind: 'any' };
|
|
175
|
+
return [param.name, paramType];
|
|
176
|
+
});
|
|
177
|
+
return Object.freeze({
|
|
178
|
+
kind: 'closure',
|
|
179
|
+
params: closureParams,
|
|
180
|
+
ret: { kind: 'any' },
|
|
181
|
+
});
|
|
182
|
+
}
|
|
157
183
|
/**
|
|
158
184
|
* Validate defaultValue type matches declared parameter type.
|
|
159
185
|
*
|
|
@@ -167,36 +193,15 @@ export function callableEquals(a, b, valueEquals = (x, y) => formatValue(x) ===
|
|
|
167
193
|
export function validateDefaultValueType(param, _functionName) {
|
|
168
194
|
if (param.defaultValue === undefined)
|
|
169
195
|
return;
|
|
196
|
+
// Skip validation for 'any' type (accepts all values)
|
|
197
|
+
if (param.type === 'any')
|
|
198
|
+
return;
|
|
170
199
|
const actualType = inferType(param.defaultValue);
|
|
171
200
|
const expectedType = param.type;
|
|
172
201
|
if (actualType !== expectedType) {
|
|
173
202
|
throw new Error(`Invalid defaultValue for parameter '${param.name}': expected ${expectedType}, got ${actualType}`);
|
|
174
203
|
}
|
|
175
204
|
}
|
|
176
|
-
/**
|
|
177
|
-
* Validate returnType is a valid RillFunctionReturnType literal.
|
|
178
|
-
*
|
|
179
|
-
* Called at registration time to catch configuration errors early.
|
|
180
|
-
* Throws Error (not RuntimeError) to indicate registration failure.
|
|
181
|
-
*
|
|
182
|
-
* @param returnType - Return type value to validate
|
|
183
|
-
* @param functionName - Function name for error messages
|
|
184
|
-
* @throws Error if returnType is not a valid literal
|
|
185
|
-
*/
|
|
186
|
-
export function validateReturnType(returnType, functionName) {
|
|
187
|
-
const validTypes = [
|
|
188
|
-
'string',
|
|
189
|
-
'number',
|
|
190
|
-
'bool',
|
|
191
|
-
'list',
|
|
192
|
-
'dict',
|
|
193
|
-
'vector',
|
|
194
|
-
'any',
|
|
195
|
-
];
|
|
196
|
-
if (!validTypes.includes(returnType)) {
|
|
197
|
-
throw new Error(`Invalid returnType for function '${functionName}': expected one of string, number, bool, list, dict, vector, any`);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
205
|
/**
|
|
201
206
|
* Validate host function arguments against parameter declarations.
|
|
202
207
|
*
|
|
@@ -239,16 +244,18 @@ export function validateHostFunctionArgs(args, params, functionName, location) {
|
|
|
239
244
|
});
|
|
240
245
|
}
|
|
241
246
|
}
|
|
242
|
-
// Validate argument type
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
functionName,
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
247
|
+
// Validate argument type (skip for 'any' type)
|
|
248
|
+
if (param.type !== 'any') {
|
|
249
|
+
const actualType = inferType(arg);
|
|
250
|
+
const expectedType = param.type;
|
|
251
|
+
if (actualType !== expectedType) {
|
|
252
|
+
throw new RuntimeError('RILL-R001', `Type mismatch in ${functionName}: parameter '${param.name}' expects ${expectedType}, got ${actualType}`, location, {
|
|
253
|
+
functionName,
|
|
254
|
+
paramName: param.name,
|
|
255
|
+
expectedType,
|
|
256
|
+
actualType,
|
|
257
|
+
});
|
|
258
|
+
}
|
|
252
259
|
}
|
|
253
260
|
}
|
|
254
261
|
}
|
|
@@ -294,8 +301,8 @@ export function validateCallableArgs(args, params, functionName, location) {
|
|
|
294
301
|
});
|
|
295
302
|
}
|
|
296
303
|
}
|
|
297
|
-
// Validate argument type (only for typed parameters)
|
|
298
|
-
if (param.typeName !== null) {
|
|
304
|
+
// Validate argument type (only for typed parameters, skip 'any')
|
|
305
|
+
if (param.typeName !== null && param.typeName !== 'any') {
|
|
299
306
|
const actualType = inferType(arg);
|
|
300
307
|
const expectedType = param.typeName;
|
|
301
308
|
if (actualType !== expectedType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callable.js","sourceRoot":"","sources":["../../../src/runtime/core/callable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;
|
|
1
|
+
{"version":3,"file":"callable.js","sourceRoot":"","sources":["../../../src/runtime/core/callable.ts"],"names":[],"mappings":"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"}
|