Skip to main content

Type Alias: Ast

type Ast =
| {
k: "lit";
o: number;
v: string | number | boolean | null;
}
| {
k: "ref";
meta: boolean;
o: number;
path: RefSegment[];
root: boolean;
up: number;
}
| {
k: "dot";
o: number;
}
| {
k: "col";
name: string;
o: number;
}
| {
a: Ast;
k: "un";
o: number;
op: UnaryOp;
}
| {
a: Ast;
b: Ast;
k: "bin";
o: number;
op: BinaryOp;
}
| {
a: Ast;
b: Ast;
k: "cond";
o: number;
test: Ast;
}
| {
args: Ast[];
k: "call";
name: string;
o: number;
}
| {
items: Ast[];
k: "arr";
o: number;
}
| {
a: Ast;
k: "member";
name: string;
o: number;
}
| {
a: Ast;
i: Ast;
k: "index";
o: number;
};

Defined in: packages/core/src/expr/ast.ts:33

Union Members

Type Literal

{
k: "lit";
o: number;
v: string | number | boolean | null;
}

Literal: number, string, boolean or null.


Type Literal

{
k: "ref";
meta: boolean;
o: number;
path: RefSegment[];
root: boolean;
up: number;
}

${…} reference. up = number of ../ hops; root = leading /.


Type Literal

{
k: "dot";
o: number;
}

. — the owner element's own value.


Type Literal

{
k: "col";
name: string;
o: number;
}

Bare identifier naming a choice column (legal in choiceFilter only).


Type Literal

{
a: Ast;
k: "un";
o: number;
op: UnaryOp;
}

Type Literal

{
a: Ast;
b: Ast;
k: "bin";
o: number;
op: BinaryOp;
}

Type Literal

{
a: Ast;
b: Ast;
k: "cond";
o: number;
test: Ast;
}

Type Literal

{
args: Ast[];
k: "call";
name: string;
o: number;
}

Type Literal

{
items: Ast[];
k: "arr";
o: number;
}

Type Literal

{
a: Ast;
k: "member";
name: string;
o: number;
}

expr.key — static member access on an object value.


Type Literal

{
a: Ast;
i: Ast;
k: "index";
o: number;
}

expr[i] — dynamic index (1-based for repeat collections).