Author: pkluegl Date: Tue Nov 4 15:31:20 2014 New Revision: 1636609 URL: http://svn.apache.org/r1636609 Log: UIMA-4062 - extended core parser for external resources for word lists/tables - added test, only for parsing right now
Added: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordListExpression.java (with props) uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordTableExpression.java (with props) uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ExternalWordResourceTest.java (with props) Modified: uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaLexer.g 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/RutaEnvironment.java uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/ExpressionFactory.java Modified: uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaLexer.g URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaLexer.g?rev=1636609&r1=1636608&r2=1636609&view=diff ============================================================================== --- uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaLexer.g (original) +++ uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaLexer.g Tue Nov 4 15:31:20 2014 @@ -61,6 +61,10 @@ WORDTABLE : 'WORDTABLE' ; +RESOURCE + : 'RESOURCE' + ; + AND : 'AND' ; 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=1636609&r1=1636608&r2=1636609&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 Tue Nov 4 15:31:20 2014 @@ -422,11 +422,15 @@ List<String> vars = new ArrayList<String | type = WORDLIST {!isVariableOfType($blockDeclaration::env, input.LT(1).getText(), type.getText())}? - name = Identifier (ASSIGN_EQUAL list = wordListExpression)? SEMI {addVariable($blockDeclaration::env, name.getText(), type.getText());if(list != null){setValue($blockDeclaration::env, name.getText(), list);}} + name = Identifier (ASSIGN_EQUAL list = wordListExpression)? + {addVariable($blockDeclaration::env, name.getText(), type.getText());if(list != null){setValue($blockDeclaration::env, name.getText(), list);}} + SEMI | type = WORDTABLE {!isVariableOfType($blockDeclaration::env, input.LT(1).getText(), type.getText())}? - name = Identifier (ASSIGN_EQUAL table = wordTableExpression)? SEMI {addVariable($blockDeclaration::env, name.getText(), type.getText());if(table != null){setValue($blockDeclaration::env, name.getText(), table);}} + name = Identifier (ASSIGN_EQUAL table = wordTableExpression)? + {addVariable($blockDeclaration::env, name.getText(), type.getText());if(table != null){setValue($blockDeclaration::env, name.getText(), table);}} + SEMI | type = BOOLEANLIST {!isVariableOfType($blockDeclaration::env, input.LT(1).getText(), type.getText())}? @@ -2016,7 +2020,13 @@ annotationType returns [Token ref = null ; wordListExpression returns [WordListExpression expr = null] +@init { +List<IStringExpression> args = new ArrayList<IStringExpression>(); +} : + RESOURCE LPAREN name = dottedId (COMMA arg = stringExpression {args.add(arg);} )* RPAREN + {expr = ExpressionFactory.createExternalWordListExpression(name, args);} + | id = Identifier {expr = ExpressionFactory.createReferenceWordListExpression(id);} | @@ -2026,7 +2036,13 @@ wordListExpression returns [WordListExpr wordTableExpression returns [WordTableExpression expr = null] +@init { +List<IStringExpression> args = new ArrayList<IStringExpression>(); +} : + RESOURCE LPAREN name = dottedId (COMMA arg = stringExpression {args.add(arg);} )* RPAREN + {expr = ExpressionFactory.createExternalWordTableExpression(name, args);} + | id = Identifier {expr = ExpressionFactory.createReferenceWordTableExpression(id);} | Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java?rev=1636609&r1=1636608&r2=1636609&view=diff ============================================================================== --- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java (original) +++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java Tue Nov 4 15:31:20 2014 @@ -773,7 +773,8 @@ public class RutaEnvironment { String path = lle.getText(); RutaWordList wordList = getWordList(path); return wordList; - } else if (clazz.equals(RutaWordList.class)) { + } else if (clazz.equals(RutaWordList.class) && value instanceof String) { + // TODO: ExtenralWordTableExpression will be ignored RutaWordList list = getWordList((String) value); return list; } else if (clazz.equals(RutaTable.class) && value instanceof LiteralWordTableExpression) { @@ -781,7 +782,8 @@ public class RutaEnvironment { String path = lte.getText(); RutaTable table = getWordTable(path); return table; - } else if (clazz.equals(RutaTable.class)) { + } else if (clazz.equals(RutaTable.class) && value instanceof String) { + // TODO: ExtenralWordTableExpression will be ignored, and add a method like for word lists RutaTable table = getWordTable((String) value); return table; } else if (clazz.equals(List.class) && value instanceof ListExpression) { Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/ExpressionFactory.java URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/ExpressionFactory.java?rev=1636609&r1=1636608&r2=1636609&view=diff ============================================================================== --- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/ExpressionFactory.java (original) +++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/ExpressionFactory.java Tue Nov 4 15:31:20 2014 @@ -55,6 +55,8 @@ import org.apache.uima.ruta.expression.n 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.ExternalWordListExpression; +import org.apache.uima.ruta.expression.resource.ExternalWordTableExpression; import org.apache.uima.ruta.expression.resource.LiteralWordListExpression; import org.apache.uima.ruta.expression.resource.LiteralWordTableExpression; import org.apache.uima.ruta.expression.resource.ReferenceWordListExpression; @@ -268,6 +270,16 @@ public class ExpressionFactory { return new UntypedListExpression(list); } + public static WordListExpression createExternalWordListExpression(Token name, + List<IStringExpression> args) { + return new ExternalWordListExpression(name.getText(), args); + } + + public static WordTableExpression createExternalWordTableExpression(Token name, + List<IStringExpression> args) { + return new ExternalWordTableExpression(name.getText(), args); + } + } Added: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordListExpression.java URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordListExpression.java?rev=1636609&view=auto ============================================================================== --- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordListExpression.java (added) +++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordListExpression.java Tue Nov 4 15:31:20 2014 @@ -0,0 +1,34 @@ +package org.apache.uima.ruta.expression.resource; + +import java.util.List; + +import org.apache.uima.ruta.RutaStatement; +import org.apache.uima.ruta.expression.string.IStringExpression; +import org.apache.uima.ruta.resource.RutaWordList; + +public class ExternalWordListExpression extends WordListExpression { + + private final List<IStringExpression> args; + + private final String className; + + public ExternalWordListExpression(String className, List<IStringExpression> args) { + super(); + this.className = className; + this.args = args; + } + + @Override + public RutaWordList getList(RutaStatement element) { + return null; + } + + public List<IStringExpression> getArgs() { + return args; + } + + public String getClassName() { + return className; + } + +} Propchange: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordListExpression.java ------------------------------------------------------------------------------ svn:eol-style = native Added: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordTableExpression.java URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordTableExpression.java?rev=1636609&view=auto ============================================================================== --- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordTableExpression.java (added) +++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordTableExpression.java Tue Nov 4 15:31:20 2014 @@ -0,0 +1,35 @@ +package org.apache.uima.ruta.expression.resource; + +import java.util.List; + +import org.apache.uima.ruta.RutaStatement; +import org.apache.uima.ruta.expression.string.IStringExpression; +import org.apache.uima.ruta.resource.RutaTable; + +public class ExternalWordTableExpression extends WordTableExpression { + + private final List<IStringExpression> args; + + private final String className; + + public ExternalWordTableExpression(String className, List<IStringExpression> args) { + super(); + this.className = className; + this.args = args; + } + + @Override + public RutaTable getTable(RutaStatement element) { + return null; + } + + public List<IStringExpression> getArgs() { + return args; + } + + public String getClassName() { + return className; + } + + +} Propchange: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordTableExpression.java ------------------------------------------------------------------------------ svn:eol-style = native Added: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ExternalWordResourceTest.java URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ExternalWordResourceTest.java?rev=1636609&view=auto ============================================================================== --- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ExternalWordResourceTest.java (added) +++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ExternalWordResourceTest.java Tue Nov 4 15:31:20 2014 @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.uima.ruta; + +import static org.junit.Assert.assertEquals; + +import org.apache.uima.cas.CAS; +import org.apache.uima.cas.FSIterator; +import org.apache.uima.cas.Type; +import org.apache.uima.cas.text.AnnotationFS; +import org.apache.uima.cas.text.AnnotationIndex; +import org.apache.uima.ruta.engine.Ruta; +import org.apache.uima.ruta.engine.RutaTestUtils; +import org.junit.Test; + +public class ExternalWordResourceTest { + + @Test + public void test() { + String document = "Some text."; + String script = ""; + script += "WORDTABLE table = RESOURCE(my.package.Class, \"parameter\", \"value\");"; + script += "WORDLIST list = RESOURCE(my.package.Class, \"parameter\", \"value\");"; + + CAS cas = null; + try { + cas = RutaTestUtils.getCAS(document); + Ruta.apply(cas, script); + } catch (Exception e) { + e.printStackTrace(); + } + +// Type t = null; +// AnnotationIndex<AnnotationFS> ai = null; +// FSIterator<AnnotationFS> iterator = null; +// +// t = RutaTestUtils.getTestType(cas, 1); +// ai = cas.getAnnotationIndex(t); +// assertEquals(1, ai.size()); +// iterator = ai.iterator(); +// assertEquals("Some", iterator.next().getCoveredText()); + + if (cas != null) { + cas.release(); + } + + } +} Propchange: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/ExternalWordResourceTest.java ------------------------------------------------------------------------------ svn:eol-style = native