Constructor. Token may be invalid when thrown by the Lexer.
Returns a string that represents the error message and the token and the location of the token where the error occurred.
The offending token. This may have an invalid position field depending on why the error was thrown.
This exception is thrown by the Lexer and Parser when an error occurs during tokenizing or parsing.