You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2015/06/24 17:51:44 UTC

svn commit: r1687312 - in /uima/ruta/trunk/ruta-core/src: main/antlr3/org/apache/uima/ruta/parser/ main/java/org/apache/uima/ruta/rule/ main/java/org/apache/uima/ruta/verbalize/ test/java/org/apache/uima/ruta/

Author: pkluegl
Date: Wed Jun 24 15:51:44 2015
New Revision: 1687312

URL: http://svn.apache.org/r1687312
Log:
UIMA-4471
- fixed combination of lined rules
- simplified test

Modified:
    uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleElement.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ScriptVerbalizer.java
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java

Modified: uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g?rev=1687312&r1=1687311&r2=1687312&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g (original)
+++ uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g Wed Jun 24 15:51:44 2015
@@ -826,7 +826,8 @@ ruleElements[RuleElementContainer contai
 
 ruleElement[RuleElementContainer container] returns [RuleElement re = null]
 @init{
-List<RutaStatement> innerRules = new ArrayList<RutaStatement>();
+List<RutaStatement> innerConditionRules = new ArrayList<RutaStatement>();
+List<RutaStatement> innerActionRules = new ArrayList<RutaStatement>();
 }
 	:
 	start = STARTANCHOR? (
@@ -838,18 +839,17 @@ List<RutaStatement> innerRules = new Arr
 	{re.setStartAnchor(start != null);}
 	(t = (THEN2) 
 	LCURLY 
-	(rule = simpleStatement {innerRules.add(rule);})+ 
+	(rule = simpleStatement {innerConditionRules.add(rule);})+ 
 	RCURLY 
-	{re.setInlinedRules(innerRules);
-	boolean block = t != null && t.getText().equals("->"); 
-	re.setInlineMode(block);})?
+	{re.setInlinedConditionRules(innerConditionRules);}
+
+	)?
 	(t = (THEN) 
 	LCURLY 
-	(rule = simpleStatement {innerRules.add(rule);})+ 
+	(rule = simpleStatement {innerActionRules.add(rule);})+ 
 	RCURLY 
-	{re.setInlinedRules(innerRules);
-	boolean block = t != null && t.getText().equals("->"); 
-	re.setInlineMode(block);})?
+	{re.setInlinedActionRules(innerActionRules);}
+	)?
 	;	
 
 ruleElementWildCard [RuleElementContainer container] returns [AbstractRuleElement re = null]

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java?rev=1687312&r1=1687311&r2=1687312&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java Wed Jun 24 15:51:44 2015
@@ -52,10 +52,10 @@ public abstract class AbstractRuleElemen
   @SuppressWarnings("unchecked")
   protected final InferenceCrowd emptyCrowd = new InferenceCrowd(Collections.EMPTY_LIST);
 
-  protected List<RutaStatement> inlinedRules;
-
-  protected boolean inlineMode;
+  protected List<RutaStatement> inlinedConditionRules;
 
+  protected List<RutaStatement> inlinedActionRules;
+  
   public AbstractRuleElement(RuleElementQuantifier quantifier,
           List<AbstractRutaCondition> conditions, List<AbstractRutaAction> actions,
           RuleElementContainer container, RutaBlock parent) {
@@ -87,15 +87,23 @@ public abstract class AbstractRuleElemen
     }
   }
 
-  protected List<ScriptApply> processInlinedBlockRules(RuleMatch ruleMatch, RutaStream stream,
+  protected List<ScriptApply> processInlinedActionRules(RuleMatch ruleMatch, RutaStream stream,
           InferenceCrowd crowd) {
-    if (inlineMode && inlinedRules != null && !inlinedRules.isEmpty()) {
-      return processInlinedRules(ruleMatch, stream, crowd);
+    if (inlinedActionRules != null && !inlinedActionRules.isEmpty()) {
+      return processInlinedRules(inlinedActionRules, ruleMatch, stream, crowd);
     }
     return null;
   }
 
-  protected List<ScriptApply> processInlinedRules(RuleMatch ruleMatch, RutaStream stream,
+  protected List<ScriptApply> processInlinedConditionRules(RuleMatch ruleMatch, RutaStream stream,
+          InferenceCrowd crowd) {
+    if (inlinedConditionRules != null && !inlinedConditionRules.isEmpty()) {
+      return processInlinedRules(inlinedConditionRules, ruleMatch, stream, crowd);
+    }
+    return null;
+  }
+  
+  protected List<ScriptApply> processInlinedRules(List<RutaStatement> inlinedRules, RuleMatch ruleMatch, RutaStream stream,
           InferenceCrowd crowd) {
     List<ScriptApply> result = new ArrayList<ScriptApply>();
     List<AnnotationFS> matchedAnnotationsOf = ruleMatch.getMatchedAnnotationsOf(this);
@@ -116,13 +124,7 @@ public abstract class AbstractRuleElemen
     return result;
   }
 
-  protected List<ScriptApply> processInlinedConditionRules(RuleMatch ruleMatch, RutaStream stream,
-          InferenceCrowd crowd) {
-    if (!inlineMode && inlinedRules != null && !inlinedRules.isEmpty()) {
-      return processInlinedRules(ruleMatch, stream, crowd);
-    }
-    return null;
-  }
+  
 
   public void apply(RuleMatch ruleMatch, RutaStream stream, InferenceCrowd crowd) {
     for (AbstractRutaAction action : actions) {
@@ -130,7 +132,7 @@ public abstract class AbstractRuleElemen
       action.execute(ruleMatch, this, stream, crowd);
       crowd.endVisit(action, null);
     }
-    processInlinedBlockRules(ruleMatch, stream, crowd);
+    processInlinedActionRules(ruleMatch, stream, crowd);
   }
 
   protected boolean matchInnerRules(RuleMatch ruleMatch, RutaStream stream, InferenceCrowd crowd) {
@@ -278,20 +280,20 @@ public abstract class AbstractRuleElemen
     return startAnchor;
   }
 
-  public void setInlinedRules(List<RutaStatement> innerRules) {
-    this.inlinedRules = innerRules;
-  }
-
-  public void setInlineMode(boolean blockMode) {
-    this.inlineMode = blockMode;
-  }
-
-  public List<RutaStatement> getInlinedRules() {
-    return inlinedRules;
+  public void setInlinedConditionRules(List<RutaStatement> innerRules) {
+    this.inlinedConditionRules = innerRules;
   }
-
-  public boolean getInlineMode() {
-    return inlineMode;
+  
+  public List<RutaStatement> getInlinedConditionRules() {
+    return inlinedConditionRules;
+  }
+  
+  public void setInlinedActionRules(List<RutaStatement> innerRules) {
+    this.inlinedActionRules = innerRules;
+  }
+  
+  public List<RutaStatement> getInlinedActionRules() {
+    return inlinedActionRules;
   }
 
 }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleElement.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleElement.java?rev=1687312&r1=1687311&r2=1687312&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleElement.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleElement.java Wed Jun 24 15:51:44 2015
@@ -78,8 +78,8 @@ public interface RuleElement {
 
   boolean isStartAnchor();
 
-  void setInlinedRules(List<RutaStatement> innerRules);
-
-  void setInlineMode(boolean block);
+  void setInlinedActionRules(List<RutaStatement> innerRules);
+  
+  void setInlinedConditionRules(List<RutaStatement> innerRules);
 
 }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ScriptVerbalizer.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ScriptVerbalizer.java?rev=1687312&r1=1687311&r2=1687312&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ScriptVerbalizer.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ScriptVerbalizer.java Wed Jun 24 15:51:44 2015
@@ -156,21 +156,23 @@ public class ScriptVerbalizer {
     }
     if(re instanceof AbstractRuleElement) {
       AbstractRuleElement are = (AbstractRuleElement) re;
-      boolean blockMode = are.getInlineMode();
-      List<RutaStatement> inlinedRules = are.getInlinedRules();
-      if(inlinedRules != null && !inlinedRules.isEmpty()) {
-        if(blockMode) {
-          result.append(THEN);
-        } else {
-          result.append(THEN2);
+      List<RutaStatement> inlinedConditionRules = are.getInlinedConditionRules();
+      if(inlinedConditionRules != null && !inlinedConditionRules.isEmpty()) {
+        result.append(THEN2);
+        result.append(CBOPEN);
+        for (RutaStatement rutaStatement : inlinedConditionRules) {
+          result.append(verbalize(rutaStatement));
+          result.append(";");
         }
+      }
+      List<RutaStatement> inlinedActionRules = are.getInlinedActionRules();
+      if(inlinedConditionRules != null && !inlinedActionRules.isEmpty()) {
+        result.append(THEN);
         result.append(CBOPEN);
-        for (RutaStatement rutaStatement : inlinedRules) {
+        for (RutaStatement rutaStatement : inlinedActionRules) {
           result.append(verbalize(rutaStatement));
           result.append(";");
-//          result.append("\n");
         }
-        result.append(CBCLOSE);
       }
     }
     return result.toString();

Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java?rev=1687312&r1=1687311&r2=1687312&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/InlinedRulesTest.java Wed Jun 24 15:51:44 2015
@@ -45,7 +45,7 @@ public class InlinedRulesTest {
      script +=
      "(T1 PERIOD T1{-> T12}){CONTAINS(COLON)}<-{W COLON (W W)<-{ANY{REGEXP(\"match.*\")};};};\n";
     // both types
-    script += "(T1 PERIOD T1){CONTAINS(COLON)}<-{W COLON W W;}->{COLON{->T13};};\n";
+    script += "T1<-{W COLON W W;}->{COLON{->T13};};\n";
     script += "(T1 PERIOD T1){CONTAINS(COLON)}<-{W COLON (W W)<-{ANY{REGEXP(\"match.*\")};}->{W{->T14};};};\n";
     CAS cas = null;
     try {
@@ -83,7 +83,7 @@ public class InlinedRulesTest {
                     2, //
                     "A rule is composed of a sequence of rule elements and a rule element essentially consists of four parts: A matching condition, an optional quantifier, a list of conditions and a list of actions",
                     "The matching condition is typically a type of an annotation by which the rule element matches on the covered text of one of those annotations");
-    RutaTestUtils.assertAnnotationsEquals(cas, 13, 2, ":", ":");
+    RutaTestUtils.assertAnnotationsEquals(cas, 13, 1, ":");
     RutaTestUtils.assertAnnotationsEquals(cas, 14, 4, "A", "A", "matching", "matching");
 
     cas.release();