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 2013/06/01 15:15:05 UTC

svn commit: r1488523 - in /uima/sandbox/ruta/trunk: ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/ ruta-core/src/main/java/org/apache/uima/ruta/condition/ ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ ruta-core/src/test/java/org/apach...

Author: pkluegl
Date: Sat Jun  1 13:15:05 2013
New Revision: 1488523

URL: http://svn.apache.org/r1488523
Log:
UIMA-2955
- fixed for regexp condition

Modified:
    uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
    uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ConditionFactory.java
    uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/RegExpCondition.java
    uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ConditionVerbalizer.java
    uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ExpressionVerbalizer.java
    uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/verbalizer/ConditionVerbalizerTest.java
    uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g

Modified: uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g?rev=1488523&r1=1488522&r2=1488523&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g (original)
+++ uima/sandbox/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g Sat Jun  1 13:15:05 2013
@@ -1159,7 +1159,11 @@ conditionPosition returns [AbstractRutaC
     ;
 conditionRegExp returns [AbstractRutaCondition cond = null]
     :
-    REGEXP LPAREN (v = variable COMMA)? pattern = stringExpression (COMMA caseSensitive = booleanExpression)? RPAREN
+    REGEXP LPAREN 
+    ((stringExpression COMMA stringExpression)=> v = stringExpression COMMA pattern = stringExpression
+    | pattern = stringExpression
+    )
+    (COMMA caseSensitive = booleanExpression)? RPAREN
     {cond = ConditionFactory.createConditionRegExp(v, pattern, caseSensitive, $blockDeclaration::env);}    
     ;
 

Modified: uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ConditionFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ConditionFactory.java?rev=1488523&r1=1488522&r2=1488523&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ConditionFactory.java (original)
+++ uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/ConditionFactory.java Sat Jun  1 13:15:05 2013
@@ -129,9 +129,9 @@ public class ConditionFactory {
     return new RegExpCondition(patternExpr, ignoreCase);
   }
 
-  public static AbstractRutaCondition createConditionRegExp(Token var,
+  public static AbstractRutaCondition createConditionRegExp(StringExpression v,
           StringExpression patternExpr, BooleanExpression ignoreCase, RutaBlock parent) {
-    return new RegExpCondition(var == null ? null : var.getText(), patternExpr, ignoreCase);
+    return new RegExpCondition(v, patternExpr, ignoreCase);
   }
 
   public static AbstractRutaCondition createConditionScore(NumberExpression min,

Modified: uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/RegExpCondition.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/RegExpCondition.java?rev=1488523&r1=1488522&r2=1488523&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/RegExpCondition.java (original)
+++ uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/condition/RegExpCondition.java Sat Jun  1 13:15:05 2013
@@ -37,7 +37,7 @@ public class RegExpCondition extends Ter
 
   private final BooleanExpression ignoreCase;
 
-  private String variable;
+  private StringExpression variable;
 
   public RegExpCondition(StringExpression pattern, BooleanExpression ignoreCase) {
     super();
@@ -45,9 +45,9 @@ public class RegExpCondition extends Ter
     this.ignoreCase = ignoreCase == null ? new SimpleBooleanExpression(false) : ignoreCase;
   }
 
-  public RegExpCondition(String variable, StringExpression pattern, BooleanExpression ignoreCase) {
+  public RegExpCondition(StringExpression v, StringExpression pattern, BooleanExpression ignoreCase) {
     this(pattern, ignoreCase);
-    this.variable = variable;
+    this.variable = v;
   }
 
   @Override
@@ -67,8 +67,7 @@ public class RegExpCondition extends Ter
       }
       matcher = regularExpPattern.matcher(coveredText);
     } else {
-      RutaEnvironment environment = element.getParent().getEnvironment();
-      String variableValue = environment.getVariableValue(variable, String.class);
+      String variableValue = variable.getStringValue(element.getParent(), annotation, stream);
       Pattern regularExpPattern = null;
       if (ignore) {
         regularExpPattern = Pattern.compile(stringValue, Pattern.CASE_INSENSITIVE);
@@ -85,7 +84,7 @@ public class RegExpCondition extends Ter
     return pattern;
   }
 
-  public String getVariable() {
+  public StringExpression getVariable() {
     return variable;
   }
 

Modified: uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ConditionVerbalizer.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ConditionVerbalizer.java?rev=1488523&r1=1488522&r2=1488523&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ConditionVerbalizer.java (original)
+++ uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ConditionVerbalizer.java Sat Jun  1 13:15:05 2013
@@ -54,6 +54,7 @@ import org.apache.uima.ruta.condition.Vo
 import org.apache.uima.ruta.expression.list.ListExpression;
 import org.apache.uima.ruta.expression.number.NumberExpression;
 import org.apache.uima.ruta.expression.number.SimpleNumberExpression;
+import org.apache.uima.ruta.expression.string.StringExpression;
 
 public class ConditionVerbalizer {
 
@@ -334,12 +335,12 @@ public class ConditionVerbalizer {
               + verbalizer.verbalize(c.getPosition()) + relative + ")";
     } else if (condition instanceof RegExpCondition) {
       RegExpCondition c = (RegExpCondition) condition;
-      String variable = c.getVariable();
+      StringExpression variable = c.getVariable();
       String ic = verbalizer.verbalize(c.getIgnoreCase());
       if (variable == null) {
         return name + verbalizer.verbalize(c.getPattern()) + ", " + ic + ")";
       } else {
-        return name + variable + ", " + verbalizer.verbalize(c.getPattern()) + ", " + ic + ")";
+        return name + verbalizer.verbalize(variable) + ", " + verbalizer.verbalize(c.getPattern()) + ", " + ic + ")";
       }
     } else if (condition instanceof ScoreCondition) {
       ScoreCondition c = (ScoreCondition) condition;

Modified: uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ExpressionVerbalizer.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ExpressionVerbalizer.java?rev=1488523&r1=1488522&r2=1488523&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ExpressionVerbalizer.java (original)
+++ uima/sandbox/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ExpressionVerbalizer.java Sat Jun  1 13:15:05 2013
@@ -25,6 +25,7 @@ import java.util.List;
 import org.apache.uima.ruta.expression.MatchReference;
 import org.apache.uima.ruta.expression.RutaExpression;
 import org.apache.uima.ruta.expression.bool.BooleanExpression;
+import org.apache.uima.ruta.expression.bool.BooleanFeatureExpression;
 import org.apache.uima.ruta.expression.bool.BooleanNumberExpression;
 import org.apache.uima.ruta.expression.bool.BooleanTypeExpression;
 import org.apache.uima.ruta.expression.bool.ReferenceBooleanExpression;
@@ -43,6 +44,7 @@ import org.apache.uima.ruta.expression.l
 import org.apache.uima.ruta.expression.number.ComposedNumberExpression;
 import org.apache.uima.ruta.expression.number.NegativeNumberExpression;
 import org.apache.uima.ruta.expression.number.NumberExpression;
+import org.apache.uima.ruta.expression.number.NumberFeatureExpression;
 import org.apache.uima.ruta.expression.number.ReferenceNumberExpression;
 import org.apache.uima.ruta.expression.number.SimpleNumberExpression;
 import org.apache.uima.ruta.expression.resource.ReferenceWordListExpression;
@@ -54,6 +56,7 @@ import org.apache.uima.ruta.expression.s
 import org.apache.uima.ruta.expression.string.ReferenceStringExpression;
 import org.apache.uima.ruta.expression.string.SimpleStringExpression;
 import org.apache.uima.ruta.expression.string.StringExpression;
+import org.apache.uima.ruta.expression.string.StringFeatureExpression;
 import org.apache.uima.ruta.expression.type.ReferenceTypeExpression;
 import org.apache.uima.ruta.expression.type.SimpleTypeExpression;
 import org.apache.uima.ruta.expression.type.TypeExpression;
@@ -80,14 +83,14 @@ public class ExpressionVerbalizer {
       return verbalize((WordTableExpression) expression);
     } else if (expression instanceof ListExpression<?>) {
       return verbalize((ListExpression<?>) expression);
+    } else if (expression instanceof FeatureExpression) {
+      return verbalize((FeatureExpression) expression);
     } else if (expression instanceof StringExpression) {
       return verbalize((StringExpression) expression);
     } else if (expression instanceof MatchReference) {
       return verbalize((MatchReference) expression);
     } else if (expression instanceof FeatureMatchExpression) {
       return verbalize((FeatureMatchExpression) expression);
-    } else if (expression instanceof FeatureExpression) {
-      return verbalize((FeatureExpression) expression);
     }
     return expression.getClass().getSimpleName();
   }
@@ -163,6 +166,8 @@ public class ExpressionVerbalizer {
         }
       }
       return result.toString();
+    } else if (expression instanceof NumberFeatureExpression) {
+      return verbalize(((NumberFeatureExpression) expression).getFe());
     }
     return expression.getClass().getSimpleName();
   }
@@ -184,6 +189,8 @@ public class ExpressionVerbalizer {
     } else if (expression instanceof SimpleBooleanExpression) {
       SimpleBooleanExpression e = (SimpleBooleanExpression) expression;
       return e.getPrimitiveValue() ? "true" : "false";
+    } else if (expression instanceof BooleanFeatureExpression) {
+      return verbalize(((BooleanFeatureExpression) expression).getFe());
     }
     return expression.getClass().getSimpleName();
   }
@@ -201,6 +208,8 @@ public class ExpressionVerbalizer {
       return verbalize((ListExpression) expression);
     } else if (expression instanceof LiteralStringExpression) {
       return verbalize((LiteralStringExpression) expression);
+    } else if (expression instanceof StringFeatureExpression) {
+      return verbalize(((StringFeatureExpression) expression).getFe());
     }
     return expression.getClass().getSimpleName();
   }

Modified: uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/verbalizer/ConditionVerbalizerTest.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/verbalizer/ConditionVerbalizerTest.java?rev=1488523&r1=1488522&r2=1488523&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/verbalizer/ConditionVerbalizerTest.java (original)
+++ uima/sandbox/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/verbalizer/ConditionVerbalizerTest.java Sat Jun  1 13:15:05 2013
@@ -77,6 +77,7 @@ public class ConditionVerbalizerTest {
     List<TypeExpression> typeExprList = new ArrayList<TypeExpression>();
     List<StringExpression> stringExprList = new ArrayList<StringExpression>();
     String var = "anyVar";
+    StringExpression varExpr = new ReferenceNumberExpression(var);
     TypeExpression typeExpr1 = new SimpleTypeExpression("Type1");
     TypeExpression typeExpr2 = new ReferenceTypeExpression("typeVar");
     typeExprList.add(typeExpr1);
@@ -250,7 +251,7 @@ public class ConditionVerbalizerTest {
     s = v.verbalize(c);
     assertEquals("REGEXP(\"string\", true)", s);
 
-    c = new RegExpCondition(var, stringExpr, boolExpr1);
+    c = new RegExpCondition(varExpr, stringExpr, boolExpr1);
     s = v.verbalize(c);
     assertEquals("REGEXP(anyVar, \"string\", true)", s);
 

Modified: uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g?rev=1488523&r1=1488522&r2=1488523&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g Sat Jun  1 13:15:05 2013
@@ -1179,7 +1179,10 @@ conditionPosition returns [RutaCondition
     ;
 conditionRegExp returns [RutaCondition cond = null]
     :
-    name = REGEXP LPAREN (v = variable COMMA)? pattern = stringExpression (COMMA caseSensitive = booleanExpression)? 
+    name = REGEXP LPAREN 
+    ((stringExpression COMMA stringExpression)=> v = stringExpression COMMA pattern = stringExpression
+    | pattern = stringExpression
+    ) (COMMA caseSensitive = booleanExpression)? 
     {cond = ConditionFactory.createCondition(name, v, pattern, caseSensitive);}   
     RPAREN 
     ;