Lines Matching +full:- +full:- +full:token

1 //===- Lexer.cpp ----------------------------------------------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
19 //===----------------------------------------------------------------------===//
20 // Token
21 //===----------------------------------------------------------------------===//
23 std::string Token::getStringValue() const { in getStringValue()
70 //===----------------------------------------------------------------------===//
72 //===----------------------------------------------------------------------===//
79 curBuffer = srcMgr.getMemoryBuffer(curBufferID)->getBuffer(); in Lexer()
85 codeCompleteContext->getCodeCompleteLoc().getPointer(); in Lexer()
115 curBuffer = srcMgr.getMemoryBuffer(curBufferID)->getBuffer(); in pushInclude()
120 Token Lexer::emitError(SMRange loc, const Twine &msg) { in emitError()
122 return formToken(Token::error, loc.Start.getPointer()); in emitError()
124 Token Lexer::emitErrorAndNote(SMRange loc, const Twine &msg, SMRange noteLoc, in emitErrorAndNote()
126 diagEngine.emitError(loc, msg)->attachNote(note, noteLoc); in emitErrorAndNote()
127 return formToken(Token::error, loc.Start.getPointer()); in emitErrorAndNote()
129 Token Lexer::emitError(const char *loc, const Twine &msg) { in emitError()
142 if (curPtr - 1 != curBuffer.end()) in getNextChar()
146 --curPtr; in getNextChar()
160 Token Lexer::lexToken() { in lexToken()
164 // Check to see if this token is at the code completion location. in lexToken()
166 return formToken(Token::code_complete, tokStart); in lexToken()
172 // Handle identifiers: [a-zA-Z_] in lexToken()
180 Token eof = formToken(Token::eof, tokStart); in lexToken()
186 curBuffer = srcMgr.getMemoryBuffer(curBufferID)->getBuffer(); in lexToken()
194 case '-': in lexToken()
197 return formToken(Token::arrow, tokStart); in lexToken()
201 return formToken(Token::colon, tokStart); in lexToken()
203 return formToken(Token::comma, tokStart); in lexToken()
205 return formToken(Token::dot, tokStart); in lexToken()
209 return formToken(Token::equal_arrow, tokStart); in lexToken()
211 return formToken(Token::equal, tokStart); in lexToken()
213 return formToken(Token::semicolon, tokStart); in lexToken()
219 return formToken(Token::l_square, tokStart); in lexToken()
221 return formToken(Token::r_square, tokStart); in lexToken()
224 return formToken(Token::less, tokStart); in lexToken()
226 return formToken(Token::greater, tokStart); in lexToken()
228 return formToken(Token::l_brace, tokStart); in lexToken()
230 return formToken(Token::r_brace, tokStart); in lexToken()
232 return formToken(Token::l_paren, tokStart); in lexToken()
234 return formToken(Token::r_paren, tokStart); in lexToken()
283 if (curPtr - 1 == curBuffer.end()) { in lexComment()
284 --curPtr; in lexComment()
295 Token Lexer::lexDirective(const char *tokStart) { in lexDirective()
296 // Match the rest with an identifier regex: [0-9a-zA-Z_]* in lexDirective()
300 StringRef str(tokStart, curPtr - tokStart); in lexDirective()
301 return Token(Token::directive, str); in lexDirective()
304 Token Lexer::lexIdentifier(const char *tokStart) { in lexIdentifier()
305 // Match the rest of the identifier regex: [0-9a-zA-Z_]* in lexIdentifier()
310 StringRef str(tokStart, curPtr - tokStart); in lexIdentifier()
311 Token::Kind kind = StringSwitch<Token::Kind>(str) in lexIdentifier()
312 .Case("attr", Token::kw_attr) in lexIdentifier()
313 .Case("Attr", Token::kw_Attr) in lexIdentifier()
314 .Case("erase", Token::kw_erase) in lexIdentifier()
315 .Case("let", Token::kw_let) in lexIdentifier()
316 .Case("Constraint", Token::kw_Constraint) in lexIdentifier()
317 .Case("not", Token::kw_not) in lexIdentifier()
318 .Case("op", Token::kw_op) in lexIdentifier()
319 .Case("Op", Token::kw_Op) in lexIdentifier()
320 .Case("OpName", Token::kw_OpName) in lexIdentifier()
321 .Case("Pattern", Token::kw_Pattern) in lexIdentifier()
322 .Case("replace", Token::kw_replace) in lexIdentifier()
323 .Case("return", Token::kw_return) in lexIdentifier()
324 .Case("rewrite", Token::kw_rewrite) in lexIdentifier()
325 .Case("Rewrite", Token::kw_Rewrite) in lexIdentifier()
326 .Case("type", Token::kw_type) in lexIdentifier()
327 .Case("Type", Token::kw_Type) in lexIdentifier()
328 .Case("TypeRange", Token::kw_TypeRange) in lexIdentifier()
329 .Case("Value", Token::kw_Value) in lexIdentifier()
330 .Case("ValueRange", Token::kw_ValueRange) in lexIdentifier()
331 .Case("with", Token::kw_with) in lexIdentifier()
332 .Case("_", Token::underscore) in lexIdentifier()
333 .Default(Token::identifier); in lexIdentifier()
334 return Token(kind, str); in lexIdentifier()
337 Token Lexer::lexNumber(const char *tokStart) { in lexNumber()
338 assert(isdigit(curPtr[-1])); in lexNumber()
344 return formToken(Token::integer, tokStart); in lexNumber()
347 Token Lexer::lexString(const char *tokStart, bool isStringBlock) { in lexString()
351 // lexed string within the token (without the quotes). This allows for the in lexString()
355 return formToken(Token::code_complete_string, in lexString()
364 return formToken(Token::string, tokStart); in lexString()
372 return formToken(Token::string_block, tokStart); in lexString()
376 if (curPtr - 1 != curBuffer.end()) in lexString()
378 --curPtr; in lexString()
381 return emitError(curPtr - 1, in lexString()
390 return emitError(curPtr - 1, "expected '\"' in string literal"); in lexString()
402 return emitError(curPtr - 1, "unknown escape in string literal"); in lexString()