pegisland
Version:
General PEG-based parser supporting island grammars with lake symbols
41 lines • 1.71 kB
JavaScript
;
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _a, _BaseParsingEnv_createMemoTable;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BaseParsingEnv = void 0;
const Recognizer_1 = require("./Recognizer");
class BaseParsingEnv {
constructor(s) {
this.s = s;
this.recognizer = new Recognizer_1.Recognizer(this);
this.symbolStack = [];
this.memo = __classPrivateFieldGet(BaseParsingEnv, _a, "m", _BaseParsingEnv_createMemoTable).call(BaseParsingEnv, s.length + 1);
}
push() {
this.symbolStack.push({});
}
pop() {
this.symbolStack.pop();
}
has(name) {
return name in this.symbolStack[this.symbolStack.length - 1];
}
lookup(name) {
return this.symbolStack[this.symbolStack.length - 1][name];
}
register(name, value) {
this.symbolStack[this.symbolStack.length - 1][name] = value;
}
parseRule(rule, pos) {
return rule.parse(this, pos);
}
}
exports.BaseParsingEnv = BaseParsingEnv;
_a = BaseParsingEnv, _BaseParsingEnv_createMemoTable = function _BaseParsingEnv_createMemoTable(entryCount) {
return [...Array(entryCount)].map(() => new WeakMap());
};
//# sourceMappingURL=IParsingEnv.js.map