Lines Matching full:lexer
18 #include "lexer/lexer.h"
29 lexer::SourcePosition start = Lexer()->GetToken().Start(); in ParseLaunchExpression()
30 Lexer()->NextToken(); // eat launch in ParseLaunchExpression()
32 lexer::SourcePosition exprStart = Lexer()->GetToken().Start(); in ParseLaunchExpression()
49 static std::string GetArgumentsSourceView(lexer::Lexer *lexer, const util::StringView::Iterator &le… in GetArgumentsSourceView() argument
51 … std::string value = lexer->SourceView(lexerPos.Index(), lexer->Save().Iterator().Index()).Mutf8(); in GetArgumentsSourceView()
67 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SUBSTITUTION) { in ParseFunctionParameterExpression()
68 auto const lexerPos = Lexer()->Save().Iterator(); in ParseFunctionParameterExpression()
69 Lexer()->NextToken(); // eat '=' in ParseFunctionParameterExpression()
82 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS || in ParseFunctionParameterExpression()
83 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) { in ParseFunctionParameterExpression()
94 std::string value = GetArgumentsSourceView(Lexer(), lexerPos); in ParseFunctionParameterExpression()
125 switch (Lexer()->GetToken().Type()) { in ResolveArgumentUnaryExpr()
126 case lexer::TokenType::PUNCTUATOR_PLUS: in ResolveArgumentUnaryExpr()
127 case lexer::TokenType::PUNCTUATOR_MINUS: in ResolveArgumentUnaryExpr()
128 case lexer::TokenType::PUNCTUATOR_TILDE: in ResolveArgumentUnaryExpr()
129 case lexer::TokenType::PUNCTUATOR_EXCLAMATION_MARK: in ResolveArgumentUnaryExpr()
130 case lexer::TokenType::PUNCTUATOR_DOLLAR_DOLLAR: in ResolveArgumentUnaryExpr()
131 case lexer::TokenType::PUNCTUATOR_PLUS_PLUS: in ResolveArgumentUnaryExpr()
132 case lexer::TokenType::PUNCTUATOR_MINUS_MINUS: in ResolveArgumentUnaryExpr()
133 case lexer::TokenType::KEYW_TYPEOF: { in ResolveArgumentUnaryExpr()
145 auto tokenFlags = lexer::NextTokenFlags::NONE; in ParseUnaryOrPrefixUpdateExpression()
146 lexer::TokenType operatorType = Lexer()->GetToken().Type(); in ParseUnaryOrPrefixUpdateExpression()
149 case lexer::TokenType::PUNCTUATOR_MINUS: in ParseUnaryOrPrefixUpdateExpression()
150 tokenFlags = lexer::NextTokenFlags::UNARY_MINUS; in ParseUnaryOrPrefixUpdateExpression()
152 case lexer::TokenType::PUNCTUATOR_PLUS_PLUS: in ParseUnaryOrPrefixUpdateExpression()
153 case lexer::TokenType::PUNCTUATOR_MINUS_MINUS: in ParseUnaryOrPrefixUpdateExpression()
154 case lexer::TokenType::PUNCTUATOR_PLUS: in ParseUnaryOrPrefixUpdateExpression()
155 case lexer::TokenType::PUNCTUATOR_TILDE: in ParseUnaryOrPrefixUpdateExpression()
156 case lexer::TokenType::PUNCTUATOR_DOLLAR_DOLLAR: in ParseUnaryOrPrefixUpdateExpression()
157 case lexer::TokenType::PUNCTUATOR_EXCLAMATION_MARK: in ParseUnaryOrPrefixUpdateExpression()
158 case lexer::TokenType::KEYW_TYPEOF: { in ParseUnaryOrPrefixUpdateExpression()
161 case lexer::TokenType::KEYW_LAUNCH: { in ParseUnaryOrPrefixUpdateExpression()
169 auto start = Lexer()->GetToken().Start(); in ParseUnaryOrPrefixUpdateExpression()
170 Lexer()->NextToken(tokenFlags); in ParseUnaryOrPrefixUpdateExpression()
178 if (lexer::Token::IsUpdateToken(operatorType)) { in ParseUnaryOrPrefixUpdateExpression()
184 lexer::SourcePosition end = argument->End(); in ParseUnaryOrPrefixUpdateExpression()
187 if (lexer::Token::IsUpdateToken(operatorType)) { in ParseUnaryOrPrefixUpdateExpression()
189 } else if (operatorType == lexer::TokenType::KEYW_TYPEOF) { in ParseUnaryOrPrefixUpdateExpression()
191 } else if (operatorType == lexer::TokenType::PUNCTUATOR_MINUS) { in ParseUnaryOrPrefixUpdateExpression()
208 const auto startPos = Lexer()->Save(); in ParsePropertyDefinition()
209 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT); in ParsePropertyDefinition()
210 lexer::SourcePosition start = Lexer()->GetToken().Start(); in ParsePropertyDefinition()
212 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) { in ParsePropertyDefinition()
216 if (Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT) { in ParsePropertyDefinition()
220 } else if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MULTIPLY) { in ParsePropertyDefinition()
224 … bool isComputed = Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET; in ParsePropertyDefinition()
232 lexer::SourcePosition end = value->End(); in ParsePropertyDefinition()
244 auto startLoc = Lexer()->GetToken().Start(); in ParseDefaultPrimaryExpression()
245 auto savedPos = Lexer()->Save(); in ParseDefaultPrimaryExpression()
256 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD) { in ParseDefaultPrimaryExpression()
257 Lexer()->NextToken(); // eat '.' in ParseDefaultPrimaryExpression()
260 if (Lexer()->GetToken().Type() == lexer::TokenType::KEYW_CLASS || IsStructKeyword()) { in ParseDefaultPrimaryExpression()
261 Lexer()->NextToken(); // eat 'class' and 'struct' in ParseDefaultPrimaryExpression()
263 classLiteral->SetRange({startLoc, Lexer()->GetToken().End()}); in ParseDefaultPrimaryExpression()
268 Lexer()->Rewind(savedPos); in ParseDefaultPrimaryExpression()
270 Lexer()->NextToken(); in ParseDefaultPrimaryExpression()
271 bool pretendArrow = Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_ARROW; in ParseDefaultPrimaryExpression()
272 Lexer()->Rewind(savedPos); in ParseDefaultPrimaryExpression()
274 if (Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT && !pretendArrow) { in ParseDefaultPrimaryExpression()
278 LogSyntaxError({"Unexpected token '", lexer::TokenToString(Lexer()->GetToken().Type()), "'."}); in ParseDefaultPrimaryExpression()
284 switch (Lexer()->GetToken().Type()) { in ParsePrimaryExpressionWithLiterals()
285 case lexer::TokenType::LITERAL_TRUE: in ParsePrimaryExpressionWithLiterals()
286 case lexer::TokenType::LITERAL_FALSE: { in ParsePrimaryExpressionWithLiterals()
289 case lexer::TokenType::LITERAL_NULL: { in ParsePrimaryExpressionWithLiterals()
292 case lexer::TokenType::KEYW_UNDEFINED: { in ParsePrimaryExpressionWithLiterals()
295 case lexer::TokenType::LITERAL_NUMBER: { in ParsePrimaryExpressionWithLiterals()
298 case lexer::TokenType::LITERAL_STRING: { in ParsePrimaryExpressionWithLiterals()
301 case lexer::TokenType::LITERAL_CHAR: { in ParsePrimaryExpressionWithLiterals()
313 switch (Lexer()->GetToken().Type()) { in ParsePrimaryExpression()
314 case lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS: { in ParsePrimaryExpression()
317 case lexer::TokenType::KEYW_THIS: { in ParsePrimaryExpression()
320 case lexer::TokenType::KEYW_SUPER: { in ParsePrimaryExpression()
323 case lexer::TokenType::KEYW_NEW: { in ParsePrimaryExpression()
326 case lexer::TokenType::KEYW_ASYNC: { in ParsePrimaryExpression()
329 case lexer::TokenType::KEYW_AWAIT: { in ParsePrimaryExpression()
332 case lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET: { in ParsePrimaryExpression()
335 case lexer::TokenType::PUNCTUATOR_LEFT_BRACE: { in ParsePrimaryExpression()
338 case lexer::TokenType::PUNCTUATOR_BACK_TICK: { in ParsePrimaryExpression()
341 case lexer::TokenType::KEYW_TYPE: { in ParsePrimaryExpression()
346 case lexer::TokenType::PUNCTUATOR_FORMAT: { in ParsePrimaryExpression()
349 case lexer::TokenType::KEYW_TYPEOF: { in ParsePrimaryExpression()
352 case lexer::TokenType::KEYW_IMPORT: { in ParsePrimaryExpression()
361 bool IsPunctuartorSpecialCharacter(lexer::TokenType tokenType) in IsPunctuartorSpecialCharacter()
364 case lexer::TokenType::PUNCTUATOR_COLON: in IsPunctuartorSpecialCharacter()
365 case lexer::TokenType::PUNCTUATOR_COMMA: in IsPunctuartorSpecialCharacter()
366 case lexer::TokenType::PUNCTUATOR_RIGHT_SHIFT: in IsPunctuartorSpecialCharacter()
367 case lexer::TokenType::PUNCTUATOR_UNSIGNED_RIGHT_SHIFT: in IsPunctuartorSpecialCharacter()
368 case lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET: in IsPunctuartorSpecialCharacter()
369 case lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET: in IsPunctuartorSpecialCharacter()
370 case lexer::TokenType::PUNCTUATOR_LESS_THAN: in IsPunctuartorSpecialCharacter()
371 case lexer::TokenType::PUNCTUATOR_GREATER_THAN: in IsPunctuartorSpecialCharacter()
372 case lexer::TokenType::PUNCTUATOR_BITWISE_OR: in IsPunctuartorSpecialCharacter()
381 const auto savedPos = Lexer()->Save(); in IsArrowFunctionExpressionStart()
382 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS); in IsArrowFunctionExpressionStart()
383 Lexer()->NextToken(); in IsArrowFunctionExpressionStart()
384 auto tokenType = Lexer()->GetToken().Type(); in IsArrowFunctionExpressionStart()
388 while (tokenType != lexer::TokenType::EOS && openBrackets > 0) { in IsArrowFunctionExpressionStart()
389 lexer::NextTokenFlags flag = lexer::NextTokenFlags::NONE; in IsArrowFunctionExpressionStart()
391 case lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS: in IsArrowFunctionExpressionStart()
394 case lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS: in IsArrowFunctionExpressionStart()
397 case lexer::TokenType::PUNCTUATOR_COMMA: in IsArrowFunctionExpressionStart()
401 case lexer::TokenType::PUNCTUATOR_MINUS: in IsArrowFunctionExpressionStart()
402 flag = lexer::NextTokenFlags::UNARY_MINUS; in IsArrowFunctionExpressionStart()
404 case lexer::TokenType::PUNCTUATOR_SEMI_COLON: in IsArrowFunctionExpressionStart()
405 Lexer()->Rewind(savedPos); in IsArrowFunctionExpressionStart()
411 if (tokenType != lexer::TokenType::LITERAL_IDENT && in IsArrowFunctionExpressionStart()
412 tokenType != lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) { in IsArrowFunctionExpressionStart()
413 Lexer()->Rewind(savedPos); in IsArrowFunctionExpressionStart()
418 Lexer()->NextToken(flag); in IsArrowFunctionExpressionStart()
419 tokenType = Lexer()->GetToken().Type(); in IsArrowFunctionExpressionStart()
422 while (tokenType != lexer::TokenType::EOS && tokenType != lexer::TokenType::PUNCTUATOR_ARROW) { in IsArrowFunctionExpressionStart()
423 … if (lexer::Token::IsPunctuatorToken(tokenType) && !IsPunctuartorSpecialCharacter(tokenType)) { in IsArrowFunctionExpressionStart()
426 Lexer()->NextToken(); in IsArrowFunctionExpressionStart()
427 tokenType = Lexer()->GetToken().Type(); in IsArrowFunctionExpressionStart()
429 Lexer()->Rewind(savedPos); in IsArrowFunctionExpressionStart()
430 return tokenType == lexer::TokenType::PUNCTUATOR_ARROW; in IsArrowFunctionExpressionStart()
445 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS); in ParseCoverParenthesizedExpressionAndArrowParameterList()
450 lexer::SourcePosition start = Lexer()->GetToken().Start(); in ParseCoverParenthesizedExpressionAndArrowParameterList()
451 Lexer()->NextToken(); in ParseCoverParenthesizedExpressionAndArrowParameterList()
460 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in ParseCoverParenthesizedExpressionAndArrowParameterList()
461 LogExpectedToken(lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS); in ParseCoverParenthesizedExpressionAndArrowParameterList()
469 expr->SetRange({start, Lexer()->GetToken().End()}); in ParseCoverParenthesizedExpressionAndArrowParameterList()
470 Lexer()->NextToken(); in ParseCoverParenthesizedExpressionAndArrowParameterList()
476 lexer::SourcePosition startLoc, in GetPostPrimaryExpression()
480 switch (Lexer()->GetToken().Type()) { in GetPostPrimaryExpression()
481 case lexer::TokenType::PUNCTUATOR_QUESTION_DOT: in GetPostPrimaryExpression()
486 Lexer()->NextToken(); // eat ?. in GetPostPrimaryExpression()
488 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET) { in GetPostPrimaryExpression()
492 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in GetPostPrimaryExpression()
497 case lexer::TokenType::PUNCTUATOR_PERIOD: in GetPostPrimaryExpression()
498 Lexer()->NextToken(); // eat period in GetPostPrimaryExpression()
501 case lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET: in GetPostPrimaryExpression()
503 case lexer::TokenType::PUNCTUATOR_LEFT_SHIFT: in GetPostPrimaryExpression()
504 case lexer::TokenType::PUNCTUATOR_LESS_THAN: in GetPostPrimaryExpression()
511 case lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS: in GetPostPrimaryExpression()
516 case lexer::TokenType::PUNCTUATOR_EXCLAMATION_MARK: { in GetPostPrimaryExpression()
524 case lexer::TokenType::PUNCTUATOR_FORMAT: in GetPostPrimaryExpression()
525 case lexer::TokenType::PUNCTUATOR_ARROW: in GetPostPrimaryExpression()
526 LogUnexpectedToken(Lexer()->GetToken().Type()); in GetPostPrimaryExpression()
533 ir::Expression *ETSParser::ParsePostPrimaryExpression(ir::Expression *primaryExpr, lexer::SourcePos… in ParsePostPrimaryExpression()
554 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::KEYW_AS); in ParsePotentialAsExpression()
555 Lexer()->NextToken(); in ParsePotentialAsExpression()
576 lexer::SourcePosition endLoc = typeReference->End(); in CreateClassDefinitionForNewExpression()
578 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in CreateClassDefinitionForNewExpression()
583 Lexer()->NextToken(); in CreateClassDefinitionForNewExpression()
585 while (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in CreateClassDefinitionForNewExpression()
589 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) { in CreateClassDefinitionForNewExpression()
590 Lexer()->NextToken(); in CreateClassDefinitionForNewExpression()
595 endLoc = Lexer()->GetToken().End(); in CreateClassDefinitionForNewExpression()
596 Lexer()->NextToken(); in CreateClassDefinitionForNewExpression()
601 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_BRACE) { in CreateClassDefinitionForNewExpression()
620 lexer::SourcePosition start = Lexer()->GetToken().Start(); in ParseNewExpression()
622 Lexer()->NextToken(); // eat new in ParseNewExpression()
634 } else if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_BRACE) { in ParseNewExpression()
636 Lexer()->NextToken(); // eat '{' in ParseNewExpression()
643 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET) { in ParseNewExpression()
644 Lexer()->NextToken(); in ParseNewExpression()
647 auto endLoc = Lexer()->GetToken().End(); in ParseNewExpression()
648 ExpectToken(lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET); in ParseNewExpression()
650 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET) { in ParseNewExpression()
660 Lexer()->NextToken(); in ParseNewExpression()
663 endLoc = Lexer()->GetToken().End(); in ParseNewExpression()
664 ExpectToken(lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET); in ParseNewExpression()
665 } while (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET); in ParseNewExpression()
678 newExprNode->SetRange({start, Lexer()->GetToken().End()}); in ParseNewExpression()
685 Lexer()->NextToken(); // eat 'async' in ParseAsyncExpression()
686 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS || in ParseAsyncExpression()
688 LogExpectedToken(lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS); in ParseAsyncExpression()
700 lexer::SourcePosition start = Lexer()->GetToken().Start(); in ParseAwaitExpression()
701 Lexer()->NextToken(); in ParseAwaitExpression()
704 awaitExpression->SetRange({start, Lexer()->GetToken().End()}); in ParseAwaitExpression()
710 lexer::SourcePosition startLoc = Lexer()->GetToken().Start(); in ParseETSImportExpression()
711 ExpectToken(lexer::TokenType::KEYW_IMPORT); in ParseETSImportExpression()
712 ExpectToken(lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS); in ParseETSImportExpression()
714 lexer::SourcePosition endLoc = Lexer()->GetToken().Start(); in ParseETSImportExpression()
715 ExpectToken(lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS); in ParseETSImportExpression()
724 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA && in ParsePotentialExpressionSequence()
732 bool ETSParser::ParsePotentialNonNullExpression(ir::Expression **expression, const lexer::SourcePos… in ParsePotentialNonNullExpression()
734 if (expression == nullptr || Lexer()->GetToken().NewLine()) { in ParsePotentialNonNullExpression()
739 nonNullExpr->SetRange({startLoc, Lexer()->GetToken().End()}); in ParsePotentialNonNullExpression()
743 Lexer()->NextToken(); in ParsePotentialNonNullExpression()
751 lexer::TokenType tokenType = Lexer()->GetToken().Type(); in ValidateInstanceOfExpression()
752 if (tokenType == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ValidateInstanceOfExpression()
769 if (Lexer()->GetToken().Type() == lexer::TokenType::KEYW_YIELD && in ParseExpression()
787 if (Lexer()->GetToken().NewLine()) { in ParseExpression()
791 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA && in ParseExpression()