UNPKG

univac

Version:

Generate AST of lots of common programming languages using antlr4. JavaScript API and CLI tool.

73 lines 2.5 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); /** * Must return the same kind of object than returned by Visitor */ var TreeSitterVisitor = /** @class */ (function () { function TreeSitterVisitor() { } Object.defineProperty(TreeSitterVisitor.prototype, "options", { get: function () { return this._options; }, set: function (value) { this._options = value; }, enumerable: true, configurable: true }); TreeSitterVisitor.prototype.getAst = function () { var _this = this; if (!this.options) { throw new Error('Options not set'); } var node = this.options.root; if (!node) { throw new Error('options.root is mandatory for tree-sitter based parsers and none was given'); } var map = function (sn) { var n = __assign({}, _this.getNode(sn), { children: (sn.children || []).map(map) }); return n; }; return map(node); }; TreeSitterVisitor.prototype.getNode = function (sn) { return { type: sn.type, text: this.options.text ? sn.text : undefined, start: !this.options.omitPosition ? this.getStartPosition(sn) : undefined, stop: !this.options.omitPosition ? this.getStopPosition(sn) : undefined, children: [] }; }; TreeSitterVisitor.prototype.getStopPosition = function (sn) { return { column: sn.endPosition.column + 1, line: sn.endPosition.row + 1, start: sn.endIndex - sn.text.length, stop: sn.endIndex }; }; TreeSitterVisitor.prototype.getStartPosition = function (sn) { return { column: sn.startPosition.column + 1, line: sn.startPosition.row + 1, start: sn.startIndex - sn.text.length, stop: sn.startIndex }; }; return TreeSitterVisitor; }()); exports.TreeSitterVisitor = TreeSitterVisitor; //# sourceMappingURL=visitorTreeSitter.js.map