in ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/parser/DLTKRutaErrorReporter.java [172:296]
public void reportErrorOld(RecognitionException re) {
if (reporter == null) {
return;
}
if (re.token == null) {
return;
}
Token token = re.token;
int line = re.token.getLine();
int index = token.getTokenIndex();
if (index < 0) {
index = re.index;
TokenStream tokenStream = parser.getTokenStream();
try {
token = tokenStream.get(index - 1);
line = token.getLine();
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
}
String message = re.getMessage();
String m = "unknown error";
if (message != null) {
m = message;
}
if (re instanceof NoViableAltException) {
NoViableAltException ec = (NoViableAltException) re;
if (message == null || ec.token.getText() == null) {
m = ec.toString();
} else {
m = "Syntax Error:" + message + " : " + ec.token.getText();
}
String[] messages = { m };
int st = converter.convert(ec.token.getLine(), ec.token.getCharPositionInLine());
String sm = ec.token.getText();
int et = st + ec.token.getText().length();
if (st == -1)
return;
DefaultProblem defaultProblem = new DefaultProblem("", messages[0], 0, new String[] {},
ProblemSeverities.Error, st, et, ec.token.getLine());
if (!problems.contains(defaultProblem)) {
reporter.reportProblem(defaultProblem);
problems.add(defaultProblem);
}
} else if (re instanceof MismatchedTokenException) {
MismatchedTokenException ec = (MismatchedTokenException) re;
if (message == null || ec.token.getText() == null) {
m = ec.toString();
} else {
m = "mismatched input: " + message + " : " + ec.token.getText();
}
// if (message == null) {
// message = "mismatched input "
// + this.parser.getTokenErrorDisplay(ec.token);
// // return;
// }
String[] messages = { m }; // "Syntax Error:" + message, message,
// ec.token.getText() };
// this.converter.convert(ec.token).getColumn() - 1;
// String sm = ec.token.getText();
// st + ((sm != null) ? sm.length() : 1);
// TODO martin: "rewrite converter"
int st = converter.convert(ec.token.getLine(), ec.token.getCharPositionInLine());
// String sm = ec.token.getText();
int et = st;
if (ec.token.getText() != null) {
et = ec.token.getText().length() + st;
if (et >= this.converter.length()) {
et = this.converter.length() - 1;
st -= 2;
}
} else {
st = ((CommonToken) token).getStartIndex();
et = ((CommonToken) token).getStopIndex();
}
// reporter.handle(CompilerOptions.OFFSET, messages, messages,
// st, et);
DefaultProblem defaultProblem = new DefaultProblem("", messages[0], 0, new String[] {},
ProblemSeverities.Error, st, et, ec.line);
if (!problems.contains(defaultProblem)) {
reporter.reportProblem(defaultProblem);
problems.add(defaultProblem);
}
} else if (re instanceof FailedPredicateException) {
String[] messages = { "Syntax Error:" + message, message };
if (message == null) {
messages[0] = re.toString();
}
DLTKToken convert = this.converter.convert(re.token);
int st = convert.getColumn();
int et = convert.getColumn() + convert.getText().length();
// reporter.handle(CompilerOptions.OFFSET, messages, messages,
// st, et);
DefaultProblem defaultProblem = new DefaultProblem("",
"Type not defined in this script: " + convert.getText(), 0, new String[] {},
ProblemSeverities.Warning, st, et, re.token.getLine());
if (!problems.contains(defaultProblem)) {
reporter.reportProblem(defaultProblem);
problems.add(defaultProblem);
}
} else {
String[] messages = { "Syntax Error:" + message, message };
if (message == null) {
messages[0] = re.toString();
}
DLTKToken convert = this.converter.convert(re.token);
int st = convert.getColumn();
int et = convert.getColumn() + convert.getText().length();
// reporter.handle(CompilerOptions.OFFSET, messages, messages,
// st, et);
DefaultProblem defaultProblem = new DefaultProblem("", messages[0], 0, new String[] {},
ProblemSeverities.Error, st, et, re.token.getLine());
if (!problems.contains(defaultProblem)) {
reporter.reportProblem(defaultProblem);
problems.add(defaultProblem);
}
}
// } catch (CoreException e) {
// if (DLTKCore.DEBUG) {
// e.printStackTrace();
// }
// }
}