using CanonSharp.Combinator.Abstractions;
namespace CanonSharp.Combinator.Parsers;
///
/// 解析器原型基类
/// 实际上就是处理了一个后继调用
///
/// 输入流类型
/// 解析结果的类型
public abstract class PrimitiveParser : IParser
{
///
/// 运行解析器 返回解析结果
///
/// 当前输入流的状态
/// 输入流状态的类型
/// 解析结果
protected abstract IParseResult Run(TState state)
where TState : IReadState;
public IParseResult Run(TState state,
Func, IParseResult> continuation)
where TState : IReadState
=> continuation(Run(state));
}