UNPKG

@igorivaniuk/tlb-parser

Version:

Parse TLB syntax into TypeScript objects

27 lines (26 loc) 1.15 kB
"use strict"; 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;