UNPKG

parjs

Version:

A parser-combinator library for JavaScript.

65 lines (64 loc) 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * @module parjs/internal */ /** */ const result_1 = require("./result"); function worseThan(a, b) { if (a === result_1.ResultKind.Ok) { return b === result_1.ResultKind.Ok; } if (a === result_1.ResultKind.SoftFail) { return b === result_1.ResultKind.SoftFail || b === result_1.ResultKind.Ok; } if (a === result_1.ResultKind.HardFail) { return b !== result_1.ResultKind.FatalFail; } if (a === result_1.ResultKind.FatalFail) { return true; } } /** * Basic implementation of the ParsingState interface. */ class BasicParsingState { constructor(input, userState) { this.input = input; this.userState = userState; this.position = 0; this.stack = []; this.initialUserState = undefined; this.value = undefined; } get isOk() { return this.kind === result_1.ResultKind.Ok; } get isSoft() { return this.kind === result_1.ResultKind.SoftFail; } get isHard() { return this.kind === result_1.ResultKind.HardFail; } get isFatal() { return this.kind === result_1.ResultKind.FatalFail; } atLeast(kind) { return worseThan(this.kind, kind); } atMost(kind) { return worseThan(kind, this.kind); } } exports.BasicParsingState = BasicParsingState; // tslint:disable:naming-convention /** * A unique object value indicating the reuslt of a failed parser. */ exports.FAIL_RESULT = Object.create(null); /** * A unique object value indicating that a parser did not initialize the ParsingState's value property before terminating, which is an error. */ exports.UNINITIALIZED_RESULT = Object.create(null); // tslint:enable:naming-convention //# sourceMappingURL=state.js.map