blob: dd40ce97376b25f38ac963e33a6905bcf91fc80f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import { Option } from 'fp-ts/Option'
import { constructors, Union } from './utils'
type _ = never
export type index = number
export type Literal = Union<{
String: string
Number: number
Boolean: boolean
}>
export const Literal = constructors<Literal>()
export type Expr = Union<{
Start: _
End: _
Optional: { expr: Expr }
OneOrMore: { expr: Expr }
MinMax: { expr: Expr, min: index, max: index }
ZeroOrMore: { expr: Expr }
AnyItem: _
Or: { exprs: Expr[] }
AnyString: _
AnyNumber: _
AnyBool: _
Truthy: _
Falsey: _
Group: { exprs: Expr[] }
PropertyMatch: { name: string; expr: Expr }
Literal: Literal
Sequence: { exprs: Expr[] }
}>
export const Expr = constructors<Expr>()
export type ListExpr = [Option<Expr>, Expr, Option<Expr>]
|