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