using CanonSharp.Combinator.Abstractions;
namespace CanonSharp.Combinator.Parsers.Bases;
///
/// 单子解析器
///
/// 上游解析器
/// 下游解析器生成函数
/// 输入流类型
/// 上游解析器结果类型
/// 下游解析器结果类型
internal sealed class BindParser(
Parser parser,
Func> next) : Parser
{
internal override ParseResult Run(TState state,
Func, ParseResult> continuation)
=> parser.Run(state, result => result.Next(next, continuation));
}