septima-lang 0.0.13 → 0.0.15
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/src/ast-node.d.ts +5 -1
- package/dist/src/ast-node.js +5 -4
- package/dist/src/parser.d.ts +2 -1
- package/dist/src/parser.js +40 -24
- package/dist/src/result.d.ts +0 -2
- package/dist/src/result.js +2 -22
- package/dist/src/runtime.js +21 -18
- package/dist/src/septima.js +2 -8
- package/dist/src/value.d.ts +9 -34
- package/dist/src/value.js +126 -111
- package/package.json +1 -1
package/dist/src/septima.js
CHANGED
|
@@ -89,13 +89,7 @@ class Septima {
|
|
|
89
89
|
return {
|
|
90
90
|
execute: (args) => {
|
|
91
91
|
const value = this.execute(fileName, 'quiet', args);
|
|
92
|
-
|
|
93
|
-
if (!value.isSink()) {
|
|
94
|
-
ret = { value: value.export(), tag: 'ok' };
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
ret = (0, result_1.createResultSink)(value, this.unitByUnitId);
|
|
98
|
-
}
|
|
92
|
+
const ret = { value: value.export(), tag: 'ok' };
|
|
99
93
|
return ret;
|
|
100
94
|
},
|
|
101
95
|
};
|
|
@@ -187,4 +181,4 @@ class Septima {
|
|
|
187
181
|
}
|
|
188
182
|
}
|
|
189
183
|
exports.Septima = Septima;
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VwdGltYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXB0aW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTRCO0FBRzVCLHVDQUFrQztBQUNsQyxxQ0FBaUM7QUFDakMscUNBQTBEO0FBQzFELHVDQUE4QztBQUM5Qyx1Q0FBbUM7QUFDbkMsK0RBQXlEO0FBQ3pELCtDQUEwQztBQXVCMUMsTUFBYSxPQUFPO0lBb0NsQixZQUE2QixhQUFhLEVBQUU7UUFBZixlQUFVLEdBQVYsVUFBVSxDQUFLO1FBRjNCLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUE7SUFFZCxDQUFDO0lBbkNoRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFhLEVBQUUsT0FBaUIsRUFBRSxPQUFnQyxFQUFFO1FBQzdFLE1BQU0sTUFBTSxHQUNWLE9BQU8sRUFBRSxNQUFNO1lBQ2YsQ0FBQyxDQUFDLENBQWEsRUFBRSxFQUFFO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUM1QixDQUFDLENBQUMsQ0FBQTtRQUVKLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQTtRQUMzQixNQUFNLFVBQVUsR0FBMkIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFBO1FBQ2hFLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDN0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN2RSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ3BCLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FB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
|
package/dist/src/value.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { AstNode, Lambda
|
|
1
|
+
import { AstNode, Lambda } from './ast-node';
|
|
2
2
|
import { CallEvaluator } from './find-array-method';
|
|
3
|
-
import { Span } from './location';
|
|
4
|
-
import * as Stack from './stack';
|
|
5
3
|
import { SymbolTable } from './symbol-table';
|
|
6
4
|
declare type LambdaEvaluator = (names: string[], ast: AstNode, table: SymbolTable) => Value;
|
|
7
5
|
declare type Inner = {
|
|
@@ -22,16 +20,12 @@ declare type Inner = {
|
|
|
22
20
|
} | {
|
|
23
21
|
tag: 'num';
|
|
24
22
|
val: number;
|
|
23
|
+
} | {
|
|
24
|
+
tag: 'undef';
|
|
25
|
+
val: undefined;
|
|
25
26
|
} | {
|
|
26
27
|
tag: 'obj';
|
|
27
28
|
val: Record<string, Value>;
|
|
28
|
-
} | {
|
|
29
|
-
tag: 'sink';
|
|
30
|
-
val: undefined;
|
|
31
|
-
span?: Span;
|
|
32
|
-
trace?: Stack.T;
|
|
33
|
-
symbols?: SymbolTable;
|
|
34
|
-
unitId?: UnitId;
|
|
35
29
|
} | {
|
|
36
30
|
tag: 'str';
|
|
37
31
|
val: string;
|
|
@@ -41,27 +35,12 @@ export declare class Value {
|
|
|
41
35
|
private constructor();
|
|
42
36
|
static bool(val: boolean): Value;
|
|
43
37
|
static num(val: number): Value;
|
|
44
|
-
/**
|
|
45
|
-
* Returns a Value which is essentially a "sink": (almost) every computation involving a sink evaluates to sink. A few
|
|
46
|
-
* quick examples: `5+sink`, `sink.x`, `sink()`, `Object.keys(sink)`, `if (sink) 4 else 8` all evaluate to `sink`. The
|
|
47
|
-
* raitonale is that once an expression evaluates to `sink` all expressions depending on it also evaluate to `sink`.
|
|
48
|
-
*
|
|
49
|
-
* There are however a few (intentional) exemptions:
|
|
50
|
-
* (i) a sink can be passed as an actual parameter in a function call. Hence `(fun (x,y) y)(sink, 5)` will evaluate
|
|
51
|
-
* to `5`.
|
|
52
|
-
* (ii) a sink can be compared with itself.
|
|
53
|
-
* (iii) in `if()` expressions, only one of the branches is evlauated (based on the condition's value). As a result,
|
|
54
|
-
* evluation of a sink-producing branch can be skipping. Specifically, `if (true) 5 else sink` evaluates to `5`.
|
|
55
|
-
* (iv) in `||` and `&&` expressions, the evaluation of the right hand side can be skipped. Specifically,
|
|
56
|
-
* `true || sink` evaluates to `true` and `false && sink` evaluates to `false`.
|
|
57
|
-
*/
|
|
58
|
-
static sink(span?: Span, trace?: Stack.T, symbols?: SymbolTable, unitId?: UnitId): Value;
|
|
59
38
|
static str(val: string): Value;
|
|
39
|
+
static undef(): Value;
|
|
60
40
|
static arr(val: Value[]): Value;
|
|
61
41
|
static obj(val: Record<string, Value>): Value;
|
|
62
42
|
static lambda(ast: Lambda, table: SymbolTable): Value;
|
|
63
43
|
static foreign(f: (...args: Value[]) => unknown): Value;
|
|
64
|
-
isSink(): boolean;
|
|
65
44
|
unwrap(): unknown;
|
|
66
45
|
assertBool(): boolean;
|
|
67
46
|
assertNum(): number;
|
|
@@ -73,17 +52,11 @@ export declare class Value {
|
|
|
73
52
|
table: SymbolTable;
|
|
74
53
|
};
|
|
75
54
|
isLambda(): boolean;
|
|
55
|
+
isUndefined(): boolean;
|
|
76
56
|
ifElse(positive: () => Value, negative: () => Value): Value;
|
|
77
|
-
|
|
78
|
-
trace(): AstNode[] | undefined;
|
|
79
|
-
symbols(): SymbolTable | undefined;
|
|
80
|
-
where(): {
|
|
81
|
-
span: Span;
|
|
82
|
-
unitId: string;
|
|
83
|
-
} | undefined;
|
|
57
|
+
coalesce(that: () => Value): Value;
|
|
84
58
|
or(that: () => Value): Value;
|
|
85
59
|
and(that: () => Value): Value;
|
|
86
|
-
unsink(that: () => Value): Value;
|
|
87
60
|
equalsTo(that: Value): Value;
|
|
88
61
|
not(): Value;
|
|
89
62
|
private binaryNumericOperator;
|
|
@@ -125,6 +98,8 @@ export declare class Value {
|
|
|
125
98
|
entries(): Value;
|
|
126
99
|
fromEntries(): Value;
|
|
127
100
|
toString(): string;
|
|
101
|
+
toBoolean(): boolean;
|
|
102
|
+
toNumber(): number;
|
|
128
103
|
toJSON(): unknown;
|
|
129
104
|
export(): unknown;
|
|
130
105
|
static from(u: unknown): Value;
|