Lines Matching defs:lexer
28 #include "lexer/lexer.h"
29 #include "lexer/ETSLexer.h"
107 static bool IsClassModifier(lexer::TokenType type)
109 return type == lexer::TokenType::KEYW_STATIC || type == lexer::TokenType::KEYW_ABSTRACT ||
110 type == lexer::TokenType::KEYW_FINAL;
120 lexer::TokenFlags tokenFlags = Lexer()->GetToken().Flags();
121 if ((tokenFlags & lexer::TokenFlags::HAS_ESCAPE) != 0) {
126 case lexer::TokenType::KEYW_STATIC: {
130 case lexer::TokenType::KEYW_FINAL: {
134 case lexer::TokenType::KEYW_ABSTRACT: {
164 if (Lexer()->GetToken().Type() == lexer::TokenType::KEYW_EXTENDS) {
184 static bool IsClassMemberAccessModifier(lexer::TokenType type)
186 return type == lexer::TokenType::KEYW_PUBLIC || type == lexer::TokenType::KEYW_PRIVATE ||
187 type == lexer::TokenType::KEYW_PROTECTED || type == lexer::TokenType::KEYW_INTERNAL;
197 if (!(nextCp != lexer::LEX_CHAR_EQUALS && nextCp != lexer::LEX_CHAR_COLON &&
198 nextCp != lexer::LEX_CHAR_LEFT_PAREN)) {
202 lexer::TokenFlags tokenFlags = Lexer()->GetToken().Flags();
203 if ((tokenFlags & lexer::TokenFlags::HAS_ESCAPE) != 0) {
210 case lexer::TokenType::KEYW_PUBLIC: {
214 case lexer::TokenType::KEYW_PRIVATE: {
218 case lexer::TokenType::KEYW_PROTECTED: {
222 case lexer::TokenType::KEYW_INTERNAL: {
223 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT);
224 if (Lexer()->GetToken().KeywordType() != lexer::TokenType::KEYW_PROTECTED) {
241 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT);
245 static bool IsClassFieldModifier(lexer::TokenType type)
247 return type == lexer::TokenType::KEYW_STATIC || type == lexer::TokenType::KEYW_READONLY;
256 if (!(nextCp != lexer::LEX_CHAR_EQUALS && nextCp != lexer::LEX_CHAR_COLON)) {
262 lexer::TokenFlags tokenFlags = Lexer()->GetToken().Flags();
263 if ((tokenFlags & lexer::TokenFlags::HAS_ESCAPE) != 0) {
268 case lexer::TokenType::KEYW_STATIC: {
272 case lexer::TokenType::KEYW_READONLY: {
285 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT);
292 bool ETSParser::IsClassMethodModifier(lexer::TokenType type) noexcept
295 case lexer::TokenType::KEYW_STATIC:
296 case lexer::TokenType::KEYW_FINAL:
297 case lexer::TokenType::KEYW_NATIVE:
298 case lexer::TokenType::KEYW_ASYNC:
299 case lexer::TokenType::KEYW_OVERRIDE:
300 case lexer::TokenType::KEYW_ABSTRACT: {
317 case lexer::TokenType::KEYW_STATIC: {
321 case lexer::TokenType::KEYW_FINAL: {
325 case lexer::TokenType::KEYW_NATIVE: {
329 case lexer::TokenType::KEYW_ASYNC: {
333 case lexer::TokenType::KEYW_OVERRIDE: {
337 case lexer::TokenType::KEYW_ABSTRACT: {
341 case lexer::TokenType::KEYW_DECLARE: {
359 if (!(nextCp != lexer::LEX_CHAR_LEFT_PAREN)) {
365 lexer::TokenFlags tokenFlags = Lexer()->GetToken().Flags();
366 if ((tokenFlags & lexer::TokenFlags::HAS_ESCAPE) != 0) {
375 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT);
393 lexer::SourcePosition endLoc = fieldName->End();
398 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_QUESTION_MARK) {
402 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
409 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SUBSTITUTION) {
430 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) {
479 ir::Expression *propName, lexer::SourcePosition *propEnd)
511 bool IsParseClassElementSeenStatic(lexer::Lexer *lexer)
513 char32_t nextCp = lexer->Lookahead();
514 if (lexer->GetToken().KeywordType() == lexer::TokenType::KEYW_STATIC && nextCp != lexer::LEX_CHAR_EQUALS &&
515 nextCp != lexer::LEX_CHAR_COLON && nextCp != lexer::LEX_CHAR_LEFT_PAREN &&
516 nextCp != lexer::LEX_CHAR_LESS_THAN) {
517 lexer->NextToken();
530 Lexer()->GetToken().Type() == lexer::TokenType::KEYW_EXPORT) {
536 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_STATIC &&
537 Lexer()->Lookahead() == lexer::LEX_CHAR_LEFT_BRACE) {
560 case lexer::TokenType::KEYW_INTERFACE:
561 case lexer::TokenType::KEYW_CLASS:
562 case lexer::TokenType::KEYW_ENUM: {
565 case lexer::TokenType::KEYW_CONSTRUCTOR: {
568 case lexer::TokenType::KEYW_NAMESPACE: {
571 case lexer::TokenType::KEYW_PUBLIC:
572 case lexer::TokenType::KEYW_PRIVATE:
573 case lexer::TokenType::KEYW_PROTECTED: {
587 desc.methodKind = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_GET ? ir::MethodDefinitionKind::GET
597 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT);
604 lexer::SourcePosition propEnd = methodName->End();
619 auto methodKind = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_GET ? ir::MethodDefinitionKind::GET
622 ExpectToken(lexer::TokenType::LITERAL_IDENT, false);
646 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) {
653 if (Lexer()->GetToken().Type() == lexer::TokenType::KEYW_EXTENDS) {
657 lexer::SourcePosition bodyStart = Lexer()->GetToken().Start();
687 lexer::SourcePosition interfaceStart = Lexer()->GetToken().Start();
704 if (identNode == nullptr && Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_BRACE) {
709 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) {
729 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_IMPLEMENTS) {
736 lexer::SourceRange bodyRange;
739 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_BRACE) {
741 bodyRange = lexer::SourceRange {Lexer()->GetToken().Start(), Lexer()->GetToken().Start()};
743 ExpectToken(lexer::TokenType::PUNCTUATOR_LEFT_BRACE, false);
760 static bool IsInterfaceMethodModifier(lexer::TokenType type)
763 return type == lexer::TokenType::KEYW_STATIC || type == lexer::TokenType::KEYW_PRIVATE ||
764 type == lexer::TokenType::KEYW_PROTECTED || type == lexer::TokenType::KEYW_PUBLIC;
775 if (Lexer()->GetToken().Type() == lexer::TokenType::KEYW_PUBLIC ||
776 Lexer()->GetToken().Type() == lexer::TokenType::KEYW_PROTECTED ||
777 Lexer()->GetToken().Type() == lexer::TokenType::KEYW_PRIVATE) {
781 } else if (Lexer()->GetToken().Type() == lexer::TokenType::KEYW_PUBLIC ||
782 Lexer()->GetToken().Type() == lexer::TokenType::KEYW_PROTECTED) {
786 case lexer::TokenType::KEYW_STATIC: {
790 case lexer::TokenType::KEYW_PRIVATE: {
800 if (nextCp == lexer::LEX_CHAR_COLON || nextCp == lexer::LEX_CHAR_LEFT_PAREN ||
801 nextCp == lexer::LEX_CHAR_EQUALS) {
818 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT);
824 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_QUESTION_MARK) {
830 if (!Lexer()->TryEatTokenType(lexer::TokenType::PUNCTUATOR_COLON)) {
842 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_EQUAL) {
864 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT);
871 lexer::SourcePosition startLoc = Lexer()->GetToken().Start();
882 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_BRACE) {
940 if (Lexer()->Lookahead() != lexer::LEX_CHAR_LEFT_PAREN && Lexer()->Lookahead() != lexer::LEX_CHAR_LESS_THAN &&
941 (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_GET ||
942 Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_SET)) {
946 if (Lexer()->TryEatTokenKeyword(lexer::TokenType::KEYW_READONLY)) {
953 if (Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT) {
955 if (nextCp == lexer::LEX_CHAR_LEFT_PAREN || nextCp == lexer::LEX_CHAR_LESS_THAN) {
1004 void ETSParser::CheckPredefinedMethods(ir::ScriptFunction const *function, const lexer::SourcePosition &position) const
1060 const lexer::SourcePosition &startLoc)
1076 std::pair<ir::ModifierFlags, lexer::SourcePosition> ETSParser::ParseMemberModifiers()
1080 if (Lexer()->TryEatTokenType(lexer::TokenType::KEYW_EXPORT)) {
1082 if (Lexer()->TryEatTokenKeyword(lexer::TokenType::KEYW_DEFAULT)) {
1084 } else if (Lexer()->TryEatTokenKeyword(lexer::TokenType::KEYW_TYPE)) {
1085 if (Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT) {
1094 lexer::SourcePosition startLoc = Lexer()->GetToken().Start();
1096 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_DECLARE) {
1101 if (tokenType == lexer::TokenType::KEYW_ASYNC || tokenType == lexer::TokenType::KEYW_NATIVE) {
1102 bool isAsync = tokenType == lexer::TokenType::KEYW_ASYNC;
1111 if (Lexer()->GetToken().Type() != lexer::TokenType::KEYW_FUNCTION) {