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