/* */ "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)); }