diff options
author | chriseth <chris@ethereum.org> | 2017-05-29 20:04:01 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-29 20:04:01 +0800 |
commit | 4a5dc6a4ea619b90214006a573cbd9c036d2d4a2 (patch) | |
tree | f3251f62b6baddea299432becef1a6660f3eb2df /libsolidity/parsing/Parser.cpp | |
parent | 788b64ea6181af6e7e364e86d64508c4809ca9b7 (diff) | |
parent | 751c97ca19ed0bb69e67222a1edd61e7d227b30f (diff) | |
download | dexon-solidity-4a5dc6a4ea619b90214006a573cbd9c036d2d4a2.tar dexon-solidity-4a5dc6a4ea619b90214006a573cbd9c036d2d4a2.tar.gz dexon-solidity-4a5dc6a4ea619b90214006a573cbd9c036d2d4a2.tar.bz2 dexon-solidity-4a5dc6a4ea619b90214006a573cbd9c036d2d4a2.tar.lz dexon-solidity-4a5dc6a4ea619b90214006a573cbd9c036d2d4a2.tar.xz dexon-solidity-4a5dc6a4ea619b90214006a573cbd9c036d2d4a2.tar.zst dexon-solidity-4a5dc6a4ea619b90214006a573cbd9c036d2d4a2.zip |
Merge pull request #2312 from ethereum/parser-cleanup
Parser cleanup (remove dependency on Solidity AST)
Diffstat (limited to 'libsolidity/parsing/Parser.cpp')
-rw-r--r-- | libsolidity/parsing/Parser.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/libsolidity/parsing/Parser.cpp b/libsolidity/parsing/Parser.cpp index 72150a3e..5b318b2b 100644 --- a/libsolidity/parsing/Parser.cpp +++ b/libsolidity/parsing/Parser.cpp @@ -1437,5 +1437,49 @@ ASTPointer<ParameterList> Parser::createEmptyParameterList() return nodeFactory.createNode<ParameterList>(vector<ASTPointer<VariableDeclaration>>()); } +string Parser::currentTokenName() +{ + Token::Value token = m_scanner->currentToken(); + if (Token::isElementaryTypeName(token)) //for the sake of accuracy in reporting + { + ElementaryTypeNameToken elemTypeName = m_scanner->currentElementaryTypeNameToken(); + return elemTypeName.toString(); + } + else + return Token::name(token); +} + +Token::Value Parser::expectAssignmentOperator() +{ + Token::Value op = m_scanner->currentToken(); + if (!Token::isAssignmentOp(op)) + fatalParserError( + string("Expected assignment operator, got '") + + currentTokenName() + + string("'") + ); + m_scanner->next(); + return op; +} + +ASTPointer<ASTString> Parser::expectIdentifierToken() +{ + Token::Value id = m_scanner->currentToken(); + if (id != Token::Identifier) + fatalParserError( + string("Expected identifier, got '") + + currentTokenName() + + string("'") + ); + return getLiteralAndAdvance(); +} + +ASTPointer<ASTString> Parser::getLiteralAndAdvance() +{ + ASTPointer<ASTString> identifier = make_shared<ASTString>(m_scanner->currentLiteral()); + m_scanner->next(); + return identifier; +} + } } |