parjs
Version:
A parser-combinator library for JavaScript.
85 lines (84 loc) • 1.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @module parjs
*/
/** */
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 = 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 trace_visualizer_1.visualizeTrace(this.trace);
}
/**
* Whether this result is an OK.
*/
get isOk() {
return false;
}
}
exports.ParjsFailure = ParjsFailure;
/**
* Namespace that contains the different reply kinds/error levels.
*/
var ResultKind;
(function (ResultKind) {
/**
* An Unknown reply.
*/
ResultKind.Unknown = "Unknown";
/**
* An OK reply.
*/
ResultKind.Ok = "OK";
/**
* A soft failure reply.
*/
ResultKind.SoftFail = "Soft";
/**
* A hard failure reply.
*/
ResultKind.HardFail = "Hard";
/**
* A fatal failure reply.
*/
ResultKind.FatalFail = "Fatal";
})(ResultKind = exports.ResultKind || (exports.ResultKind = {}));
//# sourceMappingURL=result.js.map