Blame view

node_modules/recast/parsers/acorn.js 857 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
30
31
32
33
34
35
  "use strict";
  
  // This module is suitable for passing as options.parser when calling
  // recast.parse to process JavaScript code with Acorn:
  //
  //   const ast = recast.parse(source, {
  //     parser: require("recast/parsers/acorn")
  //   });
  //
  const getOption = require("../lib/util.js").getOption;
  
  exports.parse = function parse(source, options) {
    const comments = [];
    const tokens = [];
    const ast = require("acorn").parse(source, {
      allowHashBang: true,
      allowImportExportEverywhere: true,
      allowReturnOutsideFunction: true,
      ecmaVersion: getOption(options, "ecmaVersion", 8),
      sourceType: getOption(options, "sourceType", "module"),
      locations: true,
      onComment: comments,
      onToken: tokens,
    });
  
    if (! ast.comments) {
      ast.comments = comments;
    }
  
    if (! ast.tokens) {
      ast.tokens = tokens;
    }
  
    return ast;
  };