1 |
9bb1e829
|
cagy
|
export as namespace acorn
|
2 |
|
|
export = acorn
|
3 |
|
|
|
4 |
|
|
declare namespace acorn {
|
5 |
|
|
function parse(input: string, options?: Options): Node
|
6 |
|
|
|
7 |
|
|
function parseExpressionAt(input: string, pos?: number, options?: Options): Node
|
8 |
|
|
|
9 |
|
|
function tokenizer(input: string, options?: Options): {
|
10 |
|
|
getToken(): Token
|
11 |
|
|
[Symbol.iterator](): Iterator<Token>
|
12 |
|
|
}
|
13 |
|
|
|
14 |
|
|
interface Options {
|
15 |
|
|
ecmaVersion?: 3 | 5 | 6 | 7 | 8 | 9 | 10 | 2015 | 2016 | 2017 | 2018 | 2019
|
16 |
|
|
sourceType?: 'script' | 'module'
|
17 |
|
|
onInsertedSemicolon?: (lastTokEnd: number, lastTokEndLoc?: Position) => void
|
18 |
|
|
onTrailingComma?: (lastTokEnd: number, lastTokEndLoc?: Position) => void
|
19 |
|
|
allowReserved?: boolean | 'never'
|
20 |
|
|
allowReturnOutsideFunction?: boolean
|
21 |
|
|
allowImportExportEverywhere?: boolean
|
22 |
|
|
allowAwaitOutsideFunction?: boolean
|
23 |
|
|
allowHashBang?: boolean
|
24 |
|
|
locations?: boolean
|
25 |
|
|
onToken?: ((token: Token) => any) | Token[]
|
26 |
|
|
onComment?: ((
|
27 |
|
|
isBlock: boolean, text: string, start: number, end: number, startLoc?: Position,
|
28 |
|
|
endLoc?: Position
|
29 |
|
|
) => void) | Comment[]
|
30 |
|
|
ranges?: boolean
|
31 |
|
|
program?: Node
|
32 |
|
|
sourceFile?: string
|
33 |
|
|
directSourceFile?: string
|
34 |
|
|
preserveParens?: boolean
|
35 |
|
|
}
|
36 |
|
|
|
37 |
|
|
class Parser {
|
38 |
|
|
constructor(options: Options, input: string, startPos?: number)
|
39 |
|
|
parse(this: Parser): Node
|
40 |
|
|
static parse(this: typeof Parser, input: string, options?: Options): Node
|
41 |
|
|
static parseExpressionAt(this: typeof Parser, input: string, pos: number, options?: Options): Node
|
42 |
|
|
static tokenizer(this: typeof Parser, input: string, options?: Options): {
|
43 |
|
|
getToken(): Token
|
44 |
|
|
[Symbol.iterator](): Iterator<Token>
|
45 |
|
|
}
|
46 |
|
|
static extend(this: typeof Parser, ...plugins: ((BaseParser: typeof Parser) => typeof Parser)[]): typeof Parser
|
47 |
|
|
}
|
48 |
|
|
|
49 |
|
|
interface Position { line: number; column: number; offset: number }
|
50 |
|
|
|
51 |
|
|
const defaultOptions: Options
|
52 |
|
|
|
53 |
|
|
function getLineInfo(input: string, offset: number): Position
|
54 |
|
|
|
55 |
|
|
class SourceLocation {
|
56 |
|
|
start: Position
|
57 |
|
|
end: Position
|
58 |
|
|
source?: string | null
|
59 |
|
|
constructor(p: Parser, start: Position, end: Position)
|
60 |
|
|
}
|
61 |
|
|
|
62 |
|
|
class Node {
|
63 |
|
|
type: string
|
64 |
|
|
start: number
|
65 |
|
|
end: number
|
66 |
|
|
loc?: SourceLocation
|
67 |
|
|
sourceFile?: string
|
68 |
|
|
range?: [number, number]
|
69 |
|
|
constructor(parser: Parser, pos: number, loc?: SourceLocation)
|
70 |
|
|
}
|
71 |
|
|
|
72 |
|
|
class TokenType {
|
73 |
|
|
label: string
|
74 |
|
|
keyword: string
|
75 |
|
|
beforeExpr: boolean
|
76 |
|
|
startsExpr: boolean
|
77 |
|
|
isLoop: boolean
|
78 |
|
|
isAssign: boolean
|
79 |
|
|
prefix: boolean
|
80 |
|
|
postfix: boolean
|
81 |
|
|
binop: number
|
82 |
|
|
updateContext?: (prevType: TokenType) => void
|
83 |
|
|
constructor(label: string, conf?: any)
|
84 |
|
|
}
|
85 |
|
|
|
86 |
|
|
const tokTypes: {
|
87 |
|
|
num: TokenType
|
88 |
|
|
regexp: TokenType
|
89 |
|
|
string: TokenType
|
90 |
|
|
name: TokenType
|
91 |
|
|
eof: TokenType
|
92 |
|
|
bracketL: TokenType
|
93 |
|
|
bracketR: TokenType
|
94 |
|
|
braceL: TokenType
|
95 |
|
|
braceR: TokenType
|
96 |
|
|
parenL: TokenType
|
97 |
|
|
parenR: TokenType
|
98 |
|
|
comma: TokenType
|
99 |
|
|
semi: TokenType
|
100 |
|
|
colon: TokenType
|
101 |
|
|
dot: TokenType
|
102 |
|
|
question: TokenType
|
103 |
|
|
arrow: TokenType
|
104 |
|
|
template: TokenType
|
105 |
|
|
ellipsis: TokenType
|
106 |
|
|
backQuote: TokenType
|
107 |
|
|
dollarBraceL: TokenType
|
108 |
|
|
eq: TokenType
|
109 |
|
|
assign: TokenType
|
110 |
|
|
incDec: TokenType
|
111 |
|
|
prefix: TokenType
|
112 |
|
|
logicalOR: TokenType
|
113 |
|
|
logicalAND: TokenType
|
114 |
|
|
bitwiseOR: TokenType
|
115 |
|
|
bitwiseXOR: TokenType
|
116 |
|
|
bitwiseAND: TokenType
|
117 |
|
|
equality: TokenType
|
118 |
|
|
relational: TokenType
|
119 |
|
|
bitShift: TokenType
|
120 |
|
|
plusMin: TokenType
|
121 |
|
|
modulo: TokenType
|
122 |
|
|
star: TokenType
|
123 |
|
|
slash: TokenType
|
124 |
|
|
starstar: TokenType
|
125 |
|
|
_break: TokenType
|
126 |
|
|
_case: TokenType
|
127 |
|
|
_catch: TokenType
|
128 |
|
|
_continue: TokenType
|
129 |
|
|
_debugger: TokenType
|
130 |
|
|
_default: TokenType
|
131 |
|
|
_do: TokenType
|
132 |
|
|
_else: TokenType
|
133 |
|
|
_finally: TokenType
|
134 |
|
|
_for: TokenType
|
135 |
|
|
_function: TokenType
|
136 |
|
|
_if: TokenType
|
137 |
|
|
_return: TokenType
|
138 |
|
|
_switch: TokenType
|
139 |
|
|
_throw: TokenType
|
140 |
|
|
_try: TokenType
|
141 |
|
|
_var: TokenType
|
142 |
|
|
_const: TokenType
|
143 |
|
|
_while: TokenType
|
144 |
|
|
_with: TokenType
|
145 |
|
|
_new: TokenType
|
146 |
|
|
_this: TokenType
|
147 |
|
|
_super: TokenType
|
148 |
|
|
_class: TokenType
|
149 |
|
|
_extends: TokenType
|
150 |
|
|
_export: TokenType
|
151 |
|
|
_import: TokenType
|
152 |
|
|
_null: TokenType
|
153 |
|
|
_true: TokenType
|
154 |
|
|
_false: TokenType
|
155 |
|
|
_in: TokenType
|
156 |
|
|
_instanceof: TokenType
|
157 |
|
|
_typeof: TokenType
|
158 |
|
|
_void: TokenType
|
159 |
|
|
_delete: TokenType
|
160 |
|
|
}
|
161 |
|
|
|
162 |
|
|
class TokContext {
|
163 |
|
|
constructor(token: string, isExpr: boolean, preserveSpace: boolean, override?: (p: Parser) => void)
|
164 |
|
|
}
|
165 |
|
|
|
166 |
|
|
const tokContexts: {
|
167 |
|
|
b_stat: TokContext
|
168 |
|
|
b_expr: TokContext
|
169 |
|
|
b_tmpl: TokContext
|
170 |
|
|
p_stat: TokContext
|
171 |
|
|
p_expr: TokContext
|
172 |
|
|
q_tmpl: TokContext
|
173 |
|
|
f_expr: TokContext
|
174 |
|
|
}
|
175 |
|
|
|
176 |
|
|
function isIdentifierStart(code: number, astral?: boolean): boolean
|
177 |
|
|
|
178 |
|
|
function isIdentifierChar(code: number, astral?: boolean): boolean
|
179 |
|
|
|
180 |
|
|
interface AbstractToken {
|
181 |
|
|
}
|
182 |
|
|
|
183 |
|
|
interface Comment extends AbstractToken {
|
184 |
|
|
type: string
|
185 |
|
|
value: string
|
186 |
|
|
start: number
|
187 |
|
|
end: number
|
188 |
|
|
loc?: SourceLocation
|
189 |
|
|
range?: [number, number]
|
190 |
|
|
}
|
191 |
|
|
|
192 |
|
|
class Token {
|
193 |
|
|
type: TokenType
|
194 |
|
|
value: any
|
195 |
|
|
start: number
|
196 |
|
|
end: number
|
197 |
|
|
loc?: SourceLocation
|
198 |
|
|
range?: [number, number]
|
199 |
|
|
constructor(p: Parser)
|
200 |
|
|
}
|
201 |
|
|
|
202 |
|
|
function isNewLine(code: number): boolean
|
203 |
|
|
|
204 |
|
|
const lineBreak: RegExp
|
205 |
|
|
|
206 |
|
|
const lineBreakG: RegExp
|
207 |
|
|
|
208 |
|
|
const version: string
|
209 |
|
|
}
|