Beispiel #1
0
        public override ReadResult <Integer> Read(ITextScanner scanner)
        {
            var result = innerLexer.Read(scanner);

            if (result.Success)
            {
                var integer = new Integer(result.Element);
                return(ReadResult <Integer> .FromResult(integer));
            }
            var syntaxError = SyntaxError.FromReadResult(result, scanner.GetContext());

            return(ReadResult <Integer> .FromSyntaxError(syntaxError));
        }
Beispiel #2
0
        public override ReadResult <Sign> Read(ITextScanner scanner)
        {
            var result = innerLexer.Read(scanner);

            if (result.Success)
            {
                var sign = new Sign(result.Element);
                return(ReadResult <Sign> .FromResult(sign));
            }
            var syntaxError = SyntaxError.FromReadResult(result, scanner.GetContext());

            return(ReadResult <Sign> .FromSyntaxError(syntaxError));
        }
Beispiel #3
0
        public override ReadResult <EndOfLine> Read(ITextScanner scanner)
        {
            if (scanner == null)
            {
                throw new ArgumentNullException(nameof(scanner));
            }
            var result = innerLexer.Read(scanner);

            if (result.Success)
            {
                return(ReadResult <EndOfLine> .FromResult(new EndOfLine(result.Element)));
            }
            return(ReadResult <EndOfLine> .FromSyntaxError(SyntaxError.FromReadResult(result, scanner.GetContext())));
        }