35 lines
821 B
Plaintext
35 lines
821 B
Plaintext
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 parseWithoutProcessing(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 ast = parser.parse(input);
|
|
|
|
return ast;
|
|
}
|
|
|
|
export function parse(input, options) {
|
|
let ast = parseWithoutProcessing(input, options);
|
|
let strip = new WhitespaceControl(options);
|
|
|
|
return strip.accept(ast);
|
|
}
|