MCPcopy Create free account
hub / github.com/argotorg/solidity / scanNextToken

Method scanNextToken

test/libsolidity/util/TestFileParser.cpp:570–675  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

568}
569
570void TestFileParser::Scanner::scanNextToken()
571{
572 // Make code coverage happy.
573 soltestAssert(formatToken(Token::NUM_TOKENS).empty(), "");
574
575 auto detectKeyword = [](std::string const& _literal = "") -> std::pair<Token, std::string> {
576 if (_literal == "true") return {Token::Boolean, "true"};
577 if (_literal == "false") return {Token::Boolean, "false"};
578 if (_literal == "ether") return {Token::Ether, ""};
579 if (_literal == "wei") return {Token::Wei, ""};
580 if (_literal == "left") return {Token::Left, ""};
581 if (_literal == "library") return {Token::Library, ""};
582 if (_literal == "right") return {Token::Right, ""};
583 if (_literal == "hex") return {Token::Hex, ""};
584 if (_literal == "FAILURE") return {Token::Failure, ""};
585 if (_literal == "gas") return {Token::Gas, ""};
586 return {Token::Identifier, _literal};
587 };
588
589 auto selectToken = [this](Token _token, std::string const& _literal = "") {
590 advance();
591 m_currentToken = _token;
592 m_currentLiteral = _literal;
593 };
594
595 m_currentToken = Token::Unknown;
596 m_currentLiteral = "";
597 do
598 {
599 switch(current())
600 {
601 case '/':
602 advance();
603 if (current() == '/')
604 selectToken(Token::Newline);
605 else
606 selectToken(Token::Invalid);
607 break;
608 case '-':
609 if (peek() == '>')
610 {
611 advance();
612 selectToken(Token::Arrow);
613 }
614 else
615 selectToken(Token::Sub);
616 break;
617 case '~':
618 advance();
619 selectToken(Token::Tilde, readLine());
620 break;
621 case ':':
622 selectToken(Token::Colon);
623 break;
624 case '#':
625 selectToken(Token::Comment, scanComment());
626 break;
627 case ',':

Callers 4

parseFunctionCallsMethod · 0.80
expectMethod · 0.80

Calls 6

formatTokenFunction · 0.85
isIdentifierStartFunction · 0.85
isDecimalDigitFunction · 0.85
isWhiteSpaceFunction · 0.85
TestParserErrorClass · 0.85
emptyMethod · 0.45

Tested by

no test coverage detected