parjs
Version:
Library for building parsers using combinators.
68 lines • 2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResultKind = exports.isParjsResult = exports.isParjsFailure = exports.isParjsSuccess = exports.ParjsFailure = exports.ParjsSuccess = void 0;
const errors_1 = require("../errors");
const trace_visualizer_1 = require("./trace-visualizer");
/** Indicates a success reply and contains the value and other information. */
class ParjsSuccess {
constructor(value) {
this.value = value;
/** The kind of the result: OK, Soft, Hard, Fatal. */
this.kind = exports.ResultKind.Ok;
}
toString() {
return `Success: ${this.value}`;
}
/** Whether this result is an OK. */
get isOk() {
return true;
}
}
exports.ParjsSuccess = ParjsSuccess;
/** A failure result from a Parjs parser. */
class ParjsFailure {
constructor(trace) {
this.trace = trace;
}
get value() {
throw new errors_1.ParjsParsingFailure(this);
}
get kind() {
return this.trace.kind;
}
get reason() {
return this.trace.reason;
}
toString() {
return (0, trace_visualizer_1.visualizeTrace)(this.trace);
}
/** Whether this result is an OK. */
get isOk() {
return false;
}
}
exports.ParjsFailure = ParjsFailure;
function isParjsSuccess(x) {
return x instanceof ParjsSuccess;
}
exports.isParjsSuccess = isParjsSuccess;
function isParjsFailure(x) {
return x instanceof ParjsFailure;
}
exports.isParjsFailure = isParjsFailure;
function isParjsResult(x) {
return x instanceof ParjsSuccess || x instanceof ParjsFailure;
}
exports.isParjsResult = isParjsResult;
/** Namespace that contains the different reply kinds/error levels. */
exports.ResultKind = {
/** An OK reply. */
Ok: "OK",
/** A soft failure reply. */
SoftFail: "Soft",
/** A hard failure reply. */
HardFail: "Hard",
/** A fatal failure reply. */
FatalFail: "Fatal"
};
//# sourceMappingURL=result.js.map