@omgbase/oqx 0.15.0 → 0.18.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/CHANGELOG.md +36 -0
- package/README.md +170 -17
- package/dist/ast.d.ts +76 -22
- package/dist/ast.d.ts.map +1 -1
- package/dist/ast.js +21 -6
- package/dist/ast.js.map +1 -1
- package/dist/build.d.ts +37 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +54 -0
- package/dist/build.js.map +1 -0
- package/dist/context.d.ts +13 -3
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +7 -3
- package/dist/context.js.map +1 -1
- package/dist/engine.d.ts +1 -2
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +52 -23
- package/dist/engine.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +19 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -12
- package/dist/index.js.map +1 -1
- package/dist/lexer.d.ts +15 -1
- package/dist/lexer.d.ts.map +1 -1
- package/dist/lexer.js +104 -51
- package/dist/lexer.js.map +1 -1
- package/dist/optimize/analysis.d.ts.map +1 -1
- package/dist/optimize/analysis.js +5 -3
- package/dist/optimize/analysis.js.map +1 -1
- package/dist/optimize/ir.d.ts +2 -2
- package/dist/optimize/ir.d.ts.map +1 -1
- package/dist/optimize/ir.js +3 -3
- package/dist/optimize/ir.js.map +1 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +616 -251
- package/dist/parser.js.map +1 -1
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +4 -2
- package/dist/plan.js.map +1 -1
- package/dist/print.d.ts +17 -0
- package/dist/print.d.ts.map +1 -0
- package/dist/print.js +266 -0
- package/dist/print.js.map +1 -0
- package/dist/resolve.d.ts +23 -0
- package/dist/resolve.d.ts.map +1 -0
- package/dist/resolve.js +330 -0
- package/dist/resolve.js.map +1 -0
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/dist/walk.d.ts +54 -0
- package/dist/walk.d.ts.map +1 -0
- package/dist/walk.js +139 -0
- package/dist/walk.js.map +1 -0
- package/package.json +1 -1
- package/src/ast.ts +104 -35
- package/src/build.ts +72 -0
- package/src/context.ts +16 -3
- package/src/engine.ts +55 -26
- package/src/errors.ts +3 -2
- package/src/index.ts +38 -13
- package/src/lexer.ts +102 -51
- package/src/optimize/analysis.ts +4 -3
- package/src/optimize/ir.ts +4 -4
- package/src/parser.ts +573 -225
- package/src/plan.ts +3 -2
- package/src/print.ts +274 -0
- package/src/resolve.ts +305 -0
- package/src/version.ts +4 -0
- package/src/walk.ts +180 -0
package/dist/index.d.ts
CHANGED
|
@@ -2,11 +2,10 @@ import type { Query } from "./ast.js";
|
|
|
2
2
|
import type { Engine, OqxResult } from "./engine.js";
|
|
3
3
|
import type { DataContext } from "./context.js";
|
|
4
4
|
export { OqxError } from "./errors.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export declare const LANGUAGE_VERSION = "0.15";
|
|
5
|
+
export type { OqxStage } from "./errors.js";
|
|
6
|
+
export { LANGUAGE_VERSION } from "./version.js";
|
|
8
7
|
export type { OqxResult, Engine, InMemoryEngineOptions, TraceEvent } from "./engine.js";
|
|
9
|
-
export { InMemoryEngine
|
|
8
|
+
export { InMemoryEngine } from "./engine.js";
|
|
10
9
|
export type { BlockPlan, Correlation, Rule, RuleContext, RowIndex } from "./optimize/index.js";
|
|
11
10
|
export { DEFAULT_RULES, correlatedEqualityProbe, stableReceiver, invariantBlock, cardinalityOnly, optimizeBlock, logicalBlock, HashIndex, } from "./optimize/index.js";
|
|
12
11
|
export type { DataContext, CallResult, DefaultContextOptions } from "./context.js";
|
|
@@ -19,23 +18,37 @@ export { IndexedCollection } from "./adapters/indexed.js";
|
|
|
19
18
|
export { ROWS_ROOT, partitionPushable, residualQuery, asEquality, isConst, constValue } from "./plan.js";
|
|
20
19
|
export * as semantics from "./semantics.js";
|
|
21
20
|
export type * from "./ast.js";
|
|
21
|
+
export { isExpr } from "./ast.js";
|
|
22
|
+
export { parseTemplate } from "./parser.js";
|
|
23
|
+
export { rawSource, toUtf16, codePointLength } from "./lexer.js";
|
|
24
|
+
export { resolveAliases } from "./resolve.js";
|
|
25
|
+
export type { Clause, VisitContext, Visitor, ChildKey, Stripped } from "./walk.js";
|
|
26
|
+
export { CHILDREN, visit, transform, stripSpans, toJSON } from "./walk.js";
|
|
27
|
+
export type { Template } from "./print.js";
|
|
28
|
+
export { print, printTemplate } from "./print.js";
|
|
29
|
+
export * as build from "./build.js";
|
|
22
30
|
/** The OQX tagged template. Returns the query result shaped by its consumer:
|
|
23
31
|
* an array for `collect` (the default), a boolean for `exists` / `none`, a
|
|
24
32
|
* number for `count`, or a single record / null for `first` / `single`. */
|
|
25
33
|
export declare function oqx(strings: TemplateStringsArray, ...values: unknown[]): unknown;
|
|
26
|
-
/** Parse a query string into a reusable AST. */
|
|
34
|
+
/** Parse a query string into a reusable AST (spec/oqx/AST.md). */
|
|
27
35
|
export declare function parse(source: string): Query;
|
|
28
36
|
/** Run a string query against a data context of named roots (e.g. `{ people }`,
|
|
29
37
|
* so `from people` resolves), returning the consumer-shaped result. */
|
|
30
38
|
export declare function execute(source: string, roots?: Record<string, unknown>): unknown;
|
|
31
39
|
/** Run a pre-parsed query with explicit bindings and/or a backend, returning the
|
|
32
40
|
* full discriminated result. Provide `engine` (any `Engine`), or `context` (a
|
|
33
|
-
* `DataContext`, run in-memory), or `roots` (plain-object named roots).
|
|
41
|
+
* `DataContext`, run in-memory), or `roots` (plain-object named roots). The
|
|
42
|
+
* query's `select` aliases are resolved here (`resolveAliases`), once, before
|
|
43
|
+
* the engine sees it. */
|
|
34
44
|
export declare function run(query: Query, opts?: {
|
|
35
45
|
values?: readonly unknown[];
|
|
36
46
|
roots?: Record<string, unknown>;
|
|
37
47
|
context?: DataContext;
|
|
38
48
|
engine?: Engine;
|
|
39
49
|
}): OqxResult;
|
|
50
|
+
/** Convenience: resolve the query's aliases and run it in-memory over
|
|
51
|
+
* plain-object roots (the default context). */
|
|
52
|
+
export declare function runQuery(query: Query, bindings: readonly unknown[], roots: unknown): OqxResult;
|
|
40
53
|
export default oqx;
|
|
41
54
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -18,14 +18,19 @@
|
|
|
18
18
|
// with `PlannedEngine` finishing the residual in-memory.
|
|
19
19
|
// All backends must obey the scalar rules in `./semantics.ts` (the conformance
|
|
20
20
|
// suite verifies this).
|
|
21
|
+
//
|
|
22
|
+
// The parsed `Query` is a first-class AST (spec/oqx/AST.md): spans on every
|
|
23
|
+
// node, `visit`/`transform` to walk it, `print` to write it back, `toJSON` for
|
|
24
|
+
// the shared JSON shape. `where` keeps its surface form; the entry points below
|
|
25
|
+
// (`oqx`, `parse` + `run`, `execute`, `runQuery`) apply `resolveAliases` exactly
|
|
26
|
+
// once before evaluation — an `Engine` evaluates the query it is given.
|
|
21
27
|
import { parseTemplate, parseString } from "./parser.js";
|
|
22
|
-
import { InMemoryEngine
|
|
28
|
+
import { InMemoryEngine } from "./engine.js";
|
|
23
29
|
import { DefaultContext } from "./context.js";
|
|
30
|
+
import { resolveAliases } from "./resolve.js";
|
|
24
31
|
export { OqxError } from "./errors.js";
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
export const LANGUAGE_VERSION = "0.15";
|
|
28
|
-
export { InMemoryEngine, runQuery } from "./engine.js";
|
|
32
|
+
export { LANGUAGE_VERSION } from "./version.js";
|
|
33
|
+
export { InMemoryEngine } from "./engine.js";
|
|
29
34
|
export { DEFAULT_RULES, correlatedEqualityProbe, stableReceiver, invariantBlock, cardinalityOnly, optimizeBlock, logicalBlock, HashIndex, } from "./optimize/index.js";
|
|
30
35
|
export { DefaultContext } from "./context.js";
|
|
31
36
|
export { compileRegex } from "./regex.js";
|
|
@@ -33,8 +38,16 @@ export { PlannedEngine } from "./planner.js";
|
|
|
33
38
|
export { IndexedCollection } from "./adapters/indexed.js";
|
|
34
39
|
export { ROWS_ROOT, partitionPushable, residualQuery, asEquality, isConst, constValue } from "./plan.js";
|
|
35
40
|
export * as semantics from "./semantics.js";
|
|
41
|
+
export { isExpr } from "./ast.js";
|
|
42
|
+
export { parseTemplate } from "./parser.js";
|
|
43
|
+
export { rawSource, toUtf16, codePointLength } from "./lexer.js";
|
|
44
|
+
export { resolveAliases } from "./resolve.js";
|
|
45
|
+
export { CHILDREN, visit, transform, stripSpans, toJSON } from "./walk.js";
|
|
46
|
+
export { print, printTemplate } from "./print.js";
|
|
47
|
+
export * as build from "./build.js";
|
|
36
48
|
// Compiled-query cache keyed by the template's stable `strings` identity, so the
|
|
37
|
-
// same call site parses once and re-runs with fresh
|
|
49
|
+
// same call site parses (and resolves its aliases) once and re-runs with fresh
|
|
50
|
+
// bindings.
|
|
38
51
|
const templateCache = new WeakMap();
|
|
39
52
|
/** The OQX tagged template. Returns the query result shaped by its consumer:
|
|
40
53
|
* an array for `collect` (the default), a boolean for `exists` / `none`, a
|
|
@@ -42,12 +55,12 @@ const templateCache = new WeakMap();
|
|
|
42
55
|
export function oqx(strings, ...values) {
|
|
43
56
|
let query = templateCache.get(strings);
|
|
44
57
|
if (!query) {
|
|
45
|
-
query = parseTemplate(strings, values.length);
|
|
58
|
+
query = resolveAliases(parseTemplate(strings, values.length));
|
|
46
59
|
templateCache.set(strings, query);
|
|
47
60
|
}
|
|
48
|
-
return unwrap(
|
|
61
|
+
return unwrap(new InMemoryEngine(new DefaultContext()).run(query, values));
|
|
49
62
|
}
|
|
50
|
-
/** Parse a query string into a reusable AST. */
|
|
63
|
+
/** Parse a query string into a reusable AST (spec/oqx/AST.md). */
|
|
51
64
|
export function parse(source) {
|
|
52
65
|
return parseString(source);
|
|
53
66
|
}
|
|
@@ -58,13 +71,22 @@ export function execute(source, roots) {
|
|
|
58
71
|
}
|
|
59
72
|
/** Run a pre-parsed query with explicit bindings and/or a backend, returning the
|
|
60
73
|
* full discriminated result. Provide `engine` (any `Engine`), or `context` (a
|
|
61
|
-
* `DataContext`, run in-memory), or `roots` (plain-object named roots).
|
|
74
|
+
* `DataContext`, run in-memory), or `roots` (plain-object named roots). The
|
|
75
|
+
* query's `select` aliases are resolved here (`resolveAliases`), once, before
|
|
76
|
+
* the engine sees it. */
|
|
62
77
|
export function run(query, opts = {}) {
|
|
63
78
|
const values = opts.values ?? [];
|
|
79
|
+
const resolved = resolveAliases(query);
|
|
64
80
|
if (opts.engine)
|
|
65
|
-
return opts.engine.run(
|
|
81
|
+
return opts.engine.run(resolved, values);
|
|
66
82
|
const context = opts.context ?? new DefaultContext(opts.roots ?? {});
|
|
67
|
-
return new InMemoryEngine(context).run(
|
|
83
|
+
return new InMemoryEngine(context).run(resolved, values);
|
|
84
|
+
}
|
|
85
|
+
/** Convenience: resolve the query's aliases and run it in-memory over
|
|
86
|
+
* plain-object roots (the default context). */
|
|
87
|
+
export function runQuery(query, bindings, roots) {
|
|
88
|
+
const ctx = new DefaultContext(roots ?? {});
|
|
89
|
+
return new InMemoryEngine(ctx).run(resolveAliases(query), bindings);
|
|
68
90
|
}
|
|
69
91
|
function unwrap(result) {
|
|
70
92
|
switch (result.consumer) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,wCAAwC;AACxC,EAAE;AACF,2BAA2B;AAC3B,sBAAsB;AACtB,qBAAqB;AACrB,gEAAgE;AAChE,OAAO;AACP,EAAE;AACF,+EAA+E;AAC/E,8CAA8C;AAC9C,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,6EAA6E;AAC7E,6DAA6D;AAC7D,+EAA+E;AAC/E,wBAAwB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lexer.d.ts
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Span } from "./ast.js";
|
|
2
|
+
export type TokType = "ident" | "kw" | "string" | "number" | "lparen" | "rparen" | "lbrace" | "rbrace" | "lbracket" | "rbracket" | "comma" | "colon" | "caret" | "dot" | "range" | "op" | "binding" | "eof";
|
|
2
3
|
export interface Token {
|
|
3
4
|
type: TokType;
|
|
5
|
+
/** The source text of the token, except: a `string` token carries its decoded
|
|
6
|
+
* value (quotes stripped, escapes resolved); a `binding` carries the display
|
|
7
|
+
* marker `${N}`; `eof` carries `""`. */
|
|
4
8
|
value: string;
|
|
9
|
+
/** Code-point offset of the token's first character. */
|
|
5
10
|
pos: number;
|
|
11
|
+
/** Code-point offset just past the token's last character (`[pos, end)`). */
|
|
12
|
+
end: number;
|
|
6
13
|
index?: number;
|
|
7
14
|
}
|
|
15
|
+
/** The length of a string in Unicode code points. */
|
|
16
|
+
export declare function codePointLength(s: string): number;
|
|
8
17
|
/** Lex a tagged-template call: the cooked string fragments and the count of
|
|
9
18
|
* interpolated values. Emits a single flat token stream with `binding` tokens
|
|
10
19
|
* (index 0..values-1) between fragments, terminated by `eof`. */
|
|
@@ -14,4 +23,9 @@ export declare function lexString(src: string): Token[];
|
|
|
14
23
|
/** A human-readable reconstruction of the query source, with `${N}` markers where
|
|
15
24
|
* bindings were, for error messages. */
|
|
16
25
|
export declare function rawSource(fragments: readonly string[]): string;
|
|
26
|
+
/** Convert a code-point span (as every AST node carries) to UTF-16 code-unit
|
|
27
|
+
* offsets over `source` — the units a JavaScript string, a DOM range or an
|
|
28
|
+
* editor API counts in. `source` is the raw source the span was measured over
|
|
29
|
+
* (for a template, `rawSource(strings)`). Offsets past the end clamp. */
|
|
30
|
+
export declare function toUtf16(span: Span, source: string): Span;
|
|
17
31
|
//# sourceMappingURL=lexer.d.ts.map
|
package/dist/lexer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,MAAM,OAAO,GACf,OAAO,GACP,IAAI,GACJ,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,UAAU,GACV,OAAO,GACP,OAAO,GACP,OAAO,GACP,KAAK,GACL,OAAO,GACP,IAAI,GACJ,SAAS,GACT,KAAK,CAAC;AAEV,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,OAAO,CAAC;IACd;;4CAEwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAYD,qDAAqD;AACrD,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED;;iEAEiE;AACjE,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAkBjF;AAED,yEAAyE;AACzE,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAM9C;AA0ID;wCACwC;AACxC,wBAAgB,SAAS,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAE9D;AAED;;;yEAGyE;AACzE,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAexD"}
|
package/dist/lexer.js
CHANGED
|
@@ -11,14 +11,27 @@
|
|
|
11
11
|
// host-bindings design note calls for. (A consequence: `${x}` inside a string
|
|
12
12
|
// literal does not interpolate — that fragment would be an unterminated string —
|
|
13
13
|
// which is exactly the desired "interpolation is a value, never source text".)
|
|
14
|
+
//
|
|
15
|
+
// Positions (`Token.pos` / `Token.end`, the `span` of every AST node, and the
|
|
16
|
+
// offsets quoted in error messages) count Unicode CODE POINTS over the raw
|
|
17
|
+
// source (`rawSource` for a template, where a binding occupies its `${n}`
|
|
18
|
+
// marker) — not UTF-16 code units — so the two implementations agree on every
|
|
19
|
+
// offset (spec/oqx/AST.md §3). `toUtf16` converts a span for a UTF-16 editor.
|
|
14
20
|
import { OqxError } from "./errors.js";
|
|
15
|
-
const KEYWORDS = new Set(["from", "where", "select"]);
|
|
21
|
+
const KEYWORDS = new Set(["from", "where", "select", "is", "not", "and", "or"]);
|
|
16
22
|
// Multi-char operators, longest first (the scanner tries these before singles).
|
|
17
23
|
const MULTI_OPS = ["==", "!=", "<=", ">=", "&&", "||"];
|
|
18
24
|
const SINGLE_OPS = new Set(["<", ">", "!", "+", "-", "*", "/", "%"]);
|
|
19
|
-
const isIdentStart = (c) =>
|
|
20
|
-
const isIdentPart = (c) =>
|
|
21
|
-
const isDigit = (c) => c >= "0" && c <= "9";
|
|
25
|
+
const isIdentStart = (c) => /^[A-Za-z_$]$/.test(c);
|
|
26
|
+
const isIdentPart = (c) => /^[A-Za-z0-9_$]$/.test(c);
|
|
27
|
+
const isDigit = (c) => c.length === 1 && c >= "0" && c <= "9";
|
|
28
|
+
/** The length of a string in Unicode code points. */
|
|
29
|
+
export function codePointLength(s) {
|
|
30
|
+
let n = 0;
|
|
31
|
+
for (const _ of s)
|
|
32
|
+
n++;
|
|
33
|
+
return n;
|
|
34
|
+
}
|
|
22
35
|
/** Lex a tagged-template call: the cooked string fragments and the count of
|
|
23
36
|
* interpolated values. Emits a single flat token stream with `binding` tokens
|
|
24
37
|
* (index 0..values-1) between fragments, terminated by `eof`. */
|
|
@@ -27,84 +40,99 @@ export function lexTemplate(fragments, values) {
|
|
|
27
40
|
let base = 0; // running offset across fragments + rendered `${…}` markers
|
|
28
41
|
for (let f = 0; f < fragments.length; f++) {
|
|
29
42
|
lexFragment(fragments[f], base, tokens);
|
|
30
|
-
base += fragments[f]
|
|
43
|
+
base += codePointLength(fragments[f]);
|
|
31
44
|
if (f < fragments.length - 1) {
|
|
32
45
|
// account for the value's rendered width in the display source (see rawSource)
|
|
33
46
|
const marker = `\${${f}}`;
|
|
34
|
-
tokens.push({ type: "binding", value: marker, pos: base, index: f });
|
|
47
|
+
tokens.push({ type: "binding", value: marker, pos: base, end: base + marker.length, index: f });
|
|
35
48
|
base += marker.length;
|
|
36
49
|
}
|
|
37
50
|
}
|
|
38
51
|
if (values !== fragments.length - 1) {
|
|
39
52
|
throw new OqxError(`template arity mismatch: ${fragments.length} fragments, ${values} values`, "lex");
|
|
40
53
|
}
|
|
41
|
-
tokens.push({ type: "eof", value: "", pos: base });
|
|
54
|
+
tokens.push({ type: "eof", value: "", pos: base, end: base });
|
|
42
55
|
return tokens;
|
|
43
56
|
}
|
|
44
57
|
/** Lex a plain string (no bindings) — used by the string entry point. */
|
|
45
58
|
export function lexString(src) {
|
|
46
59
|
const tokens = [];
|
|
47
60
|
lexFragment(src, 0, tokens);
|
|
48
|
-
|
|
61
|
+
const n = codePointLength(src);
|
|
62
|
+
tokens.push({ type: "eof", value: "", pos: n, end: n });
|
|
49
63
|
return tokens;
|
|
50
64
|
}
|
|
51
65
|
function lexFragment(src, base, out) {
|
|
66
|
+
// One entry per code point, so every index below is a code-point offset.
|
|
67
|
+
const cps = Array.from(src);
|
|
52
68
|
let i = 0;
|
|
53
|
-
const n =
|
|
54
|
-
const
|
|
55
|
-
|
|
69
|
+
const n = cps.length;
|
|
70
|
+
const at = (j) => cps[j] ?? "";
|
|
71
|
+
const text = (from, to) => cps.slice(from, to).join("");
|
|
72
|
+
const push = (type, value, start, end) => {
|
|
73
|
+
out.push({ type, value, pos: base + start, end: base + end });
|
|
56
74
|
};
|
|
57
75
|
while (i < n) {
|
|
58
|
-
const c =
|
|
76
|
+
const c = cps[i];
|
|
59
77
|
if (c === " " || c === "\t" || c === "\n" || c === "\r") {
|
|
60
78
|
i++;
|
|
61
79
|
continue;
|
|
62
80
|
}
|
|
63
81
|
if (c === "(") {
|
|
64
|
-
push("lparen", c, i);
|
|
82
|
+
push("lparen", c, i, i + 1);
|
|
65
83
|
i++;
|
|
66
84
|
continue;
|
|
67
85
|
}
|
|
68
86
|
if (c === ")") {
|
|
69
|
-
push("rparen", c, i);
|
|
87
|
+
push("rparen", c, i, i + 1);
|
|
70
88
|
i++;
|
|
71
89
|
continue;
|
|
72
90
|
}
|
|
73
91
|
if (c === "{") {
|
|
74
|
-
push("lbrace", c, i);
|
|
92
|
+
push("lbrace", c, i, i + 1);
|
|
75
93
|
i++;
|
|
76
94
|
continue;
|
|
77
95
|
}
|
|
78
96
|
if (c === "}") {
|
|
79
|
-
push("rbrace", c, i);
|
|
97
|
+
push("rbrace", c, i, i + 1);
|
|
98
|
+
i++;
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (c === "[") {
|
|
102
|
+
push("lbracket", c, i, i + 1);
|
|
103
|
+
i++;
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (c === "]") {
|
|
107
|
+
push("rbracket", c, i, i + 1);
|
|
80
108
|
i++;
|
|
81
109
|
continue;
|
|
82
110
|
}
|
|
83
111
|
if (c === ",") {
|
|
84
|
-
push("comma", c, i);
|
|
112
|
+
push("comma", c, i, i + 1);
|
|
85
113
|
i++;
|
|
86
114
|
continue;
|
|
87
115
|
}
|
|
88
116
|
if (c === ":") {
|
|
89
|
-
push("colon", c, i);
|
|
117
|
+
push("colon", c, i, i + 1);
|
|
90
118
|
i++;
|
|
91
119
|
continue;
|
|
92
120
|
}
|
|
93
121
|
if (c === "^") {
|
|
94
|
-
push("caret", c, i);
|
|
122
|
+
push("caret", c, i, i + 1);
|
|
95
123
|
i++;
|
|
96
124
|
continue;
|
|
97
125
|
}
|
|
98
126
|
// range operator — `...` (exclusive end) or `..` (inclusive), longest first.
|
|
99
127
|
// Scanned before the dot rule so `a..b` never looks like member navigation,
|
|
100
128
|
// and before the number rule so the bounds lex as separate numbers.
|
|
101
|
-
if (c === "." &&
|
|
102
|
-
if (
|
|
103
|
-
push("range", "...", i);
|
|
129
|
+
if (c === "." && at(i + 1) === ".") {
|
|
130
|
+
if (at(i + 2) === ".") {
|
|
131
|
+
push("range", "...", i, i + 3);
|
|
104
132
|
i += 3;
|
|
105
133
|
continue;
|
|
106
134
|
}
|
|
107
|
-
push("range", "..", i);
|
|
135
|
+
push("range", "..", i, i + 2);
|
|
108
136
|
i += 2;
|
|
109
137
|
continue;
|
|
110
138
|
}
|
|
@@ -113,12 +141,12 @@ function lexFragment(src, base, out) {
|
|
|
113
141
|
// malformed number, reported as such rather than surfacing as a confusing
|
|
114
142
|
// parse error downstream. Any other `.` is member navigation.
|
|
115
143
|
if (c === ".") {
|
|
116
|
-
if (isDigit(
|
|
117
|
-
const end = scanNumberTail(
|
|
118
|
-
const lit =
|
|
144
|
+
if (isDigit(at(i + 1))) {
|
|
145
|
+
const end = scanNumberTail(cps, i + 1, base);
|
|
146
|
+
const lit = text(i, end);
|
|
119
147
|
throw new OqxError(`malformed number ${JSON.stringify(lit)} at ${base + i} — a number starts with a digit (write 0${lit}), and a property name cannot be a digit (there is no index access)`, "lex");
|
|
120
148
|
}
|
|
121
|
-
push("dot", c, i);
|
|
149
|
+
push("dot", c, i, i + 1);
|
|
122
150
|
i++;
|
|
123
151
|
continue;
|
|
124
152
|
}
|
|
@@ -128,20 +156,20 @@ function lexFragment(src, base, out) {
|
|
|
128
156
|
const start = i;
|
|
129
157
|
i++;
|
|
130
158
|
let sval = "";
|
|
131
|
-
while (i < n &&
|
|
132
|
-
if (
|
|
159
|
+
while (i < n && cps[i] !== quote) {
|
|
160
|
+
if (cps[i] === "\\") {
|
|
133
161
|
i++;
|
|
134
|
-
sval += unescape(
|
|
162
|
+
sval += unescape(cps[i]);
|
|
135
163
|
}
|
|
136
164
|
else {
|
|
137
|
-
sval +=
|
|
165
|
+
sval += cps[i];
|
|
138
166
|
}
|
|
139
167
|
i++;
|
|
140
168
|
}
|
|
141
169
|
if (i >= n)
|
|
142
170
|
throw new OqxError(`unterminated string literal at ${base + start}`, "lex");
|
|
143
171
|
i++; // closing quote
|
|
144
|
-
|
|
172
|
+
push("string", sval, start, i);
|
|
145
173
|
continue;
|
|
146
174
|
}
|
|
147
175
|
// number: `digits [ "." digits ] [ ("e"|"E") ["+"|"-"] digits ]`. A `.` is a
|
|
@@ -151,19 +179,19 @@ function lexFragment(src, base, out) {
|
|
|
151
179
|
// NaN or a dangling dot.
|
|
152
180
|
if (isDigit(c)) {
|
|
153
181
|
const start = i;
|
|
154
|
-
i = scanNumberTail(
|
|
155
|
-
push("number",
|
|
182
|
+
i = scanNumberTail(cps, i, base);
|
|
183
|
+
push("number", text(start, i), start, i);
|
|
156
184
|
continue;
|
|
157
185
|
}
|
|
158
186
|
// operators (multi-char first)
|
|
159
|
-
const two =
|
|
187
|
+
const two = c + at(i + 1);
|
|
160
188
|
if (MULTI_OPS.includes(two)) {
|
|
161
|
-
push("op", two, i);
|
|
189
|
+
push("op", two, i, i + 2);
|
|
162
190
|
i += 2;
|
|
163
191
|
continue;
|
|
164
192
|
}
|
|
165
193
|
if (SINGLE_OPS.has(c)) {
|
|
166
|
-
push("op", c, i);
|
|
194
|
+
push("op", c, i, i + 1);
|
|
167
195
|
i++;
|
|
168
196
|
continue;
|
|
169
197
|
}
|
|
@@ -171,10 +199,10 @@ function lexFragment(src, base, out) {
|
|
|
171
199
|
if (isIdentStart(c)) {
|
|
172
200
|
const start = i;
|
|
173
201
|
i++;
|
|
174
|
-
while (i < n && isIdentPart(
|
|
202
|
+
while (i < n && isIdentPart(cps[i]))
|
|
175
203
|
i++;
|
|
176
|
-
const word =
|
|
177
|
-
push(KEYWORDS.has(word) ? "kw" : "ident", word, start);
|
|
204
|
+
const word = text(start, i);
|
|
205
|
+
push(KEYWORDS.has(word) ? "kw" : "ident", word, start, i);
|
|
178
206
|
continue;
|
|
179
207
|
}
|
|
180
208
|
throw new OqxError(`unexpected character ${JSON.stringify(c)} at ${base + i}`, "lex");
|
|
@@ -183,29 +211,30 @@ function lexFragment(src, base, out) {
|
|
|
183
211
|
// Scan a number whose first digit is at `i`; return the index just past it.
|
|
184
212
|
// Throws the malformed-number lex error for a trailing decimal point or an
|
|
185
213
|
// exponent without digits.
|
|
186
|
-
function scanNumberTail(
|
|
214
|
+
function scanNumberTail(cps, i, base = 0) {
|
|
187
215
|
const start = i;
|
|
188
|
-
const n =
|
|
216
|
+
const n = cps.length;
|
|
217
|
+
const at = (j) => cps[j] ?? "";
|
|
189
218
|
const fail = (end, why) => {
|
|
190
|
-
throw new OqxError(`malformed number ${JSON.stringify(
|
|
219
|
+
throw new OqxError(`malformed number ${JSON.stringify(cps.slice(start, end).join(""))} at ${base + start} — ${why}`, "lex");
|
|
191
220
|
};
|
|
192
|
-
while (i < n && isDigit(
|
|
221
|
+
while (i < n && isDigit(cps[i]))
|
|
193
222
|
i++;
|
|
194
|
-
if (
|
|
195
|
-
if (!isDigit(
|
|
223
|
+
if (at(i) === "." && at(i + 1) !== ".") {
|
|
224
|
+
if (!isDigit(at(i + 1)))
|
|
196
225
|
fail(i + 1, "a decimal point needs a digit after it (write 1.0, not 1.)");
|
|
197
226
|
i++;
|
|
198
|
-
while (i < n && isDigit(
|
|
227
|
+
while (i < n && isDigit(cps[i]))
|
|
199
228
|
i++;
|
|
200
229
|
}
|
|
201
|
-
if (
|
|
230
|
+
if (at(i) === "e" || at(i) === "E") {
|
|
202
231
|
let j = i + 1;
|
|
203
|
-
if (
|
|
232
|
+
if (at(j) === "+" || at(j) === "-")
|
|
204
233
|
j++;
|
|
205
|
-
if (!isDigit(
|
|
234
|
+
if (!isDigit(at(j)))
|
|
206
235
|
fail(j, "an exponent needs at least one digit (write 1e5)");
|
|
207
236
|
i = j;
|
|
208
|
-
while (i < n && isDigit(
|
|
237
|
+
while (i < n && isDigit(cps[i]))
|
|
209
238
|
i++;
|
|
210
239
|
}
|
|
211
240
|
return i;
|
|
@@ -225,4 +254,28 @@ function unescape(c) {
|
|
|
225
254
|
export function rawSource(fragments) {
|
|
226
255
|
return fragments.map((s, i) => (i < fragments.length - 1 ? `${s}\${${i}}` : s)).join("");
|
|
227
256
|
}
|
|
257
|
+
/** Convert a code-point span (as every AST node carries) to UTF-16 code-unit
|
|
258
|
+
* offsets over `source` — the units a JavaScript string, a DOM range or an
|
|
259
|
+
* editor API counts in. `source` is the raw source the span was measured over
|
|
260
|
+
* (for a template, `rawSource(strings)`). Offsets past the end clamp. */
|
|
261
|
+
export function toUtf16(span, source) {
|
|
262
|
+
const [start, end] = span;
|
|
263
|
+
let cp = 0;
|
|
264
|
+
let unit = 0;
|
|
265
|
+
let startUnit = -1;
|
|
266
|
+
let endUnit = -1;
|
|
267
|
+
for (const ch of source) {
|
|
268
|
+
if (cp === start)
|
|
269
|
+
startUnit = unit;
|
|
270
|
+
if (cp === end)
|
|
271
|
+
endUnit = unit;
|
|
272
|
+
cp++;
|
|
273
|
+
unit += ch.length;
|
|
274
|
+
}
|
|
275
|
+
if (startUnit < 0)
|
|
276
|
+
startUnit = unit;
|
|
277
|
+
if (endUnit < 0)
|
|
278
|
+
endUnit = unit;
|
|
279
|
+
return [startUnit, endUnit];
|
|
280
|
+
}
|
|
228
281
|
//# sourceMappingURL=lexer.js.map
|
package/dist/lexer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexer.js","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lexer.js","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/optimize/analysis.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,IAAI,EAAU,MAAM,EAAwB,KAAK,EAAE,MAAM,WAAW,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3C;;uEAEuE;AACvE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAY3E;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAO7E;AAED;sCACsC;AACtC,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5E;AA6BD,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAEtD;AAID;;4CAE4C;AAC5C,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/optimize/analysis.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,IAAI,EAAU,MAAM,EAAwB,KAAK,EAAE,MAAM,WAAW,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3C;;uEAEuE;AACvE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAY3E;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAO7E;AAED;sCACsC;AACtC,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5E;AA6BD,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAEtD;AAID;;4CAE4C;AAC5C,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAYhE;AAED;wEACwE;AACxE,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAOlE;AAED;;;;;;uBAMuB;AACvB,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CASjE;AAID;6BAC6B;AAC7B,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE9C;AASD,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAO/C;AAID;;;;UAIU;AACV,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAA0E,CAAC;AAE5H;;;;mEAImE;AACnE,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,CAU3D"}
|
|
@@ -28,9 +28,10 @@ export function exprReadsScopeIn(e, at, upTo) {
|
|
|
28
28
|
return d >= 1 && d <= upTo;
|
|
29
29
|
}
|
|
30
30
|
case "member": return exprReadsScopeIn(e.recv, at, upTo);
|
|
31
|
-
case "index": return exprReadsScopeIn(e.recv, at, upTo) || exprReadsScopeIn(e.index, at, upTo);
|
|
32
31
|
case "call": return (e.recv !== null && exprReadsScopeIn(e.recv, at, upTo)) || e.args.some((a) => exprReadsScopeIn(a, at, upTo));
|
|
33
|
-
case "unary":
|
|
32
|
+
case "unary":
|
|
33
|
+
case "required": return exprReadsScopeIn(e.expr, at, upTo);
|
|
34
|
+
case "op": return opReadsScopeIn(e, at, upTo);
|
|
34
35
|
case "binary":
|
|
35
36
|
case "logical":
|
|
36
37
|
case "in": return exprReadsScopeIn(e.left, at, upTo) || exprReadsScopeIn(e.right, at, upTo);
|
|
@@ -99,8 +100,9 @@ export function exprRaiseFree(e, ctx) {
|
|
|
99
100
|
case "outer": return true;
|
|
100
101
|
case "binding": return e.index < ctx.bindingCount;
|
|
101
102
|
case "call": return false;
|
|
103
|
+
case "required": return false; // raises when absent
|
|
104
|
+
case "op": return opRaiseFree(e, ctx); // a value-position directive projects: never raise-free
|
|
102
105
|
case "member": return exprRaiseFree(e.recv, ctx);
|
|
103
|
-
case "index": return exprRaiseFree(e.recv, ctx) && exprRaiseFree(e.index, ctx);
|
|
104
106
|
case "unary": return exprRaiseFree(e.expr, ctx);
|
|
105
107
|
case "binary":
|
|
106
108
|
case "logical":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/optimize/analysis.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,qDAAqD;AACrD,EAAE;AACF,+EAA+E;AAC/E,4EAA4E;AAC5E,0EAA0E;AAC1E,2BAA2B;AAC3B,4EAA4E;AAC5E,6EAA6E;AAC7E,gFAAgF;AAChF,0EAA0E;AAC1E,6EAA6E;AAC7E,6EAA6E;AAC7E,iFAAiF;AACjF,iFAAiF;AACjF,0EAA0E;AAK1E,kFAAkF;AAElF;;uEAEuE;AACvE,MAAM,UAAU,gBAAgB,CAAC,CAAO,EAAE,EAAU,EAAE,IAAY;IAChE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,KAAK,CAAC;QAAC,KAAK,SAAS,CAAC,CAAC,OAAO,KAAK,CAAC;QACzC,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;QAC3C,KAAK,OAAO,CAAC,CAAC,CAAC;YAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAAC,CAAC;QACtE,KAAK,QAAQ,CAAC,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACzD,KAAK,
|
|
1
|
+
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/optimize/analysis.ts"],"names":[],"mappings":"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"}
|