Pull out common code to a helper

This commit is contained in:
Alex Beregszaszi 2017-05-26 21:02:24 +01:00
parent 48f58aa3f9
commit 751c97ca19
2 changed files with 15 additions and 24 deletions

View File

@ -1437,26 +1437,27 @@ ASTPointer<ParameterList> Parser::createEmptyParameterList()
return nodeFactory.createNode<ParameterList>(vector<ASTPointer<VariableDeclaration>>()); 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 Parser::expectAssignmentOperator()
{ {
Token::Value op = m_scanner->currentToken(); Token::Value op = m_scanner->currentToken();
if (!Token::isAssignmentOp(op)) if (!Token::isAssignmentOp(op))
{
string tokenName;
if (Token::isElementaryTypeName(op)) //for the sake of accuracy in reporting
{
ElementaryTypeNameToken elemTypeName = m_scanner->currentElementaryTypeNameToken();
tokenName = elemTypeName.toString();
}
else
tokenName = Token::name(m_scanner->currentToken());
fatalParserError( fatalParserError(
string("Expected assignment operator, got '") + string("Expected assignment operator, got '") +
tokenName + currentTokenName() +
string("'") string("'")
); );
}
m_scanner->next(); m_scanner->next();
return op; return op;
} }
@ -1465,22 +1466,11 @@ ASTPointer<ASTString> Parser::expectIdentifierToken()
{ {
Token::Value id = m_scanner->currentToken(); Token::Value id = m_scanner->currentToken();
if (id != Token::Identifier) if (id != Token::Identifier)
{
string tokenName;
if (Token::isElementaryTypeName(id)) //for the sake of accuracy in reporting
{
ElementaryTypeNameToken elemTypeName = m_scanner->currentElementaryTypeNameToken();
tokenName = elemTypeName.toString();
}
else
tokenName = Token::name(id);
fatalParserError( fatalParserError(
string("Expected identifier, got '") + string("Expected identifier, got '") +
tokenName + currentTokenName() +
string("'") string("'")
); );
}
return getLiteralAndAdvance(); return getLiteralAndAdvance();
} }

View File

@ -155,6 +155,7 @@ private:
std::vector<std::pair<ASTPointer<Expression>, SourceLocation>> const& _indices std::vector<std::pair<ASTPointer<Expression>, SourceLocation>> const& _indices
); );
std::string currentTokenName();
Token::Value expectAssignmentOperator(); Token::Value expectAssignmentOperator();
ASTPointer<ASTString> expectIdentifierToken(); ASTPointer<ASTString> expectIdentifierToken();
ASTPointer<ASTString> getLiteralAndAdvance(); ASTPointer<ASTString> getLiteralAndAdvance();