From 1384d7ea4e80eaa6b195195af81de974575b2bb0 Mon Sep 17 00:00:00 2001 From: omalinov Date: Sun, 21 Oct 2018 17:36:32 +0300 Subject: Lexer/homework (#15) * Initial commit * code is formatted * Homework finished * Genie project generation. * Updated code with new constructors --- JSImpl/src/Lexer.cpp | 3 +++ JSImpl/src/Lexer.h | 1 + JSImpl/src/main.cpp | 4 ++-- 3 files changed, 6 insertions(+), 2 deletions(-) (limited to 'JSImpl/src') diff --git a/JSImpl/src/Lexer.cpp b/JSImpl/src/Lexer.cpp index 5d85570..8b3b909 100644 --- a/JSImpl/src/Lexer.cpp +++ b/JSImpl/src/Lexer.cpp @@ -342,6 +342,8 @@ inline Token Tokenizer::ProduceToken(TokenType type) return ProduceToken(type, ";"); case TokenType::Star: return ProduceToken(type, "*"); + case TokenType::Backslash: + return ProduceToken(type, "\\"); default: // EoF Invalid break; } @@ -585,6 +587,7 @@ Token Tokenizer::NextToken() case ':': NextSymbol(); return ProduceToken(TokenType::Colon); case '[': NextSymbol(); return ProduceToken(TokenType::LeftSquareBracket); case ']': NextSymbol(); return ProduceToken(TokenType::RightSquareBracket); + case '\\': NextSymbol(); return ProduceToken(TokenType::Backslash); default: break; } diff --git a/JSImpl/src/Lexer.h b/JSImpl/src/Lexer.h index e17270d..5ea5064 100644 --- a/JSImpl/src/Lexer.h +++ b/JSImpl/src/Lexer.h @@ -53,6 +53,7 @@ enum class TokenType BitwiseAndEqual, BitwiseXorEqual, BitwiseOrEqual, + Backslash, Identifier, String, diff --git a/JSImpl/src/main.cpp b/JSImpl/src/main.cpp index 3950569..73f883f 100644 --- a/JSImpl/src/main.cpp +++ b/JSImpl/src/main.cpp @@ -86,7 +86,6 @@ void TestStringError() { IPLVector tokens; const auto& res = Tokenize("\" aaaa", tokens); - CHECK(!res.IsSuccessful && res.Error.Row == 0 && res.Error.Column == 6); } @@ -183,7 +182,7 @@ void TestConsecutiveMultiLineCommentWithSpaceWithTokens() void TestCommentError() { IPLVector tokens; - const auto& res = Tokenize(" aa\n /*", tokens, { false, true }); + const auto& res = Tokenize(" aa\n /*", tokens); CHECK(!res.IsSuccessful && res.Error.Row == 1 && res.Error.Column == 3); } @@ -235,6 +234,7 @@ int main() EXECUTE_TEST(TestCommentError); EXECUTE_TEST(TestHexNumber); EXECUTE_TEST(TestScientificNotationNumber); + // TestParseUnaryExpr(); #if defined(_WIN32) std::system("pause"); -- cgit v1.3.1-23-gd82d