Change scanner error diagnostics to be non-intrusive to the token API.

This also implicitly eliminates the magic-token Token::IllegalHex, and
streamlines error diagnostics over a custom enum class.
This commit is contained in:
Christian Parpart
2018-11-24 12:40:51 +01:00
parent e454737a3c
commit e4106bd06e
4 changed files with 83 additions and 62 deletions
+2 -26
View File
@@ -1555,32 +1555,8 @@ ASTPointer<Expression> Parser::parsePrimaryExpression()
expression = nodeFactory.createNode<TupleExpression>(components, isArray);
break;
}
case Token::IllegalHex:
fatalParserError("Expected even number of hex-nibbles within double-quotes.");
break;
case Token::IllegalCommentTerminator:
fatalParserError("Expected multi-line comment-terminator.");
break;
case Token::IllegalStringEscape:
fatalParserError("Invalid String Escape.");
break;
case Token::IllegalStringEndQuote:
fatalParserError("Expected String end-quote.");
break;
case Token::IllegalNumberSeparator:
fatalParserError("Invalid use of Number Separator '_'.");
break;
case Token::IllegalHexDigit:
fatalParserError("Hex Digit missing or invalid.");
break;
case Token::IllegalOctalNotAllowed:
fatalParserError("Octal Numbers not allowed.");
break;
case Token::IllegalExponent:
fatalParserError("Invalid Exponent.");
break;
case Token::IllegalNumberEnd:
fatalParserError("Digit or Identifier-Start not allowed at end of Number.");
case Token::Illegal:
fatalParserError(to_string(m_scanner->currentError()));
break;
default:
if (TokenTraits::isElementaryTypeName(token))