Lines Matching defs:lexer

43 #include "lexer/lexer.h"
44 #include "lexer/token/letters.h"
45 #include "lexer/token/sourceLocation.h"
55 std::unique_ptr<lexer::Lexer> ParserImpl::InitLexer(const SourceFile &sourceFile)
58 std::unique_ptr<lexer::Lexer> lexer = std::make_unique<lexer::Lexer>(&context_);
59 lexer_ = lexer.get();
60 return lexer;
65 auto lexer = InitLexer(sourceFile);
79 lexer::SourcePosition startLoc = lexer_->GetToken().Start();
129 bool ParserImpl::IsModifierKind(const lexer::Token &token)
132 case lexer::TokenType::KEYW_STATIC:
133 case lexer::TokenType::KEYW_ASYNC:
149 if (nextCp == lexer::LEX_CHAR_LEFT_PAREN) {
153 lexer::TokenFlags tokenFlags = lexer_->GetToken().Flags();
154 if ((tokenFlags & lexer::TokenFlags::HAS_ESCAPE) != 0) {
162 case lexer::TokenType::KEYW_STATIC: {
167 case lexer::TokenType::KEYW_ASYNC: {
177 if (lexer_->Lookahead() == lexer::LEX_CHAR_COLON || lexer_->Lookahead() == lexer::LEX_CHAR_COMMA ||
178 lexer_->Lookahead() == lexer::LEX_CHAR_RIGHT_PAREN || lexer_->Lookahead() == lexer::LEX_CHAR_QUESTION ||
179 lexer_->Lookahead() == lexer::LEX_CHAR_RIGHT_BRACE || lexer_->Lookahead() == lexer::LEX_CHAR_LESS_THAN) {
184 lexer_->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT);
257 if (lexer_->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) {
262 if ((keywordType != lexer::TokenType::KEYW_GET && keywordType != lexer::TokenType::KEYW_SET) ||
263 (*nextCp == lexer::LEX_CHAR_EQUALS || *nextCp == lexer::LEX_CHAR_SEMICOLON ||
264 *nextCp == lexer::LEX_CHAR_LEFT_PAREN || *nextCp == lexer::LEX_CHAR_COLON ||
265 *nextCp == lexer::LEX_CHAR_LESS_THAN)) {
271 if ((lexer_->GetToken().Flags() & lexer::TokenFlags::HAS_ESCAPE) != 0) {
276 keywordType == lexer::TokenType::KEYW_GET ? ir::MethodDefinitionKind::GET : ir::MethodDefinitionKind::SET;
279 lexer_->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT);
302 if (lexer_->Lookahead() != lexer::LEX_CHAR_LEFT_PAREN) {
336 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
347 lexer_->GetToken().SetTokenType(lexer::TokenType::LITERAL_IDENT);
351 case lexer::TokenType::LITERAL_IDENT: {
359 case lexer::TokenType::LITERAL_STRING: {
374 case lexer::TokenType::LITERAL_NUMBER: {
377 if ((lexer_->GetToken().Flags() & lexer::TokenFlags::NUMBER_BIGINT) != 0) {
386 case lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET: {
397 lexer_->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT);
404 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
438 ir::Expression *propName, lexer::SourcePosition *propEnd)
473 lexer::SourcePosition propEnd = propName->End();
488 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SUBSTITUTION) {
509 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_MULTIPLY) {
514 lexer_->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT);
521 lexer_->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT);
523 if (lexer_->GetToken().Type() != lexer::TokenType::LITERAL_IDENT ||
531 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_HASH_MARK) {
549 const lexer::SourcePosition &startPos = lexer_->GetToken().Start();
562 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) {
588 if (lexer_->GetToken().KeywordType() == lexer::TokenType::KEYW_STATIC &&
589 lexer_->Lookahead() == lexer::LEX_CHAR_LEFT_BRACE) {
613 if (property != nullptr && lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SEMI_COLON &&
614 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE &&
615 (lexer_->GetToken().Flags() & lexer::TokenFlags::NEW_LINE) == 0 &&
621 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SEMI_COLON) {
622 lexer_->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT);
635 const lexer::SourcePosition &startLoc)
681 const lexer::SourcePosition &startLoc)
692 if (lexer_->GetToken().Type() == lexer::TokenType::LITERAL_IDENT) {
728 if (lexer_->GetToken().Type() == lexer::TokenType::KEYW_EXTENDS) {
761 ExpectToken(lexer::TokenType::PUNCTUATOR_LEFT_BRACE, false);
779 lexer::SourcePosition startLoc = lexer_->GetToken().Start();
780 lexer_->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT);
787 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_FORMAT &&
790 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) {
794 while (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE &&
795 lexer_->GetToken().Type() != lexer::TokenType::EOS) {
796 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SEMI_COLON) {
815 lexer::SourcePosition endLoc = lexer_->GetToken().End();
819 return {ctor, std::move(properties), lexer::SourceRange {startLoc, endLoc}};
830 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
849 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
855 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_FORMAT &&
859 while (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
868 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) {
870 } else if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
876 ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS);
886 std::tuple<bool, ir::BlockStatement *, lexer::SourcePosition, bool> ParserImpl::ParseFunctionBody(
890 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_BRACE) {
903 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
936 lexer::SourcePosition startLoc = lexer_->GetToken().Start();
958 ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD);
959 lexer::SourcePosition startLocation = lexer_->GetToken().Start();
985 ASSERT(lexer_->GetToken().Type() == lexer::TokenType::LITERAL_IDENT);
989 void ParserImpl::CheckRestrictedBinding(lexer::TokenType keywordType) const
991 if (keywordType == lexer::TokenType::KEYW_ARGUMENTS || keywordType == lexer::TokenType::KEYW_EVAL) {
999 void ParserImpl::CheckRestrictedBinding(const util::StringView &ident, const lexer::SourcePosition &pos) const
1013 if (lexer_->GetToken().Type() == lexer::TokenType::LITERAL_IDENT) {
1144 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET) {
1149 if (lexer_->GetToken().Type() != lexer::TokenType::LITERAL_IDENT || !lexer_->GetToken().Ident().Is("Symbol")) {
1154 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_PERIOD) {
1159 if (lexer_->GetToken().Type() != lexer::TokenType::LITERAL_IDENT || !lexer_->GetToken().Ident().Is("iterator")) {
1164 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
1176 if (tokenType == lexer::TokenType::PUNCTUATOR_FORMAT) {
1187 if (tokenType == lexer::TokenType::LITERAL_IDENT) {
1189 } else if (tokenType == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET) {
1209 void ParserImpl::ExpectToken(lexer::TokenType tokenType, bool consumeToken)
1220 void ParserImpl::ThrowUnexpectedToken(lexer::TokenType const tokenType) const
1225 void ParserImpl::ThrowExpectedToken(lexer::TokenType const tokenType) const
1240 void ParserImpl::ThrowSyntaxError(std::initializer_list<std::string_view> list, const lexer::SourcePosition &pos) const
1253 void ParserImpl::ThrowSyntaxError(std::string_view errorMessage, const lexer::SourcePosition &pos) const
1255 lexer::LineIndex index(program_->SourceCode());
1256 lexer::SourceLocation loc = index.GetLocation(pos);
1261 void ParserImpl::LogExpectedToken(lexer::TokenType const tokenType)
1277 void ParserImpl::LogSyntaxError(std::initializer_list<std::string_view> list, const lexer::SourcePosition &pos)
1290 void ParserImpl::LogSyntaxError(std::string_view errorMessage, const lexer::SourcePosition &pos)
1292 lexer::LineIndex index(program_->SourceCode());
1293 lexer::SourceLocation loc = index.GetLocation(pos);
1311 if (lexer_->GetToken().KeywordType() != lexer::TokenType::KEYW_AS) {
1315 if ((lexer_->GetToken().Flags() & lexer::TokenFlags::HAS_ESCAPE) != 0U) {