diff --git a/Lexer.Tests/MLexerShould.cs b/Lexer.Tests/MLexerShould.cs index 8e99e3d..28fd34e 100644 --- a/Lexer.Tests/MLexerShould.cs +++ b/Lexer.Tests/MLexerShould.cs @@ -205,5 +205,15 @@ namespace Parser.Tests var actual = string.Join("", tokens.Select(token => token.FullText)); Assert.AreEqual(s, actual); } + + [Test] + public void ParseStringLiteral() + { + var sut = CreateLexer("'just a string'"); + var tokens = sut.ParseAll(); + Assert.AreEqual(2, tokens.Count); + Assert.AreEqual(TokenKind.StringLiteral, tokens[0].Kind); + Assert.AreEqual("just a string", tokens[0].PureToken.Value); + } } } \ No newline at end of file diff --git a/Lexer/MLexer.cs b/Lexer/MLexer.cs index eed2c4e..93af021 100644 --- a/Lexer/MLexer.cs +++ b/Lexer/MLexer.cs @@ -537,10 +537,11 @@ namespace Lexer Window.ConsumeChar(); return PureTokenFactory.CreatePunctuation(TokenKind.QuestionMark); case '\'': - if (LastToken.PureToken.Kind == TokenKind.ClosingBrace - || LastToken.PureToken.Kind == TokenKind.ClosingBracket - || LastToken.PureToken.Kind == TokenKind.ClosingSquareBracket - || LastToken.PureToken.Kind == TokenKind.Identifier) + if (LastToken != null && + (LastToken.Kind == TokenKind.ClosingBrace + || LastToken.Kind == TokenKind.ClosingBracket + || LastToken.Kind == TokenKind.ClosingSquareBracket + || LastToken.Kind == TokenKind.Identifier)) { if (LastToken.TrailingTrivia.Count == 0 && leadingTrivia.Count == 0) {