1 | var util = require('util');
|
2 | var esprima = require('esprima');
|
3 | var syntax = require('./syntax');
|
4 | var traverse = require('./traverse');
|
5 |
|
6 | exports.parse = function parse(code) {
|
7 | var options = {
|
8 |
|
9 | range: true,
|
10 | token: true,
|
11 | comment: true,
|
12 | };
|
13 |
|
14 | try {
|
15 | var ast = esprima.parse(code, options);
|
16 | } catch (err) {
|
17 | throw new Error(err.message + ' in ' + global.currentFilename);
|
18 | }
|
19 |
|
20 |
|
21 | ast = new syntax.Program(ast.body, ast.comments);
|
22 |
|
23 | traverse(ast, syntax.factory);
|
24 |
|
25 | return ast;
|
26 | }
|
27 |
|