From df537df158e0375b01c0a7acdd98aa2f57db5ac3 Mon Sep 17 00:00:00 2001 From: martin dobrev Date: Fri, 7 Sep 2018 19:58:36 +0300 Subject: Add support for bitwise and logical operators to Lexer. --- JSImpl/src/Lexer.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'JSImpl/src/Lexer.cpp') diff --git a/JSImpl/src/Lexer.cpp b/JSImpl/src/Lexer.cpp index 2115a2b..3e78275 100644 --- a/JSImpl/src/Lexer.cpp +++ b/JSImpl/src/Lexer.cpp @@ -160,11 +160,17 @@ Token Tokenizer::NextToken() case '+': m_Current++; return Match('+') ? ProduceToken(TokenType::PlusPlus) : ProduceToken(TokenType::Plus); case ';': m_Current++; return ProduceToken(TokenType::Semicolon); case '*': m_Current++; return ProduceToken(TokenType::Star); + case '/': m_Current++; return ProduceToken(TokenType::Division); + case '%': m_Current++; return ProduceToken(TokenType::Modulo); case '~': m_Current++; return ProduceToken(TokenType::BitwiseNot); case '=': m_Current++; return Match('=') ? Match('=') ? ProduceToken(TokenType::StrictEqual) : ProduceToken(TokenType::EqualEqual) : ProduceToken(TokenType::Equal); case '!': m_Current++; return Match('=') ? Match('=') ? ProduceToken(TokenType::StrictNotEqual) : ProduceToken(TokenType::BangEqual) : ProduceToken(TokenType::Bang); - case '>': m_Current++; return Match('=') ? ProduceToken(TokenType::GreaterEqual) : ProduceToken(TokenType::Greater); - case '<': m_Current++; return Match('=') ? ProduceToken(TokenType::LessEqual) : ProduceToken(TokenType::Less); + case '>': m_Current++; return Match('=') ? ProduceToken(TokenType::GreaterEqual) : Match('>') ? ProduceToken(TokenType::RightShift) : ProduceToken(TokenType::Greater); + case '<': m_Current++; return Match('=') ? ProduceToken(TokenType::LessEqual) : Match('<') ? ProduceToken(TokenType::LeftShift) : ProduceToken(TokenType::Less); + case '&': m_Current++; return Match('&') ? ProduceToken(LogicalAnd) : ProduceToken(BitwiseAnd); + case '^': m_Current++; return ProduceToken(BitwiseXor); + case '|': m_Current++; return Match('|') ? ProduceToken(LogicalOr) : ProduceToken(BitwiseOr); + default: break; } -- cgit v1.3.1-23-gd82d