using CanonSharp.Combinator.Abstractions;
namespace CanonSharp.Combinator.Parsers.Bases;
/// 
/// 映射解析器
/// 提供一个函数修改上游解析器返回的结果
/// 
/// 上游解析器
/// 修改上游解析器返回结果的
/// 
/// 
/// 
internal sealed class MapParser(
    Parser parser,
    Func func) : Parser
{
    internal override ParseResult Run(TState state,
        Func, ParseResult> continuation)
        => parser.Run(state, result => continuation(result.Map(func)));
}