package de.fuberlin.projecta.parser; import de.fuberlin.commons.lexer.IToken; public class ParseException extends RuntimeException { private IToken token; private String details; private static final long serialVersionUID = 1976621175796612561L; public ParseException(IToken token) { this("An unexpected parser error occured", token); } public ParseException(String brief, IToken token) { this(brief, "(No details)", token); } public ParseException(String brief, String details, IToken token) { super(brief); this.details = details; this.token = token; } /** * Convenience method to get line number */ public int getLineNumber() { if (token != null) return token.getLineNumber(); return -1; } /** * Convenience method to get offset */ public int getOffset() { if (token != null) return token.getOffset(); return -1; } public String getText() { if (token != null) return token.getText(); return ""; } public IToken getToken() { return token; } public String getDetails() { return details; } }