• Home
  • Raw
  • Download

Lines Matching full:lexer

18 #include "lexer/lexer.h"
29 Lexer()->NextToken(); // eat '@' in ParseTopLevelAnnotation()
30 if (Lexer()->GetToken().Type() == lexer::TokenType::KEYW_INTERFACE) { in ParseTopLevelAnnotation()
34 auto savePos = Lexer()->GetToken().Start(); in ParseTopLevelAnnotation()
58 auto save = Lexer()->Save(); in ParseAnnotationName()
60 Lexer()->NextToken(); in ParseAnnotationName()
61 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) { in ParseAnnotationName()
62 Lexer()->Rewind(save); in ParseAnnotationName()
66 Lexer()->Rewind(save); in ParseAnnotationName()
67 if (Lexer()->Lookahead() == '.') { in ParseAnnotationName()
89 const lexer::SourcePosition startLoc = Lexer()->GetToken().Start(); in ParseAnnotationDeclaration()
96 Lexer()->NextToken(); in ParseAnnotationDeclaration()
99 ExpectToken(lexer::TokenType::PUNCTUATOR_LEFT_BRACE, false); in ParseAnnotationDeclaration()
102 lexer::SourcePosition endLoc = Lexer()->GetToken().End(); in ParseAnnotationDeclaration()
111 static bool IsMemberAccessModifiers(lexer::TokenType type) in IsMemberAccessModifiers()
113 return type == lexer::TokenType::KEYW_STATIC || type == lexer::TokenType::KEYW_ASYNC || in IsMemberAccessModifiers()
114 type == lexer::TokenType::KEYW_PUBLIC || type == lexer::TokenType::KEYW_PROTECTED || in IsMemberAccessModifiers()
115 type == lexer::TokenType::KEYW_PRIVATE || type == lexer::TokenType::KEYW_DECLARE || in IsMemberAccessModifiers()
116 type == lexer::TokenType::KEYW_READONLY || type == lexer::TokenType::KEYW_ABSTRACT || in IsMemberAccessModifiers()
117 type == lexer::TokenType::KEYW_CONST || type == lexer::TokenType::KEYW_FINAL || in IsMemberAccessModifiers()
118 type == lexer::TokenType::KEYW_NATIVE; in IsMemberAccessModifiers()
123 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT); in ParseAnnotationProperties()
126 while (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE && in ParseAnnotationProperties()
127 Lexer()->GetToken().Type() != lexer::TokenType::EOS) { in ParseAnnotationProperties()
129 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SEMI_COLON) { in ParseAnnotationProperties()
130 Lexer()->NextToken(); // eat ';' in ParseAnnotationProperties()
134 while (IsMemberAccessModifiers(Lexer()->GetToken().Type())) { in ParseAnnotationProperties()
135 … LogError(diagnostic::ANNOTATION_PROPERTY_ACCESS_MODIFIERS, {}, Lexer()->GetToken().Start()); in ParseAnnotationProperties()
136 Lexer()->NextToken(); in ParseAnnotationProperties()
145 auto const pos = Lexer()->Save(); in ParseAnnotationProperties()
149 Lexer()->Rewind(pos); in ParseAnnotationProperties()
159 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) { in ParseAnnotationProperties()
160 ExpectToken(lexer::TokenType::PUNCTUATOR_COMMA); // eat ',' in ParseAnnotationProperties()
164 Lexer()->NextToken(); // eat "}" in ParseAnnotationProperties()
186 lexer::SourcePosition endLoc = fieldName->End(); in ParseAnnotationProperty()
188 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS || in ParseAnnotationProperty()
189 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseAnnotationProperty()
190 LogError(diagnostic::ANNOTATION_METHOD_AS_PROP, {}, Lexer()->GetToken().Start()); in ParseAnnotationProperty()
195 if (needTypeAnnotation && Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParseAnnotationProperty()
196 Lexer()->NextToken(); // eat ':' in ParseAnnotationProperty()
202 …LogError(diagnostic::MISSING_TYPE_ANNOTATION, {fieldName->Name().Mutf8()}, Lexer()->GetToken().Sta… in ParseAnnotationProperty()
210 lexer::SourcePosition savePos; in ParseAnnotationProperty()
211 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SUBSTITUTION || in ParseAnnotationProperty()
212 (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON)) { in ParseAnnotationProperty()
213 Lexer()->NextToken(); // eat '=' or ':' in ParseAnnotationProperty()
214 savePos = Lexer()->GetToken().Start(); in ParseAnnotationProperty()
220 …LogError(diagnostic::INVALID_ARGUMENT_PASSED, {fieldName->Name().Mutf8()}, Lexer()->GetToken().Sta… in ParseAnnotationProperty()
241 auto save = Lexer()->Save(); in ParseAnnotations()
243 if (Lexer()->GetToken().Type() == lexer::TokenType::KEYW_INTERFACE) { in ParseAnnotations()
247 Lexer()->Rewind(save); in ParseAnnotations()
252 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_AT) { in ParseAnnotations()
255 save = Lexer()->Save(); in ParseAnnotations()
256 Lexer()->NextToken(); in ParseAnnotations()
280lexer::SourcePosition pos, TypeAnnotationParsingOptions options) in ApplyAnnotationsToNode()
301 lexer::SourcePosition pos) in ApplyAnnotationsToSpecificNodeType()
375 static lexer::SourcePosition GetExpressionEndLoc(ir::Expression *expr) in GetExpressionEndLoc()
390 const lexer::SourcePosition startLoc = Lexer()->GetToken().Start(); in ParseAnnotationUsage()
396 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS && in ParseAnnotationUsage()
398 Lexer()->NextToken(); // eat '(' in ParseAnnotationUsage()
399 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_BRACE) { in ParseAnnotationUsage()
401 } else if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in ParseAnnotationUsage()
405 singleParamName->SetRange({Lexer()->GetToken().Start(), Lexer()->GetToken().End()}); in ParseAnnotationUsage()
407 const auto savePos = Lexer()->GetToken().Start(); in ParseAnnotationUsage()
423 annotationUsage->SetRange({startLoc, Lexer()->GetToken().End()}); in ParseAnnotationUsage()
425 ExpectToken(lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS, true); // eat ')' in ParseAnnotationUsage()
442 while (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_AT) { in TryParseAnnotations()
443 Lexer()->NextToken(); in TryParseAnnotations()
448 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in TryParseAnnotations()
461 Lexer()->NextToken(); in TryParseAnnotationsParams()
465 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in TryParseAnnotationsParams()
467 } else if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in TryParseAnnotationsParams()
470 Lexer()->NextToken(); in TryParseAnnotationsParams()
474 bool ETSParser::IsAnnotationUsageStart(lexer::SourcePosition lastTokenEndIndex) in IsAnnotationUsageStart()
477 if (Lexer()->GetToken().End().index - lastTokenEndIndex.index != 1) { in IsAnnotationUsageStart()