| 568 | } |
| 569 | |
| 570 | void 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 ',': |
no test coverage detected