Hello,

When using Ruta in a non-Workbench setup (in my case, Maven), I don't
manage to catch Ruta script errors in a meaningful way. Here is an example:

"aaa\." -> MyAnnotation; // fails because of escaped dot


The thrown error is quite uninformative:


java.lang.ArrayIndexOutOfBoundsException: -1

at org.apache.uima.ruta.parser.RutaParser.emitErrorMessage(
RutaParser.java:365)

at org.apache.uima.ruta.parser.RutaParser.reportError(RutaParser.java:386)

at org.antlr.runtime.BaseRecognizer.recoverFromMismatchedToken(
BaseRecognizer.java:603)

at org.antlr.runtime.BaseRecognizer.match(BaseRecognizer.java:115)

at org.apache.uima.ruta.parser.RutaParser.file_input(RutaParser.java:680)

at org.apache.uima.ruta.engine.RutaEngine.loadScript(RutaEngine.java:1058)

at org.apache.uima.ruta.engine.RutaEngine.initializeScript(
RutaEngine.java:743)

...

Here is the code to reproduce:
https://github.com/renaud/annotate_ruta_example/tree/ruta_error_message

However, if I paste that script line in the Ruta Workbench, it nicely
underlines it in red at the exact location, and even says "Mismatched
input". How do I achieve the same programatically (from Java)?

Thanks, Renaud

Reply via email to