"use strict";
|
|
Object.defineProperty(exports, "__esModule", {
|
value: true
|
});
|
exports.default = void 0;
|
var _options = require("../options");
|
var _statement = require("./statement");
|
var _scope = require("../util/scope");
|
class Parser extends _statement.default {
|
constructor(options, input) {
|
options = (0, _options.getOptions)(options);
|
super(options, input);
|
this.options = options;
|
this.initializeScopes();
|
this.plugins = pluginsMap(this.options.plugins);
|
this.filename = options.sourceFilename;
|
}
|
getScopeHandler() {
|
return _scope.default;
|
}
|
parse() {
|
this.enterInitialScopes();
|
const file = this.startNode();
|
const program = this.startNode();
|
this.nextToken();
|
file.errors = null;
|
this.parseTopLevel(file, program);
|
file.errors = this.state.errors;
|
return file;
|
}
|
}
|
exports.default = Parser;
|
function pluginsMap(plugins) {
|
const pluginMap = new Map();
|
for (const plugin of plugins) {
|
const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}];
|
if (!pluginMap.has(name)) pluginMap.set(name, options || {});
|
}
|
return pluginMap;
|
}
|
|
//# sourceMappingURL=index.js.map
|