Website Summary Files Commits Branches @commit @diff @stats
path: root / JSImpl / src / Lexer.cpp
diff options
context:
space:
mode:
1 files changed, 11 insertions, 4 deletions
-rw-r--r--JSImpl/src/Lexer.cpp15
diff --git a/JSImpl/src/Lexer.cpp b/JSImpl/src/Lexer.cpp
index 3e78275..49c7567 100644
--- a/JSImpl/src/Lexer.cpp
+++ b/JSImpl/src/Lexer.cpp
@@ -71,6 +71,10 @@ Tokenizer::Tokenizer(const char* code, const std::function<void()>& onError)
m_KeyWordsTable["while"] = TokenType::While;
m_KeyWordsTable["with"] = TokenType::With;
m_KeyWordsTable["yield"] = TokenType::Yield;
+ m_KeyWordsTable["null"] = TokenType::Null;
+ m_KeyWordsTable["undefined"] = TokenType::Undefined;
+ m_KeyWordsTable["true"] = TokenType::True;
+ m_KeyWordsTable["false"] = TokenType::False;
}
IPLVector<Token> Tokenizer::Tokenize()
@@ -167,10 +171,13 @@ Token Tokenizer::NextToken()
case '!': m_Current++; return Match('=') ? Match('=') ? ProduceToken(TokenType::StrictNotEqual) : ProduceToken(TokenType::BangEqual) : ProduceToken(TokenType::Bang);
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);
-
+ case '&': m_Current++; return Match('&') ? ProduceToken(TokenType::LogicalAnd) : ProduceToken(TokenType::BitwiseAnd);
+ case '^': m_Current++; return ProduceToken(TokenType::BitwiseXor);
+ case '|': m_Current++; return Match('|') ? ProduceToken(TokenType::LogicalOr) : ProduceToken(TokenType::BitwiseOr);
+ case '?': m_Current++; return ProduceToken(TokenType::QuestionMark);
+ case ':': m_Current++; return ProduceToken(TokenType::Colon);
+ case '[': m_Current++; return ProduceToken(TokenType::LeftSquareBracket);
+ case ']': m_Current++; return ProduceToken(TokenType::RightSquareBracket);
default:
break;
}