package de.skuzzle.polly.core.parser.problems; import java.util.SortedSet; import de.skuzzle.polly.core.parser.ParseException; import de.skuzzle.polly.core.parser.Position; import de.skuzzle.polly.core.parser.SyntaxException; import de.skuzzle.polly.core.parser.Token; import de.skuzzle.polly.core.parser.TokenType; import de.skuzzle.polly.core.parser.ast.declarations.types.Type; import de.skuzzle.polly.core.parser.ast.visitor.ASTTraversalException; public class SimpleProblemReporter extends MultipleProblemReporter { public SimpleProblemReporter() { super(); } private SimpleProblemReporter(SortedSet<Problem> problems, Position position) { super(problems, position); } @Override public ProblemReporter subReporter(Position clipping) { return new SimpleProblemReporter(this.problems, clipping); } @Override public void lexicalProblem(String problem, Position position) throws ParseException { super.lexicalProblem(problem, position); throw new ParseException(problem, this.clip(position)); } @Override public void syntaxProblem(String problem, Position position, Object... params) throws ParseException { super.syntaxProblem(problem, position, params); throw new ParseException(Problems.format(problem, params), this.clip(position)); } @Override public void syntaxProblem(TokenType expected, Token occurred, Position position) throws ParseException { super.syntaxProblem(expected, occurred, position); throw new SyntaxException(expected, occurred, this.clip(position)); } @Override public void semanticProblem(String problem, Position position, Object... params) throws ParseException { super.semanticProblem(problem, position, params); throw new ParseException(Problems.format(problem, params), this.clip(position)); } @Override public void typeProblem(Type expected, Type occurred, Position position) throws ASTTraversalException { super.typeProblem(expected, occurred, position); throw new ASTTraversalException(this.clip(position), Problems.format(Problems.TYPE_ERROR, expected, occurred)); } @Override public void runtimeProblem(String problem, Position position, Object... params) throws ASTTraversalException { super.runtimeProblem(problem, position, params); throw new ASTTraversalException(this.clip(position), Problems.format(problem, params)); } }