tibu
Version:
tibu is a low fuss high fun PEG parser generator/DSL written in TypeScript
62 lines • 4.43 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Input = void 0;
var tibu_1 = require("./tibu");
var Input = /** @class */ (function () {
function Input(source) {
this.tokens = new tibu_1.ResultTokens();
this.tokenyielders = [];
this.source = source;
this.location = 0;
this.state = 0;
}
Input.prototype.indexOf = function (pattern) {
if (typeof (pattern) === "string") {
return this.source.substr(this.location).indexOf(pattern);
}
else {
var r = pattern.exec(this.source.substr(this.location));
if (r === null) {
return { index: -1 };
}
return { value: r[0], index: r.index, length: r[0].length };
}
};
Input.prototype.begin = function (tokens) {
this.tokens = tokens;
this.tokenyielders = [];
return this.location;
};
Input.prototype.end = function () {
// do nothing
};
Input.prototype.rewind = function (loc) {
this.location = loc;
this.tokens.dropafter(loc);
};
Input.prototype.consume = function (predicate) {
var startloc = this.location;
var result = predicate(this);
if (result.__rule__) {
return this.consume(tibu_1.Tibu.all(result));
}
var output = tibu_1.Result.fault(this);
if (result.success === false) {
this.location = startloc;
}
else {
this.location = result.endloc;
if (predicate.__token__) {
this.yieldtoken(predicate.__token__, result);
}
output = result;
}
return output;
};
Input.prototype.yieldtoken = function (name, result) {
this.tokens.push(name, result);
};
return Input;
}());
exports.Input = Input;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlidS5JbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbInRpYnUuSW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQW9EO0FBR3BEO0lBTUksZUFBWSxNQUFhO1FBRnpCLFdBQU0sR0FBZ0IsSUFBSSxtQkFBWSxFQUFFLENBQUM7UUFDekMsa0JBQWEsR0FBUyxFQUFFLENBQUM7UUFFckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUNELHVCQUFPLEdBQVAsVUFBUSxPQUF1QjtRQUMzQixJQUFJLE9BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDOUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdEO2FBQU07WUFDSCxJQUFNLENBQUMsR0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDWixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDeEI7WUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzdEO0lBQ0wsQ0FBQztJQUNELHFCQUFLLEdBQUwsVUFBTSxNQUFtQjtRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUNELG1CQUFHLEdBQUg7UUFDSSxhQUFhO0lBQ2pCLENBQUM7SUFDRCxzQkFBTSxHQUFOLFVBQU8sR0FBVTtRQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCx1QkFBTyxHQUFQLFVBQVEsU0FBd0I7UUFDNUIsSUFBTSxRQUFRLEdBQVUsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN0QyxJQUFNLE1BQU0sR0FBVSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSyxNQUFjLENBQUMsUUFBUSxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFJLENBQUMsR0FBRyxDQUFDLE1BQWEsQ0FBQyxDQUFDLENBQUM7U0FDaEQ7UUFDRCxJQUFJLE1BQU0sR0FBVyxhQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDNUI7YUFBTTtZQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUM5QixJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNoRDtZQUNELE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDbkI7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBQ0QsMEJBQVUsR0FBVixVQUFXLElBQVcsRUFBRSxNQUFhO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0wsWUFBQztBQUFELENBQUMsQUF2REQsSUF1REM7QUF2RFksc0JBQUsifQ==