private void Expects <ExpectedType>() { var next = lexer.Tokenize(); if (!(next is ExpectedType)) { throw new InvalidOperationException("Expected " + typeof(ExpectedType).Name); } }
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))); }
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); }
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]); }
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); }
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); }
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); }
public string Tranlate(string input) { var lexer = new SimpleLexer(); var parser = new PredictiveRecursiveDescentParser(); return parser.Parse(lexer.Tokenize(input)); }
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))); }