using CanonSharp.Combinator.Abstractions; namespace CanonSharp.Combinator.Parsers.Modifiers; /// /// 对结果运行指定操作,但是不做修改操作的解析器 /// /// 上游解析器 /// 对成功结果的操作 /// 对失败结果的操作 /// 输入流类型 /// 解析结果类型 internal sealed class DoParser( IParser parser, Action succeed, Action> fail) : ModifiedParser(parser) { protected override IParseResult Succeed(TState state, ISuccessfulResult successfulResult) { succeed(successfulResult.Value); return successfulResult; } protected override IParseResult Fail(TState state, IFailedResult failedResult) { fail(failedResult); return failedResult; } }