SyntaxError.java
package org.thewonderlemming.c4plantuml.linter;
import org.antlr.v4.runtime.RecognitionException;
import org.antlr.v4.runtime.Recognizer;
import org.apache.commons.lang3.builder.ToStringBuilder;
/**
* Represents a parsing syntax error and holds information such as the line of the error, the offending symbol and so
* on.
*
* @author thewonderlemming
*
*/
public class SyntaxError {
private final int charPositionInLine;
private final RecognitionException e;
private final int line;
private final String msg;
private final Object offendingSymbol;
private final Recognizer<?, ?> recognizer;
/**
* Default constructor.
*
* @param recognizer the ANTLR4 object that recognizes the input and handles the errors.
* @param offendingSymbol the unexpected symbol that caused the syntax error.
* @param line the line of the syntax error in the source file.
* @param charPositionInLine the position of the offending symbol in the error line.
* @param msg the error message.
* @param e the error {@link RecognitionException}.
*/
public SyntaxError(final Recognizer<?, ?> recognizer, final Object offendingSymbol, final int line,
final int charPositionInLine,
final String msg, final RecognitionException e) {
this.recognizer = recognizer;
this.offendingSymbol = offendingSymbol;
this.line = line;
this.charPositionInLine = charPositionInLine;
this.msg = msg;
this.e = e;
}
/**
* Returns the position of the offending character in the error line.
*
* @return the position of the offending character.
*/
public int getCharPositionInLine() {
return charPositionInLine;
}
/**
* returns the error associated exception.
*
* @return the current exception.
*/
public RecognitionException getE() {
return e;
}
/**
* Returns the line of the error in the source file.
*
* @return the line of the error.
*/
public int getLine() {
return line;
}
/**
* returns the message of the syntax error.
*
* @return the error message.
*/
public String getMsg() {
return msg;
}
/**
* Returns the unexpected symbol that caused that error.
*
* @return the unexpected symbol.
*/
public Object getOffendingSymbol() {
return offendingSymbol;
}
/**
* Returns the ANTLR4 object that recognizes the input and handles the errors.
*
* @return the ANTLR4 recognizer instance.
*/
public Recognizer<?, ?> getRecognizer() {
return recognizer;
}
/**
* Returns a human understandable representation of the current instance.
*/
@Override
public String toString() {
return new ToStringBuilder(this)
.append("charPositionInLine", this.charPositionInLine)
.append("line", this.line)
.append("offendingSymbol", this.offendingSymbol)
.append("message", this.msg)
.append("exception", this.e)
.toString();
}
}