public void reportErrorOld()

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();
    // }
    // }
  }