Exemple #1
0
 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));
 }
Exemple #2
0
        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));
        }
Exemple #3
0
 public override InternalResult <SourcePos> Parse(ref ParseState <TToken> state)
 => InternalResult.Success(state.ComputeSourcePos(), false);
Exemple #4
0
 public sealed override InternalResult <T> Parse(ref ParseState <TToken> state)
 => InternalResult.Success <T>(_value, false);
Exemple #5
0
 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);