Blame view

node_modules/recast/parsers/esprima.js 712 Bytes
ce4c83ff   wxy   初始提交
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
  "use strict";
  
  // This module is suitable for passing as options.parser when calling
  // recast.parse to process ECMAScript code with Esprima:
  //
  //   const ast = recast.parse(source, {
  //     parser: require("recast/parsers/esprima")
  //   });
  //
  const getOption = require("../lib/util.js").getOption;
  
  exports.parse = function (source, options) {
    const comments = [];
    const ast = require("esprima").parse(source, {
      loc: true,
      locations: true,
      comment: true,
      onComment: comments,
      range: getOption(options, "range", false),
      tolerant: getOption(options, "tolerant", true),
      tokens: true
    });
  
    if (! Array.isArray(ast.comments)) {
      ast.comments = comments;
    }
  
    return ast;
  };