-
Notifications
You must be signed in to change notification settings - Fork 11
/
api.d.ts
124 lines (104 loc) · 2.83 KB
/
api.d.ts
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
export as namespace regexpToAst
export const VERSION: number
export class RegExpParser {
pattern: (input: string) => RegExpPattern
}
export interface IRegExpAST {
type: string
loc: { begin: number; end: number }
}
export interface RegExpPattern extends IRegExpAST {
type: "Pattern"
flags: RegExpFlags
value: Disjunction
}
export interface RegExpFlags extends IRegExpAST {
type: "Flags"
global: boolean
ignoreCase: boolean
multiLine: boolean
unicode: boolean
sticky: boolean
}
export interface Disjunction extends IRegExpAST {
type: "Disjunction"
value: Alternative[]
}
export interface Alternative extends IRegExpAST {
type: "Alternative"
value: Term[]
}
export type Term = Atom | Assertion
export interface Assertion extends IRegExpAST {
type:
| "StartAnchor"
| "EndAnchor"
| "WordBoundary"
| "NonWordBoundary"
| "Lookahead"
| "NegativeLookahead"
value?: Disjunction
}
export type Atom = Character | Set | Group | GroupBackReference
export interface Character extends IRegExpAST {
type: "Character"
value: number
quantifier?: Quantifier
}
export type Range = { from: number; to: number }
export interface Set extends IRegExpAST {
type: "Set"
complement: boolean
value: (number | Range)[]
quantifier?: Quantifier
}
export interface Group extends IRegExpAST {
type: "Group"
value: Disjunction
capturing: boolean
idx?: number
quantifier?: Quantifier
}
export interface GroupBackReference extends IRegExpAST {
type: "GroupBackReference"
value: number
quantifier?: Quantifier
}
export interface Quantifier extends IRegExpAST {
type: "Quantifier"
atLeast: number
atMost: number
greedy: boolean
}
export class BaseRegExpVisitor {
/**
* The entry point visitor method.
* This will dispatch to the specific visitor method.
*/
visit(node: IRegExpAST)
/**
* The entry point for visiting the children of a node.
* Override this to filter the types of children visited
* or to support new types of children in extended ASTs.
*/
visitChildren(node: IRegExpAST)
/**
* The specific visitor methods
* Override some of these of create custom visitors.
*/
visitPattern(node: RegExpPattern)
visitFlags(node: RegExpFlags)
visitDisjunction(node: Disjunction)
visitAlternative(node: Alternative)
visitStartAnchor(node: Assertion)
visitEndAnchor(node: Assertion)
visitWordBoundary(node: Assertion)
visitNonWordBoundary(node: Assertion)
visitLookahead(node: Assertion)
visitNegativeLookahead(node: Assertion)
visitCharacter(node: Character)
visitSet(node: Set)
visitGroup(Node: Group)
visitGroupBackReference(Node: GroupBackReference)
visitQuantifier(Node: Quantifier)
}