1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import { constructors, Union } from "./utils"
type ExprT = {
Start: null,
End: null,
Optional: { expr: Expr },
OneOrMore: { expr: Expr },
ZeroOrMore: { expr: Expr },
NextItem: null,
AnyItem: null,
Or: { left: Expr, right: Expr[] },
AnyString: null,
AnyNumber: null,
AnyBool: null,
Truthy: null,
Falsey: null,
Group: { exprs: Expr[] },
}
export type Expr = Union<ExprT>
export const Expr = constructors<ExprT>()
|