@roku-road/bright
Version:
Blazing fast parser for BrightScript that gives you ESTree like AST
31 lines (30 loc) • 1.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ASTVisitor_1 = require("./ASTVisitor");
exports.ASTVisitor = ASTVisitor_1.ASTVisitor;
const BaseASTWalker_1 = require("./BaseASTWalker");
exports.BaseASTWalker = BaseASTWalker_1.BaseASTWalker;
const Parser_1 = require("./Parser");
exports.parse = Parser_1.parse;
exports.RokuBRSParser = Parser_1.RokuBRSParser;
const Tokens_1 = require("./Tokens");
exports.ALL_TOKENS = Tokens_1.ALL_TOKENS;
const VisitorKeys_1 = require("./VisitorKeys");
exports.visitorKeys = VisitorKeys_1.visitorKeys;
const visitor = new ASTVisitor_1.ASTVisitor();
const ast = (source, type = 'Program') => {
const { value, tokens, parseErrors, lexErrors } = Parser_1.parse(source, type);
const props = { tokens, parseErrors, lexErrors };
const tree = visitor.visit(value, props);
if (parseErrors.length) {
const { message, location } = parseErrors[0];
const column = location.start.column;
const line = location.start.line;
const err = new SyntaxError(`${message} at ${line}:${column}`);
err.lineNumber = line;
err.column = column;
throw err;
}
return tree;
};
exports.ast = ast;