diff options
Diffstat (limited to 'indexinglanguage/src/main')
5 files changed, 70 insertions, 3 deletions
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java index f6196cfa158..d707a50fbd8 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java @@ -96,7 +96,7 @@ public final class InputExpression extends Expression { public static class InputFieldNameExtractor implements ObjectOperation, ObjectPredicate { - private List<String> inputFieldNames = new ArrayList<>(1); + private final List<String> inputFieldNames = new ArrayList<>(1); public List<String> getInputFieldNames() { return inputFieldNames; } diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LiteralBoolExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LiteralBoolExpression.java new file mode 100644 index 00000000000..a989f1a57d2 --- /dev/null +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LiteralBoolExpression.java @@ -0,0 +1,53 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.indexinglanguage.expressions; + +import com.yahoo.document.DataType; +import com.yahoo.document.datatypes.BoolFieldValue; + +/** + * 'true' or 'false + * + * @author bratseth + */ +public class LiteralBoolExpression extends Expression { + + private final boolean value; + + public LiteralBoolExpression(boolean value) { + super(null); + this.value = value; + } + + @Override + protected void doExecute(ExecutionContext context) { + context.setValue(new BoolFieldValue(value)); + } + + @Override + protected void doVerify(VerificationContext context) { + context.setValue(createdOutputType()); + } + + @Override + public DataType createdOutputType() { + return DataType.BOOL; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if ( ! (other instanceof LiteralBoolExpression)) return false; + return ((LiteralBoolExpression)other).value == this.value; + } + + @Override + public int hashCode() { + return value ? 1 : 0; + } + +} diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NowExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NowExpression.java index 6a155d30814..c8df0c0d667 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NowExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NowExpression.java @@ -61,9 +61,10 @@ public final class NowExpression extends Expression { return getClass().hashCode() + timer.hashCode(); } - public static interface Timer { + public interface Timer { + + long currentTimeSeconds(); - public long currentTimeSeconds(); } private static class SystemTimer implements Timer { @@ -75,4 +76,5 @@ public final class NowExpression extends Expression { return System.currentTimeMillis() / 1000; } } + } diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SplitExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SplitExpression.java index 1ed862f4798..b436775b151 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SplitExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SplitExpression.java @@ -68,4 +68,5 @@ public final class SplitExpression extends Expression { public int hashCode() { return getClass().hashCode() + splitPattern.toString().hashCode(); } + } diff --git a/indexinglanguage/src/main/javacc/IndexingParser.jj b/indexinglanguage/src/main/javacc/IndexingParser.jj index d73d516de90..632a19a2c6c 100644 --- a/indexinglanguage/src/main/javacc/IndexingParser.jj +++ b/indexinglanguage/src/main/javacc/IndexingParser.jj @@ -194,6 +194,8 @@ TOKEN : <TO_BOOL: "to_bool"> | <TRIM: "trim"> | <ZCURVE: "zcurve"> | + <TRUE: "true" > | + <FALSE: "false" > | <IDENTIFIER: ["a"-"z","A"-"Z", "_"] (["a"-"z","A"-"Z","0"-"9","_","-"])*> } @@ -315,6 +317,7 @@ Expression value() : val = toWsetExp() | val = toBoolExp() | val = trimExp() | + val = literalBoolExp() | val = zcurveExp() | ( <LPAREN> val = statement() <RPAREN> { val = new ParenthesisExpression(val); } ) ) { return val; } @@ -698,6 +701,12 @@ Expression trimExp() : { } { return new TrimExpression(); } } +Expression literalBoolExp() : { } +{ + ( <TRUE> | <FALSE> ) + { return new LiteralBoolExpression(Boolean.parseBoolean(token.image)); } +} + Expression zcurveExp() : { } { ( <ZCURVE> ) @@ -762,6 +771,8 @@ String identifier() : <TO_BOOL> | <TOKENIZE> | <TRIM> | + <TRUE> | + <FALSE> | <ZCURVE> ) { val = token.image; } ) { return val; } } |