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