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