Author: pkluegl Date: Mon Jan 9 10:22:03 2012 New Revision: 1229085 URL: http://svn.apache.org/viewvc?rev=1229085&view=rev Log: UIMA-2319 added prototypical language elements for float support.
Added: uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ComposedNumberExpression.java - copied, changed from r1181740, uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ComposedDoubleExpression.java uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ReferenceNumberExpression.java - copied, changed from r1181740, uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ReferenceDoubleExpression.java Removed: uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ComposedDoubleExpression.java uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ComposedIntegerExpression.java uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ReferenceDoubleExpression.java uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ReferenceIntegerExpression.java Modified: uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/TextMarkerEnvironment.java uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/ExpressionFactory.java uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/NegativeNumberExpression.java uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/NumberExpression.java uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/SimpleNumberExpression.java uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/parser/TextMarkerLexer.g uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/parser/TextMarkerLexer.java uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/parser/TextMarkerLexer.tokens uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/parser/TextMarkerParser.g uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/parser/TextMarkerParser.java uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/parser/TextMarkerParser.tokens uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/verbalize/ExpressionVerbalizer.java uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-ide/src/main/java/org/apache/uima/textmarker/ide/core/parser/TextMarkerParser.g Modified: uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/TextMarkerEnvironment.java URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/TextMarkerEnvironment.java?rev=1229085&r1=1229084&r2=1229085&view=diff ============================================================================== --- uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/TextMarkerEnvironment.java (original) +++ uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/TextMarkerEnvironment.java Mon Jan 9 10:22:03 2012 @@ -91,6 +91,7 @@ public class TextMarkerEnvironment { availableTypes.put("INT", Integer.class); availableTypes.put("STRING", String.class); availableTypes.put("DOUBLE", Double.class); + availableTypes.put("FLOAT", Double.class); availableTypes.put("BOOLEAN", Boolean.class); availableTypes.put("TYPE", Type.class); availableTypes.put("CONDITION", AbstractTextMarkerCondition.class); @@ -100,12 +101,14 @@ public class TextMarkerEnvironment { availableTypes.put("BOOLEANLIST", List.class); availableTypes.put("INTLIST", List.class); availableTypes.put("DOUBLELIST", List.class); + availableTypes.put("FLOATLIST", List.class); availableTypes.put("STRINGLIST", List.class); availableTypes.put("TYPELIST", List.class); availableListTypes = new HashMap<String, Class<?>>(); availableListTypes.put("BOOLEANLIST", Boolean.class); availableListTypes.put("INTLIST", Integer.class); availableListTypes.put("DOUBLELIST", Double.class); + availableListTypes.put("FLOATLIST", Float.class); availableListTypes.put("STRINGLIST", String.class); availableListTypes.put("TYPELIST", Type.class); resourcePaths = getResourcePaths(); @@ -242,10 +245,12 @@ public class TextMarkerEnvironment { private Object getInitialValue(Class<?> type) { if (Integer.class.equals(type)) { return 0; + } else if (Double.class.equals(type)) { + return 0d; + } else if (Float.class.equals(type)) { + return 0f; } else if (String.class.equals(type)) { return ""; - } else if (Double.class.equals(type)) { - return 0; } else if (Boolean.class.equals(type)) { return false; } else if (Type.class.equals(type)) { Modified: uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/ExpressionFactory.java URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/ExpressionFactory.java?rev=1229085&r1=1229084&r2=1229085&view=diff ============================================================================== --- uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/ExpressionFactory.java (original) +++ uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/ExpressionFactory.java Mon Jan 9 10:22:03 2012 @@ -42,10 +42,10 @@ import org.apache.uima.textmarker.expres import org.apache.uima.textmarker.expression.list.SimpleTypeListExpression; import org.apache.uima.textmarker.expression.list.StringListExpression; import org.apache.uima.textmarker.expression.list.TypeListExpression; -import org.apache.uima.textmarker.expression.number.ComposedDoubleExpression; +import org.apache.uima.textmarker.expression.number.ComposedNumberExpression; import org.apache.uima.textmarker.expression.number.NegativeNumberExpression; import org.apache.uima.textmarker.expression.number.NumberExpression; -import org.apache.uima.textmarker.expression.number.ReferenceDoubleExpression; +import org.apache.uima.textmarker.expression.number.ReferenceNumberExpression; import org.apache.uima.textmarker.expression.number.SimpleNumberExpression; import org.apache.uima.textmarker.expression.resource.LiteralWordListExpression; import org.apache.uima.textmarker.expression.resource.LiteralWordTableExpression; @@ -87,7 +87,7 @@ public class ExpressionFactory { } public static NumberExpression createReferenceNumberExpression(Token var, Token minus) { - ReferenceDoubleExpression simpleNumberExpression = new ReferenceDoubleExpression(var.getText()); + ReferenceNumberExpression simpleNumberExpression = new ReferenceNumberExpression(var.getText()); if (minus != null) { return new NegativeNumberExpression(simpleNumberExpression); } else { @@ -101,7 +101,7 @@ public class ExpressionFactory { for (Token token : opTokens) { ops.add(token.getText()); } - return new ComposedDoubleExpression(expressions, ops); + return new ComposedNumberExpression(expressions, ops); } public static NumberExpression createComposedNumberExpression(NumberExpression expression, @@ -110,7 +110,7 @@ public class ExpressionFactory { List<NumberExpression> exprList = new ArrayList<NumberExpression>(); ops.add(opToken.getText()); exprList.add(expression); - return new ComposedDoubleExpression(exprList, ops); + return new ComposedNumberExpression(exprList, ops); } public static StringExpression createSimpleStringExpression(Token token) { @@ -200,6 +200,10 @@ public class ExpressionFactory { return new ReferenceNumberListExpression(var.getText()); } + public static NumberListExpression createReferenceFloatListExpression(Token var) { + return new ReferenceNumberListExpression(var.getText()); + } + public static BooleanListExpression createBooleanListExpression(List<BooleanExpression> list) { return new SimpleBooleanListExpression(list); } @@ -216,4 +220,6 @@ public class ExpressionFactory { return new SimpleStringListExpression(list); } + + } Copied: uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ComposedNumberExpression.java (from r1181740, uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ComposedDoubleExpression.java) URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ComposedNumberExpression.java?p2=uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ComposedNumberExpression.java&p1=uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ComposedDoubleExpression.java&r1=1181740&r2=1229085&rev=1229085&view=diff ============================================================================== --- uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ComposedDoubleExpression.java (original) +++ uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ComposedNumberExpression.java Mon Jan 9 10:22:03 2012 @@ -24,13 +24,13 @@ import java.util.List; import org.apache.uima.textmarker.TextMarkerStatement; -public class ComposedDoubleExpression extends AbstractNumberExpression { +public class ComposedNumberExpression extends AbstractNumberExpression { private final List<NumberExpression> expressions; private final List<String> ops; - public ComposedDoubleExpression(List<NumberExpression> expressions, List<String> ops) { + public ComposedNumberExpression(List<NumberExpression> expressions, List<String> ops) { super(); this.expressions = expressions; this.ops = ops; @@ -46,13 +46,30 @@ public class ComposedDoubleExpression ex for (int i = 0; i < getOperators().size(); i++) { double second = 0; if (getExpressions().size() > i + 1) { - second = getExpressions().get(i + 1).getIntegerValue(parent); + second = getExpressions().get(i + 1).getDoubleValue(parent); } result = calculate(result, second, getOperators().get(i)); } return result; } - + + @Override + public double getFloatValue(TextMarkerStatement parent) { + NumberExpression numberExpression = getExpressions().get(0); + if (numberExpression == null) { + return 0; + } + double result = numberExpression.getFloatValue(parent); + for (int i = 0; i < getOperators().size(); i++) { + double second = 0; + if (getExpressions().size() > i + 1) { + second = getExpressions().get(i + 1).getFloatValue(parent); + } + result = calculate(result, second, getOperators().get(i)); + } + return result; + } + @Override public int getIntegerValue(TextMarkerStatement parent) { int result = getExpressions().get(0).getIntegerValue(parent); @@ -79,4 +96,6 @@ public class ComposedDoubleExpression ex return ops; } + + } Modified: uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/NegativeNumberExpression.java URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/NegativeNumberExpression.java?rev=1229085&r1=1229084&r2=1229085&view=diff ============================================================================== --- uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/NegativeNumberExpression.java (original) +++ uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/NegativeNumberExpression.java Mon Jan 9 10:22:03 2012 @@ -36,6 +36,11 @@ public class NegativeNumberExpression ex } @Override + public double getFloatValue(TextMarkerStatement parent) { + return -ne.getFloatValue(parent); + } + + @Override public int getIntegerValue(TextMarkerStatement parent) { return -ne.getIntegerValue(parent); } @@ -49,4 +54,6 @@ public class NegativeNumberExpression ex return ne; } + + } Modified: uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/NumberExpression.java URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/NumberExpression.java?rev=1229085&r1=1229084&r2=1229085&view=diff ============================================================================== --- uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/NumberExpression.java (original) +++ uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/NumberExpression.java Mon Jan 9 10:22:03 2012 @@ -27,5 +27,7 @@ public abstract class NumberExpression e public abstract int getIntegerValue(TextMarkerStatement parent); public abstract double getDoubleValue(TextMarkerStatement parent); + + public abstract double getFloatValue(TextMarkerStatement parent); } Copied: uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ReferenceNumberExpression.java (from r1181740, uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ReferenceDoubleExpression.java) URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ReferenceNumberExpression.java?p2=uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ReferenceNumberExpression.java&p1=uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ReferenceDoubleExpression.java&r1=1181740&r2=1229085&rev=1229085&view=diff ============================================================================== --- uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ReferenceDoubleExpression.java (original) +++ uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/ReferenceNumberExpression.java Mon Jan 9 10:22:03 2012 @@ -21,11 +21,11 @@ package org.apache.uima.textmarker.expre import org.apache.uima.textmarker.TextMarkerStatement; -public class ReferenceDoubleExpression extends NumberExpression { +public class ReferenceNumberExpression extends NumberExpression { private final String var; - public ReferenceDoubleExpression(String var) { + public ReferenceNumberExpression(String var) { super(); this.var = var; } @@ -41,6 +41,16 @@ public class ReferenceDoubleExpression e } @Override + public double getFloatValue(TextMarkerStatement parent) { + Object value = parent.getEnvironment().getVariableValue(getVar()); + double variableValue = 0; + if (value instanceof Number) { + variableValue = ((Number) value).floatValue(); + } + return variableValue; + } + + @Override public int getIntegerValue(TextMarkerStatement parent) { Object value = parent.getEnvironment().getVariableValue(getVar()); int variableValue = 0; Modified: uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/SimpleNumberExpression.java URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/SimpleNumberExpression.java?rev=1229085&r1=1229084&r2=1229085&view=diff ============================================================================== --- uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/SimpleNumberExpression.java (original) +++ uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/expression/number/SimpleNumberExpression.java Mon Jan 9 10:22:03 2012 @@ -36,6 +36,11 @@ public class SimpleNumberExpression exte } @Override + public double getFloatValue(TextMarkerStatement parent) { + return number.floatValue(); + } + + @Override public int getIntegerValue(TextMarkerStatement parent) { return number.intValue(); } Modified: uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/parser/TextMarkerLexer.g URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/parser/TextMarkerLexer.g?rev=1229085&r1=1229084&r2=1229085&view=diff ============================================================================== --- uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/parser/TextMarkerLexer.g (original) +++ uima/sandbox/trunk/TextMarker/uimaj-ep-textmarker-engine/src/main/java/org/apache/uima/textmarker/parser/TextMarkerLexer.g Mon Jan 9 10:22:03 2012 @@ -322,6 +322,7 @@ AutomataBlockString : 'RULES'; TypeString : 'TYPE'; IntString : 'INT'; DoubleString : 'DOUBLE'; +FloatString : 'FLOAT'; StringString : 'STRING'; BooleanString : 'BOOLEAN'; TypeSystemString: 'TYPESYSTEM'; @@ -333,6 +334,8 @@ BOOLEANLIST INTLIST : 'INTLIST'; DOUBLELIST : 'DOUBLELIST'; +FLOATLIST + : 'FLOATLIST'; STRINGLIST : 'STRINGLIST'; TYPELIST: 'TYPELIST';