summaryrefslogtreecommitdiffstats
path: root/indexinglanguage/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'indexinglanguage/src/main')
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java2
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LiteralBoolExpression.java53
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NowExpression.java6
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SplitExpression.java1
-rw-r--r--indexinglanguage/src/main/javacc/IndexingParser.jj11
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; }
}