public sealed override InternalResult <Unit> Parse(ref ParseState <TToken> state) { if (state.HasCurrent) { state.Error = new InternalError <TToken>( Maybe.Just(state.Current), false, state.Location, null ); state.AddExpected(new Expected <TToken>()); return(InternalResult.Failure <Unit>(false)); } return(InternalResult.Success(Unit.Value, false)); }
public override InternalResult <U> Parse(ref ParseState <TToken> state) { var start = state.Location; state.PushBookmark(); // don't discard input buffer var result = _parser.Parse(ref state); if (!result.Success) { state.PopBookmark(); return(InternalResult.Failure <U>(result.ConsumedInput)); } var delta = state.Location - start; var inputRange = new InputRange <TToken>(state.LookBehind(delta), new Range(start, state.Location)); var val = _selector(inputRange, result.Value); state.PopBookmark(); return(InternalResult.Success <U>(val, result.ConsumedInput)); }
public override InternalResult <SourcePos> Parse(ref ParseState <TToken> state) => InternalResult.Success(state.ComputeSourcePos(), false);
public sealed override InternalResult <T> Parse(ref ParseState <TToken> state) => InternalResult.Success <T>(_value, false);
internal override InternalResult <SourcePos> Parse(ref ParseState <TToken> state) => InternalResult.Success(state.SourcePos, false);
internal override InternalResult <int> Parse(ref ParseState <TToken> state) => InternalResult.Success(state.Location, false);