Esempio n. 1
0
        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)));
        }
Esempio n. 2
0
        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)));
        }