Lines Matching full:lexer
67 #include "lexer/lexer.h"
68 #include "lexer/regexp/regexp.h"
69 #include "lexer/token/letters.h"
70 #include "lexer/token/sourceLocation.h"
71 #include "lexer/token/token.h"
85 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::KEYW_YIELD); in ParseYieldExpression()
87 lexer::SourcePosition startLoc = lexer_->GetToken().Start(); in ParseYieldExpression()
88 lexer::SourcePosition endLoc = lexer_->GetToken().End(); in ParseYieldExpression()
90 if ((lexer_->GetToken().Flags() & lexer::TokenFlags::HAS_ESCAPE) != 0) { in ParseYieldExpression()
99 …if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MULTIPLY && !lexer_->GetToken().NewL… in ParseYieldExpression()
105 …} else if (!lexer_->GetToken().NewLine() && lexer_->GetToken().Type() != lexer::TokenType::PUNCTUA… in ParseYieldExpression()
106 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS && in ParseYieldExpression()
107 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET && in ParseYieldExpression()
108 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA && in ParseYieldExpression()
109 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SEMI_COLON && in ParseYieldExpression()
110 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON && in ParseYieldExpression()
111 lexer_->GetToken().Type() != lexer::TokenType::EOS) { in ParseYieldExpression()
125 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA && in ParsePotentialExpressionSequence()
136 if (lexer_->GetToken().Type() == lexer::TokenType::KEYW_YIELD && in ParseExpression()
150 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA && in ParseExpression()
158 bool ParserImpl::ParseArrayExpressionRightBracketHelper(bool containsRest, const lexer::SourcePosit… in ParseArrayExpressionRightBracketHelper()
160 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) { in ParseArrayExpressionRightBracketHelper()
173 lexer::SourcePosition startLoc = lexer_->GetToken().Start(); in ParseArrayExpression()
182 lexer::SourcePosition endLoc; in ParseArrayExpression()
184 lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET, lexer::NextTokenFlags::NONE, in ParseArrayExpression()
186 if (allowOmitted && lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) { in ParseArrayExpression()
196 … } else if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) { in ParseArrayExpression()
232 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SUBSTITUTION && in ParseArrayExpressionErrorCheck()
235 … } else if (!inPattern && lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SUBSTITUTION) { in ParseArrayExpressionErrorCheck()
315 lexer::SourcePosition endLoc; in ParseArrowFunctionExpressionBody()
316 lexer::SourcePosition bodyStart = lexer_->GetToken().Start(); in ParseArrowFunctionExpressionBody()
318 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_BRACE) { in ParseArrowFunctionExpressionBody()
331 ExpectToken(lexer::TokenType::PUNCTUATOR_RIGHT_BRACE); in ParseArrowFunctionExpressionBody()
418 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_ARROW); in ParseArrowFunctionExpression()
433 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in ValidateArrowFunctionRestParameter()
446 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS); in ParseCoverParenthesizedExpressionAndArrowParameterList()
447 lexer::SourcePosition start = lexer_->GetToken().Start(); in ParseCoverParenthesizedExpressionAndArrowParameterList()
450 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) { in ParseCoverParenthesizedExpressionAndArrowParameterList()
459 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_ARROW) { in ParseCoverParenthesizedExpressionAndArrowParameterList()
461 LogExpectedToken(lexer::TokenType::PUNCTUATOR_ARROW); in ParseCoverParenthesizedExpressionAndArrowParameterList()
467 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in ParseCoverParenthesizedExpressionAndArrowParameterList()
470 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_ARROW) { in ParseCoverParenthesizedExpressionAndArrowParameterList()
472 LogExpectedToken(lexer::TokenType::PUNCTUATOR_ARROW); in ParseCoverParenthesizedExpressionAndArrowParameterList()
488 ExpectToken(lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS); in ParseCoverParenthesizedExpressionAndArrowParameterList()
495 lexer::TokenType tokenType = lexer_->GetToken().Type(); in ValidateGroupedExpression()
496 if (lhsExpression->IsGrouped() && tokenType != lexer::TokenType::PUNCTUATOR_ARROW) { in ValidateGroupedExpression()
553 return AllocBrokenExpression(Lexer()->GetToken().Loc()); in ParsePrefixAssertionExpression()
561 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) { in ParseAssignmentExpressionHelper()
562 if (lexer::Token::IsPunctuatorToken(lexer_->GetToken().Type())) { in ParseAssignmentExpressionHelper()
565 LogExpectedToken(lexer::TokenType::PUNCTUATOR_COLON); in ParseAssignmentExpressionHelper()
578 … ir::Expression *lhsExpression, lexer::TokenType tokenType) in CreateBinaryAssignmentExpression()
592 lexer::TokenType tokenType = lexer_->GetToken().Type(); in ParseAssignmentExpression()
594 case lexer::TokenType::PUNCTUATOR_QUESTION_MARK: { in ParseAssignmentExpression()
602 case lexer::TokenType::PUNCTUATOR_ARROW: { in ParseAssignmentExpression()
609 case lexer::TokenType::PUNCTUATOR_SUBSTITUTION: { in ParseAssignmentExpression()
616 case lexer::TokenType::KEYW_AS: { in ParseAssignmentExpression()
623 if (tokenType == lexer::TokenType::LITERAL_IDENT && in ParseAssignmentExpression()
624 lexer_->GetToken().KeywordType() == lexer::TokenType::KEYW_INSTANCEOF) { in ParseAssignmentExpression()
625 tokenType = lexer::TokenType::KEYW_INSTANCEOF; in ParseAssignmentExpression()
643 ir::Expression *ParserImpl::ParseAssignmentBinaryExpression(const lexer::TokenType tokenType, in ParseAssignmentBinaryExpression()
648 case lexer::TokenType::KEYW_IN: { in ParseAssignmentBinaryExpression()
655 case lexer::TokenType::PUNCTUATOR_NULLISH_COALESCING: in ParseAssignmentBinaryExpression()
656 case lexer::TokenType::PUNCTUATOR_LOGICAL_OR: in ParseAssignmentBinaryExpression()
657 case lexer::TokenType::PUNCTUATOR_LOGICAL_AND: in ParseAssignmentBinaryExpression()
658 case lexer::TokenType::PUNCTUATOR_BITWISE_OR: in ParseAssignmentBinaryExpression()
659 case lexer::TokenType::PUNCTUATOR_BITWISE_XOR: in ParseAssignmentBinaryExpression()
660 case lexer::TokenType::PUNCTUATOR_BITWISE_AND: in ParseAssignmentBinaryExpression()
661 case lexer::TokenType::PUNCTUATOR_EQUAL: in ParseAssignmentBinaryExpression()
662 case lexer::TokenType::PUNCTUATOR_NOT_EQUAL: in ParseAssignmentBinaryExpression()
663 case lexer::TokenType::PUNCTUATOR_STRICT_EQUAL: in ParseAssignmentBinaryExpression()
664 case lexer::TokenType::PUNCTUATOR_NOT_STRICT_EQUAL: in ParseAssignmentBinaryExpression()
665 case lexer::TokenType::PUNCTUATOR_LESS_THAN: in ParseAssignmentBinaryExpression()
666 case lexer::TokenType::PUNCTUATOR_LESS_THAN_EQUAL: in ParseAssignmentBinaryExpression()
667 case lexer::TokenType::PUNCTUATOR_GREATER_THAN: in ParseAssignmentBinaryExpression()
668 case lexer::TokenType::PUNCTUATOR_GREATER_THAN_EQUAL: in ParseAssignmentBinaryExpression()
669 case lexer::TokenType::PUNCTUATOR_LEFT_SHIFT: in ParseAssignmentBinaryExpression()
670 case lexer::TokenType::PUNCTUATOR_RIGHT_SHIFT: in ParseAssignmentBinaryExpression()
671 case lexer::TokenType::PUNCTUATOR_UNSIGNED_RIGHT_SHIFT: in ParseAssignmentBinaryExpression()
672 case lexer::TokenType::PUNCTUATOR_PLUS: in ParseAssignmentBinaryExpression()
673 case lexer::TokenType::PUNCTUATOR_MINUS: in ParseAssignmentBinaryExpression()
674 case lexer::TokenType::PUNCTUATOR_MULTIPLY: in ParseAssignmentBinaryExpression()
675 case lexer::TokenType::PUNCTUATOR_DIVIDE: in ParseAssignmentBinaryExpression()
676 case lexer::TokenType::PUNCTUATOR_MOD: in ParseAssignmentBinaryExpression()
677 case lexer::TokenType::KEYW_INSTANCEOF: in ParseAssignmentBinaryExpression()
678 case lexer::TokenType::PUNCTUATOR_EXPONENTIATION: { in ParseAssignmentBinaryExpression()
688 ir::Expression *ParserImpl::ParseAssignmentEqualExpression(const lexer::TokenType tokenType, in ParseAssignmentEqualExpression()
693 case lexer::TokenType::PUNCTUATOR_UNSIGNED_RIGHT_SHIFT_EQUAL: in ParseAssignmentEqualExpression()
694 case lexer::TokenType::PUNCTUATOR_RIGHT_SHIFT_EQUAL: in ParseAssignmentEqualExpression()
695 case lexer::TokenType::PUNCTUATOR_LEFT_SHIFT_EQUAL: in ParseAssignmentEqualExpression()
696 case lexer::TokenType::PUNCTUATOR_PLUS_EQUAL: in ParseAssignmentEqualExpression()
697 case lexer::TokenType::PUNCTUATOR_MINUS_EQUAL: in ParseAssignmentEqualExpression()
698 case lexer::TokenType::PUNCTUATOR_MULTIPLY_EQUAL: in ParseAssignmentEqualExpression()
699 case lexer::TokenType::PUNCTUATOR_DIVIDE_EQUAL: in ParseAssignmentEqualExpression()
700 case lexer::TokenType::PUNCTUATOR_MOD_EQUAL: in ParseAssignmentEqualExpression()
701 case lexer::TokenType::PUNCTUATOR_BITWISE_AND_EQUAL: in ParseAssignmentEqualExpression()
702 case lexer::TokenType::PUNCTUATOR_BITWISE_OR_EQUAL: in ParseAssignmentEqualExpression()
703 case lexer::TokenType::PUNCTUATOR_BITWISE_XOR_EQUAL: in ParseAssignmentEqualExpression()
704 case lexer::TokenType::PUNCTUATOR_EXPONENTIATION_EQUAL: { in ParseAssignmentEqualExpression()
717 case lexer::TokenType::PUNCTUATOR_LOGICAL_AND_EQUAL: in ParseAssignmentEqualExpression()
718 case lexer::TokenType::PUNCTUATOR_LOGICAL_OR_EQUAL: in ParseAssignmentEqualExpression()
719 case lexer::TokenType::PUNCTUATOR_LOGICAL_NULLISH_EQUAL: { in ParseAssignmentEqualExpression()
734 lexer::SourcePosition startLoc = lexer_->GetToken().Start(); in ParseTemplateLiteral()
737 auto multilineStr = Lexer()->ScanMultilineString(); in ParseTemplateLiteral()
746 lexer_->ScanString<lexer::LEX_CHAR_BACK_TICK>(); in ParseTemplateLiteral()
754 …element->SetRange({lexer::SourcePosition {startPos.Iterator().Index(), startPos.Line(), GetProgram… in ParseTemplateLiteral()
755 … lexer::SourcePosition {templateStr.end, lexer_->Line(), GetProgram()}}); in ParseTemplateLiteral()
767 lexer::TemplateLiteralParserContext ctx(lexer_); in ParseTemplateLiteral()
773 ExpectToken(lexer::TokenType::PUNCTUATOR_RIGHT_BRACE, false); in ParseTemplateLiteral()
789 lexer::SourcePosition start = lexer_->GetToken().Start(); in ParseNewExpression()
801 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in ParseNewExpression()
802 lexer::SourcePosition endLoc = callee->End(); in ParseNewExpression()
812 lexer::SourcePosition endLoc; in ParseNewExpression()
815 lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS, lexer::NextTokenFlags::NONE, in ParseNewExpression()
819 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) { in ParseNewExpression()
843 lexer::SourceRange loc = lexer_->GetToken().Loc(); in ParsePotentialNewTarget()
845 if (lexer_->Lookahead() == lexer::LEX_CHAR_DOT) { in ParsePotentialNewTarget()
849 if (lexer_->GetToken().KeywordType() == lexer::TokenType::KEYW_TARGET) { in ParsePotentialNewTarget()
854 if ((lexer_->GetToken().Flags() & lexer::TokenFlags::HAS_ESCAPE) != 0) { in ParsePotentialNewTarget()
881 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::LITERAL_TRUE || in ParseBooleanLiteral()
882 lexer_->GetToken().Type() == lexer::TokenType::LITERAL_FALSE); in ParseBooleanLiteral()
884 …auto *booleanNode = AllocNode<ir::BooleanLiteral>(lexer_->GetToken().Type() == lexer::TokenType::L… in ParseBooleanLiteral()
894 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::LITERAL_NULL); in ParseNullLiteral()
905 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::LITERAL_NUMBER); in ParseNumberLiteral()
909 if ((lexer_->GetToken().Flags() & lexer::TokenFlags::NUMBER_BIGINT) != 0U) { in ParseNumberLiteral()
924 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::LITERAL_CHAR); in ParseCharLiteral()
936 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::LITERAL_STRING); in ParseStringLiteral()
948 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::KEYW_UNDEFINED); in ParseUndefinedLiteral()
959 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::KEYW_THIS); in ParseThisExpression()
971 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_DIVIDE || in ParseRegularExpression()
972 lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_DIVIDE_EQUAL); in ParseRegularExpression()
977 lexer::RegExpParser reParser(regexp, Allocator(), this); in ParseRegularExpression()
991 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::KEYW_SUPER); in ParseSuperExpression()
999 if ((lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD || in ParseSuperExpression()
1000 lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET) && in ParseSuperExpression()
1005 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS && in ParseSuperExpression()
1017 case lexer::TokenType::LITERAL_IDENT: in ParsePrimaryExpressionWithLiterals()
1019 case lexer::TokenType::LITERAL_TRUE: in ParsePrimaryExpressionWithLiterals()
1020 case lexer::TokenType::LITERAL_FALSE: in ParsePrimaryExpressionWithLiterals()
1022 case lexer::TokenType::LITERAL_NULL: in ParsePrimaryExpressionWithLiterals()
1024 case lexer::TokenType::KEYW_UNDEFINED: in ParsePrimaryExpressionWithLiterals()
1026 case lexer::TokenType::LITERAL_NUMBER: in ParsePrimaryExpressionWithLiterals()
1028 case lexer::TokenType::LITERAL_STRING: in ParsePrimaryExpressionWithLiterals()
1032 return AllocBrokenExpression(Lexer()->GetToken().Loc()); in ParsePrimaryExpressionWithLiterals()
1039 return AllocBrokenExpression(Lexer()->GetToken().Loc()); in ParseHashMaskOperator()
1047 if (lexer_->GetToken().Type() != lexer::TokenType::KEYW_IN) { in ParseHashMaskOperator()
1049 lexer_->GetToken().SetTokenType(lexer::TokenType::KEYW_IN); in ParseHashMaskOperator()
1057 lexer::SourcePosition startLoc = lexer_->GetToken().Start(); in ParseClassExpression()
1074 case lexer::TokenType::PUNCTUATOR_DIVIDE: in ParsePunctuators()
1075 case lexer::TokenType::PUNCTUATOR_DIVIDE_EQUAL: { in ParsePunctuators()
1078 case lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET: { in ParsePunctuators()
1081 case lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS: { in ParsePunctuators()
1084 case lexer::TokenType::PUNCTUATOR_LEFT_BRACE: { in ParsePunctuators()
1087 case lexer::TokenType::PUNCTUATOR_BACK_TICK: { in ParsePunctuators()
1090 case lexer::TokenType::PUNCTUATOR_HASH_MARK: { in ParsePunctuators()
1093 case lexer::TokenType::PUNCTUATOR_LESS_THAN: { in ParsePunctuators()
1106 case lexer::TokenType::KEYW_IMPORT: in ParsePrimaryExpression()
1108 case lexer::TokenType::PUNCTUATOR_DIVIDE: in ParsePrimaryExpression()
1109 case lexer::TokenType::PUNCTUATOR_DIVIDE_EQUAL: in ParsePrimaryExpression()
1110 case lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET: in ParsePrimaryExpression()
1111 case lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS: in ParsePrimaryExpression()
1112 case lexer::TokenType::PUNCTUATOR_LEFT_BRACE: in ParsePrimaryExpression()
1113 case lexer::TokenType::PUNCTUATOR_BACK_TICK: in ParsePrimaryExpression()
1114 case lexer::TokenType::PUNCTUATOR_HASH_MARK: in ParsePrimaryExpression()
1115 case lexer::TokenType::PUNCTUATOR_LESS_THAN: in ParsePrimaryExpression()
1117 case lexer::TokenType::KEYW_FUNCTION: in ParsePrimaryExpression()
1119 case lexer::TokenType::KEYW_CLASS: in ParsePrimaryExpression()
1121 case lexer::TokenType::KEYW_THIS: in ParsePrimaryExpression()
1123 case lexer::TokenType::KEYW_TYPEOF: in ParsePrimaryExpression()
1125 case lexer::TokenType::KEYW_SUPER: in ParsePrimaryExpression()
1127 case lexer::TokenType::KEYW_NEW: { in ParsePrimaryExpression()
1139 static constexpr size_t GetOperatorPrecedenceArithmeticAndComparison(const lexer::TokenType operato… in GetOperatorPrecedenceArithmeticAndComparison()
1142 case lexer::TokenType::PUNCTUATOR_EQUAL: in GetOperatorPrecedenceArithmeticAndComparison()
1143 case lexer::TokenType::PUNCTUATOR_NOT_EQUAL: in GetOperatorPrecedenceArithmeticAndComparison()
1144 case lexer::TokenType::PUNCTUATOR_STRICT_EQUAL: in GetOperatorPrecedenceArithmeticAndComparison()
1145 case lexer::TokenType::PUNCTUATOR_NOT_STRICT_EQUAL: { in GetOperatorPrecedenceArithmeticAndComparison()
1149 case lexer::TokenType::PUNCTUATOR_LESS_THAN: in GetOperatorPrecedenceArithmeticAndComparison()
1150 case lexer::TokenType::PUNCTUATOR_LESS_THAN_EQUAL: in GetOperatorPrecedenceArithmeticAndComparison()
1151 case lexer::TokenType::PUNCTUATOR_GREATER_THAN: in GetOperatorPrecedenceArithmeticAndComparison()
1152 case lexer::TokenType::PUNCTUATOR_GREATER_THAN_EQUAL: in GetOperatorPrecedenceArithmeticAndComparison()
1153 case lexer::TokenType::KEYW_INSTANCEOF: in GetOperatorPrecedenceArithmeticAndComparison()
1154 case lexer::TokenType::KEYW_IN: { in GetOperatorPrecedenceArithmeticAndComparison()
1158 case lexer::TokenType::PUNCTUATOR_PLUS: in GetOperatorPrecedenceArithmeticAndComparison()
1159 case lexer::TokenType::PUNCTUATOR_MINUS: { in GetOperatorPrecedenceArithmeticAndComparison()
1163 case lexer::TokenType::PUNCTUATOR_MULTIPLY: in GetOperatorPrecedenceArithmeticAndComparison()
1164 case lexer::TokenType::PUNCTUATOR_DIVIDE: in GetOperatorPrecedenceArithmeticAndComparison()
1165 case lexer::TokenType::PUNCTUATOR_MOD: { in GetOperatorPrecedenceArithmeticAndComparison()
1175 static constexpr size_t GetOperatorPrecedence(const lexer::TokenType operatorType) in GetOperatorPrecedence()
1177 …ES2PANDA_ASSERT(operatorType == lexer::TokenType::KEYW_AS || lexer::Token::IsBinaryToken(operatorT… in GetOperatorPrecedence()
1180 case lexer::TokenType::PUNCTUATOR_NULLISH_COALESCING: { in GetOperatorPrecedence()
1184 case lexer::TokenType::PUNCTUATOR_LOGICAL_OR: { in GetOperatorPrecedence()
1188 case lexer::TokenType::PUNCTUATOR_LOGICAL_AND: { in GetOperatorPrecedence()
1192 case lexer::TokenType::PUNCTUATOR_BITWISE_OR: { in GetOperatorPrecedence()
1196 case lexer::TokenType::PUNCTUATOR_BITWISE_XOR: { in GetOperatorPrecedence()
1200 case lexer::TokenType::PUNCTUATOR_BITWISE_AND: { in GetOperatorPrecedence()
1204 case lexer::TokenType::PUNCTUATOR_LEFT_SHIFT: in GetOperatorPrecedence()
1205 case lexer::TokenType::PUNCTUATOR_RIGHT_SHIFT: in GetOperatorPrecedence()
1206 case lexer::TokenType::PUNCTUATOR_UNSIGNED_RIGHT_SHIFT: { in GetOperatorPrecedence()
1210 case lexer::TokenType::KEYW_AS: { in GetOperatorPrecedence()
1214 case lexer::TokenType::PUNCTUATOR_EXPONENTIATION: { in GetOperatorPrecedence()
1225 const lexer::TokenType operatorType) in ShouldBinaryExpressionBeAmended()
1229 (operatorType != lexer::TokenType::PUNCTUATOR_EXPONENTIATION || in ShouldBinaryExpressionBeAmended()
1230 binaryExpression->OperatorType() != lexer::TokenType::PUNCTUATOR_EXPONENTIATION); in ShouldBinaryExpressionBeAmended()
1234 const lexer::TokenType operatorType) in ShouldAsExpressionBeAmended()
1236 … return GetOperatorPrecedence(lexer::TokenType::KEYW_AS) <= GetOperatorPrecedence(operatorType) && in ShouldAsExpressionBeAmended()
1237 … !asExpression->IsGrouped() && operatorType != lexer::TokenType::PUNCTUATOR_EXPONENTIATION; in ShouldAsExpressionBeAmended()
1241 const lexer::TokenType operatorType) in ShouldExpressionBeAmended()
1255 const lexer::TokenType operatorType) in AreLogicalAndNullishMixedIncorrectly()
1257 return ((operatorType == lexer::TokenType::PUNCTUATOR_LOGICAL_OR || in AreLogicalAndNullishMixedIncorrectly()
1258 operatorType == lexer::TokenType::PUNCTUATOR_LOGICAL_AND) && in AreLogicalAndNullishMixedIncorrectly()
1260 …expression->AsBinaryExpression()->OperatorType() == lexer::TokenType::PUNCTUATOR_NULLISH_COALESCIN… in AreLogicalAndNullishMixedIncorrectly()
1262 …(operatorType == lexer::TokenType::PUNCTUATOR_NULLISH_COALESCING && expression->IsBinaryExpression… in AreLogicalAndNullishMixedIncorrectly()
1263 … (expression->AsBinaryExpression()->OperatorType() == lexer::TokenType::PUNCTUATOR_LOGICAL_OR || in AreLogicalAndNullishMixedIncorrectly()
1264 … expression->AsBinaryExpression()->OperatorType() == lexer::TokenType::PUNCTUATOR_LOGICAL_AND) && in AreLogicalAndNullishMixedIncorrectly()
1297 const lexer::TokenType operatorType) in CreateAmendedBinaryExpression()
1309 ir::Expression *ParserImpl::ParseExpressionOrTypeAnnotation([[maybe_unused]] lexer::TokenType type, in ParseExpressionOrTypeAnnotation()
1316 lexer::TokenType operatorType) in FindAndAmendChildExpression()
1331 ir::Expression *ParserImpl::ParseBinaryExpression(ir::Expression *left, const lexer::TokenType oper… in ParseBinaryExpression()
1333 ES2PANDA_ASSERT(lexer::Token::IsBinaryToken(operatorType)); in ParseBinaryExpression()
1335 if (operatorType == lexer::TokenType::PUNCTUATOR_EXPONENTIATION) { in ParseBinaryExpression()
1361 const lexer::SourcePosition &endPos = rightExpr->End(); in ParseBinaryExpression()
1377 … lexer::SourcePosition &endLoc) in ParseCallExpressionArguments()
1381 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_FORMAT && in ParseCallExpressionArguments()
1384 endLoc = Lexer()->GetToken().End(); in ParseCallExpressionArguments()
1385 ExpectToken(lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS); in ParseCallExpressionArguments()
1388 lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS, lexer::NextTokenFlags::NONE, in ParseCallExpressionArguments()
1392 … if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) { in ParseCallExpressionArguments()
1399 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) { in ParseCallExpressionArguments()
1412 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS); in ParseCallExpression()
1417 lexer::SourcePosition endLoc; in ParseCallExpression()
1434 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in ParseCallExpression()
1451 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_HASH_MARK) { in ParseOptionalChain()
1457 if (tokenType == lexer::TokenType::LITERAL_IDENT) { in ParseOptionalChain()
1470 if (tokenType == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET) { in ParseOptionalChain()
1475 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseOptionalChain()
1477 LogExpectedToken(lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET); in ParseOptionalChain()
1487 if (tokenType == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in ParseOptionalChain()
1492 if (tokenType == lexer::TokenType::PUNCTUATOR_BACK_TICK || in ParseOptionalChain()
1493 lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_BACK_TICK) { in ParseOptionalChain()
1501 … const lexer::SourcePosition &startLoc) in ParsePotentialArrowExpression()
1504 case lexer::TokenType::KEYW_FUNCTION: { in ParsePotentialArrowExpression()
1510 case lexer::TokenType::LITERAL_IDENT: { in ParsePotentialArrowExpression()
1514 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_ARROW) { in ParsePotentialArrowExpression()
1516 LogExpectedToken(lexer::TokenType::PUNCTUATOR_ARROW); in ParsePotentialArrowExpression()
1524 case lexer::TokenType::PUNCTUATOR_ARROW: { in ParsePotentialArrowExpression()
1530 case lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS: { in ParsePotentialArrowExpression()
1533 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_ARROW) { in ParsePotentialArrowExpression()
1554 … [[maybe_unused]] const lexer::SourcePosition &startLoc, in ParsePotentialGenericFunctionCall()
1561 [[maybe_unused]] lexer::SourcePosition startLoc) in ParsePotentialNonNullExpression()
1576 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseElementAccess()
1577 LogExpectedToken(lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET); in ParseElementAccess()
1590 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_HASH_MARK); in ParsePrivatePropertyAccess()
1592 lexer::SourcePosition memberStart = lexer_->GetToken().Start(); in ParsePrivatePropertyAccess()
1619 ir::Expression *ParserImpl::ParsePostPrimaryExpression(ir::Expression *primaryExpr, lexer::SourcePo… in ParsePostPrimaryExpression()
1625 case lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET: { in ParsePostPrimaryExpression()
1629 case lexer::TokenType::LITERAL_IDENT: { in ParsePostPrimaryExpression()
1635 case lexer::TokenType::PUNCTUATOR_LEFT_SHIFT: in ParsePostPrimaryExpression()
1636 case lexer::TokenType::PUNCTUATOR_LESS_THAN: { in ParsePostPrimaryExpression()
1642 case lexer::TokenType::PUNCTUATOR_BACK_TICK: { in ParsePostPrimaryExpression()
1646 case lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS: { in ParsePostPrimaryExpression()
1653 case lexer::TokenType::PUNCTUATOR_EXCLAMATION_MARK: { in ParsePostPrimaryExpression()
1673 const lexer::SourcePosition startLoc) in ParsePostPrimaryExpressionBackTick()
1677 lexer::SourcePosition endLoc = propertyNode->End(); in ParsePostPrimaryExpressionBackTick()
1687 … const lexer::TokenType tokenType, bool *isChainExpression) in ParsePostPrimaryExpressionDot()
1690 case lexer::TokenType::PUNCTUATOR_QUESTION_DOT: { in ParsePostPrimaryExpressionDot()
1692 lexer_->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT); // eat ?. in ParsePostPrimaryExpressionDot()
1695 case lexer::TokenType::PUNCTUATOR_PERIOD: { in ParsePostPrimaryExpressionDot()
1696 lexer_->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT); // eat period in ParsePostPrimaryExpressionDot()
1698 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_HASH_MARK) { in ParsePostPrimaryExpressionDot()
1731 ir::Expression *ParserImpl::SetupChainExpr(ir::Expression *const top, lexer::SourcePosition startLo… in SetupChainExpr()
1739 lexer::SourcePosition endLoc = expr->End(); in SetupChainExpr()
1755 lexer::SourcePosition startLoc = lexer_->GetToken().Start(); in ParseMemberExpression()
1783 if (!lexer_->GetToken().NewLine() && lexer::Token::IsUpdateToken(lexer_->GetToken().Type())) { in ParseMemberExpression()
1784 lexer::SourcePosition start = returnExpression->Start(); in ParseMemberExpression()
1804 case lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET: { in ParsePatternElement()
1808 case lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD: { in ParsePatternElement()
1815 case lexer::TokenType::PUNCTUATOR_LEFT_BRACE: { in ParsePatternElement()
1820 case lexer::TokenType::LITERAL_IDENT: { in ParsePatternElement()
1828 returnNode = AllocBrokenExpression(Lexer()->GetToken().Loc()); in ParsePatternElement()
1832 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SUBSTITUTION) { in ParsePatternElement()
1840 …ir::AstNodeType::ASSIGNMENT_PATTERN, returnNode, rightNode, lexer::TokenType::PUNCTUATOR_SUBSTITUT… in ParsePatternElement()
1851 LogExpectedToken(lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS); in ParsePatternElementErrorCheck()
1860 if (context_.IsGenerator() && lexer_->GetToken().Type() == lexer::TokenType::KEYW_YIELD) { in ParsePatternElementErrorCheck()
1864 if (context_.IsAsync() && lexer_->GetToken().Type() == lexer::TokenType::KEYW_AWAIT) { in ParsePatternElementErrorCheck()
1874 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS && in CheckPropertyKeyAsyncModifier()
1875 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON && in CheckPropertyKeyAsyncModifier()
1876 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA && in CheckPropertyKeyAsyncModifier()
1877 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) { in CheckPropertyKeyAsyncModifier()
1891 case lexer::LEX_CHAR_LEFT_PAREN: in IsAccessorDelimiter()
1892 case lexer::LEX_CHAR_COLON: in IsAccessorDelimiter()
1893 case lexer::LEX_CHAR_COMMA: in IsAccessorDelimiter()
1894 case lexer::LEX_CHAR_RIGHT_BRACE: { in IsAccessorDelimiter()
1906 case lexer::LEX_CHAR_EQUALS: in IsShorthandDelimiter()
1907 case lexer::LEX_CHAR_COMMA: in IsShorthandDelimiter()
1908 case lexer::LEX_CHAR_RIGHT_BRACE: { in IsShorthandDelimiter()
1917 void ParserImpl::ValidateAccessor(ExpressionParseFlags flags, lexer::TokenFlags currentTokenFlags) in ValidateAccessor()
1923 if ((currentTokenFlags & lexer::TokenFlags::HAS_ESCAPE) != 0) { in ValidateAccessor()
1928 ir::Property *ParserImpl::ParseShorthandProperty(const lexer::LexerPosition *startPos) in ParseShorthandProperty()
1931 lexer::TokenType keywordType = lexer_->GetToken().KeywordType(); in ParseShorthandProperty()
1933 /* Rewind the lexer to the beginning of the ident to reparse as common in ParseShorthandProperty()
1937 lexer::SourcePosition start = lexer_->GetToken().Start(); in ParseShorthandProperty()
1939 if (lexer_->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) { in ParseShorthandProperty()
1942 LogExpectedToken(lexer::TokenType::LITERAL_IDENT); in ParseShorthandProperty()
1954 lexer::SourcePosition end; in ParseShorthandProperty()
1956 if (nextCp == lexer::LEX_CHAR_EQUALS) { in ParseShorthandProperty()
1965 … ir::AstNodeType::ASSIGNMENT_PATTERN, value, rightNode, lexer::TokenType::PUNCTUATOR_SUBSTITUTION); in ParseShorthandProperty()
1989 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MULTIPLY) { in ParsePropertyModifiers()
1998 lexer::TokenFlags currentTokenFlags = lexer_->GetToken().Flags(); in ParsePropertyModifiers()
2000 lexer::TokenType keywordType = lexer_->GetToken().KeywordType(); in ParsePropertyModifiers()
2002 if (keywordType == lexer::TokenType::KEYW_GET && !IsAccessorDelimiter(nextCp)) { in ParsePropertyModifiers()
2006 lexer_->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT); in ParsePropertyModifiers()
2012 if (keywordType == lexer::TokenType::KEYW_SET && !IsAccessorDelimiter(nextCp)) { in ParsePropertyModifiers()
2016 lexer_->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT); in ParsePropertyModifiers()
2031 lexer_->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT); in ParseGeneratorPropertyModifier()
2040 case lexer::TokenType::LITERAL_IDENT: { in ParsePropertyKey()
2048 case lexer::TokenType::LITERAL_STRING: { in ParsePropertyKey()
2056 case lexer::TokenType::LITERAL_NUMBER: { in ParsePropertyKey()
2057 if ((lexer_->GetToken().Flags() & lexer::TokenFlags::NUMBER_BIGINT) != 0) { in ParsePropertyKey()
2067 case lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET: { in ParsePropertyKey()
2072 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParsePropertyKey()
2075 LogExpectedToken(lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET); in ParsePropertyKey()
2081 const auto &rangeToken = Lexer()->GetToken().Loc(); in ParsePropertyKey()
2098 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) { in ParsePropertyValue()
2099 if (lexer::Token::IsPunctuatorToken(lexer_->GetToken().Type())) { in ParsePropertyValue()
2100 LogExpectedToken(lexer::TokenType::PUNCTUATOR_COLON); in ParsePropertyValue()
2155 lexer_->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT); in ParsePropertyDefinition()
2156 lexer::SourcePosition start = lexer_->GetToken().Start(); in ParsePropertyDefinition()
2158 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) { in ParsePropertyDefinition()
2162 if (lexer_->GetToken().Type() == lexer::TokenType::LITERAL_IDENT) { in ParsePropertyDefinition()
2166 } else if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MULTIPLY) { in ParsePropertyDefinition()
2170 bool isComputed = lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET; in ParsePropertyDefinition()
2174 if ((lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS || in ParsePropertyDefinition()
2175 lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) && in ParsePropertyDefinition()
2185 lexer::SourcePosition end = value->End(); in ParsePropertyDefinition()
2198 if (lexer_->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) { in ParsePropertyEndErrorHendler()
2200 if (lexer_->GetToken().Type() == lexer::TokenType::LITERAL_IDENT) { in ParsePropertyEndErrorHendler()
2203 lexer_->GetToken().SetTokenType(lexer::TokenType::PUNCTUATOR_COMMA); in ParsePropertyEndErrorHendler()
2206 if (lexer::Token::IsPunctuatorToken(lexer_->GetToken().Type())) { in ParsePropertyEndErrorHendler()
2208 lexer_->GetToken().SetTokenType(lexer::TokenType::PUNCTUATOR_RIGHT_BRACE); in ParsePropertyEndErrorHendler()
2213 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) { in ParsePropertyEndErrorHendler()
2214 lexer_->GetToken().SetTokenType(lexer::TokenType::PUNCTUATOR_RIGHT_BRACE); in ParsePropertyEndErrorHendler()
2222 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA && in ParsePropertyEnd()
2223 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) { in ParsePropertyEnd()
2229 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA && in ParsePropertyEnd()
2230 lexer_->Lookahead() == lexer::LEX_CHAR_RIGHT_BRACE) { in ParsePropertyEnd()
2241 ES2PANDA_ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_BRACE); in ParseObjectExpression()
2242 lexer::SourcePosition start = lexer_->GetToken().Start(); in ParseObjectExpression()
2247 if (lexer_->Lookahead() == lexer::LEX_CHAR_RIGHT_BRACE) { in ParseObjectExpression()
2251 while (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE && in ParseObjectExpression()
2252 lexer_->GetToken().Type() != lexer::TokenType::EOS) { in ParseObjectExpression()
2274 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SUBSTITUTION && in ParseObjectExpression()
2277 … } else if (!inPattern && lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SUBSTITUTION) { in ParseObjectExpression()
2290 lexer::SourcePosition start = startExpr->Start(); in ParseSequenceExpression()
2295 while (lexer_->TryEatTokenType(lexer::TokenType::PUNCTUATOR_COMMA)) { in ParseSequenceExpression()
2296 …if (acceptRest && lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) { in ParseSequenceExpression()
2302 …if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS && lexer_->CheckAr… in ParseSequenceExpression()
2310 lexer::SourcePosition end = sequence.back()->End(); in ParseSequenceExpression()
2325 lexer::TokenType operatorType = lexer_->GetToken().Type(); in ParseUnaryOrPrefixUpdateExpression()
2326 lexer::SourcePosition start = lexer_->GetToken().Start(); in ParseUnaryOrPrefixUpdateExpression()
2332 if (lexer::Token::IsUpdateToken(operatorType)) { in ParseUnaryOrPrefixUpdateExpression()
2348 if (operatorType == lexer::TokenType::KEYW_DELETE) { in ParseUnaryOrPrefixUpdateExpression()
2359 lexer::SourcePosition end = argument->End(); in ParseUnaryOrPrefixUpdateExpression()
2363 if (lexer::Token::IsUpdateToken(operatorType)) { in ParseUnaryOrPrefixUpdateExpression()
2365 } else if (operatorType == lexer::TokenType::KEYW_AWAIT) { in ParseUnaryOrPrefixUpdateExpression()
2367 } else if (operatorType == lexer::TokenType::KEYW_TYPEOF) { in ParseUnaryOrPrefixUpdateExpression()
2381 lexer::SourcePosition startLoc = lexer_->GetToken().Start(); in ParseImportExpression()
2382 lexer::SourcePosition endLoc = lexer_->GetToken().End(); in ParseImportExpression()
2386 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD) { in ParseImportExpression()
2395 if (lexer_->GetToken().Type() != lexer::TokenType::LITERAL_IDENT || in ParseImportExpression()
2396 lexer_->GetToken().KeywordType() != lexer::TokenType::KEYW_META) { in ParseImportExpression()
2400 lexer_->GetToken().SetTokenType(lexer::TokenType::KEYW_META); in ParseImportExpression()
2411 ExpectToken(lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS); in ParseImportExpression()
2415 lexer::SourcePosition endImportLoc = lexer_->GetToken().End(); in ParseImportExpression()
2416 ExpectToken(lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS); in ParseImportExpression()
2427 return lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS; in IsNamedFunctionExpression()
2432 lexer::SourcePosition startLoc = lexer_->GetToken().Start(); in ParseFunctionExpression()
2441 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MULTIPLY) { in ParseFunctionExpression()