@igorivaniuk/tlb-parser
Version:
Parse TLB syntax into TypeScript objects
27 lines (26 loc) • 1.15 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildAST = exports.buildGrammar = void 0;
const ohm_js_1 = __importDefault(require("ohm-js"));
const parents_1 = require("./ast/parents");
const tlb_1 = __importDefault(require("./grammar/tlb"));
const parsing_1 = require("./parsing");
function buildGrammar() {
return ohm_js_1.default.grammar(tlb_1.default);
}
exports.buildGrammar = buildGrammar;
function buildAST(input, grammar) {
const semantics = grammar.createSemantics();
semantics.addOperation('root', parsing_1.rootNodes);
semantics.addOperation('Constructor', parsing_1.constructorNodes);
semantics.addOperation('Field', parsing_1.fieldNodes);
semantics.addOperation('Combinator', parsing_1.combinatorNodes);
semantics.addOperation('expr', parsing_1.exprNodes);
const matchResult = grammar.match(input);
const ast = semantics(matchResult)['root']();
return (0, parents_1.withParents)(ast);
}
exports.buildAST = buildAST;