[ 
https://issues.apache.org/jira/browse/UIMA-4517?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Renaud Richardet updated UIMA-4517:
-----------------------------------
    Attachment: RutaParser.diff

Dear Peter,

Attached a patch to fix the ArrayIndexOutOfBoundsException. It works, but I am 
not sure it's the best way to fix it -- I will let you decide. Also, not sure 
if 'none' is the best value for stringExpected.

Now the message thrown is informative (see testEscapedDot):

Error in Ruta3791116492856817165, line 1, ".": expected none, but found DOT

But why print it to System.out (instead of throwing an exception)?

in src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
{code}
    public void emitErrorMessage(String msg) {
        System.out.println(msg);
    }
{code}

Thanks, Renaud

> 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
>            Priority: Minor
>             Fix For: 2.3.1ruta
>
>         Attachments: RutaParser.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)

Reply via email to