package mireka.address.parser.base; import java.text.MessageFormat; import java.text.ParseException; import java.util.List; public abstract class Token { public int position; public Token(int position) { this.position = position; } public abstract List<CharToken> getSpellingTokens(); public ParseException syntaxException(Object expected) { return new ParseException("Syntax error. Expected: " + expected + ", received: " + toString() + " at character position " + position + ".", position); } public ParseException otherSyntaxException(String sentence) { String formattedMessage = MessageFormat.format(sentence, this); return new ParseException("Syntax error. " + formattedMessage + " Character position: " + position + ".", position); } /** * Returns the token in a readable format which can be used in error * messages. */ @Override public abstract String toString(); }