@Override public void parserProblem( Severity problemSeverity, String problemMessage, String processingContext, int startOffset, int endOffset) { IPrsStream prsStream = getIPrsStream(); int leftToken = prsStream.getTokenIndexAtCharacter(startOffset); int rightToken = prsStream.getTokenIndexAtCharacter(endOffset); int leftTokenLoc = (leftToken > rightToken ? rightToken : leftToken); int rightTokenLoc = rightToken; int line = prsStream.getLine(leftTokenLoc) + getErrorReportLineOffset(); CustomDiagnostic diagnostic = new CustomDiagnostic( problemSeverity.getDiagnosticSeverity(), "org.eclipse.ocl", 1, problemMessage, new Object[] {processingContext}); if (line > 0) { diagnostic.setStartLine(prsStream.getLine(leftTokenLoc) + getErrorReportLineOffset()); diagnostic.setStartPosition(prsStream.getColumn(leftTokenLoc)); diagnostic.setEndPosition(prsStream.getEndColumn(rightTokenLoc)); diagnostic.setEndLine(prsStream.getEndLine(rightTokenLoc) + getErrorReportLineOffset()); } if (diagnostics == null) { diagnostics = diagnostic; } else { diagnostics.add(diagnostic); } }