128 lines
3.6 KiB
JavaScript
128 lines
3.6 KiB
JavaScript
/* */
|
|
"format cjs";
|
|
"use strict";
|
|
|
|
var _babelToolsProtectJs2 = require("./../../babel/tools/protect.js");
|
|
|
|
var _babelToolsProtectJs3 = _interopRequireDefault(_babelToolsProtectJs2);
|
|
|
|
exports.__esModule = true;
|
|
exports.parse = parse;
|
|
exports.parseExpressionAt = parseExpressionAt;
|
|
exports.tokenizer = tokenizer;
|
|
// Acorn is a tiny, fast JavaScript parser written in JavaScript.
|
|
//
|
|
// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and
|
|
// various contributors and released under an MIT license.
|
|
//
|
|
// Git repositories for Acorn are available at
|
|
//
|
|
// http://marijnhaverbeke.nl/git/acorn
|
|
// https://github.com/marijnh/acorn.git
|
|
//
|
|
// Please use the [github bug tracker][ghbt] to report issues.
|
|
//
|
|
// [ghbt]: https://github.com/marijnh/acorn/issues
|
|
//
|
|
// This file defines the main parser interface. The library also comes
|
|
// with a [error-tolerant parser][dammit] and an
|
|
// [abstract syntax tree walker][walk], defined in other files.
|
|
//
|
|
// [dammit]: acorn_loose.js
|
|
// [walk]: util/walk.js
|
|
|
|
var _state = require("./state");
|
|
|
|
var _options = require("./options");
|
|
|
|
require("./parseutil");
|
|
|
|
require("./statement");
|
|
|
|
require("./lval");
|
|
|
|
require("./expression");
|
|
|
|
require("./lookahead");
|
|
|
|
_babelToolsProtectJs3["default"](module);
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
|
|
exports.Parser = _state.Parser;
|
|
exports.plugins = _state.plugins;
|
|
exports.defaultOptions = _options.defaultOptions;
|
|
|
|
var _location = require("./location");
|
|
|
|
exports.SourceLocation = _location.SourceLocation;
|
|
exports.getLineInfo = _location.getLineInfo;
|
|
|
|
var _node = require("./node");
|
|
|
|
exports.Node = _node.Node;
|
|
|
|
var _tokentype = require("./tokentype");
|
|
|
|
exports.TokenType = _tokentype.TokenType;
|
|
exports.tokTypes = _tokentype.types;
|
|
|
|
var _tokencontext = require("./tokencontext");
|
|
|
|
exports.TokContext = _tokencontext.TokContext;
|
|
exports.tokContexts = _tokencontext.types;
|
|
|
|
var _identifier = require("./identifier");
|
|
|
|
exports.isIdentifierChar = _identifier.isIdentifierChar;
|
|
exports.isIdentifierStart = _identifier.isIdentifierStart;
|
|
|
|
var _tokenize = require("./tokenize");
|
|
|
|
exports.Token = _tokenize.Token;
|
|
|
|
var _whitespace = require("./whitespace");
|
|
|
|
exports.isNewLine = _whitespace.isNewLine;
|
|
exports.lineBreak = _whitespace.lineBreak;
|
|
exports.lineBreakG = _whitespace.lineBreakG;
|
|
var version = "1.0.0";
|
|
|
|
exports.version = version;
|
|
// The main exported interface (under `self.acorn` when in the
|
|
// browser) is a `parse` function that takes a code string and
|
|
// returns an abstract syntax tree as specified by [Mozilla parser
|
|
// API][api].
|
|
//
|
|
// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API
|
|
|
|
function parse(input, options) {
|
|
var p = parser(options, input);
|
|
var startPos = p.options.locations ? [p.pos, p.curPosition()] : p.pos;
|
|
p.nextToken();
|
|
return p.parseTopLevel(p.options.program || p.startNodeAt(startPos));
|
|
}
|
|
|
|
// This function tries to parse a single expression at a given
|
|
// offset in a string. Useful for parsing mixed-language formats
|
|
// that embed JavaScript expressions.
|
|
|
|
function parseExpressionAt(input, pos, options) {
|
|
var p = parser(options, input, pos);
|
|
p.nextToken();
|
|
return p.parseExpression();
|
|
}
|
|
|
|
// Acorn is organized as a tokenizer and a recursive-descent parser.
|
|
// The `tokenize` export provides an interface to the tokenizer.
|
|
// Because the tokenizer is optimized for being efficiently used by
|
|
// the Acorn parser itself, this interface is somewhat crude and not
|
|
// very modular.
|
|
|
|
function tokenizer(input, options) {
|
|
return parser(options, input);
|
|
}
|
|
|
|
function parser(options, input) {
|
|
return new _state.Parser(_options.getOptions(options), String(input));
|
|
} |