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",