Exemplo n.º 1
0
            private ScanToken ReadMark()
            {
                var mark = ScanToken.Mark(_candidate, CurrentPosition);

                Next();
                return(mark);
            }
Exemplo n.º 2
0
            private ScanToken ReadWord()
            {
                var position = CurrentPosition;

                var word = string.Empty;

                do
                {
                    word += _candidate;
                } while (Next() && IsWordCharacter(_candidate));

                return(ScanToken.Word(word, position));
            }
Exemplo n.º 3
0
        public void New_Newline_Succeeds()
        {
            var result = ScanToken.Newline("\r\n", Start);

            using (new AssertionScope())
            {
                result.Type.Should().Be(ScanTokenType.Newline);
                result.Text.Should().Be("\r\n");
                result.Start.Should().BeEquivalentTo(Start);
                result.End.Should().BeEquivalentTo(new ScanPosition(Start.Absolute + 2, Start.Row + 1, 0));
                result.ToString().Should().Be("n(\\r\\n)");
            }
        }
Exemplo n.º 4
0
        public void New_Space_Succeeds()
        {
            var result = ScanToken.Space(" \t", Start);

            using (new AssertionScope())
            {
                result.Type.Should().Be(ScanTokenType.Space);
                result.Text.Should().Be(" \t");
                result.Start.Should().BeEquivalentTo(Start);
                result.End.Should().BeEquivalentTo(Start + 2);
                result.ToString().Should().Be("s( \\t)");
            }
        }
Exemplo n.º 5
0
        public void New_Word_Succeeds()
        {
            var result = ScanToken.Word("abc", Start);

            using (new AssertionScope())
            {
                result.Type.Should().Be(ScanTokenType.Word);
                result.Text.Should().Be("abc");
                result.Start.Should().BeEquivalentTo(Start);
                result.End.Should().BeEquivalentTo(Start + 3);
                result.ToString().Should().Be("w(abc)");
            }
        }
Exemplo n.º 6
0
        public void New_Mark_Succeeds()
        {
            var result = ScanToken.Mark(':', Start);

            using (new AssertionScope())
            {
                result.Type.Should().Be(ScanTokenType.Mark);
                result.Text.Should().Be(":");
                result.Start.Should().BeEquivalentTo(Start);
                result.End.Should().BeEquivalentTo(Start);
                result.ToString().Should().Be("m(:)");
            }
        }
Exemplo n.º 7
0
            private IEnumerable <ScanToken> ReadWhitespace()
            {
                var position = CurrentPosition;

                var whitespace = string.Empty;
                var newline    = string.Empty;

                do
                {
                    switch (_candidate)
                    {
                    case '\r':
                        if (newline.Length > 0)
                        {
                            whitespace += '\r';
                        }
                        else
                        {
                            newline = "\r";
                        }
                        break;

                    case '\n':
                        if (whitespace.Length > 0)
                        {
                            yield return(ScanToken.Space(whitespace, position));
                        }
                        yield return(ScanToken.Newline(newline + "\n", position + (uint)whitespace.Length));

                        _column = -1;
                        _row++;
                        Next();
                        yield break;

                    default:
                        whitespace += newline + _candidate;
                        newline     = string.Empty;
                        break;
                    }
                } while (Next() && IsWhitespaceCharacter(_candidate));

                yield return(ScanToken.Space(whitespace + newline, position));
            }
Exemplo n.º 8
0
 private static ScanToken Newline(string text, uint absolutePosition, uint row, uint column) =>
 ScanToken.Newline(text, new ScanPosition(absolutePosition, row, column));
Exemplo n.º 9
0
 private static ScanToken Mark(char text, uint absolutePosition, uint row, uint column) =>
 ScanToken.Mark(text, new ScanPosition(absolutePosition, row, column));