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 2016/03/17 13:44:32 UTC

svn commit: r1735412 - in /uima/ruta/trunk: ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ ruta-core/src/test/java/org/apache/uima/ruta/action/ ruta-core/src/test/java/org/apache/uima/ruta/condition/ ruta-ep-addons/src/main/java/org/apache/uim...

Author: pkluegl
Date: Thu Mar 17 12:44:32 2016
New Revision: 1735412

URL: http://svn.apache.org/viewvc?rev=1735412&view=rev
Log:
UIMA-4737 + UIMA-4739
- fixed dep in ep-engine
- fixed vars in macros
- fixed syntax checks in ide

Modified:
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ConditionVerbalizer.java
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MacroActionTest.java
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/MacroConditionTest.java
    uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryView.java
    uima/ruta/trunk/ruta-ep-engine/pom.xml
    uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaLexer.g
    uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g
    uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaKeywords.java

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java?rev=1735412&r1=1735411&r2=1735412&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ActionVerbalizer.java Thu Mar 17 12:44:32 2016
@@ -45,6 +45,7 @@ import org.apache.uima.ruta.action.Impli
 import org.apache.uima.ruta.action.ImplicitMarkAction;
 import org.apache.uima.ruta.action.ImplicitVariableAssignmentAction;
 import org.apache.uima.ruta.action.LogAction;
+import org.apache.uima.ruta.action.MacroAction;
 import org.apache.uima.ruta.action.MarkAction;
 import org.apache.uima.ruta.action.MarkFastAction;
 import org.apache.uima.ruta.action.MarkFirstAction;
@@ -170,6 +171,9 @@ public class ActionVerbalizer {
       return "";
     } else if (action instanceof ImplicitVariableAssignmentAction) {
       return "";
+    } else if (action instanceof MacroAction) {
+      MacroAction ma = (MacroAction) action;
+      return ma.getName();
     }
 
     return action.getClass().getSimpleName();
@@ -498,6 +502,9 @@ public class ActionVerbalizer {
     } else if (action instanceof ImplicitVariableAssignmentAction) {
       ImplicitVariableAssignmentAction a = (ImplicitVariableAssignmentAction) action;
       return a.getVar() + a.getOp() + verbalizer.verbalize(a.getArg());
+    } else if (action instanceof MacroAction) {
+      MacroAction a = (MacroAction) action;
+      return name + verbalizer.verbalizeExpressionList(a.getArguments()) + ")";
     }
 
     return action.getClass().getSimpleName();

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ConditionVerbalizer.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ConditionVerbalizer.java?rev=1735412&r1=1735411&r2=1735412&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ConditionVerbalizer.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ConditionVerbalizer.java Thu Mar 17 12:44:32 2016
@@ -38,6 +38,7 @@ import org.apache.uima.ruta.condition.In
 import org.apache.uima.ruta.condition.IsCondition;
 import org.apache.uima.ruta.condition.LastCondition;
 import org.apache.uima.ruta.condition.MOfNCondition;
+import org.apache.uima.ruta.condition.MacroCondition;
 import org.apache.uima.ruta.condition.NearCondition;
 import org.apache.uima.ruta.condition.NotCondition;
 import org.apache.uima.ruta.condition.OrCondition;
@@ -140,6 +141,9 @@ public class ConditionVerbalizer {
     } else if (condition instanceof ImplicitCondition) {
       String name = "";
       return name;
+    } else if (condition instanceof MacroCondition) {
+      MacroCondition mc = (MacroCondition) condition;
+      return mc.getName();
     }
 
     return condition.getClass().getSimpleName();
@@ -433,6 +437,9 @@ public class ConditionVerbalizer {
     } else if (condition instanceof ImplicitCondition) {
       ImplicitCondition c = (ImplicitCondition) condition;
       return verbalizer.verbalize(c.getExpr());
+    } else if (condition instanceof MacroCondition) {
+      MacroCondition c = (MacroCondition) condition;
+      return name + verbalizer.verbalizeExpressionList(c.getArguments()) + ")";
     }
 
     return condition.getClass().getSimpleName();

Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MacroActionTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MacroActionTest.java?rev=1735412&r1=1735411&r2=1735412&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MacroActionTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/MacroActionTest.java Thu Mar 17 12:44:32 2016
@@ -33,7 +33,6 @@ import org.junit.Test;
 
 public class MacroActionTest {
 
-
   @Test
   public void test() {
     String document = "Test";
@@ -42,7 +41,6 @@ public class MacroActionTest {
     script += "Document{-> macro(T1,1)};\n";
     script += "Document{(j>0)->T2};\n";
 
-
     CAS cas = null;
     try {
       cas = RutaTestUtils.getCAS(document);
@@ -56,7 +54,7 @@ public class MacroActionTest {
 
     cas.release();
   }
-  
+
   @Test
   public void testNoArgs() {
     String document = "Test.";
@@ -77,7 +75,6 @@ public class MacroActionTest {
 
     cas.release();
   }
-  
 
   @Test
   public void testVariable()
@@ -90,11 +87,11 @@ public class MacroActionTest {
     script += "Document{(j==5)->T1};\n";
 
     CAS cas = RutaTestUtils.getCAS(document);
-      Ruta.apply(cas, script);
+    Ruta.apply(cas, script);
 
     RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "Test");
 
     cas.release();
   }
-  
+
 }

Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/MacroConditionTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/MacroConditionTest.java?rev=1735412&r1=1735411&r2=1735412&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/MacroConditionTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/condition/MacroConditionTest.java Thu Mar 17 12:44:32 2016
@@ -19,14 +19,20 @@
 
 package org.apache.uima.ruta.condition;
 
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
+import org.apache.uima.resource.ResourceConfigurationException;
+import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.engine.Ruta;
 import org.apache.uima.ruta.engine.RutaTestUtils;
+import org.apache.uima.util.InvalidXMLException;
 import org.junit.Test;
 
 public class MacroConditionTest {
 
-
   @Test
   public void test() {
     String document = "Test";
@@ -36,7 +42,6 @@ public class MacroConditionTest {
     script += "Document{macro(T1,0)-> T2};\n";
     script += "Document{macro(T1,1)-> T3};\n";
 
-
     CAS cas = null;
     try {
       cas = RutaTestUtils.getCAS(document);
@@ -51,7 +56,7 @@ public class MacroConditionTest {
 
     cas.release();
   }
-  
+
   @Test
   public void testNoArgs() {
     String document = "This is a Test.";
@@ -71,4 +76,21 @@ public class MacroConditionTest {
 
     cas.release();
   }
+
+  @Test
+  public void testVariable()
+          throws ResourceInitializationException, InvalidXMLException, IOException,
+          AnalysisEngineProcessException, ResourceConfigurationException, URISyntaxException {
+    String document = "This is a Test.";
+    String script = "INT j;\n";
+    script += "CONDITION cc(VAR INT var) = TOTALCOUNT(W,1,1000,var);\n";
+    script += "Document{cc(j), (j>2) ->T1};\n";
+
+    CAS cas = RutaTestUtils.getCAS(document);
+    Ruta.apply(cas, script);
+
+    RutaTestUtils.assertAnnotationsEquals(cas, 1, 1, "This is a Test.");
+
+    cas.release();
+  }
 }

Modified: uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryView.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryView.java?rev=1735412&r1=1735411&r2=1735412&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryView.java (original)
+++ uima/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryView.java Thu Mar 17 12:44:32 2016
@@ -53,12 +53,16 @@ public class QueryView extends ViewPart
 
   @Override
   public void setFocus() {
-    viewContent.setFocus();
+    if(viewContent != null) {
+      viewContent.setFocus();
+    }
   }
 
   @Override
   public void saveState(IMemento memento) {
-    viewContent.saveState(memento);
+    if(viewContent != null) {
+      viewContent.saveState(memento);
+    }
   }
 
   @Override

Modified: uima/ruta/trunk/ruta-ep-engine/pom.xml
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-engine/pom.xml?rev=1735412&r1=1735411&r2=1735412&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-engine/pom.xml (original)
+++ uima/ruta/trunk/ruta-ep-engine/pom.xml Thu Mar 17 12:44:32 2016
@@ -71,7 +71,7 @@ licensed under the Common Public License
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
-      <version>3.1</version>
+      <version>3.4</version>
       <scope>compile</scope>
     </dependency>
     <dependency>

Modified: uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaLexer.g
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaLexer.g?rev=1735412&r1=1735411&r2=1735412&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaLexer.g (original)
+++ uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaLexer.g Thu Mar 17 12:44:32 2016
@@ -352,6 +352,7 @@ AsString        :   'AS';
 SymbolString  : 'SYMBOL';
 CONDITION : 'CONDITION';  
 ACTION    : 'ACTION';
+VAR    : 'VAR';
 BOOLEANLIST 
   :  'BOOLEANLIST';
 INTLIST : 'INTLIST';

Modified: uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g?rev=1735412&r1=1735411&r2=1735412&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g (original)
+++ uima/ruta/trunk/ruta-ep-ide/src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.g Thu Mar 17 12:44:32 2016
@@ -33,6 +33,8 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
 import java.util.Stack;
 
 import org.antlr.runtime.BaseRecognizer;
@@ -57,7 +59,7 @@ import org.eclipse.dltk.ast.expressions.
 import org.eclipse.dltk.ast.expressions.Expression;
 import org.eclipse.dltk.ast.references.VariableReference;
 import org.eclipse.dltk.ast.statements.Statement;
-
+import org.apache.commons.lang3.StringUtils;
 import org.apache.uima.ruta.descriptor.RutaDescriptorInformation;
 
 import org.apache.uima.ruta.ide.core.extensions.RutaExternalFactory;
@@ -79,6 +81,7 @@ import org.apache.uima.ruta.ide.parser.a
 import org.apache.uima.ruta.ide.parser.ast.RutaCondition;
 import org.apache.uima.ruta.ide.parser.ast.RutaFeatureDeclaration;
 import org.apache.uima.ruta.ide.parser.ast.RutaPackageDeclaration;
+
 }
 
 @parser::members {
@@ -204,11 +207,11 @@ import org.apache.uima.ruta.ide.parser.a
 	}
 	
 	public boolean isVariable(String var) {
-		return vars.contains(var);
+		return vars.contains(var)|| isTemporaryVariable(var);
 	}
 	
 	public boolean isVariableOfType(String var, String type) {
-		return vars.contains(var) && type.equals(varTypeMap.get(var));
+		return isTemporaryVariable(var, type) || (vars.contains(var) && type.equals(varTypeMap.get(var)));
 	}
 	
 	public void checkVariable(String var, IntStream input) throws NoViableAltException {
@@ -243,10 +246,27 @@ import org.apache.uima.ruta.ide.parser.a
 		return null;
 	}
 	
-//	public String getTypeOf(String varName) {
-//		String vn = varTypeMap.get(varName);
-//		return vn != null? vn : "";
-//	}
+        private Map<String,String> temporaryVariables = new HashMap<>(); 
+ 	
+ 	private boolean isTemporaryVariable(String name, String type) {
+ 		return StringUtils.equals(temporaryVariables.get(name), type);
+	}
+	private boolean isTemporaryVariable(String name) {
+ 		return temporaryVariables.keySet().contains(name);
+	}
+
+	private void addTemporaryVariables(Map<Token, Token> def) {
+		  Set<Entry<Token,Token>> entrySet = def.entrySet();
+		  for (Entry<Token, Token> entry : entrySet) {
+		    temporaryVariables.put(entry.getKey().getText(), entry.getValue().getText());
+      }
+	}
+	private void removeTemporaryVariables(Map<Token, Token> def) {
+		Set<Token> keySet = def.keySet();
+		for (Token key : keySet) {
+		    temporaryVariables.remove(key.getText());
+     		}
+	}
 	
 }
 
@@ -353,9 +373,11 @@ Map<Token,Token> def = new LinkedHashMap
     :
     kind = CONDITION name = Identifier 
     LPAREN  
-    (argType = varTypeToken argName = Identifier  {def.put(argName,argType);}
-    (COMMA argType = varTypeToken argName = Identifier {def.put(argName,argType);})*)? 
+    (VAR? argType = varTypeToken argName = Identifier  {def.put(argName,argType);}
+    (COMMA VAR? argType = varTypeToken argName = Identifier {def.put(argName,argType);})*)? 
+    {addTemporaryVariables(def);}
     RPAREN ASSIGN_EQUAL cs = conditions SEMI
+    {removeTemporaryVariables(def);}
     {stmt = StatementFactory.createMacroStatement(kind, name, def, cs);}
     ;
 
@@ -367,9 +389,11 @@ Map<Token,Token> def = new LinkedHashMap
     :
     kind = ACTION name = Identifier 
     LPAREN  
-    (argType = varTypeToken argName = Identifier  {def.put(argName,argType);}
-    (COMMA argType = varTypeToken argName = Identifier {def.put(argName,argType);})*)? 
+    (VAR? argType = varTypeToken argName = Identifier  {def.put(argName,argType);}
+    (COMMA VAR? argType = varTypeToken argName = Identifier {def.put(argName,argType);})*)? 
+    {addTemporaryVariables(def);}
     RPAREN ASSIGN_EQUAL as = actions SEMI
+    {removeTemporaryVariables(def);}
     {stmt = StatementFactory.createMacroStatement(kind, name, def, as);}
     ;
 
@@ -2502,9 +2526,9 @@ externalNumberFunction returns [Expressi
 //OK
 numberVariable returns [Expression expr = null]
 	:
-	   ( {isVariableOfType(input.LT(1).getText(), "INT")}? numVarRef = Identifier //
+	 ( {isVariableOfType(input.LT(1).getText(), "INT")}? numVarRef = Identifier //
 	 | {isVariableOfType(input.LT(1).getText(), "DOUBLE")}? numVarRef = Identifier
-	  | {isVariableOfType(input.LT(1).getText(), "FLOAT")}? numVarRef = Identifier)
+	 | {isVariableOfType(input.LT(1).getText(), "FLOAT")}? numVarRef = Identifier)
 	 {	 expr = ExpressionFactory.createNumberVariableReference(numVarRef);}
 	;
 	catch [Exception e]{expr = ExpressionFactory.createNumberVariableReference(input.LT(1));}

Modified: uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaKeywords.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaKeywords.java?rev=1735412&r1=1735411&r2=1735412&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaKeywords.java (original)
+++ uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/RutaKeywords.java Thu Mar 17 12:44:32 2016
@@ -29,7 +29,7 @@ public class RutaKeywords implements IRu
   private static String[] declaration = { "WORDLIST", "DECLARE", "BOOLEAN", "PACKAGE", "TYPE",
       "TYPESYSTEM", "INT", "DOUBLE", "FLOAT", "STRING", "SCRIPT", "WORDTABLE", "ENGINE", "BLOCK",
       "BOOLEANLIST", "INTLIST", "DOUBLELIST", "FLOATLIST", "STRINGLIST", "TYPELIST",
-      "UIMAFIT", "IMPORT" , "FROM", "AS", "null", "ANNOTATION", "ANNOTATIONLIST", "ACTION", "CONDITION" };
+      "UIMAFIT", "IMPORT" , "FROM", "AS", "null", "ANNOTATION", "ANNOTATIONLIST", "ACTION", "CONDITION", "VAR" };
 
   private static String[] action = { "DEL", "CALL", "MARK", "MARKSCORE", "COLOR", "LOG", "REPLACE",
       "FILLOBJECT", "RETAINTYPE", "SETFEATURE", "ASSIGN", "PUTINLIST", "ATTRIBUTE", "MARKFAST",