Hi,

some of the rules behave as expected. It's maybe a bit counterintuitive,
but I do not see a way to improve it. I will fix the rest in the next
few days.

An example:

(SPECIAL ALL* SPECIAL) {-> MARK(TMP_GenericAllSTAR)};

ALL is a parent type of SPECIAL and * is a greedy quantifier. Therefore
ALL matches on all annotations and also on the SPECIAL annotations until
the end of the document. Then, there is no SPECIAL annotation left to
match and the rule fails.

May I use your examples in a junit test case?

Best,

Peter


Am 17.12.2013 17:45, schrieb Peter Klügl:
> Thanks, I will take a look at it ASAP.
>
> Best,
>
> Peter
>
> Am 13.12.2013 16:37, schrieb Joerg Poecher:
>> Hello,
>>
>>  
>>
>> I would like to report some issues that occurred while testing the Ruta
>> Workbench.
>>
>>  
>>
>> There seems to be a problem with certain composed disjunctive rules in
>> combination with quantifiers.
>>
>> Please see the source and input files below for clarification.
>>
>>  
>>
>> OS: Windows 8.1
>>
>> Eclipse Version: Kepler Service Release 1, Build id: 20130919-0819
>>
>> UIMA Runtime: 2.4.2
>>
>> Ruta Version: 2.1.0
>>
>> JDK 
>>
>>  
>>
>> Best wishes
>>
>> Joerg
>>
>>  
>>
>>  
>>
>>   _____  
>>
>> Ruta Source file:
>>
>>  
>>
>> DECLARE TMP_ConcreteSpecialPLUS;
>>
>> DECLARE TMP_ConcreteSpecialComposedPLUS;
>>
>> DECLARE TMP_ConcreteSpecialComposedSTAR;
>>
>> DECLARE TMP_ConcreteSpecialNumComposedPLUS;
>>
>> DECLARE TMP_ConcreteNumSpecialComposedPLUS;
>>
>>  
>>
>> DECLARE TMP_GenericAny;
>>
>> DECLARE TMP_GenericAnyPLUS;
>>
>> DECLARE TMP_GenericAnyPLUS_Reluctant;
>>
>> DECLARE TMP_GenericAnySTAR;
>>
>> DECLARE TMP_GenericAnySTAR_Reluctant;
>>
>>  
>>
>> DECLARE TMP_GenericAll;
>>
>> DECLARE TMP_GenericAllPLUS;
>>
>> DECLARE TMP_GenericAllPLUS_Reluctant;
>>
>> DECLARE TMP_GenericAllSTAR;
>>
>> DECLARE TMP_GenericAllSTAR_Reluctant;
>>
>>  
>>
>> DECLARE TMP_GenericSharp;
>>
>>  
>>
>> DECLARE TMP_GenericWordPLUS;
>>
>> DECLARE TMP_ConcreteSw;
>>
>> DECLARE TMP_ConcreteCw;
>>
>> DECLARE TMP_ConcreteCwPLUS;
>>
>> DECLARE TMP_ConcreteSwPLUS;
>>
>> DECLARE TMP_ConcreteSwCwComposedPLUS;
>>
>>  
>>
>> //
>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> +++++++++++++++++++++++++++++++++++++++++
>>
>> //  DOCUMENTATION:
>>
>> //  
>>
>> //  *   Rules without comments annotate as intended
>>
>> //  *   Commented rules indicate a problem
>>
>> //  
>>
>> //  Adding the '?' modifier to any of the composed disjunctive rules as '(
>> ... | ... )+' or '( ... | ... )*' below 
>>
>> //  throws an exception: see excerpt of log file at the end
>>
>> //
>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> +++++++++++++++++++++++++++++++++++++++++
>>
>>  
>>
>> //
>> ============================================================================
>> =========================================
>>
>>  
>>
>> // Does not match anything
>>
>> SPECIAL ( SPECIAL | CW | SW )* {-> MARK(TMP_ConcreteSpecialComposedSTAR)}
>> SPECIAL;
>>
>>  
>>
>> // Does not match anything
>>
>> (SPECIAL ( SPECIAL | CW )+ SPECIAL) {->
>> MARK(TMP_ConcreteSpecialComposedPLUS)};
>>
>>  
>>
>> // when adding a '?' after '(...)+' an exception is thrown
>>
>> (SPECIAL ( NUM | CW )+ SPECIAL) {->
>> MARK(TMP_ConcreteSpecialNumComposedPLUS)};
>>
>> (NUM ( SPECIAL | CW )+ NUM) {-> MARK(TMP_ConcreteNumSpecialComposedPLUS)};
>>
>>  
>>
>> //
>> ============================================================================
>> =========================================
>>
>>  
>>
>> //  Works only with '?' - it's the same problem as 'ANY+' resp. 'ALL+' below
>>
>>
>> (SPECIAL SPECIAL+? SPECIAL) {-> MARK(TMP_ConcreteSpecialPLUS)};
>>
>>  
>>
>> //
>> ============================================================================
>> =========================================
>>
>>  
>>
>> (SPECIAL CW SPECIAL) {-> MARK(TMP_ConcreteCw)};
>>
>>  
>>
>> (SPECIAL SW SPECIAL) {-> MARK(TMP_ConcreteSw)};
>>
>>  
>>
>> (SPECIAL CW+ SPECIAL) {-> MARK(TMP_ConcreteCwPLUS)};
>>
>>  
>>
>> (SPECIAL SW+ SPECIAL) {-> MARK(TMP_ConcreteSwPLUS)};
>>
>>  
>>
>> // throws an exception when adding a '?' after '(...)+'
>>
>> (SPECIAL (CW | SW)+ SPECIAL) {-> MARK(TMP_ConcreteSwCwComposedPLUS)};
>>
>>  
>>
>> (SPECIAL W+ SPECIAL) {-> MARK(TMP_GenericWordPLUS)};
>>
>>  
>>
>> //
>> ============================================================================
>> =========================================
>>
>>  
>>
>> (SPECIAL ANY SPECIAL) {-> MARK(TMP_GenericAny)};
>>
>>  
>>
>> // does not match anything
>>
>> (SPECIAL ANY+ SPECIAL) {-> MARK(TMP_GenericAnyPLUS)};
>>
>>  
>>
>> (SPECIAL ANY+? SPECIAL) {-> MARK(TMP_GenericAnyPLUS_Reluctant)};
>>
>>  
>>
>> // does not match anything
>>
>> (SPECIAL ANY* SPECIAL) {-> MARK(TMP_GenericAnySTAR)};
>>
>>  
>>
>> (SPECIAL ANY*? SPECIAL) {-> MARK(TMP_GenericAnySTAR_Reluctant)};
>>
>>  
>>
>> //
>> ============================================================================
>> =========================================
>>
>>  
>>
>> (SPECIAL ALL SPECIAL) {-> MARK(TMP_GenericAll)};
>>
>>  
>>
>> // does not match anything
>>
>> (SPECIAL ALL+ SPECIAL) {-> MARK(TMP_GenericAllPLUS)};
>>
>>  
>>
>> (SPECIAL ALL+? SPECIAL) {-> MARK(TMP_GenericAllPLUS_Reluctant)};
>>
>>  
>>
>> // does not match anything
>>
>> (SPECIAL ALL* SPECIAL) {-> MARK(TMP_GenericAllSTAR)};
>>
>>  
>>
>> (SPECIAL ALL*? SPECIAL) {-> MARK(TMP_GenericAllSTAR_Reluctant)};
>>
>>  
>>
>> //
>> ============================================================================
>> =========================================
>>
>>  
>>
>> (SPECIAL # SPECIAL) {-> MARK(TMP_GenericSharp)};
>>
>>  
>>
>>   _____  
>>
>> Input file:
>>
>>  
>>
>> ( CAP CAP CAP sw CAP CAP Cw sw CAP Cw )
>>
>> ( sw Cw sw Cw )
>>
>> ( sw Cw <TAG> sw )
>>
>> ( sw sw )
>>
>> ( Cw Cw )
>>
>> ( CAP CAP )
>>
>> ( sw )
>>
>> (sw)
>>
>> (Cw)
>>
>> ( Cw )
>>
>> ( CAP )
>>
>> ( )
>>
>> ( $$$ )
>>
>>  
>>
>> 1 Cw $ Cw Cw $ 8
>>
>> ( Cw $ Cw Cw $ )
>>
>> ( Cw 5 Cw Cw 8 )
>>
>>  
>>
>>  
>>
>>   _____  
>>
>> Log file:
>>
>>  
>>
>> !ENTRY org.eclipse.core.jobs 4 2 2013-12-13 15:56:10.403
>>
>> !MESSAGE An internal error occurred during: "Label Job".
>>
>> !STACK 0
>>
>> org.eclipse.swt.SWTException: Invalid thread access
>>
>>                 at org.eclipse.swt.SWT.error(SWT.java:4397)
>>
>>                 at org.eclipse.swt.SWT.error(SWT.java:4312)
>>
>>                 at org.eclipse.swt.SWT.error(SWT.java:4283)
>>
>>                 at org.eclipse.swt.widgets.Display.error(Display.java:1258)
>>
>>                 at
>> org.eclipse.swt.widgets.Display.checkDevice(Display.java:764)
>>
>>                 at
>> org.eclipse.swt.widgets.Display.disposeExec(Display.java:1203)
>>
>>                 at
>> org.eclipse.jdt.internal.ui.viewsupport.ImageDescriptorRegistry.hookDisplay(
>> ImageDescriptorRegistry.java:77)
>>
>>                 at
>> org.eclipse.jdt.internal.ui.viewsupport.ImageDescriptorRegistry.<init>(Image
>> DescriptorRegistry.java:40)
>>
>>                 at
>> org.eclipse.jdt.internal.ui.JavaPlugin.internalGetImageDescriptorRegistry(Ja
>> vaPlugin.java:954)
>>
>>                 at
>> org.eclipse.jdt.internal.ui.JavaPlugin.getImageDescriptorRegistry(JavaPlugin
>> .java:347)
>>
>>                 at
>> org.eclipse.jdt.internal.debug.ui.JDIModelPresentation.getVariableImage(JDIM
>> odelPresentation.java:914)
>>
>>                 at
>> org.eclipse.jdt.internal.debug.ui.JDIModelPresentation.getImage(JDIModelPres
>> entation.java:682)
>>
>>                 at
>> org.eclipse.debug.internal.ui.LazyModelPresentation.getImage(LazyModelPresen
>> tation.java:127)
>>
>>                 at
>> org.eclipse.debug.internal.ui.DelegatingModelPresentation.getImage(Delegatin
>> gModelPresentation.java:143)
>>
>>                 at
>> org.eclipse.debug.internal.ui.views.launch.DebugElementHelper.getImageDescri
>> ptor(DebugElementHelper.java:70)
>>
>>                 at
>> org.eclipse.debug.internal.ui.model.elements.DebugElementLabelProvider.getIm
>> ageDescriptor(DebugElementLabelProvider.java:72)
>>
>>                 at
>> org.eclipse.debug.internal.ui.model.elements.VariableLabelProvider.getImageD
>> escriptor(VariableLabelProvider.java:70)
>>
>>                 at
>> org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider.getImageDe
>> scriptor(ElementLabelProvider.java:289)
>>
>>                 at
>> org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider.retrieveLa
>> bel(ElementLabelProvider.java:216)
>>
>>                 at
>> org.eclipse.jdt.internal.debug.ui.variables.JavaVariableLabelProvider.retrie
>> veLabel(JavaVariableLabelProvider.java:183)
>>
>>                 at
>> org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider$LabelUpdat
>> er.run(ElementLabelProvider.java:160)
>>
>>                 at
>> org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider$LabelJob.r
>> un(ElementLabelProvider.java:74)
>>
>>                 at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
>>
>>
>>
>> ---
>> Diese E-Mail ist frei von Viren und Malware, denn der avast! Antivirus 
>> Schutz ist aktiv.
>> http://www.avast.com
>>

Reply via email to