using CanonSharp.Combinator.Abstractions;
namespace CanonSharp.Combinator.Parsers.Primitives;
///
/// 直接成功的解析器
///
/// 解析成功返回的值
/// 输入流类型
/// 解析成功返回值的类型
internal sealed class PureParser(T value) : PrimitiveParser
{
protected override IParseResult Run(TState state)
=> ParseResultBuilder.Succeed(value, state);
}
///
/// 按照输入状态返回结果的始终成功解析器
///
/// 按照输入状态返回解析结果的函数
/// 输入流类型
/// 解析成功返回值的类型
internal sealed class DelayedPureParser(Func, T> valueFunc) : PrimitiveParser
{
protected override IParseResult Run(TState state)
=> ParseResultBuilder.Succeed(valueFunc(state), state);
}