public override ReadResult <Terminal> Read(ITextScanner scanner) { if (scanner == null) { throw new ArgumentNullException(nameof(scanner)); } var context = scanner.GetContext(); MatchResult result = null; // ReSharper disable once ForCanBeConvertedToForeach for (var i = 0; i < valueRange.Length; i++) { var c = valueRange[i]; result = scanner.TryMatch(c); if (result.EndOfInput) { return(ReadResult <Terminal> .FromSyntaxError(SyntaxError.FromMatchResult(result, context))); } if (result.Success) { return(ReadResult <Terminal> .FromResult(new Terminal(result.Text, context))); } } Debug.Assert(result != null, "result != null"); return(ReadResult <Terminal> .FromSyntaxError(SyntaxError.FromMatchResult(result, context))); }
public override ReadResult <Terminal> Read(ITextScanner scanner) { if (scanner == null) { throw new ArgumentNullException(nameof(scanner)); } var context = scanner.GetContext(); var result = scanner.TryMatch(terminal, comparer); if (result.Success) { return(ReadResult <Terminal> .FromResult(new Terminal(result.Text, context))); } return(ReadResult <Terminal> .FromSyntaxError(SyntaxError.FromMatchResult(result, context))); }