import parser from './parser'; import WhitespaceControl from './whitespace-control'; import * as Helpers from './helpers'; import { extend } from '../utils'; export { parser }; let yy = {}; extend(yy, Helpers); export function parse(input, options) { // Just return if an already-compiled AST was passed in. if (input.type === 'Program') { return input; } parser.yy = yy; // Altering the shared object here, but this is ok as parser is a sync operation yy.locInfo = function(locInfo) { return new yy.SourceLocation(options && options.srcName, locInfo); }; let strip = new WhitespaceControl(options); return strip.accept(parser.parse(input)); }