namespace CanonSharp.Combinator.Abstractions;
///
/// 成功解析结果基类
///
/// 输入流类型
/// 实际的解析结果类型
public interface ISuccessfulResult : IParseResult
{
///
/// 运行下一个解析器
///
/// 下一个解析器
/// 处理解析结果的后继函数
/// 下一个解析器返回的结果类型
/// 最终的结果类型
/// 最终的结果
protected IParseResult RunNext(IParser parser,
Func, IParseResult> continuation);
IParseResult IParseResult.Next(
Func> nextParser,
Func, IParseResult> continuation)
=> RunNext(nextParser(Value), continuation);
TResult IParseResult.CaseOf(Func, TResult> successfulHandler,
Func, TResult> failedHandler)
=> successfulHandler(this);
}