mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Move Solidity specific methods from ParserBase to the Solidity Parser
This commit is contained in:
@@ -1437,5 +1437,61 @@ ASTPointer<ParameterList> Parser::createEmptyParameterList()
|
||||
return nodeFactory.createNode<ParameterList>(vector<ASTPointer<VariableDeclaration>>());
|
||||
}
|
||||
|
||||
Token::Value Parser::expectAssignmentOperator()
|
||||
{
|
||||
Token::Value op = m_scanner->currentToken();
|
||||
if (!Token::isAssignmentOp(op))
|
||||
{
|
||||
if (Token::isElementaryTypeName(op)) //for the sake of accuracy in reporting
|
||||
{
|
||||
ElementaryTypeNameToken elemTypeName = m_scanner->currentElementaryTypeNameToken();
|
||||
fatalParserError(
|
||||
string("Expected assignment operator, got '") +
|
||||
elemTypeName.toString() +
|
||||
string("'")
|
||||
);
|
||||
}
|
||||
else
|
||||
fatalParserError(
|
||||
string("Expected assignment operator, got '") +
|
||||
string(Token::name(m_scanner->currentToken())) +
|
||||
string("'")
|
||||
);
|
||||
}
|
||||
m_scanner->next();
|
||||
return op;
|
||||
}
|
||||
|
||||
ASTPointer<ASTString> Parser::expectIdentifierToken()
|
||||
{
|
||||
Token::Value id = m_scanner->currentToken();
|
||||
if (id != Token::Identifier)
|
||||
{
|
||||
if (Token::isElementaryTypeName(id)) //for the sake of accuracy in reporting
|
||||
{
|
||||
ElementaryTypeNameToken elemTypeName = m_scanner->currentElementaryTypeNameToken();
|
||||
fatalParserError(
|
||||
string("Expected identifier, got '") +
|
||||
elemTypeName.toString() +
|
||||
string("'")
|
||||
);
|
||||
}
|
||||
else
|
||||
fatalParserError(
|
||||
string("Expected identifier, got '") +
|
||||
string(Token::name(id)) +
|
||||
string("'")
|
||||
);
|
||||
}
|
||||
return getLiteralAndAdvance();
|
||||
}
|
||||
|
||||
ASTPointer<ASTString> Parser::getLiteralAndAdvance()
|
||||
{
|
||||
ASTPointer<ASTString> identifier = make_shared<ASTString>(m_scanner->currentLiteral());
|
||||
m_scanner->next();
|
||||
return identifier;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user