Example #1
0
            private void Expects <ExpectedType>()
            {
                var next = lexer.Tokenize();

                if (!(next is ExpectedType))
                {
                    throw new InvalidOperationException("Expected " + typeof(ExpectedType).Name);
                }
            }
Example #2
0
        public void SingleDigitTest()
        {
            var simpleLexer = new SimpleLexer();
            var tokens = simpleLexer.Tokenize("0");

            Assert.That(tokens.Count(), Is.EqualTo(1));
            Assert.That(tokens.First(), Is.EqualTo(new Token(TokenType.Digit, 0)));
        }
Example #3
0
        public void IncludeToken()
        {
            var sut = new SimpleLexer();

            var result = sut.Tokenize("a{{include other b}}c").ToList();

            Assert.AreEqual(4, result.Count);
            Assert.AreEqual("include", result[1].Type);
            Assert.AreEqual("{{include other b}}", result[1].Value);
        }
Example #4
0
        public void MultilineConstant()
        {
            var sut = new SimpleLexer();

            var result = sut.Tokenize("a\nb").ToList();

            Assert.AreEqual(2, result.Count);
            Assert.AreEqual("constant", result[0].Type);
            Assert.AreEqual("a\nb", result[0].Value);
            Assert.AreEqual(Token.EOF, result[1]);
        }
Example #5
0
        public void SymbolsTest()
        {
            var simpleLexer = new SimpleLexer();
            var tokens = new List<Token>(simpleLexer.Tokenize("+-"));
            Assert.That(tokens.Count(), Is.EqualTo(2));

            ICollection resultTokens = new List<Token>(
                new[]{
                    new Token(TokenType.Plus),
                    new Token(TokenType.Minus)
                });

            AssertListIsSame(resultTokens, tokens);
        }
Example #6
0
        public void SimpleEquationTest()
        {
            var simpleLexer = new SimpleLexer();
            var tokens = new List<Token>(simpleLexer.Tokenize("9-5+2"));
            Assert.That(tokens.Count(), Is.EqualTo(5));

            ICollection resultTokens = new List<Token>(
                new[]{
                    new Token(TokenType.Digit, 9),
                    new Token(TokenType.Minus),
                    new Token(TokenType.Digit, 5),
                    new Token(TokenType.Plus),
                    new Token(TokenType.Digit, 2),
                });

            AssertListIsSame(resultTokens, tokens);
        }
Example #7
0
        public void AllDigitsTest()
        {
            var simpleLexer = new SimpleLexer();
            var tokens = new List<Token>(simpleLexer.Tokenize("0 1 2 3 4 5 6 7 8 9"));
            Assert.That(tokens.Count(), Is.EqualTo(10));

            ICollection resultTokens = new List<Token>(
                new []{
                    new Token(TokenType.Digit, 0),
                    new Token(TokenType.Digit, 1),
                    new Token(TokenType.Digit, 2),
                    new Token(TokenType.Digit, 3),
                    new Token(TokenType.Digit, 4),
                    new Token(TokenType.Digit, 5),
                    new Token(TokenType.Digit, 6),
                    new Token(TokenType.Digit, 7),
                    new Token(TokenType.Digit, 8),
                    new Token(TokenType.Digit, 9),
                });

            AssertListIsSame(resultTokens, tokens);
        }
Example #8
0
 public string Tranlate(string input)
 {
     var lexer = new SimpleLexer();
     var parser = new PredictiveRecursiveDescentParser();
     return parser.Parse(lexer.Tokenize(input));
 }
Example #9
0
        public void TwoDigitNumberTest()
        {
            var simpleLexer = new SimpleLexer();
            var tokens = simpleLexer.Tokenize("42");

            Assert.That(tokens.Count(), Is.EqualTo(1));
            Assert.That(tokens.First(), Is.EqualTo(new Token(TokenType.Digit, 42)));
        }