[
https://issues.apache.org/jira/browse/UIMA-4517?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14633144#comment-14633144
]
Peter Klügl commented on UIMA-4517:
-----------------------------------
I remember now why I didn't throw an exception in the first place: the parser
cannot recover from errors, e.g., continuing parsing for the remaining rules.In
ruta-core that does not matter, flawed rules should not executed at all.
However, in the workbench, it is essential for the editing support and the AST.
So, should by the analysis engine be robust enough to apply a script with some
broken rules? I don't think so. Opinions?
> fixing ArrayOutOfBounds exception when parsing invalid Ruta script
> ------------------------------------------------------------------
>
> Key: UIMA-4517
> URL: https://issues.apache.org/jira/browse/UIMA-4517
> Project: UIMA
> Issue Type: Bug
> Components: ruta
> Affects Versions: 2.3.1ruta
> Reporter: Renaud Richardet
> Assignee: Peter Klügl
> Priority: Minor
> Fix For: 2.3.1ruta
>
> Attachments: RutaParseRuntimeException.java, RutaParser.diff,
> RutaParser2.diff
>
>
> looking for more informative exception messages when parsing invalid Ruta
> script
> 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)?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)