diff --git a/Lexer.Tests/MLexerShould.cs b/Lexer.Tests/MLexerShould.cs index 603241f..06c8985 100644 --- a/Lexer.Tests/MLexerShould.cs +++ b/Lexer.Tests/MLexerShould.cs @@ -261,5 +261,16 @@ namespace Lexer.Tests Assert.Less(1, tokens.Count); } } + + [TestCase(".42i")] + [TestCase("42i")] + [TestCase("42e-1i")] + public void ParseComplexNumbers(string text) + { + var sut = CreateLexer(text); + var tokens = sut.ParseAll(); + Assert.AreEqual(2, tokens.Count); + Assert.AreEqual(TokenKind.NumberLiteral, tokens[0].Kind); + } } } \ No newline at end of file diff --git a/Lexer/MLexer.cs b/Lexer/MLexer.cs index 461d18f..d9ae32a 100644 --- a/Lexer/MLexer.cs +++ b/Lexer/MLexer.cs @@ -359,6 +359,10 @@ namespace Lexer if (success) { + if (Window.PeekChar(n) == 'i' || Window.PeekChar(n) == 'j') + { + n++; + } var s = Window.GetAndConsumeChars(n); return PureTokenFactory.CreateNumberLiteral(s); }