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); }