From 30f1af17cdf564f528cdb1b0601b87ab52046b58 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Thu, 23 Mar 2023 13:21:44 +0100
Subject: [PATCH 001/136] Fix documentation.
---
docs/HTTPServer.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/HTTPServer.md b/docs/HTTPServer.md
index af87fdd9d..f9a93df28 100644
--- a/docs/HTTPServer.md
+++ b/docs/HTTPServer.md
@@ -18,7 +18,7 @@ Caution! Launching a server always has consequences on security, especially as R
The HTTP server is meant not to be used directly by end users, but instead to make it possible to integrate RumbleDB in other languages and environments, such as Python and Jupyter notebooks.
-To test that the the server running, you can try the following address in your browser, assuming you have a query stored locally at /tmp/query.jq. All queries have to go to the /jsoniq path.
+To test that the server is running, you can try the following address in your browser, assuming you have a query stored locally at /tmp/query.jq. All queries have to go to the /jsoniq path.
http://localhost:8001/jsoniq?query-path=/tmp/query.jq
From 7a60038ec70743de245fcee66e59e11238d09d77 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Thu, 23 Mar 2023 13:26:47 +0100
Subject: [PATCH 002/136] Add all values to each module.
---
.../compiler/DynamicContextVisitor.java | 6 ++---
.../compiler/StaticContextVisitor.java | 6 ++---
.../rumbledb/context/InScopeSchemaTypes.java | 8 +++---
.../org/rumbledb/context/StaticContext.java | 20 +++++++-------
.../org/rumbledb/context/VariableValues.java | 26 +++++++------------
5 files changed, 25 insertions(+), 41 deletions(-)
diff --git a/src/main/java/org/rumbledb/compiler/DynamicContextVisitor.java b/src/main/java/org/rumbledb/compiler/DynamicContextVisitor.java
index 9ddc97b2a..ed1562eb5 100644
--- a/src/main/java/org/rumbledb/compiler/DynamicContextVisitor.java
+++ b/src/main/java/org/rumbledb/compiler/DynamicContextVisitor.java
@@ -332,13 +332,11 @@ public DynamicContext visitLibraryModule(LibraryModule module, DynamicContext ar
}
argument.getVariableValues()
.importModuleValues(
- this.importedModuleContexts.get(module.getNamespace()).getVariableValues(),
- module.getNamespace()
+ this.importedModuleContexts.get(module.getNamespace()).getVariableValues()
);
argument.getInScopeSchemaTypes()
.importModuleTypes(
- this.importedModuleContexts.get(module.getNamespace()).getInScopeSchemaTypes(),
- module.getNamespace()
+ this.importedModuleContexts.get(module.getNamespace()).getInScopeSchemaTypes()
);
return argument;
}
diff --git a/src/main/java/org/rumbledb/compiler/StaticContextVisitor.java b/src/main/java/org/rumbledb/compiler/StaticContextVisitor.java
index be20f6851..3f6697a10 100644
--- a/src/main/java/org/rumbledb/compiler/StaticContextVisitor.java
+++ b/src/main/java/org/rumbledb/compiler/StaticContextVisitor.java
@@ -106,13 +106,11 @@ public StaticContext visitLibraryModule(LibraryModule libraryModule, StaticConte
this.importedModuleContexts.put(libraryModule.getNamespace(), moduleContext);
}
argument.importModuleContext(
- this.importedModuleContexts.get(libraryModule.getNamespace()),
- libraryModule.getNamespace()
+ this.importedModuleContexts.get(libraryModule.getNamespace())
);
argument.getInScopeSchemaTypes()
.importModuleTypes(
- this.importedModuleContexts.get(libraryModule.getNamespace()).getInScopeSchemaTypes(),
- libraryModule.getNamespace()
+ this.importedModuleContexts.get(libraryModule.getNamespace()).getInScopeSchemaTypes()
);
return argument;
}
diff --git a/src/main/java/org/rumbledb/context/InScopeSchemaTypes.java b/src/main/java/org/rumbledb/context/InScopeSchemaTypes.java
index b561d6bd3..dd8754907 100644
--- a/src/main/java/org/rumbledb/context/InScopeSchemaTypes.java
+++ b/src/main/java/org/rumbledb/context/InScopeSchemaTypes.java
@@ -73,12 +73,10 @@ public void read(Kryo kryo, Input input) {
this.inScopeSchemaTypes = kryo.readObject(input, HashMap.class);
}
- public void importModuleTypes(InScopeSchemaTypes inScopeSchemaTypes, String targetNamespace) {
+ public void importModuleTypes(InScopeSchemaTypes inScopeSchemaTypes) {
for (Name name : inScopeSchemaTypes.inScopeSchemaTypes.keySet()) {
- if (name.getNamespace().equals(targetNamespace)) {
- ItemType itemType = inScopeSchemaTypes.inScopeSchemaTypes.get(name);
- this.inScopeSchemaTypes.put(name, itemType);
- }
+ ItemType itemType = inScopeSchemaTypes.inScopeSchemaTypes.get(name);
+ this.inScopeSchemaTypes.put(name, itemType);
}
}
diff --git a/src/main/java/org/rumbledb/context/StaticContext.java b/src/main/java/org/rumbledb/context/StaticContext.java
index e8d6cf0ee..e5a861e23 100644
--- a/src/main/java/org/rumbledb/context/StaticContext.java
+++ b/src/main/java/org/rumbledb/context/StaticContext.java
@@ -312,18 +312,14 @@ public void read(Kryo kryo, Input input) {
this.emptySequenceOrderLeast = input.readBoolean();
}
- public void importModuleContext(StaticContext moduleContext, String targetNamespace) {
+ public void importModuleContext(StaticContext moduleContext) {
for (Name name : moduleContext.inScopeVariables.keySet()) {
- if (name.getNamespace().contentEquals(targetNamespace)) {
- InScopeVariable variable = moduleContext.inScopeVariables.get(name);
- this.inScopeVariables.put(name, variable);
- }
+ InScopeVariable variable = moduleContext.inScopeVariables.get(name);
+ this.inScopeVariables.put(name, variable);
}
for (FunctionIdentifier fi : moduleContext.staticallyKnownFunctionSignatures.keySet()) {
- if (fi.getName().getNamespace().contentEquals(targetNamespace)) {
- FunctionSignature signature = moduleContext.staticallyKnownFunctionSignatures.get(fi);
- this.staticallyKnownFunctionSignatures.put(fi, signature);
- }
+ FunctionSignature signature = moduleContext.staticallyKnownFunctionSignatures.get(fi);
+ this.staticallyKnownFunctionSignatures.put(fi, signature);
}
}
@@ -377,7 +373,7 @@ public void setContextItemStaticType(SequenceType contextItemStaticType) {
// replace all inScopeVariable in this context and all parents until [stopContext] with name not in [varToExclude]
// with same variable with sequence type arity changed from 1 to + and form ? to *
- // used by groupBy cluse
+ // used by groupBy clause
public void incrementArities(StaticContext stopContext, Set varToExclude) {
this.inScopeVariables.replaceAll(
(key, value) -> varToExclude.contains(key)
@@ -395,7 +391,9 @@ public void incrementArities(StaticContext stopContext, Set varToExclude)
if (!this.inScopeVariables.containsKey(entry.getKey())) {
this.addVariable(
entry.getKey(),
- entry.getValue().getSequenceType().incrementArity(),
+ varToExclude.contains(entry.getKey())
+ ? entry.getValue().getSequenceType()
+ : entry.getValue().getSequenceType().incrementArity(),
entry.getValue().getMetadata()
);
}
diff --git a/src/main/java/org/rumbledb/context/VariableValues.java b/src/main/java/org/rumbledb/context/VariableValues.java
index abc20488d..175298a8f 100644
--- a/src/main/java/org/rumbledb/context/VariableValues.java
+++ b/src/main/java/org/rumbledb/context/VariableValues.java
@@ -371,30 +371,22 @@ public String toString() {
return sb.toString();
}
- public void importModuleValues(VariableValues moduleValues, String targetNamespace) {
+ public void importModuleValues(VariableValues moduleValues) {
for (Name name : moduleValues.localVariableValues.keySet()) {
- if (name.getNamespace().equals(targetNamespace)) {
- List- items = moduleValues.localVariableValues.get(name);
- this.localVariableValues.put(name, items);
- }
+ List
- items = moduleValues.localVariableValues.get(name);
+ this.localVariableValues.put(name, items);
}
for (Name name : moduleValues.localVariableCounts.keySet()) {
- if (name.getNamespace().equals(targetNamespace)) {
- Item item = moduleValues.localVariableCounts.get(name);
- this.localVariableCounts.put(name, item);
- }
+ Item item = moduleValues.localVariableCounts.get(name);
+ this.localVariableCounts.put(name, item);
}
for (Name name : moduleValues.rddVariableValues.keySet()) {
- if (name.getNamespace().equals(targetNamespace)) {
- JavaRDD
- items = moduleValues.rddVariableValues.get(name);
- this.rddVariableValues.put(name, items);
- }
+ JavaRDD
- items = moduleValues.rddVariableValues.get(name);
+ this.rddVariableValues.put(name, items);
}
for (Name name : moduleValues.dataFrameVariableValues.keySet()) {
- if (name.getNamespace().equals(targetNamespace)) {
- JSoundDataFrame items = moduleValues.dataFrameVariableValues.get(name);
- this.dataFrameVariableValues.put(name, items);
- }
+ JSoundDataFrame items = moduleValues.dataFrameVariableValues.get(name);
+ this.dataFrameVariableValues.put(name, items);
}
}
}
From b297e1af3dff2fe665c924c1a894fe292e5c05e7 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Thu, 23 Mar 2023 13:37:42 +0100
Subject: [PATCH 003/136] Add functions.
---
.../context/BuiltinFunctionCatalogue.java | 56 ++++++++++++++---
.../input/ParquetFileFunctionIterator.java | 14 +++--
.../trigonometric/CoshFunctionIterator.java | 60 +++++++++++++++++++
.../trigonometric/SinhFunctionIterator.java | 60 +++++++++++++++++++
4 files changed, 177 insertions(+), 13 deletions(-)
create mode 100644 src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/CoshFunctionIterator.java
create mode 100644 src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/SinhFunctionIterator.java
diff --git a/src/main/java/org/rumbledb/context/BuiltinFunctionCatalogue.java b/src/main/java/org/rumbledb/context/BuiltinFunctionCatalogue.java
index ffba03af9..1c2ffbe11 100644
--- a/src/main/java/org/rumbledb/context/BuiltinFunctionCatalogue.java
+++ b/src/main/java/org/rumbledb/context/BuiltinFunctionCatalogue.java
@@ -77,13 +77,7 @@
import org.rumbledb.runtime.functions.numerics.exponential.LogFunctionIterator;
import org.rumbledb.runtime.functions.numerics.exponential.PowFunctionIterator;
import org.rumbledb.runtime.functions.numerics.exponential.SqrtFunctionIterator;
-import org.rumbledb.runtime.functions.numerics.trigonometric.ACosFunctionIterator;
-import org.rumbledb.runtime.functions.numerics.trigonometric.ASinFunctionIterator;
-import org.rumbledb.runtime.functions.numerics.trigonometric.ATan2FunctionIterator;
-import org.rumbledb.runtime.functions.numerics.trigonometric.ATanFunctionIterator;
-import org.rumbledb.runtime.functions.numerics.trigonometric.CosFunctionIterator;
-import org.rumbledb.runtime.functions.numerics.trigonometric.SinFunctionIterator;
-import org.rumbledb.runtime.functions.numerics.trigonometric.TanFunctionIterator;
+import org.rumbledb.runtime.functions.numerics.trigonometric.*;
import org.rumbledb.runtime.functions.object.ObjectAccumulateFunctionIterator;
import org.rumbledb.runtime.functions.object.ObjectDescendantFunctionIterator;
import org.rumbledb.runtime.functions.object.ObjectDescendantPairsFunctionIterator;
@@ -496,13 +490,26 @@ private static BuiltinFunction createBuiltinFunction(
/**
* function that parses a parquet file
*/
- static final BuiltinFunction parquet_file = createBuiltinFunction(
+ static final BuiltinFunction parquet_file1 = createBuiltinFunction(
new Name(Name.JN_NS, "jn", "parquet-file"),
"string",
"item*",
ParquetFileFunctionIterator.class,
BuiltinFunction.BuiltinFunctionExecutionMode.DATAFRAME
);
+
+ /**
+ * function that parses a parquet file
+ */
+ static final BuiltinFunction parquet_file2 = createBuiltinFunction(
+ new Name(Name.JN_NS, "jn", "parquet-file"),
+ "string",
+ "integer",
+ "item*",
+ ParquetFileFunctionIterator.class,
+ BuiltinFunction.BuiltinFunctionExecutionMode.DATAFRAME
+ );
+
/**
* function that parses a csv file
*/
@@ -1243,6 +1250,34 @@ private static BuiltinFunction createBuiltinFunction(
ATan2FunctionIterator.class,
BuiltinFunction.BuiltinFunctionExecutionMode.LOCAL
);
+ /**
+ * function that returns the hyperbolic cosine of the angle given in radians
+ */
+ static final BuiltinFunction cosh = createBuiltinFunction(
+ new Name(
+ Name.JN_NS,
+ "jn",
+ "cosh"
+ ),
+ "double?",
+ "double?",
+ CoshFunctionIterator.class,
+ BuiltinFunction.BuiltinFunctionExecutionMode.LOCAL
+ );
+ /**
+ * function that returns the hyperbolic sine of the angle given in radians
+ */
+ static final BuiltinFunction sinh = createBuiltinFunction(
+ new Name(
+ Name.JN_NS,
+ "jn",
+ "sinh"
+ ),
+ "double?",
+ "double?",
+ SinhFunctionIterator.class,
+ BuiltinFunction.BuiltinFunctionExecutionMode.LOCAL
+ );
/**
* function that returns string
@@ -2641,7 +2676,8 @@ private static BuiltinFunction createBuiltinFunction(
builtinFunctions.put(local_text_file.getIdentifier(), local_text_file);
builtinFunctions.put(parallelizeFunction1.getIdentifier(), parallelizeFunction1);
builtinFunctions.put(parallelizeFunction2.getIdentifier(), parallelizeFunction2);
- builtinFunctions.put(parquet_file.getIdentifier(), parquet_file);
+ builtinFunctions.put(parquet_file1.getIdentifier(), parquet_file1);
+ builtinFunctions.put(parquet_file2.getIdentifier(), parquet_file2);
builtinFunctions.put(csv_file1.getIdentifier(), csv_file1);
builtinFunctions.put(csv_file2.getIdentifier(), csv_file2);
builtinFunctions.put(root_file1.getIdentifier(), root_file1);
@@ -2708,6 +2744,8 @@ private static BuiltinFunction createBuiltinFunction(
builtinFunctions.put(acos.getIdentifier(), acos);
builtinFunctions.put(atan.getIdentifier(), atan);
builtinFunctions.put(atan2.getIdentifier(), atan2);
+ builtinFunctions.put(cosh.getIdentifier(), cosh);
+ builtinFunctions.put(sinh.getIdentifier(), sinh);
builtinFunctions.put(string0.getIdentifier(), string0);
builtinFunctions.put(string1.getIdentifier(), string1);
diff --git a/src/main/java/org/rumbledb/runtime/functions/input/ParquetFileFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/input/ParquetFileFunctionIterator.java
index 4b3687e4d..5864c2cc1 100644
--- a/src/main/java/org/rumbledb/runtime/functions/input/ParquetFileFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/input/ParquetFileFunctionIterator.java
@@ -50,19 +50,25 @@ public ParquetFileFunctionIterator(
@Override
public JSoundDataFrame getDataFrame(DynamicContext context) {
- RuntimeIterator urlIterator = this.children.get(0);
- urlIterator.open(context);
- String url = urlIterator.next().getStringValue();
- urlIterator.close();
+
+ String url = this.children.get(0).materializeFirstItemOrNull(context).getStringValue();
+
URI uri = FileSystemUtil.resolveURI(this.staticURI, url, getMetadata());
if (!FileSystemUtil.exists(uri, context.getRumbleRuntimeConfiguration(), getMetadata())) {
throw new CannotRetrieveResourceException("File " + uri + " not found.", getMetadata());
}
+ int partitions = -1;
+ if (this.children.size() > 1) {
+ partitions = this.children.get(1).materializeFirstItemOrNull(context).getIntValue();
+ }
try {
Dataset
dataFrame = SparkSessionManager.getInstance()
.getOrCreateSession()
.read()
.parquet(uri.toString());
+ if (partitions != -1) {
+ dataFrame = dataFrame.repartition(partitions);
+ }
return new JSoundDataFrame(dataFrame);
} catch (Exception e) {
if (e instanceof AnalysisException) {
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/CoshFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/CoshFunctionIterator.java
new file mode 100644
index 000000000..f346ac86b
--- /dev/null
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/CoshFunctionIterator.java
@@ -0,0 +1,60 @@
+/*
+ * 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.
+ *
+ * Authors: Stefan Irimescu, Can Berker Cikis
+ *
+ */
+
+package org.rumbledb.runtime.functions.numerics.trigonometric;
+
+import org.rumbledb.api.Item;
+import org.rumbledb.context.DynamicContext;
+import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.items.ItemFactory;
+import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
+import org.rumbledb.runtime.RuntimeIterator;
+
+import java.util.List;
+
+public class CoshFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
+
+
+ private static final long serialVersionUID = 1L;
+
+ public CoshFunctionIterator(
+ List arguments,
+ ExecutionMode executionMode,
+ ExceptionMetadata iteratorMetadata
+ ) {
+ super(arguments, executionMode, iteratorMetadata);
+ }
+
+ @Override
+ public Item materializeFirstItemOrNull(DynamicContext dynamicContext) {
+ Item value = this.children.get(0).materializeFirstItemOrNull(dynamicContext);
+ if (value == null) {
+ return null;
+ }
+ double dvalue = value.getDoubleValue();
+ if (Double.isNaN(dvalue) || Double.isInfinite(dvalue)) {
+ return ItemFactory.getInstance().createDoubleItem(Double.NaN);
+ }
+ return ItemFactory.getInstance().createDoubleItem(Math.cosh(dvalue));
+ }
+
+
+}
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/SinhFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/SinhFunctionIterator.java
new file mode 100644
index 000000000..ce50c61fa
--- /dev/null
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/SinhFunctionIterator.java
@@ -0,0 +1,60 @@
+/*
+ * 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.
+ *
+ * Authors: Stefan Irimescu, Can Berker Cikis
+ *
+ */
+
+package org.rumbledb.runtime.functions.numerics.trigonometric;
+
+import org.rumbledb.api.Item;
+import org.rumbledb.context.DynamicContext;
+import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.items.ItemFactory;
+import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
+import org.rumbledb.runtime.RuntimeIterator;
+
+import java.util.List;
+
+public class SinhFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
+
+
+ private static final long serialVersionUID = 1L;
+
+ public SinhFunctionIterator(
+ List arguments,
+ ExecutionMode executionMode,
+ ExceptionMetadata iteratorMetadata
+ ) {
+ super(arguments, executionMode, iteratorMetadata);
+ }
+
+ @Override
+ public Item materializeFirstItemOrNull(DynamicContext dynamicContext) {
+ Item value = this.children.get(0).materializeFirstItemOrNull(dynamicContext);
+ if (value == null) {
+ return null;
+ }
+ double dvalue = value.getDoubleValue();
+ if (Double.isNaN(dvalue) || Double.isInfinite(dvalue)) {
+ return ItemFactory.getInstance().createDoubleItem(Double.NaN);
+ }
+ return ItemFactory.getInstance().createDoubleItem(Math.sinh(dvalue));
+ }
+
+
+}
From 7947654897c8b350330af319506fbad321f89d56 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Thu, 23 Mar 2023 13:55:17 +0100
Subject: [PATCH 004/136] Rewrite some general comparisons to value
comparisons.
---
.../rumbledb/compiler/ComparisonVisitor.java | 181 ++++++++++++++++++
.../org/rumbledb/compiler/VisitorHelpers.java | 13 ++
.../comparison/ComparisonExpression.java | 25 +++
.../control/TryCatchExpression.java | 5 +
.../rumbledb/expressions/flowr/LetClause.java | 26 ++-
5 files changed, 248 insertions(+), 2 deletions(-)
create mode 100644 src/main/java/org/rumbledb/compiler/ComparisonVisitor.java
diff --git a/src/main/java/org/rumbledb/compiler/ComparisonVisitor.java b/src/main/java/org/rumbledb/compiler/ComparisonVisitor.java
new file mode 100644
index 000000000..8aee78d39
--- /dev/null
+++ b/src/main/java/org/rumbledb/compiler/ComparisonVisitor.java
@@ -0,0 +1,181 @@
+package org.rumbledb.compiler;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.rumbledb.context.Name;
+import org.rumbledb.context.StaticContext;
+import org.rumbledb.expressions.CommaExpression;
+import org.rumbledb.expressions.Expression;
+import org.rumbledb.expressions.Node;
+import org.rumbledb.expressions.comparison.ComparisonExpression;
+import org.rumbledb.expressions.flowr.Clause;
+import org.rumbledb.expressions.flowr.FlworExpression;
+import org.rumbledb.expressions.flowr.ForClause;
+import org.rumbledb.expressions.flowr.ReturnClause;
+import org.rumbledb.expressions.flowr.WhereClause;
+import org.rumbledb.expressions.postfix.FilterExpression;
+import org.rumbledb.expressions.primary.BooleanLiteralExpression;
+import org.rumbledb.expressions.primary.FunctionCallExpression;
+import org.rumbledb.expressions.primary.IntegerLiteralExpression;
+import org.rumbledb.expressions.primary.StringLiteralExpression;
+import org.rumbledb.expressions.primary.VariableReferenceExpression;
+import org.rumbledb.types.BuiltinTypesCatalogue;
+import org.rumbledb.types.SequenceType;
+
+public class ComparisonVisitor extends CloneVisitor {
+ @Override
+ public Node visitComparisonExpr(ComparisonExpression expression, Node argument) {
+ Expression leftChild = (Expression) visit(expression.getChildren().get(0), argument);
+ Expression rightChild = (Expression) visit(expression.getChildren().get(1), argument);
+
+ // if it's already value comparison, return it
+ if (expression.getComparisonOperator().isValueComparison()) {
+ ComparisonExpression result = new ComparisonExpression(
+ leftChild,
+ rightChild,
+ expression.getComparisonOperator(),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+ ComparisonExpression.ComparisonOperator comparisonOperator = ComparisonExpression.ComparisonOperator
+ .getValueComparisonFromComparison(
+ expression.getComparisonOperator()
+ );
+ // if left and right have arity one, use value comparison
+ if (
+ leftChild.getStaticSequenceType().getArity() == SequenceType.Arity.One
+ && rightChild.getStaticSequenceType().getArity() == SequenceType.Arity.One
+ ) {
+ ComparisonExpression result = new ComparisonExpression(
+ leftChild,
+ rightChild,
+ comparisonOperator,
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+ // if left or right are a sequence, use FLWOR
+ if (
+ SequenceType.Arity.OneOrMore.isSubtypeOf(leftChild.getStaticSequenceType().getArity())
+ || SequenceType.Arity.OneOrMore.isSubtypeOf(rightChild.getStaticSequenceType().getArity())
+ ) {
+ Name variableNameLeft = Name.TEMP_VAR1;
+ Name variableNameRight = Name.TEMP_VAR2;
+
+ StaticContext leftContext = new StaticContext(expression.getStaticContext());
+ leftContext.addVariable(variableNameLeft, leftChild.getStaticSequenceType(), expression.getMetadata());
+ Clause firstClause = new ForClause(
+ variableNameLeft,
+ false,
+ leftChild.getStaticSequenceType(),
+ null,
+ leftChild,
+ expression.getMetadata()
+ );
+ firstClause.setStaticContext(leftContext);
+ StaticContext rightContext = new StaticContext(leftContext);
+ rightContext.addVariable(variableNameRight, rightChild.getStaticSequenceType(), expression.getMetadata());
+ Clause secondClause = new ForClause(
+ variableNameRight,
+ false,
+ rightChild.getStaticSequenceType(),
+ null,
+ rightChild,
+ expression.getMetadata()
+ );
+ secondClause.setStaticContext(rightContext);
+ firstClause.chainWith(secondClause);
+ Expression leftReference = new VariableReferenceExpression(variableNameLeft, expression.getMetadata());
+ leftReference.setStaticSequenceType(
+ new SequenceType(leftChild.getStaticSequenceType().getItemType(), SequenceType.Arity.One)
+ );
+ leftReference.setStaticContext(rightContext);
+ Expression rightReference = new VariableReferenceExpression(variableNameRight, expression.getMetadata());
+ rightReference.setStaticSequenceType(
+ new SequenceType(rightChild.getStaticSequenceType().getItemType(), SequenceType.Arity.One)
+ );
+ rightReference.setStaticContext(rightContext);
+ Expression valueComparison = new ComparisonExpression(
+ leftReference,
+ rightReference,
+ comparisonOperator,
+ expression.getMetadata()
+ );
+ valueComparison.setStaticContext(rightContext);
+ valueComparison.setStaticSequenceType(
+ new SequenceType(BuiltinTypesCatalogue.booleanItem, SequenceType.Arity.One)
+ );
+ WhereClause whereClause = new WhereClause(valueComparison, expression.getMetadata());
+ whereClause.setStaticContext(rightContext);
+ secondClause.chainWith(whereClause);
+ Expression stringLiteralExpression = new StringLiteralExpression("", null);
+ stringLiteralExpression.setStaticContext(rightContext);
+ stringLiteralExpression.setStaticSequenceType(
+ new SequenceType(BuiltinTypesCatalogue.stringItem, SequenceType.Arity.One)
+ );
+ ReturnClause returnClause = new ReturnClause(
+ stringLiteralExpression,
+ expression.getMetadata()
+ );
+ returnClause.setStaticContext(rightContext);
+ whereClause.chainWith(returnClause);
+ Expression flworExpression = new FlworExpression(returnClause, expression.getMetadata());
+ flworExpression.setStaticSequenceType(
+ new SequenceType(BuiltinTypesCatalogue.stringItem, SequenceType.Arity.ZeroOrMore)
+ );
+ flworExpression.setStaticContext(expression.getStaticContext());
+ FunctionCallExpression functionCallExpression = new FunctionCallExpression(
+ Name.createVariableInDefaultFunctionNamespace("exists"),
+ Collections.singletonList(flworExpression),
+ expression.getMetadata()
+ );
+ functionCallExpression.setStaticSequenceType(
+ new SequenceType(BuiltinTypesCatalogue.booleanItem, SequenceType.Arity.One)
+ );
+ functionCallExpression.setStaticContext(expression.getStaticContext());
+ return functionCallExpression;
+ }
+ // otherwise, use ([left op right, false][[1]])
+ ComparisonExpression comparisonExpression = new ComparisonExpression(
+ (Expression) visit(expression.getChildren().get(0), argument),
+ (Expression) visit(expression.getChildren().get(1), argument),
+ comparisonOperator,
+ expression.getMetadata()
+ );
+ comparisonExpression.setStaticSequenceType(expression.getStaticSequenceType());
+ comparisonExpression.setStaticContext(expression.getStaticContext());
+ BooleanLiteralExpression booleanExpression = new BooleanLiteralExpression(false, expression.getMetadata());
+ booleanExpression.setStaticSequenceType(
+ new SequenceType(BuiltinTypesCatalogue.booleanItem, SequenceType.Arity.One)
+ );
+ booleanExpression.setStaticContext(expression.getStaticContext());
+
+ List commaExpressions = new ArrayList<>();
+ commaExpressions.add(comparisonExpression);
+ commaExpressions.add(booleanExpression);
+ CommaExpression commaExpression = new CommaExpression(commaExpressions, expression.getMetadata());
+ commaExpression.setStaticSequenceType(
+ new SequenceType(BuiltinTypesCatalogue.booleanItem, SequenceType.Arity.OneOrMore)
+ );
+ commaExpression.setStaticContext(expression.getStaticContext());
+
+ Expression integerLiteralExpression = new IntegerLiteralExpression("1", expression.getMetadata());
+ integerLiteralExpression.setStaticSequenceType(SequenceType.INTEGER);
+ integerLiteralExpression.setStaticContext(expression.getStaticContext());
+ FilterExpression result = new FilterExpression(
+ commaExpression,
+ integerLiteralExpression,
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(new SequenceType(BuiltinTypesCatalogue.booleanItem, SequenceType.Arity.One));
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+}
diff --git a/src/main/java/org/rumbledb/compiler/VisitorHelpers.java b/src/main/java/org/rumbledb/compiler/VisitorHelpers.java
index 9b4f1eedc..04571a1f5 100644
--- a/src/main/java/org/rumbledb/compiler/VisitorHelpers.java
+++ b/src/main/java/org/rumbledb/compiler/VisitorHelpers.java
@@ -5,6 +5,7 @@
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.antlr.v4.runtime.BailErrorStrategy;
@@ -22,6 +23,7 @@
import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.OurBadException;
import org.rumbledb.exceptions.ParsingException;
+import org.rumbledb.expressions.AbstractNodeVisitor;
import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.Node;
import org.rumbledb.expressions.module.LibraryModule;
@@ -61,6 +63,15 @@ private static void inferTypes(Module module, RumbleRuntimeConfiguration conf) {
}
}
+ private static MainModule applyTypeDependentOptimizations(MainModule module) {
+ List> optimizers = Collections.singletonList(new ComparisonVisitor());
+ MainModule result = module;
+ for (AbstractNodeVisitor> optimizer : optimizers) {
+ result = (MainModule) optimizer.visit(result, null);
+ }
+ return result;
+ }
+
private static void printTree(Module node, RumbleRuntimeConfiguration conf) {
System.err.println("***************");
System.err.println("Expression tree");
@@ -140,6 +151,7 @@ public static MainModule parseJSONiqMainModule(
resolveDependencies(mainModule, configuration);
populateStaticContext(mainModule, configuration);
inferTypes(mainModule, configuration);
+ mainModule = applyTypeDependentOptimizations(mainModule);
populateExecutionModes(mainModule, configuration);
return mainModule;
} catch (ParseCancellationException ex) {
@@ -180,6 +192,7 @@ public static MainModule parseXQueryMainModule(
resolveDependencies(mainModule, configuration);
populateStaticContext(mainModule, configuration);
inferTypes(mainModule, configuration);
+ mainModule = applyTypeDependentOptimizations(mainModule);
populateExecutionModes(mainModule, configuration);
return mainModule;
} catch (ParseCancellationException ex) {
diff --git a/src/main/java/org/rumbledb/expressions/comparison/ComparisonExpression.java b/src/main/java/org/rumbledb/expressions/comparison/ComparisonExpression.java
index ce4bf57f1..6fc56a297 100644
--- a/src/main/java/org/rumbledb/expressions/comparison/ComparisonExpression.java
+++ b/src/main/java/org/rumbledb/expressions/comparison/ComparisonExpression.java
@@ -131,6 +131,31 @@ public static ComparisonOperator fromSymbol(String symbol) {
}
throw new OurBadException("Unrecognized comparison symbol: " + symbol);
}
+
+ public static ComparisonOperator getValueComparisonFromComparison(ComparisonOperator operator) {
+ switch (operator) {
+ case VC_EQ:
+ case GC_EQ:
+ return VC_EQ;
+ case VC_NE:
+ case GC_NE:
+ return VC_NE;
+ case VC_LT:
+ case GC_LT:
+ return VC_LT;
+ case VC_LE:
+ case GC_LE:
+ return VC_LE;
+ case VC_GT:
+ case GC_GT:
+ return VC_GT;
+ case VC_GE:
+ case GC_GE:
+ return VC_GE;
+ default:
+ return operator;
+ }
+ }
};
private Expression leftExpression;
diff --git a/src/main/java/org/rumbledb/expressions/control/TryCatchExpression.java b/src/main/java/org/rumbledb/expressions/control/TryCatchExpression.java
index 67fc40827..f6de3ff5e 100644
--- a/src/main/java/org/rumbledb/expressions/control/TryCatchExpression.java
+++ b/src/main/java/org/rumbledb/expressions/control/TryCatchExpression.java
@@ -33,6 +33,7 @@
public class TryCatchExpression extends Expression {
private final Expression tryExpression;
+
private final Map catchExpressions;
private final Expression catchAllExpression;
@@ -56,6 +57,10 @@ public List getErrorsCaught() {
return new ArrayList<>(this.catchExpressions.keySet());
}
+ public Map getCatchExpressions() {
+ return this.catchExpressions;
+ }
+
public boolean catches(String error) {
return this.catchExpressions.containsKey(error);
}
diff --git a/src/main/java/org/rumbledb/expressions/flowr/LetClause.java b/src/main/java/org/rumbledb/expressions/flowr/LetClause.java
index b548b22ef..bf12e8847 100644
--- a/src/main/java/org/rumbledb/expressions/flowr/LetClause.java
+++ b/src/main/java/org/rumbledb/expressions/flowr/LetClause.java
@@ -38,8 +38,11 @@ public class LetClause extends Clause {
private final Name variableName;
protected SequenceType sequenceType;
+ protected SequenceType staticType;
protected Expression expression;
+ private boolean isReferenced;
+
// Holds whether the let variable will be stored in materialized(local) or native/spark(RDD or DF) format in a tuple
protected ExecutionMode variableHighestStorageMode = ExecutionMode.UNSET;
@@ -56,6 +59,7 @@ public LetClause(
this.variableName = variableName;
this.sequenceType = sequenceType;
this.expression = expression;
+ this.isReferenced = true;
}
public Name getVariableName() {
@@ -118,8 +122,10 @@ public void print(StringBuffer buffer, int indent) {
" ("
+ (this.variableName)
+ ", "
- + this.getSequenceType().toString()
- + (this.getSequenceType().isResolved() ? " (resolved)" : " (unresolved)")
+ + ((this.getStaticType() != null) ? this.getStaticType().toString() : "(unset)")
+ + ((this.getStaticType() != null)
+ ? (this.getStaticType().isResolved() ? " (resolved)" : " (unresolved)")
+ : "")
+ ") "
);
buffer.append(")");
@@ -143,4 +149,20 @@ public void serializeToJSONiq(StringBuffer sb, int indent) {
this.expression.serializeToJSONiq(sb, 0);
sb.append(")\n");
}
+
+ public SequenceType getStaticType() {
+ return this.staticType;
+ }
+
+ public void setStaticType(SequenceType staticType) {
+ this.staticType = staticType;
+ }
+
+ public boolean getReferenced() {
+ return this.isReferenced;
+ }
+
+ public void setReferenced(boolean isReferenced) {
+ this.isReferenced = false;
+ }
}
From a8a3b799d231f6d6c739575a6dbfbe99bddfaea2 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Thu, 23 Mar 2023 14:11:28 +0100
Subject: [PATCH 005/136] Fix command line parameter to activate or not the
optimizeation.
---
.../org/rumbledb/compiler/TranslationVisitor.java | 2 +-
.../org/rumbledb/compiler/VisitorHelpers.java | 12 +++++++-----
.../config/RumbleRuntimeConfiguration.java | 15 +++++++++++++++
3 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/src/main/java/org/rumbledb/compiler/TranslationVisitor.java b/src/main/java/org/rumbledb/compiler/TranslationVisitor.java
index a9a979911..6b89fb67f 100644
--- a/src/main/java/org/rumbledb/compiler/TranslationVisitor.java
+++ b/src/main/java/org/rumbledb/compiler/TranslationVisitor.java
@@ -850,7 +850,7 @@ public Node visitComparisonExpr(JsoniqParser.ComparisonExprContext ctx) {
ComparisonExpression.ComparisonOperator kind = ComparisonExpression.ComparisonOperator.fromSymbol(
ctx.op.get(0).getText()
);
- if (kind.isValueComparison()) {
+ if (kind.isValueComparison() || this.configuration.optimizeGeneralComparisonToValueComparison()) {
return new ComparisonExpression(
mainExpression,
childExpression,
diff --git a/src/main/java/org/rumbledb/compiler/VisitorHelpers.java b/src/main/java/org/rumbledb/compiler/VisitorHelpers.java
index 04571a1f5..26c1cc99d 100644
--- a/src/main/java/org/rumbledb/compiler/VisitorHelpers.java
+++ b/src/main/java/org/rumbledb/compiler/VisitorHelpers.java
@@ -5,7 +5,6 @@
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import org.antlr.v4.runtime.BailErrorStrategy;
@@ -63,8 +62,11 @@ private static void inferTypes(Module module, RumbleRuntimeConfiguration conf) {
}
}
- private static MainModule applyTypeDependentOptimizations(MainModule module) {
- List> optimizers = Collections.singletonList(new ComparisonVisitor());
+ private static MainModule applyTypeDependentOptimizations(MainModule module, RumbleRuntimeConfiguration conf) {
+ List> optimizers = new ArrayList<>();
+ if (conf.optimizeGeneralComparisonToValueComparison()) {
+ optimizers.add(new ComparisonVisitor());
+ }
MainModule result = module;
for (AbstractNodeVisitor> optimizer : optimizers) {
result = (MainModule) optimizer.visit(result, null);
@@ -151,7 +153,7 @@ public static MainModule parseJSONiqMainModule(
resolveDependencies(mainModule, configuration);
populateStaticContext(mainModule, configuration);
inferTypes(mainModule, configuration);
- mainModule = applyTypeDependentOptimizations(mainModule);
+ mainModule = applyTypeDependentOptimizations(mainModule, configuration);
populateExecutionModes(mainModule, configuration);
return mainModule;
} catch (ParseCancellationException ex) {
@@ -192,7 +194,7 @@ public static MainModule parseXQueryMainModule(
resolveDependencies(mainModule, configuration);
populateStaticContext(mainModule, configuration);
inferTypes(mainModule, configuration);
- mainModule = applyTypeDependentOptimizations(mainModule);
+ mainModule = applyTypeDependentOptimizations(mainModule, configuration);
populateExecutionModes(mainModule, configuration);
return mainModule;
} catch (ParseCancellationException ex) {
diff --git a/src/main/java/org/rumbledb/config/RumbleRuntimeConfiguration.java b/src/main/java/org/rumbledb/config/RumbleRuntimeConfiguration.java
index 330a54958..b337baffb 100644
--- a/src/main/java/org/rumbledb/config/RumbleRuntimeConfiguration.java
+++ b/src/main/java/org/rumbledb/config/RumbleRuntimeConfiguration.java
@@ -67,6 +67,7 @@ public class RumbleRuntimeConfiguration implements Serializable, KryoSerializabl
private boolean nativeSQLPredicates;
private boolean dataFrameExecutionModeDetection;
private boolean datesWithTimeZone;
+ private boolean optimizeGeneralComparisonToValueComparison;
private boolean thirdFeature;
private Map shortcutMap;
@@ -392,6 +393,12 @@ public void init() {
} else {
this.datesWithTimeZone = false;
}
+
+ if (this.arguments.containsKey("optimize-general-comparison-to-value-comparison")) {
+ this.optimizeGeneralComparisonToValueComparison = this.arguments.get("optimize-general-comparison-to-value-comparison").equals("yes");
+ } else {
+ this.optimizeGeneralComparisonToValueComparison = true;
+ }
}
public boolean getOverwrite() {
@@ -575,6 +582,14 @@ public void setDateWithTimezone(boolean b) {
this.datesWithTimeZone = b;
}
+ public boolean optimizeGeneralComparisonToValueComparison() {
+ return this.optimizeGeneralComparisonToValueComparison;
+ }
+
+ public void setOptimizeGeneralComparisonToValueComparison(boolean b) {
+ this.optimizeGeneralComparisonToValueComparison = b;
+ }
+
public boolean isLocal() {
String masterConfig = SparkSessionManager.getInstance().getJavaSparkContext().getConf().get("spark.master");
return masterConfig.contains("local");
From 8064eef5e530cffa7e0904397a240201c606d574 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Thu, 23 Mar 2023 14:12:24 +0100
Subject: [PATCH 006/136] Simplify code.
---
src/main/java/org/rumbledb/compiler/TranslationVisitor.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/org/rumbledb/compiler/TranslationVisitor.java b/src/main/java/org/rumbledb/compiler/TranslationVisitor.java
index 6b89fb67f..f735513cd 100644
--- a/src/main/java/org/rumbledb/compiler/TranslationVisitor.java
+++ b/src/main/java/org/rumbledb/compiler/TranslationVisitor.java
@@ -854,7 +854,7 @@ public Node visitComparisonExpr(JsoniqParser.ComparisonExprContext ctx) {
return new ComparisonExpression(
mainExpression,
childExpression,
- ComparisonExpression.ComparisonOperator.fromSymbol(ctx.op.get(0).getText()),
+ kind,
createMetadataFromContext(ctx)
);
}
From dbd207a37a811dc3c87b843e1e94407204efd4b4 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Thu, 23 Mar 2023 14:14:25 +0100
Subject: [PATCH 007/136] Add documentation for sinh and cosh.
---
docs/Function library.md | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/docs/Function library.md b/docs/Function library.md
index 6845bdf44..f40fe1f7d 100644
--- a/docs/Function library.md
+++ b/docs/Function library.md
@@ -194,6 +194,22 @@ cos(pi())
```
+### cosh
+JSONiq-specific. Fully implemented
+
+```
+cosh(pi())
+```
+
+
+### sinh
+JSONiq-specific. Fully implemented
+
+```
+sinh(pi())
+```
+
+
### tan
[W3C specification](https://www.w3.org/TR/xpath-functions-31/#func-tan)
From 027ae5b1c133b17228809c35c50271293727dcc0 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Thu, 23 Mar 2023 14:15:31 +0100
Subject: [PATCH 008/136] Spotless.
---
.../java/org/rumbledb/config/RumbleRuntimeConfiguration.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/rumbledb/config/RumbleRuntimeConfiguration.java b/src/main/java/org/rumbledb/config/RumbleRuntimeConfiguration.java
index b337baffb..e29c891dd 100644
--- a/src/main/java/org/rumbledb/config/RumbleRuntimeConfiguration.java
+++ b/src/main/java/org/rumbledb/config/RumbleRuntimeConfiguration.java
@@ -395,7 +395,9 @@ public void init() {
}
if (this.arguments.containsKey("optimize-general-comparison-to-value-comparison")) {
- this.optimizeGeneralComparisonToValueComparison = this.arguments.get("optimize-general-comparison-to-value-comparison").equals("yes");
+ this.optimizeGeneralComparisonToValueComparison = this.arguments.get(
+ "optimize-general-comparison-to-value-comparison"
+ ).equals("yes");
} else {
this.optimizeGeneralComparisonToValueComparison = true;
}
From 3445a3f9caa38f3b49a70b60b2ed370277d8e03f Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Thu, 23 Mar 2023 14:16:49 +0100
Subject: [PATCH 009/136] Document new CLI parameter.
---
docs/CLI.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/CLI.md b/docs/CLI.md
index c4fd41289..a86386a18 100644
--- a/docs/CLI.md
+++ b/docs/CLI.md
@@ -38,4 +38,5 @@ Previous parameters (--shell, --query-path, --server) work in a backward compati
| --context-item-input-format | N/A | context-item-input-format | text or json | sets the input format to use
for parsing the standard input (as text or as a serialized json value) |
| --dates-with-timezone | N/A | dates-with-timezone | yes or no | activates timezone support for the type xs:date (deactivated by default) |
+| --optimize-general-comparison-to-value-comparison | N/A | optimize-general-comparison-to-valud-comparison | yes or no | activates automatic conversion of general comparisons to value comparisons when applicable |
From 7f38324e35cdd2eff02d5f86c6e6566111998b62 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Thu, 23 Mar 2023 14:18:53 +0100
Subject: [PATCH 010/136] Add clone visitor.
---
.../org/rumbledb/compiler/CloneVisitor.java | 714 ++++++++++++++++++
1 file changed, 714 insertions(+)
create mode 100644 src/main/java/org/rumbledb/compiler/CloneVisitor.java
diff --git a/src/main/java/org/rumbledb/compiler/CloneVisitor.java b/src/main/java/org/rumbledb/compiler/CloneVisitor.java
new file mode 100644
index 000000000..2b563092d
--- /dev/null
+++ b/src/main/java/org/rumbledb/compiler/CloneVisitor.java
@@ -0,0 +1,714 @@
+package org.rumbledb.compiler;
+
+import org.rumbledb.expressions.AbstractNodeVisitor;
+import org.rumbledb.expressions.CommaExpression;
+import org.rumbledb.expressions.Expression;
+import org.rumbledb.expressions.Node;
+import org.rumbledb.expressions.arithmetic.AdditiveExpression;
+import org.rumbledb.expressions.arithmetic.MultiplicativeExpression;
+import org.rumbledb.expressions.arithmetic.UnaryExpression;
+import org.rumbledb.expressions.comparison.ComparisonExpression;
+import org.rumbledb.expressions.control.*;
+import org.rumbledb.expressions.flowr.*;
+import org.rumbledb.expressions.logic.AndExpression;
+import org.rumbledb.expressions.logic.NotExpression;
+import org.rumbledb.expressions.logic.OrExpression;
+import org.rumbledb.expressions.miscellaneous.RangeExpression;
+import org.rumbledb.expressions.miscellaneous.StringConcatExpression;
+import org.rumbledb.expressions.module.*;
+import org.rumbledb.expressions.postfix.*;
+import org.rumbledb.expressions.primary.*;
+import org.rumbledb.expressions.typing.*;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+public class CloneVisitor extends AbstractNodeVisitor {
+ @Override
+ protected Node defaultAction(Node node, Node argument) {
+ return node;
+ }
+
+ @Override
+ public Node visitMainModule(MainModule module, Node argument) {
+ MainModule result = new MainModule(
+ (Prolog) visit(module.getProlog(), module.getProlog()),
+ (Expression) visit(module.getExpression(), argument),
+ module.getMetadata()
+ );
+ result.setStaticContext(module.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitLibraryModule(LibraryModule module, Node argument) {
+ LibraryModule result = new LibraryModule(
+ (Prolog) visit(module.getProlog(), module.getProlog()),
+ module.getNamespace(),
+ module.getMetadata()
+ );
+ result.setStaticContext(module.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitProlog(Prolog expression, Node argument) {
+ List libraryModules = expression.getImportedModules()
+ .stream()
+ .map(libraryModule -> (LibraryModule) visit(libraryModule, argument))
+ .collect(Collectors.toList());
+ List declarations = expression.getFunctionDeclarations()
+ .stream()
+ .map(expr -> visit(expr, argument))
+ .collect(Collectors.toList());
+ declarations.addAll(expression.getVariableDeclarations());
+ declarations.addAll(expression.getTypeDeclarations());
+ expression.setDeclarations(declarations);
+ expression.getImportedModules().clear();
+ expression.getImportedModules().addAll(libraryModules);
+ return expression;
+ }
+
+ @Override
+ public Node visitCommaExpression(CommaExpression expression, Node argument) {
+ List children = new ArrayList<>();
+ for (Expression child : expression.getExpressions()) {
+ children.add((Expression) visit(child, argument));
+ }
+ CommaExpression result = new CommaExpression(children, expression.getMetadata());
+ result.setStaticContext(expression.getStaticContext());
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ return result;
+ }
+
+ // region flwor
+ @Override
+ public Node visitFlowrExpression(FlworExpression expression, Node argument) {
+ Clause clause = expression.getReturnClause().getFirstClause();
+ Clause result = null;
+ while (clause != null) {
+ Clause temp = (Clause) this.visit(clause, argument);
+ if (result != null) {
+ result.chainWith(temp);
+ }
+ result = temp;
+ clause = clause.getNextClause();
+ }
+ Expression resultingExpression = new FlworExpression((ReturnClause) result, expression.getMetadata());
+ resultingExpression.setStaticContext(expression.getStaticContext());
+ resultingExpression.setStaticSequenceType(expression.getStaticSequenceType());
+ return resultingExpression;
+ }
+
+ public Node visitVariableReference(VariableReferenceExpression expression, Node argument) {
+ VariableReferenceExpression result = new VariableReferenceExpression(
+ expression.getVariableName(),
+ expression.getMetadata()
+ );
+ result.setActualType(expression.getActualType());
+ result.setStaticContext(expression.getStaticContext());
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ return result;
+ }
+
+ @Override
+ public Node visitForClause(ForClause clause, Node argument) {
+ Clause result = new ForClause(
+ clause.getVariableName(),
+ clause.isAllowEmpty(),
+ clause.getActualSequenceType(),
+ clause.getPositionalVariableName(),
+ (Expression) visit(clause.getExpression(), argument),
+ clause.getMetadata()
+ );
+ result.setStaticContext(clause.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitLetClause(LetClause clause, Node argument) {
+ LetClause result = new LetClause(
+ clause.getVariableName(),
+ clause.getActualSequenceType(),
+ (Expression) visit(clause.getExpression(), argument),
+ clause.getMetadata()
+ );
+ result.setStaticType(clause.getStaticType());
+ result.setStaticContext(clause.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitGroupByClause(GroupByClause clause, Node argument) {
+ List groupByVariableDeclarations = new ArrayList<>();
+ for (GroupByVariableDeclaration variable : clause.getGroupVariables()) {
+ groupByVariableDeclarations.add(
+ new GroupByVariableDeclaration(
+ variable.getVariableName(),
+ variable.getActualSequenceType(),
+ (variable.getExpression() == null)
+ ? variable.getExpression()
+ : (Expression) visit(variable.getExpression(), argument)
+ )
+ );
+ }
+ Clause result = new GroupByClause(groupByVariableDeclarations, clause.getMetadata());
+ result.setStaticContext(clause.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitOrderByClause(OrderByClause clause, Node argument) {
+ List groupByVariableDeclarations = new ArrayList<>();
+ for (OrderByClauseSortingKey orderByClauseSortingKey : clause.getSortingKeys()) {
+ groupByVariableDeclarations.add(
+ new OrderByClauseSortingKey(
+ (Expression) visit(orderByClauseSortingKey.getExpression(), argument),
+ orderByClauseSortingKey.isAscending(),
+ orderByClauseSortingKey.getUri(),
+ orderByClauseSortingKey.getEmptyOrder()
+ )
+ );
+
+ }
+ Clause result = new OrderByClause(groupByVariableDeclarations, clause.isStable(), clause.getMetadata());
+ result.setStaticContext(clause.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitCountClause(CountClause expression, Node argument) {
+ Clause result = new CountClause(
+ (VariableReferenceExpression) visit(expression.getCountVariable(), argument),
+ expression.getMetadata()
+ );
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitWhereClause(WhereClause clause, Node argument) {
+ Clause result = new WhereClause(
+ (Expression) visit(clause.getWhereExpression(), argument),
+ clause.getMetadata()
+ );
+ result.setStaticContext(clause.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitReturnClause(ReturnClause clause, Node argument) {
+ Clause result = new ReturnClause((Expression) visit(clause.getReturnExpr(), argument), clause.getMetadata());
+ result.setStaticContext(clause.getStaticContext());
+ return result;
+ }
+ // endregion
+
+ // region postfix
+ @Override
+ public Node visitArrayUnboxingExpression(ArrayUnboxingExpression expression, Node argument) {
+ ArrayUnboxingExpression result = new ArrayUnboxingExpression(
+ (Expression) visit(expression.getMainExpression(), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitArrayLookupExpression(ArrayLookupExpression expression, Node argument) {
+ ArrayLookupExpression result = new ArrayLookupExpression(
+ (Expression) visit(expression.getMainExpression(), argument),
+ (Expression) visit(expression.getLookupExpression(), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitObjectLookupExpression(ObjectLookupExpression expression, Node argument) {
+ ObjectLookupExpression result = new ObjectLookupExpression(
+ (Expression) visit(expression.getMainExpression(), argument),
+ (Expression) visit(expression.getLookupExpression(), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitFilterExpression(FilterExpression expression, Node argument) {
+ FilterExpression result = new FilterExpression(
+ (Expression) visit(expression.getMainExpression(), argument),
+ (Expression) visit(expression.getPredicateExpression(), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitDynamicFunctionCallExpression(DynamicFunctionCallExpression expression, Node argument) {
+ DynamicFunctionCallExpression result = new DynamicFunctionCallExpression(
+ (Expression) visit(expression.getMainExpression(), argument),
+ expression.getArguments(),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+ // endregion
+
+ // region primary
+ public Node visitArrayConstructor(ArrayConstructorExpression expression, Node argument) {
+ ArrayConstructorExpression result = new ArrayConstructorExpression(
+ (expression.getExpression() == null)
+ ? expression.getExpression()
+ : (Expression) visit(expression.getExpression(), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitObjectConstructor(ObjectConstructorExpression expression, Node argument) {
+ if (expression.isMergedConstructor()) {
+ Expression result = new ObjectConstructorExpression(
+ (Expression) visit(expression.getChildren().get(0), argument),
+ expression.getMetadata()
+ );
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ } else {
+ List keys = expression.getKeys()
+ .stream()
+ .map(key -> (Expression) visit(key, argument))
+ .collect(Collectors.toList());
+ List values = expression.getValues()
+ .stream()
+ .map(key -> (Expression) visit(key, argument))
+ .collect(Collectors.toList());
+ Expression result = new ObjectConstructorExpression(keys, values, expression.getMetadata());
+ result.setStaticContext(expression.getStaticContext());
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ return result;
+ }
+ }
+
+ @Override
+ public Node visitContextExpr(ContextItemExpression expression, Node argument) {
+ Expression result = new ContextItemExpression(expression.getMetadata());
+ result.setStaticContext(expression.getStaticContext());
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ return result;
+ }
+
+ @Override
+ public Node visitFunctionCall(FunctionCallExpression expression, Node argument) {
+ List arguments = expression.getArguments()
+ .stream()
+ .map(expr -> expr != null ? (Expression) visit(expr, argument) : null)
+ .collect(Collectors.toList());
+ Expression result = new FunctionCallExpression(
+ expression.getFunctionName(),
+ arguments,
+ expression.getMetadata()
+ );
+ result.setStaticContext(expression.getStaticContext());
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ return result;
+ }
+
+ @Override
+ public Node visitInlineFunctionExpr(InlineFunctionExpression expression, Node argument) {
+ InlineFunctionExpression result = new InlineFunctionExpression(
+ expression.getName(),
+ expression.getParams(),
+ expression.getReturnType(),
+ (Expression) visit(expression.getBody(), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ public Node visitNamedFunctionRef(NamedFunctionReferenceExpression expression, Node argument) {
+ Expression result = new NamedFunctionReferenceExpression(expression.getIdentifier(), expression.getMetadata());
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+ // endregion
+
+ // region literal
+ public Node visitInteger(IntegerLiteralExpression expression, Node argument) {
+ Expression result = new IntegerLiteralExpression(expression.getLexicalValue(), expression.getMetadata());
+ result.setStaticContext(expression.getStaticContext());
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ return result;
+ }
+
+ public Node visitString(StringLiteralExpression expression, Node argument) {
+ Expression result = new StringLiteralExpression(expression.getValue(), expression.getMetadata());
+ result.setStaticContext(expression.getStaticContext());
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ return result;
+ }
+
+ public Node visitDouble(DoubleLiteralExpression expression, Node argument) {
+ Expression result = new DoubleLiteralExpression(expression.getValue(), expression.getMetadata());
+ result.setStaticContext(expression.getStaticContext());
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ return result;
+ }
+
+ public Node visitDecimal(DecimalLiteralExpression expression, Node argument) {
+ Expression result = new DecimalLiteralExpression(expression.getValue(), expression.getMetadata());
+ result.setStaticContext(expression.getStaticContext());
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ return result;
+ }
+
+ public Node visitNull(NullLiteralExpression expression, Node argument) {
+ Expression result = new NullLiteralExpression(expression.getMetadata());
+ result.setStaticContext(expression.getStaticContext());
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ return result;
+ }
+
+ public Node visitBoolean(BooleanLiteralExpression expression, Node argument) {
+ Expression result = new BooleanLiteralExpression(expression.getValue(), expression.getMetadata());
+ result.setStaticContext(expression.getStaticContext());
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ return result;
+ }
+ // endregion
+
+ // region operational
+ @Override
+ public Node visitAdditiveExpr(AdditiveExpression expression, Node argument) {
+ AdditiveExpression result = new AdditiveExpression(
+ (Expression) visit(expression.getLeftExpression(), argument),
+ (Expression) visit(expression.getRightExpression(), argument),
+ expression.isMinus(),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitMultiplicativeExpr(MultiplicativeExpression expression, Node argument) {
+ MultiplicativeExpression result = new MultiplicativeExpression(
+ (Expression) visit(expression.getLeftExpression(), argument),
+ (Expression) visit(expression.getRightExpression(), argument),
+ expression.getMultiplicativeOperator(),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitSimpleMapExpr(SimpleMapExpression expression, Node argument) {
+ SimpleMapExpression result = new SimpleMapExpression(
+ (Expression) visit(expression.getChildren().get(0), argument),
+ (Expression) visit(expression.getChildren().get(1), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitAndExpr(AndExpression expression, Node argument) {
+ AndExpression result = new AndExpression(
+ (Expression) visit(expression.getChildren().get(0), argument),
+ (Expression) visit(expression.getChildren().get(1), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitOrExpr(OrExpression expression, Node argument) {
+ OrExpression result = new OrExpression(
+ (Expression) visit(expression.getChildren().get(0), argument),
+ (Expression) visit(expression.getChildren().get(1), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitNotExpr(NotExpression expression, Node argument) {
+ NotExpression result = new NotExpression(
+ (Expression) visit(expression.getMainExpression(), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitUnaryExpr(UnaryExpression expression, Node argument) {
+ UnaryExpression result = new UnaryExpression(
+ (Expression) visit(expression.getMainExpression(), argument),
+ expression.isNegated(),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitRangeExpr(RangeExpression expression, Node argument) {
+ RangeExpression result = new RangeExpression(
+ (Expression) visit(expression.getChildren().get(0), argument),
+ (Expression) visit(expression.getChildren().get(1), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitStringConcatExpr(StringConcatExpression expression, Node argument) {
+ StringConcatExpression result = new StringConcatExpression(
+ (Expression) visit(expression.getChildren().get(0), argument),
+ (Expression) visit(expression.getChildren().get(1), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitComparisonExpr(ComparisonExpression expression, Node argument) {
+ ComparisonExpression result = new ComparisonExpression(
+ (Expression) visit(expression.getChildren().get(0), argument),
+ (Expression) visit(expression.getChildren().get(1), argument),
+ expression.getComparisonOperator(),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitInstanceOfExpression(InstanceOfExpression expression, Node argument) {
+ InstanceOfExpression result = new InstanceOfExpression(
+ (Expression) visit(expression.getMainExpression(), argument),
+ expression.getSequenceType(),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitIsStaticallyExpr(IsStaticallyExpression expression, Node argument) {
+ IsStaticallyExpression result = new IsStaticallyExpression(
+ (Expression) visit(expression.getMainExpression(), argument),
+ expression.getSequenceType(),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitTreatExpression(TreatExpression expression, Node argument) {
+ TreatExpression result = new TreatExpression(
+ (Expression) visit(expression.getMainExpression(), argument),
+ expression.getsequenceType(),
+ expression.errorCodeThatShouldBeThrown(),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitCastableExpression(CastableExpression expression, Node argument) {
+ CastableExpression result = new CastableExpression(
+ (Expression) visit(expression.getMainExpression(), argument),
+ expression.getSequenceType(),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitCastExpression(CastExpression expression, Node argument) {
+ CastExpression result = new CastExpression(
+ (Expression) visit(expression.getMainExpression(), argument),
+ expression.getSequenceType(),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+ // endregion
+
+ // region control
+ @Override
+ public Node visitConditionalExpression(ConditionalExpression expression, Node argument) {
+ ConditionalExpression result = new ConditionalExpression(
+ (Expression) visit(expression.getCondition(), argument),
+ (Expression) visit(expression.getBranch(), argument),
+ (Expression) visit(expression.getElseBranch(), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitSwitchExpression(SwitchExpression expression, Node argument) {
+ List resultCases = new ArrayList<>();
+ for (SwitchCase switchCase : expression.getCases()) {
+ List children = new ArrayList<>();
+ for (Expression child : switchCase.getConditionExpressions()) {
+ children.add((Expression) visit(child, argument));
+ }
+ resultCases.add(new SwitchCase(children, (Expression) visit(switchCase.getReturnExpression(), argument)));
+ }
+ SwitchExpression result = new SwitchExpression(
+ (Expression) visit(expression.getTestCondition(), argument),
+ resultCases,
+ (Expression) visit(expression.getDefaultExpression(), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitTypeSwitchExpression(TypeSwitchExpression expression, Node argument) {
+ List resultCases = new ArrayList<>();
+ for (TypeswitchCase switchCase : expression.getCases()) {
+ if (switchCase.getUnion() == null) {
+ resultCases.add(
+ new TypeswitchCase(
+ switchCase.getVariableName(),
+ (Expression) visit(switchCase.getReturnExpression(), argument)
+ )
+ );
+ } else {
+ resultCases.add(
+ new TypeswitchCase(
+ switchCase.getVariableName(),
+ switchCase.getUnion(),
+ (Expression) visit(switchCase.getReturnExpression(), argument)
+ )
+ );
+ }
+ }
+ TypeswitchCase defaultCase = (expression.getDefaultCase().getUnion() == null)
+ ? new TypeswitchCase(
+ expression.getDefaultCase().getVariableName(),
+ (Expression) visit(expression.getDefaultCase().getReturnExpression(), argument)
+ )
+ : new TypeswitchCase(
+ expression.getDefaultCase().getVariableName(),
+ expression.getDefaultCase().getUnion(),
+ (Expression) visit(expression.getDefaultCase().getReturnExpression(), argument)
+ );
+
+ TypeSwitchExpression result = new TypeSwitchExpression(
+ (Expression) visit(expression.getTestCondition(), argument),
+ resultCases,
+ defaultCase,
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+
+ @Override
+ public Node visitTryCatchExpression(TryCatchExpression expression, Node argument) {
+ Map catchExpressions = new HashMap<>();
+ for (String key : expression.getCatchExpressions().keySet()) {
+ catchExpressions.put(key, (Expression) visit(expression.getCatchExpressions().get(key), argument));
+ }
+ TryCatchExpression result = new TryCatchExpression(
+ (Expression) visit(expression.getTryExpression(), argument),
+ catchExpressions,
+ (expression.getExpressionCatchingAll() == null)
+ ? expression.getExpressionCatchingAll()
+ : (Expression) visit(expression.getExpressionCatchingAll(), argument),
+ expression.getMetadata()
+ );
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ result.setStaticContext(expression.getStaticContext());
+ return result;
+ }
+ // endregion
+
+ // region prolog
+ @Override
+ public Node visitVariableDeclaration(VariableDeclaration expression, Node argument) {
+ return new VariableDeclaration(
+ expression.getVariableName(),
+ expression.external(),
+ expression.getActualSequenceType(),
+ (Expression) visit(expression.getExpression(), argument),
+ expression.getMetadata()
+ );
+ }
+
+ @Override
+ public Node visitFunctionDeclaration(FunctionDeclaration expression, Node argument) {
+ return new FunctionDeclaration(
+ (InlineFunctionExpression) visit(expression.getExpression(), argument),
+ expression.getMetadata()
+ );
+ }
+
+ public Node visitTypeDeclaration(TypeDeclaration expression, Node argument) {
+ return new TypeDeclaration(expression.getDefinition(), expression.getMetadata());
+ }
+
+ @Override
+ public Node visitValidateTypeExpression(ValidateTypeExpression expression, Node argument) {
+ Expression result = new ValidateTypeExpression(
+ (Expression) visit(expression.getMainExpression(), argument),
+ expression.getSequenceType(),
+ expression.getMetadata()
+ );
+ result.setStaticContext(expression.getStaticContext());
+ result.setStaticSequenceType(expression.getStaticSequenceType());
+ return result;
+ }
+}
From 2be97e03d8cb1a4a61c61c239f70f92292d0b15e Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Thu, 23 Mar 2023 14:30:44 +0100
Subject: [PATCH 011/136] Add tests.
---
.../runtime/FunctionNumerics/Trigonometric/FunctionCosh.jq | 4 ++++
.../runtime/FunctionNumerics/Trigonometric/FunctionSinh.jq | 4 ++++
2 files changed, 8 insertions(+)
create mode 100644 src/test/resources/test_files/runtime/FunctionNumerics/Trigonometric/FunctionCosh.jq
create mode 100644 src/test/resources/test_files/runtime/FunctionNumerics/Trigonometric/FunctionSinh.jq
diff --git a/src/test/resources/test_files/runtime/FunctionNumerics/Trigonometric/FunctionCosh.jq b/src/test/resources/test_files/runtime/FunctionNumerics/Trigonometric/FunctionCosh.jq
new file mode 100644
index 000000000..b54135a09
--- /dev/null
+++ b/src/test/resources/test_files/runtime/FunctionNumerics/Trigonometric/FunctionCosh.jq
@@ -0,0 +1,4 @@
+(:JIQS: ShouldRun; Output="(1, 11.605905056625701)" :)
+cosh(0),
+cosh(3.1428),
+cosh(())
diff --git a/src/test/resources/test_files/runtime/FunctionNumerics/Trigonometric/FunctionSinh.jq b/src/test/resources/test_files/runtime/FunctionNumerics/Trigonometric/FunctionSinh.jq
new file mode 100644
index 000000000..066b07294
--- /dev/null
+++ b/src/test/resources/test_files/runtime/FunctionNumerics/Trigonometric/FunctionSinh.jq
@@ -0,0 +1,4 @@
+(:JIQS: ShouldRun; Output="(0, 11.562743281047538)" :)
+sinh(0),
+sinh(3.1428),
+sinh(())
From 7bf479729b939dac4df5c6f638427658258fabb8 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Mon, 27 Mar 2023 11:42:43 +0200
Subject: [PATCH 012/136] Fix bug with join projections.
---
.../org/rumbledb/context/DynamicContext.java | 20 +++++++++++++++++++
.../runtime/flwor/FlworDataFrameUtils.java | 5 +++++
.../flwor/clauses/LetClauseSparkIterator.java | 8 ++++++--
3 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/rumbledb/context/DynamicContext.java b/src/main/java/org/rumbledb/context/DynamicContext.java
index e4e998f3e..f81d4a932 100644
--- a/src/main/java/org/rumbledb/context/DynamicContext.java
+++ b/src/main/java/org/rumbledb/context/DynamicContext.java
@@ -34,6 +34,7 @@
import org.rumbledb.items.structured.JSoundDataFrame;
import java.io.Serializable;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -158,6 +159,25 @@ public static void mergeVariableDependencies(
}
}
+ public static Map copyVariableDependencies(
+ Map from
+ ) {
+ Map result = new HashMap<>();
+ for (Name v : from.keySet()) {
+ result.put(v, from.get(v));
+ }
+ return result;
+ }
+
+ public static void printVariableDependencies(
+ Map deps
+ ) {
+ System.err.println("" + deps.size() + " variable dependencies:");
+ for (Name v : deps.keySet()) {
+ System.err.println("Key: " + v + " Value: " + deps.get(v));
+ }
+ }
+
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
diff --git a/src/main/java/org/rumbledb/runtime/flwor/FlworDataFrameUtils.java b/src/main/java/org/rumbledb/runtime/flwor/FlworDataFrameUtils.java
index 614404396..0277f13d6 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/FlworDataFrameUtils.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/FlworDataFrameUtils.java
@@ -394,6 +394,7 @@ public static List getColumns(
List variablesToRestrictTo,
List variablesToExclude
) {
+ inputSchema.printTreeString();
List result = new ArrayList<>();
if (dependencies == null) {
for (String columnName : inputSchema.fieldNames()) {
@@ -439,6 +440,10 @@ public static void getColumns(
if (variablesToRestrictTo != null && !variablesToRestrictTo.contains(variableName)) {
return;
}
+ System.err.println(variableName.toString());
+ for (String s : columnNames) {
+ System.err.println(" c " + s);
+ }
switch (dependency.getValue()) {
case FULL: {
if (columnNames.contains(variableName.toString())) {
diff --git a/src/main/java/org/rumbledb/runtime/flwor/clauses/LetClauseSparkIterator.java b/src/main/java/org/rumbledb/runtime/flwor/clauses/LetClauseSparkIterator.java
index e18c7930c..603f6d173 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/clauses/LetClauseSparkIterator.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/clauses/LetClauseSparkIterator.java
@@ -413,9 +413,14 @@ public FlworDataFrame getDataFrameAsJoin(
StructType inputSchema = inputDF.schema();
List variableNamesToExclude = new ArrayList<>();
variableNamesToExclude.add(this.variableName);
+ inputSchema.printTreeString();
+ Map prefilterProjection = DynamicContext.copyVariableDependencies(parentProjection);
+ DynamicContext.mergeVariableDependencies(prefilterProjection, predicateDependencies);
+ prefilterProjection.put(this.variableName, prefilterProjection.get(Name.CONTEXT_ITEM));
+ prefilterProjection.remove(Name.CONTEXT_ITEM);
List columnsToSelect = FlworDataFrameUtils.getColumns(
inputSchema,
- parentProjection,
+ prefilterProjection,
null,
variableNamesToExclude
);
@@ -434,7 +439,6 @@ public FlworDataFrame getDataFrameAsJoin(
SparkSessionManager.leftHandSideHashColumnName
)
);
-
// We now post-filter on the predicate, by hash group.
RuntimeIterator filteringPredicateIterator = new PredicateIterator(
new VariableReferenceIterator(
From db94a92ec66c39581f8b745e7321f8533cb7e726 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Mon, 27 Mar 2023 12:56:56 +0200
Subject: [PATCH 013/136] Update FlworDataFrameUtils.java
---
.../java/org/rumbledb/runtime/flwor/FlworDataFrameUtils.java | 4 ----
1 file changed, 4 deletions(-)
diff --git a/src/main/java/org/rumbledb/runtime/flwor/FlworDataFrameUtils.java b/src/main/java/org/rumbledb/runtime/flwor/FlworDataFrameUtils.java
index 0277f13d6..dbd0e8ebc 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/FlworDataFrameUtils.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/FlworDataFrameUtils.java
@@ -440,10 +440,6 @@ public static void getColumns(
if (variablesToRestrictTo != null && !variablesToRestrictTo.contains(variableName)) {
return;
}
- System.err.println(variableName.toString());
- for (String s : columnNames) {
- System.err.println(" c " + s);
- }
switch (dependency.getValue()) {
case FULL: {
if (columnNames.contains(variableName.toString())) {
From 8e66499f5f17de4d1ec9d34d38c85818a838b5f0 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Mon, 27 Mar 2023 12:57:10 +0200
Subject: [PATCH 014/136] Update FlworDataFrameUtils.java
---
.../java/org/rumbledb/runtime/flwor/FlworDataFrameUtils.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/main/java/org/rumbledb/runtime/flwor/FlworDataFrameUtils.java b/src/main/java/org/rumbledb/runtime/flwor/FlworDataFrameUtils.java
index dbd0e8ebc..614404396 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/FlworDataFrameUtils.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/FlworDataFrameUtils.java
@@ -394,7 +394,6 @@ public static List getColumns(
List variablesToRestrictTo,
List variablesToExclude
) {
- inputSchema.printTreeString();
List result = new ArrayList<>();
if (dependencies == null) {
for (String columnName : inputSchema.fieldNames()) {
From dd3d5149192acc2549f053bb2cb3c9544a24d91e Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Mon, 27 Mar 2023 12:57:31 +0200
Subject: [PATCH 015/136] Update DynamicContext.java
---
src/main/java/org/rumbledb/context/DynamicContext.java | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/src/main/java/org/rumbledb/context/DynamicContext.java b/src/main/java/org/rumbledb/context/DynamicContext.java
index f81d4a932..236deef58 100644
--- a/src/main/java/org/rumbledb/context/DynamicContext.java
+++ b/src/main/java/org/rumbledb/context/DynamicContext.java
@@ -169,15 +169,6 @@ public static Map copyVariableDependenc
return result;
}
- public static void printVariableDependencies(
- Map deps
- ) {
- System.err.println("" + deps.size() + " variable dependencies:");
- for (Name v : deps.keySet()) {
- System.err.println("Key: " + v + " Value: " + deps.get(v));
- }
- }
-
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
From d142df1f932c60c6bcf9520080e50bcb740b1dbd Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Mon, 27 Mar 2023 13:27:22 +0200
Subject: [PATCH 016/136] Add tests forcing local execution.
---
.../compiler/LocalExecutionModeVisitor.java | 46 ++++
src/test/java/iq/LocalRuntimeTests.java | 227 ++++++++++++++++++
2 files changed, 273 insertions(+)
create mode 100644 src/main/java/org/rumbledb/compiler/LocalExecutionModeVisitor.java
create mode 100644 src/test/java/iq/LocalRuntimeTests.java
diff --git a/src/main/java/org/rumbledb/compiler/LocalExecutionModeVisitor.java b/src/main/java/org/rumbledb/compiler/LocalExecutionModeVisitor.java
new file mode 100644
index 000000000..708ae91ff
--- /dev/null
+++ b/src/main/java/org/rumbledb/compiler/LocalExecutionModeVisitor.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ *
+ * Authors: Stefan Irimescu, Can Berker Cikis
+ *
+ */
+
+package org.rumbledb.compiler;
+
+import org.rumbledb.config.RumbleRuntimeConfiguration;
+import org.rumbledb.context.StaticContext;
+import org.rumbledb.expressions.AbstractNodeVisitor;
+import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.expressions.Node;
+
+/**
+ * Static context visitor implements a multi-pass algorithm that enables function hoisting
+ */
+public class LocalExecutionModeVisitor extends AbstractNodeVisitor {
+
+ LocalExecutionModeVisitor(RumbleRuntimeConfiguration configuration) {
+ }
+
+ void setVisitorConfig(VisitorConfig visitorConfig) {
+ }
+
+ @Override
+ protected StaticContext defaultAction(Node node, StaticContext argument) {
+ visitDescendants(node, argument);
+ node.setHighestExecutionMode(ExecutionMode.LOCAL);
+ return argument;
+ }
+}
diff --git a/src/test/java/iq/LocalRuntimeTests.java b/src/test/java/iq/LocalRuntimeTests.java
new file mode 100644
index 000000000..697c5196c
--- /dev/null
+++ b/src/test/java/iq/LocalRuntimeTests.java
@@ -0,0 +1,227 @@
+/*
+ * 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.
+ *
+ * Authors: Stefan Irimescu, Can Berker Cikis
+ *
+ */
+
+package iq;
+
+import iq.base.AnnotationsTestsBase;
+import scala.util.Properties;
+
+import org.apache.spark.SparkConf;
+import org.apache.spark.api.java.JavaRDD;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.rumbledb.api.Item;
+import org.rumbledb.api.SequenceOfItems;
+import org.rumbledb.config.RumbleRuntimeConfiguration;
+import org.rumbledb.context.Name;
+import org.rumbledb.items.ItemFactory;
+
+import sparksoniq.spark.SparkSessionManager;
+import utils.FileManager;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+@RunWith(Parameterized.class)
+public class LocalRuntimeTests extends AnnotationsTestsBase {
+
+ public static final File runtimeTestsDirectory = new File(
+ System.getProperty("user.dir")
+ +
+ "/src/test/resources/test_files/runtime"
+ );
+ public static final String javaVersion =
+ System.getProperty("java.version");
+ public static final String scalaVersion =
+ Properties.scalaPropOrElse("version.number", "unknown");
+ protected static List _testFiles = new ArrayList<>();
+ protected final File testFile;
+ protected static final RumbleRuntimeConfiguration configuration = new RumbleRuntimeConfiguration(
+ new String[] {
+ "--print-iterator-tree",
+ "yes",
+ "--variable:externalUnparsedString",
+ "unparsed string",
+ "--local-execution-only",
+ "yes" }
+ ).setExternalVariableValue(
+ Name.createVariableInNoNamespace("externalStringItem"),
+ Collections.singletonList(ItemFactory.getInstance().createStringItem("this is a string"))
+ )
+ .setExternalVariableValue(
+ Name.createVariableInNoNamespace("externalIntegerItems"),
+ Arrays.asList(
+ new Item[] {
+ ItemFactory.getInstance().createIntItem(1),
+ ItemFactory.getInstance().createIntItem(2),
+ ItemFactory.getInstance().createIntItem(3),
+ ItemFactory.getInstance().createIntItem(4),
+ ItemFactory.getInstance().createIntItem(5),
+ }
+ )
+ );
+ public LocalRuntimeTests(File testFile) {
+ this.testFile = testFile;
+ }
+
+ public static void readFileList(File dir) {
+ FileManager.loadJiqFiles(dir).forEach(file -> LocalRuntimeTests._testFiles.add(file));
+ }
+
+ @Parameterized.Parameters(name = "{index}:{0}")
+ public static Collection
*/
@Override public T visitValidateExpr(JsoniqParser.ValidateExprContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitAnnotateExpr(JsoniqParser.AnnotateExprContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
diff --git a/src/main/java/org/rumbledb/parser/JsoniqLexer.java b/src/main/java/org/rumbledb/parser/JsoniqLexer.java
index 67cdc1b97..01503d070 100644
--- a/src/main/java/org/rumbledb/parser/JsoniqLexer.java
+++ b/src/main/java/org/rumbledb/parser/JsoniqLexer.java
@@ -1,4 +1,4 @@
-// Generated from ./src/main/java/org/rumbledb/parser/Jsoniq.g4 by ANTLR 4.8
+// Generated from ./src/main/java/org/rumbledb/parser/Jsoniq.g4 by ANTLR 4.7
// Java header
package org.rumbledb.parser;
@@ -16,7 +16,7 @@
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class JsoniqLexer extends Lexer {
- static { RuntimeMetaData.checkVersion("4.8", RuntimeMetaData.VERSION); }
+ static { RuntimeMetaData.checkVersion("4.7", RuntimeMetaData.VERSION); }
protected static final DFA[] _decisionToDFA;
protected static final PredictionContextCache _sharedContextCache =
@@ -30,17 +30,17 @@ public class JsoniqLexer extends Lexer {
T__38=39, T__39=40, T__40=41, T__41=42, T__42=43, T__43=44, T__44=45,
T__45=46, T__46=47, T__47=48, T__48=49, T__49=50, T__50=51, T__51=52,
T__52=53, T__53=54, T__54=55, T__55=56, T__56=57, T__57=58, T__58=59,
- T__59=60, T__60=61, Kfor=62, Klet=63, Kwhere=64, Kgroup=65, Kby=66, Korder=67,
- Kreturn=68, Kif=69, Kin=70, Kas=71, Kat=72, Kallowing=73, Kempty=74, Kcount=75,
- Kstable=76, Kascending=77, Kdescending=78, Ksome=79, Kevery=80, Ksatisfies=81,
- Kcollation=82, Kgreatest=83, Kleast=84, Kswitch=85, Kcase=86, Ktry=87,
- Kcatch=88, Kdefault=89, Kthen=90, Kelse=91, Ktypeswitch=92, Kor=93, Kand=94,
- Knot=95, Kto=96, Kinstance=97, Kof=98, Kstatically=99, Kis=100, Ktreat=101,
- Kcast=102, Kcastable=103, Kversion=104, Kjsoniq=105, Kunordered=106, Ktrue=107,
- Kfalse=108, Ktype=109, Kdeclare=110, Kcontext=111, Kitem=112, Kvariable=113,
- STRING=114, ArgumentPlaceholder=115, NullLiteral=116, Literal=117, NumericLiteral=118,
- IntegerLiteral=119, DecimalLiteral=120, DoubleLiteral=121, WS=122, NCName=123,
- XQComment=124, ContentChar=125;
+ T__59=60, Kfor=61, Klet=62, Kwhere=63, Kgroup=64, Kby=65, Korder=66, Kreturn=67,
+ Kif=68, Kin=69, Kas=70, Kat=71, Kallowing=72, Kempty=73, Kcount=74, Kstable=75,
+ Kascending=76, Kdescending=77, Ksome=78, Kevery=79, Ksatisfies=80, Kcollation=81,
+ Kgreatest=82, Kleast=83, Kswitch=84, Kcase=85, Ktry=86, Kcatch=87, Kdefault=88,
+ Kthen=89, Kelse=90, Ktypeswitch=91, Kor=92, Kand=93, Knot=94, Kto=95,
+ Kinstance=96, Kof=97, Kstatically=98, Kis=99, Ktreat=100, Kcast=101, Kcastable=102,
+ Kversion=103, Kjsoniq=104, Kunordered=105, Ktrue=106, Kfalse=107, Ktype=108,
+ Kvalidate=109, Kannotate=110, Kdeclare=111, Kcontext=112, Kitem=113, Kvariable=114,
+ STRING=115, ArgumentPlaceholder=116, NullLiteral=117, Literal=118, NumericLiteral=119,
+ IntegerLiteral=120, DecimalLiteral=121, DoubleLiteral=122, WS=123, NCName=124,
+ XQComment=125, ContentChar=126;
public static String[] channelNames = {
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
};
@@ -49,72 +49,63 @@ public class JsoniqLexer extends Lexer {
"DEFAULT_MODE"
};
- private static String[] makeRuleNames() {
- return new String[] {
- "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8",
- "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16",
- "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24",
- "T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32",
- "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40",
- "T__41", "T__42", "T__43", "T__44", "T__45", "T__46", "T__47", "T__48",
- "T__49", "T__50", "T__51", "T__52", "T__53", "T__54", "T__55", "T__56",
- "T__57", "T__58", "T__59", "T__60", "Kfor", "Klet", "Kwhere", "Kgroup",
- "Kby", "Korder", "Kreturn", "Kif", "Kin", "Kas", "Kat", "Kallowing",
- "Kempty", "Kcount", "Kstable", "Kascending", "Kdescending", "Ksome",
- "Kevery", "Ksatisfies", "Kcollation", "Kgreatest", "Kleast", "Kswitch",
- "Kcase", "Ktry", "Kcatch", "Kdefault", "Kthen", "Kelse", "Ktypeswitch",
- "Kor", "Kand", "Knot", "Kto", "Kinstance", "Kof", "Kstatically", "Kis",
- "Ktreat", "Kcast", "Kcastable", "Kversion", "Kjsoniq", "Kunordered",
- "Ktrue", "Kfalse", "Ktype", "Kdeclare", "Kcontext", "Kitem", "Kvariable",
- "STRING", "ESC", "UNICODE", "HEX", "ArgumentPlaceholder", "NullLiteral",
- "Literal", "NumericLiteral", "IntegerLiteral", "DecimalLiteral", "DoubleLiteral",
- "Digits", "WS", "NCName", "NameStartChar", "NameChar", "XQComment", "ContentChar"
- };
- }
- public static final String[] ruleNames = makeRuleNames();
+ public static final String[] ruleNames = {
+ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8",
+ "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16",
+ "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24",
+ "T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32",
+ "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40",
+ "T__41", "T__42", "T__43", "T__44", "T__45", "T__46", "T__47", "T__48",
+ "T__49", "T__50", "T__51", "T__52", "T__53", "T__54", "T__55", "T__56",
+ "T__57", "T__58", "T__59", "Kfor", "Klet", "Kwhere", "Kgroup", "Kby",
+ "Korder", "Kreturn", "Kif", "Kin", "Kas", "Kat", "Kallowing", "Kempty",
+ "Kcount", "Kstable", "Kascending", "Kdescending", "Ksome", "Kevery", "Ksatisfies",
+ "Kcollation", "Kgreatest", "Kleast", "Kswitch", "Kcase", "Ktry", "Kcatch",
+ "Kdefault", "Kthen", "Kelse", "Ktypeswitch", "Kor", "Kand", "Knot", "Kto",
+ "Kinstance", "Kof", "Kstatically", "Kis", "Ktreat", "Kcast", "Kcastable",
+ "Kversion", "Kjsoniq", "Kunordered", "Ktrue", "Kfalse", "Ktype", "Kvalidate",
+ "Kannotate", "Kdeclare", "Kcontext", "Kitem", "Kvariable", "STRING", "ESC",
+ "UNICODE", "HEX", "ArgumentPlaceholder", "NullLiteral", "Literal", "NumericLiteral",
+ "IntegerLiteral", "DecimalLiteral", "DoubleLiteral", "Digits", "WS", "NCName",
+ "NameStartChar", "NameChar", "XQComment", "ContentChar"
+ };
- private static String[] makeLiteralNames() {
- return new String[] {
- null, "';'", "'module'", "'namespace'", "'='", "'ordering'", "'ordered'",
- "'decimal-format'", "':'", "'decimal-separator'", "'grouping-separator'",
- "'infinity'", "'minus-sign'", "'NaN'", "'percent'", "'per-mille'", "'zero-digit'",
- "'digit'", "'pattern-separator'", "'import'", "','", "':='", "'external'",
- "'function'", "'('", "')'", "'{'", "'}'", "'jsound'", "'compact'", "'verbose'",
- "'json'", "'schema'", "'$'", "'|'", "'*'", "'eq'", "'ne'", "'lt'", "'le'",
- "'gt'", "'ge'", "'!='", "'<'", "'<='", "'>'", "'>='", "'||'", "'+'",
- "'-'", "'div'", "'idiv'", "'mod'", "'validate'", "'!'", "'['", "']'",
- "'.'", "'$$'", "'#'", "'{|'", "'|}'", "'for'", "'let'", "'where'", "'group'",
- "'by'", "'order'", "'return'", "'if'", "'in'", "'as'", "'at'", "'allowing'",
- "'empty'", "'count'", "'stable'", "'ascending'", "'descending'", "'some'",
- "'every'", "'satisfies'", "'collation'", "'greatest'", "'least'", "'switch'",
- "'case'", "'try'", "'catch'", "'default'", "'then'", "'else'", "'typeswitch'",
- "'or'", "'and'", "'not'", "'to'", "'instance'", "'of'", "'statically'",
- "'is'", "'treat'", "'cast'", "'castable'", "'version'", "'jsoniq'", "'unordered'",
- "'true'", "'false'", "'type'", "'declare'", "'context'", "'item'", "'variable'",
- null, "'?'", "'null'"
- };
- }
- private static final String[] _LITERAL_NAMES = makeLiteralNames();
- private static String[] makeSymbolicNames() {
- return new String[] {
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, "Kfor", "Klet", "Kwhere", "Kgroup", "Kby", "Korder", "Kreturn",
- "Kif", "Kin", "Kas", "Kat", "Kallowing", "Kempty", "Kcount", "Kstable",
- "Kascending", "Kdescending", "Ksome", "Kevery", "Ksatisfies", "Kcollation",
- "Kgreatest", "Kleast", "Kswitch", "Kcase", "Ktry", "Kcatch", "Kdefault",
- "Kthen", "Kelse", "Ktypeswitch", "Kor", "Kand", "Knot", "Kto", "Kinstance",
- "Kof", "Kstatically", "Kis", "Ktreat", "Kcast", "Kcastable", "Kversion",
- "Kjsoniq", "Kunordered", "Ktrue", "Kfalse", "Ktype", "Kdeclare", "Kcontext",
- "Kitem", "Kvariable", "STRING", "ArgumentPlaceholder", "NullLiteral",
- "Literal", "NumericLiteral", "IntegerLiteral", "DecimalLiteral", "DoubleLiteral",
- "WS", "NCName", "XQComment", "ContentChar"
- };
- }
- private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
+ private static final String[] _LITERAL_NAMES = {
+ null, "';'", "'module'", "'namespace'", "'='", "'ordering'", "'ordered'",
+ "'decimal-format'", "':'", "'decimal-separator'", "'grouping-separator'",
+ "'infinity'", "'minus-sign'", "'NaN'", "'percent'", "'per-mille'", "'zero-digit'",
+ "'digit'", "'pattern-separator'", "'import'", "','", "':='", "'external'",
+ "'function'", "'('", "')'", "'{'", "'}'", "'jsound'", "'compact'", "'verbose'",
+ "'json'", "'schema'", "'$'", "'|'", "'*'", "'eq'", "'ne'", "'lt'", "'le'",
+ "'gt'", "'ge'", "'!='", "'<'", "'<='", "'>'", "'>='", "'||'", "'+'", "'-'",
+ "'div'", "'idiv'", "'mod'", "'!'", "'['", "']'", "'.'", "'$$'", "'#'",
+ "'{|'", "'|}'", "'for'", "'let'", "'where'", "'group'", "'by'", "'order'",
+ "'return'", "'if'", "'in'", "'as'", "'at'", "'allowing'", "'empty'", "'count'",
+ "'stable'", "'ascending'", "'descending'", "'some'", "'every'", "'satisfies'",
+ "'collation'", "'greatest'", "'least'", "'switch'", "'case'", "'try'",
+ "'catch'", "'default'", "'then'", "'else'", "'typeswitch'", "'or'", "'and'",
+ "'not'", "'to'", "'instance'", "'of'", "'statically'", "'is'", "'treat'",
+ "'cast'", "'castable'", "'version'", "'jsoniq'", "'unordered'", "'true'",
+ "'false'", "'type'", "'validate'", "'annotate'", "'declare'", "'context'",
+ "'item'", "'variable'", null, "'?'", "'null'"
+ };
+ private static final String[] _SYMBOLIC_NAMES = {
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, "Kfor", "Klet", "Kwhere", "Kgroup", "Kby", "Korder", "Kreturn",
+ "Kif", "Kin", "Kas", "Kat", "Kallowing", "Kempty", "Kcount", "Kstable",
+ "Kascending", "Kdescending", "Ksome", "Kevery", "Ksatisfies", "Kcollation",
+ "Kgreatest", "Kleast", "Kswitch", "Kcase", "Ktry", "Kcatch", "Kdefault",
+ "Kthen", "Kelse", "Ktypeswitch", "Kor", "Kand", "Knot", "Kto", "Kinstance",
+ "Kof", "Kstatically", "Kis", "Ktreat", "Kcast", "Kcastable", "Kversion",
+ "Kjsoniq", "Kunordered", "Ktrue", "Kfalse", "Ktype", "Kvalidate", "Kannotate",
+ "Kdeclare", "Kcontext", "Kitem", "Kvariable", "STRING", "ArgumentPlaceholder",
+ "NullLiteral", "Literal", "NumericLiteral", "IntegerLiteral", "DecimalLiteral",
+ "DoubleLiteral", "WS", "NCName", "XQComment", "ContentChar"
+ };
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
/**
@@ -173,9 +164,9 @@ public JsoniqLexer(CharStream input) {
public ATN getATN() { return _ATN; }
public static final String _serializedATN =
- "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\177\u040b\b\1\4\2"+
- "\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4"+
- "\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\u0080\u0416\b\1\4"+
+ "\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n"+
+ "\4\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+
"\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31"+
"\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t"+
" \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t"+
@@ -188,339 +179,343 @@ public JsoniqLexer(CharStream input) {
"\tk\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv"+
"\4w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t"+
"\u0080\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084"+
- "\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3"+
- "\4\3\4\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7"+
- "\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
- "\b\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n"+
- "\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3"+
- "\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f"+
- "\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3"+
- "\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\20\3"+
- "\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3"+
- "\21\3\22\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3"+
- "\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3"+
- "\24\3\24\3\24\3\24\3\25\3\25\3\26\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3"+
- "\27\3\27\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\31\3"+
- "\31\3\32\3\32\3\33\3\33\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3"+
- "\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37\3"+
- "\37\3\37\3 \3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3\"\3\"\3#\3#\3$\3$\3%\3"+
- "%\3%\3&\3&\3&\3\'\3\'\3\'\3(\3(\3(\3)\3)\3)\3*\3*\3*\3+\3+\3+\3,\3,\3"+
- "-\3-\3-\3.\3.\3/\3/\3/\3\60\3\60\3\60\3\61\3\61\3\62\3\62\3\63\3\63\3"+
- "\63\3\63\3\64\3\64\3\64\3\64\3\64\3\65\3\65\3\65\3\65\3\66\3\66\3\66\3"+
- "\66\3\66\3\66\3\66\3\66\3\66\3\67\3\67\38\38\39\39\3:\3:\3;\3;\3;\3<\3"+
- "<\3=\3=\3=\3>\3>\3>\3?\3?\3?\3?\3@\3@\3@\3@\3A\3A\3A\3A\3A\3A\3B\3B\3"+
- "B\3B\3B\3B\3C\3C\3C\3D\3D\3D\3D\3D\3D\3E\3E\3E\3E\3E\3E\3E\3F\3F\3F\3"+
- "G\3G\3G\3H\3H\3H\3I\3I\3I\3J\3J\3J\3J\3J\3J\3J\3J\3J\3K\3K\3K\3K\3K\3"+
- "K\3L\3L\3L\3L\3L\3L\3M\3M\3M\3M\3M\3M\3M\3N\3N\3N\3N\3N\3N\3N\3N\3N\3"+
- "N\3O\3O\3O\3O\3O\3O\3O\3O\3O\3O\3O\3P\3P\3P\3P\3P\3Q\3Q\3Q\3Q\3Q\3Q\3"+
- "R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3S\3S\3S\3S\3S\3S\3S\3S\3S\3S\3T\3T\3T\3"+
- "T\3T\3T\3T\3T\3T\3U\3U\3U\3U\3U\3U\3V\3V\3V\3V\3V\3V\3V\3W\3W\3W\3W\3"+
- "W\3X\3X\3X\3X\3Y\3Y\3Y\3Y\3Y\3Y\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3Z\3[\3[\3[\3[\3"+
- "[\3\\\3\\\3\\\3\\\3\\\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3^\3^\3^\3_\3_"+
- "\3_\3_\3`\3`\3`\3`\3a\3a\3a\3b\3b\3b\3b\3b\3b\3b\3b\3b\3c\3c\3c\3d\3d"+
- "\3d\3d\3d\3d\3d\3d\3d\3d\3d\3e\3e\3e\3f\3f\3f\3f\3f\3f\3g\3g\3g\3g\3g"+
- "\3h\3h\3h\3h\3h\3h\3h\3h\3h\3i\3i\3i\3i\3i\3i\3i\3i\3j\3j\3j\3j\3j\3j"+
- "\3j\3k\3k\3k\3k\3k\3k\3k\3k\3k\3k\3l\3l\3l\3l\3l\3m\3m\3m\3m\3m\3m\3n"+
- "\3n\3n\3n\3n\3o\3o\3o\3o\3o\3o\3o\3o\3p\3p\3p\3p\3p\3p\3p\3p\3q\3q\3q"+
- "\3q\3q\3r\3r\3r\3r\3r\3r\3r\3r\3r\3s\3s\3s\7s\u0399\ns\fs\16s\u039c\13"+
- "s\3s\3s\3t\3t\3t\5t\u03a3\nt\3u\3u\3u\3u\3u\3u\3v\3v\3w\3w\3x\3x\3x\3"+
- "x\3x\3y\3y\3z\3z\3z\5z\u03b9\nz\3{\3{\3|\3|\3|\3|\3|\7|\u03c2\n|\f|\16"+
- "|\u03c5\13|\5|\u03c7\n|\3}\3}\3}\3}\3}\7}\u03ce\n}\f}\16}\u03d1\13}\5"+
- "}\u03d3\n}\5}\u03d5\n}\3}\3}\5}\u03d9\n}\3}\3}\3~\6~\u03de\n~\r~\16~\u03df"+
- "\3\177\3\177\3\177\3\177\3\u0080\3\u0080\7\u0080\u03e8\n\u0080\f\u0080"+
- "\16\u0080\u03eb\13\u0080\3\u0081\5\u0081\u03ee\n\u0081\3\u0082\3\u0082"+
- "\5\u0082\u03f2\n\u0082\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083"+
- "\3\u0083\3\u0083\7\u0083\u03fc\n\u0083\f\u0083\16\u0083\u03ff\13\u0083"+
- "\3\u0083\6\u0083\u0402\n\u0083\r\u0083\16\u0083\u0403\3\u0083\3\u0083"+
- "\3\u0083\3\u0083\3\u0084\3\u0084\2\2\u0085\3\3\5\4\7\5\t\6\13\7\r\b\17"+
- "\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+"+
- "\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+"+
- "U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s;u{?}@\177A\u0081"+
- "B\u0083C\u0085D\u0087E\u0089F\u008bG\u008dH\u008fI\u0091J\u0093K\u0095"+
- "L\u0097M\u0099N\u009bO\u009dP\u009fQ\u00a1R\u00a3S\u00a5T\u00a7U\u00a9"+
- "V\u00abW\u00adX\u00afY\u00b1Z\u00b3[\u00b5\\\u00b7]\u00b9^\u00bb_\u00bd"+
- "`\u00bfa\u00c1b\u00c3c\u00c5d\u00c7e\u00c9f\u00cbg\u00cdh\u00cfi\u00d1"+
- "j\u00d3k\u00d5l\u00d7m\u00d9n\u00dbo\u00ddp\u00dfq\u00e1r\u00e3s\u00e5"+
- "t\u00e7\2\u00e9\2\u00eb\2\u00edu\u00efv\u00f1w\u00f3x\u00f5y\u00f7z\u00f9"+
- "{\u00fb\2\u00fd|\u00ff}\u0101\2\u0103\2\u0105~\u0107\177\3\2\17\4\2$$"+
- "^^\n\2$$\61\61^^ddhhppttvv\5\2\62;CHch\3\2\62;\4\2GGgg\4\2--//\5\2\13"+
- "\f\17\17\"\"\20\2C\\aac|\u00c2\u00d8\u00da\u00f8\u00fa\u0301\u0372\u037f"+
- "\u0381\u2001\u200e\u200f\u2072\u2191\u2c02\u2ff1\u3003\ud801\uf902\ufdd1"+
- "\ufdf2\uffff\7\2//\62;\u00b9\u00b9\u0302\u0371\u2041\u2042\3\2<<\3\2+"+
- "+\4\2**<<\7\2$$()>>}}\177\177\2\u0417\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2"+
- "\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2"+
- "\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3"+
- "\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3"+
- "\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65"+
- "\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3"+
- "\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2"+
- "\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2"+
- "[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3"+
- "\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2"+
- "\2\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2"+
- "\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2\2\u0087\3\2\2\2\2\u0089"+
- "\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2"+
- "\2\2\u0093\3\2\2\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009b"+
- "\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2\2\2\u00a3\3\2\2"+
- "\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad"+
- "\3\2\2\2\2\u00af\3\2\2\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2"+
- "\2\2\u00b7\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2\2\2\u00bf"+
- "\3\2\2\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2\2\2\u00c5\3\2\2\2\2\u00c7\3\2\2"+
- "\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1"+
- "\3\2\2\2\2\u00d3\3\2\2\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2"+
- "\2\2\u00db\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2\2\2\u00e3"+
- "\3\2\2\2\2\u00e5\3\2\2\2\2\u00ed\3\2\2\2\2\u00ef\3\2\2\2\2\u00f1\3\2\2"+
- "\2\2\u00f3\3\2\2\2\2\u00f5\3\2\2\2\2\u00f7\3\2\2\2\2\u00f9\3\2\2\2\2\u00fd"+
- "\3\2\2\2\2\u00ff\3\2\2\2\2\u0105\3\2\2\2\2\u0107\3\2\2\2\3\u0109\3\2\2"+
- "\2\5\u010b\3\2\2\2\7\u0112\3\2\2\2\t\u011c\3\2\2\2\13\u011e\3\2\2\2\r"+
- "\u0127\3\2\2\2\17\u012f\3\2\2\2\21\u013e\3\2\2\2\23\u0140\3\2\2\2\25\u0152"+
- "\3\2\2\2\27\u0165\3\2\2\2\31\u016e\3\2\2\2\33\u0179\3\2\2\2\35\u017d\3"+
- "\2\2\2\37\u0185\3\2\2\2!\u018f\3\2\2\2#\u019a\3\2\2\2%\u01a0\3\2\2\2\'"+
- "\u01b2\3\2\2\2)\u01b9\3\2\2\2+\u01bb\3\2\2\2-\u01be\3\2\2\2/\u01c7\3\2"+
- "\2\2\61\u01d0\3\2\2\2\63\u01d2\3\2\2\2\65\u01d4\3\2\2\2\67\u01d6\3\2\2"+
- "\29\u01d8\3\2\2\2;\u01df\3\2\2\2=\u01e7\3\2\2\2?\u01ef\3\2\2\2A\u01f4"+
- "\3\2\2\2C\u01fb\3\2\2\2E\u01fd\3\2\2\2G\u01ff\3\2\2\2I\u0201\3\2\2\2K"+
- "\u0204\3\2\2\2M\u0207\3\2\2\2O\u020a\3\2\2\2Q\u020d\3\2\2\2S\u0210\3\2"+
- "\2\2U\u0213\3\2\2\2W\u0216\3\2\2\2Y\u0218\3\2\2\2[\u021b\3\2\2\2]\u021d"+
- "\3\2\2\2_\u0220\3\2\2\2a\u0223\3\2\2\2c\u0225\3\2\2\2e\u0227\3\2\2\2g"+
- "\u022b\3\2\2\2i\u0230\3\2\2\2k\u0234\3\2\2\2m\u023d\3\2\2\2o\u023f\3\2"+
- "\2\2q\u0241\3\2\2\2s\u0243\3\2\2\2u\u0245\3\2\2\2w\u0248\3\2\2\2y\u024a"+
- "\3\2\2\2{\u024d\3\2\2\2}\u0250\3\2\2\2\177\u0254\3\2\2\2\u0081\u0258\3"+
- "\2\2\2\u0083\u025e\3\2\2\2\u0085\u0264\3\2\2\2\u0087\u0267\3\2\2\2\u0089"+
- "\u026d\3\2\2\2\u008b\u0274\3\2\2\2\u008d\u0277\3\2\2\2\u008f\u027a\3\2"+
- "\2\2\u0091\u027d\3\2\2\2\u0093\u0280\3\2\2\2\u0095\u0289\3\2\2\2\u0097"+
- "\u028f\3\2\2\2\u0099\u0295\3\2\2\2\u009b\u029c\3\2\2\2\u009d\u02a6\3\2"+
- "\2\2\u009f\u02b1\3\2\2\2\u00a1\u02b6\3\2\2\2\u00a3\u02bc\3\2\2\2\u00a5"+
- "\u02c6\3\2\2\2\u00a7\u02d0\3\2\2\2\u00a9\u02d9\3\2\2\2\u00ab\u02df\3\2"+
- "\2\2\u00ad\u02e6\3\2\2\2\u00af\u02eb\3\2\2\2\u00b1\u02ef\3\2\2\2\u00b3"+
- "\u02f5\3\2\2\2\u00b5\u02fd\3\2\2\2\u00b7\u0302\3\2\2\2\u00b9\u0307\3\2"+
- "\2\2\u00bb\u0312\3\2\2\2\u00bd\u0315\3\2\2\2\u00bf\u0319\3\2\2\2\u00c1"+
- "\u031d\3\2\2\2\u00c3\u0320\3\2\2\2\u00c5\u0329\3\2\2\2\u00c7\u032c\3\2"+
- "\2\2\u00c9\u0337\3\2\2\2\u00cb\u033a\3\2\2\2\u00cd\u0340\3\2\2\2\u00cf"+
- "\u0345\3\2\2\2\u00d1\u034e\3\2\2\2\u00d3\u0356\3\2\2\2\u00d5\u035d\3\2"+
- "\2\2\u00d7\u0367\3\2\2\2\u00d9\u036c\3\2\2\2\u00db\u0372\3\2\2\2\u00dd"+
- "\u0377\3\2\2\2\u00df\u037f\3\2\2\2\u00e1\u0387\3\2\2\2\u00e3\u038c\3\2"+
- "\2\2\u00e5\u0395\3\2\2\2\u00e7\u039f\3\2\2\2\u00e9\u03a4\3\2\2\2\u00eb"+
- "\u03aa\3\2\2\2\u00ed\u03ac\3\2\2\2\u00ef\u03ae\3\2\2\2\u00f1\u03b3\3\2"+
- "\2\2\u00f3\u03b8\3\2\2\2\u00f5\u03ba\3\2\2\2\u00f7\u03c6\3\2\2\2\u00f9"+
- "\u03d4\3\2\2\2\u00fb\u03dd\3\2\2\2\u00fd\u03e1\3\2\2\2\u00ff\u03e5\3\2"+
- "\2\2\u0101\u03ed\3\2\2\2\u0103\u03f1\3\2\2\2\u0105\u03f3\3\2\2\2\u0107"+
- "\u0409\3\2\2\2\u0109\u010a\7=\2\2\u010a\4\3\2\2\2\u010b\u010c\7o\2\2\u010c"+
- "\u010d\7q\2\2\u010d\u010e\7f\2\2\u010e\u010f\7w\2\2\u010f\u0110\7n\2\2"+
- "\u0110\u0111\7g\2\2\u0111\6\3\2\2\2\u0112\u0113\7p\2\2\u0113\u0114\7c"+
- "\2\2\u0114\u0115\7o\2\2\u0115\u0116\7g\2\2\u0116\u0117\7u\2\2\u0117\u0118"+
- "\7r\2\2\u0118\u0119\7c\2\2\u0119\u011a\7e\2\2\u011a\u011b\7g\2\2\u011b"+
- "\b\3\2\2\2\u011c\u011d\7?\2\2\u011d\n\3\2\2\2\u011e\u011f\7q\2\2\u011f"+
- "\u0120\7t\2\2\u0120\u0121\7f\2\2\u0121\u0122\7g\2\2\u0122\u0123\7t\2\2"+
- "\u0123\u0124\7k\2\2\u0124\u0125\7p\2\2\u0125\u0126\7i\2\2\u0126\f\3\2"+
- "\2\2\u0127\u0128\7q\2\2\u0128\u0129\7t\2\2\u0129\u012a\7f\2\2\u012a\u012b"+
- "\7g\2\2\u012b\u012c\7t\2\2\u012c\u012d\7g\2\2\u012d\u012e\7f\2\2\u012e"+
- "\16\3\2\2\2\u012f\u0130\7f\2\2\u0130\u0131\7g\2\2\u0131\u0132\7e\2\2\u0132"+
- "\u0133\7k\2\2\u0133\u0134\7o\2\2\u0134\u0135\7c\2\2\u0135\u0136\7n\2\2"+
- "\u0136\u0137\7/\2\2\u0137\u0138\7h\2\2\u0138\u0139\7q\2\2\u0139\u013a"+
- "\7t\2\2\u013a\u013b\7o\2\2\u013b\u013c\7c\2\2\u013c\u013d\7v\2\2\u013d"+
- "\20\3\2\2\2\u013e\u013f\7<\2\2\u013f\22\3\2\2\2\u0140\u0141\7f\2\2\u0141"+
- "\u0142\7g\2\2\u0142\u0143\7e\2\2\u0143\u0144\7k\2\2\u0144\u0145\7o\2\2"+
- "\u0145\u0146\7c\2\2\u0146\u0147\7n\2\2\u0147\u0148\7/\2\2\u0148\u0149"+
- "\7u\2\2\u0149\u014a\7g\2\2\u014a\u014b\7r\2\2\u014b\u014c\7c\2\2\u014c"+
- "\u014d\7t\2\2\u014d\u014e\7c\2\2\u014e\u014f\7v\2\2\u014f\u0150\7q\2\2"+
- "\u0150\u0151\7t\2\2\u0151\24\3\2\2\2\u0152\u0153\7i\2\2\u0153\u0154\7"+
- "t\2\2\u0154\u0155\7q\2\2\u0155\u0156\7w\2\2\u0156\u0157\7r\2\2\u0157\u0158"+
- "\7k\2\2\u0158\u0159\7p\2\2\u0159\u015a\7i\2\2\u015a\u015b\7/\2\2\u015b"+
- "\u015c\7u\2\2\u015c\u015d\7g\2\2\u015d\u015e\7r\2\2\u015e\u015f\7c\2\2"+
- "\u015f\u0160\7t\2\2\u0160\u0161\7c\2\2\u0161\u0162\7v\2\2\u0162\u0163"+
- "\7q\2\2\u0163\u0164\7t\2\2\u0164\26\3\2\2\2\u0165\u0166\7k\2\2\u0166\u0167"+
- "\7p\2\2\u0167\u0168\7h\2\2\u0168\u0169\7k\2\2\u0169\u016a\7p\2\2\u016a"+
- "\u016b\7k\2\2\u016b\u016c\7v\2\2\u016c\u016d\7{\2\2\u016d\30\3\2\2\2\u016e"+
- "\u016f\7o\2\2\u016f\u0170\7k\2\2\u0170\u0171\7p\2\2\u0171\u0172\7w\2\2"+
- "\u0172\u0173\7u\2\2\u0173\u0174\7/\2\2\u0174\u0175\7u\2\2\u0175\u0176"+
- "\7k\2\2\u0176\u0177\7i\2\2\u0177\u0178\7p\2\2\u0178\32\3\2\2\2\u0179\u017a"+
- "\7P\2\2\u017a\u017b\7c\2\2\u017b\u017c\7P\2\2\u017c\34\3\2\2\2\u017d\u017e"+
- "\7r\2\2\u017e\u017f\7g\2\2\u017f\u0180\7t\2\2\u0180\u0181\7e\2\2\u0181"+
- "\u0182\7g\2\2\u0182\u0183\7p\2\2\u0183\u0184\7v\2\2\u0184\36\3\2\2\2\u0185"+
- "\u0186\7r\2\2\u0186\u0187\7g\2\2\u0187\u0188\7t\2\2\u0188\u0189\7/\2\2"+
- "\u0189\u018a\7o\2\2\u018a\u018b\7k\2\2\u018b\u018c\7n\2\2\u018c\u018d"+
- "\7n\2\2\u018d\u018e\7g\2\2\u018e \3\2\2\2\u018f\u0190\7|\2\2\u0190\u0191"+
- "\7g\2\2\u0191\u0192\7t\2\2\u0192\u0193\7q\2\2\u0193\u0194\7/\2\2\u0194"+
- "\u0195\7f\2\2\u0195\u0196\7k\2\2\u0196\u0197\7i\2\2\u0197\u0198\7k\2\2"+
- "\u0198\u0199\7v\2\2\u0199\"\3\2\2\2\u019a\u019b\7f\2\2\u019b\u019c\7k"+
- "\2\2\u019c\u019d\7i\2\2\u019d\u019e\7k\2\2\u019e\u019f\7v\2\2\u019f$\3"+
- "\2\2\2\u01a0\u01a1\7r\2\2\u01a1\u01a2\7c\2\2\u01a2\u01a3\7v\2\2\u01a3"+
- "\u01a4\7v\2\2\u01a4\u01a5\7g\2\2\u01a5\u01a6\7t\2\2\u01a6\u01a7\7p\2\2"+
- "\u01a7\u01a8\7/\2\2\u01a8\u01a9\7u\2\2\u01a9\u01aa\7g\2\2\u01aa\u01ab"+
- "\7r\2\2\u01ab\u01ac\7c\2\2\u01ac\u01ad\7t\2\2\u01ad\u01ae\7c\2\2\u01ae"+
- "\u01af\7v\2\2\u01af\u01b0\7q\2\2\u01b0\u01b1\7t\2\2\u01b1&\3\2\2\2\u01b2"+
- "\u01b3\7k\2\2\u01b3\u01b4\7o\2\2\u01b4\u01b5\7r\2\2\u01b5\u01b6\7q\2\2"+
- "\u01b6\u01b7\7t\2\2\u01b7\u01b8\7v\2\2\u01b8(\3\2\2\2\u01b9\u01ba\7.\2"+
- "\2\u01ba*\3\2\2\2\u01bb\u01bc\7<\2\2\u01bc\u01bd\7?\2\2\u01bd,\3\2\2\2"+
- "\u01be\u01bf\7g\2\2\u01bf\u01c0\7z\2\2\u01c0\u01c1\7v\2\2\u01c1\u01c2"+
- "\7g\2\2\u01c2\u01c3\7t\2\2\u01c3\u01c4\7p\2\2\u01c4\u01c5\7c\2\2\u01c5"+
- "\u01c6\7n\2\2\u01c6.\3\2\2\2\u01c7\u01c8\7h\2\2\u01c8\u01c9\7w\2\2\u01c9"+
- "\u01ca\7p\2\2\u01ca\u01cb\7e\2\2\u01cb\u01cc\7v\2\2\u01cc\u01cd\7k\2\2"+
- "\u01cd\u01ce\7q\2\2\u01ce\u01cf\7p\2\2\u01cf\60\3\2\2\2\u01d0\u01d1\7"+
- "*\2\2\u01d1\62\3\2\2\2\u01d2\u01d3\7+\2\2\u01d3\64\3\2\2\2\u01d4\u01d5"+
- "\7}\2\2\u01d5\66\3\2\2\2\u01d6\u01d7\7\177\2\2\u01d78\3\2\2\2\u01d8\u01d9"+
- "\7l\2\2\u01d9\u01da\7u\2\2\u01da\u01db\7q\2\2\u01db\u01dc\7w\2\2\u01dc"+
- "\u01dd\7p\2\2\u01dd\u01de\7f\2\2\u01de:\3\2\2\2\u01df\u01e0\7e\2\2\u01e0"+
- "\u01e1\7q\2\2\u01e1\u01e2\7o\2\2\u01e2\u01e3\7r\2\2\u01e3\u01e4\7c\2\2"+
- "\u01e4\u01e5\7e\2\2\u01e5\u01e6\7v\2\2\u01e6<\3\2\2\2\u01e7\u01e8\7x\2"+
- "\2\u01e8\u01e9\7g\2\2\u01e9\u01ea\7t\2\2\u01ea\u01eb\7d\2\2\u01eb\u01ec"+
- "\7q\2\2\u01ec\u01ed\7u\2\2\u01ed\u01ee\7g\2\2\u01ee>\3\2\2\2\u01ef\u01f0"+
- "\7l\2\2\u01f0\u01f1\7u\2\2\u01f1\u01f2\7q\2\2\u01f2\u01f3\7p\2\2\u01f3"+
- "@\3\2\2\2\u01f4\u01f5\7u\2\2\u01f5\u01f6\7e\2\2\u01f6\u01f7\7j\2\2\u01f7"+
- "\u01f8\7g\2\2\u01f8\u01f9\7o\2\2\u01f9\u01fa\7c\2\2\u01faB\3\2\2\2\u01fb"+
- "\u01fc\7&\2\2\u01fcD\3\2\2\2\u01fd\u01fe\7~\2\2\u01feF\3\2\2\2\u01ff\u0200"+
- "\7,\2\2\u0200H\3\2\2\2\u0201\u0202\7g\2\2\u0202\u0203\7s\2\2\u0203J\3"+
- "\2\2\2\u0204\u0205\7p\2\2\u0205\u0206\7g\2\2\u0206L\3\2\2\2\u0207\u0208"+
- "\7n\2\2\u0208\u0209\7v\2\2\u0209N\3\2\2\2\u020a\u020b\7n\2\2\u020b\u020c"+
- "\7g\2\2\u020cP\3\2\2\2\u020d\u020e\7i\2\2\u020e\u020f\7v\2\2\u020fR\3"+
- "\2\2\2\u0210\u0211\7i\2\2\u0211\u0212\7g\2\2\u0212T\3\2\2\2\u0213\u0214"+
- "\7#\2\2\u0214\u0215\7?\2\2\u0215V\3\2\2\2\u0216\u0217\7>\2\2\u0217X\3"+
- "\2\2\2\u0218\u0219\7>\2\2\u0219\u021a\7?\2\2\u021aZ\3\2\2\2\u021b\u021c"+
- "\7@\2\2\u021c\\\3\2\2\2\u021d\u021e\7@\2\2\u021e\u021f\7?\2\2\u021f^\3"+
- "\2\2\2\u0220\u0221\7~\2\2\u0221\u0222\7~\2\2\u0222`\3\2\2\2\u0223\u0224"+
- "\7-\2\2\u0224b\3\2\2\2\u0225\u0226\7/\2\2\u0226d\3\2\2\2\u0227\u0228\7"+
- "f\2\2\u0228\u0229\7k\2\2\u0229\u022a\7x\2\2\u022af\3\2\2\2\u022b\u022c"+
- "\7k\2\2\u022c\u022d\7f\2\2\u022d\u022e\7k\2\2\u022e\u022f\7x\2\2\u022f"+
- "h\3\2\2\2\u0230\u0231\7o\2\2\u0231\u0232\7q\2\2\u0232\u0233\7f\2\2\u0233"+
- "j\3\2\2\2\u0234\u0235\7x\2\2\u0235\u0236\7c\2\2\u0236\u0237\7n\2\2\u0237"+
- "\u0238\7k\2\2\u0238\u0239\7f\2\2\u0239\u023a\7c\2\2\u023a\u023b\7v\2\2"+
- "\u023b\u023c\7g\2\2\u023cl\3\2\2\2\u023d\u023e\7#\2\2\u023en\3\2\2\2\u023f"+
- "\u0240\7]\2\2\u0240p\3\2\2\2\u0241\u0242\7_\2\2\u0242r\3\2\2\2\u0243\u0244"+
- "\7\60\2\2\u0244t\3\2\2\2\u0245\u0246\7&\2\2\u0246\u0247\7&\2\2\u0247v"+
- "\3\2\2\2\u0248\u0249\7%\2\2\u0249x\3\2\2\2\u024a\u024b\7}\2\2\u024b\u024c"+
- "\7~\2\2\u024cz\3\2\2\2\u024d\u024e\7~\2\2\u024e\u024f\7\177\2\2\u024f"+
- "|\3\2\2\2\u0250\u0251\7h\2\2\u0251\u0252\7q\2\2\u0252\u0253\7t\2\2\u0253"+
- "~\3\2\2\2\u0254\u0255\7n\2\2\u0255\u0256\7g\2\2\u0256\u0257\7v\2\2\u0257"+
- "\u0080\3\2\2\2\u0258\u0259\7y\2\2\u0259\u025a\7j\2\2\u025a\u025b\7g\2"+
- "\2\u025b\u025c\7t\2\2\u025c\u025d\7g\2\2\u025d\u0082\3\2\2\2\u025e\u025f"+
- "\7i\2\2\u025f\u0260\7t\2\2\u0260\u0261\7q\2\2\u0261\u0262\7w\2\2\u0262"+
- "\u0263\7r\2\2\u0263\u0084\3\2\2\2\u0264\u0265\7d\2\2\u0265\u0266\7{\2"+
- "\2\u0266\u0086\3\2\2\2\u0267\u0268\7q\2\2\u0268\u0269\7t\2\2\u0269\u026a"+
- "\7f\2\2\u026a\u026b\7g\2\2\u026b\u026c\7t\2\2\u026c\u0088\3\2\2\2\u026d"+
- "\u026e\7t\2\2\u026e\u026f\7g\2\2\u026f\u0270\7v\2\2\u0270\u0271\7w\2\2"+
- "\u0271\u0272\7t\2\2\u0272\u0273\7p\2\2\u0273\u008a\3\2\2\2\u0274\u0275"+
- "\7k\2\2\u0275\u0276\7h\2\2\u0276\u008c\3\2\2\2\u0277\u0278\7k\2\2\u0278"+
- "\u0279\7p\2\2\u0279\u008e\3\2\2\2\u027a\u027b\7c\2\2\u027b\u027c\7u\2"+
- "\2\u027c\u0090\3\2\2\2\u027d\u027e\7c\2\2\u027e\u027f\7v\2\2\u027f\u0092"+
- "\3\2\2\2\u0280\u0281\7c\2\2\u0281\u0282\7n\2\2\u0282\u0283\7n\2\2\u0283"+
- "\u0284\7q\2\2\u0284\u0285\7y\2\2\u0285\u0286\7k\2\2\u0286\u0287\7p\2\2"+
- "\u0287\u0288\7i\2\2\u0288\u0094\3\2\2\2\u0289\u028a\7g\2\2\u028a\u028b"+
- "\7o\2\2\u028b\u028c\7r\2\2\u028c\u028d\7v\2\2\u028d\u028e\7{\2\2\u028e"+
- "\u0096\3\2\2\2\u028f\u0290\7e\2\2\u0290\u0291\7q\2\2\u0291\u0292\7w\2"+
- "\2\u0292\u0293\7p\2\2\u0293\u0294\7v\2\2\u0294\u0098\3\2\2\2\u0295\u0296"+
- "\7u\2\2\u0296\u0297\7v\2\2\u0297\u0298\7c\2\2\u0298\u0299\7d\2\2\u0299"+
- "\u029a\7n\2\2\u029a\u029b\7g\2\2\u029b\u009a\3\2\2\2\u029c\u029d\7c\2"+
- "\2\u029d\u029e\7u\2\2\u029e\u029f\7e\2\2\u029f\u02a0\7g\2\2\u02a0\u02a1"+
- "\7p\2\2\u02a1\u02a2\7f\2\2\u02a2\u02a3\7k\2\2\u02a3\u02a4\7p\2\2\u02a4"+
- "\u02a5\7i\2\2\u02a5\u009c\3\2\2\2\u02a6\u02a7\7f\2\2\u02a7\u02a8\7g\2"+
- "\2\u02a8\u02a9\7u\2\2\u02a9\u02aa\7e\2\2\u02aa\u02ab\7g\2\2\u02ab\u02ac"+
- "\7p\2\2\u02ac\u02ad\7f\2\2\u02ad\u02ae\7k\2\2\u02ae\u02af\7p\2\2\u02af"+
- "\u02b0\7i\2\2\u02b0\u009e\3\2\2\2\u02b1\u02b2\7u\2\2\u02b2\u02b3\7q\2"+
- "\2\u02b3\u02b4\7o\2\2\u02b4\u02b5\7g\2\2\u02b5\u00a0\3\2\2\2\u02b6\u02b7"+
- "\7g\2\2\u02b7\u02b8\7x\2\2\u02b8\u02b9\7g\2\2\u02b9\u02ba\7t\2\2\u02ba"+
- "\u02bb\7{\2\2\u02bb\u00a2\3\2\2\2\u02bc\u02bd\7u\2\2\u02bd\u02be\7c\2"+
- "\2\u02be\u02bf\7v\2\2\u02bf\u02c0\7k\2\2\u02c0\u02c1\7u\2\2\u02c1\u02c2"+
- "\7h\2\2\u02c2\u02c3\7k\2\2\u02c3\u02c4\7g\2\2\u02c4\u02c5\7u\2\2\u02c5"+
- "\u00a4\3\2\2\2\u02c6\u02c7\7e\2\2\u02c7\u02c8\7q\2\2\u02c8\u02c9\7n\2"+
- "\2\u02c9\u02ca\7n\2\2\u02ca\u02cb\7c\2\2\u02cb\u02cc\7v\2\2\u02cc\u02cd"+
- "\7k\2\2\u02cd\u02ce\7q\2\2\u02ce\u02cf\7p\2\2\u02cf\u00a6\3\2\2\2\u02d0"+
- "\u02d1\7i\2\2\u02d1\u02d2\7t\2\2\u02d2\u02d3\7g\2\2\u02d3\u02d4\7c\2\2"+
- "\u02d4\u02d5\7v\2\2\u02d5\u02d6\7g\2\2\u02d6\u02d7\7u\2\2\u02d7\u02d8"+
- "\7v\2\2\u02d8\u00a8\3\2\2\2\u02d9\u02da\7n\2\2\u02da\u02db\7g\2\2\u02db"+
- "\u02dc\7c\2\2\u02dc\u02dd\7u\2\2\u02dd\u02de\7v\2\2\u02de\u00aa\3\2\2"+
- "\2\u02df\u02e0\7u\2\2\u02e0\u02e1\7y\2\2\u02e1\u02e2\7k\2\2\u02e2\u02e3"+
- "\7v\2\2\u02e3\u02e4\7e\2\2\u02e4\u02e5\7j\2\2\u02e5\u00ac\3\2\2\2\u02e6"+
- "\u02e7\7e\2\2\u02e7\u02e8\7c\2\2\u02e8\u02e9\7u\2\2\u02e9\u02ea\7g\2\2"+
- "\u02ea\u00ae\3\2\2\2\u02eb\u02ec\7v\2\2\u02ec\u02ed\7t\2\2\u02ed\u02ee"+
- "\7{\2\2\u02ee\u00b0\3\2\2\2\u02ef\u02f0\7e\2\2\u02f0\u02f1\7c\2\2\u02f1"+
- "\u02f2\7v\2\2\u02f2\u02f3\7e\2\2\u02f3\u02f4\7j\2\2\u02f4\u00b2\3\2\2"+
- "\2\u02f5\u02f6\7f\2\2\u02f6\u02f7\7g\2\2\u02f7\u02f8\7h\2\2\u02f8\u02f9"+
- "\7c\2\2\u02f9\u02fa\7w\2\2\u02fa\u02fb\7n\2\2\u02fb\u02fc\7v\2\2\u02fc"+
- "\u00b4\3\2\2\2\u02fd\u02fe\7v\2\2\u02fe\u02ff\7j\2\2\u02ff\u0300\7g\2"+
- "\2\u0300\u0301\7p\2\2\u0301\u00b6\3\2\2\2\u0302\u0303\7g\2\2\u0303\u0304"+
- "\7n\2\2\u0304\u0305\7u\2\2\u0305\u0306\7g\2\2\u0306\u00b8\3\2\2\2\u0307"+
- "\u0308\7v\2\2\u0308\u0309\7{\2\2\u0309\u030a\7r\2\2\u030a\u030b\7g\2\2"+
- "\u030b\u030c\7u\2\2\u030c\u030d\7y\2\2\u030d\u030e\7k\2\2\u030e\u030f"+
- "\7v\2\2\u030f\u0310\7e\2\2\u0310\u0311\7j\2\2\u0311\u00ba\3\2\2\2\u0312"+
- "\u0313\7q\2\2\u0313\u0314\7t\2\2\u0314\u00bc\3\2\2\2\u0315\u0316\7c\2"+
- "\2\u0316\u0317\7p\2\2\u0317\u0318\7f\2\2\u0318\u00be\3\2\2\2\u0319\u031a"+
- "\7p\2\2\u031a\u031b\7q\2\2\u031b\u031c\7v\2\2\u031c\u00c0\3\2\2\2\u031d"+
- "\u031e\7v\2\2\u031e\u031f\7q\2\2\u031f\u00c2\3\2\2\2\u0320\u0321\7k\2"+
- "\2\u0321\u0322\7p\2\2\u0322\u0323\7u\2\2\u0323\u0324\7v\2\2\u0324\u0325"+
- "\7c\2\2\u0325\u0326\7p\2\2\u0326\u0327\7e\2\2\u0327\u0328\7g\2\2\u0328"+
- "\u00c4\3\2\2\2\u0329\u032a\7q\2\2\u032a\u032b\7h\2\2\u032b\u00c6\3\2\2"+
- "\2\u032c\u032d\7u\2\2\u032d\u032e\7v\2\2\u032e\u032f\7c\2\2\u032f\u0330"+
- "\7v\2\2\u0330\u0331\7k\2\2\u0331\u0332\7e\2\2\u0332\u0333\7c\2\2\u0333"+
- "\u0334\7n\2\2\u0334\u0335\7n\2\2\u0335\u0336\7{\2\2\u0336\u00c8\3\2\2"+
- "\2\u0337\u0338\7k\2\2\u0338\u0339\7u\2\2\u0339\u00ca\3\2\2\2\u033a\u033b"+
- "\7v\2\2\u033b\u033c\7t\2\2\u033c\u033d\7g\2\2\u033d\u033e\7c\2\2\u033e"+
- "\u033f\7v\2\2\u033f\u00cc\3\2\2\2\u0340\u0341\7e\2\2\u0341\u0342\7c\2"+
- "\2\u0342\u0343\7u\2\2\u0343\u0344\7v\2\2\u0344\u00ce\3\2\2\2\u0345\u0346"+
- "\7e\2\2\u0346\u0347\7c\2\2\u0347\u0348\7u\2\2\u0348\u0349\7v\2\2\u0349"+
- "\u034a\7c\2\2\u034a\u034b\7d\2\2\u034b\u034c\7n\2\2\u034c\u034d\7g\2\2"+
- "\u034d\u00d0\3\2\2\2\u034e\u034f\7x\2\2\u034f\u0350\7g\2\2\u0350\u0351"+
- "\7t\2\2\u0351\u0352\7u\2\2\u0352\u0353\7k\2\2\u0353\u0354\7q\2\2\u0354"+
- "\u0355\7p\2\2\u0355\u00d2\3\2\2\2\u0356\u0357\7l\2\2\u0357\u0358\7u\2"+
- "\2\u0358\u0359\7q\2\2\u0359\u035a\7p\2\2\u035a\u035b\7k\2\2\u035b\u035c"+
- "\7s\2\2\u035c\u00d4\3\2\2\2\u035d\u035e\7w\2\2\u035e\u035f\7p\2\2\u035f"+
- "\u0360\7q\2\2\u0360\u0361\7t\2\2\u0361\u0362\7f\2\2\u0362\u0363\7g\2\2"+
- "\u0363\u0364\7t\2\2\u0364\u0365\7g\2\2\u0365\u0366\7f\2\2\u0366\u00d6"+
- "\3\2\2\2\u0367\u0368\7v\2\2\u0368\u0369\7t\2\2\u0369\u036a\7w\2\2\u036a"+
- "\u036b\7g\2\2\u036b\u00d8\3\2\2\2\u036c\u036d\7h\2\2\u036d\u036e\7c\2"+
- "\2\u036e\u036f\7n\2\2\u036f\u0370\7u\2\2\u0370\u0371\7g\2\2\u0371\u00da"+
- "\3\2\2\2\u0372\u0373\7v\2\2\u0373\u0374\7{\2\2\u0374\u0375\7r\2\2\u0375"+
- "\u0376\7g\2\2\u0376\u00dc\3\2\2\2\u0377\u0378\7f\2\2\u0378\u0379\7g\2"+
- "\2\u0379\u037a\7e\2\2\u037a\u037b\7n\2\2\u037b\u037c\7c\2\2\u037c\u037d"+
- "\7t\2\2\u037d\u037e\7g\2\2\u037e\u00de\3\2\2\2\u037f\u0380\7e\2\2\u0380"+
- "\u0381\7q\2\2\u0381\u0382\7p\2\2\u0382\u0383\7v\2\2\u0383\u0384\7g\2\2"+
- "\u0384\u0385\7z\2\2\u0385\u0386\7v\2\2\u0386\u00e0\3\2\2\2\u0387\u0388"+
- "\7k\2\2\u0388\u0389\7v\2\2\u0389\u038a\7g\2\2\u038a\u038b\7o\2\2\u038b"+
- "\u00e2\3\2\2\2\u038c\u038d\7x\2\2\u038d\u038e\7c\2\2\u038e\u038f\7t\2"+
- "\2\u038f\u0390\7k\2\2\u0390\u0391\7c\2\2\u0391\u0392\7d\2\2\u0392\u0393"+
- "\7n\2\2\u0393\u0394\7g\2\2\u0394\u00e4\3\2\2\2\u0395\u039a\7$\2\2\u0396"+
- "\u0399\5\u00e7t\2\u0397\u0399\n\2\2\2\u0398\u0396\3\2\2\2\u0398\u0397"+
- "\3\2\2\2\u0399\u039c\3\2\2\2\u039a\u0398\3\2\2\2\u039a\u039b\3\2\2\2\u039b"+
- "\u039d\3\2\2\2\u039c\u039a\3\2\2\2\u039d\u039e\7$\2\2\u039e\u00e6\3\2"+
- "\2\2\u039f\u03a2\7^\2\2\u03a0\u03a3\t\3\2\2\u03a1\u03a3\5\u00e9u\2\u03a2"+
- "\u03a0\3\2\2\2\u03a2\u03a1\3\2\2\2\u03a3\u00e8\3\2\2\2\u03a4\u03a5\7w"+
- "\2\2\u03a5\u03a6\5\u00ebv\2\u03a6\u03a7\5\u00ebv\2\u03a7\u03a8\5\u00eb"+
- "v\2\u03a8\u03a9\5\u00ebv\2\u03a9\u00ea\3\2\2\2\u03aa\u03ab\t\4\2\2\u03ab"+
- "\u00ec\3\2\2\2\u03ac\u03ad\7A\2\2\u03ad\u00ee\3\2\2\2\u03ae\u03af\7p\2"+
- "\2\u03af\u03b0\7w\2\2\u03b0\u03b1\7n\2\2\u03b1\u03b2\7n\2\2\u03b2\u00f0"+
- "\3\2\2\2\u03b3\u03b4\5\u00f3z\2\u03b4\u00f2\3\2\2\2\u03b5\u03b9\5\u00f5"+
- "{\2\u03b6\u03b9\5\u00f7|\2\u03b7\u03b9\5\u00f9}\2\u03b8\u03b5\3\2\2\2"+
- "\u03b8\u03b6\3\2\2\2\u03b8\u03b7\3\2\2\2\u03b9\u00f4\3\2\2\2\u03ba\u03bb"+
- "\5\u00fb~\2\u03bb\u00f6\3\2\2\2\u03bc\u03bd\7\60\2\2\u03bd\u03c7\5\u00fb"+
- "~\2\u03be\u03bf\5\u00fb~\2\u03bf\u03c3\7\60\2\2\u03c0\u03c2\t\5\2\2\u03c1"+
- "\u03c0\3\2\2\2\u03c2\u03c5\3\2\2\2\u03c3\u03c1\3\2\2\2\u03c3\u03c4\3\2"+
- "\2\2\u03c4\u03c7\3\2\2\2\u03c5\u03c3\3\2\2\2\u03c6\u03bc\3\2\2\2\u03c6"+
- "\u03be\3\2\2\2\u03c7\u00f8\3\2\2\2\u03c8\u03c9\7\60\2\2\u03c9\u03d5\5"+
- "\u00fb~\2\u03ca\u03d2\5\u00fb~\2\u03cb\u03cf\7\60\2\2\u03cc\u03ce\t\5"+
- "\2\2\u03cd\u03cc\3\2\2\2\u03ce\u03d1\3\2\2\2\u03cf\u03cd\3\2\2\2\u03cf"+
- "\u03d0\3\2\2\2\u03d0\u03d3\3\2\2\2\u03d1\u03cf\3\2\2\2\u03d2\u03cb\3\2"+
- "\2\2\u03d2\u03d3\3\2\2\2\u03d3\u03d5\3\2\2\2\u03d4\u03c8\3\2\2\2\u03d4"+
- "\u03ca\3\2\2\2\u03d5\u03d6\3\2\2\2\u03d6\u03d8\t\6\2\2\u03d7\u03d9\t\7"+
- "\2\2\u03d8\u03d7\3\2\2\2\u03d8\u03d9\3\2\2\2\u03d9\u03da\3\2\2\2\u03da"+
- "\u03db\5\u00fb~\2\u03db\u00fa\3\2\2\2\u03dc\u03de\t\5\2\2\u03dd\u03dc"+
- "\3\2\2\2\u03de\u03df\3\2\2\2\u03df\u03dd\3\2\2\2\u03df\u03e0\3\2\2\2\u03e0"+
- "\u00fc\3\2\2\2\u03e1\u03e2\t\b\2\2\u03e2\u03e3\3\2\2\2\u03e3\u03e4\b\177"+
- "\2\2\u03e4\u00fe\3\2\2\2\u03e5\u03e9\5\u0101\u0081\2\u03e6\u03e8\5\u0103"+
- "\u0082\2\u03e7\u03e6\3\2\2\2\u03e8\u03eb\3\2\2\2\u03e9\u03e7\3\2\2\2\u03e9"+
- "\u03ea\3\2\2\2\u03ea\u0100\3\2\2\2\u03eb\u03e9\3\2\2\2\u03ec\u03ee\t\t"+
- "\2\2\u03ed\u03ec\3\2\2\2\u03ee\u0102\3\2\2\2\u03ef\u03f2\5\u0101\u0081"+
- "\2\u03f0\u03f2\t\n\2\2\u03f1\u03ef\3\2\2\2\u03f1\u03f0\3\2\2\2\u03f2\u0104"+
- "\3\2\2\2\u03f3\u03f4\7*\2\2\u03f4\u03fd\7<\2\2\u03f5\u03fc\5\u0105\u0083"+
- "\2\u03f6\u03f7\7*\2\2\u03f7\u03fc\n\13\2\2\u03f8\u03f9\7<\2\2\u03f9\u03fc"+
- "\n\f\2\2\u03fa\u03fc\n\r\2\2\u03fb\u03f5\3\2\2\2\u03fb\u03f6\3\2\2\2\u03fb"+
- "\u03f8\3\2\2\2\u03fb\u03fa\3\2\2\2\u03fc\u03ff\3\2\2\2\u03fd\u03fb\3\2"+
- "\2\2\u03fd\u03fe\3\2\2\2\u03fe\u0401\3\2\2\2\u03ff\u03fd\3\2\2\2\u0400"+
- "\u0402\7<\2\2\u0401\u0400\3\2\2\2\u0402\u0403\3\2\2\2\u0403\u0401\3\2"+
- "\2\2\u0403\u0404\3\2\2\2\u0404\u0405\3\2\2\2\u0405\u0406\7+\2\2\u0406"+
- "\u0407\3\2\2\2\u0407\u0408\b\u0083\2\2\u0408\u0106\3\2\2\2\u0409\u040a"+
- "\n\16\2\2\u040a\u0108\3\2\2\2\24\2\u0398\u039a\u03a2\u03b8\u03c3\u03c6"+
- "\u03cf\u03d2\u03d4\u03d8\u03df\u03e9\u03ed\u03f1\u03fb\u03fd\u0403\3\2"+
- "\3\2";
+ "\4\u0085\t\u0085\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3"+
+ "\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\7"+
+ "\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3"+
+ "\b\3\b\3\b\3\b\3\b\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n"+
+ "\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3"+
+ "\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f"+
+ "\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16"+
+ "\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3\20"+
+ "\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21"+
+ "\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23"+
+ "\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23"+
+ "\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\26\3\26\3\26\3\27\3\27"+
+ "\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\30\3\30"+
+ "\3\30\3\30\3\31\3\31\3\32\3\32\3\33\3\33\3\34\3\34\3\35\3\35\3\35\3\35"+
+ "\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37"+
+ "\3\37\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3\"\3\""+
+ "\3#\3#\3$\3$\3%\3%\3%\3&\3&\3&\3\'\3\'\3\'\3(\3(\3(\3)\3)\3)\3*\3*\3*"+
+ "\3+\3+\3+\3,\3,\3-\3-\3-\3.\3.\3/\3/\3/\3\60\3\60\3\60\3\61\3\61\3\62"+
+ "\3\62\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\3\65\3\65\3\65\3\65"+
+ "\3\66\3\66\3\67\3\67\38\38\39\39\3:\3:\3:\3;\3;\3<\3<\3<\3=\3=\3=\3>\3"+
+ ">\3>\3>\3?\3?\3?\3?\3@\3@\3@\3@\3@\3@\3A\3A\3A\3A\3A\3A\3B\3B\3B\3C\3"+
+ "C\3C\3C\3C\3C\3D\3D\3D\3D\3D\3D\3D\3E\3E\3E\3F\3F\3F\3G\3G\3G\3H\3H\3"+
+ "H\3I\3I\3I\3I\3I\3I\3I\3I\3I\3J\3J\3J\3J\3J\3J\3K\3K\3K\3K\3K\3K\3L\3"+
+ "L\3L\3L\3L\3L\3L\3M\3M\3M\3M\3M\3M\3M\3M\3M\3M\3N\3N\3N\3N\3N\3N\3N\3"+
+ "N\3N\3N\3N\3O\3O\3O\3O\3O\3P\3P\3P\3P\3P\3P\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3"+
+ "Q\3Q\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3S\3S\3S\3S\3S\3S\3S\3S\3S\3T\3T\3"+
+ "T\3T\3T\3T\3U\3U\3U\3U\3U\3U\3U\3V\3V\3V\3V\3V\3W\3W\3W\3W\3X\3X\3X\3"+
+ "X\3X\3X\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Z\3Z\3Z\3Z\3Z\3[\3[\3[\3[\3[\3\\\3\\"+
+ "\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3]\3]\3]\3^\3^\3^\3^\3_\3_\3_\3_"+
+ "\3`\3`\3`\3a\3a\3a\3a\3a\3a\3a\3a\3a\3b\3b\3b\3c\3c\3c\3c\3c\3c\3c\3c"+
+ "\3c\3c\3c\3d\3d\3d\3e\3e\3e\3e\3e\3e\3f\3f\3f\3f\3f\3g\3g\3g\3g\3g\3g"+
+ "\3g\3g\3g\3h\3h\3h\3h\3h\3h\3h\3h\3i\3i\3i\3i\3i\3i\3i\3j\3j\3j\3j\3j"+
+ "\3j\3j\3j\3j\3j\3k\3k\3k\3k\3k\3l\3l\3l\3l\3l\3l\3m\3m\3m\3m\3m\3n\3n"+
+ "\3n\3n\3n\3n\3n\3n\3n\3o\3o\3o\3o\3o\3o\3o\3o\3o\3p\3p\3p\3p\3p\3p\3p"+
+ "\3p\3q\3q\3q\3q\3q\3q\3q\3q\3r\3r\3r\3r\3r\3s\3s\3s\3s\3s\3s\3s\3s\3s"+
+ "\3t\3t\3t\7t\u03a4\nt\ft\16t\u03a7\13t\3t\3t\3u\3u\3u\5u\u03ae\nu\3v\3"+
+ "v\3v\3v\3v\3v\3w\3w\3x\3x\3y\3y\3y\3y\3y\3z\3z\3{\3{\3{\5{\u03c4\n{\3"+
+ "|\3|\3}\3}\3}\3}\3}\7}\u03cd\n}\f}\16}\u03d0\13}\5}\u03d2\n}\3~\3~\3~"+
+ "\3~\3~\7~\u03d9\n~\f~\16~\u03dc\13~\5~\u03de\n~\5~\u03e0\n~\3~\3~\5~\u03e4"+
+ "\n~\3~\3~\3\177\6\177\u03e9\n\177\r\177\16\177\u03ea\3\u0080\3\u0080\3"+
+ "\u0080\3\u0080\3\u0081\3\u0081\7\u0081\u03f3\n\u0081\f\u0081\16\u0081"+
+ "\u03f6\13\u0081\3\u0082\5\u0082\u03f9\n\u0082\3\u0083\3\u0083\5\u0083"+
+ "\u03fd\n\u0083\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084"+
+ "\3\u0084\7\u0084\u0407\n\u0084\f\u0084\16\u0084\u040a\13\u0084\3\u0084"+
+ "\6\u0084\u040d\n\u0084\r\u0084\16\u0084\u040e\3\u0084\3\u0084\3\u0084"+
+ "\3\u0084\3\u0085\3\u0085\2\2\u0086\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n"+
+ "\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30"+
+ "/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.["+
+ "/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s;u{?}@\177A\u0081B\u0083"+
+ "C\u0085D\u0087E\u0089F\u008bG\u008dH\u008fI\u0091J\u0093K\u0095L\u0097"+
+ "M\u0099N\u009bO\u009dP\u009fQ\u00a1R\u00a3S\u00a5T\u00a7U\u00a9V\u00ab"+
+ "W\u00adX\u00afY\u00b1Z\u00b3[\u00b5\\\u00b7]\u00b9^\u00bb_\u00bd`\u00bf"+
+ "a\u00c1b\u00c3c\u00c5d\u00c7e\u00c9f\u00cbg\u00cdh\u00cfi\u00d1j\u00d3"+
+ "k\u00d5l\u00d7m\u00d9n\u00dbo\u00ddp\u00dfq\u00e1r\u00e3s\u00e5t\u00e7"+
+ "u\u00e9\2\u00eb\2\u00ed\2\u00efv\u00f1w\u00f3x\u00f5y\u00f7z\u00f9{\u00fb"+
+ "|\u00fd\2\u00ff}\u0101~\u0103\2\u0105\2\u0107\177\u0109\u0080\3\2\17\4"+
+ "\2$$^^\n\2$$\61\61^^ddhhppttvv\5\2\62;CHch\3\2\62;\4\2GGgg\4\2--//\5\2"+
+ "\13\f\17\17\"\"\20\2C\\aac|\u00c2\u00d8\u00da\u00f8\u00fa\u0301\u0372"+
+ "\u037f\u0381\u2001\u200e\u200f\u2072\u2191\u2c02\u2ff1\u3003\ud801\uf902"+
+ "\ufdd1\ufdf2\uffff\7\2//\62;\u00b9\u00b9\u0302\u0371\u2041\u2042\3\2<"+
+ "<\3\2++\4\2**<<\7\2$$()>>}}\177\177\2\u0422\2\3\3\2\2\2\2\5\3\2\2\2\2"+
+ "\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2"+
+ "\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2"+
+ "\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2"+
+ "\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2"+
+ "\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2"+
+ "\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2"+
+ "M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3"+
+ "\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2"+
+ "\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2"+
+ "s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177"+
+ "\3\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2\2\u0087\3\2\2"+
+ "\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2\2\2\u008f\3\2\2\2\2\u0091"+
+ "\3\2\2\2\2\u0093\3\2\2\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2"+
+ "\2\2\u009b\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2\2\2\u00a3"+
+ "\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9\3\2\2\2\2\u00ab\3\2\2"+
+ "\2\2\u00ad\3\2\2\2\2\u00af\3\2\2\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5"+
+ "\3\2\2\2\2\u00b7\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2"+
+ "\2\2\u00bf\3\2\2\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2\2\2\u00c5\3\2\2\2\2\u00c7"+
+ "\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2"+
+ "\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9"+
+ "\3\2\2\2\2\u00db\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2"+
+ "\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7\3\2\2\2\2\u00ef\3\2\2\2\2\u00f1"+
+ "\3\2\2\2\2\u00f3\3\2\2\2\2\u00f5\3\2\2\2\2\u00f7\3\2\2\2\2\u00f9\3\2\2"+
+ "\2\2\u00fb\3\2\2\2\2\u00ff\3\2\2\2\2\u0101\3\2\2\2\2\u0107\3\2\2\2\2\u0109"+
+ "\3\2\2\2\3\u010b\3\2\2\2\5\u010d\3\2\2\2\7\u0114\3\2\2\2\t\u011e\3\2\2"+
+ "\2\13\u0120\3\2\2\2\r\u0129\3\2\2\2\17\u0131\3\2\2\2\21\u0140\3\2\2\2"+
+ "\23\u0142\3\2\2\2\25\u0154\3\2\2\2\27\u0167\3\2\2\2\31\u0170\3\2\2\2\33"+
+ "\u017b\3\2\2\2\35\u017f\3\2\2\2\37\u0187\3\2\2\2!\u0191\3\2\2\2#\u019c"+
+ "\3\2\2\2%\u01a2\3\2\2\2\'\u01b4\3\2\2\2)\u01bb\3\2\2\2+\u01bd\3\2\2\2"+
+ "-\u01c0\3\2\2\2/\u01c9\3\2\2\2\61\u01d2\3\2\2\2\63\u01d4\3\2\2\2\65\u01d6"+
+ "\3\2\2\2\67\u01d8\3\2\2\29\u01da\3\2\2\2;\u01e1\3\2\2\2=\u01e9\3\2\2\2"+
+ "?\u01f1\3\2\2\2A\u01f6\3\2\2\2C\u01fd\3\2\2\2E\u01ff\3\2\2\2G\u0201\3"+
+ "\2\2\2I\u0203\3\2\2\2K\u0206\3\2\2\2M\u0209\3\2\2\2O\u020c\3\2\2\2Q\u020f"+
+ "\3\2\2\2S\u0212\3\2\2\2U\u0215\3\2\2\2W\u0218\3\2\2\2Y\u021a\3\2\2\2["+
+ "\u021d\3\2\2\2]\u021f\3\2\2\2_\u0222\3\2\2\2a\u0225\3\2\2\2c\u0227\3\2"+
+ "\2\2e\u0229\3\2\2\2g\u022d\3\2\2\2i\u0232\3\2\2\2k\u0236\3\2\2\2m\u0238"+
+ "\3\2\2\2o\u023a\3\2\2\2q\u023c\3\2\2\2s\u023e\3\2\2\2u\u0241\3\2\2\2w"+
+ "\u0243\3\2\2\2y\u0246\3\2\2\2{\u0249\3\2\2\2}\u024d\3\2\2\2\177\u0251"+
+ "\3\2\2\2\u0081\u0257\3\2\2\2\u0083\u025d\3\2\2\2\u0085\u0260\3\2\2\2\u0087"+
+ "\u0266\3\2\2\2\u0089\u026d\3\2\2\2\u008b\u0270\3\2\2\2\u008d\u0273\3\2"+
+ "\2\2\u008f\u0276\3\2\2\2\u0091\u0279\3\2\2\2\u0093\u0282\3\2\2\2\u0095"+
+ "\u0288\3\2\2\2\u0097\u028e\3\2\2\2\u0099\u0295\3\2\2\2\u009b\u029f\3\2"+
+ "\2\2\u009d\u02aa\3\2\2\2\u009f\u02af\3\2\2\2\u00a1\u02b5\3\2\2\2\u00a3"+
+ "\u02bf\3\2\2\2\u00a5\u02c9\3\2\2\2\u00a7\u02d2\3\2\2\2\u00a9\u02d8\3\2"+
+ "\2\2\u00ab\u02df\3\2\2\2\u00ad\u02e4\3\2\2\2\u00af\u02e8\3\2\2\2\u00b1"+
+ "\u02ee\3\2\2\2\u00b3\u02f6\3\2\2\2\u00b5\u02fb\3\2\2\2\u00b7\u0300\3\2"+
+ "\2\2\u00b9\u030b\3\2\2\2\u00bb\u030e\3\2\2\2\u00bd\u0312\3\2\2\2\u00bf"+
+ "\u0316\3\2\2\2\u00c1\u0319\3\2\2\2\u00c3\u0322\3\2\2\2\u00c5\u0325\3\2"+
+ "\2\2\u00c7\u0330\3\2\2\2\u00c9\u0333\3\2\2\2\u00cb\u0339\3\2\2\2\u00cd"+
+ "\u033e\3\2\2\2\u00cf\u0347\3\2\2\2\u00d1\u034f\3\2\2\2\u00d3\u0356\3\2"+
+ "\2\2\u00d5\u0360\3\2\2\2\u00d7\u0365\3\2\2\2\u00d9\u036b\3\2\2\2\u00db"+
+ "\u0370\3\2\2\2\u00dd\u0379\3\2\2\2\u00df\u0382\3\2\2\2\u00e1\u038a\3\2"+
+ "\2\2\u00e3\u0392\3\2\2\2\u00e5\u0397\3\2\2\2\u00e7\u03a0\3\2\2\2\u00e9"+
+ "\u03aa\3\2\2\2\u00eb\u03af\3\2\2\2\u00ed\u03b5\3\2\2\2\u00ef\u03b7\3\2"+
+ "\2\2\u00f1\u03b9\3\2\2\2\u00f3\u03be\3\2\2\2\u00f5\u03c3\3\2\2\2\u00f7"+
+ "\u03c5\3\2\2\2\u00f9\u03d1\3\2\2\2\u00fb\u03df\3\2\2\2\u00fd\u03e8\3\2"+
+ "\2\2\u00ff\u03ec\3\2\2\2\u0101\u03f0\3\2\2\2\u0103\u03f8\3\2\2\2\u0105"+
+ "\u03fc\3\2\2\2\u0107\u03fe\3\2\2\2\u0109\u0414\3\2\2\2\u010b\u010c\7="+
+ "\2\2\u010c\4\3\2\2\2\u010d\u010e\7o\2\2\u010e\u010f\7q\2\2\u010f\u0110"+
+ "\7f\2\2\u0110\u0111\7w\2\2\u0111\u0112\7n\2\2\u0112\u0113\7g\2\2\u0113"+
+ "\6\3\2\2\2\u0114\u0115\7p\2\2\u0115\u0116\7c\2\2\u0116\u0117\7o\2\2\u0117"+
+ "\u0118\7g\2\2\u0118\u0119\7u\2\2\u0119\u011a\7r\2\2\u011a\u011b\7c\2\2"+
+ "\u011b\u011c\7e\2\2\u011c\u011d\7g\2\2\u011d\b\3\2\2\2\u011e\u011f\7?"+
+ "\2\2\u011f\n\3\2\2\2\u0120\u0121\7q\2\2\u0121\u0122\7t\2\2\u0122\u0123"+
+ "\7f\2\2\u0123\u0124\7g\2\2\u0124\u0125\7t\2\2\u0125\u0126\7k\2\2\u0126"+
+ "\u0127\7p\2\2\u0127\u0128\7i\2\2\u0128\f\3\2\2\2\u0129\u012a\7q\2\2\u012a"+
+ "\u012b\7t\2\2\u012b\u012c\7f\2\2\u012c\u012d\7g\2\2\u012d\u012e\7t\2\2"+
+ "\u012e\u012f\7g\2\2\u012f\u0130\7f\2\2\u0130\16\3\2\2\2\u0131\u0132\7"+
+ "f\2\2\u0132\u0133\7g\2\2\u0133\u0134\7e\2\2\u0134\u0135\7k\2\2\u0135\u0136"+
+ "\7o\2\2\u0136\u0137\7c\2\2\u0137\u0138\7n\2\2\u0138\u0139\7/\2\2\u0139"+
+ "\u013a\7h\2\2\u013a\u013b\7q\2\2\u013b\u013c\7t\2\2\u013c\u013d\7o\2\2"+
+ "\u013d\u013e\7c\2\2\u013e\u013f\7v\2\2\u013f\20\3\2\2\2\u0140\u0141\7"+
+ "<\2\2\u0141\22\3\2\2\2\u0142\u0143\7f\2\2\u0143\u0144\7g\2\2\u0144\u0145"+
+ "\7e\2\2\u0145\u0146\7k\2\2\u0146\u0147\7o\2\2\u0147\u0148\7c\2\2\u0148"+
+ "\u0149\7n\2\2\u0149\u014a\7/\2\2\u014a\u014b\7u\2\2\u014b\u014c\7g\2\2"+
+ "\u014c\u014d\7r\2\2\u014d\u014e\7c\2\2\u014e\u014f\7t\2\2\u014f\u0150"+
+ "\7c\2\2\u0150\u0151\7v\2\2\u0151\u0152\7q\2\2\u0152\u0153\7t\2\2\u0153"+
+ "\24\3\2\2\2\u0154\u0155\7i\2\2\u0155\u0156\7t\2\2\u0156\u0157\7q\2\2\u0157"+
+ "\u0158\7w\2\2\u0158\u0159\7r\2\2\u0159\u015a\7k\2\2\u015a\u015b\7p\2\2"+
+ "\u015b\u015c\7i\2\2\u015c\u015d\7/\2\2\u015d\u015e\7u\2\2\u015e\u015f"+
+ "\7g\2\2\u015f\u0160\7r\2\2\u0160\u0161\7c\2\2\u0161\u0162\7t\2\2\u0162"+
+ "\u0163\7c\2\2\u0163\u0164\7v\2\2\u0164\u0165\7q\2\2\u0165\u0166\7t\2\2"+
+ "\u0166\26\3\2\2\2\u0167\u0168\7k\2\2\u0168\u0169\7p\2\2\u0169\u016a\7"+
+ "h\2\2\u016a\u016b\7k\2\2\u016b\u016c\7p\2\2\u016c\u016d\7k\2\2\u016d\u016e"+
+ "\7v\2\2\u016e\u016f\7{\2\2\u016f\30\3\2\2\2\u0170\u0171\7o\2\2\u0171\u0172"+
+ "\7k\2\2\u0172\u0173\7p\2\2\u0173\u0174\7w\2\2\u0174\u0175\7u\2\2\u0175"+
+ "\u0176\7/\2\2\u0176\u0177\7u\2\2\u0177\u0178\7k\2\2\u0178\u0179\7i\2\2"+
+ "\u0179\u017a\7p\2\2\u017a\32\3\2\2\2\u017b\u017c\7P\2\2\u017c\u017d\7"+
+ "c\2\2\u017d\u017e\7P\2\2\u017e\34\3\2\2\2\u017f\u0180\7r\2\2\u0180\u0181"+
+ "\7g\2\2\u0181\u0182\7t\2\2\u0182\u0183\7e\2\2\u0183\u0184\7g\2\2\u0184"+
+ "\u0185\7p\2\2\u0185\u0186\7v\2\2\u0186\36\3\2\2\2\u0187\u0188\7r\2\2\u0188"+
+ "\u0189\7g\2\2\u0189\u018a\7t\2\2\u018a\u018b\7/\2\2\u018b\u018c\7o\2\2"+
+ "\u018c\u018d\7k\2\2\u018d\u018e\7n\2\2\u018e\u018f\7n\2\2\u018f\u0190"+
+ "\7g\2\2\u0190 \3\2\2\2\u0191\u0192\7|\2\2\u0192\u0193\7g\2\2\u0193\u0194"+
+ "\7t\2\2\u0194\u0195\7q\2\2\u0195\u0196\7/\2\2\u0196\u0197\7f\2\2\u0197"+
+ "\u0198\7k\2\2\u0198\u0199\7i\2\2\u0199\u019a\7k\2\2\u019a\u019b\7v\2\2"+
+ "\u019b\"\3\2\2\2\u019c\u019d\7f\2\2\u019d\u019e\7k\2\2\u019e\u019f\7i"+
+ "\2\2\u019f\u01a0\7k\2\2\u01a0\u01a1\7v\2\2\u01a1$\3\2\2\2\u01a2\u01a3"+
+ "\7r\2\2\u01a3\u01a4\7c\2\2\u01a4\u01a5\7v\2\2\u01a5\u01a6\7v\2\2\u01a6"+
+ "\u01a7\7g\2\2\u01a7\u01a8\7t\2\2\u01a8\u01a9\7p\2\2\u01a9\u01aa\7/\2\2"+
+ "\u01aa\u01ab\7u\2\2\u01ab\u01ac\7g\2\2\u01ac\u01ad\7r\2\2\u01ad\u01ae"+
+ "\7c\2\2\u01ae\u01af\7t\2\2\u01af\u01b0\7c\2\2\u01b0\u01b1\7v\2\2\u01b1"+
+ "\u01b2\7q\2\2\u01b2\u01b3\7t\2\2\u01b3&\3\2\2\2\u01b4\u01b5\7k\2\2\u01b5"+
+ "\u01b6\7o\2\2\u01b6\u01b7\7r\2\2\u01b7\u01b8\7q\2\2\u01b8\u01b9\7t\2\2"+
+ "\u01b9\u01ba\7v\2\2\u01ba(\3\2\2\2\u01bb\u01bc\7.\2\2\u01bc*\3\2\2\2\u01bd"+
+ "\u01be\7<\2\2\u01be\u01bf\7?\2\2\u01bf,\3\2\2\2\u01c0\u01c1\7g\2\2\u01c1"+
+ "\u01c2\7z\2\2\u01c2\u01c3\7v\2\2\u01c3\u01c4\7g\2\2\u01c4\u01c5\7t\2\2"+
+ "\u01c5\u01c6\7p\2\2\u01c6\u01c7\7c\2\2\u01c7\u01c8\7n\2\2\u01c8.\3\2\2"+
+ "\2\u01c9\u01ca\7h\2\2\u01ca\u01cb\7w\2\2\u01cb\u01cc\7p\2\2\u01cc\u01cd"+
+ "\7e\2\2\u01cd\u01ce\7v\2\2\u01ce\u01cf\7k\2\2\u01cf\u01d0\7q\2\2\u01d0"+
+ "\u01d1\7p\2\2\u01d1\60\3\2\2\2\u01d2\u01d3\7*\2\2\u01d3\62\3\2\2\2\u01d4"+
+ "\u01d5\7+\2\2\u01d5\64\3\2\2\2\u01d6\u01d7\7}\2\2\u01d7\66\3\2\2\2\u01d8"+
+ "\u01d9\7\177\2\2\u01d98\3\2\2\2\u01da\u01db\7l\2\2\u01db\u01dc\7u\2\2"+
+ "\u01dc\u01dd\7q\2\2\u01dd\u01de\7w\2\2\u01de\u01df\7p\2\2\u01df\u01e0"+
+ "\7f\2\2\u01e0:\3\2\2\2\u01e1\u01e2\7e\2\2\u01e2\u01e3\7q\2\2\u01e3\u01e4"+
+ "\7o\2\2\u01e4\u01e5\7r\2\2\u01e5\u01e6\7c\2\2\u01e6\u01e7\7e\2\2\u01e7"+
+ "\u01e8\7v\2\2\u01e8<\3\2\2\2\u01e9\u01ea\7x\2\2\u01ea\u01eb\7g\2\2\u01eb"+
+ "\u01ec\7t\2\2\u01ec\u01ed\7d\2\2\u01ed\u01ee\7q\2\2\u01ee\u01ef\7u\2\2"+
+ "\u01ef\u01f0\7g\2\2\u01f0>\3\2\2\2\u01f1\u01f2\7l\2\2\u01f2\u01f3\7u\2"+
+ "\2\u01f3\u01f4\7q\2\2\u01f4\u01f5\7p\2\2\u01f5@\3\2\2\2\u01f6\u01f7\7"+
+ "u\2\2\u01f7\u01f8\7e\2\2\u01f8\u01f9\7j\2\2\u01f9\u01fa\7g\2\2\u01fa\u01fb"+
+ "\7o\2\2\u01fb\u01fc\7c\2\2\u01fcB\3\2\2\2\u01fd\u01fe\7&\2\2\u01feD\3"+
+ "\2\2\2\u01ff\u0200\7~\2\2\u0200F\3\2\2\2\u0201\u0202\7,\2\2\u0202H\3\2"+
+ "\2\2\u0203\u0204\7g\2\2\u0204\u0205\7s\2\2\u0205J\3\2\2\2\u0206\u0207"+
+ "\7p\2\2\u0207\u0208\7g\2\2\u0208L\3\2\2\2\u0209\u020a\7n\2\2\u020a\u020b"+
+ "\7v\2\2\u020bN\3\2\2\2\u020c\u020d\7n\2\2\u020d\u020e\7g\2\2\u020eP\3"+
+ "\2\2\2\u020f\u0210\7i\2\2\u0210\u0211\7v\2\2\u0211R\3\2\2\2\u0212\u0213"+
+ "\7i\2\2\u0213\u0214\7g\2\2\u0214T\3\2\2\2\u0215\u0216\7#\2\2\u0216\u0217"+
+ "\7?\2\2\u0217V\3\2\2\2\u0218\u0219\7>\2\2\u0219X\3\2\2\2\u021a\u021b\7"+
+ ">\2\2\u021b\u021c\7?\2\2\u021cZ\3\2\2\2\u021d\u021e\7@\2\2\u021e\\\3\2"+
+ "\2\2\u021f\u0220\7@\2\2\u0220\u0221\7?\2\2\u0221^\3\2\2\2\u0222\u0223"+
+ "\7~\2\2\u0223\u0224\7~\2\2\u0224`\3\2\2\2\u0225\u0226\7-\2\2\u0226b\3"+
+ "\2\2\2\u0227\u0228\7/\2\2\u0228d\3\2\2\2\u0229\u022a\7f\2\2\u022a\u022b"+
+ "\7k\2\2\u022b\u022c\7x\2\2\u022cf\3\2\2\2\u022d\u022e\7k\2\2\u022e\u022f"+
+ "\7f\2\2\u022f\u0230\7k\2\2\u0230\u0231\7x\2\2\u0231h\3\2\2\2\u0232\u0233"+
+ "\7o\2\2\u0233\u0234\7q\2\2\u0234\u0235\7f\2\2\u0235j\3\2\2\2\u0236\u0237"+
+ "\7#\2\2\u0237l\3\2\2\2\u0238\u0239\7]\2\2\u0239n\3\2\2\2\u023a\u023b\7"+
+ "_\2\2\u023bp\3\2\2\2\u023c\u023d\7\60\2\2\u023dr\3\2\2\2\u023e\u023f\7"+
+ "&\2\2\u023f\u0240\7&\2\2\u0240t\3\2\2\2\u0241\u0242\7%\2\2\u0242v\3\2"+
+ "\2\2\u0243\u0244\7}\2\2\u0244\u0245\7~\2\2\u0245x\3\2\2\2\u0246\u0247"+
+ "\7~\2\2\u0247\u0248\7\177\2\2\u0248z\3\2\2\2\u0249\u024a\7h\2\2\u024a"+
+ "\u024b\7q\2\2\u024b\u024c\7t\2\2\u024c|\3\2\2\2\u024d\u024e\7n\2\2\u024e"+
+ "\u024f\7g\2\2\u024f\u0250\7v\2\2\u0250~\3\2\2\2\u0251\u0252\7y\2\2\u0252"+
+ "\u0253\7j\2\2\u0253\u0254\7g\2\2\u0254\u0255\7t\2\2\u0255\u0256\7g\2\2"+
+ "\u0256\u0080\3\2\2\2\u0257\u0258\7i\2\2\u0258\u0259\7t\2\2\u0259\u025a"+
+ "\7q\2\2\u025a\u025b\7w\2\2\u025b\u025c\7r\2\2\u025c\u0082\3\2\2\2\u025d"+
+ "\u025e\7d\2\2\u025e\u025f\7{\2\2\u025f\u0084\3\2\2\2\u0260\u0261\7q\2"+
+ "\2\u0261\u0262\7t\2\2\u0262\u0263\7f\2\2\u0263\u0264\7g\2\2\u0264\u0265"+
+ "\7t\2\2\u0265\u0086\3\2\2\2\u0266\u0267\7t\2\2\u0267\u0268\7g\2\2\u0268"+
+ "\u0269\7v\2\2\u0269\u026a\7w\2\2\u026a\u026b\7t\2\2\u026b\u026c\7p\2\2"+
+ "\u026c\u0088\3\2\2\2\u026d\u026e\7k\2\2\u026e\u026f\7h\2\2\u026f\u008a"+
+ "\3\2\2\2\u0270\u0271\7k\2\2\u0271\u0272\7p\2\2\u0272\u008c\3\2\2\2\u0273"+
+ "\u0274\7c\2\2\u0274\u0275\7u\2\2\u0275\u008e\3\2\2\2\u0276\u0277\7c\2"+
+ "\2\u0277\u0278\7v\2\2\u0278\u0090\3\2\2\2\u0279\u027a\7c\2\2\u027a\u027b"+
+ "\7n\2\2\u027b\u027c\7n\2\2\u027c\u027d\7q\2\2\u027d\u027e\7y\2\2\u027e"+
+ "\u027f\7k\2\2\u027f\u0280\7p\2\2\u0280\u0281\7i\2\2\u0281\u0092\3\2\2"+
+ "\2\u0282\u0283\7g\2\2\u0283\u0284\7o\2\2\u0284\u0285\7r\2\2\u0285\u0286"+
+ "\7v\2\2\u0286\u0287\7{\2\2\u0287\u0094\3\2\2\2\u0288\u0289\7e\2\2\u0289"+
+ "\u028a\7q\2\2\u028a\u028b\7w\2\2\u028b\u028c\7p\2\2\u028c\u028d\7v\2\2"+
+ "\u028d\u0096\3\2\2\2\u028e\u028f\7u\2\2\u028f\u0290\7v\2\2\u0290\u0291"+
+ "\7c\2\2\u0291\u0292\7d\2\2\u0292\u0293\7n\2\2\u0293\u0294\7g\2\2\u0294"+
+ "\u0098\3\2\2\2\u0295\u0296\7c\2\2\u0296\u0297\7u\2\2\u0297\u0298\7e\2"+
+ "\2\u0298\u0299\7g\2\2\u0299\u029a\7p\2\2\u029a\u029b\7f\2\2\u029b\u029c"+
+ "\7k\2\2\u029c\u029d\7p\2\2\u029d\u029e\7i\2\2\u029e\u009a\3\2\2\2\u029f"+
+ "\u02a0\7f\2\2\u02a0\u02a1\7g\2\2\u02a1\u02a2\7u\2\2\u02a2\u02a3\7e\2\2"+
+ "\u02a3\u02a4\7g\2\2\u02a4\u02a5\7p\2\2\u02a5\u02a6\7f\2\2\u02a6\u02a7"+
+ "\7k\2\2\u02a7\u02a8\7p\2\2\u02a8\u02a9\7i\2\2\u02a9\u009c\3\2\2\2\u02aa"+
+ "\u02ab\7u\2\2\u02ab\u02ac\7q\2\2\u02ac\u02ad\7o\2\2\u02ad\u02ae\7g\2\2"+
+ "\u02ae\u009e\3\2\2\2\u02af\u02b0\7g\2\2\u02b0\u02b1\7x\2\2\u02b1\u02b2"+
+ "\7g\2\2\u02b2\u02b3\7t\2\2\u02b3\u02b4\7{\2\2\u02b4\u00a0\3\2\2\2\u02b5"+
+ "\u02b6\7u\2\2\u02b6\u02b7\7c\2\2\u02b7\u02b8\7v\2\2\u02b8\u02b9\7k\2\2"+
+ "\u02b9\u02ba\7u\2\2\u02ba\u02bb\7h\2\2\u02bb\u02bc\7k\2\2\u02bc\u02bd"+
+ "\7g\2\2\u02bd\u02be\7u\2\2\u02be\u00a2\3\2\2\2\u02bf\u02c0\7e\2\2\u02c0"+
+ "\u02c1\7q\2\2\u02c1\u02c2\7n\2\2\u02c2\u02c3\7n\2\2\u02c3\u02c4\7c\2\2"+
+ "\u02c4\u02c5\7v\2\2\u02c5\u02c6\7k\2\2\u02c6\u02c7\7q\2\2\u02c7\u02c8"+
+ "\7p\2\2\u02c8\u00a4\3\2\2\2\u02c9\u02ca\7i\2\2\u02ca\u02cb\7t\2\2\u02cb"+
+ "\u02cc\7g\2\2\u02cc\u02cd\7c\2\2\u02cd\u02ce\7v\2\2\u02ce\u02cf\7g\2\2"+
+ "\u02cf\u02d0\7u\2\2\u02d0\u02d1\7v\2\2\u02d1\u00a6\3\2\2\2\u02d2\u02d3"+
+ "\7n\2\2\u02d3\u02d4\7g\2\2\u02d4\u02d5\7c\2\2\u02d5\u02d6\7u\2\2\u02d6"+
+ "\u02d7\7v\2\2\u02d7\u00a8\3\2\2\2\u02d8\u02d9\7u\2\2\u02d9\u02da\7y\2"+
+ "\2\u02da\u02db\7k\2\2\u02db\u02dc\7v\2\2\u02dc\u02dd\7e\2\2\u02dd\u02de"+
+ "\7j\2\2\u02de\u00aa\3\2\2\2\u02df\u02e0\7e\2\2\u02e0\u02e1\7c\2\2\u02e1"+
+ "\u02e2\7u\2\2\u02e2\u02e3\7g\2\2\u02e3\u00ac\3\2\2\2\u02e4\u02e5\7v\2"+
+ "\2\u02e5\u02e6\7t\2\2\u02e6\u02e7\7{\2\2\u02e7\u00ae\3\2\2\2\u02e8\u02e9"+
+ "\7e\2\2\u02e9\u02ea\7c\2\2\u02ea\u02eb\7v\2\2\u02eb\u02ec\7e\2\2\u02ec"+
+ "\u02ed\7j\2\2\u02ed\u00b0\3\2\2\2\u02ee\u02ef\7f\2\2\u02ef\u02f0\7g\2"+
+ "\2\u02f0\u02f1\7h\2\2\u02f1\u02f2\7c\2\2\u02f2\u02f3\7w\2\2\u02f3\u02f4"+
+ "\7n\2\2\u02f4\u02f5\7v\2\2\u02f5\u00b2\3\2\2\2\u02f6\u02f7\7v\2\2\u02f7"+
+ "\u02f8\7j\2\2\u02f8\u02f9\7g\2\2\u02f9\u02fa\7p\2\2\u02fa\u00b4\3\2\2"+
+ "\2\u02fb\u02fc\7g\2\2\u02fc\u02fd\7n\2\2\u02fd\u02fe\7u\2\2\u02fe\u02ff"+
+ "\7g\2\2\u02ff\u00b6\3\2\2\2\u0300\u0301\7v\2\2\u0301\u0302\7{\2\2\u0302"+
+ "\u0303\7r\2\2\u0303\u0304\7g\2\2\u0304\u0305\7u\2\2\u0305\u0306\7y\2\2"+
+ "\u0306\u0307\7k\2\2\u0307\u0308\7v\2\2\u0308\u0309\7e\2\2\u0309\u030a"+
+ "\7j\2\2\u030a\u00b8\3\2\2\2\u030b\u030c\7q\2\2\u030c\u030d\7t\2\2\u030d"+
+ "\u00ba\3\2\2\2\u030e\u030f\7c\2\2\u030f\u0310\7p\2\2\u0310\u0311\7f\2"+
+ "\2\u0311\u00bc\3\2\2\2\u0312\u0313\7p\2\2\u0313\u0314\7q\2\2\u0314\u0315"+
+ "\7v\2\2\u0315\u00be\3\2\2\2\u0316\u0317\7v\2\2\u0317\u0318\7q\2\2\u0318"+
+ "\u00c0\3\2\2\2\u0319\u031a\7k\2\2\u031a\u031b\7p\2\2\u031b\u031c\7u\2"+
+ "\2\u031c\u031d\7v\2\2\u031d\u031e\7c\2\2\u031e\u031f\7p\2\2\u031f\u0320"+
+ "\7e\2\2\u0320\u0321\7g\2\2\u0321\u00c2\3\2\2\2\u0322\u0323\7q\2\2\u0323"+
+ "\u0324\7h\2\2\u0324\u00c4\3\2\2\2\u0325\u0326\7u\2\2\u0326\u0327\7v\2"+
+ "\2\u0327\u0328\7c\2\2\u0328\u0329\7v\2\2\u0329\u032a\7k\2\2\u032a\u032b"+
+ "\7e\2\2\u032b\u032c\7c\2\2\u032c\u032d\7n\2\2\u032d\u032e\7n\2\2\u032e"+
+ "\u032f\7{\2\2\u032f\u00c6\3\2\2\2\u0330\u0331\7k\2\2\u0331\u0332\7u\2"+
+ "\2\u0332\u00c8\3\2\2\2\u0333\u0334\7v\2\2\u0334\u0335\7t\2\2\u0335\u0336"+
+ "\7g\2\2\u0336\u0337\7c\2\2\u0337\u0338\7v\2\2\u0338\u00ca\3\2\2\2\u0339"+
+ "\u033a\7e\2\2\u033a\u033b\7c\2\2\u033b\u033c\7u\2\2\u033c\u033d\7v\2\2"+
+ "\u033d\u00cc\3\2\2\2\u033e\u033f\7e\2\2\u033f\u0340\7c\2\2\u0340\u0341"+
+ "\7u\2\2\u0341\u0342\7v\2\2\u0342\u0343\7c\2\2\u0343\u0344\7d\2\2\u0344"+
+ "\u0345\7n\2\2\u0345\u0346\7g\2\2\u0346\u00ce\3\2\2\2\u0347\u0348\7x\2"+
+ "\2\u0348\u0349\7g\2\2\u0349\u034a\7t\2\2\u034a\u034b\7u\2\2\u034b\u034c"+
+ "\7k\2\2\u034c\u034d\7q\2\2\u034d\u034e\7p\2\2\u034e\u00d0\3\2\2\2\u034f"+
+ "\u0350\7l\2\2\u0350\u0351\7u\2\2\u0351\u0352\7q\2\2\u0352\u0353\7p\2\2"+
+ "\u0353\u0354\7k\2\2\u0354\u0355\7s\2\2\u0355\u00d2\3\2\2\2\u0356\u0357"+
+ "\7w\2\2\u0357\u0358\7p\2\2\u0358\u0359\7q\2\2\u0359\u035a\7t\2\2\u035a"+
+ "\u035b\7f\2\2\u035b\u035c\7g\2\2\u035c\u035d\7t\2\2\u035d\u035e\7g\2\2"+
+ "\u035e\u035f\7f\2\2\u035f\u00d4\3\2\2\2\u0360\u0361\7v\2\2\u0361\u0362"+
+ "\7t\2\2\u0362\u0363\7w\2\2\u0363\u0364\7g\2\2\u0364\u00d6\3\2\2\2\u0365"+
+ "\u0366\7h\2\2\u0366\u0367\7c\2\2\u0367\u0368\7n\2\2\u0368\u0369\7u\2\2"+
+ "\u0369\u036a\7g\2\2\u036a\u00d8\3\2\2\2\u036b\u036c\7v\2\2\u036c\u036d"+
+ "\7{\2\2\u036d\u036e\7r\2\2\u036e\u036f\7g\2\2\u036f\u00da\3\2\2\2\u0370"+
+ "\u0371\7x\2\2\u0371\u0372\7c\2\2\u0372\u0373\7n\2\2\u0373\u0374\7k\2\2"+
+ "\u0374\u0375\7f\2\2\u0375\u0376\7c\2\2\u0376\u0377\7v\2\2\u0377\u0378"+
+ "\7g\2\2\u0378\u00dc\3\2\2\2\u0379\u037a\7c\2\2\u037a\u037b\7p\2\2\u037b"+
+ "\u037c\7p\2\2\u037c\u037d\7q\2\2\u037d\u037e\7v\2\2\u037e\u037f\7c\2\2"+
+ "\u037f\u0380\7v\2\2\u0380\u0381\7g\2\2\u0381\u00de\3\2\2\2\u0382\u0383"+
+ "\7f\2\2\u0383\u0384\7g\2\2\u0384\u0385\7e\2\2\u0385\u0386\7n\2\2\u0386"+
+ "\u0387\7c\2\2\u0387\u0388\7t\2\2\u0388\u0389\7g\2\2\u0389\u00e0\3\2\2"+
+ "\2\u038a\u038b\7e\2\2\u038b\u038c\7q\2\2\u038c\u038d\7p\2\2\u038d\u038e"+
+ "\7v\2\2\u038e\u038f\7g\2\2\u038f\u0390\7z\2\2\u0390\u0391\7v\2\2\u0391"+
+ "\u00e2\3\2\2\2\u0392\u0393\7k\2\2\u0393\u0394\7v\2\2\u0394\u0395\7g\2"+
+ "\2\u0395\u0396\7o\2\2\u0396\u00e4\3\2\2\2\u0397\u0398\7x\2\2\u0398\u0399"+
+ "\7c\2\2\u0399\u039a\7t\2\2\u039a\u039b\7k\2\2\u039b\u039c\7c\2\2\u039c"+
+ "\u039d\7d\2\2\u039d\u039e\7n\2\2\u039e\u039f\7g\2\2\u039f\u00e6\3\2\2"+
+ "\2\u03a0\u03a5\7$\2\2\u03a1\u03a4\5\u00e9u\2\u03a2\u03a4\n\2\2\2\u03a3"+
+ "\u03a1\3\2\2\2\u03a3\u03a2\3\2\2\2\u03a4\u03a7\3\2\2\2\u03a5\u03a3\3\2"+
+ "\2\2\u03a5\u03a6\3\2\2\2\u03a6\u03a8\3\2\2\2\u03a7\u03a5\3\2\2\2\u03a8"+
+ "\u03a9\7$\2\2\u03a9\u00e8\3\2\2\2\u03aa\u03ad\7^\2\2\u03ab\u03ae\t\3\2"+
+ "\2\u03ac\u03ae\5\u00ebv\2\u03ad\u03ab\3\2\2\2\u03ad\u03ac\3\2\2\2\u03ae"+
+ "\u00ea\3\2\2\2\u03af\u03b0\7w\2\2\u03b0\u03b1\5\u00edw\2\u03b1\u03b2\5"+
+ "\u00edw\2\u03b2\u03b3\5\u00edw\2\u03b3\u03b4\5\u00edw\2\u03b4\u00ec\3"+
+ "\2\2\2\u03b5\u03b6\t\4\2\2\u03b6\u00ee\3\2\2\2\u03b7\u03b8\7A\2\2\u03b8"+
+ "\u00f0\3\2\2\2\u03b9\u03ba\7p\2\2\u03ba\u03bb\7w\2\2\u03bb\u03bc\7n\2"+
+ "\2\u03bc\u03bd\7n\2\2\u03bd\u00f2\3\2\2\2\u03be\u03bf\5\u00f5{\2\u03bf"+
+ "\u00f4\3\2\2\2\u03c0\u03c4\5\u00f7|\2\u03c1\u03c4\5\u00f9}\2\u03c2\u03c4"+
+ "\5\u00fb~\2\u03c3\u03c0\3\2\2\2\u03c3\u03c1\3\2\2\2\u03c3\u03c2\3\2\2"+
+ "\2\u03c4\u00f6\3\2\2\2\u03c5\u03c6\5\u00fd\177\2\u03c6\u00f8\3\2\2\2\u03c7"+
+ "\u03c8\7\60\2\2\u03c8\u03d2\5\u00fd\177\2\u03c9\u03ca\5\u00fd\177\2\u03ca"+
+ "\u03ce\7\60\2\2\u03cb\u03cd\t\5\2\2\u03cc\u03cb\3\2\2\2\u03cd\u03d0\3"+
+ "\2\2\2\u03ce\u03cc\3\2\2\2\u03ce\u03cf\3\2\2\2\u03cf\u03d2\3\2\2\2\u03d0"+
+ "\u03ce\3\2\2\2\u03d1\u03c7\3\2\2\2\u03d1\u03c9\3\2\2\2\u03d2\u00fa\3\2"+
+ "\2\2\u03d3\u03d4\7\60\2\2\u03d4\u03e0\5\u00fd\177\2\u03d5\u03dd\5\u00fd"+
+ "\177\2\u03d6\u03da\7\60\2\2\u03d7\u03d9\t\5\2\2\u03d8\u03d7\3\2\2\2\u03d9"+
+ "\u03dc\3\2\2\2\u03da\u03d8\3\2\2\2\u03da\u03db\3\2\2\2\u03db\u03de\3\2"+
+ "\2\2\u03dc\u03da\3\2\2\2\u03dd\u03d6\3\2\2\2\u03dd\u03de\3\2\2\2\u03de"+
+ "\u03e0\3\2\2\2\u03df\u03d3\3\2\2\2\u03df\u03d5\3\2\2\2\u03e0\u03e1\3\2"+
+ "\2\2\u03e1\u03e3\t\6\2\2\u03e2\u03e4\t\7\2\2\u03e3\u03e2\3\2\2\2\u03e3"+
+ "\u03e4\3\2\2\2\u03e4\u03e5\3\2\2\2\u03e5\u03e6\5\u00fd\177\2\u03e6\u00fc"+
+ "\3\2\2\2\u03e7\u03e9\t\5\2\2\u03e8\u03e7\3\2\2\2\u03e9\u03ea\3\2\2\2\u03ea"+
+ "\u03e8\3\2\2\2\u03ea\u03eb\3\2\2\2\u03eb\u00fe\3\2\2\2\u03ec\u03ed\t\b"+
+ "\2\2\u03ed\u03ee\3\2\2\2\u03ee\u03ef\b\u0080\2\2\u03ef\u0100\3\2\2\2\u03f0"+
+ "\u03f4\5\u0103\u0082\2\u03f1\u03f3\5\u0105\u0083\2\u03f2\u03f1\3\2\2\2"+
+ "\u03f3\u03f6\3\2\2\2\u03f4\u03f2\3\2\2\2\u03f4\u03f5\3\2\2\2\u03f5\u0102"+
+ "\3\2\2\2\u03f6\u03f4\3\2\2\2\u03f7\u03f9\t\t\2\2\u03f8\u03f7\3\2\2\2\u03f9"+
+ "\u0104\3\2\2\2\u03fa\u03fd\5\u0103\u0082\2\u03fb\u03fd\t\n\2\2\u03fc\u03fa"+
+ "\3\2\2\2\u03fc\u03fb\3\2\2\2\u03fd\u0106\3\2\2\2\u03fe\u03ff\7*\2\2\u03ff"+
+ "\u0408\7<\2\2\u0400\u0407\5\u0107\u0084\2\u0401\u0402\7*\2\2\u0402\u0407"+
+ "\n\13\2\2\u0403\u0404\7<\2\2\u0404\u0407\n\f\2\2\u0405\u0407\n\r\2\2\u0406"+
+ "\u0400\3\2\2\2\u0406\u0401\3\2\2\2\u0406\u0403\3\2\2\2\u0406\u0405\3\2"+
+ "\2\2\u0407\u040a\3\2\2\2\u0408\u0406\3\2\2\2\u0408\u0409\3\2\2\2\u0409"+
+ "\u040c\3\2\2\2\u040a\u0408\3\2\2\2\u040b\u040d\7<\2\2\u040c\u040b\3\2"+
+ "\2\2\u040d\u040e\3\2\2\2\u040e\u040c\3\2\2\2\u040e\u040f\3\2\2\2\u040f"+
+ "\u0410\3\2\2\2\u0410\u0411\7+\2\2\u0411\u0412\3\2\2\2\u0412\u0413\b\u0084"+
+ "\2\2\u0413\u0108\3\2\2\2\u0414\u0415\n\16\2\2\u0415\u010a\3\2\2\2\24\2"+
+ "\u03a3\u03a5\u03ad\u03c3\u03ce\u03d1\u03da\u03dd\u03df\u03e3\u03ea\u03f4"+
+ "\u03f8\u03fc\u0406\u0408\u040e\3\2\3\2";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/src/main/java/org/rumbledb/parser/JsoniqLexer.tokens b/src/main/java/org/rumbledb/parser/JsoniqLexer.tokens
index 665fe0525..1a3cdf8b7 100644
--- a/src/main/java/org/rumbledb/parser/JsoniqLexer.tokens
+++ b/src/main/java/org/rumbledb/parser/JsoniqLexer.tokens
@@ -58,71 +58,72 @@ T__56=57
T__57=58
T__58=59
T__59=60
-T__60=61
-Kfor=62
-Klet=63
-Kwhere=64
-Kgroup=65
-Kby=66
-Korder=67
-Kreturn=68
-Kif=69
-Kin=70
-Kas=71
-Kat=72
-Kallowing=73
-Kempty=74
-Kcount=75
-Kstable=76
-Kascending=77
-Kdescending=78
-Ksome=79
-Kevery=80
-Ksatisfies=81
-Kcollation=82
-Kgreatest=83
-Kleast=84
-Kswitch=85
-Kcase=86
-Ktry=87
-Kcatch=88
-Kdefault=89
-Kthen=90
-Kelse=91
-Ktypeswitch=92
-Kor=93
-Kand=94
-Knot=95
-Kto=96
-Kinstance=97
-Kof=98
-Kstatically=99
-Kis=100
-Ktreat=101
-Kcast=102
-Kcastable=103
-Kversion=104
-Kjsoniq=105
-Kunordered=106
-Ktrue=107
-Kfalse=108
-Ktype=109
-Kdeclare=110
-Kcontext=111
-Kitem=112
-Kvariable=113
-STRING=114
-ArgumentPlaceholder=115
-NullLiteral=116
-Literal=117
-NumericLiteral=118
-IntegerLiteral=119
-DecimalLiteral=120
-DoubleLiteral=121
-WS=122
-NCName=123
-XQComment=124
-ContentChar=125
+Kfor=61
+Klet=62
+Kwhere=63
+Kgroup=64
+Kby=65
+Korder=66
+Kreturn=67
+Kif=68
+Kin=69
+Kas=70
+Kat=71
+Kallowing=72
+Kempty=73
+Kcount=74
+Kstable=75
+Kascending=76
+Kdescending=77
+Ksome=78
+Kevery=79
+Ksatisfies=80
+Kcollation=81
+Kgreatest=82
+Kleast=83
+Kswitch=84
+Kcase=85
+Ktry=86
+Kcatch=87
+Kdefault=88
+Kthen=89
+Kelse=90
+Ktypeswitch=91
+Kor=92
+Kand=93
+Knot=94
+Kto=95
+Kinstance=96
+Kof=97
+Kstatically=98
+Kis=99
+Ktreat=100
+Kcast=101
+Kcastable=102
+Kversion=103
+Kjsoniq=104
+Kunordered=105
+Ktrue=106
+Kfalse=107
+Ktype=108
+Kvalidate=109
+Kannotate=110
+Kdeclare=111
+Kcontext=112
+Kitem=113
+Kvariable=114
+STRING=115
+ArgumentPlaceholder=116
+NullLiteral=117
+Literal=118
+NumericLiteral=119
+IntegerLiteral=120
+DecimalLiteral=121
+DoubleLiteral=122
+WS=123
+NCName=124
+XQComment=125
+ContentChar=126
';'=1
'module'=2
'namespace'=3
@@ -175,66 +176,67 @@ ContentChar=125
'div'=50
'idiv'=51
'mod'=52
-'validate'=53
-'!'=54
-'['=55
-']'=56
-'.'=57
-'$$'=58
-'#'=59
-'{|'=60
-'|}'=61
-'for'=62
-'let'=63
-'where'=64
-'group'=65
-'by'=66
-'order'=67
-'return'=68
-'if'=69
-'in'=70
-'as'=71
-'at'=72
-'allowing'=73
-'empty'=74
-'count'=75
-'stable'=76
-'ascending'=77
-'descending'=78
-'some'=79
-'every'=80
-'satisfies'=81
-'collation'=82
-'greatest'=83
-'least'=84
-'switch'=85
-'case'=86
-'try'=87
-'catch'=88
-'default'=89
-'then'=90
-'else'=91
-'typeswitch'=92
-'or'=93
-'and'=94
-'not'=95
-'to'=96
-'instance'=97
-'of'=98
-'statically'=99
-'is'=100
-'treat'=101
-'cast'=102
-'castable'=103
-'version'=104
-'jsoniq'=105
-'unordered'=106
-'true'=107
-'false'=108
-'type'=109
-'declare'=110
-'context'=111
-'item'=112
-'variable'=113
-'?'=115
-'null'=116
+'!'=53
+'['=54
+']'=55
+'.'=56
+'$$'=57
+'#'=58
+'{|'=59
+'|}'=60
+'for'=61
+'let'=62
+'where'=63
+'group'=64
+'by'=65
+'order'=66
+'return'=67
+'if'=68
+'in'=69
+'as'=70
+'at'=71
+'allowing'=72
+'empty'=73
+'count'=74
+'stable'=75
+'ascending'=76
+'descending'=77
+'some'=78
+'every'=79
+'satisfies'=80
+'collation'=81
+'greatest'=82
+'least'=83
+'switch'=84
+'case'=85
+'try'=86
+'catch'=87
+'default'=88
+'then'=89
+'else'=90
+'typeswitch'=91
+'or'=92
+'and'=93
+'not'=94
+'to'=95
+'instance'=96
+'of'=97
+'statically'=98
+'is'=99
+'treat'=100
+'cast'=101
+'castable'=102
+'version'=103
+'jsoniq'=104
+'unordered'=105
+'true'=106
+'false'=107
+'type'=108
+'validate'=109
+'annotate'=110
+'declare'=111
+'context'=112
+'item'=113
+'variable'=114
+'?'=116
+'null'=117
diff --git a/src/main/java/org/rumbledb/parser/JsoniqParser.java b/src/main/java/org/rumbledb/parser/JsoniqParser.java
index 18b06b8c1..c0ca5cfc6 100644
--- a/src/main/java/org/rumbledb/parser/JsoniqParser.java
+++ b/src/main/java/org/rumbledb/parser/JsoniqParser.java
@@ -1,4 +1,4 @@
-// Generated from ./src/main/java/org/rumbledb/parser/Jsoniq.g4 by ANTLR 4.8
+// Generated from ./src/main/java/org/rumbledb/parser/Jsoniq.g4 by ANTLR 4.7
// Java header
package org.rumbledb.parser;
@@ -25,7 +25,7 @@
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class JsoniqParser extends Parser {
- static { RuntimeMetaData.checkVersion("4.8", RuntimeMetaData.VERSION); }
+ static { RuntimeMetaData.checkVersion("4.7", RuntimeMetaData.VERSION); }
protected static final DFA[] _decisionToDFA;
protected static final PredictionContextCache _sharedContextCache =
@@ -39,17 +39,17 @@ public class JsoniqParser extends Parser {
T__38=39, T__39=40, T__40=41, T__41=42, T__42=43, T__43=44, T__44=45,
T__45=46, T__46=47, T__47=48, T__48=49, T__49=50, T__50=51, T__51=52,
T__52=53, T__53=54, T__54=55, T__55=56, T__56=57, T__57=58, T__58=59,
- T__59=60, T__60=61, Kfor=62, Klet=63, Kwhere=64, Kgroup=65, Kby=66, Korder=67,
- Kreturn=68, Kif=69, Kin=70, Kas=71, Kat=72, Kallowing=73, Kempty=74, Kcount=75,
- Kstable=76, Kascending=77, Kdescending=78, Ksome=79, Kevery=80, Ksatisfies=81,
- Kcollation=82, Kgreatest=83, Kleast=84, Kswitch=85, Kcase=86, Ktry=87,
- Kcatch=88, Kdefault=89, Kthen=90, Kelse=91, Ktypeswitch=92, Kor=93, Kand=94,
- Knot=95, Kto=96, Kinstance=97, Kof=98, Kstatically=99, Kis=100, Ktreat=101,
- Kcast=102, Kcastable=103, Kversion=104, Kjsoniq=105, Kunordered=106, Ktrue=107,
- Kfalse=108, Ktype=109, Kdeclare=110, Kcontext=111, Kitem=112, Kvariable=113,
- STRING=114, ArgumentPlaceholder=115, NullLiteral=116, Literal=117, NumericLiteral=118,
- IntegerLiteral=119, DecimalLiteral=120, DoubleLiteral=121, WS=122, NCName=123,
- XQComment=124, ContentChar=125;
+ T__59=60, Kfor=61, Klet=62, Kwhere=63, Kgroup=64, Kby=65, Korder=66, Kreturn=67,
+ Kif=68, Kin=69, Kas=70, Kat=71, Kallowing=72, Kempty=73, Kcount=74, Kstable=75,
+ Kascending=76, Kdescending=77, Ksome=78, Kevery=79, Ksatisfies=80, Kcollation=81,
+ Kgreatest=82, Kleast=83, Kswitch=84, Kcase=85, Ktry=86, Kcatch=87, Kdefault=88,
+ Kthen=89, Kelse=90, Ktypeswitch=91, Kor=92, Kand=93, Knot=94, Kto=95,
+ Kinstance=96, Kof=97, Kstatically=98, Kis=99, Ktreat=100, Kcast=101, Kcastable=102,
+ Kversion=103, Kjsoniq=104, Kunordered=105, Ktrue=106, Kfalse=107, Ktype=108,
+ Kvalidate=109, Kannotate=110, Kdeclare=111, Kcontext=112, Kitem=113, Kvariable=114,
+ STRING=115, ArgumentPlaceholder=116, NullLiteral=117, Literal=118, NumericLiteral=119,
+ IntegerLiteral=120, DecimalLiteral=121, DoubleLiteral=122, WS=123, NCName=124,
+ XQComment=125, ContentChar=126;
public static final int
RULE_moduleAndThisIsIt = 0, RULE_module = 1, RULE_mainModule = 2, RULE_libraryModule = 3,
RULE_prolog = 4, RULE_setter = 5, RULE_namespaceDecl = 6, RULE_annotatedDecl = 7,
@@ -68,84 +68,75 @@ public class JsoniqParser extends Parser {
RULE_rangeExpr = 49, RULE_additiveExpr = 50, RULE_multiplicativeExpr = 51,
RULE_instanceOfExpr = 52, RULE_isStaticallyExpr = 53, RULE_treatExpr = 54,
RULE_castableExpr = 55, RULE_castExpr = 56, RULE_arrowExpr = 57, RULE_arrowFunctionSpecifier = 58,
- RULE_unaryExpr = 59, RULE_valueExpr = 60, RULE_validateExpr = 61, RULE_simpleMapExpr = 62,
- RULE_postFixExpr = 63, RULE_arrayLookup = 64, RULE_arrayUnboxing = 65,
- RULE_predicate = 66, RULE_objectLookup = 67, RULE_primaryExpr = 68, RULE_varRef = 69,
- RULE_parenthesizedExpr = 70, RULE_contextItemExpr = 71, RULE_orderedExpr = 72,
- RULE_unorderedExpr = 73, RULE_functionCall = 74, RULE_argumentList = 75,
- RULE_argument = 76, RULE_functionItemExpr = 77, RULE_namedFunctionRef = 78,
- RULE_inlineFunctionExpr = 79, RULE_sequenceType = 80, RULE_objectConstructor = 81,
- RULE_itemType = 82, RULE_functionTest = 83, RULE_anyFunctionTest = 84,
- RULE_typedFunctionTest = 85, RULE_singleType = 86, RULE_pairConstructor = 87,
- RULE_arrayConstructor = 88, RULE_uriLiteral = 89, RULE_stringLiteral = 90,
- RULE_keyWords = 91;
- private static String[] makeRuleNames() {
- return new String[] {
- "moduleAndThisIsIt", "module", "mainModule", "libraryModule", "prolog",
- "setter", "namespaceDecl", "annotatedDecl", "defaultCollationDecl", "orderingModeDecl",
- "emptyOrderDecl", "decimalFormatDecl", "qname", "dfPropertyName", "moduleImport",
- "varDecl", "contextItemDecl", "functionDecl", "typeDecl", "schemaLanguage",
- "paramList", "param", "expr", "exprSingle", "flowrExpr", "forClause",
- "forVar", "letClause", "letVar", "whereClause", "groupByClause", "groupByVar",
- "orderByClause", "orderByExpr", "countClause", "quantifiedExpr", "quantifiedExprVar",
- "switchExpr", "switchCaseClause", "typeSwitchExpr", "caseClause", "ifExpr",
- "tryCatchExpr", "catchClause", "orExpr", "andExpr", "notExpr", "comparisonExpr",
- "stringConcatExpr", "rangeExpr", "additiveExpr", "multiplicativeExpr",
- "instanceOfExpr", "isStaticallyExpr", "treatExpr", "castableExpr", "castExpr",
- "arrowExpr", "arrowFunctionSpecifier", "unaryExpr", "valueExpr", "validateExpr",
- "simpleMapExpr", "postFixExpr", "arrayLookup", "arrayUnboxing", "predicate",
- "objectLookup", "primaryExpr", "varRef", "parenthesizedExpr", "contextItemExpr",
- "orderedExpr", "unorderedExpr", "functionCall", "argumentList", "argument",
- "functionItemExpr", "namedFunctionRef", "inlineFunctionExpr", "sequenceType",
- "objectConstructor", "itemType", "functionTest", "anyFunctionTest", "typedFunctionTest",
- "singleType", "pairConstructor", "arrayConstructor", "uriLiteral", "stringLiteral",
- "keyWords"
- };
- }
- public static final String[] ruleNames = makeRuleNames();
-
- private static String[] makeLiteralNames() {
- return new String[] {
- null, "';'", "'module'", "'namespace'", "'='", "'ordering'", "'ordered'",
- "'decimal-format'", "':'", "'decimal-separator'", "'grouping-separator'",
- "'infinity'", "'minus-sign'", "'NaN'", "'percent'", "'per-mille'", "'zero-digit'",
- "'digit'", "'pattern-separator'", "'import'", "','", "':='", "'external'",
- "'function'", "'('", "')'", "'{'", "'}'", "'jsound'", "'compact'", "'verbose'",
- "'json'", "'schema'", "'$'", "'|'", "'*'", "'eq'", "'ne'", "'lt'", "'le'",
- "'gt'", "'ge'", "'!='", "'<'", "'<='", "'>'", "'>='", "'||'", "'+'",
- "'-'", "'div'", "'idiv'", "'mod'", "'validate'", "'!'", "'['", "']'",
- "'.'", "'$$'", "'#'", "'{|'", "'|}'", "'for'", "'let'", "'where'", "'group'",
- "'by'", "'order'", "'return'", "'if'", "'in'", "'as'", "'at'", "'allowing'",
- "'empty'", "'count'", "'stable'", "'ascending'", "'descending'", "'some'",
- "'every'", "'satisfies'", "'collation'", "'greatest'", "'least'", "'switch'",
- "'case'", "'try'", "'catch'", "'default'", "'then'", "'else'", "'typeswitch'",
- "'or'", "'and'", "'not'", "'to'", "'instance'", "'of'", "'statically'",
- "'is'", "'treat'", "'cast'", "'castable'", "'version'", "'jsoniq'", "'unordered'",
- "'true'", "'false'", "'type'", "'declare'", "'context'", "'item'", "'variable'",
- null, "'?'", "'null'"
- };
- }
- private static final String[] _LITERAL_NAMES = makeLiteralNames();
- private static String[] makeSymbolicNames() {
- return new String[] {
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, "Kfor", "Klet", "Kwhere", "Kgroup", "Kby", "Korder", "Kreturn",
- "Kif", "Kin", "Kas", "Kat", "Kallowing", "Kempty", "Kcount", "Kstable",
- "Kascending", "Kdescending", "Ksome", "Kevery", "Ksatisfies", "Kcollation",
- "Kgreatest", "Kleast", "Kswitch", "Kcase", "Ktry", "Kcatch", "Kdefault",
- "Kthen", "Kelse", "Ktypeswitch", "Kor", "Kand", "Knot", "Kto", "Kinstance",
- "Kof", "Kstatically", "Kis", "Ktreat", "Kcast", "Kcastable", "Kversion",
- "Kjsoniq", "Kunordered", "Ktrue", "Kfalse", "Ktype", "Kdeclare", "Kcontext",
- "Kitem", "Kvariable", "STRING", "ArgumentPlaceholder", "NullLiteral",
- "Literal", "NumericLiteral", "IntegerLiteral", "DecimalLiteral", "DoubleLiteral",
- "WS", "NCName", "XQComment", "ContentChar"
- };
- }
- private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
+ RULE_unaryExpr = 59, RULE_valueExpr = 60, RULE_validateExpr = 61, RULE_annotateExpr = 62,
+ RULE_simpleMapExpr = 63, RULE_postFixExpr = 64, RULE_arrayLookup = 65,
+ RULE_arrayUnboxing = 66, RULE_predicate = 67, RULE_objectLookup = 68,
+ RULE_primaryExpr = 69, RULE_varRef = 70, RULE_parenthesizedExpr = 71,
+ RULE_contextItemExpr = 72, RULE_orderedExpr = 73, RULE_unorderedExpr = 74,
+ RULE_functionCall = 75, RULE_argumentList = 76, RULE_argument = 77, RULE_functionItemExpr = 78,
+ RULE_namedFunctionRef = 79, RULE_inlineFunctionExpr = 80, RULE_sequenceType = 81,
+ RULE_objectConstructor = 82, RULE_itemType = 83, RULE_functionTest = 84,
+ RULE_anyFunctionTest = 85, RULE_typedFunctionTest = 86, RULE_singleType = 87,
+ RULE_pairConstructor = 88, RULE_arrayConstructor = 89, RULE_uriLiteral = 90,
+ RULE_stringLiteral = 91, RULE_keyWords = 92;
+ public static final String[] ruleNames = {
+ "moduleAndThisIsIt", "module", "mainModule", "libraryModule", "prolog",
+ "setter", "namespaceDecl", "annotatedDecl", "defaultCollationDecl", "orderingModeDecl",
+ "emptyOrderDecl", "decimalFormatDecl", "qname", "dfPropertyName", "moduleImport",
+ "varDecl", "contextItemDecl", "functionDecl", "typeDecl", "schemaLanguage",
+ "paramList", "param", "expr", "exprSingle", "flowrExpr", "forClause",
+ "forVar", "letClause", "letVar", "whereClause", "groupByClause", "groupByVar",
+ "orderByClause", "orderByExpr", "countClause", "quantifiedExpr", "quantifiedExprVar",
+ "switchExpr", "switchCaseClause", "typeSwitchExpr", "caseClause", "ifExpr",
+ "tryCatchExpr", "catchClause", "orExpr", "andExpr", "notExpr", "comparisonExpr",
+ "stringConcatExpr", "rangeExpr", "additiveExpr", "multiplicativeExpr",
+ "instanceOfExpr", "isStaticallyExpr", "treatExpr", "castableExpr", "castExpr",
+ "arrowExpr", "arrowFunctionSpecifier", "unaryExpr", "valueExpr", "validateExpr",
+ "annotateExpr", "simpleMapExpr", "postFixExpr", "arrayLookup", "arrayUnboxing",
+ "predicate", "objectLookup", "primaryExpr", "varRef", "parenthesizedExpr",
+ "contextItemExpr", "orderedExpr", "unorderedExpr", "functionCall", "argumentList",
+ "argument", "functionItemExpr", "namedFunctionRef", "inlineFunctionExpr",
+ "sequenceType", "objectConstructor", "itemType", "functionTest", "anyFunctionTest",
+ "typedFunctionTest", "singleType", "pairConstructor", "arrayConstructor",
+ "uriLiteral", "stringLiteral", "keyWords"
+ };
+
+ private static final String[] _LITERAL_NAMES = {
+ null, "';'", "'module'", "'namespace'", "'='", "'ordering'", "'ordered'",
+ "'decimal-format'", "':'", "'decimal-separator'", "'grouping-separator'",
+ "'infinity'", "'minus-sign'", "'NaN'", "'percent'", "'per-mille'", "'zero-digit'",
+ "'digit'", "'pattern-separator'", "'import'", "','", "':='", "'external'",
+ "'function'", "'('", "')'", "'{'", "'}'", "'jsound'", "'compact'", "'verbose'",
+ "'json'", "'schema'", "'$'", "'|'", "'*'", "'eq'", "'ne'", "'lt'", "'le'",
+ "'gt'", "'ge'", "'!='", "'<'", "'<='", "'>'", "'>='", "'||'", "'+'", "'-'",
+ "'div'", "'idiv'", "'mod'", "'!'", "'['", "']'", "'.'", "'$$'", "'#'",
+ "'{|'", "'|}'", "'for'", "'let'", "'where'", "'group'", "'by'", "'order'",
+ "'return'", "'if'", "'in'", "'as'", "'at'", "'allowing'", "'empty'", "'count'",
+ "'stable'", "'ascending'", "'descending'", "'some'", "'every'", "'satisfies'",
+ "'collation'", "'greatest'", "'least'", "'switch'", "'case'", "'try'",
+ "'catch'", "'default'", "'then'", "'else'", "'typeswitch'", "'or'", "'and'",
+ "'not'", "'to'", "'instance'", "'of'", "'statically'", "'is'", "'treat'",
+ "'cast'", "'castable'", "'version'", "'jsoniq'", "'unordered'", "'true'",
+ "'false'", "'type'", "'validate'", "'annotate'", "'declare'", "'context'",
+ "'item'", "'variable'", null, "'?'", "'null'"
+ };
+ private static final String[] _SYMBOLIC_NAMES = {
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, "Kfor", "Klet", "Kwhere", "Kgroup", "Kby", "Korder", "Kreturn",
+ "Kif", "Kin", "Kas", "Kat", "Kallowing", "Kempty", "Kcount", "Kstable",
+ "Kascending", "Kdescending", "Ksome", "Kevery", "Ksatisfies", "Kcollation",
+ "Kgreatest", "Kleast", "Kswitch", "Kcase", "Ktry", "Kcatch", "Kdefault",
+ "Kthen", "Kelse", "Ktypeswitch", "Kor", "Kand", "Knot", "Kto", "Kinstance",
+ "Kof", "Kstatically", "Kis", "Ktreat", "Kcast", "Kcastable", "Kversion",
+ "Kjsoniq", "Kunordered", "Ktrue", "Kfalse", "Ktype", "Kvalidate", "Kannotate",
+ "Kdeclare", "Kcontext", "Kitem", "Kvariable", "STRING", "ArgumentPlaceholder",
+ "NullLiteral", "Literal", "NumericLiteral", "IntegerLiteral", "DecimalLiteral",
+ "DoubleLiteral", "WS", "NCName", "XQComment", "ContentChar"
+ };
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
/**
@@ -195,7 +186,6 @@ public JsoniqParser(TokenStream input) {
super(input);
_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
}
-
public static class ModuleAndThisIsItContext extends ParserRuleContext {
public ModuleContext module() {
return getRuleContext(ModuleContext.class,0);
@@ -218,9 +208,9 @@ public final ModuleAndThisIsItContext moduleAndThisIsIt() throws RecognitionExce
try {
enterOuterAlt(_localctx, 1);
{
- setState(184);
+ setState(186);
module();
- setState(185);
+ setState(187);
match(EOF);
}
}
@@ -266,28 +256,28 @@ public final ModuleContext module() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(192);
+ setState(194);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
case 1:
{
- setState(187);
+ setState(189);
match(Kjsoniq);
- setState(188);
+ setState(190);
match(Kversion);
- setState(189);
+ setState(191);
((ModuleContext)_localctx).vers = stringLiteral();
- setState(190);
+ setState(192);
match(T__0);
}
break;
}
- setState(196);
+ setState(198);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__1:
{
- setState(194);
+ setState(196);
libraryModule();
}
break;
@@ -299,10 +289,9 @@ public final ModuleContext module() throws RecognitionException {
case T__32:
case T__47:
case T__48:
- case T__52:
- case T__54:
- case T__57:
- case T__59:
+ case T__53:
+ case T__56:
+ case T__58:
case Kfor:
case Klet:
case Kwhere:
@@ -351,6 +340,8 @@ public final ModuleContext module() throws RecognitionException {
case Ktrue:
case Kfalse:
case Ktype:
+ case Kvalidate:
+ case Kannotate:
case Kdeclare:
case Kcontext:
case Kitem:
@@ -360,7 +351,7 @@ public final ModuleContext module() throws RecognitionException {
case Literal:
case NCName:
{
- setState(195);
+ setState(197);
((ModuleContext)_localctx).main = mainModule();
}
break;
@@ -404,9 +395,9 @@ public final MainModuleContext mainModule() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(198);
+ setState(200);
prolog();
- setState(199);
+ setState(201);
expr();
}
}
@@ -446,19 +437,19 @@ public final LibraryModuleContext libraryModule() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(201);
+ setState(203);
match(T__1);
- setState(202);
+ setState(204);
match(T__2);
- setState(203);
+ setState(205);
match(NCName);
- setState(204);
+ setState(206);
match(T__3);
- setState(205);
+ setState(207);
uriLiteral();
- setState(206);
+ setState(208);
match(T__0);
- setState(207);
+ setState(209);
prolog();
}
}
@@ -516,59 +507,59 @@ public final PrologContext prolog() throws RecognitionException {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(218);
+ setState(220);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(212);
+ setState(214);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) {
case 1:
{
- setState(209);
+ setState(211);
setter();
}
break;
case 2:
{
- setState(210);
+ setState(212);
namespaceDecl();
}
break;
case 3:
{
- setState(211);
+ setState(213);
moduleImport();
}
break;
}
- setState(214);
+ setState(216);
match(T__0);
}
}
}
- setState(220);
+ setState(222);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
}
- setState(226);
+ setState(228);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,4,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(221);
+ setState(223);
annotatedDecl();
- setState(222);
+ setState(224);
match(T__0);
}
}
}
- setState(228);
+ setState(230);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,4,_ctx);
}
@@ -613,34 +604,34 @@ public final SetterContext setter() throws RecognitionException {
SetterContext _localctx = new SetterContext(_ctx, getState());
enterRule(_localctx, 10, RULE_setter);
try {
- setState(233);
+ setState(235);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(229);
+ setState(231);
defaultCollationDecl();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(230);
+ setState(232);
orderingModeDecl();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(231);
+ setState(233);
emptyOrderDecl();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(232);
+ setState(234);
decimalFormatDecl();
}
break;
@@ -680,15 +671,15 @@ public final NamespaceDeclContext namespaceDecl() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(235);
+ setState(237);
match(Kdeclare);
- setState(236);
+ setState(238);
match(T__2);
- setState(237);
+ setState(239);
match(NCName);
- setState(238);
+ setState(240);
match(T__3);
- setState(239);
+ setState(241);
uriLiteral();
}
}
@@ -731,34 +722,34 @@ public final AnnotatedDeclContext annotatedDecl() throws RecognitionException {
AnnotatedDeclContext _localctx = new AnnotatedDeclContext(_ctx, getState());
enterRule(_localctx, 14, RULE_annotatedDecl);
try {
- setState(245);
+ setState(247);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(241);
+ setState(243);
functionDecl();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(242);
+ setState(244);
varDecl();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(243);
+ setState(245);
typeDecl();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(244);
+ setState(246);
contextItemDecl();
}
break;
@@ -799,13 +790,13 @@ public final DefaultCollationDeclContext defaultCollationDecl() throws Recogniti
try {
enterOuterAlt(_localctx, 1);
{
- setState(247);
+ setState(249);
match(Kdeclare);
- setState(248);
+ setState(250);
match(Kdefault);
- setState(249);
+ setState(251);
match(Kcollation);
- setState(250);
+ setState(252);
uriLiteral();
}
}
@@ -822,7 +813,6 @@ public final DefaultCollationDeclContext defaultCollationDecl() throws Recogniti
public static class OrderingModeDeclContext extends ParserRuleContext {
public TerminalNode Kdeclare() { return getToken(JsoniqParser.Kdeclare, 0); }
- public TerminalNode Kunordered() { return getToken(JsoniqParser.Kunordered, 0); }
public OrderingModeDeclContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -841,11 +831,11 @@ public final OrderingModeDeclContext orderingModeDecl() throws RecognitionExcept
try {
enterOuterAlt(_localctx, 1);
{
- setState(252);
+ setState(254);
match(Kdeclare);
- setState(253);
+ setState(255);
match(T__4);
- setState(254);
+ setState(256);
_la = _input.LA(1);
if ( !(_la==T__5 || _la==Kunordered) ) {
_errHandler.recoverInline(this);
@@ -872,7 +862,6 @@ public static class EmptyOrderDeclContext extends ParserRuleContext {
public Token emptySequenceOrder;
public TerminalNode Kdeclare() { return getToken(JsoniqParser.Kdeclare, 0); }
public TerminalNode Kdefault() { return getToken(JsoniqParser.Kdefault, 0); }
- public TerminalNode Korder() { return getToken(JsoniqParser.Korder, 0); }
public TerminalNode Kempty() { return getToken(JsoniqParser.Kempty, 0); }
public TerminalNode Kgreatest() { return getToken(JsoniqParser.Kgreatest, 0); }
public TerminalNode Kleast() { return getToken(JsoniqParser.Kleast, 0); }
@@ -894,16 +883,16 @@ public final EmptyOrderDeclContext emptyOrderDecl() throws RecognitionException
try {
enterOuterAlt(_localctx, 1);
{
- setState(256);
+ setState(258);
match(Kdeclare);
- setState(257);
+ setState(259);
match(Kdefault);
- setState(258);
+ setState(260);
match(Korder);
- setState(259);
+ setState(261);
match(Kempty);
{
- setState(260);
+ setState(262);
((EmptyOrderDeclContext)_localctx).emptySequenceOrder = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==Kgreatest || _la==Kleast) ) {
@@ -964,17 +953,17 @@ public final DecimalFormatDeclContext decimalFormatDecl() throws RecognitionExce
try {
enterOuterAlt(_localctx, 1);
{
- setState(262);
+ setState(264);
match(Kdeclare);
- setState(267);
+ setState(269);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__6:
{
{
- setState(263);
+ setState(265);
match(T__6);
- setState(264);
+ setState(266);
qname();
}
}
@@ -982,9 +971,9 @@ public final DecimalFormatDeclContext decimalFormatDecl() throws RecognitionExce
case Kdefault:
{
{
- setState(265);
+ setState(267);
match(Kdefault);
- setState(266);
+ setState(268);
match(T__6);
}
}
@@ -992,21 +981,21 @@ public final DecimalFormatDeclContext decimalFormatDecl() throws RecognitionExce
default:
throw new NoViableAltException(this);
}
- setState(275);
+ setState(277);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__8) | (1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << T__14) | (1L << T__15) | (1L << T__16) | (1L << T__17))) != 0)) {
{
{
- setState(269);
+ setState(271);
dfPropertyName();
- setState(270);
+ setState(272);
match(T__3);
- setState(271);
+ setState(273);
stringLiteral();
}
}
- setState(277);
+ setState(279);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -1055,17 +1044,17 @@ public final QnameContext qname() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(283);
+ setState(285);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
case 1:
{
- setState(280);
+ setState(282);
_errHandler.sync(this);
switch (_input.LA(1)) {
case NCName:
{
- setState(278);
+ setState(280);
((QnameContext)_localctx).ns = match(NCName);
}
break;
@@ -1117,30 +1106,32 @@ public final QnameContext qname() throws RecognitionException {
case Ktrue:
case Kfalse:
case Ktype:
+ case Kvalidate:
+ case Kannotate:
case Kdeclare:
case Kcontext:
case Kitem:
case Kvariable:
case NullLiteral:
{
- setState(279);
+ setState(281);
((QnameContext)_localctx).nskw = keyWords();
}
break;
default:
throw new NoViableAltException(this);
}
- setState(282);
+ setState(284);
match(T__7);
}
break;
}
- setState(287);
+ setState(289);
_errHandler.sync(this);
switch (_input.LA(1)) {
case NCName:
{
- setState(285);
+ setState(287);
((QnameContext)_localctx).local_name = match(NCName);
}
break;
@@ -1192,13 +1183,15 @@ public final QnameContext qname() throws RecognitionException {
case Ktrue:
case Kfalse:
case Ktype:
+ case Kvalidate:
+ case Kannotate:
case Kdeclare:
case Kcontext:
case Kitem:
case Kvariable:
case NullLiteral:
{
- setState(286);
+ setState(288);
((QnameContext)_localctx).local_namekw = keyWords();
}
break;
@@ -1237,7 +1230,7 @@ public final DfPropertyNameContext dfPropertyName() throws RecognitionException
try {
enterOuterAlt(_localctx, 1);
{
- setState(289);
+ setState(291);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__8) | (1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << T__14) | (1L << T__15) | (1L << T__16) | (1L << T__17))) != 0)) ) {
_errHandler.recoverInline(this);
@@ -1289,48 +1282,48 @@ public final ModuleImportContext moduleImport() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(291);
+ setState(293);
match(T__18);
- setState(292);
+ setState(294);
match(T__1);
- setState(296);
+ setState(298);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__2) {
{
- setState(293);
+ setState(295);
match(T__2);
- setState(294);
+ setState(296);
((ModuleImportContext)_localctx).prefix = match(NCName);
- setState(295);
+ setState(297);
match(T__3);
}
}
- setState(298);
+ setState(300);
((ModuleImportContext)_localctx).targetNamespace = uriLiteral();
- setState(308);
+ setState(310);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kat) {
{
- setState(299);
+ setState(301);
match(Kat);
- setState(300);
+ setState(302);
uriLiteral();
- setState(305);
+ setState(307);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__19) {
{
{
- setState(301);
+ setState(303);
match(T__19);
- setState(302);
+ setState(304);
uriLiteral();
}
}
- setState(307);
+ setState(309);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -1382,33 +1375,33 @@ public final VarDeclContext varDecl() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(310);
+ setState(312);
match(Kdeclare);
- setState(311);
+ setState(313);
match(Kvariable);
- setState(312);
+ setState(314);
varRef();
- setState(315);
+ setState(317);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kas) {
{
- setState(313);
+ setState(315);
match(Kas);
- setState(314);
+ setState(316);
sequenceType();
}
}
- setState(324);
+ setState(326);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__20:
{
{
- setState(317);
+ setState(319);
match(T__20);
- setState(318);
+ setState(320);
exprSingle();
}
}
@@ -1416,16 +1409,16 @@ public final VarDeclContext varDecl() throws RecognitionException {
case T__21:
{
{
- setState(319);
+ setState(321);
((VarDeclContext)_localctx).external = match(T__21);
- setState(322);
+ setState(324);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__20) {
{
- setState(320);
+ setState(322);
match(T__20);
- setState(321);
+ setState(323);
exprSingle();
}
}
@@ -1479,33 +1472,33 @@ public final ContextItemDeclContext contextItemDecl() throws RecognitionExceptio
try {
enterOuterAlt(_localctx, 1);
{
- setState(326);
+ setState(328);
match(Kdeclare);
- setState(327);
+ setState(329);
match(Kcontext);
- setState(328);
+ setState(330);
match(Kitem);
- setState(331);
+ setState(333);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kas) {
{
- setState(329);
+ setState(331);
match(Kas);
- setState(330);
+ setState(332);
sequenceType();
}
}
- setState(340);
+ setState(342);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__20:
{
{
- setState(333);
+ setState(335);
match(T__20);
- setState(334);
+ setState(336);
exprSingle();
}
}
@@ -1513,16 +1506,16 @@ public final ContextItemDeclContext contextItemDecl() throws RecognitionExceptio
case T__21:
{
{
- setState(335);
+ setState(337);
((ContextItemDeclContext)_localctx).external = match(T__21);
- setState(338);
+ setState(340);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__20) {
{
- setState(336);
+ setState(338);
match(T__20);
- setState(337);
+ setState(339);
exprSingle();
}
}
@@ -1582,62 +1575,62 @@ public final FunctionDeclContext functionDecl() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(342);
+ setState(344);
match(Kdeclare);
- setState(343);
+ setState(345);
match(T__22);
- setState(344);
+ setState(346);
((FunctionDeclContext)_localctx).fn_name = qname();
- setState(345);
- match(T__23);
setState(347);
+ match(T__23);
+ setState(349);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__32) {
{
- setState(346);
+ setState(348);
paramList();
}
}
- setState(349);
+ setState(351);
match(T__24);
- setState(352);
+ setState(354);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kas) {
{
- setState(350);
+ setState(352);
match(Kas);
- setState(351);
+ setState(353);
((FunctionDeclContext)_localctx).return_type = sequenceType();
}
}
- setState(360);
+ setState(362);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__25:
{
- setState(354);
- match(T__25);
setState(356);
+ match(T__25);
+ setState(358);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__5) | (1L << T__22) | (1L << T__23) | (1L << T__25) | (1L << T__32) | (1L << T__47) | (1L << T__48) | (1L << T__52) | (1L << T__54) | (1L << T__57) | (1L << T__59) | (1L << Kfor) | (1L << Klet))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Kwhere - 64)) | (1L << (Kgroup - 64)) | (1L << (Kby - 64)) | (1L << (Korder - 64)) | (1L << (Kreturn - 64)) | (1L << (Kif - 64)) | (1L << (Kin - 64)) | (1L << (Kas - 64)) | (1L << (Kat - 64)) | (1L << (Kallowing - 64)) | (1L << (Kempty - 64)) | (1L << (Kcount - 64)) | (1L << (Kstable - 64)) | (1L << (Kascending - 64)) | (1L << (Kdescending - 64)) | (1L << (Ksome - 64)) | (1L << (Kevery - 64)) | (1L << (Ksatisfies - 64)) | (1L << (Kcollation - 64)) | (1L << (Kgreatest - 64)) | (1L << (Kleast - 64)) | (1L << (Kswitch - 64)) | (1L << (Kcase - 64)) | (1L << (Ktry - 64)) | (1L << (Kcatch - 64)) | (1L << (Kdefault - 64)) | (1L << (Kthen - 64)) | (1L << (Kelse - 64)) | (1L << (Ktypeswitch - 64)) | (1L << (Kor - 64)) | (1L << (Kand - 64)) | (1L << (Knot - 64)) | (1L << (Kto - 64)) | (1L << (Kinstance - 64)) | (1L << (Kof - 64)) | (1L << (Kstatically - 64)) | (1L << (Kis - 64)) | (1L << (Ktreat - 64)) | (1L << (Kcast - 64)) | (1L << (Kcastable - 64)) | (1L << (Kversion - 64)) | (1L << (Kjsoniq - 64)) | (1L << (Kunordered - 64)) | (1L << (Ktrue - 64)) | (1L << (Kfalse - 64)) | (1L << (Ktype - 64)) | (1L << (Kdeclare - 64)) | (1L << (Kcontext - 64)) | (1L << (Kitem - 64)) | (1L << (Kvariable - 64)) | (1L << (STRING - 64)) | (1L << (NullLiteral - 64)) | (1L << (Literal - 64)) | (1L << (NCName - 64)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__5) | (1L << T__22) | (1L << T__23) | (1L << T__25) | (1L << T__32) | (1L << T__47) | (1L << T__48) | (1L << T__53) | (1L << T__56) | (1L << T__58) | (1L << Kfor) | (1L << Klet) | (1L << Kwhere))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Kgroup - 64)) | (1L << (Kby - 64)) | (1L << (Korder - 64)) | (1L << (Kreturn - 64)) | (1L << (Kif - 64)) | (1L << (Kin - 64)) | (1L << (Kas - 64)) | (1L << (Kat - 64)) | (1L << (Kallowing - 64)) | (1L << (Kempty - 64)) | (1L << (Kcount - 64)) | (1L << (Kstable - 64)) | (1L << (Kascending - 64)) | (1L << (Kdescending - 64)) | (1L << (Ksome - 64)) | (1L << (Kevery - 64)) | (1L << (Ksatisfies - 64)) | (1L << (Kcollation - 64)) | (1L << (Kgreatest - 64)) | (1L << (Kleast - 64)) | (1L << (Kswitch - 64)) | (1L << (Kcase - 64)) | (1L << (Ktry - 64)) | (1L << (Kcatch - 64)) | (1L << (Kdefault - 64)) | (1L << (Kthen - 64)) | (1L << (Kelse - 64)) | (1L << (Ktypeswitch - 64)) | (1L << (Kor - 64)) | (1L << (Kand - 64)) | (1L << (Knot - 64)) | (1L << (Kto - 64)) | (1L << (Kinstance - 64)) | (1L << (Kof - 64)) | (1L << (Kstatically - 64)) | (1L << (Kis - 64)) | (1L << (Ktreat - 64)) | (1L << (Kcast - 64)) | (1L << (Kcastable - 64)) | (1L << (Kversion - 64)) | (1L << (Kjsoniq - 64)) | (1L << (Kunordered - 64)) | (1L << (Ktrue - 64)) | (1L << (Kfalse - 64)) | (1L << (Ktype - 64)) | (1L << (Kvalidate - 64)) | (1L << (Kannotate - 64)) | (1L << (Kdeclare - 64)) | (1L << (Kcontext - 64)) | (1L << (Kitem - 64)) | (1L << (Kvariable - 64)) | (1L << (STRING - 64)) | (1L << (NullLiteral - 64)) | (1L << (Literal - 64)) | (1L << (NCName - 64)))) != 0)) {
{
- setState(355);
+ setState(357);
((FunctionDeclContext)_localctx).fn_body = expr();
}
}
- setState(358);
+ setState(360);
match(T__26);
}
break;
case T__21:
{
- setState(359);
+ setState(361);
match(T__21);
}
break;
@@ -1663,7 +1656,6 @@ public static class TypeDeclContext extends ParserRuleContext {
public ExprSingleContext type_definition;
public TerminalNode Kdeclare() { return getToken(JsoniqParser.Kdeclare, 0); }
public TerminalNode Ktype() { return getToken(JsoniqParser.Ktype, 0); }
- public TerminalNode Kas() { return getToken(JsoniqParser.Kas, 0); }
public QnameContext qname() {
return getRuleContext(QnameContext.class,0);
}
@@ -1691,25 +1683,25 @@ public final TypeDeclContext typeDecl() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(362);
+ setState(364);
match(Kdeclare);
- setState(363);
+ setState(365);
match(Ktype);
- setState(364);
+ setState(366);
((TypeDeclContext)_localctx).type_name = qname();
- setState(365);
- match(Kas);
setState(367);
+ match(Kas);
+ setState(369);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__27 || _la==T__30) {
{
- setState(366);
+ setState(368);
((TypeDeclContext)_localctx).schema = schemaLanguage();
}
}
- setState(369);
+ setState(371);
((TypeDeclContext)_localctx).type_definition = exprSingle();
}
}
@@ -1740,33 +1732,33 @@ public final SchemaLanguageContext schemaLanguage() throws RecognitionException
SchemaLanguageContext _localctx = new SchemaLanguageContext(_ctx, getState());
enterRule(_localctx, 38, RULE_schemaLanguage);
try {
- setState(377);
+ setState(379);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(371);
+ setState(373);
match(T__27);
- setState(372);
+ setState(374);
match(T__28);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(373);
+ setState(375);
match(T__27);
- setState(374);
+ setState(376);
match(T__29);
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(375);
+ setState(377);
match(T__30);
- setState(376);
+ setState(378);
match(T__31);
}
break;
@@ -1808,21 +1800,21 @@ public final ParamListContext paramList() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(379);
+ setState(381);
param();
- setState(384);
+ setState(386);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__19) {
{
{
- setState(380);
+ setState(382);
match(T__19);
- setState(381);
+ setState(383);
param();
}
}
- setState(386);
+ setState(388);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -1865,18 +1857,18 @@ public final ParamContext param() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(387);
+ setState(389);
match(T__32);
- setState(388);
+ setState(390);
qname();
- setState(391);
+ setState(393);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kas) {
{
- setState(389);
+ setState(391);
match(Kas);
- setState(390);
+ setState(392);
sequenceType();
}
}
@@ -1919,21 +1911,21 @@ public final ExprContext expr() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(393);
+ setState(395);
exprSingle();
- setState(398);
+ setState(400);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__19) {
{
{
- setState(394);
+ setState(396);
match(T__19);
- setState(395);
+ setState(397);
exprSingle();
}
}
- setState(400);
+ setState(402);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -1987,55 +1979,55 @@ public final ExprSingleContext exprSingle() throws RecognitionException {
ExprSingleContext _localctx = new ExprSingleContext(_ctx, getState());
enterRule(_localctx, 46, RULE_exprSingle);
try {
- setState(408);
+ setState(410);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(401);
+ setState(403);
flowrExpr();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(402);
+ setState(404);
quantifiedExpr();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(403);
+ setState(405);
switchExpr();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(404);
+ setState(406);
typeSwitchExpr();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(405);
+ setState(407);
ifExpr();
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
- setState(406);
+ setState(408);
tryCatchExpr();
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
- setState(407);
+ setState(409);
orExpr();
}
break;
@@ -2114,66 +2106,66 @@ public final FlowrExprContext flowrExpr() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(412);
+ setState(414);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Kfor:
{
- setState(410);
+ setState(412);
((FlowrExprContext)_localctx).start_for = forClause();
}
break;
case Klet:
{
- setState(411);
+ setState(413);
((FlowrExprContext)_localctx).start_let = letClause();
}
break;
default:
throw new NoViableAltException(this);
}
- setState(422);
+ setState(424);
_errHandler.sync(this);
_la = _input.LA(1);
- while (((((_la - 62)) & ~0x3f) == 0 && ((1L << (_la - 62)) & ((1L << (Kfor - 62)) | (1L << (Klet - 62)) | (1L << (Kwhere - 62)) | (1L << (Kgroup - 62)) | (1L << (Korder - 62)) | (1L << (Kcount - 62)) | (1L << (Kstable - 62)))) != 0)) {
+ while (((((_la - 61)) & ~0x3f) == 0 && ((1L << (_la - 61)) & ((1L << (Kfor - 61)) | (1L << (Klet - 61)) | (1L << (Kwhere - 61)) | (1L << (Kgroup - 61)) | (1L << (Korder - 61)) | (1L << (Kcount - 61)) | (1L << (Kstable - 61)))) != 0)) {
{
- setState(420);
+ setState(422);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Kfor:
{
- setState(414);
+ setState(416);
forClause();
}
break;
case Kwhere:
{
- setState(415);
+ setState(417);
whereClause();
}
break;
case Klet:
{
- setState(416);
+ setState(418);
letClause();
}
break;
case Kgroup:
{
- setState(417);
+ setState(419);
groupByClause();
}
break;
case Korder:
case Kstable:
{
- setState(418);
+ setState(420);
orderByClause();
}
break;
case Kcount:
{
- setState(419);
+ setState(421);
countClause();
}
break;
@@ -2181,13 +2173,13 @@ public final FlowrExprContext flowrExpr() throws RecognitionException {
throw new NoViableAltException(this);
}
}
- setState(424);
+ setState(426);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(425);
+ setState(427);
match(Kreturn);
- setState(426);
+ setState(428);
((FlowrExprContext)_localctx).return_expr = exprSingle();
}
}
@@ -2230,25 +2222,25 @@ public final ForClauseContext forClause() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(428);
+ setState(430);
match(Kfor);
- setState(429);
+ setState(431);
((ForClauseContext)_localctx).forVar = forVar();
((ForClauseContext)_localctx).vars.add(((ForClauseContext)_localctx).forVar);
- setState(434);
+ setState(436);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__19) {
{
{
- setState(430);
+ setState(432);
match(T__19);
- setState(431);
+ setState(433);
((ForClauseContext)_localctx).forVar = forVar();
((ForClauseContext)_localctx).vars.add(((ForClauseContext)_localctx).forVar);
}
}
- setState(436);
+ setState(438);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -2306,47 +2298,47 @@ public final ForVarContext forVar() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(437);
+ setState(439);
((ForVarContext)_localctx).var_ref = varRef();
- setState(440);
+ setState(442);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kas) {
{
- setState(438);
+ setState(440);
match(Kas);
- setState(439);
+ setState(441);
((ForVarContext)_localctx).seq = sequenceType();
}
}
- setState(444);
+ setState(446);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kallowing) {
{
- setState(442);
+ setState(444);
((ForVarContext)_localctx).flag = match(Kallowing);
- setState(443);
+ setState(445);
match(Kempty);
}
}
- setState(448);
+ setState(450);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kat) {
{
- setState(446);
+ setState(448);
match(Kat);
- setState(447);
+ setState(449);
((ForVarContext)_localctx).at = varRef();
}
}
- setState(450);
+ setState(452);
match(Kin);
- setState(451);
+ setState(453);
((ForVarContext)_localctx).ex = exprSingle();
}
}
@@ -2389,25 +2381,25 @@ public final LetClauseContext letClause() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(453);
+ setState(455);
match(Klet);
- setState(454);
+ setState(456);
((LetClauseContext)_localctx).letVar = letVar();
((LetClauseContext)_localctx).vars.add(((LetClauseContext)_localctx).letVar);
- setState(459);
+ setState(461);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__19) {
{
{
- setState(455);
+ setState(457);
match(T__19);
- setState(456);
+ setState(458);
((LetClauseContext)_localctx).letVar = letVar();
((LetClauseContext)_localctx).vars.add(((LetClauseContext)_localctx).letVar);
}
}
- setState(461);
+ setState(463);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -2456,23 +2448,23 @@ public final LetVarContext letVar() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(462);
+ setState(464);
((LetVarContext)_localctx).var_ref = varRef();
- setState(465);
+ setState(467);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kas) {
{
- setState(463);
+ setState(465);
match(Kas);
- setState(464);
+ setState(466);
((LetVarContext)_localctx).seq = sequenceType();
}
}
- setState(467);
+ setState(469);
match(T__20);
- setState(468);
+ setState(470);
((LetVarContext)_localctx).ex = exprSingle();
}
}
@@ -2509,9 +2501,9 @@ public final WhereClauseContext whereClause() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(470);
+ setState(472);
match(Kwhere);
- setState(471);
+ setState(473);
exprSingle();
}
}
@@ -2555,27 +2547,27 @@ public final GroupByClauseContext groupByClause() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(473);
+ setState(475);
match(Kgroup);
- setState(474);
+ setState(476);
match(Kby);
- setState(475);
+ setState(477);
((GroupByClauseContext)_localctx).groupByVar = groupByVar();
((GroupByClauseContext)_localctx).vars.add(((GroupByClauseContext)_localctx).groupByVar);
- setState(480);
+ setState(482);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__19) {
{
{
- setState(476);
+ setState(478);
match(T__19);
- setState(477);
+ setState(479);
((GroupByClauseContext)_localctx).groupByVar = groupByVar();
((GroupByClauseContext)_localctx).vars.add(((GroupByClauseContext)_localctx).groupByVar);
}
}
- setState(482);
+ setState(484);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -2630,40 +2622,40 @@ public final GroupByVarContext groupByVar() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(483);
+ setState(485);
((GroupByVarContext)_localctx).var_ref = varRef();
- setState(490);
+ setState(492);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__20 || _la==Kas) {
{
- setState(486);
+ setState(488);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kas) {
{
- setState(484);
+ setState(486);
match(Kas);
- setState(485);
+ setState(487);
((GroupByVarContext)_localctx).seq = sequenceType();
}
}
- setState(488);
+ setState(490);
((GroupByVarContext)_localctx).decl = match(T__20);
- setState(489);
+ setState(491);
((GroupByVarContext)_localctx).ex = exprSingle();
}
}
- setState(494);
+ setState(496);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kcollation) {
{
- setState(492);
+ setState(494);
match(Kcollation);
- setState(493);
+ setState(495);
((GroupByVarContext)_localctx).uri = uriLiteral();
}
}
@@ -2710,15 +2702,15 @@ public final OrderByClauseContext orderByClause() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(501);
+ setState(503);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Korder:
{
{
- setState(496);
+ setState(498);
match(Korder);
- setState(497);
+ setState(499);
match(Kby);
}
}
@@ -2726,11 +2718,11 @@ public final OrderByClauseContext orderByClause() throws RecognitionException {
case Kstable:
{
{
- setState(498);
+ setState(500);
((OrderByClauseContext)_localctx).stb = match(Kstable);
- setState(499);
+ setState(501);
match(Korder);
- setState(500);
+ setState(502);
match(Kby);
}
}
@@ -2738,21 +2730,21 @@ public final OrderByClauseContext orderByClause() throws RecognitionException {
default:
throw new NoViableAltException(this);
}
- setState(503);
+ setState(505);
orderByExpr();
- setState(508);
+ setState(510);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__19) {
{
{
- setState(504);
+ setState(506);
match(T__19);
- setState(505);
+ setState(507);
orderByExpr();
}
}
- setState(510);
+ setState(512);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -2805,20 +2797,20 @@ public final OrderByExprContext orderByExpr() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(511);
+ setState(513);
((OrderByExprContext)_localctx).ex = exprSingle();
- setState(514);
+ setState(516);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Kascending:
{
- setState(512);
+ setState(514);
match(Kascending);
}
break;
case Kdescending:
{
- setState(513);
+ setState(515);
((OrderByExprContext)_localctx).desc = match(Kdescending);
}
break;
@@ -2837,25 +2829,25 @@ public final OrderByExprContext orderByExpr() throws RecognitionException {
default:
break;
}
- setState(521);
+ setState(523);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kempty) {
{
- setState(516);
+ setState(518);
match(Kempty);
- setState(519);
+ setState(521);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Kgreatest:
{
- setState(517);
+ setState(519);
((OrderByExprContext)_localctx).gr = match(Kgreatest);
}
break;
case Kleast:
{
- setState(518);
+ setState(520);
((OrderByExprContext)_localctx).ls = match(Kleast);
}
break;
@@ -2865,14 +2857,14 @@ public final OrderByExprContext orderByExpr() throws RecognitionException {
}
}
- setState(525);
+ setState(527);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kcollation) {
{
- setState(523);
+ setState(525);
match(Kcollation);
- setState(524);
+ setState(526);
((OrderByExprContext)_localctx).uril = uriLiteral();
}
}
@@ -2912,9 +2904,9 @@ public final CountClauseContext countClause() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(527);
+ setState(529);
match(Kcount);
- setState(528);
+ setState(530);
varRef();
}
}
@@ -2964,47 +2956,47 @@ public final QuantifiedExprContext quantifiedExpr() throws RecognitionException
try {
enterOuterAlt(_localctx, 1);
{
- setState(532);
+ setState(534);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Ksome:
{
- setState(530);
+ setState(532);
((QuantifiedExprContext)_localctx).so = match(Ksome);
}
break;
case Kevery:
{
- setState(531);
+ setState(533);
((QuantifiedExprContext)_localctx).ev = match(Kevery);
}
break;
default:
throw new NoViableAltException(this);
}
- setState(534);
+ setState(536);
((QuantifiedExprContext)_localctx).quantifiedExprVar = quantifiedExprVar();
((QuantifiedExprContext)_localctx).vars.add(((QuantifiedExprContext)_localctx).quantifiedExprVar);
- setState(539);
+ setState(541);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__19) {
{
{
- setState(535);
+ setState(537);
match(T__19);
- setState(536);
+ setState(538);
((QuantifiedExprContext)_localctx).quantifiedExprVar = quantifiedExprVar();
((QuantifiedExprContext)_localctx).vars.add(((QuantifiedExprContext)_localctx).quantifiedExprVar);
}
}
- setState(541);
+ setState(543);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(542);
+ setState(544);
match(Ksatisfies);
- setState(543);
+ setState(545);
exprSingle();
}
}
@@ -3049,23 +3041,23 @@ public final QuantifiedExprVarContext quantifiedExprVar() throws RecognitionExce
try {
enterOuterAlt(_localctx, 1);
{
- setState(545);
+ setState(547);
varRef();
- setState(548);
+ setState(550);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kas) {
{
- setState(546);
+ setState(548);
match(Kas);
- setState(547);
+ setState(549);
sequenceType();
}
}
- setState(550);
+ setState(552);
match(Kin);
- setState(551);
+ setState(553);
exprSingle();
}
}
@@ -3118,34 +3110,34 @@ public final SwitchExprContext switchExpr() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(553);
+ setState(555);
match(Kswitch);
- setState(554);
+ setState(556);
match(T__23);
- setState(555);
+ setState(557);
((SwitchExprContext)_localctx).cond = expr();
- setState(556);
+ setState(558);
match(T__24);
- setState(558);
+ setState(560);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(557);
+ setState(559);
((SwitchExprContext)_localctx).switchCaseClause = switchCaseClause();
((SwitchExprContext)_localctx).cases.add(((SwitchExprContext)_localctx).switchCaseClause);
}
}
- setState(560);
+ setState(562);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( _la==Kcase );
- setState(562);
+ setState(564);
match(Kdefault);
- setState(563);
+ setState(565);
match(Kreturn);
- setState(564);
+ setState(566);
((SwitchExprContext)_localctx).def = exprSingle();
}
}
@@ -3193,26 +3185,26 @@ public final SwitchCaseClauseContext switchCaseClause() throws RecognitionExcept
try {
enterOuterAlt(_localctx, 1);
{
- setState(568);
+ setState(570);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(566);
+ setState(568);
match(Kcase);
- setState(567);
+ setState(569);
((SwitchCaseClauseContext)_localctx).exprSingle = exprSingle();
((SwitchCaseClauseContext)_localctx).cond.add(((SwitchCaseClauseContext)_localctx).exprSingle);
}
}
- setState(570);
+ setState(572);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( _la==Kcase );
- setState(572);
+ setState(574);
match(Kreturn);
- setState(573);
+ setState(575);
((SwitchCaseClauseContext)_localctx).ret = exprSingle();
}
}
@@ -3269,44 +3261,44 @@ public final TypeSwitchExprContext typeSwitchExpr() throws RecognitionException
try {
enterOuterAlt(_localctx, 1);
{
- setState(575);
+ setState(577);
match(Ktypeswitch);
- setState(576);
+ setState(578);
match(T__23);
- setState(577);
+ setState(579);
((TypeSwitchExprContext)_localctx).cond = expr();
- setState(578);
+ setState(580);
match(T__24);
- setState(580);
+ setState(582);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(579);
+ setState(581);
((TypeSwitchExprContext)_localctx).caseClause = caseClause();
((TypeSwitchExprContext)_localctx).cses.add(((TypeSwitchExprContext)_localctx).caseClause);
}
}
- setState(582);
+ setState(584);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( _la==Kcase );
- setState(584);
- match(Kdefault);
setState(586);
+ match(Kdefault);
+ setState(588);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__32) {
{
- setState(585);
+ setState(587);
((TypeSwitchExprContext)_localctx).var_ref = varRef();
}
}
- setState(588);
+ setState(590);
match(Kreturn);
- setState(589);
+ setState(591);
((TypeSwitchExprContext)_localctx).def = exprSingle();
}
}
@@ -3359,43 +3351,43 @@ public final CaseClauseContext caseClause() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(591);
+ setState(593);
match(Kcase);
- setState(595);
+ setState(597);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__32) {
{
- setState(592);
+ setState(594);
((CaseClauseContext)_localctx).var_ref = varRef();
- setState(593);
+ setState(595);
match(Kas);
}
}
- setState(597);
+ setState(599);
((CaseClauseContext)_localctx).sequenceType = sequenceType();
((CaseClauseContext)_localctx).union.add(((CaseClauseContext)_localctx).sequenceType);
- setState(602);
+ setState(604);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__33) {
{
{
- setState(598);
+ setState(600);
match(T__33);
- setState(599);
+ setState(601);
((CaseClauseContext)_localctx).sequenceType = sequenceType();
((CaseClauseContext)_localctx).union.add(((CaseClauseContext)_localctx).sequenceType);
}
}
- setState(604);
+ setState(606);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(605);
+ setState(607);
match(Kreturn);
- setState(606);
+ setState(608);
((CaseClauseContext)_localctx).ret = exprSingle();
}
}
@@ -3443,21 +3435,21 @@ public final IfExprContext ifExpr() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(608);
+ setState(610);
match(Kif);
- setState(609);
+ setState(611);
match(T__23);
- setState(610);
+ setState(612);
((IfExprContext)_localctx).test_condition = expr();
- setState(611);
+ setState(613);
match(T__24);
- setState(612);
+ setState(614);
match(Kthen);
- setState(613);
+ setState(615);
((IfExprContext)_localctx).branch = exprSingle();
- setState(614);
+ setState(616);
match(Kelse);
- setState(615);
+ setState(617);
((IfExprContext)_localctx).else_branch = exprSingle();
}
}
@@ -3504,15 +3496,15 @@ public final TryCatchExprContext tryCatchExpr() throws RecognitionException {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(617);
+ setState(619);
match(Ktry);
- setState(618);
+ setState(620);
match(T__25);
- setState(619);
+ setState(621);
((TryCatchExprContext)_localctx).try_expression = expr();
- setState(620);
+ setState(622);
match(T__26);
- setState(622);
+ setState(624);
_errHandler.sync(this);
_alt = 1;
do {
@@ -3520,7 +3512,7 @@ public final TryCatchExprContext tryCatchExpr() throws RecognitionException {
case 1:
{
{
- setState(621);
+ setState(623);
((TryCatchExprContext)_localctx).catchClause = catchClause();
((TryCatchExprContext)_localctx).catches.add(((TryCatchExprContext)_localctx).catchClause);
}
@@ -3529,7 +3521,7 @@ public final TryCatchExprContext tryCatchExpr() throws RecognitionException {
default:
throw new NoViableAltException(this);
}
- setState(624);
+ setState(626);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,59,_ctx);
} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
@@ -3580,14 +3572,14 @@ public final CatchClauseContext catchClause() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(626);
+ setState(628);
match(Kcatch);
- setState(629);
+ setState(631);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__34:
{
- setState(627);
+ setState(629);
((CatchClauseContext)_localctx).s35 = match(T__34);
((CatchClauseContext)_localctx).jokers.add(((CatchClauseContext)_localctx).s35);
}
@@ -3640,6 +3632,8 @@ public final CatchClauseContext catchClause() throws RecognitionException {
case Ktrue:
case Kfalse:
case Ktype:
+ case Kvalidate:
+ case Kannotate:
case Kdeclare:
case Kcontext:
case Kitem:
@@ -3647,7 +3641,7 @@ public final CatchClauseContext catchClause() throws RecognitionException {
case NullLiteral:
case NCName:
{
- setState(628);
+ setState(630);
((CatchClauseContext)_localctx).qname = qname();
((CatchClauseContext)_localctx).errors.add(((CatchClauseContext)_localctx).qname);
}
@@ -3655,20 +3649,20 @@ public final CatchClauseContext catchClause() throws RecognitionException {
default:
throw new NoViableAltException(this);
}
- setState(638);
+ setState(640);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__33) {
{
{
- setState(631);
+ setState(633);
match(T__33);
- setState(634);
+ setState(636);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__34:
{
- setState(632);
+ setState(634);
((CatchClauseContext)_localctx).s35 = match(T__34);
((CatchClauseContext)_localctx).jokers.add(((CatchClauseContext)_localctx).s35);
}
@@ -3721,6 +3715,8 @@ public final CatchClauseContext catchClause() throws RecognitionException {
case Ktrue:
case Kfalse:
case Ktype:
+ case Kvalidate:
+ case Kannotate:
case Kdeclare:
case Kcontext:
case Kitem:
@@ -3728,7 +3724,7 @@ public final CatchClauseContext catchClause() throws RecognitionException {
case NullLiteral:
case NCName:
{
- setState(633);
+ setState(635);
((CatchClauseContext)_localctx).qname = qname();
((CatchClauseContext)_localctx).errors.add(((CatchClauseContext)_localctx).qname);
}
@@ -3738,15 +3734,15 @@ public final CatchClauseContext catchClause() throws RecognitionException {
}
}
}
- setState(640);
+ setState(642);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(641);
+ setState(643);
match(T__25);
- setState(642);
+ setState(644);
((CatchClauseContext)_localctx).catch_expression = expr();
- setState(643);
+ setState(645);
match(T__26);
}
}
@@ -3793,24 +3789,24 @@ public final OrExprContext orExpr() throws RecognitionException {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(645);
+ setState(647);
((OrExprContext)_localctx).main_expr = andExpr();
- setState(650);
+ setState(652);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,63,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(646);
+ setState(648);
match(Kor);
- setState(647);
+ setState(649);
((OrExprContext)_localctx).andExpr = andExpr();
((OrExprContext)_localctx).rhs.add(((OrExprContext)_localctx).andExpr);
}
}
}
- setState(652);
+ setState(654);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,63,_ctx);
}
@@ -3859,24 +3855,24 @@ public final AndExprContext andExpr() throws RecognitionException {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(653);
+ setState(655);
((AndExprContext)_localctx).main_expr = notExpr();
- setState(658);
+ setState(660);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,64,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(654);
+ setState(656);
match(Kand);
- setState(655);
+ setState(657);
((AndExprContext)_localctx).notExpr = notExpr();
((AndExprContext)_localctx).rhs.add(((AndExprContext)_localctx).notExpr);
}
}
}
- setState(660);
+ setState(662);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,64,_ctx);
}
@@ -3918,18 +3914,18 @@ public final NotExprContext notExpr() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(662);
+ setState(664);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) {
case 1:
{
- setState(661);
+ setState(663);
((NotExprContext)_localctx).Knot = match(Knot);
((NotExprContext)_localctx).op.add(((NotExprContext)_localctx).Knot);
}
break;
}
- setState(664);
+ setState(666);
((NotExprContext)_localctx).main_expr = comparisonExpr();
}
}
@@ -3986,14 +3982,14 @@ public final ComparisonExprContext comparisonExpr() throws RecognitionException
try {
enterOuterAlt(_localctx, 1);
{
- setState(666);
+ setState(668);
((ComparisonExprContext)_localctx).main_expr = stringConcatExpr();
- setState(669);
+ setState(671);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__3) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__40) | (1L << T__41) | (1L << T__42) | (1L << T__43) | (1L << T__44) | (1L << T__45))) != 0)) {
{
- setState(667);
+ setState(669);
((ComparisonExprContext)_localctx)._tset1256 = _input.LT(1);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__3) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__40) | (1L << T__41) | (1L << T__42) | (1L << T__43) | (1L << T__44) | (1L << T__45))) != 0)) ) {
@@ -4005,7 +4001,7 @@ public final ComparisonExprContext comparisonExpr() throws RecognitionException
consume();
}
((ComparisonExprContext)_localctx).op.add(((ComparisonExprContext)_localctx)._tset1256);
- setState(668);
+ setState(670);
((ComparisonExprContext)_localctx).stringConcatExpr = stringConcatExpr();
((ComparisonExprContext)_localctx).rhs.add(((ComparisonExprContext)_localctx).stringConcatExpr);
}
@@ -4052,22 +4048,22 @@ public final StringConcatExprContext stringConcatExpr() throws RecognitionExcept
try {
enterOuterAlt(_localctx, 1);
{
- setState(671);
+ setState(673);
((StringConcatExprContext)_localctx).main_expr = rangeExpr();
- setState(676);
+ setState(678);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__46) {
{
{
- setState(672);
+ setState(674);
match(T__46);
- setState(673);
+ setState(675);
((StringConcatExprContext)_localctx).rangeExpr = rangeExpr();
((StringConcatExprContext)_localctx).rhs.add(((StringConcatExprContext)_localctx).rangeExpr);
}
}
- setState(678);
+ setState(680);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -4112,16 +4108,16 @@ public final RangeExprContext rangeExpr() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(679);
+ setState(681);
((RangeExprContext)_localctx).main_expr = additiveExpr();
- setState(682);
+ setState(684);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,68,_ctx) ) {
case 1:
{
- setState(680);
+ setState(682);
match(Kto);
- setState(681);
+ setState(683);
((RangeExprContext)_localctx).additiveExpr = additiveExpr();
((RangeExprContext)_localctx).rhs.add(((RangeExprContext)_localctx).additiveExpr);
}
@@ -4173,16 +4169,16 @@ public final AdditiveExprContext additiveExpr() throws RecognitionException {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(684);
+ setState(686);
((AdditiveExprContext)_localctx).main_expr = multiplicativeExpr();
- setState(689);
+ setState(691);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,69,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(685);
+ setState(687);
((AdditiveExprContext)_localctx)._tset1365 = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==T__47 || _la==T__48) ) {
@@ -4194,13 +4190,13 @@ public final AdditiveExprContext additiveExpr() throws RecognitionException {
consume();
}
((AdditiveExprContext)_localctx).op.add(((AdditiveExprContext)_localctx)._tset1365);
- setState(686);
+ setState(688);
((AdditiveExprContext)_localctx).multiplicativeExpr = multiplicativeExpr();
((AdditiveExprContext)_localctx).rhs.add(((AdditiveExprContext)_localctx).multiplicativeExpr);
}
}
}
- setState(691);
+ setState(693);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,69,_ctx);
}
@@ -4251,15 +4247,15 @@ public final MultiplicativeExprContext multiplicativeExpr() throws RecognitionEx
try {
enterOuterAlt(_localctx, 1);
{
- setState(692);
+ setState(694);
((MultiplicativeExprContext)_localctx).main_expr = instanceOfExpr();
- setState(697);
+ setState(699);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__34) | (1L << T__49) | (1L << T__50) | (1L << T__51))) != 0)) {
{
{
- setState(693);
+ setState(695);
((MultiplicativeExprContext)_localctx)._tset1393 = _input.LT(1);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__34) | (1L << T__49) | (1L << T__50) | (1L << T__51))) != 0)) ) {
@@ -4271,12 +4267,12 @@ public final MultiplicativeExprContext multiplicativeExpr() throws RecognitionEx
consume();
}
((MultiplicativeExprContext)_localctx).op.add(((MultiplicativeExprContext)_localctx)._tset1393);
- setState(694);
+ setState(696);
((MultiplicativeExprContext)_localctx).instanceOfExpr = instanceOfExpr();
((MultiplicativeExprContext)_localctx).rhs.add(((MultiplicativeExprContext)_localctx).instanceOfExpr);
}
}
- setState(699);
+ setState(701);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -4321,18 +4317,18 @@ public final InstanceOfExprContext instanceOfExpr() throws RecognitionException
try {
enterOuterAlt(_localctx, 1);
{
- setState(700);
+ setState(702);
((InstanceOfExprContext)_localctx).main_expr = isStaticallyExpr();
- setState(704);
+ setState(706);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,71,_ctx) ) {
case 1:
{
- setState(701);
+ setState(703);
match(Kinstance);
- setState(702);
+ setState(704);
match(Kof);
- setState(703);
+ setState(705);
((InstanceOfExprContext)_localctx).seq = sequenceType();
}
break;
@@ -4378,18 +4374,18 @@ public final IsStaticallyExprContext isStaticallyExpr() throws RecognitionExcept
try {
enterOuterAlt(_localctx, 1);
{
- setState(706);
+ setState(708);
((IsStaticallyExprContext)_localctx).main_expr = treatExpr();
- setState(710);
+ setState(712);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) {
case 1:
{
- setState(707);
+ setState(709);
match(Kis);
- setState(708);
+ setState(710);
match(Kstatically);
- setState(709);
+ setState(711);
((IsStaticallyExprContext)_localctx).seq = sequenceType();
}
break;
@@ -4435,18 +4431,18 @@ public final TreatExprContext treatExpr() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(712);
+ setState(714);
((TreatExprContext)_localctx).main_expr = castableExpr();
- setState(716);
+ setState(718);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,73,_ctx) ) {
case 1:
{
- setState(713);
+ setState(715);
match(Ktreat);
- setState(714);
+ setState(716);
match(Kas);
- setState(715);
+ setState(717);
((TreatExprContext)_localctx).seq = sequenceType();
}
break;
@@ -4492,18 +4488,18 @@ public final CastableExprContext castableExpr() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(718);
+ setState(720);
((CastableExprContext)_localctx).main_expr = castExpr();
- setState(722);
+ setState(724);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,74,_ctx) ) {
case 1:
{
- setState(719);
+ setState(721);
match(Kcastable);
- setState(720);
+ setState(722);
match(Kas);
- setState(721);
+ setState(723);
((CastableExprContext)_localctx).single = singleType();
}
break;
@@ -4549,18 +4545,18 @@ public final CastExprContext castExpr() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(724);
+ setState(726);
((CastExprContext)_localctx).main_expr = arrowExpr();
- setState(728);
+ setState(730);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,75,_ctx) ) {
case 1:
{
- setState(725);
+ setState(727);
match(Kcast);
- setState(726);
+ setState(728);
match(Kas);
- setState(727);
+ setState(729);
((CastExprContext)_localctx).single = singleType();
}
break;
@@ -4617,9 +4613,9 @@ public final ArrowExprContext arrowExpr() throws RecognitionException {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(730);
+ setState(732);
((ArrowExprContext)_localctx).main_expr = unaryExpr();
- setState(739);
+ setState(741);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,76,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
@@ -4627,21 +4623,21 @@ public final ArrowExprContext arrowExpr() throws RecognitionException {
{
{
{
- setState(731);
+ setState(733);
match(T__3);
- setState(732);
+ setState(734);
match(T__44);
}
- setState(734);
+ setState(736);
((ArrowExprContext)_localctx).arrowFunctionSpecifier = arrowFunctionSpecifier();
((ArrowExprContext)_localctx).function.add(((ArrowExprContext)_localctx).arrowFunctionSpecifier);
- setState(735);
+ setState(737);
((ArrowExprContext)_localctx).argumentList = argumentList();
((ArrowExprContext)_localctx).arguments.add(((ArrowExprContext)_localctx).argumentList);
}
}
}
- setState(741);
+ setState(743);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,76,_ctx);
}
@@ -4683,7 +4679,7 @@ public final ArrowFunctionSpecifierContext arrowFunctionSpecifier() throws Recog
ArrowFunctionSpecifierContext _localctx = new ArrowFunctionSpecifierContext(_ctx, getState());
enterRule(_localctx, 116, RULE_arrowFunctionSpecifier);
try {
- setState(745);
+ setState(747);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Kfor:
@@ -4734,6 +4730,8 @@ public final ArrowFunctionSpecifierContext arrowFunctionSpecifier() throws Recog
case Ktrue:
case Kfalse:
case Ktype:
+ case Kvalidate:
+ case Kannotate:
case Kdeclare:
case Kcontext:
case Kitem:
@@ -4742,21 +4740,21 @@ public final ArrowFunctionSpecifierContext arrowFunctionSpecifier() throws Recog
case NCName:
enterOuterAlt(_localctx, 1);
{
- setState(742);
+ setState(744);
qname();
}
break;
case T__32:
enterOuterAlt(_localctx, 2);
{
- setState(743);
+ setState(745);
varRef();
}
break;
case T__23:
enterOuterAlt(_localctx, 3);
{
- setState(744);
+ setState(746);
parenthesizedExpr();
}
break;
@@ -4802,13 +4800,13 @@ public final UnaryExprContext unaryExpr() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(750);
+ setState(752);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__47 || _la==T__48) {
{
{
- setState(747);
+ setState(749);
((UnaryExprContext)_localctx)._tset1572 = _input.LT(1);
_la = _input.LA(1);
if ( !(_la==T__47 || _la==T__48) ) {
@@ -4822,11 +4820,11 @@ public final UnaryExprContext unaryExpr() throws RecognitionException {
((UnaryExprContext)_localctx).op.add(((UnaryExprContext)_localctx)._tset1572);
}
}
- setState(752);
+ setState(754);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(753);
+ setState(755);
((UnaryExprContext)_localctx).main_expr = valueExpr();
}
}
@@ -4844,12 +4842,16 @@ public final UnaryExprContext unaryExpr() throws RecognitionException {
public static class ValueExprContext extends ParserRuleContext {
public SimpleMapExprContext simpleMap_expr;
public ValidateExprContext validate_expr;
+ public AnnotateExprContext annotate_expr;
public SimpleMapExprContext simpleMapExpr() {
return getRuleContext(SimpleMapExprContext.class,0);
}
public ValidateExprContext validateExpr() {
return getRuleContext(ValidateExprContext.class,0);
}
+ public AnnotateExprContext annotateExpr() {
+ return getRuleContext(AnnotateExprContext.class,0);
+ }
public ValueExprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -4865,88 +4867,30 @@ public final ValueExprContext valueExpr() throws RecognitionException {
ValueExprContext _localctx = new ValueExprContext(_ctx, getState());
enterRule(_localctx, 120, RULE_valueExpr);
try {
- setState(757);
+ setState(760);
_errHandler.sync(this);
- switch (_input.LA(1)) {
- case T__5:
- case T__22:
- case T__23:
- case T__25:
- case T__32:
- case T__54:
- case T__57:
- case T__59:
- case Kfor:
- case Klet:
- case Kwhere:
- case Kgroup:
- case Kby:
- case Korder:
- case Kreturn:
- case Kif:
- case Kin:
- case Kas:
- case Kat:
- case Kallowing:
- case Kempty:
- case Kcount:
- case Kstable:
- case Kascending:
- case Kdescending:
- case Ksome:
- case Kevery:
- case Ksatisfies:
- case Kcollation:
- case Kgreatest:
- case Kleast:
- case Kswitch:
- case Kcase:
- case Ktry:
- case Kcatch:
- case Kdefault:
- case Kthen:
- case Kelse:
- case Ktypeswitch:
- case Kor:
- case Kand:
- case Knot:
- case Kto:
- case Kinstance:
- case Kof:
- case Kstatically:
- case Kis:
- case Ktreat:
- case Kcast:
- case Kcastable:
- case Kversion:
- case Kjsoniq:
- case Kunordered:
- case Ktrue:
- case Kfalse:
- case Ktype:
- case Kdeclare:
- case Kcontext:
- case Kitem:
- case Kvariable:
- case STRING:
- case NullLiteral:
- case Literal:
- case NCName:
+ switch ( getInterpreter().adaptivePredict(_input,79,_ctx) ) {
+ case 1:
enterOuterAlt(_localctx, 1);
{
- setState(755);
+ setState(757);
((ValueExprContext)_localctx).simpleMap_expr = simpleMapExpr();
}
break;
- case T__52:
+ case 2:
enterOuterAlt(_localctx, 2);
{
- setState(756);
+ setState(758);
((ValueExprContext)_localctx).validate_expr = validateExpr();
}
break;
- default:
- throw new NoViableAltException(this);
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(759);
+ ((ValueExprContext)_localctx).annotate_expr = annotateExpr();
+ }
+ break;
}
}
catch (RecognitionException re) {
@@ -4961,6 +4905,7 @@ public final ValueExprContext valueExpr() throws RecognitionException {
}
public static class ValidateExprContext extends ParserRuleContext {
+ public TerminalNode Kvalidate() { return getToken(JsoniqParser.Kvalidate, 0); }
public TerminalNode Ktype() { return getToken(JsoniqParser.Ktype, 0); }
public SequenceTypeContext sequenceType() {
return getRuleContext(SequenceTypeContext.class,0);
@@ -4985,17 +4930,68 @@ public final ValidateExprContext validateExpr() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(759);
- match(T__52);
- setState(760);
+ setState(762);
+ match(Kvalidate);
+ setState(763);
match(Ktype);
- setState(761);
+ setState(764);
sequenceType();
- setState(762);
+ setState(765);
match(T__25);
- setState(763);
+ setState(766);
expr();
- setState(764);
+ setState(767);
+ match(T__26);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class AnnotateExprContext extends ParserRuleContext {
+ public TerminalNode Kannotate() { return getToken(JsoniqParser.Kannotate, 0); }
+ public TerminalNode Ktype() { return getToken(JsoniqParser.Ktype, 0); }
+ public SequenceTypeContext sequenceType() {
+ return getRuleContext(SequenceTypeContext.class,0);
+ }
+ public ExprContext expr() {
+ return getRuleContext(ExprContext.class,0);
+ }
+ public AnnotateExprContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotateExpr; }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof JsoniqVisitor ) return ((JsoniqVisitor extends T>)visitor).visitAnnotateExpr(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final AnnotateExprContext annotateExpr() throws RecognitionException {
+ AnnotateExprContext _localctx = new AnnotateExprContext(_ctx, getState());
+ enterRule(_localctx, 124, RULE_annotateExpr);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(769);
+ match(Kannotate);
+ setState(770);
+ match(Ktype);
+ setState(771);
+ sequenceType();
+ setState(772);
+ match(T__25);
+ setState(773);
+ expr();
+ setState(774);
match(T__26);
}
}
@@ -5033,27 +5029,27 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final SimpleMapExprContext simpleMapExpr() throws RecognitionException {
SimpleMapExprContext _localctx = new SimpleMapExprContext(_ctx, getState());
- enterRule(_localctx, 124, RULE_simpleMapExpr);
+ enterRule(_localctx, 126, RULE_simpleMapExpr);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(766);
+ setState(776);
((SimpleMapExprContext)_localctx).main_expr = postFixExpr();
- setState(771);
+ setState(781);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__53) {
+ while (_la==T__52) {
{
{
- setState(767);
- match(T__53);
- setState(768);
+ setState(777);
+ match(T__52);
+ setState(778);
((SimpleMapExprContext)_localctx).postFixExpr = postFixExpr();
((SimpleMapExprContext)_localctx).map_expr.add(((SimpleMapExprContext)_localctx).postFixExpr);
}
}
- setState(773);
+ setState(783);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -5118,56 +5114,56 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final PostFixExprContext postFixExpr() throws RecognitionException {
PostFixExprContext _localctx = new PostFixExprContext(_ctx, getState());
- enterRule(_localctx, 126, RULE_postFixExpr);
+ enterRule(_localctx, 128, RULE_postFixExpr);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(774);
+ setState(784);
((PostFixExprContext)_localctx).main_expr = primaryExpr();
- setState(782);
+ setState(792);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,82,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
- setState(780);
+ setState(790);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,81,_ctx) ) {
case 1:
{
- setState(775);
+ setState(785);
arrayLookup();
}
break;
case 2:
{
- setState(776);
+ setState(786);
predicate();
}
break;
case 3:
{
- setState(777);
+ setState(787);
objectLookup();
}
break;
case 4:
{
- setState(778);
+ setState(788);
arrayUnboxing();
}
break;
case 5:
{
- setState(779);
+ setState(789);
argumentList();
}
break;
}
}
}
- setState(784);
+ setState(794);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,82,_ctx);
}
@@ -5201,20 +5197,20 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ArrayLookupContext arrayLookup() throws RecognitionException {
ArrayLookupContext _localctx = new ArrayLookupContext(_ctx, getState());
- enterRule(_localctx, 128, RULE_arrayLookup);
+ enterRule(_localctx, 130, RULE_arrayLookup);
try {
enterOuterAlt(_localctx, 1);
{
- setState(785);
+ setState(795);
+ match(T__53);
+ setState(796);
+ match(T__53);
+ setState(797);
+ expr();
+ setState(798);
match(T__54);
- setState(786);
+ setState(799);
match(T__54);
- setState(787);
- expr();
- setState(788);
- match(T__55);
- setState(789);
- match(T__55);
}
}
catch (RecognitionException re) {
@@ -5242,14 +5238,14 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ArrayUnboxingContext arrayUnboxing() throws RecognitionException {
ArrayUnboxingContext _localctx = new ArrayUnboxingContext(_ctx, getState());
- enterRule(_localctx, 130, RULE_arrayUnboxing);
+ enterRule(_localctx, 132, RULE_arrayUnboxing);
try {
enterOuterAlt(_localctx, 1);
{
- setState(791);
+ setState(801);
+ match(T__53);
+ setState(802);
match(T__54);
- setState(792);
- match(T__55);
}
}
catch (RecognitionException re) {
@@ -5280,16 +5276,16 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final PredicateContext predicate() throws RecognitionException {
PredicateContext _localctx = new PredicateContext(_ctx, getState());
- enterRule(_localctx, 132, RULE_predicate);
+ enterRule(_localctx, 134, RULE_predicate);
try {
enterOuterAlt(_localctx, 1);
{
- setState(794);
- match(T__54);
- setState(795);
+ setState(804);
+ match(T__53);
+ setState(805);
expr();
- setState(796);
- match(T__55);
+ setState(806);
+ match(T__54);
}
}
catch (RecognitionException re) {
@@ -5339,13 +5335,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ObjectLookupContext objectLookup() throws RecognitionException {
ObjectLookupContext _localctx = new ObjectLookupContext(_ctx, getState());
- enterRule(_localctx, 134, RULE_objectLookup);
+ enterRule(_localctx, 136, RULE_objectLookup);
try {
enterOuterAlt(_localctx, 1);
{
- setState(798);
- match(T__56);
- setState(805);
+ setState(808);
+ match(T__55);
+ setState(815);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Kfor:
@@ -5396,43 +5392,45 @@ public final ObjectLookupContext objectLookup() throws RecognitionException {
case Ktrue:
case Kfalse:
case Ktype:
+ case Kvalidate:
+ case Kannotate:
case Kdeclare:
case Kcontext:
case Kitem:
case Kvariable:
case NullLiteral:
{
- setState(799);
+ setState(809);
((ObjectLookupContext)_localctx).kw = keyWords();
}
break;
case STRING:
{
- setState(800);
+ setState(810);
((ObjectLookupContext)_localctx).lt = stringLiteral();
}
break;
case NCName:
{
- setState(801);
+ setState(811);
((ObjectLookupContext)_localctx).nc = match(NCName);
}
break;
case T__23:
{
- setState(802);
+ setState(812);
((ObjectLookupContext)_localctx).pe = parenthesizedExpr();
}
break;
case T__32:
{
- setState(803);
+ setState(813);
((ObjectLookupContext)_localctx).vr = varRef();
}
break;
- case T__57:
+ case T__56:
{
- setState(804);
+ setState(814);
((ObjectLookupContext)_localctx).ci = contextItemExpr();
}
break;
@@ -5500,106 +5498,106 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final PrimaryExprContext primaryExpr() throws RecognitionException {
PrimaryExprContext _localctx = new PrimaryExprContext(_ctx, getState());
- enterRule(_localctx, 136, RULE_primaryExpr);
+ enterRule(_localctx, 138, RULE_primaryExpr);
try {
- setState(821);
+ setState(831);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,84,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(807);
+ setState(817);
match(NullLiteral);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(808);
+ setState(818);
match(Ktrue);
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(809);
+ setState(819);
match(Kfalse);
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(810);
+ setState(820);
match(Literal);
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(811);
+ setState(821);
stringLiteral();
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
- setState(812);
+ setState(822);
varRef();
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
- setState(813);
+ setState(823);
parenthesizedExpr();
}
break;
case 8:
enterOuterAlt(_localctx, 8);
{
- setState(814);
+ setState(824);
contextItemExpr();
}
break;
case 9:
enterOuterAlt(_localctx, 9);
{
- setState(815);
+ setState(825);
objectConstructor();
}
break;
case 10:
enterOuterAlt(_localctx, 10);
{
- setState(816);
+ setState(826);
functionCall();
}
break;
case 11:
enterOuterAlt(_localctx, 11);
{
- setState(817);
+ setState(827);
orderedExpr();
}
break;
case 12:
enterOuterAlt(_localctx, 12);
{
- setState(818);
+ setState(828);
unorderedExpr();
}
break;
case 13:
enterOuterAlt(_localctx, 13);
{
- setState(819);
+ setState(829);
arrayConstructor();
}
break;
case 14:
enterOuterAlt(_localctx, 14);
{
- setState(820);
+ setState(830);
functionItemExpr();
}
break;
@@ -5634,13 +5632,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final VarRefContext varRef() throws RecognitionException {
VarRefContext _localctx = new VarRefContext(_ctx, getState());
- enterRule(_localctx, 138, RULE_varRef);
+ enterRule(_localctx, 140, RULE_varRef);
try {
enterOuterAlt(_localctx, 1);
{
- setState(823);
+ setState(833);
match(T__32);
- setState(824);
+ setState(834);
((VarRefContext)_localctx).var_name = qname();
}
}
@@ -5672,24 +5670,24 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ParenthesizedExprContext parenthesizedExpr() throws RecognitionException {
ParenthesizedExprContext _localctx = new ParenthesizedExprContext(_ctx, getState());
- enterRule(_localctx, 140, RULE_parenthesizedExpr);
+ enterRule(_localctx, 142, RULE_parenthesizedExpr);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(826);
+ setState(836);
match(T__23);
- setState(828);
+ setState(838);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__5) | (1L << T__22) | (1L << T__23) | (1L << T__25) | (1L << T__32) | (1L << T__47) | (1L << T__48) | (1L << T__52) | (1L << T__54) | (1L << T__57) | (1L << T__59) | (1L << Kfor) | (1L << Klet))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Kwhere - 64)) | (1L << (Kgroup - 64)) | (1L << (Kby - 64)) | (1L << (Korder - 64)) | (1L << (Kreturn - 64)) | (1L << (Kif - 64)) | (1L << (Kin - 64)) | (1L << (Kas - 64)) | (1L << (Kat - 64)) | (1L << (Kallowing - 64)) | (1L << (Kempty - 64)) | (1L << (Kcount - 64)) | (1L << (Kstable - 64)) | (1L << (Kascending - 64)) | (1L << (Kdescending - 64)) | (1L << (Ksome - 64)) | (1L << (Kevery - 64)) | (1L << (Ksatisfies - 64)) | (1L << (Kcollation - 64)) | (1L << (Kgreatest - 64)) | (1L << (Kleast - 64)) | (1L << (Kswitch - 64)) | (1L << (Kcase - 64)) | (1L << (Ktry - 64)) | (1L << (Kcatch - 64)) | (1L << (Kdefault - 64)) | (1L << (Kthen - 64)) | (1L << (Kelse - 64)) | (1L << (Ktypeswitch - 64)) | (1L << (Kor - 64)) | (1L << (Kand - 64)) | (1L << (Knot - 64)) | (1L << (Kto - 64)) | (1L << (Kinstance - 64)) | (1L << (Kof - 64)) | (1L << (Kstatically - 64)) | (1L << (Kis - 64)) | (1L << (Ktreat - 64)) | (1L << (Kcast - 64)) | (1L << (Kcastable - 64)) | (1L << (Kversion - 64)) | (1L << (Kjsoniq - 64)) | (1L << (Kunordered - 64)) | (1L << (Ktrue - 64)) | (1L << (Kfalse - 64)) | (1L << (Ktype - 64)) | (1L << (Kdeclare - 64)) | (1L << (Kcontext - 64)) | (1L << (Kitem - 64)) | (1L << (Kvariable - 64)) | (1L << (STRING - 64)) | (1L << (NullLiteral - 64)) | (1L << (Literal - 64)) | (1L << (NCName - 64)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__5) | (1L << T__22) | (1L << T__23) | (1L << T__25) | (1L << T__32) | (1L << T__47) | (1L << T__48) | (1L << T__53) | (1L << T__56) | (1L << T__58) | (1L << Kfor) | (1L << Klet) | (1L << Kwhere))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Kgroup - 64)) | (1L << (Kby - 64)) | (1L << (Korder - 64)) | (1L << (Kreturn - 64)) | (1L << (Kif - 64)) | (1L << (Kin - 64)) | (1L << (Kas - 64)) | (1L << (Kat - 64)) | (1L << (Kallowing - 64)) | (1L << (Kempty - 64)) | (1L << (Kcount - 64)) | (1L << (Kstable - 64)) | (1L << (Kascending - 64)) | (1L << (Kdescending - 64)) | (1L << (Ksome - 64)) | (1L << (Kevery - 64)) | (1L << (Ksatisfies - 64)) | (1L << (Kcollation - 64)) | (1L << (Kgreatest - 64)) | (1L << (Kleast - 64)) | (1L << (Kswitch - 64)) | (1L << (Kcase - 64)) | (1L << (Ktry - 64)) | (1L << (Kcatch - 64)) | (1L << (Kdefault - 64)) | (1L << (Kthen - 64)) | (1L << (Kelse - 64)) | (1L << (Ktypeswitch - 64)) | (1L << (Kor - 64)) | (1L << (Kand - 64)) | (1L << (Knot - 64)) | (1L << (Kto - 64)) | (1L << (Kinstance - 64)) | (1L << (Kof - 64)) | (1L << (Kstatically - 64)) | (1L << (Kis - 64)) | (1L << (Ktreat - 64)) | (1L << (Kcast - 64)) | (1L << (Kcastable - 64)) | (1L << (Kversion - 64)) | (1L << (Kjsoniq - 64)) | (1L << (Kunordered - 64)) | (1L << (Ktrue - 64)) | (1L << (Kfalse - 64)) | (1L << (Ktype - 64)) | (1L << (Kvalidate - 64)) | (1L << (Kannotate - 64)) | (1L << (Kdeclare - 64)) | (1L << (Kcontext - 64)) | (1L << (Kitem - 64)) | (1L << (Kvariable - 64)) | (1L << (STRING - 64)) | (1L << (NullLiteral - 64)) | (1L << (Literal - 64)) | (1L << (NCName - 64)))) != 0)) {
{
- setState(827);
+ setState(837);
expr();
}
}
- setState(830);
+ setState(840);
match(T__24);
}
}
@@ -5718,12 +5716,12 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ContextItemExprContext contextItemExpr() throws RecognitionException {
ContextItemExprContext _localctx = new ContextItemExprContext(_ctx, getState());
- enterRule(_localctx, 142, RULE_contextItemExpr);
+ enterRule(_localctx, 144, RULE_contextItemExpr);
try {
enterOuterAlt(_localctx, 1);
{
- setState(832);
- match(T__57);
+ setState(842);
+ match(T__56);
}
}
catch (RecognitionException re) {
@@ -5754,17 +5752,17 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final OrderedExprContext orderedExpr() throws RecognitionException {
OrderedExprContext _localctx = new OrderedExprContext(_ctx, getState());
- enterRule(_localctx, 144, RULE_orderedExpr);
+ enterRule(_localctx, 146, RULE_orderedExpr);
try {
enterOuterAlt(_localctx, 1);
{
- setState(834);
+ setState(844);
match(T__5);
- setState(835);
+ setState(845);
match(T__25);
- setState(836);
+ setState(846);
expr();
- setState(837);
+ setState(847);
match(T__26);
}
}
@@ -5780,7 +5778,6 @@ public final OrderedExprContext orderedExpr() throws RecognitionException {
}
public static class UnorderedExprContext extends ParserRuleContext {
- public TerminalNode Kunordered() { return getToken(JsoniqParser.Kunordered, 0); }
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
@@ -5797,17 +5794,17 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final UnorderedExprContext unorderedExpr() throws RecognitionException {
UnorderedExprContext _localctx = new UnorderedExprContext(_ctx, getState());
- enterRule(_localctx, 146, RULE_unorderedExpr);
+ enterRule(_localctx, 148, RULE_unorderedExpr);
try {
enterOuterAlt(_localctx, 1);
{
- setState(839);
+ setState(849);
match(Kunordered);
- setState(840);
+ setState(850);
match(T__25);
- setState(841);
+ setState(851);
expr();
- setState(842);
+ setState(852);
match(T__26);
}
}
@@ -5843,13 +5840,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final FunctionCallContext functionCall() throws RecognitionException {
FunctionCallContext _localctx = new FunctionCallContext(_ctx, getState());
- enterRule(_localctx, 148, RULE_functionCall);
+ enterRule(_localctx, 150, RULE_functionCall);
try {
enterOuterAlt(_localctx, 1);
{
- setState(844);
+ setState(854);
((FunctionCallContext)_localctx).fn_name = qname();
- setState(845);
+ setState(855);
argumentList();
}
}
@@ -5886,39 +5883,39 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ArgumentListContext argumentList() throws RecognitionException {
ArgumentListContext _localctx = new ArgumentListContext(_ctx, getState());
- enterRule(_localctx, 150, RULE_argumentList);
+ enterRule(_localctx, 152, RULE_argumentList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(847);
+ setState(857);
match(T__23);
- setState(854);
+ setState(864);
_errHandler.sync(this);
_la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__5) | (1L << T__22) | (1L << T__23) | (1L << T__25) | (1L << T__32) | (1L << T__47) | (1L << T__48) | (1L << T__52) | (1L << T__54) | (1L << T__57) | (1L << T__59) | (1L << Kfor) | (1L << Klet))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Kwhere - 64)) | (1L << (Kgroup - 64)) | (1L << (Kby - 64)) | (1L << (Korder - 64)) | (1L << (Kreturn - 64)) | (1L << (Kif - 64)) | (1L << (Kin - 64)) | (1L << (Kas - 64)) | (1L << (Kat - 64)) | (1L << (Kallowing - 64)) | (1L << (Kempty - 64)) | (1L << (Kcount - 64)) | (1L << (Kstable - 64)) | (1L << (Kascending - 64)) | (1L << (Kdescending - 64)) | (1L << (Ksome - 64)) | (1L << (Kevery - 64)) | (1L << (Ksatisfies - 64)) | (1L << (Kcollation - 64)) | (1L << (Kgreatest - 64)) | (1L << (Kleast - 64)) | (1L << (Kswitch - 64)) | (1L << (Kcase - 64)) | (1L << (Ktry - 64)) | (1L << (Kcatch - 64)) | (1L << (Kdefault - 64)) | (1L << (Kthen - 64)) | (1L << (Kelse - 64)) | (1L << (Ktypeswitch - 64)) | (1L << (Kor - 64)) | (1L << (Kand - 64)) | (1L << (Knot - 64)) | (1L << (Kto - 64)) | (1L << (Kinstance - 64)) | (1L << (Kof - 64)) | (1L << (Kstatically - 64)) | (1L << (Kis - 64)) | (1L << (Ktreat - 64)) | (1L << (Kcast - 64)) | (1L << (Kcastable - 64)) | (1L << (Kversion - 64)) | (1L << (Kjsoniq - 64)) | (1L << (Kunordered - 64)) | (1L << (Ktrue - 64)) | (1L << (Kfalse - 64)) | (1L << (Ktype - 64)) | (1L << (Kdeclare - 64)) | (1L << (Kcontext - 64)) | (1L << (Kitem - 64)) | (1L << (Kvariable - 64)) | (1L << (STRING - 64)) | (1L << (ArgumentPlaceholder - 64)) | (1L << (NullLiteral - 64)) | (1L << (Literal - 64)) | (1L << (NCName - 64)))) != 0)) {
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__5) | (1L << T__22) | (1L << T__23) | (1L << T__25) | (1L << T__32) | (1L << T__47) | (1L << T__48) | (1L << T__53) | (1L << T__56) | (1L << T__58) | (1L << Kfor) | (1L << Klet) | (1L << Kwhere))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Kgroup - 64)) | (1L << (Kby - 64)) | (1L << (Korder - 64)) | (1L << (Kreturn - 64)) | (1L << (Kif - 64)) | (1L << (Kin - 64)) | (1L << (Kas - 64)) | (1L << (Kat - 64)) | (1L << (Kallowing - 64)) | (1L << (Kempty - 64)) | (1L << (Kcount - 64)) | (1L << (Kstable - 64)) | (1L << (Kascending - 64)) | (1L << (Kdescending - 64)) | (1L << (Ksome - 64)) | (1L << (Kevery - 64)) | (1L << (Ksatisfies - 64)) | (1L << (Kcollation - 64)) | (1L << (Kgreatest - 64)) | (1L << (Kleast - 64)) | (1L << (Kswitch - 64)) | (1L << (Kcase - 64)) | (1L << (Ktry - 64)) | (1L << (Kcatch - 64)) | (1L << (Kdefault - 64)) | (1L << (Kthen - 64)) | (1L << (Kelse - 64)) | (1L << (Ktypeswitch - 64)) | (1L << (Kor - 64)) | (1L << (Kand - 64)) | (1L << (Knot - 64)) | (1L << (Kto - 64)) | (1L << (Kinstance - 64)) | (1L << (Kof - 64)) | (1L << (Kstatically - 64)) | (1L << (Kis - 64)) | (1L << (Ktreat - 64)) | (1L << (Kcast - 64)) | (1L << (Kcastable - 64)) | (1L << (Kversion - 64)) | (1L << (Kjsoniq - 64)) | (1L << (Kunordered - 64)) | (1L << (Ktrue - 64)) | (1L << (Kfalse - 64)) | (1L << (Ktype - 64)) | (1L << (Kvalidate - 64)) | (1L << (Kannotate - 64)) | (1L << (Kdeclare - 64)) | (1L << (Kcontext - 64)) | (1L << (Kitem - 64)) | (1L << (Kvariable - 64)) | (1L << (STRING - 64)) | (1L << (ArgumentPlaceholder - 64)) | (1L << (NullLiteral - 64)) | (1L << (Literal - 64)) | (1L << (NCName - 64)))) != 0)) {
{
{
- setState(848);
+ setState(858);
((ArgumentListContext)_localctx).argument = argument();
((ArgumentListContext)_localctx).args.add(((ArgumentListContext)_localctx).argument);
- setState(850);
+ setState(860);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__19) {
{
- setState(849);
+ setState(859);
match(T__19);
}
}
}
}
- setState(856);
+ setState(866);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(857);
+ setState(867);
match(T__24);
}
}
@@ -5951,9 +5948,9 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ArgumentContext argument() throws RecognitionException {
ArgumentContext _localctx = new ArgumentContext(_ctx, getState());
- enterRule(_localctx, 152, RULE_argument);
+ enterRule(_localctx, 154, RULE_argument);
try {
- setState(861);
+ setState(871);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__5:
@@ -5963,10 +5960,9 @@ public final ArgumentContext argument() throws RecognitionException {
case T__32:
case T__47:
case T__48:
- case T__52:
- case T__54:
- case T__57:
- case T__59:
+ case T__53:
+ case T__56:
+ case T__58:
case Kfor:
case Klet:
case Kwhere:
@@ -6015,6 +6011,8 @@ public final ArgumentContext argument() throws RecognitionException {
case Ktrue:
case Kfalse:
case Ktype:
+ case Kvalidate:
+ case Kannotate:
case Kdeclare:
case Kcontext:
case Kitem:
@@ -6025,14 +6023,14 @@ public final ArgumentContext argument() throws RecognitionException {
case NCName:
enterOuterAlt(_localctx, 1);
{
- setState(859);
+ setState(869);
exprSingle();
}
break;
case ArgumentPlaceholder:
enterOuterAlt(_localctx, 2);
{
- setState(860);
+ setState(870);
match(ArgumentPlaceholder);
}
break;
@@ -6071,9 +6069,9 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final FunctionItemExprContext functionItemExpr() throws RecognitionException {
FunctionItemExprContext _localctx = new FunctionItemExprContext(_ctx, getState());
- enterRule(_localctx, 154, RULE_functionItemExpr);
+ enterRule(_localctx, 156, RULE_functionItemExpr);
try {
- setState(865);
+ setState(875);
_errHandler.sync(this);
switch (_input.LA(1)) {
case Kfor:
@@ -6124,6 +6122,8 @@ public final FunctionItemExprContext functionItemExpr() throws RecognitionExcept
case Ktrue:
case Kfalse:
case Ktype:
+ case Kvalidate:
+ case Kannotate:
case Kdeclare:
case Kcontext:
case Kitem:
@@ -6132,14 +6132,14 @@ public final FunctionItemExprContext functionItemExpr() throws RecognitionExcept
case NCName:
enterOuterAlt(_localctx, 1);
{
- setState(863);
+ setState(873);
namedFunctionRef();
}
break;
case T__22:
enterOuterAlt(_localctx, 2);
{
- setState(864);
+ setState(874);
inlineFunctionExpr();
}
break;
@@ -6178,15 +6178,15 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final NamedFunctionRefContext namedFunctionRef() throws RecognitionException {
NamedFunctionRefContext _localctx = new NamedFunctionRefContext(_ctx, getState());
- enterRule(_localctx, 156, RULE_namedFunctionRef);
+ enterRule(_localctx, 158, RULE_namedFunctionRef);
try {
enterOuterAlt(_localctx, 1);
{
- setState(867);
+ setState(877);
((NamedFunctionRefContext)_localctx).fn_name = qname();
- setState(868);
- match(T__58);
- setState(869);
+ setState(878);
+ match(T__57);
+ setState(879);
((NamedFunctionRefContext)_localctx).arity = match(Literal);
}
}
@@ -6227,53 +6227,53 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final InlineFunctionExprContext inlineFunctionExpr() throws RecognitionException {
InlineFunctionExprContext _localctx = new InlineFunctionExprContext(_ctx, getState());
- enterRule(_localctx, 158, RULE_inlineFunctionExpr);
+ enterRule(_localctx, 160, RULE_inlineFunctionExpr);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(871);
+ setState(881);
match(T__22);
- setState(872);
+ setState(882);
match(T__23);
- setState(874);
+ setState(884);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__32) {
{
- setState(873);
+ setState(883);
paramList();
}
}
- setState(876);
+ setState(886);
match(T__24);
- setState(879);
+ setState(889);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==Kas) {
{
- setState(877);
+ setState(887);
match(Kas);
- setState(878);
+ setState(888);
((InlineFunctionExprContext)_localctx).return_type = sequenceType();
}
}
{
- setState(881);
+ setState(891);
match(T__25);
- setState(883);
+ setState(893);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__5) | (1L << T__22) | (1L << T__23) | (1L << T__25) | (1L << T__32) | (1L << T__47) | (1L << T__48) | (1L << T__52) | (1L << T__54) | (1L << T__57) | (1L << T__59) | (1L << Kfor) | (1L << Klet))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Kwhere - 64)) | (1L << (Kgroup - 64)) | (1L << (Kby - 64)) | (1L << (Korder - 64)) | (1L << (Kreturn - 64)) | (1L << (Kif - 64)) | (1L << (Kin - 64)) | (1L << (Kas - 64)) | (1L << (Kat - 64)) | (1L << (Kallowing - 64)) | (1L << (Kempty - 64)) | (1L << (Kcount - 64)) | (1L << (Kstable - 64)) | (1L << (Kascending - 64)) | (1L << (Kdescending - 64)) | (1L << (Ksome - 64)) | (1L << (Kevery - 64)) | (1L << (Ksatisfies - 64)) | (1L << (Kcollation - 64)) | (1L << (Kgreatest - 64)) | (1L << (Kleast - 64)) | (1L << (Kswitch - 64)) | (1L << (Kcase - 64)) | (1L << (Ktry - 64)) | (1L << (Kcatch - 64)) | (1L << (Kdefault - 64)) | (1L << (Kthen - 64)) | (1L << (Kelse - 64)) | (1L << (Ktypeswitch - 64)) | (1L << (Kor - 64)) | (1L << (Kand - 64)) | (1L << (Knot - 64)) | (1L << (Kto - 64)) | (1L << (Kinstance - 64)) | (1L << (Kof - 64)) | (1L << (Kstatically - 64)) | (1L << (Kis - 64)) | (1L << (Ktreat - 64)) | (1L << (Kcast - 64)) | (1L << (Kcastable - 64)) | (1L << (Kversion - 64)) | (1L << (Kjsoniq - 64)) | (1L << (Kunordered - 64)) | (1L << (Ktrue - 64)) | (1L << (Kfalse - 64)) | (1L << (Ktype - 64)) | (1L << (Kdeclare - 64)) | (1L << (Kcontext - 64)) | (1L << (Kitem - 64)) | (1L << (Kvariable - 64)) | (1L << (STRING - 64)) | (1L << (NullLiteral - 64)) | (1L << (Literal - 64)) | (1L << (NCName - 64)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__5) | (1L << T__22) | (1L << T__23) | (1L << T__25) | (1L << T__32) | (1L << T__47) | (1L << T__48) | (1L << T__53) | (1L << T__56) | (1L << T__58) | (1L << Kfor) | (1L << Klet) | (1L << Kwhere))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Kgroup - 64)) | (1L << (Kby - 64)) | (1L << (Korder - 64)) | (1L << (Kreturn - 64)) | (1L << (Kif - 64)) | (1L << (Kin - 64)) | (1L << (Kas - 64)) | (1L << (Kat - 64)) | (1L << (Kallowing - 64)) | (1L << (Kempty - 64)) | (1L << (Kcount - 64)) | (1L << (Kstable - 64)) | (1L << (Kascending - 64)) | (1L << (Kdescending - 64)) | (1L << (Ksome - 64)) | (1L << (Kevery - 64)) | (1L << (Ksatisfies - 64)) | (1L << (Kcollation - 64)) | (1L << (Kgreatest - 64)) | (1L << (Kleast - 64)) | (1L << (Kswitch - 64)) | (1L << (Kcase - 64)) | (1L << (Ktry - 64)) | (1L << (Kcatch - 64)) | (1L << (Kdefault - 64)) | (1L << (Kthen - 64)) | (1L << (Kelse - 64)) | (1L << (Ktypeswitch - 64)) | (1L << (Kor - 64)) | (1L << (Kand - 64)) | (1L << (Knot - 64)) | (1L << (Kto - 64)) | (1L << (Kinstance - 64)) | (1L << (Kof - 64)) | (1L << (Kstatically - 64)) | (1L << (Kis - 64)) | (1L << (Ktreat - 64)) | (1L << (Kcast - 64)) | (1L << (Kcastable - 64)) | (1L << (Kversion - 64)) | (1L << (Kjsoniq - 64)) | (1L << (Kunordered - 64)) | (1L << (Ktrue - 64)) | (1L << (Kfalse - 64)) | (1L << (Ktype - 64)) | (1L << (Kvalidate - 64)) | (1L << (Kannotate - 64)) | (1L << (Kdeclare - 64)) | (1L << (Kcontext - 64)) | (1L << (Kitem - 64)) | (1L << (Kvariable - 64)) | (1L << (STRING - 64)) | (1L << (NullLiteral - 64)) | (1L << (Literal - 64)) | (1L << (NCName - 64)))) != 0)) {
{
- setState(882);
+ setState(892);
((InlineFunctionExprContext)_localctx).fn_body = expr();
}
}
- setState(885);
+ setState(895);
match(T__26);
}
}
@@ -6291,7 +6291,7 @@ public final InlineFunctionExprContext inlineFunctionExpr() throws RecognitionEx
public static class SequenceTypeContext extends ParserRuleContext {
public ItemTypeContext item;
- public Token s115;
+ public Token s116;
public List question = new ArrayList();
public Token s35;
public List star = new ArrayList();
@@ -6300,7 +6300,6 @@ public static class SequenceTypeContext extends ParserRuleContext {
public ItemTypeContext itemType() {
return getRuleContext(ItemTypeContext.class,0);
}
- public TerminalNode ArgumentPlaceholder() { return getToken(JsoniqParser.ArgumentPlaceholder, 0); }
public SequenceTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -6314,17 +6313,17 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final SequenceTypeContext sequenceType() throws RecognitionException {
SequenceTypeContext _localctx = new SequenceTypeContext(_ctx, getState());
- enterRule(_localctx, 160, RULE_sequenceType);
+ enterRule(_localctx, 162, RULE_sequenceType);
try {
- setState(895);
+ setState(905);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__23:
enterOuterAlt(_localctx, 1);
{
- setState(887);
+ setState(897);
match(T__23);
- setState(888);
+ setState(898);
match(T__24);
}
break;
@@ -6377,6 +6376,8 @@ public final SequenceTypeContext sequenceType() throws RecognitionException {
case Ktrue:
case Kfalse:
case Ktype:
+ case Kvalidate:
+ case Kannotate:
case Kdeclare:
case Kcontext:
case Kitem:
@@ -6385,28 +6386,28 @@ public final SequenceTypeContext sequenceType() throws RecognitionException {
case NCName:
enterOuterAlt(_localctx, 2);
{
- setState(889);
+ setState(899);
((SequenceTypeContext)_localctx).item = itemType();
- setState(893);
+ setState(903);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,93,_ctx) ) {
case 1:
{
- setState(890);
- ((SequenceTypeContext)_localctx).s115 = match(ArgumentPlaceholder);
- ((SequenceTypeContext)_localctx).question.add(((SequenceTypeContext)_localctx).s115);
+ setState(900);
+ ((SequenceTypeContext)_localctx).s116 = match(ArgumentPlaceholder);
+ ((SequenceTypeContext)_localctx).question.add(((SequenceTypeContext)_localctx).s116);
}
break;
case 2:
{
- setState(891);
+ setState(901);
((SequenceTypeContext)_localctx).s35 = match(T__34);
((SequenceTypeContext)_localctx).star.add(((SequenceTypeContext)_localctx).s35);
}
break;
case 3:
{
- setState(892);
+ setState(902);
((SequenceTypeContext)_localctx).s48 = match(T__47);
((SequenceTypeContext)_localctx).plus.add(((SequenceTypeContext)_localctx).s48);
}
@@ -6430,7 +6431,7 @@ public final SequenceTypeContext sequenceType() throws RecognitionException {
}
public static class ObjectConstructorContext extends ParserRuleContext {
- public Token s60;
+ public Token s59;
public List merge_operator = new ArrayList();
public List pairConstructor() {
return getRuleContexts(PairConstructorContext.class);
@@ -6454,57 +6455,57 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ObjectConstructorContext objectConstructor() throws RecognitionException {
ObjectConstructorContext _localctx = new ObjectConstructorContext(_ctx, getState());
- enterRule(_localctx, 162, RULE_objectConstructor);
+ enterRule(_localctx, 164, RULE_objectConstructor);
int _la;
try {
- setState(913);
+ setState(923);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__25:
enterOuterAlt(_localctx, 1);
{
- setState(897);
+ setState(907);
match(T__25);
- setState(906);
+ setState(916);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__5) | (1L << T__22) | (1L << T__23) | (1L << T__25) | (1L << T__32) | (1L << T__47) | (1L << T__48) | (1L << T__52) | (1L << T__54) | (1L << T__57) | (1L << T__59) | (1L << Kfor) | (1L << Klet))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Kwhere - 64)) | (1L << (Kgroup - 64)) | (1L << (Kby - 64)) | (1L << (Korder - 64)) | (1L << (Kreturn - 64)) | (1L << (Kif - 64)) | (1L << (Kin - 64)) | (1L << (Kas - 64)) | (1L << (Kat - 64)) | (1L << (Kallowing - 64)) | (1L << (Kempty - 64)) | (1L << (Kcount - 64)) | (1L << (Kstable - 64)) | (1L << (Kascending - 64)) | (1L << (Kdescending - 64)) | (1L << (Ksome - 64)) | (1L << (Kevery - 64)) | (1L << (Ksatisfies - 64)) | (1L << (Kcollation - 64)) | (1L << (Kgreatest - 64)) | (1L << (Kleast - 64)) | (1L << (Kswitch - 64)) | (1L << (Kcase - 64)) | (1L << (Ktry - 64)) | (1L << (Kcatch - 64)) | (1L << (Kdefault - 64)) | (1L << (Kthen - 64)) | (1L << (Kelse - 64)) | (1L << (Ktypeswitch - 64)) | (1L << (Kor - 64)) | (1L << (Kand - 64)) | (1L << (Knot - 64)) | (1L << (Kto - 64)) | (1L << (Kinstance - 64)) | (1L << (Kof - 64)) | (1L << (Kstatically - 64)) | (1L << (Kis - 64)) | (1L << (Ktreat - 64)) | (1L << (Kcast - 64)) | (1L << (Kcastable - 64)) | (1L << (Kversion - 64)) | (1L << (Kjsoniq - 64)) | (1L << (Kunordered - 64)) | (1L << (Ktrue - 64)) | (1L << (Kfalse - 64)) | (1L << (Ktype - 64)) | (1L << (Kdeclare - 64)) | (1L << (Kcontext - 64)) | (1L << (Kitem - 64)) | (1L << (Kvariable - 64)) | (1L << (STRING - 64)) | (1L << (NullLiteral - 64)) | (1L << (Literal - 64)) | (1L << (NCName - 64)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__5) | (1L << T__22) | (1L << T__23) | (1L << T__25) | (1L << T__32) | (1L << T__47) | (1L << T__48) | (1L << T__53) | (1L << T__56) | (1L << T__58) | (1L << Kfor) | (1L << Klet) | (1L << Kwhere))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Kgroup - 64)) | (1L << (Kby - 64)) | (1L << (Korder - 64)) | (1L << (Kreturn - 64)) | (1L << (Kif - 64)) | (1L << (Kin - 64)) | (1L << (Kas - 64)) | (1L << (Kat - 64)) | (1L << (Kallowing - 64)) | (1L << (Kempty - 64)) | (1L << (Kcount - 64)) | (1L << (Kstable - 64)) | (1L << (Kascending - 64)) | (1L << (Kdescending - 64)) | (1L << (Ksome - 64)) | (1L << (Kevery - 64)) | (1L << (Ksatisfies - 64)) | (1L << (Kcollation - 64)) | (1L << (Kgreatest - 64)) | (1L << (Kleast - 64)) | (1L << (Kswitch - 64)) | (1L << (Kcase - 64)) | (1L << (Ktry - 64)) | (1L << (Kcatch - 64)) | (1L << (Kdefault - 64)) | (1L << (Kthen - 64)) | (1L << (Kelse - 64)) | (1L << (Ktypeswitch - 64)) | (1L << (Kor - 64)) | (1L << (Kand - 64)) | (1L << (Knot - 64)) | (1L << (Kto - 64)) | (1L << (Kinstance - 64)) | (1L << (Kof - 64)) | (1L << (Kstatically - 64)) | (1L << (Kis - 64)) | (1L << (Ktreat - 64)) | (1L << (Kcast - 64)) | (1L << (Kcastable - 64)) | (1L << (Kversion - 64)) | (1L << (Kjsoniq - 64)) | (1L << (Kunordered - 64)) | (1L << (Ktrue - 64)) | (1L << (Kfalse - 64)) | (1L << (Ktype - 64)) | (1L << (Kvalidate - 64)) | (1L << (Kannotate - 64)) | (1L << (Kdeclare - 64)) | (1L << (Kcontext - 64)) | (1L << (Kitem - 64)) | (1L << (Kvariable - 64)) | (1L << (STRING - 64)) | (1L << (NullLiteral - 64)) | (1L << (Literal - 64)) | (1L << (NCName - 64)))) != 0)) {
{
- setState(898);
+ setState(908);
pairConstructor();
- setState(903);
+ setState(913);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__19) {
{
{
- setState(899);
+ setState(909);
match(T__19);
- setState(900);
+ setState(910);
pairConstructor();
}
}
- setState(905);
+ setState(915);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
- setState(908);
+ setState(918);
match(T__26);
}
break;
- case T__59:
+ case T__58:
enterOuterAlt(_localctx, 2);
{
- setState(909);
- ((ObjectConstructorContext)_localctx).s60 = match(T__59);
- ((ObjectConstructorContext)_localctx).merge_operator.add(((ObjectConstructorContext)_localctx).s60);
- setState(910);
+ setState(919);
+ ((ObjectConstructorContext)_localctx).s59 = match(T__58);
+ ((ObjectConstructorContext)_localctx).merge_operator.add(((ObjectConstructorContext)_localctx).s59);
+ setState(920);
expr();
- setState(911);
- match(T__60);
+ setState(921);
+ match(T__59);
}
break;
default:
@@ -6543,29 +6544,29 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ItemTypeContext itemType() throws RecognitionException {
ItemTypeContext _localctx = new ItemTypeContext(_ctx, getState());
- enterRule(_localctx, 164, RULE_itemType);
+ enterRule(_localctx, 166, RULE_itemType);
try {
- setState(918);
+ setState(928);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,98,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(915);
+ setState(925);
qname();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(916);
+ setState(926);
match(NullLiteral);
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(917);
+ setState(927);
functionTest();
}
break;
@@ -6602,22 +6603,22 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final FunctionTestContext functionTest() throws RecognitionException {
FunctionTestContext _localctx = new FunctionTestContext(_ctx, getState());
- enterRule(_localctx, 166, RULE_functionTest);
+ enterRule(_localctx, 168, RULE_functionTest);
try {
enterOuterAlt(_localctx, 1);
{
- setState(922);
+ setState(932);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,99,_ctx) ) {
case 1:
{
- setState(920);
+ setState(930);
anyFunctionTest();
}
break;
case 2:
{
- setState(921);
+ setState(931);
typedFunctionTest();
}
break;
@@ -6649,17 +6650,17 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AnyFunctionTestContext anyFunctionTest() throws RecognitionException {
AnyFunctionTestContext _localctx = new AnyFunctionTestContext(_ctx, getState());
- enterRule(_localctx, 168, RULE_anyFunctionTest);
+ enterRule(_localctx, 170, RULE_anyFunctionTest);
try {
enterOuterAlt(_localctx, 1);
{
- setState(924);
+ setState(934);
match(T__22);
- setState(925);
+ setState(935);
match(T__23);
- setState(926);
+ setState(936);
match(T__34);
- setState(927);
+ setState(937);
match(T__24);
}
}
@@ -6678,7 +6679,6 @@ public static class TypedFunctionTestContext extends ParserRuleContext {
public SequenceTypeContext sequenceType;
public List st = new ArrayList();
public SequenceTypeContext rt;
- public TerminalNode Kas() { return getToken(JsoniqParser.Kas, 0); }
public List sequenceType() {
return getRuleContexts(SequenceTypeContext.class);
}
@@ -6698,48 +6698,48 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final TypedFunctionTestContext typedFunctionTest() throws RecognitionException {
TypedFunctionTestContext _localctx = new TypedFunctionTestContext(_ctx, getState());
- enterRule(_localctx, 170, RULE_typedFunctionTest);
+ enterRule(_localctx, 172, RULE_typedFunctionTest);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(929);
+ setState(939);
match(T__22);
- setState(930);
+ setState(940);
match(T__23);
- setState(939);
+ setState(949);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__22) | (1L << T__23) | (1L << Kfor) | (1L << Klet))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Kwhere - 64)) | (1L << (Kgroup - 64)) | (1L << (Kby - 64)) | (1L << (Korder - 64)) | (1L << (Kreturn - 64)) | (1L << (Kif - 64)) | (1L << (Kin - 64)) | (1L << (Kas - 64)) | (1L << (Kat - 64)) | (1L << (Kallowing - 64)) | (1L << (Kempty - 64)) | (1L << (Kcount - 64)) | (1L << (Kstable - 64)) | (1L << (Kascending - 64)) | (1L << (Kdescending - 64)) | (1L << (Ksome - 64)) | (1L << (Kevery - 64)) | (1L << (Ksatisfies - 64)) | (1L << (Kcollation - 64)) | (1L << (Kgreatest - 64)) | (1L << (Kleast - 64)) | (1L << (Kswitch - 64)) | (1L << (Kcase - 64)) | (1L << (Ktry - 64)) | (1L << (Kcatch - 64)) | (1L << (Kdefault - 64)) | (1L << (Kthen - 64)) | (1L << (Kelse - 64)) | (1L << (Ktypeswitch - 64)) | (1L << (Kor - 64)) | (1L << (Kand - 64)) | (1L << (Knot - 64)) | (1L << (Kto - 64)) | (1L << (Kinstance - 64)) | (1L << (Kof - 64)) | (1L << (Kstatically - 64)) | (1L << (Kis - 64)) | (1L << (Ktreat - 64)) | (1L << (Kcast - 64)) | (1L << (Kcastable - 64)) | (1L << (Kversion - 64)) | (1L << (Kjsoniq - 64)) | (1L << (Kunordered - 64)) | (1L << (Ktrue - 64)) | (1L << (Kfalse - 64)) | (1L << (Ktype - 64)) | (1L << (Kdeclare - 64)) | (1L << (Kcontext - 64)) | (1L << (Kitem - 64)) | (1L << (Kvariable - 64)) | (1L << (NullLiteral - 64)) | (1L << (NCName - 64)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__22) | (1L << T__23) | (1L << Kfor) | (1L << Klet) | (1L << Kwhere))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Kgroup - 64)) | (1L << (Kby - 64)) | (1L << (Korder - 64)) | (1L << (Kreturn - 64)) | (1L << (Kif - 64)) | (1L << (Kin - 64)) | (1L << (Kas - 64)) | (1L << (Kat - 64)) | (1L << (Kallowing - 64)) | (1L << (Kempty - 64)) | (1L << (Kcount - 64)) | (1L << (Kstable - 64)) | (1L << (Kascending - 64)) | (1L << (Kdescending - 64)) | (1L << (Ksome - 64)) | (1L << (Kevery - 64)) | (1L << (Ksatisfies - 64)) | (1L << (Kcollation - 64)) | (1L << (Kgreatest - 64)) | (1L << (Kleast - 64)) | (1L << (Kswitch - 64)) | (1L << (Kcase - 64)) | (1L << (Ktry - 64)) | (1L << (Kcatch - 64)) | (1L << (Kdefault - 64)) | (1L << (Kthen - 64)) | (1L << (Kelse - 64)) | (1L << (Ktypeswitch - 64)) | (1L << (Kor - 64)) | (1L << (Kand - 64)) | (1L << (Knot - 64)) | (1L << (Kto - 64)) | (1L << (Kinstance - 64)) | (1L << (Kof - 64)) | (1L << (Kstatically - 64)) | (1L << (Kis - 64)) | (1L << (Ktreat - 64)) | (1L << (Kcast - 64)) | (1L << (Kcastable - 64)) | (1L << (Kversion - 64)) | (1L << (Kjsoniq - 64)) | (1L << (Kunordered - 64)) | (1L << (Ktrue - 64)) | (1L << (Kfalse - 64)) | (1L << (Ktype - 64)) | (1L << (Kvalidate - 64)) | (1L << (Kannotate - 64)) | (1L << (Kdeclare - 64)) | (1L << (Kcontext - 64)) | (1L << (Kitem - 64)) | (1L << (Kvariable - 64)) | (1L << (NullLiteral - 64)) | (1L << (NCName - 64)))) != 0)) {
{
- setState(931);
+ setState(941);
((TypedFunctionTestContext)_localctx).sequenceType = sequenceType();
((TypedFunctionTestContext)_localctx).st.add(((TypedFunctionTestContext)_localctx).sequenceType);
- setState(936);
+ setState(946);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__19) {
{
{
- setState(932);
+ setState(942);
match(T__19);
- setState(933);
+ setState(943);
((TypedFunctionTestContext)_localctx).sequenceType = sequenceType();
((TypedFunctionTestContext)_localctx).st.add(((TypedFunctionTestContext)_localctx).sequenceType);
}
}
- setState(938);
+ setState(948);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
- setState(941);
+ setState(951);
match(T__24);
- setState(942);
+ setState(952);
match(Kas);
- setState(943);
+ setState(953);
((TypedFunctionTestContext)_localctx).rt = sequenceType();
}
}
@@ -6756,12 +6756,11 @@ public final TypedFunctionTestContext typedFunctionTest() throws RecognitionExce
public static class SingleTypeContext extends ParserRuleContext {
public ItemTypeContext item;
- public Token s115;
+ public Token s116;
public List question = new ArrayList();
public ItemTypeContext itemType() {
return getRuleContext(ItemTypeContext.class,0);
}
- public TerminalNode ArgumentPlaceholder() { return getToken(JsoniqParser.ArgumentPlaceholder, 0); }
public SingleTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -6775,20 +6774,20 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final SingleTypeContext singleType() throws RecognitionException {
SingleTypeContext _localctx = new SingleTypeContext(_ctx, getState());
- enterRule(_localctx, 172, RULE_singleType);
+ enterRule(_localctx, 174, RULE_singleType);
try {
enterOuterAlt(_localctx, 1);
{
- setState(945);
+ setState(955);
((SingleTypeContext)_localctx).item = itemType();
- setState(947);
+ setState(957);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,102,_ctx) ) {
case 1:
{
- setState(946);
- ((SingleTypeContext)_localctx).s115 = match(ArgumentPlaceholder);
- ((SingleTypeContext)_localctx).question.add(((SingleTypeContext)_localctx).s115);
+ setState(956);
+ ((SingleTypeContext)_localctx).s116 = match(ArgumentPlaceholder);
+ ((SingleTypeContext)_localctx).question.add(((SingleTypeContext)_localctx).s116);
}
break;
}
@@ -6809,7 +6808,6 @@ public static class PairConstructorContext extends ParserRuleContext {
public ExprSingleContext lhs;
public Token name;
public ExprSingleContext rhs;
- public TerminalNode ArgumentPlaceholder() { return getToken(JsoniqParser.ArgumentPlaceholder, 0); }
public List exprSingle() {
return getRuleContexts(ExprSingleContext.class);
}
@@ -6830,28 +6828,28 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final PairConstructorContext pairConstructor() throws RecognitionException {
PairConstructorContext _localctx = new PairConstructorContext(_ctx, getState());
- enterRule(_localctx, 174, RULE_pairConstructor);
+ enterRule(_localctx, 176, RULE_pairConstructor);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(951);
+ setState(961);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,103,_ctx) ) {
case 1:
{
- setState(949);
+ setState(959);
((PairConstructorContext)_localctx).lhs = exprSingle();
}
break;
case 2:
{
- setState(950);
+ setState(960);
((PairConstructorContext)_localctx).name = match(NCName);
}
break;
}
- setState(953);
+ setState(963);
_la = _input.LA(1);
if ( !(_la==T__7 || _la==ArgumentPlaceholder) ) {
_errHandler.recoverInline(this);
@@ -6861,7 +6859,7 @@ public final PairConstructorContext pairConstructor() throws RecognitionExceptio
_errHandler.reportMatch(this);
consume();
}
- setState(954);
+ setState(964);
((PairConstructorContext)_localctx).rhs = exprSingle();
}
}
@@ -6893,25 +6891,25 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ArrayConstructorContext arrayConstructor() throws RecognitionException {
ArrayConstructorContext _localctx = new ArrayConstructorContext(_ctx, getState());
- enterRule(_localctx, 176, RULE_arrayConstructor);
+ enterRule(_localctx, 178, RULE_arrayConstructor);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(956);
- match(T__54);
- setState(958);
+ setState(966);
+ match(T__53);
+ setState(968);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__5) | (1L << T__22) | (1L << T__23) | (1L << T__25) | (1L << T__32) | (1L << T__47) | (1L << T__48) | (1L << T__52) | (1L << T__54) | (1L << T__57) | (1L << T__59) | (1L << Kfor) | (1L << Klet))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Kwhere - 64)) | (1L << (Kgroup - 64)) | (1L << (Kby - 64)) | (1L << (Korder - 64)) | (1L << (Kreturn - 64)) | (1L << (Kif - 64)) | (1L << (Kin - 64)) | (1L << (Kas - 64)) | (1L << (Kat - 64)) | (1L << (Kallowing - 64)) | (1L << (Kempty - 64)) | (1L << (Kcount - 64)) | (1L << (Kstable - 64)) | (1L << (Kascending - 64)) | (1L << (Kdescending - 64)) | (1L << (Ksome - 64)) | (1L << (Kevery - 64)) | (1L << (Ksatisfies - 64)) | (1L << (Kcollation - 64)) | (1L << (Kgreatest - 64)) | (1L << (Kleast - 64)) | (1L << (Kswitch - 64)) | (1L << (Kcase - 64)) | (1L << (Ktry - 64)) | (1L << (Kcatch - 64)) | (1L << (Kdefault - 64)) | (1L << (Kthen - 64)) | (1L << (Kelse - 64)) | (1L << (Ktypeswitch - 64)) | (1L << (Kor - 64)) | (1L << (Kand - 64)) | (1L << (Knot - 64)) | (1L << (Kto - 64)) | (1L << (Kinstance - 64)) | (1L << (Kof - 64)) | (1L << (Kstatically - 64)) | (1L << (Kis - 64)) | (1L << (Ktreat - 64)) | (1L << (Kcast - 64)) | (1L << (Kcastable - 64)) | (1L << (Kversion - 64)) | (1L << (Kjsoniq - 64)) | (1L << (Kunordered - 64)) | (1L << (Ktrue - 64)) | (1L << (Kfalse - 64)) | (1L << (Ktype - 64)) | (1L << (Kdeclare - 64)) | (1L << (Kcontext - 64)) | (1L << (Kitem - 64)) | (1L << (Kvariable - 64)) | (1L << (STRING - 64)) | (1L << (NullLiteral - 64)) | (1L << (Literal - 64)) | (1L << (NCName - 64)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__5) | (1L << T__22) | (1L << T__23) | (1L << T__25) | (1L << T__32) | (1L << T__47) | (1L << T__48) | (1L << T__53) | (1L << T__56) | (1L << T__58) | (1L << Kfor) | (1L << Klet) | (1L << Kwhere))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (Kgroup - 64)) | (1L << (Kby - 64)) | (1L << (Korder - 64)) | (1L << (Kreturn - 64)) | (1L << (Kif - 64)) | (1L << (Kin - 64)) | (1L << (Kas - 64)) | (1L << (Kat - 64)) | (1L << (Kallowing - 64)) | (1L << (Kempty - 64)) | (1L << (Kcount - 64)) | (1L << (Kstable - 64)) | (1L << (Kascending - 64)) | (1L << (Kdescending - 64)) | (1L << (Ksome - 64)) | (1L << (Kevery - 64)) | (1L << (Ksatisfies - 64)) | (1L << (Kcollation - 64)) | (1L << (Kgreatest - 64)) | (1L << (Kleast - 64)) | (1L << (Kswitch - 64)) | (1L << (Kcase - 64)) | (1L << (Ktry - 64)) | (1L << (Kcatch - 64)) | (1L << (Kdefault - 64)) | (1L << (Kthen - 64)) | (1L << (Kelse - 64)) | (1L << (Ktypeswitch - 64)) | (1L << (Kor - 64)) | (1L << (Kand - 64)) | (1L << (Knot - 64)) | (1L << (Kto - 64)) | (1L << (Kinstance - 64)) | (1L << (Kof - 64)) | (1L << (Kstatically - 64)) | (1L << (Kis - 64)) | (1L << (Ktreat - 64)) | (1L << (Kcast - 64)) | (1L << (Kcastable - 64)) | (1L << (Kversion - 64)) | (1L << (Kjsoniq - 64)) | (1L << (Kunordered - 64)) | (1L << (Ktrue - 64)) | (1L << (Kfalse - 64)) | (1L << (Ktype - 64)) | (1L << (Kvalidate - 64)) | (1L << (Kannotate - 64)) | (1L << (Kdeclare - 64)) | (1L << (Kcontext - 64)) | (1L << (Kitem - 64)) | (1L << (Kvariable - 64)) | (1L << (STRING - 64)) | (1L << (NullLiteral - 64)) | (1L << (Literal - 64)) | (1L << (NCName - 64)))) != 0)) {
{
- setState(957);
+ setState(967);
expr();
}
}
- setState(960);
- match(T__55);
+ setState(970);
+ match(T__54);
}
}
catch (RecognitionException re) {
@@ -6942,11 +6940,11 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final UriLiteralContext uriLiteral() throws RecognitionException {
UriLiteralContext _localctx = new UriLiteralContext(_ctx, getState());
- enterRule(_localctx, 178, RULE_uriLiteral);
+ enterRule(_localctx, 180, RULE_uriLiteral);
try {
enterOuterAlt(_localctx, 1);
{
- setState(962);
+ setState(972);
stringLiteral();
}
}
@@ -6976,11 +6974,11 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final StringLiteralContext stringLiteral() throws RecognitionException {
StringLiteralContext _localctx = new StringLiteralContext(_ctx, getState());
- enterRule(_localctx, 180, RULE_stringLiteral);
+ enterRule(_localctx, 182, RULE_stringLiteral);
try {
enterOuterAlt(_localctx, 1);
{
- setState(964);
+ setState(974);
match(STRING);
}
}
@@ -7049,6 +7047,8 @@ public static class KeyWordsContext extends ParserRuleContext {
public TerminalNode Ktrue() { return getToken(JsoniqParser.Ktrue, 0); }
public TerminalNode Kfalse() { return getToken(JsoniqParser.Kfalse, 0); }
public TerminalNode Ktype() { return getToken(JsoniqParser.Ktype, 0); }
+ public TerminalNode Kvalidate() { return getToken(JsoniqParser.Kvalidate, 0); }
+ public TerminalNode Kannotate() { return getToken(JsoniqParser.Kannotate, 0); }
public KeyWordsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -7062,14 +7062,14 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final KeyWordsContext keyWords() throws RecognitionException {
KeyWordsContext _localctx = new KeyWordsContext(_ctx, getState());
- enterRule(_localctx, 182, RULE_keyWords);
+ enterRule(_localctx, 184, RULE_keyWords);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(966);
+ setState(976);
_la = _input.LA(1);
- if ( !(((((_la - 62)) & ~0x3f) == 0 && ((1L << (_la - 62)) & ((1L << (Kfor - 62)) | (1L << (Klet - 62)) | (1L << (Kwhere - 62)) | (1L << (Kgroup - 62)) | (1L << (Kby - 62)) | (1L << (Korder - 62)) | (1L << (Kreturn - 62)) | (1L << (Kif - 62)) | (1L << (Kin - 62)) | (1L << (Kas - 62)) | (1L << (Kat - 62)) | (1L << (Kallowing - 62)) | (1L << (Kempty - 62)) | (1L << (Kcount - 62)) | (1L << (Kstable - 62)) | (1L << (Kascending - 62)) | (1L << (Kdescending - 62)) | (1L << (Ksome - 62)) | (1L << (Kevery - 62)) | (1L << (Ksatisfies - 62)) | (1L << (Kcollation - 62)) | (1L << (Kgreatest - 62)) | (1L << (Kleast - 62)) | (1L << (Kswitch - 62)) | (1L << (Kcase - 62)) | (1L << (Ktry - 62)) | (1L << (Kcatch - 62)) | (1L << (Kdefault - 62)) | (1L << (Kthen - 62)) | (1L << (Kelse - 62)) | (1L << (Ktypeswitch - 62)) | (1L << (Kor - 62)) | (1L << (Kand - 62)) | (1L << (Knot - 62)) | (1L << (Kto - 62)) | (1L << (Kinstance - 62)) | (1L << (Kof - 62)) | (1L << (Kstatically - 62)) | (1L << (Kis - 62)) | (1L << (Ktreat - 62)) | (1L << (Kcast - 62)) | (1L << (Kcastable - 62)) | (1L << (Kversion - 62)) | (1L << (Kjsoniq - 62)) | (1L << (Kunordered - 62)) | (1L << (Ktrue - 62)) | (1L << (Kfalse - 62)) | (1L << (Ktype - 62)) | (1L << (Kdeclare - 62)) | (1L << (Kcontext - 62)) | (1L << (Kitem - 62)) | (1L << (Kvariable - 62)) | (1L << (NullLiteral - 62)))) != 0)) ) {
+ if ( !(((((_la - 61)) & ~0x3f) == 0 && ((1L << (_la - 61)) & ((1L << (Kfor - 61)) | (1L << (Klet - 61)) | (1L << (Kwhere - 61)) | (1L << (Kgroup - 61)) | (1L << (Kby - 61)) | (1L << (Korder - 61)) | (1L << (Kreturn - 61)) | (1L << (Kif - 61)) | (1L << (Kin - 61)) | (1L << (Kas - 61)) | (1L << (Kat - 61)) | (1L << (Kallowing - 61)) | (1L << (Kempty - 61)) | (1L << (Kcount - 61)) | (1L << (Kstable - 61)) | (1L << (Kascending - 61)) | (1L << (Kdescending - 61)) | (1L << (Ksome - 61)) | (1L << (Kevery - 61)) | (1L << (Ksatisfies - 61)) | (1L << (Kcollation - 61)) | (1L << (Kgreatest - 61)) | (1L << (Kleast - 61)) | (1L << (Kswitch - 61)) | (1L << (Kcase - 61)) | (1L << (Ktry - 61)) | (1L << (Kcatch - 61)) | (1L << (Kdefault - 61)) | (1L << (Kthen - 61)) | (1L << (Kelse - 61)) | (1L << (Ktypeswitch - 61)) | (1L << (Kor - 61)) | (1L << (Kand - 61)) | (1L << (Knot - 61)) | (1L << (Kto - 61)) | (1L << (Kinstance - 61)) | (1L << (Kof - 61)) | (1L << (Kstatically - 61)) | (1L << (Kis - 61)) | (1L << (Ktreat - 61)) | (1L << (Kcast - 61)) | (1L << (Kcastable - 61)) | (1L << (Kversion - 61)) | (1L << (Kjsoniq - 61)) | (1L << (Kunordered - 61)) | (1L << (Ktrue - 61)) | (1L << (Kfalse - 61)) | (1L << (Ktype - 61)) | (1L << (Kvalidate - 61)) | (1L << (Kannotate - 61)) | (1L << (Kdeclare - 61)) | (1L << (Kcontext - 61)) | (1L << (Kitem - 61)) | (1L << (Kvariable - 61)) | (1L << (NullLiteral - 61)))) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
@@ -7091,8 +7091,8 @@ public final KeyWordsContext keyWords() throws RecognitionException {
}
public static final String _serializedATN =
- "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\177\u03cb\4\2\t\2"+
- "\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u0080\u03d5\4\2\t"+
+ "\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
@@ -7101,359 +7101,363 @@ public final KeyWordsContext keyWords() throws RecognitionException {
"\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+
"\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+
"\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+
- "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\3\2\3\2\3\2\3"+
- "\3\3\3\3\3\3\3\3\3\5\3\u00c3\n\3\3\3\3\3\5\3\u00c7\n\3\3\4\3\4\3\4\3\5"+
- "\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\5\6\u00d7\n\6\3\6\3\6\7\6\u00db"+
- "\n\6\f\6\16\6\u00de\13\6\3\6\3\6\3\6\7\6\u00e3\n\6\f\6\16\6\u00e6\13\6"+
- "\3\7\3\7\3\7\3\7\5\7\u00ec\n\7\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t"+
- "\5\t\u00f8\n\t\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f"+
- "\3\f\3\f\3\r\3\r\3\r\3\r\3\r\5\r\u010e\n\r\3\r\3\r\3\r\3\r\7\r\u0114\n"+
- "\r\f\r\16\r\u0117\13\r\3\16\3\16\5\16\u011b\n\16\3\16\5\16\u011e\n\16"+
- "\3\16\3\16\5\16\u0122\n\16\3\17\3\17\3\20\3\20\3\20\3\20\3\20\5\20\u012b"+
- "\n\20\3\20\3\20\3\20\3\20\3\20\7\20\u0132\n\20\f\20\16\20\u0135\13\20"+
- "\5\20\u0137\n\20\3\21\3\21\3\21\3\21\3\21\5\21\u013e\n\21\3\21\3\21\3"+
- "\21\3\21\3\21\5\21\u0145\n\21\5\21\u0147\n\21\3\22\3\22\3\22\3\22\3\22"+
- "\5\22\u014e\n\22\3\22\3\22\3\22\3\22\3\22\5\22\u0155\n\22\5\22\u0157\n"+
- "\22\3\23\3\23\3\23\3\23\3\23\5\23\u015e\n\23\3\23\3\23\3\23\5\23\u0163"+
- "\n\23\3\23\3\23\5\23\u0167\n\23\3\23\3\23\5\23\u016b\n\23\3\24\3\24\3"+
- "\24\3\24\3\24\5\24\u0172\n\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25"+
- "\5\25\u017c\n\25\3\26\3\26\3\26\7\26\u0181\n\26\f\26\16\26\u0184\13\26"+
- "\3\27\3\27\3\27\3\27\5\27\u018a\n\27\3\30\3\30\3\30\7\30\u018f\n\30\f"+
- "\30\16\30\u0192\13\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31\5\31\u019b\n"+
- "\31\3\32\3\32\5\32\u019f\n\32\3\32\3\32\3\32\3\32\3\32\3\32\7\32\u01a7"+
- "\n\32\f\32\16\32\u01aa\13\32\3\32\3\32\3\32\3\33\3\33\3\33\3\33\7\33\u01b3"+
- "\n\33\f\33\16\33\u01b6\13\33\3\34\3\34\3\34\5\34\u01bb\n\34\3\34\3\34"+
- "\5\34\u01bf\n\34\3\34\3\34\5\34\u01c3\n\34\3\34\3\34\3\34\3\35\3\35\3"+
- "\35\3\35\7\35\u01cc\n\35\f\35\16\35\u01cf\13\35\3\36\3\36\3\36\5\36\u01d4"+
- "\n\36\3\36\3\36\3\36\3\37\3\37\3\37\3 \3 \3 \3 \3 \7 \u01e1\n \f \16 "+
- "\u01e4\13 \3!\3!\3!\5!\u01e9\n!\3!\3!\5!\u01ed\n!\3!\3!\5!\u01f1\n!\3"+
- "\"\3\"\3\"\3\"\3\"\5\"\u01f8\n\"\3\"\3\"\3\"\7\"\u01fd\n\"\f\"\16\"\u0200"+
- "\13\"\3#\3#\3#\5#\u0205\n#\3#\3#\3#\5#\u020a\n#\5#\u020c\n#\3#\3#\5#\u0210"+
- "\n#\3$\3$\3$\3%\3%\5%\u0217\n%\3%\3%\3%\7%\u021c\n%\f%\16%\u021f\13%\3"+
- "%\3%\3%\3&\3&\3&\5&\u0227\n&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\6\'\u0231\n"+
- "\'\r\'\16\'\u0232\3\'\3\'\3\'\3\'\3(\3(\6(\u023b\n(\r(\16(\u023c\3(\3"+
- "(\3(\3)\3)\3)\3)\3)\6)\u0247\n)\r)\16)\u0248\3)\3)\5)\u024d\n)\3)\3)\3"+
- ")\3*\3*\3*\3*\5*\u0256\n*\3*\3*\3*\7*\u025b\n*\f*\16*\u025e\13*\3*\3*"+
- "\3*\3+\3+\3+\3+\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\6,\u0271\n,\r,\16,\u0272"+
- "\3-\3-\3-\5-\u0278\n-\3-\3-\3-\5-\u027d\n-\7-\u027f\n-\f-\16-\u0282\13"+
- "-\3-\3-\3-\3-\3.\3.\3.\7.\u028b\n.\f.\16.\u028e\13.\3/\3/\3/\7/\u0293"+
- "\n/\f/\16/\u0296\13/\3\60\5\60\u0299\n\60\3\60\3\60\3\61\3\61\3\61\5\61"+
- "\u02a0\n\61\3\62\3\62\3\62\7\62\u02a5\n\62\f\62\16\62\u02a8\13\62\3\63"+
- "\3\63\3\63\5\63\u02ad\n\63\3\64\3\64\3\64\7\64\u02b2\n\64\f\64\16\64\u02b5"+
- "\13\64\3\65\3\65\3\65\7\65\u02ba\n\65\f\65\16\65\u02bd\13\65\3\66\3\66"+
- "\3\66\3\66\5\66\u02c3\n\66\3\67\3\67\3\67\3\67\5\67\u02c9\n\67\38\38\3"+
- "8\38\58\u02cf\n8\39\39\39\39\59\u02d5\n9\3:\3:\3:\3:\5:\u02db\n:\3;\3"+
- ";\3;\3;\3;\3;\3;\7;\u02e4\n;\f;\16;\u02e7\13;\3<\3<\3<\5<\u02ec\n<\3="+
- "\7=\u02ef\n=\f=\16=\u02f2\13=\3=\3=\3>\3>\5>\u02f8\n>\3?\3?\3?\3?\3?\3"+
- "?\3?\3@\3@\3@\7@\u0304\n@\f@\16@\u0307\13@\3A\3A\3A\3A\3A\3A\7A\u030f"+
- "\nA\fA\16A\u0312\13A\3B\3B\3B\3B\3B\3B\3C\3C\3C\3D\3D\3D\3D\3E\3E\3E\3"+
- "E\3E\3E\3E\5E\u0328\nE\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\5F\u0338"+
- "\nF\3G\3G\3G\3H\3H\5H\u033f\nH\3H\3H\3I\3I\3J\3J\3J\3J\3J\3K\3K\3K\3K"+
- "\3K\3L\3L\3L\3M\3M\3M\5M\u0355\nM\7M\u0357\nM\fM\16M\u035a\13M\3M\3M\3"+
- "N\3N\5N\u0360\nN\3O\3O\5O\u0364\nO\3P\3P\3P\3P\3Q\3Q\3Q\5Q\u036d\nQ\3"+
- "Q\3Q\3Q\5Q\u0372\nQ\3Q\3Q\5Q\u0376\nQ\3Q\3Q\3R\3R\3R\3R\3R\3R\5R\u0380"+
- "\nR\5R\u0382\nR\3S\3S\3S\3S\7S\u0388\nS\fS\16S\u038b\13S\5S\u038d\nS\3"+
- "S\3S\3S\3S\3S\5S\u0394\nS\3T\3T\3T\5T\u0399\nT\3U\3U\5U\u039d\nU\3V\3"+
- "V\3V\3V\3V\3W\3W\3W\3W\3W\7W\u03a9\nW\fW\16W\u03ac\13W\5W\u03ae\nW\3W"+
- "\3W\3W\3W\3X\3X\5X\u03b6\nX\3Y\3Y\5Y\u03ba\nY\3Y\3Y\3Y\3Z\3Z\5Z\u03c1"+
- "\nZ\3Z\3Z\3[\3[\3\\\3\\\3]\3]\3]\2\2^\2\4\6\b\n\f\16\20\22\24\26\30\32"+
- "\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080"+
- "\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098"+
- "\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0"+
- "\u00b2\u00b4\u00b6\u00b8\2\n\4\2\b\bll\3\2UV\3\2\13\24\4\2\6\6&\60\3\2"+
- "\62\63\4\2%%\64\66\4\2\n\nuu\4\2@svv\2\u03fe\2\u00ba\3\2\2\2\4\u00c2\3"+
- "\2\2\2\6\u00c8\3\2\2\2\b\u00cb\3\2\2\2\n\u00dc\3\2\2\2\f\u00eb\3\2\2\2"+
- "\16\u00ed\3\2\2\2\20\u00f7\3\2\2\2\22\u00f9\3\2\2\2\24\u00fe\3\2\2\2\26"+
- "\u0102\3\2\2\2\30\u0108\3\2\2\2\32\u011d\3\2\2\2\34\u0123\3\2\2\2\36\u0125"+
- "\3\2\2\2 \u0138\3\2\2\2\"\u0148\3\2\2\2$\u0158\3\2\2\2&\u016c\3\2\2\2"+
- "(\u017b\3\2\2\2*\u017d\3\2\2\2,\u0185\3\2\2\2.\u018b\3\2\2\2\60\u019a"+
- "\3\2\2\2\62\u019e\3\2\2\2\64\u01ae\3\2\2\2\66\u01b7\3\2\2\28\u01c7\3\2"+
- "\2\2:\u01d0\3\2\2\2<\u01d8\3\2\2\2>\u01db\3\2\2\2@\u01e5\3\2\2\2B\u01f7"+
- "\3\2\2\2D\u0201\3\2\2\2F\u0211\3\2\2\2H\u0216\3\2\2\2J\u0223\3\2\2\2L"+
- "\u022b\3\2\2\2N\u023a\3\2\2\2P\u0241\3\2\2\2R\u0251\3\2\2\2T\u0262\3\2"+
- "\2\2V\u026b\3\2\2\2X\u0274\3\2\2\2Z\u0287\3\2\2\2\\\u028f\3\2\2\2^\u0298"+
- "\3\2\2\2`\u029c\3\2\2\2b\u02a1\3\2\2\2d\u02a9\3\2\2\2f\u02ae\3\2\2\2h"+
- "\u02b6\3\2\2\2j\u02be\3\2\2\2l\u02c4\3\2\2\2n\u02ca\3\2\2\2p\u02d0\3\2"+
- "\2\2r\u02d6\3\2\2\2t\u02dc\3\2\2\2v\u02eb\3\2\2\2x\u02f0\3\2\2\2z\u02f7"+
- "\3\2\2\2|\u02f9\3\2\2\2~\u0300\3\2\2\2\u0080\u0308\3\2\2\2\u0082\u0313"+
- "\3\2\2\2\u0084\u0319\3\2\2\2\u0086\u031c\3\2\2\2\u0088\u0320\3\2\2\2\u008a"+
- "\u0337\3\2\2\2\u008c\u0339\3\2\2\2\u008e\u033c\3\2\2\2\u0090\u0342\3\2"+
- "\2\2\u0092\u0344\3\2\2\2\u0094\u0349\3\2\2\2\u0096\u034e\3\2\2\2\u0098"+
- "\u0351\3\2\2\2\u009a\u035f\3\2\2\2\u009c\u0363\3\2\2\2\u009e\u0365\3\2"+
- "\2\2\u00a0\u0369\3\2\2\2\u00a2\u0381\3\2\2\2\u00a4\u0393\3\2\2\2\u00a6"+
- "\u0398\3\2\2\2\u00a8\u039c\3\2\2\2\u00aa\u039e\3\2\2\2\u00ac\u03a3\3\2"+
- "\2\2\u00ae\u03b3\3\2\2\2\u00b0\u03b9\3\2\2\2\u00b2\u03be\3\2\2\2\u00b4"+
- "\u03c4\3\2\2\2\u00b6\u03c6\3\2\2\2\u00b8\u03c8\3\2\2\2\u00ba\u00bb\5\4"+
- "\3\2\u00bb\u00bc\7\2\2\3\u00bc\3\3\2\2\2\u00bd\u00be\7k\2\2\u00be\u00bf"+
- "\7j\2\2\u00bf\u00c0\5\u00b6\\\2\u00c0\u00c1\7\3\2\2\u00c1\u00c3\3\2\2"+
- "\2\u00c2\u00bd\3\2\2\2\u00c2\u00c3\3\2\2\2\u00c3\u00c6\3\2\2\2\u00c4\u00c7"+
- "\5\b\5\2\u00c5\u00c7\5\6\4\2\u00c6\u00c4\3\2\2\2\u00c6\u00c5\3\2\2\2\u00c7"+
- "\5\3\2\2\2\u00c8\u00c9\5\n\6\2\u00c9\u00ca\5.\30\2\u00ca\7\3\2\2\2\u00cb"+
- "\u00cc\7\4\2\2\u00cc\u00cd\7\5\2\2\u00cd\u00ce\7}\2\2\u00ce\u00cf\7\6"+
- "\2\2\u00cf\u00d0\5\u00b4[\2\u00d0\u00d1\7\3\2\2\u00d1\u00d2\5\n\6\2\u00d2"+
- "\t\3\2\2\2\u00d3\u00d7\5\f\7\2\u00d4\u00d7\5\16\b\2\u00d5\u00d7\5\36\20"+
- "\2\u00d6\u00d3\3\2\2\2\u00d6\u00d4\3\2\2\2\u00d6\u00d5\3\2\2\2\u00d7\u00d8"+
- "\3\2\2\2\u00d8\u00d9\7\3\2\2\u00d9\u00db\3\2\2\2\u00da\u00d6\3\2\2\2\u00db"+
- "\u00de\3\2\2\2\u00dc\u00da\3\2\2\2\u00dc\u00dd\3\2\2\2\u00dd\u00e4\3\2"+
- "\2\2\u00de\u00dc\3\2\2\2\u00df\u00e0\5\20\t\2\u00e0\u00e1\7\3\2\2\u00e1"+
- "\u00e3\3\2\2\2\u00e2\u00df\3\2\2\2\u00e3\u00e6\3\2\2\2\u00e4\u00e2\3\2"+
- "\2\2\u00e4\u00e5\3\2\2\2\u00e5\13\3\2\2\2\u00e6\u00e4\3\2\2\2\u00e7\u00ec"+
- "\5\22\n\2\u00e8\u00ec\5\24\13\2\u00e9\u00ec\5\26\f\2\u00ea\u00ec\5\30"+
- "\r\2\u00eb\u00e7\3\2\2\2\u00eb\u00e8\3\2\2\2\u00eb\u00e9\3\2\2\2\u00eb"+
- "\u00ea\3\2\2\2\u00ec\r\3\2\2\2\u00ed\u00ee\7p\2\2\u00ee\u00ef\7\5\2\2"+
- "\u00ef\u00f0\7}\2\2\u00f0\u00f1\7\6\2\2\u00f1\u00f2\5\u00b4[\2\u00f2\17"+
- "\3\2\2\2\u00f3\u00f8\5$\23\2\u00f4\u00f8\5 \21\2\u00f5\u00f8\5&\24\2\u00f6"+
- "\u00f8\5\"\22\2\u00f7\u00f3\3\2\2\2\u00f7\u00f4\3\2\2\2\u00f7\u00f5\3"+
- "\2\2\2\u00f7\u00f6\3\2\2\2\u00f8\21\3\2\2\2\u00f9\u00fa\7p\2\2\u00fa\u00fb"+
- "\7[\2\2\u00fb\u00fc\7T\2\2\u00fc\u00fd\5\u00b4[\2\u00fd\23\3\2\2\2\u00fe"+
- "\u00ff\7p\2\2\u00ff\u0100\7\7\2\2\u0100\u0101\t\2\2\2\u0101\25\3\2\2\2"+
- "\u0102\u0103\7p\2\2\u0103\u0104\7[\2\2\u0104\u0105\7E\2\2\u0105\u0106"+
- "\7L\2\2\u0106\u0107\t\3\2\2\u0107\27\3\2\2\2\u0108\u010d\7p\2\2\u0109"+
- "\u010a\7\t\2\2\u010a\u010e\5\32\16\2\u010b\u010c\7[\2\2\u010c\u010e\7"+
- "\t\2\2\u010d\u0109\3\2\2\2\u010d\u010b\3\2\2\2\u010e\u0115\3\2\2\2\u010f"+
- "\u0110\5\34\17\2\u0110\u0111\7\6\2\2\u0111\u0112\5\u00b6\\\2\u0112\u0114"+
- "\3\2\2\2\u0113\u010f\3\2\2\2\u0114\u0117\3\2\2\2\u0115\u0113\3\2\2\2\u0115"+
- "\u0116\3\2\2\2\u0116\31\3\2\2\2\u0117\u0115\3\2\2\2\u0118\u011b\7}\2\2"+
- "\u0119\u011b\5\u00b8]\2\u011a\u0118\3\2\2\2\u011a\u0119\3\2\2\2\u011b"+
- "\u011c\3\2\2\2\u011c\u011e\7\n\2\2\u011d\u011a\3\2\2\2\u011d\u011e\3\2"+
- "\2\2\u011e\u0121\3\2\2\2\u011f\u0122\7}\2\2\u0120\u0122\5\u00b8]\2\u0121"+
- "\u011f\3\2\2\2\u0121\u0120\3\2\2\2\u0122\33\3\2\2\2\u0123\u0124\t\4\2"+
- "\2\u0124\35\3\2\2\2\u0125\u0126\7\25\2\2\u0126\u012a\7\4\2\2\u0127\u0128"+
- "\7\5\2\2\u0128\u0129\7}\2\2\u0129\u012b\7\6\2\2\u012a\u0127\3\2\2\2\u012a"+
- "\u012b\3\2\2\2\u012b\u012c\3\2\2\2\u012c\u0136\5\u00b4[\2\u012d\u012e"+
- "\7J\2\2\u012e\u0133\5\u00b4[\2\u012f\u0130\7\26\2\2\u0130\u0132\5\u00b4"+
- "[\2\u0131\u012f\3\2\2\2\u0132\u0135\3\2\2\2\u0133\u0131\3\2\2\2\u0133"+
- "\u0134\3\2\2\2\u0134\u0137\3\2\2\2\u0135\u0133\3\2\2\2\u0136\u012d\3\2"+
- "\2\2\u0136\u0137\3\2\2\2\u0137\37\3\2\2\2\u0138\u0139\7p\2\2\u0139\u013a"+
- "\7s\2\2\u013a\u013d\5\u008cG\2\u013b\u013c\7I\2\2\u013c\u013e\5\u00a2"+
- "R\2\u013d\u013b\3\2\2\2\u013d\u013e\3\2\2\2\u013e\u0146\3\2\2\2\u013f"+
- "\u0140\7\27\2\2\u0140\u0147\5\60\31\2\u0141\u0144\7\30\2\2\u0142\u0143"+
- "\7\27\2\2\u0143\u0145\5\60\31\2\u0144\u0142\3\2\2\2\u0144\u0145\3\2\2"+
- "\2\u0145\u0147\3\2\2\2\u0146\u013f\3\2\2\2\u0146\u0141\3\2\2\2\u0147!"+
- "\3\2\2\2\u0148\u0149\7p\2\2\u0149\u014a\7q\2\2\u014a\u014d\7r\2\2\u014b"+
- "\u014c\7I\2\2\u014c\u014e\5\u00a2R\2\u014d\u014b\3\2\2\2\u014d\u014e\3"+
- "\2\2\2\u014e\u0156\3\2\2\2\u014f\u0150\7\27\2\2\u0150\u0157\5\60\31\2"+
- "\u0151\u0154\7\30\2\2\u0152\u0153\7\27\2\2\u0153\u0155\5\60\31\2\u0154"+
- "\u0152\3\2\2\2\u0154\u0155\3\2\2\2\u0155\u0157\3\2\2\2\u0156\u014f\3\2"+
- "\2\2\u0156\u0151\3\2\2\2\u0157#\3\2\2\2\u0158\u0159\7p\2\2\u0159\u015a"+
- "\7\31\2\2\u015a\u015b\5\32\16\2\u015b\u015d\7\32\2\2\u015c\u015e\5*\26"+
- "\2\u015d\u015c\3\2\2\2\u015d\u015e\3\2\2\2\u015e\u015f\3\2\2\2\u015f\u0162"+
- "\7\33\2\2\u0160\u0161\7I\2\2\u0161\u0163\5\u00a2R\2\u0162\u0160\3\2\2"+
- "\2\u0162\u0163\3\2\2\2\u0163\u016a\3\2\2\2\u0164\u0166\7\34\2\2\u0165"+
- "\u0167\5.\30\2\u0166\u0165\3\2\2\2\u0166\u0167\3\2\2\2\u0167\u0168\3\2"+
- "\2\2\u0168\u016b\7\35\2\2\u0169\u016b\7\30\2\2\u016a\u0164\3\2\2\2\u016a"+
- "\u0169\3\2\2\2\u016b%\3\2\2\2\u016c\u016d\7p\2\2\u016d\u016e\7o\2\2\u016e"+
- "\u016f\5\32\16\2\u016f\u0171\7I\2\2\u0170\u0172\5(\25\2\u0171\u0170\3"+
- "\2\2\2\u0171\u0172\3\2\2\2\u0172\u0173\3\2\2\2\u0173\u0174\5\60\31\2\u0174"+
- "\'\3\2\2\2\u0175\u0176\7\36\2\2\u0176\u017c\7\37\2\2\u0177\u0178\7\36"+
- "\2\2\u0178\u017c\7 \2\2\u0179\u017a\7!\2\2\u017a\u017c\7\"\2\2\u017b\u0175"+
- "\3\2\2\2\u017b\u0177\3\2\2\2\u017b\u0179\3\2\2\2\u017c)\3\2\2\2\u017d"+
- "\u0182\5,\27\2\u017e\u017f\7\26\2\2\u017f\u0181\5,\27\2\u0180\u017e\3"+
- "\2\2\2\u0181\u0184\3\2\2\2\u0182\u0180\3\2\2\2\u0182\u0183\3\2\2\2\u0183"+
- "+\3\2\2\2\u0184\u0182\3\2\2\2\u0185\u0186\7#\2\2\u0186\u0189\5\32\16\2"+
- "\u0187\u0188\7I\2\2\u0188\u018a\5\u00a2R\2\u0189\u0187\3\2\2\2\u0189\u018a"+
- "\3\2\2\2\u018a-\3\2\2\2\u018b\u0190\5\60\31\2\u018c\u018d\7\26\2\2\u018d"+
- "\u018f\5\60\31\2\u018e\u018c\3\2\2\2\u018f\u0192\3\2\2\2\u0190\u018e\3"+
- "\2\2\2\u0190\u0191\3\2\2\2\u0191/\3\2\2\2\u0192\u0190\3\2\2\2\u0193\u019b"+
- "\5\62\32\2\u0194\u019b\5H%\2\u0195\u019b\5L\'\2\u0196\u019b\5P)\2\u0197"+
- "\u019b\5T+\2\u0198\u019b\5V,\2\u0199\u019b\5Z.\2\u019a\u0193\3\2\2\2\u019a"+
- "\u0194\3\2\2\2\u019a\u0195\3\2\2\2\u019a\u0196\3\2\2\2\u019a\u0197\3\2"+
- "\2\2\u019a\u0198\3\2\2\2\u019a\u0199\3\2\2\2\u019b\61\3\2\2\2\u019c\u019f"+
- "\5\64\33\2\u019d\u019f\58\35\2\u019e\u019c\3\2\2\2\u019e\u019d\3\2\2\2"+
- "\u019f\u01a8\3\2\2\2\u01a0\u01a7\5\64\33\2\u01a1\u01a7\5<\37\2\u01a2\u01a7"+
- "\58\35\2\u01a3\u01a7\5> \2\u01a4\u01a7\5B\"\2\u01a5\u01a7\5F$\2\u01a6"+
- "\u01a0\3\2\2\2\u01a6\u01a1\3\2\2\2\u01a6\u01a2\3\2\2\2\u01a6\u01a3\3\2"+
- "\2\2\u01a6\u01a4\3\2\2\2\u01a6\u01a5\3\2\2\2\u01a7\u01aa\3\2\2\2\u01a8"+
- "\u01a6\3\2\2\2\u01a8\u01a9\3\2\2\2\u01a9\u01ab\3\2\2\2\u01aa\u01a8\3\2"+
- "\2\2\u01ab\u01ac\7F\2\2\u01ac\u01ad\5\60\31\2\u01ad\63\3\2\2\2\u01ae\u01af"+
- "\7@\2\2\u01af\u01b4\5\66\34\2\u01b0\u01b1\7\26\2\2\u01b1\u01b3\5\66\34"+
- "\2\u01b2\u01b0\3\2\2\2\u01b3\u01b6\3\2\2\2\u01b4\u01b2\3\2\2\2\u01b4\u01b5"+
- "\3\2\2\2\u01b5\65\3\2\2\2\u01b6\u01b4\3\2\2\2\u01b7\u01ba\5\u008cG\2\u01b8"+
- "\u01b9\7I\2\2\u01b9\u01bb\5\u00a2R\2\u01ba\u01b8\3\2\2\2\u01ba\u01bb\3"+
- "\2\2\2\u01bb\u01be\3\2\2\2\u01bc\u01bd\7K\2\2\u01bd\u01bf\7L\2\2\u01be"+
- "\u01bc\3\2\2\2\u01be\u01bf\3\2\2\2\u01bf\u01c2\3\2\2\2\u01c0\u01c1\7J"+
- "\2\2\u01c1\u01c3\5\u008cG\2\u01c2\u01c0\3\2\2\2\u01c2\u01c3\3\2\2\2\u01c3"+
- "\u01c4\3\2\2\2\u01c4\u01c5\7H\2\2\u01c5\u01c6\5\60\31\2\u01c6\67\3\2\2"+
- "\2\u01c7\u01c8\7A\2\2\u01c8\u01cd\5:\36\2\u01c9\u01ca\7\26\2\2\u01ca\u01cc"+
- "\5:\36\2\u01cb\u01c9\3\2\2\2\u01cc\u01cf\3\2\2\2\u01cd\u01cb\3\2\2\2\u01cd"+
- "\u01ce\3\2\2\2\u01ce9\3\2\2\2\u01cf\u01cd\3\2\2\2\u01d0\u01d3\5\u008c"+
- "G\2\u01d1\u01d2\7I\2\2\u01d2\u01d4\5\u00a2R\2\u01d3\u01d1\3\2\2\2\u01d3"+
- "\u01d4\3\2\2\2\u01d4\u01d5\3\2\2\2\u01d5\u01d6\7\27\2\2\u01d6\u01d7\5"+
- "\60\31\2\u01d7;\3\2\2\2\u01d8\u01d9\7B\2\2\u01d9\u01da\5\60\31\2\u01da"+
- "=\3\2\2\2\u01db\u01dc\7C\2\2\u01dc\u01dd\7D\2\2\u01dd\u01e2\5@!\2\u01de"+
- "\u01df\7\26\2\2\u01df\u01e1\5@!\2\u01e0\u01de\3\2\2\2\u01e1\u01e4\3\2"+
- "\2\2\u01e2\u01e0\3\2\2\2\u01e2\u01e3\3\2\2\2\u01e3?\3\2\2\2\u01e4\u01e2"+
- "\3\2\2\2\u01e5\u01ec\5\u008cG\2\u01e6\u01e7\7I\2\2\u01e7\u01e9\5\u00a2"+
- "R\2\u01e8\u01e6\3\2\2\2\u01e8\u01e9\3\2\2\2\u01e9\u01ea\3\2\2\2\u01ea"+
- "\u01eb\7\27\2\2\u01eb\u01ed\5\60\31\2\u01ec\u01e8\3\2\2\2\u01ec\u01ed"+
- "\3\2\2\2\u01ed\u01f0\3\2\2\2\u01ee\u01ef\7T\2\2\u01ef\u01f1\5\u00b4[\2"+
- "\u01f0\u01ee\3\2\2\2\u01f0\u01f1\3\2\2\2\u01f1A\3\2\2\2\u01f2\u01f3\7"+
- "E\2\2\u01f3\u01f8\7D\2\2\u01f4\u01f5\7N\2\2\u01f5\u01f6\7E\2\2\u01f6\u01f8"+
- "\7D\2\2\u01f7\u01f2\3\2\2\2\u01f7\u01f4\3\2\2\2\u01f8\u01f9\3\2\2\2\u01f9"+
- "\u01fe\5D#\2\u01fa\u01fb\7\26\2\2\u01fb\u01fd\5D#\2\u01fc\u01fa\3\2\2"+
- "\2\u01fd\u0200\3\2\2\2\u01fe\u01fc\3\2\2\2\u01fe\u01ff\3\2\2\2\u01ffC"+
- "\3\2\2\2\u0200\u01fe\3\2\2\2\u0201\u0204\5\60\31\2\u0202\u0205\7O\2\2"+
- "\u0203\u0205\7P\2\2\u0204\u0202\3\2\2\2\u0204\u0203\3\2\2\2\u0204\u0205"+
- "\3\2\2\2\u0205\u020b\3\2\2\2\u0206\u0209\7L\2\2\u0207\u020a\7U\2\2\u0208"+
- "\u020a\7V\2\2\u0209\u0207\3\2\2\2\u0209\u0208\3\2\2\2\u020a\u020c\3\2"+
- "\2\2\u020b\u0206\3\2\2\2\u020b\u020c\3\2\2\2\u020c\u020f\3\2\2\2\u020d"+
- "\u020e\7T\2\2\u020e\u0210\5\u00b4[\2\u020f\u020d\3\2\2\2\u020f\u0210\3"+
- "\2\2\2\u0210E\3\2\2\2\u0211\u0212\7M\2\2\u0212\u0213\5\u008cG\2\u0213"+
- "G\3\2\2\2\u0214\u0217\7Q\2\2\u0215\u0217\7R\2\2\u0216\u0214\3\2\2\2\u0216"+
- "\u0215\3\2\2\2\u0217\u0218\3\2\2\2\u0218\u021d\5J&\2\u0219\u021a\7\26"+
- "\2\2\u021a\u021c\5J&\2\u021b\u0219\3\2\2\2\u021c\u021f\3\2\2\2\u021d\u021b"+
- "\3\2\2\2\u021d\u021e\3\2\2\2\u021e\u0220\3\2\2\2\u021f\u021d\3\2\2\2\u0220"+
- "\u0221\7S\2\2\u0221\u0222\5\60\31\2\u0222I\3\2\2\2\u0223\u0226\5\u008c"+
- "G\2\u0224\u0225\7I\2\2\u0225\u0227\5\u00a2R\2\u0226\u0224\3\2\2\2\u0226"+
- "\u0227\3\2\2\2\u0227\u0228\3\2\2\2\u0228\u0229\7H\2\2\u0229\u022a\5\60"+
- "\31\2\u022aK\3\2\2\2\u022b\u022c\7W\2\2\u022c\u022d\7\32\2\2\u022d\u022e"+
- "\5.\30\2\u022e\u0230\7\33\2\2\u022f\u0231\5N(\2\u0230\u022f\3\2\2\2\u0231"+
- "\u0232\3\2\2\2\u0232\u0230\3\2\2\2\u0232\u0233\3\2\2\2\u0233\u0234\3\2"+
- "\2\2\u0234\u0235\7[\2\2\u0235\u0236\7F\2\2\u0236\u0237\5\60\31\2\u0237"+
- "M\3\2\2\2\u0238\u0239\7X\2\2\u0239\u023b\5\60\31\2\u023a\u0238\3\2\2\2"+
- "\u023b\u023c\3\2\2\2\u023c\u023a\3\2\2\2\u023c\u023d\3\2\2\2\u023d\u023e"+
- "\3\2\2\2\u023e\u023f\7F\2\2\u023f\u0240\5\60\31\2\u0240O\3\2\2\2\u0241"+
- "\u0242\7^\2\2\u0242\u0243\7\32\2\2\u0243\u0244\5.\30\2\u0244\u0246\7\33"+
- "\2\2\u0245\u0247\5R*\2\u0246\u0245\3\2\2\2\u0247\u0248\3\2\2\2\u0248\u0246"+
- "\3\2\2\2\u0248\u0249\3\2\2\2\u0249\u024a\3\2\2\2\u024a\u024c\7[\2\2\u024b"+
- "\u024d\5\u008cG\2\u024c\u024b\3\2\2\2\u024c\u024d\3\2\2\2\u024d\u024e"+
- "\3\2\2\2\u024e\u024f\7F\2\2\u024f\u0250\5\60\31\2\u0250Q\3\2\2\2\u0251"+
- "\u0255\7X\2\2\u0252\u0253\5\u008cG\2\u0253\u0254\7I\2\2\u0254\u0256\3"+
- "\2\2\2\u0255\u0252\3\2\2\2\u0255\u0256\3\2\2\2\u0256\u0257\3\2\2\2\u0257"+
- "\u025c\5\u00a2R\2\u0258\u0259\7$\2\2\u0259\u025b\5\u00a2R\2\u025a\u0258"+
- "\3\2\2\2\u025b\u025e\3\2\2\2\u025c\u025a\3\2\2\2\u025c\u025d\3\2\2\2\u025d"+
- "\u025f\3\2\2\2\u025e\u025c\3\2\2\2\u025f\u0260\7F\2\2\u0260\u0261\5\60"+
- "\31\2\u0261S\3\2\2\2\u0262\u0263\7G\2\2\u0263\u0264\7\32\2\2\u0264\u0265"+
- "\5.\30\2\u0265\u0266\7\33\2\2\u0266\u0267\7\\\2\2\u0267\u0268\5\60\31"+
- "\2\u0268\u0269\7]\2\2\u0269\u026a\5\60\31\2\u026aU\3\2\2\2\u026b\u026c"+
- "\7Y\2\2\u026c\u026d\7\34\2\2\u026d\u026e\5.\30\2\u026e\u0270\7\35\2\2"+
- "\u026f\u0271\5X-\2\u0270\u026f\3\2\2\2\u0271\u0272\3\2\2\2\u0272\u0270"+
- "\3\2\2\2\u0272\u0273\3\2\2\2\u0273W\3\2\2\2\u0274\u0277\7Z\2\2\u0275\u0278"+
- "\7%\2\2\u0276\u0278\5\32\16\2\u0277\u0275\3\2\2\2\u0277\u0276\3\2\2\2"+
- "\u0278\u0280\3\2\2\2\u0279\u027c\7$\2\2\u027a\u027d\7%\2\2\u027b\u027d"+
- "\5\32\16\2\u027c\u027a\3\2\2\2\u027c\u027b\3\2\2\2\u027d\u027f\3\2\2\2"+
- "\u027e\u0279\3\2\2\2\u027f\u0282\3\2\2\2\u0280\u027e\3\2\2\2\u0280\u0281"+
- "\3\2\2\2\u0281\u0283\3\2\2\2\u0282\u0280\3\2\2\2\u0283\u0284\7\34\2\2"+
- "\u0284\u0285\5.\30\2\u0285\u0286\7\35\2\2\u0286Y\3\2\2\2\u0287\u028c\5"+
- "\\/\2\u0288\u0289\7_\2\2\u0289\u028b\5\\/\2\u028a\u0288\3\2\2\2\u028b"+
- "\u028e\3\2\2\2\u028c\u028a\3\2\2\2\u028c\u028d\3\2\2\2\u028d[\3\2\2\2"+
- "\u028e\u028c\3\2\2\2\u028f\u0294\5^\60\2\u0290\u0291\7`\2\2\u0291\u0293"+
- "\5^\60\2\u0292\u0290\3\2\2\2\u0293\u0296\3\2\2\2\u0294\u0292\3\2\2\2\u0294"+
- "\u0295\3\2\2\2\u0295]\3\2\2\2\u0296\u0294\3\2\2\2\u0297\u0299\7a\2\2\u0298"+
- "\u0297\3\2\2\2\u0298\u0299\3\2\2\2\u0299\u029a\3\2\2\2\u029a\u029b\5`"+
- "\61\2\u029b_\3\2\2\2\u029c\u029f\5b\62\2\u029d\u029e\t\5\2\2\u029e\u02a0"+
- "\5b\62\2\u029f\u029d\3\2\2\2\u029f\u02a0\3\2\2\2\u02a0a\3\2\2\2\u02a1"+
- "\u02a6\5d\63\2\u02a2\u02a3\7\61\2\2\u02a3\u02a5\5d\63\2\u02a4\u02a2\3"+
- "\2\2\2\u02a5\u02a8\3\2\2\2\u02a6\u02a4\3\2\2\2\u02a6\u02a7\3\2\2\2\u02a7"+
- "c\3\2\2\2\u02a8\u02a6\3\2\2\2\u02a9\u02ac\5f\64\2\u02aa\u02ab\7b\2\2\u02ab"+
- "\u02ad\5f\64\2\u02ac\u02aa\3\2\2\2\u02ac\u02ad\3\2\2\2\u02ade\3\2\2\2"+
- "\u02ae\u02b3\5h\65\2\u02af\u02b0\t\6\2\2\u02b0\u02b2\5h\65\2\u02b1\u02af"+
- "\3\2\2\2\u02b2\u02b5\3\2\2\2\u02b3\u02b1\3\2\2\2\u02b3\u02b4\3\2\2\2\u02b4"+
- "g\3\2\2\2\u02b5\u02b3\3\2\2\2\u02b6\u02bb\5j\66\2\u02b7\u02b8\t\7\2\2"+
- "\u02b8\u02ba\5j\66\2\u02b9\u02b7\3\2\2\2\u02ba\u02bd\3\2\2\2\u02bb\u02b9"+
- "\3\2\2\2\u02bb\u02bc\3\2\2\2\u02bci\3\2\2\2\u02bd\u02bb\3\2\2\2\u02be"+
- "\u02c2\5l\67\2\u02bf\u02c0\7c\2\2\u02c0\u02c1\7d\2\2\u02c1\u02c3\5\u00a2"+
- "R\2\u02c2\u02bf\3\2\2\2\u02c2\u02c3\3\2\2\2\u02c3k\3\2\2\2\u02c4\u02c8"+
- "\5n8\2\u02c5\u02c6\7f\2\2\u02c6\u02c7\7e\2\2\u02c7\u02c9\5\u00a2R\2\u02c8"+
- "\u02c5\3\2\2\2\u02c8\u02c9\3\2\2\2\u02c9m\3\2\2\2\u02ca\u02ce\5p9\2\u02cb"+
- "\u02cc\7g\2\2\u02cc\u02cd\7I\2\2\u02cd\u02cf\5\u00a2R\2\u02ce\u02cb\3"+
- "\2\2\2\u02ce\u02cf\3\2\2\2\u02cfo\3\2\2\2\u02d0\u02d4\5r:\2\u02d1\u02d2"+
- "\7i\2\2\u02d2\u02d3\7I\2\2\u02d3\u02d5\5\u00aeX\2\u02d4\u02d1\3\2\2\2"+
- "\u02d4\u02d5\3\2\2\2\u02d5q\3\2\2\2\u02d6\u02da\5t;\2\u02d7\u02d8\7h\2"+
- "\2\u02d8\u02d9\7I\2\2\u02d9\u02db\5\u00aeX\2\u02da\u02d7\3\2\2\2\u02da"+
- "\u02db\3\2\2\2\u02dbs\3\2\2\2\u02dc\u02e5\5x=\2\u02dd\u02de\7\6\2\2\u02de"+
- "\u02df\7/\2\2\u02df\u02e0\3\2\2\2\u02e0\u02e1\5v<\2\u02e1\u02e2\5\u0098"+
- "M\2\u02e2\u02e4\3\2\2\2\u02e3\u02dd\3\2\2\2\u02e4\u02e7\3\2\2\2\u02e5"+
- "\u02e3\3\2\2\2\u02e5\u02e6\3\2\2\2\u02e6u\3\2\2\2\u02e7\u02e5\3\2\2\2"+
- "\u02e8\u02ec\5\32\16\2\u02e9\u02ec\5\u008cG\2\u02ea\u02ec\5\u008eH\2\u02eb"+
- "\u02e8\3\2\2\2\u02eb\u02e9\3\2\2\2\u02eb\u02ea\3\2\2\2\u02ecw\3\2\2\2"+
- "\u02ed\u02ef\t\6\2\2\u02ee\u02ed\3\2\2\2\u02ef\u02f2\3\2\2\2\u02f0\u02ee"+
- "\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1\u02f3\3\2\2\2\u02f2\u02f0\3\2\2\2\u02f3"+
- "\u02f4\5z>\2\u02f4y\3\2\2\2\u02f5\u02f8\5~@\2\u02f6\u02f8\5|?\2\u02f7"+
- "\u02f5\3\2\2\2\u02f7\u02f6\3\2\2\2\u02f8{\3\2\2\2\u02f9\u02fa\7\67\2\2"+
- "\u02fa\u02fb\7o\2\2\u02fb\u02fc\5\u00a2R\2\u02fc\u02fd\7\34\2\2\u02fd"+
- "\u02fe\5.\30\2\u02fe\u02ff\7\35\2\2\u02ff}\3\2\2\2\u0300\u0305\5\u0080"+
- "A\2\u0301\u0302\78\2\2\u0302\u0304\5\u0080A\2\u0303\u0301\3\2\2\2\u0304"+
- "\u0307\3\2\2\2\u0305\u0303\3\2\2\2\u0305\u0306\3\2\2\2\u0306\177\3\2\2"+
- "\2\u0307\u0305\3\2\2\2\u0308\u0310\5\u008aF\2\u0309\u030f\5\u0082B\2\u030a"+
- "\u030f\5\u0086D\2\u030b\u030f\5\u0088E\2\u030c\u030f\5\u0084C\2\u030d"+
- "\u030f\5\u0098M\2\u030e\u0309\3\2\2\2\u030e\u030a\3\2\2\2\u030e\u030b"+
- "\3\2\2\2\u030e\u030c\3\2\2\2\u030e\u030d\3\2\2\2\u030f\u0312\3\2\2\2\u0310"+
- "\u030e\3\2\2\2\u0310\u0311\3\2\2\2\u0311\u0081\3\2\2\2\u0312\u0310\3\2"+
- "\2\2\u0313\u0314\79\2\2\u0314\u0315\79\2\2\u0315\u0316\5.\30\2\u0316\u0317"+
- "\7:\2\2\u0317\u0318\7:\2\2\u0318\u0083\3\2\2\2\u0319\u031a\79\2\2\u031a"+
- "\u031b\7:\2\2\u031b\u0085\3\2\2\2\u031c\u031d\79\2\2\u031d\u031e\5.\30"+
- "\2\u031e\u031f\7:\2\2\u031f\u0087\3\2\2\2\u0320\u0327\7;\2\2\u0321\u0328"+
- "\5\u00b8]\2\u0322\u0328\5\u00b6\\\2\u0323\u0328\7}\2\2\u0324\u0328\5\u008e"+
- "H\2\u0325\u0328\5\u008cG\2\u0326\u0328\5\u0090I\2\u0327\u0321\3\2\2\2"+
- "\u0327\u0322\3\2\2\2\u0327\u0323\3\2\2\2\u0327\u0324\3\2\2\2\u0327\u0325"+
- "\3\2\2\2\u0327\u0326\3\2\2\2\u0328\u0089\3\2\2\2\u0329\u0338\7v\2\2\u032a"+
- "\u0338\7m\2\2\u032b\u0338\7n\2\2\u032c\u0338\7w\2\2\u032d\u0338\5\u00b6"+
- "\\\2\u032e\u0338\5\u008cG\2\u032f\u0338\5\u008eH\2\u0330\u0338\5\u0090"+
- "I\2\u0331\u0338\5\u00a4S\2\u0332\u0338\5\u0096L\2\u0333\u0338\5\u0092"+
- "J\2\u0334\u0338\5\u0094K\2\u0335\u0338\5\u00b2Z\2\u0336\u0338\5\u009c"+
- "O\2\u0337\u0329\3\2\2\2\u0337\u032a\3\2\2\2\u0337\u032b\3\2\2\2\u0337"+
- "\u032c\3\2\2\2\u0337\u032d\3\2\2\2\u0337\u032e\3\2\2\2\u0337\u032f\3\2"+
- "\2\2\u0337\u0330\3\2\2\2\u0337\u0331\3\2\2\2\u0337\u0332\3\2\2\2\u0337"+
- "\u0333\3\2\2\2\u0337\u0334\3\2\2\2\u0337\u0335\3\2\2\2\u0337\u0336\3\2"+
- "\2\2\u0338\u008b\3\2\2\2\u0339\u033a\7#\2\2\u033a\u033b\5\32\16\2\u033b"+
- "\u008d\3\2\2\2\u033c\u033e\7\32\2\2\u033d\u033f\5.\30\2\u033e\u033d\3"+
- "\2\2\2\u033e\u033f\3\2\2\2\u033f\u0340\3\2\2\2\u0340\u0341\7\33\2\2\u0341"+
- "\u008f\3\2\2\2\u0342\u0343\7<\2\2\u0343\u0091\3\2\2\2\u0344\u0345\7\b"+
- "\2\2\u0345\u0346\7\34\2\2\u0346\u0347\5.\30\2\u0347\u0348\7\35\2\2\u0348"+
- "\u0093\3\2\2\2\u0349\u034a\7l\2\2\u034a\u034b\7\34\2\2\u034b\u034c\5."+
- "\30\2\u034c\u034d\7\35\2\2\u034d\u0095\3\2\2\2\u034e\u034f\5\32\16\2\u034f"+
- "\u0350\5\u0098M\2\u0350\u0097\3\2\2\2\u0351\u0358\7\32\2\2\u0352\u0354"+
- "\5\u009aN\2\u0353\u0355\7\26\2\2\u0354\u0353\3\2\2\2\u0354\u0355\3\2\2"+
- "\2\u0355\u0357\3\2\2\2\u0356\u0352\3\2\2\2\u0357\u035a\3\2\2\2\u0358\u0356"+
- "\3\2\2\2\u0358\u0359\3\2\2\2\u0359\u035b\3\2\2\2\u035a\u0358\3\2\2\2\u035b"+
- "\u035c\7\33\2\2\u035c\u0099\3\2\2\2\u035d\u0360\5\60\31\2\u035e\u0360"+
- "\7u\2\2\u035f\u035d\3\2\2\2\u035f\u035e\3\2\2\2\u0360\u009b\3\2\2\2\u0361"+
- "\u0364\5\u009eP\2\u0362\u0364\5\u00a0Q\2\u0363\u0361\3\2\2\2\u0363\u0362"+
- "\3\2\2\2\u0364\u009d\3\2\2\2\u0365\u0366\5\32\16\2\u0366\u0367\7=\2\2"+
- "\u0367\u0368\7w\2\2\u0368\u009f\3\2\2\2\u0369\u036a\7\31\2\2\u036a\u036c"+
- "\7\32\2\2\u036b\u036d\5*\26\2\u036c\u036b\3\2\2\2\u036c\u036d\3\2\2\2"+
- "\u036d\u036e\3\2\2\2\u036e\u0371\7\33\2\2\u036f\u0370\7I\2\2\u0370\u0372"+
- "\5\u00a2R\2\u0371\u036f\3\2\2\2\u0371\u0372\3\2\2\2\u0372\u0373\3\2\2"+
- "\2\u0373\u0375\7\34\2\2\u0374\u0376\5.\30\2\u0375\u0374\3\2\2\2\u0375"+
- "\u0376\3\2\2\2\u0376\u0377\3\2\2\2\u0377\u0378\7\35\2\2\u0378\u00a1\3"+
- "\2\2\2\u0379\u037a\7\32\2\2\u037a\u0382\7\33\2\2\u037b\u037f\5\u00a6T"+
- "\2\u037c\u0380\7u\2\2\u037d\u0380\7%\2\2\u037e\u0380\7\62\2\2\u037f\u037c"+
- "\3\2\2\2\u037f\u037d\3\2\2\2\u037f\u037e\3\2\2\2\u037f\u0380\3\2\2\2\u0380"+
- "\u0382\3\2\2\2\u0381\u0379\3\2\2\2\u0381\u037b\3\2\2\2\u0382\u00a3\3\2"+
- "\2\2\u0383\u038c\7\34\2\2\u0384\u0389\5\u00b0Y\2\u0385\u0386\7\26\2\2"+
- "\u0386\u0388\5\u00b0Y\2\u0387\u0385\3\2\2\2\u0388\u038b\3\2\2\2\u0389"+
- "\u0387\3\2\2\2\u0389\u038a\3\2\2\2\u038a\u038d\3\2\2\2\u038b\u0389\3\2"+
- "\2\2\u038c\u0384\3\2\2\2\u038c\u038d\3\2\2\2\u038d\u038e\3\2\2\2\u038e"+
- "\u0394\7\35\2\2\u038f\u0390\7>\2\2\u0390\u0391\5.\30\2\u0391\u0392\7?"+
- "\2\2\u0392\u0394\3\2\2\2\u0393\u0383\3\2\2\2\u0393\u038f\3\2\2\2\u0394"+
- "\u00a5\3\2\2\2\u0395\u0399\5\32\16\2\u0396\u0399\7v\2\2\u0397\u0399\5"+
- "\u00a8U\2\u0398\u0395\3\2\2\2\u0398\u0396\3\2\2\2\u0398\u0397\3\2\2\2"+
- "\u0399\u00a7\3\2\2\2\u039a\u039d\5\u00aaV\2\u039b\u039d\5\u00acW\2\u039c"+
- "\u039a\3\2\2\2\u039c\u039b\3\2\2\2\u039d\u00a9\3\2\2\2\u039e\u039f\7\31"+
- "\2\2\u039f\u03a0\7\32\2\2\u03a0\u03a1\7%\2\2\u03a1\u03a2\7\33\2\2\u03a2"+
- "\u00ab\3\2\2\2\u03a3\u03a4\7\31\2\2\u03a4\u03ad\7\32\2\2\u03a5\u03aa\5"+
- "\u00a2R\2\u03a6\u03a7\7\26\2\2\u03a7\u03a9\5\u00a2R\2\u03a8\u03a6\3\2"+
- "\2\2\u03a9\u03ac\3\2\2\2\u03aa\u03a8\3\2\2\2\u03aa\u03ab\3\2\2\2\u03ab"+
- "\u03ae\3\2\2\2\u03ac\u03aa\3\2\2\2\u03ad\u03a5\3\2\2\2\u03ad\u03ae\3\2"+
- "\2\2\u03ae\u03af\3\2\2\2\u03af\u03b0\7\33\2\2\u03b0\u03b1\7I\2\2\u03b1"+
- "\u03b2\5\u00a2R\2\u03b2\u00ad\3\2\2\2\u03b3\u03b5\5\u00a6T\2\u03b4\u03b6"+
- "\7u\2\2\u03b5\u03b4\3\2\2\2\u03b5\u03b6\3\2\2\2\u03b6\u00af\3\2\2\2\u03b7"+
- "\u03ba\5\60\31\2\u03b8\u03ba\7}\2\2\u03b9\u03b7\3\2\2\2\u03b9\u03b8\3"+
- "\2\2\2\u03ba\u03bb\3\2\2\2\u03bb\u03bc\t\b\2\2\u03bc\u03bd\5\60\31\2\u03bd"+
- "\u00b1\3\2\2\2\u03be\u03c0\79\2\2\u03bf\u03c1\5.\30\2\u03c0\u03bf\3\2"+
- "\2\2\u03c0\u03c1\3\2\2\2\u03c1\u03c2\3\2\2\2\u03c2\u03c3\7:\2\2\u03c3"+
- "\u00b3\3\2\2\2\u03c4\u03c5\5\u00b6\\\2\u03c5\u00b5\3\2\2\2\u03c6\u03c7"+
- "\7t\2\2\u03c7\u00b7\3\2\2\2\u03c8\u03c9\t\t\2\2\u03c9\u00b9\3\2\2\2k\u00c2"+
- "\u00c6\u00d6\u00dc\u00e4\u00eb\u00f7\u010d\u0115\u011a\u011d\u0121\u012a"+
- "\u0133\u0136\u013d\u0144\u0146\u014d\u0154\u0156\u015d\u0162\u0166\u016a"+
- "\u0171\u017b\u0182\u0189\u0190\u019a\u019e\u01a6\u01a8\u01b4\u01ba\u01be"+
- "\u01c2\u01cd\u01d3\u01e2\u01e8\u01ec\u01f0\u01f7\u01fe\u0204\u0209\u020b"+
- "\u020f\u0216\u021d\u0226\u0232\u023c\u0248\u024c\u0255\u025c\u0272\u0277"+
- "\u027c\u0280\u028c\u0294\u0298\u029f\u02a6\u02ac\u02b3\u02bb\u02c2\u02c8"+
- "\u02ce\u02d4\u02da\u02e5\u02eb\u02f0\u02f7\u0305\u030e\u0310\u0327\u0337"+
- "\u033e\u0354\u0358\u035f\u0363\u036c\u0371\u0375\u037f\u0381\u0389\u038c"+
- "\u0393\u0398\u039c\u03aa\u03ad\u03b5\u03b9\u03c0";
+ "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\3\2\3\2"+
+ "\3\2\3\3\3\3\3\3\3\3\3\3\5\3\u00c5\n\3\3\3\3\3\5\3\u00c9\n\3\3\4\3\4\3"+
+ "\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\5\6\u00d9\n\6\3\6\3\6\7"+
+ "\6\u00dd\n\6\f\6\16\6\u00e0\13\6\3\6\3\6\3\6\7\6\u00e5\n\6\f\6\16\6\u00e8"+
+ "\13\6\3\7\3\7\3\7\3\7\5\7\u00ee\n\7\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3"+
+ "\t\3\t\5\t\u00fa\n\t\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\f\3\f\3"+
+ "\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\5\r\u0110\n\r\3\r\3\r\3\r\3\r\7\r\u0116"+
+ "\n\r\f\r\16\r\u0119\13\r\3\16\3\16\5\16\u011d\n\16\3\16\5\16\u0120\n\16"+
+ "\3\16\3\16\5\16\u0124\n\16\3\17\3\17\3\20\3\20\3\20\3\20\3\20\5\20\u012d"+
+ "\n\20\3\20\3\20\3\20\3\20\3\20\7\20\u0134\n\20\f\20\16\20\u0137\13\20"+
+ "\5\20\u0139\n\20\3\21\3\21\3\21\3\21\3\21\5\21\u0140\n\21\3\21\3\21\3"+
+ "\21\3\21\3\21\5\21\u0147\n\21\5\21\u0149\n\21\3\22\3\22\3\22\3\22\3\22"+
+ "\5\22\u0150\n\22\3\22\3\22\3\22\3\22\3\22\5\22\u0157\n\22\5\22\u0159\n"+
+ "\22\3\23\3\23\3\23\3\23\3\23\5\23\u0160\n\23\3\23\3\23\3\23\5\23\u0165"+
+ "\n\23\3\23\3\23\5\23\u0169\n\23\3\23\3\23\5\23\u016d\n\23\3\24\3\24\3"+
+ "\24\3\24\3\24\5\24\u0174\n\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25"+
+ "\5\25\u017e\n\25\3\26\3\26\3\26\7\26\u0183\n\26\f\26\16\26\u0186\13\26"+
+ "\3\27\3\27\3\27\3\27\5\27\u018c\n\27\3\30\3\30\3\30\7\30\u0191\n\30\f"+
+ "\30\16\30\u0194\13\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31\5\31\u019d\n"+
+ "\31\3\32\3\32\5\32\u01a1\n\32\3\32\3\32\3\32\3\32\3\32\3\32\7\32\u01a9"+
+ "\n\32\f\32\16\32\u01ac\13\32\3\32\3\32\3\32\3\33\3\33\3\33\3\33\7\33\u01b5"+
+ "\n\33\f\33\16\33\u01b8\13\33\3\34\3\34\3\34\5\34\u01bd\n\34\3\34\3\34"+
+ "\5\34\u01c1\n\34\3\34\3\34\5\34\u01c5\n\34\3\34\3\34\3\34\3\35\3\35\3"+
+ "\35\3\35\7\35\u01ce\n\35\f\35\16\35\u01d1\13\35\3\36\3\36\3\36\5\36\u01d6"+
+ "\n\36\3\36\3\36\3\36\3\37\3\37\3\37\3 \3 \3 \3 \3 \7 \u01e3\n \f \16 "+
+ "\u01e6\13 \3!\3!\3!\5!\u01eb\n!\3!\3!\5!\u01ef\n!\3!\3!\5!\u01f3\n!\3"+
+ "\"\3\"\3\"\3\"\3\"\5\"\u01fa\n\"\3\"\3\"\3\"\7\"\u01ff\n\"\f\"\16\"\u0202"+
+ "\13\"\3#\3#\3#\5#\u0207\n#\3#\3#\3#\5#\u020c\n#\5#\u020e\n#\3#\3#\5#\u0212"+
+ "\n#\3$\3$\3$\3%\3%\5%\u0219\n%\3%\3%\3%\7%\u021e\n%\f%\16%\u0221\13%\3"+
+ "%\3%\3%\3&\3&\3&\5&\u0229\n&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\6\'\u0233\n"+
+ "\'\r\'\16\'\u0234\3\'\3\'\3\'\3\'\3(\3(\6(\u023d\n(\r(\16(\u023e\3(\3"+
+ "(\3(\3)\3)\3)\3)\3)\6)\u0249\n)\r)\16)\u024a\3)\3)\5)\u024f\n)\3)\3)\3"+
+ ")\3*\3*\3*\3*\5*\u0258\n*\3*\3*\3*\7*\u025d\n*\f*\16*\u0260\13*\3*\3*"+
+ "\3*\3+\3+\3+\3+\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\6,\u0273\n,\r,\16,\u0274"+
+ "\3-\3-\3-\5-\u027a\n-\3-\3-\3-\5-\u027f\n-\7-\u0281\n-\f-\16-\u0284\13"+
+ "-\3-\3-\3-\3-\3.\3.\3.\7.\u028d\n.\f.\16.\u0290\13.\3/\3/\3/\7/\u0295"+
+ "\n/\f/\16/\u0298\13/\3\60\5\60\u029b\n\60\3\60\3\60\3\61\3\61\3\61\5\61"+
+ "\u02a2\n\61\3\62\3\62\3\62\7\62\u02a7\n\62\f\62\16\62\u02aa\13\62\3\63"+
+ "\3\63\3\63\5\63\u02af\n\63\3\64\3\64\3\64\7\64\u02b4\n\64\f\64\16\64\u02b7"+
+ "\13\64\3\65\3\65\3\65\7\65\u02bc\n\65\f\65\16\65\u02bf\13\65\3\66\3\66"+
+ "\3\66\3\66\5\66\u02c5\n\66\3\67\3\67\3\67\3\67\5\67\u02cb\n\67\38\38\3"+
+ "8\38\58\u02d1\n8\39\39\39\39\59\u02d7\n9\3:\3:\3:\3:\5:\u02dd\n:\3;\3"+
+ ";\3;\3;\3;\3;\3;\7;\u02e6\n;\f;\16;\u02e9\13;\3<\3<\3<\5<\u02ee\n<\3="+
+ "\7=\u02f1\n=\f=\16=\u02f4\13=\3=\3=\3>\3>\3>\5>\u02fb\n>\3?\3?\3?\3?\3"+
+ "?\3?\3?\3@\3@\3@\3@\3@\3@\3@\3A\3A\3A\7A\u030e\nA\fA\16A\u0311\13A\3B"+
+ "\3B\3B\3B\3B\3B\7B\u0319\nB\fB\16B\u031c\13B\3C\3C\3C\3C\3C\3C\3D\3D\3"+
+ "D\3E\3E\3E\3E\3F\3F\3F\3F\3F\3F\3F\5F\u0332\nF\3G\3G\3G\3G\3G\3G\3G\3"+
+ "G\3G\3G\3G\3G\3G\3G\5G\u0342\nG\3H\3H\3H\3I\3I\5I\u0349\nI\3I\3I\3J\3"+
+ "J\3K\3K\3K\3K\3K\3L\3L\3L\3L\3L\3M\3M\3M\3N\3N\3N\5N\u035f\nN\7N\u0361"+
+ "\nN\fN\16N\u0364\13N\3N\3N\3O\3O\5O\u036a\nO\3P\3P\5P\u036e\nP\3Q\3Q\3"+
+ "Q\3Q\3R\3R\3R\5R\u0377\nR\3R\3R\3R\5R\u037c\nR\3R\3R\5R\u0380\nR\3R\3"+
+ "R\3S\3S\3S\3S\3S\3S\5S\u038a\nS\5S\u038c\nS\3T\3T\3T\3T\7T\u0392\nT\f"+
+ "T\16T\u0395\13T\5T\u0397\nT\3T\3T\3T\3T\3T\5T\u039e\nT\3U\3U\3U\5U\u03a3"+
+ "\nU\3V\3V\5V\u03a7\nV\3W\3W\3W\3W\3W\3X\3X\3X\3X\3X\7X\u03b3\nX\fX\16"+
+ "X\u03b6\13X\5X\u03b8\nX\3X\3X\3X\3X\3Y\3Y\5Y\u03c0\nY\3Z\3Z\5Z\u03c4\n"+
+ "Z\3Z\3Z\3Z\3[\3[\5[\u03cb\n[\3[\3[\3\\\3\\\3]\3]\3^\3^\3^\2\2_\2\4\6\b"+
+ "\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVX"+
+ "Z\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090"+
+ "\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8"+
+ "\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\2\n\4\2\b\bkk\3"+
+ "\2TU\3\2\13\24\4\2\6\6&\60\3\2\62\63\4\2%%\64\66\4\2\n\nvv\4\2?tww\2\u0408"+
+ "\2\u00bc\3\2\2\2\4\u00c4\3\2\2\2\6\u00ca\3\2\2\2\b\u00cd\3\2\2\2\n\u00de"+
+ "\3\2\2\2\f\u00ed\3\2\2\2\16\u00ef\3\2\2\2\20\u00f9\3\2\2\2\22\u00fb\3"+
+ "\2\2\2\24\u0100\3\2\2\2\26\u0104\3\2\2\2\30\u010a\3\2\2\2\32\u011f\3\2"+
+ "\2\2\34\u0125\3\2\2\2\36\u0127\3\2\2\2 \u013a\3\2\2\2\"\u014a\3\2\2\2"+
+ "$\u015a\3\2\2\2&\u016e\3\2\2\2(\u017d\3\2\2\2*\u017f\3\2\2\2,\u0187\3"+
+ "\2\2\2.\u018d\3\2\2\2\60\u019c\3\2\2\2\62\u01a0\3\2\2\2\64\u01b0\3\2\2"+
+ "\2\66\u01b9\3\2\2\28\u01c9\3\2\2\2:\u01d2\3\2\2\2<\u01da\3\2\2\2>\u01dd"+
+ "\3\2\2\2@\u01e7\3\2\2\2B\u01f9\3\2\2\2D\u0203\3\2\2\2F\u0213\3\2\2\2H"+
+ "\u0218\3\2\2\2J\u0225\3\2\2\2L\u022d\3\2\2\2N\u023c\3\2\2\2P\u0243\3\2"+
+ "\2\2R\u0253\3\2\2\2T\u0264\3\2\2\2V\u026d\3\2\2\2X\u0276\3\2\2\2Z\u0289"+
+ "\3\2\2\2\\\u0291\3\2\2\2^\u029a\3\2\2\2`\u029e\3\2\2\2b\u02a3\3\2\2\2"+
+ "d\u02ab\3\2\2\2f\u02b0\3\2\2\2h\u02b8\3\2\2\2j\u02c0\3\2\2\2l\u02c6\3"+
+ "\2\2\2n\u02cc\3\2\2\2p\u02d2\3\2\2\2r\u02d8\3\2\2\2t\u02de\3\2\2\2v\u02ed"+
+ "\3\2\2\2x\u02f2\3\2\2\2z\u02fa\3\2\2\2|\u02fc\3\2\2\2~\u0303\3\2\2\2\u0080"+
+ "\u030a\3\2\2\2\u0082\u0312\3\2\2\2\u0084\u031d\3\2\2\2\u0086\u0323\3\2"+
+ "\2\2\u0088\u0326\3\2\2\2\u008a\u032a\3\2\2\2\u008c\u0341\3\2\2\2\u008e"+
+ "\u0343\3\2\2\2\u0090\u0346\3\2\2\2\u0092\u034c\3\2\2\2\u0094\u034e\3\2"+
+ "\2\2\u0096\u0353\3\2\2\2\u0098\u0358\3\2\2\2\u009a\u035b\3\2\2\2\u009c"+
+ "\u0369\3\2\2\2\u009e\u036d\3\2\2\2\u00a0\u036f\3\2\2\2\u00a2\u0373\3\2"+
+ "\2\2\u00a4\u038b\3\2\2\2\u00a6\u039d\3\2\2\2\u00a8\u03a2\3\2\2\2\u00aa"+
+ "\u03a6\3\2\2\2\u00ac\u03a8\3\2\2\2\u00ae\u03ad\3\2\2\2\u00b0\u03bd\3\2"+
+ "\2\2\u00b2\u03c3\3\2\2\2\u00b4\u03c8\3\2\2\2\u00b6\u03ce\3\2\2\2\u00b8"+
+ "\u03d0\3\2\2\2\u00ba\u03d2\3\2\2\2\u00bc\u00bd\5\4\3\2\u00bd\u00be\7\2"+
+ "\2\3\u00be\3\3\2\2\2\u00bf\u00c0\7j\2\2\u00c0\u00c1\7i\2\2\u00c1\u00c2"+
+ "\5\u00b8]\2\u00c2\u00c3\7\3\2\2\u00c3\u00c5\3\2\2\2\u00c4\u00bf\3\2\2"+
+ "\2\u00c4\u00c5\3\2\2\2\u00c5\u00c8\3\2\2\2\u00c6\u00c9\5\b\5\2\u00c7\u00c9"+
+ "\5\6\4\2\u00c8\u00c6\3\2\2\2\u00c8\u00c7\3\2\2\2\u00c9\5\3\2\2\2\u00ca"+
+ "\u00cb\5\n\6\2\u00cb\u00cc\5.\30\2\u00cc\7\3\2\2\2\u00cd\u00ce\7\4\2\2"+
+ "\u00ce\u00cf\7\5\2\2\u00cf\u00d0\7~\2\2\u00d0\u00d1\7\6\2\2\u00d1\u00d2"+
+ "\5\u00b6\\\2\u00d2\u00d3\7\3\2\2\u00d3\u00d4\5\n\6\2\u00d4\t\3\2\2\2\u00d5"+
+ "\u00d9\5\f\7\2\u00d6\u00d9\5\16\b\2\u00d7\u00d9\5\36\20\2\u00d8\u00d5"+
+ "\3\2\2\2\u00d8\u00d6\3\2\2\2\u00d8\u00d7\3\2\2\2\u00d9\u00da\3\2\2\2\u00da"+
+ "\u00db\7\3\2\2\u00db\u00dd\3\2\2\2\u00dc\u00d8\3\2\2\2\u00dd\u00e0\3\2"+
+ "\2\2\u00de\u00dc\3\2\2\2\u00de\u00df\3\2\2\2\u00df\u00e6\3\2\2\2\u00e0"+
+ "\u00de\3\2\2\2\u00e1\u00e2\5\20\t\2\u00e2\u00e3\7\3\2\2\u00e3\u00e5\3"+
+ "\2\2\2\u00e4\u00e1\3\2\2\2\u00e5\u00e8\3\2\2\2\u00e6\u00e4\3\2\2\2\u00e6"+
+ "\u00e7\3\2\2\2\u00e7\13\3\2\2\2\u00e8\u00e6\3\2\2\2\u00e9\u00ee\5\22\n"+
+ "\2\u00ea\u00ee\5\24\13\2\u00eb\u00ee\5\26\f\2\u00ec\u00ee\5\30\r\2\u00ed"+
+ "\u00e9\3\2\2\2\u00ed\u00ea\3\2\2\2\u00ed\u00eb\3\2\2\2\u00ed\u00ec\3\2"+
+ "\2\2\u00ee\r\3\2\2\2\u00ef\u00f0\7q\2\2\u00f0\u00f1\7\5\2\2\u00f1\u00f2"+
+ "\7~\2\2\u00f2\u00f3\7\6\2\2\u00f3\u00f4\5\u00b6\\\2\u00f4\17\3\2\2\2\u00f5"+
+ "\u00fa\5$\23\2\u00f6\u00fa\5 \21\2\u00f7\u00fa\5&\24\2\u00f8\u00fa\5\""+
+ "\22\2\u00f9\u00f5\3\2\2\2\u00f9\u00f6\3\2\2\2\u00f9\u00f7\3\2\2\2\u00f9"+
+ "\u00f8\3\2\2\2\u00fa\21\3\2\2\2\u00fb\u00fc\7q\2\2\u00fc\u00fd\7Z\2\2"+
+ "\u00fd\u00fe\7S\2\2\u00fe\u00ff\5\u00b6\\\2\u00ff\23\3\2\2\2\u0100\u0101"+
+ "\7q\2\2\u0101\u0102\7\7\2\2\u0102\u0103\t\2\2\2\u0103\25\3\2\2\2\u0104"+
+ "\u0105\7q\2\2\u0105\u0106\7Z\2\2\u0106\u0107\7D\2\2\u0107\u0108\7K\2\2"+
+ "\u0108\u0109\t\3\2\2\u0109\27\3\2\2\2\u010a\u010f\7q\2\2\u010b\u010c\7"+
+ "\t\2\2\u010c\u0110\5\32\16\2\u010d\u010e\7Z\2\2\u010e\u0110\7\t\2\2\u010f"+
+ "\u010b\3\2\2\2\u010f\u010d\3\2\2\2\u0110\u0117\3\2\2\2\u0111\u0112\5\34"+
+ "\17\2\u0112\u0113\7\6\2\2\u0113\u0114\5\u00b8]\2\u0114\u0116\3\2\2\2\u0115"+
+ "\u0111\3\2\2\2\u0116\u0119\3\2\2\2\u0117\u0115\3\2\2\2\u0117\u0118\3\2"+
+ "\2\2\u0118\31\3\2\2\2\u0119\u0117\3\2\2\2\u011a\u011d\7~\2\2\u011b\u011d"+
+ "\5\u00ba^\2\u011c\u011a\3\2\2\2\u011c\u011b\3\2\2\2\u011d\u011e\3\2\2"+
+ "\2\u011e\u0120\7\n\2\2\u011f\u011c\3\2\2\2\u011f\u0120\3\2\2\2\u0120\u0123"+
+ "\3\2\2\2\u0121\u0124\7~\2\2\u0122\u0124\5\u00ba^\2\u0123\u0121\3\2\2\2"+
+ "\u0123\u0122\3\2\2\2\u0124\33\3\2\2\2\u0125\u0126\t\4\2\2\u0126\35\3\2"+
+ "\2\2\u0127\u0128\7\25\2\2\u0128\u012c\7\4\2\2\u0129\u012a\7\5\2\2\u012a"+
+ "\u012b\7~\2\2\u012b\u012d\7\6\2\2\u012c\u0129\3\2\2\2\u012c\u012d\3\2"+
+ "\2\2\u012d\u012e\3\2\2\2\u012e\u0138\5\u00b6\\\2\u012f\u0130\7I\2\2\u0130"+
+ "\u0135\5\u00b6\\\2\u0131\u0132\7\26\2\2\u0132\u0134\5\u00b6\\\2\u0133"+
+ "\u0131\3\2\2\2\u0134\u0137\3\2\2\2\u0135\u0133\3\2\2\2\u0135\u0136\3\2"+
+ "\2\2\u0136\u0139\3\2\2\2\u0137\u0135\3\2\2\2\u0138\u012f\3\2\2\2\u0138"+
+ "\u0139\3\2\2\2\u0139\37\3\2\2\2\u013a\u013b\7q\2\2\u013b\u013c\7t\2\2"+
+ "\u013c\u013f\5\u008eH\2\u013d\u013e\7H\2\2\u013e\u0140\5\u00a4S\2\u013f"+
+ "\u013d\3\2\2\2\u013f\u0140\3\2\2\2\u0140\u0148\3\2\2\2\u0141\u0142\7\27"+
+ "\2\2\u0142\u0149\5\60\31\2\u0143\u0146\7\30\2\2\u0144\u0145\7\27\2\2\u0145"+
+ "\u0147\5\60\31\2\u0146\u0144\3\2\2\2\u0146\u0147\3\2\2\2\u0147\u0149\3"+
+ "\2\2\2\u0148\u0141\3\2\2\2\u0148\u0143\3\2\2\2\u0149!\3\2\2\2\u014a\u014b"+
+ "\7q\2\2\u014b\u014c\7r\2\2\u014c\u014f\7s\2\2\u014d\u014e\7H\2\2\u014e"+
+ "\u0150\5\u00a4S\2\u014f\u014d\3\2\2\2\u014f\u0150\3\2\2\2\u0150\u0158"+
+ "\3\2\2\2\u0151\u0152\7\27\2\2\u0152\u0159\5\60\31\2\u0153\u0156\7\30\2"+
+ "\2\u0154\u0155\7\27\2\2\u0155\u0157\5\60\31\2\u0156\u0154\3\2\2\2\u0156"+
+ "\u0157\3\2\2\2\u0157\u0159\3\2\2\2\u0158\u0151\3\2\2\2\u0158\u0153\3\2"+
+ "\2\2\u0159#\3\2\2\2\u015a\u015b\7q\2\2\u015b\u015c\7\31\2\2\u015c\u015d"+
+ "\5\32\16\2\u015d\u015f\7\32\2\2\u015e\u0160\5*\26\2\u015f\u015e\3\2\2"+
+ "\2\u015f\u0160\3\2\2\2\u0160\u0161\3\2\2\2\u0161\u0164\7\33\2\2\u0162"+
+ "\u0163\7H\2\2\u0163\u0165\5\u00a4S\2\u0164\u0162\3\2\2\2\u0164\u0165\3"+
+ "\2\2\2\u0165\u016c\3\2\2\2\u0166\u0168\7\34\2\2\u0167\u0169\5.\30\2\u0168"+
+ "\u0167\3\2\2\2\u0168\u0169\3\2\2\2\u0169\u016a\3\2\2\2\u016a\u016d\7\35"+
+ "\2\2\u016b\u016d\7\30\2\2\u016c\u0166\3\2\2\2\u016c\u016b\3\2\2\2\u016d"+
+ "%\3\2\2\2\u016e\u016f\7q\2\2\u016f\u0170\7n\2\2\u0170\u0171\5\32\16\2"+
+ "\u0171\u0173\7H\2\2\u0172\u0174\5(\25\2\u0173\u0172\3\2\2\2\u0173\u0174"+
+ "\3\2\2\2\u0174\u0175\3\2\2\2\u0175\u0176\5\60\31\2\u0176\'\3\2\2\2\u0177"+
+ "\u0178\7\36\2\2\u0178\u017e\7\37\2\2\u0179\u017a\7\36\2\2\u017a\u017e"+
+ "\7 \2\2\u017b\u017c\7!\2\2\u017c\u017e\7\"\2\2\u017d\u0177\3\2\2\2\u017d"+
+ "\u0179\3\2\2\2\u017d\u017b\3\2\2\2\u017e)\3\2\2\2\u017f\u0184\5,\27\2"+
+ "\u0180\u0181\7\26\2\2\u0181\u0183\5,\27\2\u0182\u0180\3\2\2\2\u0183\u0186"+
+ "\3\2\2\2\u0184\u0182\3\2\2\2\u0184\u0185\3\2\2\2\u0185+\3\2\2\2\u0186"+
+ "\u0184\3\2\2\2\u0187\u0188\7#\2\2\u0188\u018b\5\32\16\2\u0189\u018a\7"+
+ "H\2\2\u018a\u018c\5\u00a4S\2\u018b\u0189\3\2\2\2\u018b\u018c\3\2\2\2\u018c"+
+ "-\3\2\2\2\u018d\u0192\5\60\31\2\u018e\u018f\7\26\2\2\u018f\u0191\5\60"+
+ "\31\2\u0190\u018e\3\2\2\2\u0191\u0194\3\2\2\2\u0192\u0190\3\2\2\2\u0192"+
+ "\u0193\3\2\2\2\u0193/\3\2\2\2\u0194\u0192\3\2\2\2\u0195\u019d\5\62\32"+
+ "\2\u0196\u019d\5H%\2\u0197\u019d\5L\'\2\u0198\u019d\5P)\2\u0199\u019d"+
+ "\5T+\2\u019a\u019d\5V,\2\u019b\u019d\5Z.\2\u019c\u0195\3\2\2\2\u019c\u0196"+
+ "\3\2\2\2\u019c\u0197\3\2\2\2\u019c\u0198\3\2\2\2\u019c\u0199\3\2\2\2\u019c"+
+ "\u019a\3\2\2\2\u019c\u019b\3\2\2\2\u019d\61\3\2\2\2\u019e\u01a1\5\64\33"+
+ "\2\u019f\u01a1\58\35\2\u01a0\u019e\3\2\2\2\u01a0\u019f\3\2\2\2\u01a1\u01aa"+
+ "\3\2\2\2\u01a2\u01a9\5\64\33\2\u01a3\u01a9\5<\37\2\u01a4\u01a9\58\35\2"+
+ "\u01a5\u01a9\5> \2\u01a6\u01a9\5B\"\2\u01a7\u01a9\5F$\2\u01a8\u01a2\3"+
+ "\2\2\2\u01a8\u01a3\3\2\2\2\u01a8\u01a4\3\2\2\2\u01a8\u01a5\3\2\2\2\u01a8"+
+ "\u01a6\3\2\2\2\u01a8\u01a7\3\2\2\2\u01a9\u01ac\3\2\2\2\u01aa\u01a8\3\2"+
+ "\2\2\u01aa\u01ab\3\2\2\2\u01ab\u01ad\3\2\2\2\u01ac\u01aa\3\2\2\2\u01ad"+
+ "\u01ae\7E\2\2\u01ae\u01af\5\60\31\2\u01af\63\3\2\2\2\u01b0\u01b1\7?\2"+
+ "\2\u01b1\u01b6\5\66\34\2\u01b2\u01b3\7\26\2\2\u01b3\u01b5\5\66\34\2\u01b4"+
+ "\u01b2\3\2\2\2\u01b5\u01b8\3\2\2\2\u01b6\u01b4\3\2\2\2\u01b6\u01b7\3\2"+
+ "\2\2\u01b7\65\3\2\2\2\u01b8\u01b6\3\2\2\2\u01b9\u01bc\5\u008eH\2\u01ba"+
+ "\u01bb\7H\2\2\u01bb\u01bd\5\u00a4S\2\u01bc\u01ba\3\2\2\2\u01bc\u01bd\3"+
+ "\2\2\2\u01bd\u01c0\3\2\2\2\u01be\u01bf\7J\2\2\u01bf\u01c1\7K\2\2\u01c0"+
+ "\u01be\3\2\2\2\u01c0\u01c1\3\2\2\2\u01c1\u01c4\3\2\2\2\u01c2\u01c3\7I"+
+ "\2\2\u01c3\u01c5\5\u008eH\2\u01c4\u01c2\3\2\2\2\u01c4\u01c5\3\2\2\2\u01c5"+
+ "\u01c6\3\2\2\2\u01c6\u01c7\7G\2\2\u01c7\u01c8\5\60\31\2\u01c8\67\3\2\2"+
+ "\2\u01c9\u01ca\7@\2\2\u01ca\u01cf\5:\36\2\u01cb\u01cc\7\26\2\2\u01cc\u01ce"+
+ "\5:\36\2\u01cd\u01cb\3\2\2\2\u01ce\u01d1\3\2\2\2\u01cf\u01cd\3\2\2\2\u01cf"+
+ "\u01d0\3\2\2\2\u01d09\3\2\2\2\u01d1\u01cf\3\2\2\2\u01d2\u01d5\5\u008e"+
+ "H\2\u01d3\u01d4\7H\2\2\u01d4\u01d6\5\u00a4S\2\u01d5\u01d3\3\2\2\2\u01d5"+
+ "\u01d6\3\2\2\2\u01d6\u01d7\3\2\2\2\u01d7\u01d8\7\27\2\2\u01d8\u01d9\5"+
+ "\60\31\2\u01d9;\3\2\2\2\u01da\u01db\7A\2\2\u01db\u01dc\5\60\31\2\u01dc"+
+ "=\3\2\2\2\u01dd\u01de\7B\2\2\u01de\u01df\7C\2\2\u01df\u01e4\5@!\2\u01e0"+
+ "\u01e1\7\26\2\2\u01e1\u01e3\5@!\2\u01e2\u01e0\3\2\2\2\u01e3\u01e6\3\2"+
+ "\2\2\u01e4\u01e2\3\2\2\2\u01e4\u01e5\3\2\2\2\u01e5?\3\2\2\2\u01e6\u01e4"+
+ "\3\2\2\2\u01e7\u01ee\5\u008eH\2\u01e8\u01e9\7H\2\2\u01e9\u01eb\5\u00a4"+
+ "S\2\u01ea\u01e8\3\2\2\2\u01ea\u01eb\3\2\2\2\u01eb\u01ec\3\2\2\2\u01ec"+
+ "\u01ed\7\27\2\2\u01ed\u01ef\5\60\31\2\u01ee\u01ea\3\2\2\2\u01ee\u01ef"+
+ "\3\2\2\2\u01ef\u01f2\3\2\2\2\u01f0\u01f1\7S\2\2\u01f1\u01f3\5\u00b6\\"+
+ "\2\u01f2\u01f0\3\2\2\2\u01f2\u01f3\3\2\2\2\u01f3A\3\2\2\2\u01f4\u01f5"+
+ "\7D\2\2\u01f5\u01fa\7C\2\2\u01f6\u01f7\7M\2\2\u01f7\u01f8\7D\2\2\u01f8"+
+ "\u01fa\7C\2\2\u01f9\u01f4\3\2\2\2\u01f9\u01f6\3\2\2\2\u01fa\u01fb\3\2"+
+ "\2\2\u01fb\u0200\5D#\2\u01fc\u01fd\7\26\2\2\u01fd\u01ff\5D#\2\u01fe\u01fc"+
+ "\3\2\2\2\u01ff\u0202\3\2\2\2\u0200\u01fe\3\2\2\2\u0200\u0201\3\2\2\2\u0201"+
+ "C\3\2\2\2\u0202\u0200\3\2\2\2\u0203\u0206\5\60\31\2\u0204\u0207\7N\2\2"+
+ "\u0205\u0207\7O\2\2\u0206\u0204\3\2\2\2\u0206\u0205\3\2\2\2\u0206\u0207"+
+ "\3\2\2\2\u0207\u020d\3\2\2\2\u0208\u020b\7K\2\2\u0209\u020c\7T\2\2\u020a"+
+ "\u020c\7U\2\2\u020b\u0209\3\2\2\2\u020b\u020a\3\2\2\2\u020c\u020e\3\2"+
+ "\2\2\u020d\u0208\3\2\2\2\u020d\u020e\3\2\2\2\u020e\u0211\3\2\2\2\u020f"+
+ "\u0210\7S\2\2\u0210\u0212\5\u00b6\\\2\u0211\u020f\3\2\2\2\u0211\u0212"+
+ "\3\2\2\2\u0212E\3\2\2\2\u0213\u0214\7L\2\2\u0214\u0215\5\u008eH\2\u0215"+
+ "G\3\2\2\2\u0216\u0219\7P\2\2\u0217\u0219\7Q\2\2\u0218\u0216\3\2\2\2\u0218"+
+ "\u0217\3\2\2\2\u0219\u021a\3\2\2\2\u021a\u021f\5J&\2\u021b\u021c\7\26"+
+ "\2\2\u021c\u021e\5J&\2\u021d\u021b\3\2\2\2\u021e\u0221\3\2\2\2\u021f\u021d"+
+ "\3\2\2\2\u021f\u0220\3\2\2\2\u0220\u0222\3\2\2\2\u0221\u021f\3\2\2\2\u0222"+
+ "\u0223\7R\2\2\u0223\u0224\5\60\31\2\u0224I\3\2\2\2\u0225\u0228\5\u008e"+
+ "H\2\u0226\u0227\7H\2\2\u0227\u0229\5\u00a4S\2\u0228\u0226\3\2\2\2\u0228"+
+ "\u0229\3\2\2\2\u0229\u022a\3\2\2\2\u022a\u022b\7G\2\2\u022b\u022c\5\60"+
+ "\31\2\u022cK\3\2\2\2\u022d\u022e\7V\2\2\u022e\u022f\7\32\2\2\u022f\u0230"+
+ "\5.\30\2\u0230\u0232\7\33\2\2\u0231\u0233\5N(\2\u0232\u0231\3\2\2\2\u0233"+
+ "\u0234\3\2\2\2\u0234\u0232\3\2\2\2\u0234\u0235\3\2\2\2\u0235\u0236\3\2"+
+ "\2\2\u0236\u0237\7Z\2\2\u0237\u0238\7E\2\2\u0238\u0239\5\60\31\2\u0239"+
+ "M\3\2\2\2\u023a\u023b\7W\2\2\u023b\u023d\5\60\31\2\u023c\u023a\3\2\2\2"+
+ "\u023d\u023e\3\2\2\2\u023e\u023c\3\2\2\2\u023e\u023f\3\2\2\2\u023f\u0240"+
+ "\3\2\2\2\u0240\u0241\7E\2\2\u0241\u0242\5\60\31\2\u0242O\3\2\2\2\u0243"+
+ "\u0244\7]\2\2\u0244\u0245\7\32\2\2\u0245\u0246\5.\30\2\u0246\u0248\7\33"+
+ "\2\2\u0247\u0249\5R*\2\u0248\u0247\3\2\2\2\u0249\u024a\3\2\2\2\u024a\u0248"+
+ "\3\2\2\2\u024a\u024b\3\2\2\2\u024b\u024c\3\2\2\2\u024c\u024e\7Z\2\2\u024d"+
+ "\u024f\5\u008eH\2\u024e\u024d\3\2\2\2\u024e\u024f\3\2\2\2\u024f\u0250"+
+ "\3\2\2\2\u0250\u0251\7E\2\2\u0251\u0252\5\60\31\2\u0252Q\3\2\2\2\u0253"+
+ "\u0257\7W\2\2\u0254\u0255\5\u008eH\2\u0255\u0256\7H\2\2\u0256\u0258\3"+
+ "\2\2\2\u0257\u0254\3\2\2\2\u0257\u0258\3\2\2\2\u0258\u0259\3\2\2\2\u0259"+
+ "\u025e\5\u00a4S\2\u025a\u025b\7$\2\2\u025b\u025d\5\u00a4S\2\u025c\u025a"+
+ "\3\2\2\2\u025d\u0260\3\2\2\2\u025e\u025c\3\2\2\2\u025e\u025f\3\2\2\2\u025f"+
+ "\u0261\3\2\2\2\u0260\u025e\3\2\2\2\u0261\u0262\7E\2\2\u0262\u0263\5\60"+
+ "\31\2\u0263S\3\2\2\2\u0264\u0265\7F\2\2\u0265\u0266\7\32\2\2\u0266\u0267"+
+ "\5.\30\2\u0267\u0268\7\33\2\2\u0268\u0269\7[\2\2\u0269\u026a\5\60\31\2"+
+ "\u026a\u026b\7\\\2\2\u026b\u026c\5\60\31\2\u026cU\3\2\2\2\u026d\u026e"+
+ "\7X\2\2\u026e\u026f\7\34\2\2\u026f\u0270\5.\30\2\u0270\u0272\7\35\2\2"+
+ "\u0271\u0273\5X-\2\u0272\u0271\3\2\2\2\u0273\u0274\3\2\2\2\u0274\u0272"+
+ "\3\2\2\2\u0274\u0275\3\2\2\2\u0275W\3\2\2\2\u0276\u0279\7Y\2\2\u0277\u027a"+
+ "\7%\2\2\u0278\u027a\5\32\16\2\u0279\u0277\3\2\2\2\u0279\u0278\3\2\2\2"+
+ "\u027a\u0282\3\2\2\2\u027b\u027e\7$\2\2\u027c\u027f\7%\2\2\u027d\u027f"+
+ "\5\32\16\2\u027e\u027c\3\2\2\2\u027e\u027d\3\2\2\2\u027f\u0281\3\2\2\2"+
+ "\u0280\u027b\3\2\2\2\u0281\u0284\3\2\2\2\u0282\u0280\3\2\2\2\u0282\u0283"+
+ "\3\2\2\2\u0283\u0285\3\2\2\2\u0284\u0282\3\2\2\2\u0285\u0286\7\34\2\2"+
+ "\u0286\u0287\5.\30\2\u0287\u0288\7\35\2\2\u0288Y\3\2\2\2\u0289\u028e\5"+
+ "\\/\2\u028a\u028b\7^\2\2\u028b\u028d\5\\/\2\u028c\u028a\3\2\2\2\u028d"+
+ "\u0290\3\2\2\2\u028e\u028c\3\2\2\2\u028e\u028f\3\2\2\2\u028f[\3\2\2\2"+
+ "\u0290\u028e\3\2\2\2\u0291\u0296\5^\60\2\u0292\u0293\7_\2\2\u0293\u0295"+
+ "\5^\60\2\u0294\u0292\3\2\2\2\u0295\u0298\3\2\2\2\u0296\u0294\3\2\2\2\u0296"+
+ "\u0297\3\2\2\2\u0297]\3\2\2\2\u0298\u0296\3\2\2\2\u0299\u029b\7`\2\2\u029a"+
+ "\u0299\3\2\2\2\u029a\u029b\3\2\2\2\u029b\u029c\3\2\2\2\u029c\u029d\5`"+
+ "\61\2\u029d_\3\2\2\2\u029e\u02a1\5b\62\2\u029f\u02a0\t\5\2\2\u02a0\u02a2"+
+ "\5b\62\2\u02a1\u029f\3\2\2\2\u02a1\u02a2\3\2\2\2\u02a2a\3\2\2\2\u02a3"+
+ "\u02a8\5d\63\2\u02a4\u02a5\7\61\2\2\u02a5\u02a7\5d\63\2\u02a6\u02a4\3"+
+ "\2\2\2\u02a7\u02aa\3\2\2\2\u02a8\u02a6\3\2\2\2\u02a8\u02a9\3\2\2\2\u02a9"+
+ "c\3\2\2\2\u02aa\u02a8\3\2\2\2\u02ab\u02ae\5f\64\2\u02ac\u02ad\7a\2\2\u02ad"+
+ "\u02af\5f\64\2\u02ae\u02ac\3\2\2\2\u02ae\u02af\3\2\2\2\u02afe\3\2\2\2"+
+ "\u02b0\u02b5\5h\65\2\u02b1\u02b2\t\6\2\2\u02b2\u02b4\5h\65\2\u02b3\u02b1"+
+ "\3\2\2\2\u02b4\u02b7\3\2\2\2\u02b5\u02b3\3\2\2\2\u02b5\u02b6\3\2\2\2\u02b6"+
+ "g\3\2\2\2\u02b7\u02b5\3\2\2\2\u02b8\u02bd\5j\66\2\u02b9\u02ba\t\7\2\2"+
+ "\u02ba\u02bc\5j\66\2\u02bb\u02b9\3\2\2\2\u02bc\u02bf\3\2\2\2\u02bd\u02bb"+
+ "\3\2\2\2\u02bd\u02be\3\2\2\2\u02bei\3\2\2\2\u02bf\u02bd\3\2\2\2\u02c0"+
+ "\u02c4\5l\67\2\u02c1\u02c2\7b\2\2\u02c2\u02c3\7c\2\2\u02c3\u02c5\5\u00a4"+
+ "S\2\u02c4\u02c1\3\2\2\2\u02c4\u02c5\3\2\2\2\u02c5k\3\2\2\2\u02c6\u02ca"+
+ "\5n8\2\u02c7\u02c8\7e\2\2\u02c8\u02c9\7d\2\2\u02c9\u02cb\5\u00a4S\2\u02ca"+
+ "\u02c7\3\2\2\2\u02ca\u02cb\3\2\2\2\u02cbm\3\2\2\2\u02cc\u02d0\5p9\2\u02cd"+
+ "\u02ce\7f\2\2\u02ce\u02cf\7H\2\2\u02cf\u02d1\5\u00a4S\2\u02d0\u02cd\3"+
+ "\2\2\2\u02d0\u02d1\3\2\2\2\u02d1o\3\2\2\2\u02d2\u02d6\5r:\2\u02d3\u02d4"+
+ "\7h\2\2\u02d4\u02d5\7H\2\2\u02d5\u02d7\5\u00b0Y\2\u02d6\u02d3\3\2\2\2"+
+ "\u02d6\u02d7\3\2\2\2\u02d7q\3\2\2\2\u02d8\u02dc\5t;\2\u02d9\u02da\7g\2"+
+ "\2\u02da\u02db\7H\2\2\u02db\u02dd\5\u00b0Y\2\u02dc\u02d9\3\2\2\2\u02dc"+
+ "\u02dd\3\2\2\2\u02dds\3\2\2\2\u02de\u02e7\5x=\2\u02df\u02e0\7\6\2\2\u02e0"+
+ "\u02e1\7/\2\2\u02e1\u02e2\3\2\2\2\u02e2\u02e3\5v<\2\u02e3\u02e4\5\u009a"+
+ "N\2\u02e4\u02e6\3\2\2\2\u02e5\u02df\3\2\2\2\u02e6\u02e9\3\2\2\2\u02e7"+
+ "\u02e5\3\2\2\2\u02e7\u02e8\3\2\2\2\u02e8u\3\2\2\2\u02e9\u02e7\3\2\2\2"+
+ "\u02ea\u02ee\5\32\16\2\u02eb\u02ee\5\u008eH\2\u02ec\u02ee\5\u0090I\2\u02ed"+
+ "\u02ea\3\2\2\2\u02ed\u02eb\3\2\2\2\u02ed\u02ec\3\2\2\2\u02eew\3\2\2\2"+
+ "\u02ef\u02f1\t\6\2\2\u02f0\u02ef\3\2\2\2\u02f1\u02f4\3\2\2\2\u02f2\u02f0"+
+ "\3\2\2\2\u02f2\u02f3\3\2\2\2\u02f3\u02f5\3\2\2\2\u02f4\u02f2\3\2\2\2\u02f5"+
+ "\u02f6\5z>\2\u02f6y\3\2\2\2\u02f7\u02fb\5\u0080A\2\u02f8\u02fb\5|?\2\u02f9"+
+ "\u02fb\5~@\2\u02fa\u02f7\3\2\2\2\u02fa\u02f8\3\2\2\2\u02fa\u02f9\3\2\2"+
+ "\2\u02fb{\3\2\2\2\u02fc\u02fd\7o\2\2\u02fd\u02fe\7n\2\2\u02fe\u02ff\5"+
+ "\u00a4S\2\u02ff\u0300\7\34\2\2\u0300\u0301\5.\30\2\u0301\u0302\7\35\2"+
+ "\2\u0302}\3\2\2\2\u0303\u0304\7p\2\2\u0304\u0305\7n\2\2\u0305\u0306\5"+
+ "\u00a4S\2\u0306\u0307\7\34\2\2\u0307\u0308\5.\30\2\u0308\u0309\7\35\2"+
+ "\2\u0309\177\3\2\2\2\u030a\u030f\5\u0082B\2\u030b\u030c\7\67\2\2\u030c"+
+ "\u030e\5\u0082B\2\u030d\u030b\3\2\2\2\u030e\u0311\3\2\2\2\u030f\u030d"+
+ "\3\2\2\2\u030f\u0310\3\2\2\2\u0310\u0081\3\2\2\2\u0311\u030f\3\2\2\2\u0312"+
+ "\u031a\5\u008cG\2\u0313\u0319\5\u0084C\2\u0314\u0319\5\u0088E\2\u0315"+
+ "\u0319\5\u008aF\2\u0316\u0319\5\u0086D\2\u0317\u0319\5\u009aN\2\u0318"+
+ "\u0313\3\2\2\2\u0318\u0314\3\2\2\2\u0318\u0315\3\2\2\2\u0318\u0316\3\2"+
+ "\2\2\u0318\u0317\3\2\2\2\u0319\u031c\3\2\2\2\u031a\u0318\3\2\2\2\u031a"+
+ "\u031b\3\2\2\2\u031b\u0083\3\2\2\2\u031c\u031a\3\2\2\2\u031d\u031e\78"+
+ "\2\2\u031e\u031f\78\2\2\u031f\u0320\5.\30\2\u0320\u0321\79\2\2\u0321\u0322"+
+ "\79\2\2\u0322\u0085\3\2\2\2\u0323\u0324\78\2\2\u0324\u0325\79\2\2\u0325"+
+ "\u0087\3\2\2\2\u0326\u0327\78\2\2\u0327\u0328\5.\30\2\u0328\u0329\79\2"+
+ "\2\u0329\u0089\3\2\2\2\u032a\u0331\7:\2\2\u032b\u0332\5\u00ba^\2\u032c"+
+ "\u0332\5\u00b8]\2\u032d\u0332\7~\2\2\u032e\u0332\5\u0090I\2\u032f\u0332"+
+ "\5\u008eH\2\u0330\u0332\5\u0092J\2\u0331\u032b\3\2\2\2\u0331\u032c\3\2"+
+ "\2\2\u0331\u032d\3\2\2\2\u0331\u032e\3\2\2\2\u0331\u032f\3\2\2\2\u0331"+
+ "\u0330\3\2\2\2\u0332\u008b\3\2\2\2\u0333\u0342\7w\2\2\u0334\u0342\7l\2"+
+ "\2\u0335\u0342\7m\2\2\u0336\u0342\7x\2\2\u0337\u0342\5\u00b8]\2\u0338"+
+ "\u0342\5\u008eH\2\u0339\u0342\5\u0090I\2\u033a\u0342\5\u0092J\2\u033b"+
+ "\u0342\5\u00a6T\2\u033c\u0342\5\u0098M\2\u033d\u0342\5\u0094K\2\u033e"+
+ "\u0342\5\u0096L\2\u033f\u0342\5\u00b4[\2\u0340\u0342\5\u009eP\2\u0341"+
+ "\u0333\3\2\2\2\u0341\u0334\3\2\2\2\u0341\u0335\3\2\2\2\u0341\u0336\3\2"+
+ "\2\2\u0341\u0337\3\2\2\2\u0341\u0338\3\2\2\2\u0341\u0339\3\2\2\2\u0341"+
+ "\u033a\3\2\2\2\u0341\u033b\3\2\2\2\u0341\u033c\3\2\2\2\u0341\u033d\3\2"+
+ "\2\2\u0341\u033e\3\2\2\2\u0341\u033f\3\2\2\2\u0341\u0340\3\2\2\2\u0342"+
+ "\u008d\3\2\2\2\u0343\u0344\7#\2\2\u0344\u0345\5\32\16\2\u0345\u008f\3"+
+ "\2\2\2\u0346\u0348\7\32\2\2\u0347\u0349\5.\30\2\u0348\u0347\3\2\2\2\u0348"+
+ "\u0349\3\2\2\2\u0349\u034a\3\2\2\2\u034a\u034b\7\33\2\2\u034b\u0091\3"+
+ "\2\2\2\u034c\u034d\7;\2\2\u034d\u0093\3\2\2\2\u034e\u034f\7\b\2\2\u034f"+
+ "\u0350\7\34\2\2\u0350\u0351\5.\30\2\u0351\u0352\7\35\2\2\u0352\u0095\3"+
+ "\2\2\2\u0353\u0354\7k\2\2\u0354\u0355\7\34\2\2\u0355\u0356\5.\30\2\u0356"+
+ "\u0357\7\35\2\2\u0357\u0097\3\2\2\2\u0358\u0359\5\32\16\2\u0359\u035a"+
+ "\5\u009aN\2\u035a\u0099\3\2\2\2\u035b\u0362\7\32\2\2\u035c\u035e\5\u009c"+
+ "O\2\u035d\u035f\7\26\2\2\u035e\u035d\3\2\2\2\u035e\u035f\3\2\2\2\u035f"+
+ "\u0361\3\2\2\2\u0360\u035c\3\2\2\2\u0361\u0364\3\2\2\2\u0362\u0360\3\2"+
+ "\2\2\u0362\u0363\3\2\2\2\u0363\u0365\3\2\2\2\u0364\u0362\3\2\2\2\u0365"+
+ "\u0366\7\33\2\2\u0366\u009b\3\2\2\2\u0367\u036a\5\60\31\2\u0368\u036a"+
+ "\7v\2\2\u0369\u0367\3\2\2\2\u0369\u0368\3\2\2\2\u036a\u009d\3\2\2\2\u036b"+
+ "\u036e\5\u00a0Q\2\u036c\u036e\5\u00a2R\2\u036d\u036b\3\2\2\2\u036d\u036c"+
+ "\3\2\2\2\u036e\u009f\3\2\2\2\u036f\u0370\5\32\16\2\u0370\u0371\7<\2\2"+
+ "\u0371\u0372\7x\2\2\u0372\u00a1\3\2\2\2\u0373\u0374\7\31\2\2\u0374\u0376"+
+ "\7\32\2\2\u0375\u0377\5*\26\2\u0376\u0375\3\2\2\2\u0376\u0377\3\2\2\2"+
+ "\u0377\u0378\3\2\2\2\u0378\u037b\7\33\2\2\u0379\u037a\7H\2\2\u037a\u037c"+
+ "\5\u00a4S\2\u037b\u0379\3\2\2\2\u037b\u037c\3\2\2\2\u037c\u037d\3\2\2"+
+ "\2\u037d\u037f\7\34\2\2\u037e\u0380\5.\30\2\u037f\u037e\3\2\2\2\u037f"+
+ "\u0380\3\2\2\2\u0380\u0381\3\2\2\2\u0381\u0382\7\35\2\2\u0382\u00a3\3"+
+ "\2\2\2\u0383\u0384\7\32\2\2\u0384\u038c\7\33\2\2\u0385\u0389\5\u00a8U"+
+ "\2\u0386\u038a\7v\2\2\u0387\u038a\7%\2\2\u0388\u038a\7\62\2\2\u0389\u0386"+
+ "\3\2\2\2\u0389\u0387\3\2\2\2\u0389\u0388\3\2\2\2\u0389\u038a\3\2\2\2\u038a"+
+ "\u038c\3\2\2\2\u038b\u0383\3\2\2\2\u038b\u0385\3\2\2\2\u038c\u00a5\3\2"+
+ "\2\2\u038d\u0396\7\34\2\2\u038e\u0393\5\u00b2Z\2\u038f\u0390\7\26\2\2"+
+ "\u0390\u0392\5\u00b2Z\2\u0391\u038f\3\2\2\2\u0392\u0395\3\2\2\2\u0393"+
+ "\u0391\3\2\2\2\u0393\u0394\3\2\2\2\u0394\u0397\3\2\2\2\u0395\u0393\3\2"+
+ "\2\2\u0396\u038e\3\2\2\2\u0396\u0397\3\2\2\2\u0397\u0398\3\2\2\2\u0398"+
+ "\u039e\7\35\2\2\u0399\u039a\7=\2\2\u039a\u039b\5.\30\2\u039b\u039c\7>"+
+ "\2\2\u039c\u039e\3\2\2\2\u039d\u038d\3\2\2\2\u039d\u0399\3\2\2\2\u039e"+
+ "\u00a7\3\2\2\2\u039f\u03a3\5\32\16\2\u03a0\u03a3\7w\2\2\u03a1\u03a3\5"+
+ "\u00aaV\2\u03a2\u039f\3\2\2\2\u03a2\u03a0\3\2\2\2\u03a2\u03a1\3\2\2\2"+
+ "\u03a3\u00a9\3\2\2\2\u03a4\u03a7\5\u00acW\2\u03a5\u03a7\5\u00aeX\2\u03a6"+
+ "\u03a4\3\2\2\2\u03a6\u03a5\3\2\2\2\u03a7\u00ab\3\2\2\2\u03a8\u03a9\7\31"+
+ "\2\2\u03a9\u03aa\7\32\2\2\u03aa\u03ab\7%\2\2\u03ab\u03ac\7\33\2\2\u03ac"+
+ "\u00ad\3\2\2\2\u03ad\u03ae\7\31\2\2\u03ae\u03b7\7\32\2\2\u03af\u03b4\5"+
+ "\u00a4S\2\u03b0\u03b1\7\26\2\2\u03b1\u03b3\5\u00a4S\2\u03b2\u03b0\3\2"+
+ "\2\2\u03b3\u03b6\3\2\2\2\u03b4\u03b2\3\2\2\2\u03b4\u03b5\3\2\2\2\u03b5"+
+ "\u03b8\3\2\2\2\u03b6\u03b4\3\2\2\2\u03b7\u03af\3\2\2\2\u03b7\u03b8\3\2"+
+ "\2\2\u03b8\u03b9\3\2\2\2\u03b9\u03ba\7\33\2\2\u03ba\u03bb\7H\2\2\u03bb"+
+ "\u03bc\5\u00a4S\2\u03bc\u00af\3\2\2\2\u03bd\u03bf\5\u00a8U\2\u03be\u03c0"+
+ "\7v\2\2\u03bf\u03be\3\2\2\2\u03bf\u03c0\3\2\2\2\u03c0\u00b1\3\2\2\2\u03c1"+
+ "\u03c4\5\60\31\2\u03c2\u03c4\7~\2\2\u03c3\u03c1\3\2\2\2\u03c3\u03c2\3"+
+ "\2\2\2\u03c4\u03c5\3\2\2\2\u03c5\u03c6\t\b\2\2\u03c6\u03c7\5\60\31\2\u03c7"+
+ "\u00b3\3\2\2\2\u03c8\u03ca\78\2\2\u03c9\u03cb\5.\30\2\u03ca\u03c9\3\2"+
+ "\2\2\u03ca\u03cb\3\2\2\2\u03cb\u03cc\3\2\2\2\u03cc\u03cd\79\2\2\u03cd"+
+ "\u00b5\3\2\2\2\u03ce\u03cf\5\u00b8]\2\u03cf\u00b7\3\2\2\2\u03d0\u03d1"+
+ "\7u\2\2\u03d1\u00b9\3\2\2\2\u03d2\u03d3\t\t\2\2\u03d3\u00bb\3\2\2\2k\u00c4"+
+ "\u00c8\u00d8\u00de\u00e6\u00ed\u00f9\u010f\u0117\u011c\u011f\u0123\u012c"+
+ "\u0135\u0138\u013f\u0146\u0148\u014f\u0156\u0158\u015f\u0164\u0168\u016c"+
+ "\u0173\u017d\u0184\u018b\u0192\u019c\u01a0\u01a8\u01aa\u01b6\u01bc\u01c0"+
+ "\u01c4\u01cf\u01d5\u01e4\u01ea\u01ee\u01f2\u01f9\u0200\u0206\u020b\u020d"+
+ "\u0211\u0218\u021f\u0228\u0234\u023e\u024a\u024e\u0257\u025e\u0274\u0279"+
+ "\u027e\u0282\u028e\u0296\u029a\u02a1\u02a8\u02ae\u02b5\u02bd\u02c4\u02ca"+
+ "\u02d0\u02d6\u02dc\u02e7\u02ed\u02f2\u02fa\u030f\u0318\u031a\u0331\u0341"+
+ "\u0348\u035e\u0362\u0369\u036d\u0376\u037b\u037f\u0389\u038b\u0393\u0396"+
+ "\u039d\u03a2\u03a6\u03b4\u03b7\u03bf\u03c3\u03ca";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/src/main/java/org/rumbledb/parser/JsoniqVisitor.java b/src/main/java/org/rumbledb/parser/JsoniqVisitor.java
index 625fa7374..b519eb374 100644
--- a/src/main/java/org/rumbledb/parser/JsoniqVisitor.java
+++ b/src/main/java/org/rumbledb/parser/JsoniqVisitor.java
@@ -1,4 +1,4 @@
-// Generated from ./src/main/java/org/rumbledb/parser/Jsoniq.g4 by ANTLR 4.8
+// Generated from ./src/main/java/org/rumbledb/parser/Jsoniq.g4 by ANTLR 4.7
// Java header
package org.rumbledb.parser;
@@ -385,6 +385,12 @@ public interface JsoniqVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitValidateExpr(JsoniqParser.ValidateExprContext ctx);
+ /**
+ * Visit a parse tree produced by {@link JsoniqParser#annotateExpr}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitAnnotateExpr(JsoniqParser.AnnotateExprContext ctx);
/**
* Visit a parse tree produced by {@link JsoniqParser#simpleMapExpr}.
* @param ctx the parse tree
diff --git a/src/main/java/org/rumbledb/runtime/flwor/clauses/ReturnClauseSparkIterator.java b/src/main/java/org/rumbledb/runtime/flwor/clauses/ReturnClauseSparkIterator.java
index a6482c85f..3e45c13a3 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/clauses/ReturnClauseSparkIterator.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/clauses/ReturnClauseSparkIterator.java
@@ -209,7 +209,7 @@ public JSoundDataFrame getDataFrame(DynamicContext context) {
}
JavaRDD- rdd = getRDDAux(context);
- return ValidateTypeIterator.convertRDDToValidDataFrame(rdd, this.sequenceType.getItemType(), context);
+ return ValidateTypeIterator.convertRDDToValidDataFrame(rdd, this.sequenceType.getItemType(), context, false);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/typing/ValidateTypeIterator.java b/src/main/java/org/rumbledb/runtime/typing/ValidateTypeIterator.java
index 9b1c76563..f70651b9b 100644
--- a/src/main/java/org/rumbledb/runtime/typing/ValidateTypeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/typing/ValidateTypeIterator.java
@@ -22,6 +22,7 @@
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
+import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.FieldDescriptor;
import org.rumbledb.types.ItemType;
import org.rumbledb.types.TypeMappings;
@@ -41,15 +42,19 @@ public class ValidateTypeIterator extends HybridRuntimeIterator {
private ItemType itemType;
+ private boolean isValidate;
+
public ValidateTypeIterator(
RuntimeIterator instance,
ItemType itemType,
+ boolean isValidate,
ExecutionMode executionMode,
RumbleRuntimeConfiguration configuration,
ExceptionMetadata iteratorMetadata
) {
super(Collections.singletonList(instance), executionMode, iteratorMetadata);
this.itemType = itemType;
+ this.isValidate = isValidate;
}
@Override
@@ -74,16 +79,16 @@ public JSoundDataFrame getDataFrame(DynamicContext context) {
return inputDataAsDataFrame;
}
JavaRDD
- inputDataAsRDDOfItems = dataFrameToRDDOfItems(inputDataAsDataFrame, getMetadata());
- return convertRDDToValidDataFrame(inputDataAsRDDOfItems, this.itemType, context);
+ return convertRDDToValidDataFrame(inputDataAsRDDOfItems, this.itemType, context, this.isValidate);
}
if (inputDataIterator.isRDDOrDataFrame()) {
JavaRDD
- rdd = inputDataIterator.getRDD(context);
- return convertRDDToValidDataFrame(rdd, this.itemType, context);
+ return convertRDDToValidDataFrame(rdd, this.itemType, context, this.isValidate);
}
List
- items = inputDataIterator.materialize(context);
- JSoundDataFrame jdf = convertLocalItemsToDataFrame(items, this.itemType, context);
+ JSoundDataFrame jdf = convertLocalItemsToDataFrame(items, this.itemType, context, this.isValidate);
return jdf;
} catch (InvalidInstanceException ex) {
InvalidInstanceException e = new InvalidInstanceException(
@@ -98,7 +103,8 @@ public JSoundDataFrame getDataFrame(DynamicContext context) {
public static JSoundDataFrame convertRDDToValidDataFrame(
JavaRDD
- itemRDD,
ItemType itemType,
- DynamicContext context
+ DynamicContext context,
+ boolean isValidate
) {
if (!itemType.isCompatibleWithDataFrames(context.getRumbleRuntimeConfiguration())) {
throw new OurBadException(
@@ -112,7 +118,7 @@ public static JSoundDataFrame convertRDDToValidDataFrame(
@Override
public Row call(Item item) {
- item = validate(item, itemType, ExceptionMetadata.EMPTY_METADATA);
+ item = validate(item, itemType, ExceptionMetadata.EMPTY_METADATA, isValidate);
return convertLocalItemToRow(item, schema, context);
}
}
@@ -183,7 +189,8 @@ private static DataType convertToDataType(ItemType itemType) {
public static JSoundDataFrame convertLocalItemsToDataFrame(
List
- items,
ItemType itemType,
- DynamicContext context
+ DynamicContext context,
+ boolean isValidate
) {
if (items.size() == 0) {
return new JSoundDataFrame(
@@ -194,7 +201,7 @@ public static JSoundDataFrame convertLocalItemsToDataFrame(
StructType schema = convertToDataFrameSchema(itemType);
List
rows = new ArrayList<>();
for (Item item : items) {
- item = validate(item, itemType, ExceptionMetadata.EMPTY_METADATA);
+ item = validate(item, itemType, ExceptionMetadata.EMPTY_METADATA, isValidate);
Row row = convertLocalItemToRow(item, schema, context);
rows.add(row);
}
@@ -319,7 +326,7 @@ private static Object getRowColumnFromItemUsingDataType(
@Override
protected JavaRDD- getRDDAux(DynamicContext context) {
JavaRDD
- childrenItems = this.children.get(0).getRDD(context);
- return childrenItems.map(x -> validate(x, this.itemType, getMetadata()));
+ return childrenItems.map(x -> validate(x, this.itemType, getMetadata(), this.isValidate));
}
@Override
@@ -344,11 +351,14 @@ protected boolean hasNextLocal() {
@Override
protected Item nextLocal() {
- Item i = validate(this.children.get(0).next(), this.itemType, getMetadata());
+ Item i = validate(this.children.get(0).next(), this.itemType, getMetadata(), this.isValidate);
return i;
}
- private static Item validate(Item item, ItemType itemType, ExceptionMetadata metadata) {
+ private static Item validate(Item item, ItemType itemType, ExceptionMetadata metadata, boolean isValidate) {
+ if (!isValidate) {
+ return item;
+ }
if (itemType.isAtomicItemType()) {
if (!item.isAtomic()) {
throw new InvalidInstanceException(
@@ -378,7 +388,7 @@ private static Item validate(Item item, ItemType itemType, ExceptionMetadata met
}
List
- members = new ArrayList<>();
for (Item member : item.getItems()) {
- members.add(validate(member, itemType.getArrayContentFacet(), metadata));
+ members.add(validate(member, itemType.getArrayContentFacet(), metadata, true));
}
Integer minLength = itemType.getMinLengthFacet();
Integer maxLength = itemType.getMaxLengthFacet();
@@ -414,7 +424,7 @@ private static Item validate(Item item, ItemType itemType, ExceptionMetadata met
for (String key : item.getKeys()) {
if (facets.containsKey(key)) {
keys.add(key);
- values.add(validate(item.getItemByKey(key), facets.get(key).getType(), metadata));
+ values.add(validate(item.getItemByKey(key), facets.get(key).getType(), metadata, true));
} else {
if (itemType.getClosedFacet()) {
throw new InvalidInstanceException(
@@ -462,4 +472,12 @@ private static Item validate(Item item, ItemType itemType, ExceptionMetadata met
}
return item;
}
+
+ @Override
+ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseContext) {
+ if (this.isValidate) {
+ return NativeClauseContext.NoNativeQuery;
+ }
+ return this.children.get(0).generateNativeQuery(nativeClauseContext);
+ }
}
diff --git a/src/main/java/sparksoniq/spark/ml/AnnotateFunctionIterator.java b/src/main/java/sparksoniq/spark/ml/AnnotateFunctionIterator.java
index 2925209b6..7841915ff 100644
--- a/src/main/java/sparksoniq/spark/ml/AnnotateFunctionIterator.java
+++ b/src/main/java/sparksoniq/spark/ml/AnnotateFunctionIterator.java
@@ -45,19 +45,25 @@ public JSoundDataFrame getDataFrame(DynamicContext context) {
return inputDataAsDataFrame;
}
JavaRDD
- inputDataAsRDDOfItems = dataFrameToRDDOfItems(inputDataAsDataFrame, getMetadata());
- return ValidateTypeIterator.convertRDDToValidDataFrame(inputDataAsRDDOfItems, schemaType, context);
+ return ValidateTypeIterator.convertRDDToValidDataFrame(
+ inputDataAsRDDOfItems,
+ schemaType,
+ context,
+ true
+ );
}
if (inputDataIterator.isRDDOrDataFrame()) {
JavaRDD
- rdd = inputDataIterator.getRDD(context);
- return ValidateTypeIterator.convertRDDToValidDataFrame(rdd, schemaType, context);
+ return ValidateTypeIterator.convertRDDToValidDataFrame(rdd, schemaType, context, true);
}
List
- items = inputDataIterator.materialize(context);
return ValidateTypeIterator.convertLocalItemsToDataFrame(
items,
schemaType,
- context
+ context,
+ true
);
} catch (InvalidInstanceException ex) {
InvalidInstanceException e = new InvalidInstanceException(
From fc3b7310ba57361da0ca215d7007fde76a44e1e8 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Wed, 5 Apr 2023 14:09:29 +0200
Subject: [PATCH 033/136] Make sure annotate flags the type.
---
.../java/org/rumbledb/runtime/typing/ValidateTypeIterator.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/org/rumbledb/runtime/typing/ValidateTypeIterator.java b/src/main/java/org/rumbledb/runtime/typing/ValidateTypeIterator.java
index f70651b9b..bc068ee7b 100644
--- a/src/main/java/org/rumbledb/runtime/typing/ValidateTypeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/typing/ValidateTypeIterator.java
@@ -357,7 +357,7 @@ protected Item nextLocal() {
private static Item validate(Item item, ItemType itemType, ExceptionMetadata metadata, boolean isValidate) {
if (!isValidate) {
- return item;
+ return ItemFactory.getInstance().createAnnotatedItem(item, itemType);
}
if (itemType.isAtomicItemType()) {
if (!item.isAtomic()) {
From ee1a29eadcd566e484e35a6c04fde1a991d9e3f5 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Wed, 5 Apr 2023 14:11:03 +0200
Subject: [PATCH 034/136] Remove warning.
---
.../runtime/functions/input/JsonFileFunctionIterator.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/org/rumbledb/runtime/functions/input/JsonFileFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/input/JsonFileFunctionIterator.java
index 6f1b39fea..e8801dc8d 100644
--- a/src/main/java/org/rumbledb/runtime/functions/input/JsonFileFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/input/JsonFileFunctionIterator.java
@@ -186,7 +186,7 @@ protected boolean hasNextLocal() {
@Override
protected Item nextLocal() {
- Item result = nextItem;
+ Item result = this.nextItem;
fetchNext();
return result;
}
From c03a5fbcb34c87ffa230d7a53ed9f194eb3f3d33 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Wed, 19 Apr 2023 11:47:23 +0200
Subject: [PATCH 035/136] Allow any sequences for native contexts.
---
.../compiler/ExecutionModeVisitor.java | 8 +-
.../java/org/rumbledb/items/DecimalItem.java | 4 +-
.../java/org/rumbledb/items/DoubleItem.java | 4 +-
.../java/org/rumbledb/items/FloatItem.java | 4 +-
src/main/java/org/rumbledb/items/IntItem.java | 4 +-
.../java/org/rumbledb/items/IntegerItem.java | 4 +-
.../java/org/rumbledb/items/StringItem.java | 4 +-
.../AdditiveOperationIterator.java | 68 ++++++++++++-----
.../MultiplicativeOperationIterator.java | 75 ++++++++++++++-----
.../arithmetics/UnaryOperationIterator.java | 4 +-
.../AtMostOneItemIfRuntimeIterator.java | 10 +--
.../runtime/flwor/NativeClauseContext.java | 10 +--
.../numerics/FloorFunctionIterator.java | 6 +-
.../numerics/RoundFunctionIterator.java | 6 +-
.../runtime/logics/AndOperationIterator.java | 4 +-
.../runtime/logics/NotOperationIterator.java | 4 +-
.../runtime/logics/OrOperationIterator.java | 4 +-
.../runtime/misc/ComparisonIterator.java | 33 ++++++--
.../navigation/ArrayLookupIterator.java | 19 ++++-
.../navigation/ArrayUnboxingIterator.java | 18 +++--
.../navigation/ObjectLookupIterator.java | 6 +-
.../primary/ContextExpressionIterator.java | 7 +-
.../primary/DecimalRuntimeIterator.java | 4 +-
.../primary/DoubleRuntimeIterator.java | 4 +-
.../primary/IntegerRuntimeIterator.java | 4 +-
.../primary/StringRuntimeIterator.java | 4 +-
.../primary/VariableReferenceIterator.java | 3 +-
.../AtMostOneItemTypePromotionIterator.java | 2 +-
.../java/org/rumbledb/types/SequenceType.java | 60 +++++++++++++++
29 files changed, 280 insertions(+), 107 deletions(-)
diff --git a/src/main/java/org/rumbledb/compiler/ExecutionModeVisitor.java b/src/main/java/org/rumbledb/compiler/ExecutionModeVisitor.java
index 48e003d32..56fb59c28 100644
--- a/src/main/java/org/rumbledb/compiler/ExecutionModeVisitor.java
+++ b/src/main/java/org/rumbledb/compiler/ExecutionModeVisitor.java
@@ -502,7 +502,7 @@ public StaticContext visitTypeSwitchExpression(TypeSwitchExpression expression,
ExecutionMode defaultMode = expression.getDefaultCase()
.getReturnExpression()
- .getHighestExecutionMode(visitorConfig);
+ .getHighestExecutionMode(this.visitorConfig);
if (defaultMode.isUnset()) {
expression.setHighestExecutionMode(ExecutionMode.UNSET);
@@ -510,7 +510,7 @@ public StaticContext visitTypeSwitchExpression(TypeSwitchExpression expression,
}
for (TypeswitchCase c : expression.getCases()) {
- ExecutionMode mode = c.getReturnExpression().getHighestExecutionMode(visitorConfig);
+ ExecutionMode mode = c.getReturnExpression().getHighestExecutionMode(this.visitorConfig);
if (mode.isUnset()) {
expression.setHighestExecutionMode(ExecutionMode.UNSET);
return argument;
@@ -533,7 +533,7 @@ public StaticContext visitTypeSwitchExpression(TypeSwitchExpression expression,
public StaticContext visitSwitchExpression(SwitchExpression expression, StaticContext argument) {
visitDescendants(expression, argument);
- ExecutionMode defaultMode = expression.getDefaultExpression().getHighestExecutionMode(visitorConfig);
+ ExecutionMode defaultMode = expression.getDefaultExpression().getHighestExecutionMode(this.visitorConfig);
if (defaultMode.isUnset()) {
expression.setHighestExecutionMode(ExecutionMode.UNSET);
@@ -541,7 +541,7 @@ public StaticContext visitSwitchExpression(SwitchExpression expression, StaticCo
}
for (SwitchCase c : expression.getCases()) {
- ExecutionMode mode = c.getReturnExpression().getHighestExecutionMode(visitorConfig);
+ ExecutionMode mode = c.getReturnExpression().getHighestExecutionMode(this.visitorConfig);
if (mode.isUnset()) {
expression.setHighestExecutionMode(ExecutionMode.UNSET);
return argument;
diff --git a/src/main/java/org/rumbledb/items/DecimalItem.java b/src/main/java/org/rumbledb/items/DecimalItem.java
index 0514e1ada..bc140b411 100644
--- a/src/main/java/org/rumbledb/items/DecimalItem.java
+++ b/src/main/java/org/rumbledb/items/DecimalItem.java
@@ -30,6 +30,8 @@
import org.rumbledb.types.BuiltinTypesCatalogue;
import org.rumbledb.runtime.misc.ComparisonIterator;
import org.rumbledb.types.ItemType;
+import org.rumbledb.types.SequenceType;
+
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -131,7 +133,7 @@ public ItemType getDynamicType() {
@Override
public NativeClauseContext generateNativeQuery(NativeClauseContext context) {
- return new NativeClauseContext(context, this.value.toString(), BuiltinTypesCatalogue.stringItem);
+ return new NativeClauseContext(context, this.value.toString(), SequenceType.DECIMAL);
}
public boolean isNumeric() {
diff --git a/src/main/java/org/rumbledb/items/DoubleItem.java b/src/main/java/org/rumbledb/items/DoubleItem.java
index 15e29d0d8..fab38f624 100644
--- a/src/main/java/org/rumbledb/items/DoubleItem.java
+++ b/src/main/java/org/rumbledb/items/DoubleItem.java
@@ -33,6 +33,8 @@
import org.rumbledb.types.BuiltinTypesCatalogue;
import org.rumbledb.runtime.misc.ComparisonIterator;
import org.rumbledb.types.ItemType;
+import org.rumbledb.types.SequenceType;
+
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -172,7 +174,7 @@ public ItemType getDynamicType() {
@Override
public NativeClauseContext generateNativeQuery(NativeClauseContext context) {
- return new NativeClauseContext(context, "" + this.value, BuiltinTypesCatalogue.doubleItem);
+ return new NativeClauseContext(context, "" + this.value, SequenceType.DOUBLE);
}
@Override
diff --git a/src/main/java/org/rumbledb/items/FloatItem.java b/src/main/java/org/rumbledb/items/FloatItem.java
index ff99ec2c8..d9dca106c 100644
--- a/src/main/java/org/rumbledb/items/FloatItem.java
+++ b/src/main/java/org/rumbledb/items/FloatItem.java
@@ -33,6 +33,8 @@
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.runtime.misc.ComparisonIterator;
import org.rumbledb.types.ItemType;
+import org.rumbledb.types.SequenceType;
+
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -186,6 +188,6 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext context) {
if (Float.isNaN(this.value)) {
return NativeClauseContext.NoNativeQuery;
}
- return new NativeClauseContext(context, "CAST (" + this.value + "D AS FLOAT)", BuiltinTypesCatalogue.floatItem);
+ return new NativeClauseContext(context, "CAST (" + this.value + "D AS FLOAT)", SequenceType.FLOAT);
}
}
diff --git a/src/main/java/org/rumbledb/items/IntItem.java b/src/main/java/org/rumbledb/items/IntItem.java
index ec26117d5..1998a0521 100644
--- a/src/main/java/org/rumbledb/items/IntItem.java
+++ b/src/main/java/org/rumbledb/items/IntItem.java
@@ -31,6 +31,8 @@
import org.rumbledb.types.BuiltinTypesCatalogue;
import org.rumbledb.runtime.misc.ComparisonIterator;
import org.rumbledb.types.ItemType;
+import org.rumbledb.types.SequenceType;
+
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -149,7 +151,7 @@ public ItemType getDynamicType() {
@Override
public NativeClauseContext generateNativeQuery(NativeClauseContext context) {
- return new NativeClauseContext(context, "" + this.value, BuiltinTypesCatalogue.intItem);
+ return new NativeClauseContext(context, "" + this.value, SequenceType.INT);
}
public boolean isNumeric() {
diff --git a/src/main/java/org/rumbledb/items/IntegerItem.java b/src/main/java/org/rumbledb/items/IntegerItem.java
index 2e648af45..0ca1de182 100644
--- a/src/main/java/org/rumbledb/items/IntegerItem.java
+++ b/src/main/java/org/rumbledb/items/IntegerItem.java
@@ -30,6 +30,8 @@
import org.rumbledb.types.BuiltinTypesCatalogue;
import org.rumbledb.runtime.misc.ComparisonIterator;
import org.rumbledb.types.ItemType;
+import org.rumbledb.types.SequenceType;
+
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -138,7 +140,7 @@ public ItemType getDynamicType() {
@Override
public NativeClauseContext generateNativeQuery(NativeClauseContext context) {
- return new NativeClauseContext(context, this.value.toString(), BuiltinTypesCatalogue.integerItem);
+ return new NativeClauseContext(context, this.value.toString(), SequenceType.INTEGER);
}
public boolean isNumeric() {
diff --git a/src/main/java/org/rumbledb/items/StringItem.java b/src/main/java/org/rumbledb/items/StringItem.java
index 6509b37f0..130a929bc 100644
--- a/src/main/java/org/rumbledb/items/StringItem.java
+++ b/src/main/java/org/rumbledb/items/StringItem.java
@@ -31,6 +31,8 @@
import org.rumbledb.types.BuiltinTypesCatalogue;
import org.rumbledb.runtime.misc.ComparisonIterator;
import org.rumbledb.types.ItemType;
+import org.rumbledb.types.SequenceType;
+
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -145,7 +147,7 @@ public ItemType getDynamicType() {
@Override
public NativeClauseContext generateNativeQuery(NativeClauseContext context) {
- return new NativeClauseContext(context, '"' + this.value + '"', BuiltinTypesCatalogue.stringItem);
+ return new NativeClauseContext(context, '"' + this.value + '"', SequenceType.STRING);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/arithmetics/AdditiveOperationIterator.java b/src/main/java/org/rumbledb/runtime/arithmetics/AdditiveOperationIterator.java
index f73421e98..51167a3d7 100644
--- a/src/main/java/org/rumbledb/runtime/arithmetics/AdditiveOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/arithmetics/AdditiveOperationIterator.java
@@ -40,6 +40,8 @@
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.BuiltinTypesCatalogue;
import org.rumbledb.types.ItemType;
+import org.rumbledb.types.SequenceType;
+import org.rumbledb.types.SequenceType.Arity;
public class AdditiveOperationIterator extends AtMostOneItemLocalRuntimeIterator {
@@ -425,79 +427,107 @@ private static Item processDateTimeDurationDateTime(
@Override
public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseContext) {
NativeClauseContext leftResult = this.leftIterator.generateNativeQuery(nativeClauseContext);
+ if (leftResult == NativeClauseContext.NoNativeQuery) {
+ return NativeClauseContext.NoNativeQuery;
+ }
NativeClauseContext rightResult = this.rightIterator.generateNativeQuery(nativeClauseContext);
- if (leftResult == NativeClauseContext.NoNativeQuery || rightResult == NativeClauseContext.NoNativeQuery) {
+ if (rightResult == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
ItemType resultType = null;
String leftQuery = leftResult.getResultingQuery();
String rightQuery = rightResult.getResultingQuery();
if (
- leftResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.doubleItem)
+ leftResult.getResultingType().isSubtypeOf(SequenceType.DOUBLE_QM)
&&
- rightResult.getResultingType().isNumeric()
+ rightResult.getResultingType().getItemType().isNumeric()
) {
- if (!rightResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.doubleItem)) {
+ if (!rightResult.getResultingType().isSubtypeOf(SequenceType.DOUBLE_QM)) {
rightQuery = "(CAST (" + rightQuery + " AS DOUBLE))";
}
resultType = BuiltinTypesCatalogue.doubleItem;
} else if (
- rightResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.doubleItem)
+ rightResult.getResultingType().isSubtypeOf(SequenceType.DOUBLE_QM)
&&
- leftResult.getResultingType().isNumeric()
+ leftResult.getResultingType().getItemType().isNumeric()
) {
- if (!leftResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.doubleItem)) {
+ if (!leftResult.getResultingType().isSubtypeOf(SequenceType.DOUBLE_QM)) {
leftQuery = "(CAST (" + leftQuery + " AS DOUBLE))";
}
resultType = BuiltinTypesCatalogue.doubleItem;
} else if (
- leftResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.floatItem)
+ leftResult.getResultingType().isSubtypeOf(SequenceType.FLOAT_QM)
&&
- rightResult.getResultingType().isNumeric()
+ rightResult.getResultingType().getItemType().isNumeric()
) {
- if (!rightResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.floatItem)) {
+ if (!rightResult.getResultingType().isSubtypeOf(SequenceType.FLOAT_QM)) {
rightQuery = "(CAST (" + rightQuery + " AS FLOAT))";
}
resultType = BuiltinTypesCatalogue.floatItem;
} else if (
- rightResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.floatItem)
+ rightResult.getResultingType().isSubtypeOf(SequenceType.FLOAT_QM)
&&
- leftResult.getResultingType().isNumeric()
+ leftResult.getResultingType().getItemType().isNumeric()
) {
- if (!leftResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.floatItem)) {
+ if (!leftResult.getResultingType().isSubtypeOf(SequenceType.FLOAT_QM)) {
leftQuery = "(CAST (" + leftQuery + " AS FLOAT))";
}
resultType = BuiltinTypesCatalogue.floatItem;
} else if (
- leftResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.integerItem)
+ leftResult.getResultingType().isSubtypeOf(SequenceType.INTEGER_QM)
&&
- rightResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.integerItem)
+ rightResult.getResultingType().isSubtypeOf(SequenceType.INTEGER_QM)
) {
resultType = BuiltinTypesCatalogue.integerItem;
} else if (
- leftResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.decimalItem)
+ leftResult.getResultingType().isSubtypeOf(SequenceType.DECIMAL_QM)
&&
- rightResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.decimalItem)
+ rightResult.getResultingType().isSubtypeOf(SequenceType.DECIMAL_QM)
) {
resultType = BuiltinTypesCatalogue.decimalItem;
} else {
return NativeClauseContext.NoNativeQuery;
}
+ SequenceType.Arity resultingArity =
+ leftResult.getResultingType()
+ .getArity()
+ .multiplyWith(
+ rightResult.getResultingType().getArity()
+ );
+
+ if (resultingArity.equals(Arity.OneOrMore) || resultingArity.equals(Arity.ZeroOrMore)) {
+ throw new UnexpectedTypeException(
+ " \"+\": operation not possible with parameters of type \""
+ + this.left.getDynamicType().toString()
+ + "\" and \""
+ + this.right.getDynamicType().toString()
+ + "\"",
+ getMetadata()
+ );
+ }
if (this.isMinus) {
String resultingQuery = "( "
+ leftQuery
+ " - "
+ rightQuery
+ " )";
- return new NativeClauseContext(nativeClauseContext, resultingQuery, resultType);
+ return new NativeClauseContext(
+ nativeClauseContext,
+ resultingQuery,
+ new SequenceType(resultType, resultingArity)
+ );
} else {
String resultingQuery = "( "
+ leftQuery
+ " + "
+ rightQuery
+ " )";
- return new NativeClauseContext(nativeClauseContext, resultingQuery, resultType);
+ return new NativeClauseContext(
+ nativeClauseContext,
+ resultingQuery,
+ new SequenceType(resultType, resultingArity)
+ );
}
}
}
diff --git a/src/main/java/org/rumbledb/runtime/arithmetics/MultiplicativeOperationIterator.java b/src/main/java/org/rumbledb/runtime/arithmetics/MultiplicativeOperationIterator.java
index 8d6769f25..ec2397d73 100644
--- a/src/main/java/org/rumbledb/runtime/arithmetics/MultiplicativeOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/arithmetics/MultiplicativeOperationIterator.java
@@ -41,6 +41,8 @@
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.BuiltinTypesCatalogue;
import org.rumbledb.types.ItemType;
+import org.rumbledb.types.SequenceType;
+import org.rumbledb.types.SequenceType.Arity;
public class MultiplicativeOperationIterator extends AtMostOneItemLocalRuntimeIterator {
@@ -547,53 +549,56 @@ private static Item processDayTimeDurationDouble(
@Override
public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseContext) {
NativeClauseContext leftResult = this.leftIterator.generateNativeQuery(nativeClauseContext);
+ if (leftResult == NativeClauseContext.NoNativeQuery) {
+ return NativeClauseContext.NoNativeQuery;
+ }
NativeClauseContext rightResult = this.rightIterator.generateNativeQuery(nativeClauseContext);
- if (leftResult == NativeClauseContext.NoNativeQuery || rightResult == NativeClauseContext.NoNativeQuery) {
+ if (rightResult == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
ItemType resultType = null;
String leftQuery = leftResult.getResultingQuery();
String rightQuery = rightResult.getResultingQuery();
if (
- leftResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.doubleItem)
+ leftResult.getResultingType().isSubtypeOf(SequenceType.DOUBLE_QM)
&&
- rightResult.getResultingType().isNumeric()
+ rightResult.getResultingType().getItemType().isNumeric()
) {
- if (!rightResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.doubleItem)) {
+ if (!rightResult.getResultingType().isSubtypeOf(SequenceType.DOUBLE_QM)) {
rightQuery = "(CAST (" + rightQuery + " AS DOUBLE))";
}
resultType = BuiltinTypesCatalogue.doubleItem;
} else if (
- rightResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.doubleItem)
+ rightResult.getResultingType().isSubtypeOf(SequenceType.DOUBLE_QM)
&&
- leftResult.getResultingType().isNumeric()
+ leftResult.getResultingType().getItemType().isNumeric()
) {
- if (!leftResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.doubleItem)) {
+ if (!leftResult.getResultingType().isSubtypeOf(SequenceType.DOUBLE_QM)) {
leftQuery = "(CAST (" + leftQuery + " AS DOUBLE))";
}
resultType = BuiltinTypesCatalogue.doubleItem;
} else if (
- leftResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.floatItem)
+ leftResult.getResultingType().isSubtypeOf(SequenceType.FLOAT_QM)
&&
- rightResult.getResultingType().isNumeric()
+ rightResult.getResultingType().getItemType().isNumeric()
) {
- if (!rightResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.floatItem)) {
+ if (!rightResult.getResultingType().isSubtypeOf(SequenceType.FLOAT_QM)) {
rightQuery = "(CAST (" + rightQuery + " AS FLOAT))";
}
resultType = BuiltinTypesCatalogue.floatItem;
} else if (
- rightResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.floatItem)
+ rightResult.getResultingType().isSubtypeOf(SequenceType.FLOAT_QM)
&&
- leftResult.getResultingType().isNumeric()
+ leftResult.getResultingType().getItemType().isNumeric()
) {
- if (!leftResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.floatItem)) {
+ if (!leftResult.getResultingType().isSubtypeOf(SequenceType.FLOAT_QM)) {
leftQuery = "(CAST (" + leftQuery + " AS FLOAT))";
}
resultType = BuiltinTypesCatalogue.floatItem;
} else if (
- leftResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.integerItem)
+ leftResult.getResultingType().isSubtypeOf(SequenceType.INTEGER_QM)
&&
- rightResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.integerItem)
+ rightResult.getResultingType().isSubtypeOf(SequenceType.INTEGER_QM)
) {
if (this.multiplicativeOperator.equals(MultiplicativeExpression.MultiplicativeOperator.DIV)) {
resultType = BuiltinTypesCatalogue.decimalItem;
@@ -601,15 +606,33 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
resultType = BuiltinTypesCatalogue.integerItem;
}
} else if (
- leftResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.decimalItem)
+ leftResult.getResultingType().isSubtypeOf(SequenceType.DECIMAL_QM)
&&
- rightResult.getResultingType().isSubtypeOf(BuiltinTypesCatalogue.decimalItem)
+ rightResult.getResultingType().isSubtypeOf(SequenceType.DECIMAL_QM)
) {
resultType = BuiltinTypesCatalogue.decimalItem;
} else {
return NativeClauseContext.NoNativeQuery;
}
String resultingQuery = null;
+
+ SequenceType.Arity resultingArity =
+ leftResult.getResultingType()
+ .getArity()
+ .multiplyWith(
+ rightResult.getResultingType().getArity()
+ );
+
+ if (resultingArity.equals(Arity.OneOrMore) || resultingArity.equals(Arity.ZeroOrMore)) {
+ throw new UnexpectedTypeException(
+ " \"+\": operation not possible with parameters of type \""
+ + this.left.getDynamicType().toString()
+ + "\" and \""
+ + this.right.getDynamicType().toString()
+ + "\"",
+ getMetadata()
+ );
+ }
switch (this.multiplicativeOperator) {
case MUL:
resultingQuery = "( "
@@ -617,21 +640,33 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
+ " * "
+ rightQuery
+ " )";
- return new NativeClauseContext(nativeClauseContext, resultingQuery, resultType);
+ return new NativeClauseContext(
+ nativeClauseContext,
+ resultingQuery,
+ new SequenceType(resultType, resultingArity)
+ );
case DIV:
resultingQuery = "( "
+ leftQuery
+ " / "
+ rightQuery
+ " )";
- return new NativeClauseContext(nativeClauseContext, resultingQuery, resultType);
+ return new NativeClauseContext(
+ nativeClauseContext,
+ resultingQuery,
+ new SequenceType(resultType, resultingArity)
+ );
case MOD:
resultingQuery = "( "
+ leftQuery
+ " % "
+ rightQuery
+ " )";
- return new NativeClauseContext(nativeClauseContext, resultingQuery, resultType);
+ return new NativeClauseContext(
+ nativeClauseContext,
+ resultingQuery,
+ new SequenceType(resultType, resultingArity)
+ );
default:
return NativeClauseContext.NoNativeQuery;
}
diff --git a/src/main/java/org/rumbledb/runtime/arithmetics/UnaryOperationIterator.java b/src/main/java/org/rumbledb/runtime/arithmetics/UnaryOperationIterator.java
index 4ba3362f5..f44894242 100644
--- a/src/main/java/org/rumbledb/runtime/arithmetics/UnaryOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/arithmetics/UnaryOperationIterator.java
@@ -30,7 +30,7 @@
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.flwor.NativeClauseContext;
-import org.rumbledb.types.ItemType;
+import org.rumbledb.types.SequenceType;
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -104,7 +104,7 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
return NativeClauseContext.NoNativeQuery;
}
String leftQuery = leftResult.getResultingQuery();
- ItemType resultType = leftResult.getResultingType();
+ SequenceType resultType = leftResult.getResultingType();
if (this.negated) {
String resultingQuery = "( "
+ " - "
diff --git a/src/main/java/org/rumbledb/runtime/control/AtMostOneItemIfRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/control/AtMostOneItemIfRuntimeIterator.java
index e681dfbfd..57e985c14 100644
--- a/src/main/java/org/rumbledb/runtime/control/AtMostOneItemIfRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/control/AtMostOneItemIfRuntimeIterator.java
@@ -29,7 +29,7 @@
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.flwor.NativeClauseContext;
-import org.rumbledb.types.BuiltinTypesCatalogue;
+import org.rumbledb.types.SequenceType;
public class AtMostOneItemIfRuntimeIterator extends AtMostOneItemLocalRuntimeIterator {
@@ -72,13 +72,13 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
) {
return NativeClauseContext.NoNativeQuery;
}
- if (!conditionResult.getResultingType().equals(BuiltinTypesCatalogue.booleanItem)) {
+ if (!conditionResult.getResultingType().equals(SequenceType.BOOLEAN)) {
return NativeClauseContext.NoNativeQuery;
}
- if (!thenResult.getResultingType().equals(BuiltinTypesCatalogue.floatItem)) {
+ if (!thenResult.getResultingType().equals(SequenceType.FLOAT)) {
return NativeClauseContext.NoNativeQuery;
}
- if (!elseResult.getResultingType().equals(BuiltinTypesCatalogue.floatItem)) {
+ if (!elseResult.getResultingType().equals(SequenceType.FLOAT)) {
return NativeClauseContext.NoNativeQuery;
}
String resultingQuery = "( "
@@ -89,6 +89,6 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
+ ", "
+ elseResult.getResultingQuery()
+ " ) )";
- return new NativeClauseContext(nativeClauseContext, resultingQuery, BuiltinTypesCatalogue.floatItem);
+ return new NativeClauseContext(nativeClauseContext, resultingQuery, SequenceType.FLOAT);
}
}
diff --git a/src/main/java/org/rumbledb/runtime/flwor/NativeClauseContext.java b/src/main/java/org/rumbledb/runtime/flwor/NativeClauseContext.java
index 58e1eae2b..5f1ba059b 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/NativeClauseContext.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/NativeClauseContext.java
@@ -4,7 +4,7 @@
import org.apache.spark.sql.types.StructType;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.expressions.flowr.FLWOR_CLAUSES;
-import org.rumbledb.types.ItemType;
+import org.rumbledb.types.SequenceType;
import java.util.ArrayList;
import java.util.List;
@@ -20,7 +20,7 @@ public class NativeClauseContext {
private DynamicContext context;
private String resultingQuery;
private List lateralViewPart; // used in array unboxing to generate the correct lateral view
- private ItemType resultingType;
+ private SequenceType resultingType;
private NativeClauseContext() {
}
@@ -43,7 +43,7 @@ public NativeClauseContext(NativeClauseContext parent) {
this.resultingType = parent.resultingType;
}
- public NativeClauseContext(NativeClauseContext parent, String newResultingQuery, ItemType resultingType) {
+ public NativeClauseContext(NativeClauseContext parent, String newResultingQuery, SequenceType resultingType) {
this.clauseType = parent.clauseType;
this.schema = parent.schema;
this.context = parent.context;
@@ -80,11 +80,11 @@ public List getLateralViewPart() {
return this.lateralViewPart;
}
- public ItemType getResultingType() {
+ public SequenceType getResultingType() {
return this.resultingType;
}
- public void setResultingType(ItemType resultingType) {
+ public void setResultingType(SequenceType resultingType) {
this.resultingType = resultingType;
}
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/FloorFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/FloorFunctionIterator.java
index 6c4398bdf..999495344 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/FloorFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/FloorFunctionIterator.java
@@ -29,7 +29,7 @@
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.flwor.NativeClauseContext;
-import org.rumbledb.types.BuiltinTypesCatalogue;
+import org.rumbledb.types.SequenceType;
import java.math.BigDecimal;
import java.math.RoundingMode;
@@ -105,7 +105,7 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
if (value == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
- if (!value.getResultingType().equals(BuiltinTypesCatalogue.floatItem)) {
+ if (!value.getResultingType().equals(SequenceType.FLOAT)) {
return NativeClauseContext.NoNativeQuery;
}
String resultingQuery = "( CAST ("
@@ -113,7 +113,7 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
+ value.getResultingQuery()
+ " ) AS FLOAT)"
+ " )";
- return new NativeClauseContext(nativeClauseContext, resultingQuery, BuiltinTypesCatalogue.floatItem);
+ return new NativeClauseContext(nativeClauseContext, resultingQuery, SequenceType.FLOAT);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/RoundFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/RoundFunctionIterator.java
index 3d9c8a354..20bc96010 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/RoundFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/RoundFunctionIterator.java
@@ -30,7 +30,7 @@
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.flwor.NativeClauseContext;
-import org.rumbledb.types.BuiltinTypesCatalogue;
+import org.rumbledb.types.SequenceType;
import java.math.BigDecimal;
import java.math.RoundingMode;
@@ -145,7 +145,7 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
if (value == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
- if (!value.getResultingType().equals(BuiltinTypesCatalogue.floatItem)) {
+ if (!value.getResultingType().equals(SequenceType.FLOAT)) {
return NativeClauseContext.NoNativeQuery;
}
String resultingQuery = "( CAST ("
@@ -153,6 +153,6 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
+ value.getResultingQuery()
+ " ) AS FLOAT)"
+ " )";
- return new NativeClauseContext(nativeClauseContext, resultingQuery, BuiltinTypesCatalogue.floatItem);
+ return new NativeClauseContext(nativeClauseContext, resultingQuery, SequenceType.FLOAT);
}
}
diff --git a/src/main/java/org/rumbledb/runtime/logics/AndOperationIterator.java b/src/main/java/org/rumbledb/runtime/logics/AndOperationIterator.java
index 77d9b591c..a29d73a94 100644
--- a/src/main/java/org/rumbledb/runtime/logics/AndOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/logics/AndOperationIterator.java
@@ -30,7 +30,7 @@
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.flwor.NativeClauseContext;
-import org.rumbledb.types.BuiltinTypesCatalogue;
+import org.rumbledb.types.SequenceType;
public class AndOperationIterator extends AtMostOneItemLocalRuntimeIterator {
@@ -81,6 +81,6 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
+ " AND "
+ rightResult.getResultingQuery()
+ " )";
- return new NativeClauseContext(nativeClauseContext, resultingQuery, BuiltinTypesCatalogue.booleanItem);
+ return new NativeClauseContext(nativeClauseContext, resultingQuery, SequenceType.BOOLEAN);
}
}
diff --git a/src/main/java/org/rumbledb/runtime/logics/NotOperationIterator.java b/src/main/java/org/rumbledb/runtime/logics/NotOperationIterator.java
index 871468a60..6b690694d 100644
--- a/src/main/java/org/rumbledb/runtime/logics/NotOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/logics/NotOperationIterator.java
@@ -30,7 +30,7 @@
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.flwor.NativeClauseContext;
-import org.rumbledb.types.BuiltinTypesCatalogue;
+import org.rumbledb.types.SequenceType;
public class NotOperationIterator extends AtMostOneItemLocalRuntimeIterator {
@@ -60,6 +60,6 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
}
String resultingQuery = "( NOT " + childResult.getResultingQuery() + " )";
- return new NativeClauseContext(nativeClauseContext, resultingQuery, BuiltinTypesCatalogue.booleanItem);
+ return new NativeClauseContext(nativeClauseContext, resultingQuery, SequenceType.BOOLEAN);
}
}
diff --git a/src/main/java/org/rumbledb/runtime/logics/OrOperationIterator.java b/src/main/java/org/rumbledb/runtime/logics/OrOperationIterator.java
index 85669c4e3..1bfe80ba1 100644
--- a/src/main/java/org/rumbledb/runtime/logics/OrOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/logics/OrOperationIterator.java
@@ -30,7 +30,7 @@
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.flwor.NativeClauseContext;
-import org.rumbledb.types.BuiltinTypesCatalogue;
+import org.rumbledb.types.SequenceType;
public class OrOperationIterator extends AtMostOneItemLocalRuntimeIterator {
@@ -67,6 +67,6 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
}
String resultingQuery = "( " + leftResult.getResultingQuery() + " OR " + rightResult.getResultingQuery() + " )";
- return new NativeClauseContext(nativeClauseContext, resultingQuery, BuiltinTypesCatalogue.booleanItem);
+ return new NativeClauseContext(nativeClauseContext, resultingQuery, SequenceType.BOOLEAN);
}
}
diff --git a/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java b/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java
index b7b506786..caceb2bca 100644
--- a/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java
+++ b/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java
@@ -39,6 +39,7 @@
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.BuiltinTypesCatalogue;
+import org.rumbledb.types.SequenceType;
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -507,9 +508,20 @@ private static Item comparisonResultToBooleanItem(
public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseContext) {
if (this.comparisonOperator.isValueComparison()) {
NativeClauseContext leftResult = this.leftIterator.generateNativeQuery(nativeClauseContext);
- NativeClauseContext rightResult = this.rightIterator.generateNativeQuery(nativeClauseContext);
-
- if (leftResult == NativeClauseContext.NoNativeQuery || rightResult == NativeClauseContext.NoNativeQuery) {
+ if (leftResult == NativeClauseContext.NoNativeQuery) {
+ return NativeClauseContext.NoNativeQuery;
+ }
+ NativeClauseContext rightResult = this.rightIterator.generateNativeQuery(
+ new NativeClauseContext(leftResult, null, null)
+ );
+ if (rightResult == NativeClauseContext.NoNativeQuery) {
+ return NativeClauseContext.NoNativeQuery;
+ }
+ if (
+ SequenceType.Arity.OneOrMore.isSubtypeOf(leftResult.getResultingType().getArity())
+ ||
+ SequenceType.Arity.OneOrMore.isSubtypeOf(rightResult.getResultingType().getArity())
+ ) {
return NativeClauseContext.NoNativeQuery;
}
@@ -517,9 +529,9 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
if (
!(leftResult.getResultingType() != null
&& rightResult.getResultingType() != null
- && leftResult.getResultingType().isNumeric()
- && rightResult.getResultingType().isNumeric()
- || leftResult.getResultingType() == rightResult.getResultingType())
+ && leftResult.getResultingType().getItemType().isNumeric()
+ && rightResult.getResultingType().getItemType().isNumeric()
+ || leftResult.getResultingType().getItemType().equals(rightResult.getResultingType().getItemType()))
) {
return NativeClauseContext.NoNativeQuery;
}
@@ -547,8 +559,15 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
default:
return NativeClauseContext.NoNativeQuery;
}
+ SequenceType.Arity resultingArity = leftResult.getResultingType()
+ .getArity()
+ .multiplyWith(rightResult.getResultingType().getArity());
String query = "( " + leftResult.getResultingQuery() + operator + rightResult.getResultingQuery() + " )";
- return new NativeClauseContext(nativeClauseContext, query, BuiltinTypesCatalogue.booleanItem);
+ return new NativeClauseContext(
+ nativeClauseContext,
+ query,
+ new SequenceType(BuiltinTypesCatalogue.booleanItem, resultingArity)
+ );
} else {
return NativeClauseContext.NoNativeQuery;
}
diff --git a/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java b/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java
index ef1294e7b..336be6e14 100644
--- a/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java
+++ b/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java
@@ -37,7 +37,7 @@
import org.rumbledb.runtime.flwor.FlworDataFrameUtils;
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.ItemType;
-import org.rumbledb.types.TypeMappings;
+import org.rumbledb.types.SequenceType;
import sparksoniq.spark.SparkSessionManager;
@@ -163,6 +163,9 @@ public boolean implementsDataFrames() {
public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseContext) {
NativeClauseContext newContext = this.iterator.generateNativeQuery(nativeClauseContext);
if (newContext != NativeClauseContext.NoNativeQuery) {
+ if (SequenceType.Arity.OneOrMore.isSubtypeOf(newContext.getResultingType().getArity())) {
+ return NativeClauseContext.NoNativeQuery;
+ }
// check if the key has variable dependencies inside the FLWOR expression
// in that case we switch over to UDF
Map keyDependencies = this.children.get(1)
@@ -182,13 +185,21 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
initLookupPosition(newContext.getContext());
+ ItemType resultType = newContext.getResultingType().getItemType();
+ if (!(resultType.isArrayItemType())) {
+ return NativeClauseContext.NoNativeQuery;
+ }
+
schema = newContext.getSchema();
if (!(schema instanceof ArrayType)) {
return NativeClauseContext.NoNativeQuery;
}
- ArrayType arraySchema = (ArrayType) schema;
- newContext.setSchema(arraySchema.elementType());
- newContext.setResultingType(TypeMappings.getItemTypeFromDataFrameDataType(arraySchema.elementType()));
+ newContext.setResultingType(
+ new SequenceType(
+ resultType.getArrayContentFacet(),
+ SequenceType.Arity.OneOrZero
+ )
+ );
newContext.setResultingQuery(newContext.getResultingQuery() + "[" + (this.lookup - 1) + "]");
}
return newContext;
diff --git a/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java b/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java
index 7c61950a5..c71a7a2af 100644
--- a/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java
+++ b/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java
@@ -22,8 +22,6 @@
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.function.FlatMapFunction;
-import org.apache.spark.sql.types.ArrayType;
-import org.apache.spark.sql.types.DataType;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.exceptions.ExceptionMetadata;
@@ -37,7 +35,7 @@
import org.rumbledb.runtime.flwor.FlworDataFrameUtils;
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.ItemType;
-import org.rumbledb.types.TypeMappings;
+import org.rumbledb.types.SequenceType;
import sparksoniq.spark.SparkSessionManager;
@@ -137,14 +135,18 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
}
NativeClauseContext newContext = this.iterator.generateNativeQuery(nativeClauseContext);
if (newContext != NativeClauseContext.NoNativeQuery) {
- DataType schema = newContext.getSchema();
- if (!(schema instanceof ArrayType)) {
+ ItemType newContextType = newContext.getResultingType().getItemType();
+ if (!newContextType.isArrayItemType()) {
// let control to UDF when what we are unboxing is not an array
return NativeClauseContext.NoNativeQuery;
}
- ArrayType arraySchema = (ArrayType) schema;
- newContext.setSchema(arraySchema.elementType());
- newContext.setResultingType(TypeMappings.getItemTypeFromDataFrameDataType(arraySchema.elementType()));
+ newContext.setResultingType(
+ new SequenceType(
+ newContextType.getArrayContentFacet(),
+ SequenceType.Arity.ZeroOrMore
+ )
+ );
+
List lateralViewPart = newContext.getLateralViewPart();
if (lateralViewPart.size() == 0) {
lateralViewPart.add("explode(" + newContext.getResultingQuery() + ")");
diff --git a/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java b/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java
index 05f9c285d..0a65f546b 100644
--- a/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java
+++ b/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java
@@ -43,6 +43,8 @@
import org.rumbledb.types.BuiltinTypesCatalogue;
import org.rumbledb.types.FieldDescriptor;
import org.rumbledb.types.ItemType;
+import org.rumbledb.types.SequenceType;
+import org.rumbledb.types.SequenceType.Arity;
import org.rumbledb.types.TypeMappings;
import sparksoniq.spark.SparkSessionManager;
@@ -300,7 +302,9 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
}
StructField field = structSchema.fields()[structSchema.fieldIndex(key)];
newContext.setSchema(field.dataType());
- newContext.setResultingType(TypeMappings.getItemTypeFromDataFrameDataType(field.dataType()));
+ newContext.setResultingType(
+ new SequenceType(TypeMappings.getItemTypeFromDataFrameDataType(field.dataType()), Arity.One)
+ );
} else {
if (this.children.get(1) instanceof StringRuntimeIterator) {
throw new UnexpectedStaticTypeException(
diff --git a/src/main/java/org/rumbledb/runtime/primary/ContextExpressionIterator.java b/src/main/java/org/rumbledb/runtime/primary/ContextExpressionIterator.java
index 06f720e56..9422f6a88 100644
--- a/src/main/java/org/rumbledb/runtime/primary/ContextExpressionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/ContextExpressionIterator.java
@@ -32,6 +32,7 @@
import org.rumbledb.runtime.flwor.FlworDataFrameUtils;
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.ItemType;
+import org.rumbledb.types.SequenceType;
import org.rumbledb.types.TypeMappings;
import sparksoniq.spark.SparkSessionManager;
@@ -88,12 +89,10 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
)];
DataType fieldType = field.dataType();
ItemType variableType = TypeMappings.getItemTypeFromDataFrameDataType(fieldType);
- NativeClauseContext newContext = new NativeClauseContext(
+ return new NativeClauseContext(
nativeClauseContext,
"`" + SparkSessionManager.atomicJSONiqItemColumnName + "`",
- variableType
+ new SequenceType(variableType, SequenceType.Arity.One)
);
- newContext.setSchema(fieldType);
- return newContext;
}
}
diff --git a/src/main/java/org/rumbledb/runtime/primary/DecimalRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/primary/DecimalRuntimeIterator.java
index d97161b1b..bca8ad702 100644
--- a/src/main/java/org/rumbledb/runtime/primary/DecimalRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/DecimalRuntimeIterator.java
@@ -26,7 +26,7 @@
import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.flwor.NativeClauseContext;
-import org.rumbledb.types.BuiltinTypesCatalogue;
+import org.rumbledb.types.SequenceType;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import java.math.BigDecimal;
@@ -52,7 +52,7 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
return new NativeClauseContext(
nativeClauseContext,
"" + this.item.getDecimalValue(),
- BuiltinTypesCatalogue.decimalItem
+ SequenceType.DECIMAL
);
}
}
diff --git a/src/main/java/org/rumbledb/runtime/primary/DoubleRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/primary/DoubleRuntimeIterator.java
index 0fd867f3f..1dbbaaf84 100644
--- a/src/main/java/org/rumbledb/runtime/primary/DoubleRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/DoubleRuntimeIterator.java
@@ -26,7 +26,7 @@
import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.flwor.NativeClauseContext;
-import org.rumbledb.types.BuiltinTypesCatalogue;
+import org.rumbledb.types.SequenceType;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
public class DoubleRuntimeIterator extends AtMostOneItemLocalRuntimeIterator {
@@ -51,7 +51,7 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
return new NativeClauseContext(
nativeClauseContext,
"" + this.item.getDoubleValue(),
- BuiltinTypesCatalogue.doubleItem
+ SequenceType.DOUBLE
);
}
}
diff --git a/src/main/java/org/rumbledb/runtime/primary/IntegerRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/primary/IntegerRuntimeIterator.java
index e6fcb7201..7dfcaccf9 100644
--- a/src/main/java/org/rumbledb/runtime/primary/IntegerRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/IntegerRuntimeIterator.java
@@ -26,7 +26,7 @@
import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.flwor.NativeClauseContext;
-import org.rumbledb.types.BuiltinTypesCatalogue;
+import org.rumbledb.types.SequenceType;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
public class IntegerRuntimeIterator extends AtMostOneItemLocalRuntimeIterator {
@@ -54,7 +54,7 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
return new NativeClauseContext(
nativeClauseContext,
"" + this.item.getIntValue(),
- BuiltinTypesCatalogue.integerItem
+ SequenceType.INTEGER
);
}
}
diff --git a/src/main/java/org/rumbledb/runtime/primary/StringRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/primary/StringRuntimeIterator.java
index 2c86e683b..821fae8f7 100644
--- a/src/main/java/org/rumbledb/runtime/primary/StringRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/StringRuntimeIterator.java
@@ -28,7 +28,7 @@
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.flwor.NativeClauseContext;
-import org.rumbledb.types.BuiltinTypesCatalogue;
+import org.rumbledb.types.SequenceType;
public class StringRuntimeIterator extends AtMostOneItemLocalRuntimeIterator {
@@ -50,7 +50,7 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
return new NativeClauseContext(
nativeClauseContext,
'"' + this.item.getStringValue() + '"',
- BuiltinTypesCatalogue.stringItem
+ SequenceType.STRING
);
}
}
diff --git a/src/main/java/org/rumbledb/runtime/primary/VariableReferenceIterator.java b/src/main/java/org/rumbledb/runtime/primary/VariableReferenceIterator.java
index 22bec9a46..ceb41a17e 100644
--- a/src/main/java/org/rumbledb/runtime/primary/VariableReferenceIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/VariableReferenceIterator.java
@@ -38,6 +38,7 @@
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.ItemType;
import org.rumbledb.types.SequenceType;
+import org.rumbledb.types.SequenceType.Arity;
import org.rumbledb.types.TypeMappings;
import java.util.List;
@@ -113,7 +114,7 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
NativeClauseContext newContext = new NativeClauseContext(
nativeClauseContext,
"`" + escapedName + "`",
- variableType
+ new SequenceType(variableType, Arity.One)
);
newContext.setSchema(fieldType);
return newContext;
diff --git a/src/main/java/org/rumbledb/runtime/typing/AtMostOneItemTypePromotionIterator.java b/src/main/java/org/rumbledb/runtime/typing/AtMostOneItemTypePromotionIterator.java
index f761a502c..6e6a76c80 100644
--- a/src/main/java/org/rumbledb/runtime/typing/AtMostOneItemTypePromotionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/typing/AtMostOneItemTypePromotionIterator.java
@@ -125,7 +125,7 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
if (value.equals(NativeClauseContext.NoNativeQuery)) {
return NativeClauseContext.NoNativeQuery;
}
- if (!value.getResultingType().equals(BuiltinTypesCatalogue.floatItem)) {
+ if (!value.getResultingType().equals(SequenceType.FLOAT)) {
return NativeClauseContext.NoNativeQuery;
}
if (
diff --git a/src/main/java/org/rumbledb/types/SequenceType.java b/src/main/java/org/rumbledb/types/SequenceType.java
index 9938c0df2..9b491067a 100644
--- a/src/main/java/org/rumbledb/types/SequenceType.java
+++ b/src/main/java/org/rumbledb/types/SequenceType.java
@@ -53,6 +53,66 @@ public class SequenceType implements Serializable {
Arity.One
);
+ public final static SequenceType DECIMAL = new SequenceType(
+ BuiltinTypesCatalogue.decimalItem,
+ Arity.One
+ );
+
+ public final static SequenceType DOUBLE = new SequenceType(
+ BuiltinTypesCatalogue.doubleItem,
+ Arity.One
+ );
+
+ public final static SequenceType FLOAT = new SequenceType(
+ BuiltinTypesCatalogue.floatItem,
+ Arity.One
+ );
+
+ public final static SequenceType INT = new SequenceType(
+ BuiltinTypesCatalogue.intItem,
+ Arity.One
+ );
+
+ public final static SequenceType STRING = new SequenceType(
+ BuiltinTypesCatalogue.stringItem,
+ Arity.One
+ );
+
+ public final static SequenceType BOOLEAN = new SequenceType(
+ BuiltinTypesCatalogue.stringItem,
+ Arity.One
+ );
+
+ public final static SequenceType INTEGER_QM = new SequenceType(
+ BuiltinTypesCatalogue.integerItem,
+ Arity.OneOrZero
+ );
+
+ public final static SequenceType DECIMAL_QM = new SequenceType(
+ BuiltinTypesCatalogue.decimalItem,
+ Arity.OneOrZero
+ );
+
+ public final static SequenceType DOUBLE_QM = new SequenceType(
+ BuiltinTypesCatalogue.doubleItem,
+ Arity.OneOrZero
+ );
+
+ public final static SequenceType FLOAT_QM = new SequenceType(
+ BuiltinTypesCatalogue.floatItem,
+ Arity.OneOrZero
+ );
+
+ public final static SequenceType INT_QM = new SequenceType(
+ BuiltinTypesCatalogue.intItem,
+ Arity.OneOrZero
+ );
+
+ public final static SequenceType STRING_QM = new SequenceType(
+ BuiltinTypesCatalogue.stringItem,
+ Arity.OneOrZero
+ );
+
public final static SequenceType EMPTY_SEQUENCE = new SequenceType();
From 6b6b328ac07c05f5003fd219b8a72ac5d9b02e31 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Wed, 19 Apr 2023 11:54:33 +0200
Subject: [PATCH 036/136] Fix BOOLEAN to boolean.
---
src/main/java/org/rumbledb/types/SequenceType.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/org/rumbledb/types/SequenceType.java b/src/main/java/org/rumbledb/types/SequenceType.java
index 9b491067a..bb52b6b76 100644
--- a/src/main/java/org/rumbledb/types/SequenceType.java
+++ b/src/main/java/org/rumbledb/types/SequenceType.java
@@ -79,7 +79,7 @@ public class SequenceType implements Serializable {
);
public final static SequenceType BOOLEAN = new SequenceType(
- BuiltinTypesCatalogue.stringItem,
+ BuiltinTypesCatalogue.booleanItem,
Arity.One
);
From 9a50e85015f0b7ee60f8ac4c95c7a07c0570aac4 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Mon, 24 Apr 2023 15:42:24 +0200
Subject: [PATCH 037/136] Fix test.
---
.../java/org/rumbledb/runtime/misc/ComparisonIterator.java | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java b/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java
index caceb2bca..cadb15868 100644
--- a/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java
+++ b/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java
@@ -511,9 +511,7 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
if (leftResult == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
- NativeClauseContext rightResult = this.rightIterator.generateNativeQuery(
- new NativeClauseContext(leftResult, null, null)
- );
+ NativeClauseContext rightResult = this.rightIterator.generateNativeQuery(nativeClauseContext);
if (rightResult == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
From 13189a2402dd85192a6a36e8f43cc7fb8e9ab8ba Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Mon, 24 Apr 2023 15:57:32 +0200
Subject: [PATCH 038/136] Fix test.
---
.../runtime/flwor/clauses/OrderByClauseSparkIterator.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java b/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java
index ae8e20ec4..1db7c45dc 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java
@@ -50,6 +50,7 @@
import org.rumbledb.runtime.flwor.udfs.OrderClauseCreateColumnsUDF;
import org.rumbledb.runtime.flwor.udfs.OrderClauseDetermineTypeUDF;
import org.rumbledb.types.BuiltinTypesCatalogue;
+import org.rumbledb.types.SequenceType;
import org.rumbledb.types.TypeMappings;
import sparksoniq.jsoniq.tuple.FlworKey;
@@ -544,8 +545,8 @@ public static FlworDataFrame tryNativeQuery(
// because of meaning mismatch between sparksql (where it is supposed to order by the i-th col)
// and jsoniq (order by a costant, so no actual ordering is performed)
if (
- (nativeQuery.getResultingType() == BuiltinTypesCatalogue.integerItem
- || nativeQuery.getResultingType() == BuiltinTypesCatalogue.intItem)
+ (nativeQuery.getResultingType().isSubtypeOf(SequenceType.INTEGER_QM)
+ || nativeQuery.getResultingType().isSubtypeOf(SequenceType.INT_QM))
&& nativeQuery.getResultingQuery().matches("\\s*-?\\s*\\d+\\s*")
) {
orderSql.append('"');
From 9f18ae151111278e19f330e750959f2a16612ea8 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Mon, 24 Apr 2023 15:58:59 +0200
Subject: [PATCH 039/136] Filter.
---
.../runtime/flwor/clauses/OrderByClauseSparkIterator.java | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java b/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java
index 1db7c45dc..9df349e57 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java
@@ -51,6 +51,7 @@
import org.rumbledb.runtime.flwor.udfs.OrderClauseDetermineTypeUDF;
import org.rumbledb.types.BuiltinTypesCatalogue;
import org.rumbledb.types.SequenceType;
+import org.rumbledb.types.SequenceType.Arity;
import org.rumbledb.types.TypeMappings;
import sparksoniq.jsoniq.tuple.FlworKey;
@@ -538,6 +539,11 @@ public static FlworDataFrame tryNativeQuery(
if (nativeQuery == NativeClauseContext.NoNativeQuery) {
return null;
}
+ // For now we are conservative and do not support arities other than one.
+ if(!nativeQuery.getResultingType().getArity().equals(Arity.One))
+ {
+ return null;
+ }
orderSql.append(orderSeparator);
orderSeparator = ", ";
// special check to avoid ordering by an integer constant in an ordering clause
From 425ac33dda9f964f991ddb4b8135c70ef0d3d404 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Mon, 24 Apr 2023 16:06:40 +0200
Subject: [PATCH 040/136] Conservatively do not use native queries if arity not
one.
---
.../runtime/arithmetics/AdditiveOperationIterator.java | 6 ++++++
.../arithmetics/MultiplicativeOperationIterator.java | 6 ++++++
.../runtime/arithmetics/UnaryOperationIterator.java | 4 ++++
.../runtime/flwor/clauses/OrderByClauseSparkIterator.java | 5 ++---
.../org/rumbledb/runtime/misc/ComparisonIterator.java | 7 +++++++
.../rumbledb/runtime/navigation/ArrayLookupIterator.java | 6 +++++-
.../runtime/navigation/ArrayUnboxingIterator.java | 4 ++++
.../rumbledb/runtime/navigation/ObjectLookupIterator.java | 8 +++++---
8 files changed, 39 insertions(+), 7 deletions(-)
diff --git a/src/main/java/org/rumbledb/runtime/arithmetics/AdditiveOperationIterator.java b/src/main/java/org/rumbledb/runtime/arithmetics/AdditiveOperationIterator.java
index 51167a3d7..ef2217ecb 100644
--- a/src/main/java/org/rumbledb/runtime/arithmetics/AdditiveOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/arithmetics/AdditiveOperationIterator.java
@@ -430,10 +430,16 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
if (leftResult == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
+ if (!leftResult.getResultingType().getArity().equals(Arity.One)) {
+ return NativeClauseContext.NoNativeQuery;
+ }
NativeClauseContext rightResult = this.rightIterator.generateNativeQuery(nativeClauseContext);
if (rightResult == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
+ if (!rightResult.getResultingType().getArity().equals(Arity.One)) {
+ return NativeClauseContext.NoNativeQuery;
+ }
ItemType resultType = null;
String leftQuery = leftResult.getResultingQuery();
String rightQuery = rightResult.getResultingQuery();
diff --git a/src/main/java/org/rumbledb/runtime/arithmetics/MultiplicativeOperationIterator.java b/src/main/java/org/rumbledb/runtime/arithmetics/MultiplicativeOperationIterator.java
index ec2397d73..f912d2c3e 100644
--- a/src/main/java/org/rumbledb/runtime/arithmetics/MultiplicativeOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/arithmetics/MultiplicativeOperationIterator.java
@@ -552,10 +552,16 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
if (leftResult == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
+ if (!leftResult.getResultingType().getArity().equals(Arity.One)) {
+ return NativeClauseContext.NoNativeQuery;
+ }
NativeClauseContext rightResult = this.rightIterator.generateNativeQuery(nativeClauseContext);
if (rightResult == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
+ if (!rightResult.getResultingType().getArity().equals(Arity.One)) {
+ return NativeClauseContext.NoNativeQuery;
+ }
ItemType resultType = null;
String leftQuery = leftResult.getResultingQuery();
String rightQuery = rightResult.getResultingQuery();
diff --git a/src/main/java/org/rumbledb/runtime/arithmetics/UnaryOperationIterator.java b/src/main/java/org/rumbledb/runtime/arithmetics/UnaryOperationIterator.java
index f44894242..93b3dcdfd 100644
--- a/src/main/java/org/rumbledb/runtime/arithmetics/UnaryOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/arithmetics/UnaryOperationIterator.java
@@ -31,6 +31,7 @@
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.SequenceType;
+import org.rumbledb.types.SequenceType.Arity;
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -103,6 +104,9 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
if (leftResult == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
+ if (!leftResult.getResultingType().getArity().equals(Arity.One)) {
+ return NativeClauseContext.NoNativeQuery;
+ }
String leftQuery = leftResult.getResultingQuery();
SequenceType resultType = leftResult.getResultingType();
if (this.negated) {
diff --git a/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java b/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java
index 9df349e57..c738ec347 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java
@@ -540,9 +540,8 @@ public static FlworDataFrame tryNativeQuery(
return null;
}
// For now we are conservative and do not support arities other than one.
- if(!nativeQuery.getResultingType().getArity().equals(Arity.One))
- {
- return null;
+ if (!nativeQuery.getResultingType().getArity().equals(Arity.One)) {
+ return null;
}
orderSql.append(orderSeparator);
orderSeparator = ", ";
diff --git a/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java b/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java
index cadb15868..acd381a28 100644
--- a/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java
+++ b/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java
@@ -40,6 +40,7 @@
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.BuiltinTypesCatalogue;
import org.rumbledb.types.SequenceType;
+import org.rumbledb.types.SequenceType.Arity;
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -511,10 +512,16 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
if (leftResult == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
+ if (!leftResult.getResultingType().getArity().equals(Arity.One)) {
+ return NativeClauseContext.NoNativeQuery;
+ }
NativeClauseContext rightResult = this.rightIterator.generateNativeQuery(nativeClauseContext);
if (rightResult == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
+ if (!rightResult.getResultingType().getArity().equals(Arity.One)) {
+ return NativeClauseContext.NoNativeQuery;
+ }
if (
SequenceType.Arity.OneOrMore.isSubtypeOf(leftResult.getResultingType().getArity())
||
diff --git a/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java b/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java
index 336be6e14..ae0f496a6 100644
--- a/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java
+++ b/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java
@@ -38,6 +38,7 @@
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.ItemType;
import org.rumbledb.types.SequenceType;
+import org.rumbledb.types.SequenceType.Arity;
import sparksoniq.spark.SparkSessionManager;
@@ -163,7 +164,10 @@ public boolean implementsDataFrames() {
public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseContext) {
NativeClauseContext newContext = this.iterator.generateNativeQuery(nativeClauseContext);
if (newContext != NativeClauseContext.NoNativeQuery) {
- if (SequenceType.Arity.OneOrMore.isSubtypeOf(newContext.getResultingType().getArity())) {
+ // if (SequenceType.Arity.OneOrMore.isSubtypeOf(newContext.getResultingType().getArity())) {
+ // return NativeClauseContext.NoNativeQuery;
+ // }
+ if (!newContext.getResultingType().getArity().equals(Arity.One)) {
return NativeClauseContext.NoNativeQuery;
}
// check if the key has variable dependencies inside the FLWOR expression
diff --git a/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java b/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java
index c71a7a2af..27450df62 100644
--- a/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java
+++ b/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java
@@ -36,6 +36,7 @@
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.ItemType;
import org.rumbledb.types.SequenceType;
+import org.rumbledb.types.SequenceType.Arity;
import sparksoniq.spark.SparkSessionManager;
@@ -135,6 +136,9 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
}
NativeClauseContext newContext = this.iterator.generateNativeQuery(nativeClauseContext);
if (newContext != NativeClauseContext.NoNativeQuery) {
+ if (!newContext.getResultingType().getArity().equals(Arity.One)) {
+ return NativeClauseContext.NoNativeQuery;
+ }
ItemType newContextType = newContext.getResultingType().getItemType();
if (!newContextType.isArrayItemType()) {
// let control to UDF when what we are unboxing is not an array
diff --git a/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java b/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java
index 0a65f546b..696ad9cec 100644
--- a/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java
+++ b/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java
@@ -267,11 +267,13 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
}
} else {
newContext = this.iterator.generateNativeQuery(nativeClauseContext);
- if (newContext != NativeClauseContext.NoNativeQuery) {
- leftSchema = newContext.getSchema();
- } else {
+ if (newContext == NativeClauseContext.NoNativeQuery) {
+ return NativeClauseContext.NoNativeQuery;
+ }
+ if (!newContext.getResultingType().getArity().equals(Arity.One)) {
return NativeClauseContext.NoNativeQuery;
}
+ leftSchema = newContext.getSchema();
}
From b722666b3cedb5665299fd2855d80678c9aff467 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Tue, 25 Apr 2023 13:36:36 +0200
Subject: [PATCH 041/136] More conservative boolean and or not.
---
.../rumbledb/runtime/logics/AndOperationIterator.java | 11 ++++++++++-
.../rumbledb/runtime/logics/NotOperationIterator.java | 3 +++
.../rumbledb/runtime/logics/OrOperationIterator.java | 11 ++++++++++-
3 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/rumbledb/runtime/logics/AndOperationIterator.java b/src/main/java/org/rumbledb/runtime/logics/AndOperationIterator.java
index a29d73a94..7f54928e7 100644
--- a/src/main/java/org/rumbledb/runtime/logics/AndOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/logics/AndOperationIterator.java
@@ -72,7 +72,16 @@ public Item materializeFirstItemOrNull(
public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseContext) {
NativeClauseContext leftResult = this.leftIterator.generateNativeQuery(nativeClauseContext);
NativeClauseContext rightResult = this.rightIterator.generateNativeQuery(nativeClauseContext);
- if (leftResult == NativeClauseContext.NoNativeQuery || rightResult == NativeClauseContext.NoNativeQuery) {
+ if (leftResult == NativeClauseContext.NoNativeQuery) {
+ return NativeClauseContext.NoNativeQuery;
+ }
+ if (rightResult == NativeClauseContext.NoNativeQuery) {
+ return NativeClauseContext.NoNativeQuery;
+ }
+ if (!leftResult.getResultingType().equals(SequenceType.BOOLEAN)) {
+ return NativeClauseContext.NoNativeQuery;
+ }
+ if (!rightResult.getResultingType().equals(SequenceType.BOOLEAN)) {
return NativeClauseContext.NoNativeQuery;
}
diff --git a/src/main/java/org/rumbledb/runtime/logics/NotOperationIterator.java b/src/main/java/org/rumbledb/runtime/logics/NotOperationIterator.java
index 6b690694d..5792f9f68 100644
--- a/src/main/java/org/rumbledb/runtime/logics/NotOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/logics/NotOperationIterator.java
@@ -58,6 +58,9 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
if (childResult == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
+ if (!childResult.getResultingType().equals(SequenceType.BOOLEAN)) {
+ return NativeClauseContext.NoNativeQuery;
+ }
String resultingQuery = "( NOT " + childResult.getResultingQuery() + " )";
return new NativeClauseContext(nativeClauseContext, resultingQuery, SequenceType.BOOLEAN);
diff --git a/src/main/java/org/rumbledb/runtime/logics/OrOperationIterator.java b/src/main/java/org/rumbledb/runtime/logics/OrOperationIterator.java
index 1bfe80ba1..5f20ae5ee 100644
--- a/src/main/java/org/rumbledb/runtime/logics/OrOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/logics/OrOperationIterator.java
@@ -62,7 +62,16 @@ public Item materializeFirstItemOrNull(DynamicContext dynamicContext) {
public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseContext) {
NativeClauseContext leftResult = this.leftIterator.generateNativeQuery(nativeClauseContext);
NativeClauseContext rightResult = this.rightIterator.generateNativeQuery(nativeClauseContext);
- if (leftResult == NativeClauseContext.NoNativeQuery || rightResult == NativeClauseContext.NoNativeQuery) {
+ if (leftResult == NativeClauseContext.NoNativeQuery) {
+ return NativeClauseContext.NoNativeQuery;
+ }
+ if (rightResult == NativeClauseContext.NoNativeQuery) {
+ return NativeClauseContext.NoNativeQuery;
+ }
+ if (!leftResult.getResultingType().equals(SequenceType.BOOLEAN)) {
+ return NativeClauseContext.NoNativeQuery;
+ }
+ if (!rightResult.getResultingType().equals(SequenceType.BOOLEAN)) {
return NativeClauseContext.NoNativeQuery;
}
From 5aefbe33df63a6540a66651a64a8a89d0306ca39 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Tue, 25 Apr 2023 14:29:39 +0200
Subject: [PATCH 042/136] Fix nested native queries.
---
.../runtime/flwor/NativeClauseContext.java | 15 ++++++
.../navigation/ArrayLookupIterator.java | 5 +-
.../navigation/ArrayUnboxingIterator.java | 53 +++++++++----------
.../navigation/ObjectLookupIterator.java | 3 --
.../java/org/rumbledb/types/TypeMappings.java | 4 +-
.../runtime-native-flwor/group-by/GroupBy7.jq | 3 +-
.../runtime-native-flwor/group-by/GroupBy8.jq | 3 +-
7 files changed, 49 insertions(+), 37 deletions(-)
diff --git a/src/main/java/org/rumbledb/runtime/flwor/NativeClauseContext.java b/src/main/java/org/rumbledb/runtime/flwor/NativeClauseContext.java
index 5f1ba059b..1fa4e36a7 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/NativeClauseContext.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/NativeClauseContext.java
@@ -87,4 +87,19 @@ public SequenceType getResultingType() {
public void setResultingType(SequenceType resultingType) {
this.resultingType = resultingType;
}
+
+ public String toString() {
+ StringBuffer sb = new StringBuffer();
+ sb.append("Native clause context.\n");
+ sb.append("Query: " + this.resultingQuery + "\n");
+ sb.append("Clause type: " + this.clauseType + "\n");
+ sb.append("Schema: " + this.schema.toString() + "\n");
+ sb.append("Context: " + this.context.toString() + "\n");
+ sb.append("Resulting type: " + this.resultingType + "\n");
+ sb.append("Lateral views:\n");
+ for (String s : this.lateralViewPart) {
+ sb.append(s + "\n");
+ }
+ return sb.toString();
+ }
}
diff --git a/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java b/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java
index ae0f496a6..c4e0d6aa7 100644
--- a/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java
+++ b/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java
@@ -38,7 +38,6 @@
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.ItemType;
import org.rumbledb.types.SequenceType;
-import org.rumbledb.types.SequenceType.Arity;
import sparksoniq.spark.SparkSessionManager;
@@ -167,9 +166,6 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
// if (SequenceType.Arity.OneOrMore.isSubtypeOf(newContext.getResultingType().getArity())) {
// return NativeClauseContext.NoNativeQuery;
// }
- if (!newContext.getResultingType().getArity().equals(Arity.One)) {
- return NativeClauseContext.NoNativeQuery;
- }
// check if the key has variable dependencies inside the FLWOR expression
// in that case we switch over to UDF
Map keyDependencies = this.children.get(1)
@@ -204,6 +200,7 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
SequenceType.Arity.OneOrZero
)
);
+ newContext.setSchema(((ArrayType) newContext.getSchema()).elementType());
newContext.setResultingQuery(newContext.getResultingQuery() + "[" + (this.lookup - 1) + "]");
}
return newContext;
diff --git a/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java b/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java
index 27450df62..f9dc9e1c6 100644
--- a/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java
+++ b/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java
@@ -22,6 +22,7 @@
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.function.FlatMapFunction;
+import org.apache.spark.sql.types.ArrayType;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.exceptions.ExceptionMetadata;
@@ -36,7 +37,6 @@
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.ItemType;
import org.rumbledb.types.SequenceType;
-import org.rumbledb.types.SequenceType.Arity;
import sparksoniq.spark.SparkSessionManager;
@@ -135,34 +135,33 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
return NativeClauseContext.NoNativeQuery;
}
NativeClauseContext newContext = this.iterator.generateNativeQuery(nativeClauseContext);
- if (newContext != NativeClauseContext.NoNativeQuery) {
- if (!newContext.getResultingType().getArity().equals(Arity.One)) {
- return NativeClauseContext.NoNativeQuery;
- }
- ItemType newContextType = newContext.getResultingType().getItemType();
- if (!newContextType.isArrayItemType()) {
- // let control to UDF when what we are unboxing is not an array
- return NativeClauseContext.NoNativeQuery;
- }
- newContext.setResultingType(
- new SequenceType(
- newContextType.getArrayContentFacet(),
- SequenceType.Arity.ZeroOrMore
- )
+ if (newContext == NativeClauseContext.NoNativeQuery) {
+ return NativeClauseContext.NoNativeQuery;
+ }
+ ItemType newContextType = newContext.getResultingType().getItemType();
+ if (!newContextType.isArrayItemType()) {
+ // let control to UDF when what we are unboxing is not an array
+ return NativeClauseContext.NoNativeQuery;
+ }
+ newContext.setResultingType(
+ new SequenceType(
+ newContextType.getArrayContentFacet(),
+ SequenceType.Arity.ZeroOrMore
+ )
+ );
+
+ List lateralViewPart = newContext.getLateralViewPart();
+ if (lateralViewPart.size() == 0) {
+ lateralViewPart.add("explode(" + newContext.getResultingQuery() + ")");
+ } else {
+ // if we have multiple array unboxing we stack multiple lateral views and each one takes from the
+ // previous
+ lateralViewPart.add(
+ "explode( arr" + lateralViewPart.size() + ".col" + newContext.getResultingQuery() + ")"
);
-
- List lateralViewPart = newContext.getLateralViewPart();
- if (lateralViewPart.size() == 0) {
- lateralViewPart.add("explode(" + newContext.getResultingQuery() + ")");
- } else {
- // if we have multiple array unboxing we stack multiple lateral views and each one takes from the
- // previous
- lateralViewPart.add(
- "explode( arr" + lateralViewPart.size() + ".col" + newContext.getResultingQuery() + ")"
- );
- }
- newContext.setResultingQuery(""); // dealt by for clause
}
+ newContext.setSchema(((ArrayType) newContext.getSchema()).elementType());
+ newContext.setResultingQuery(""); // dealt by for clause
return newContext;
}
diff --git a/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java b/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java
index 696ad9cec..d15afd998 100644
--- a/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java
+++ b/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java
@@ -270,9 +270,6 @@ public NativeClauseContext generateNativeQuery(NativeClauseContext nativeClauseC
if (newContext == NativeClauseContext.NoNativeQuery) {
return NativeClauseContext.NoNativeQuery;
}
- if (!newContext.getResultingType().getArity().equals(Arity.One)) {
- return NativeClauseContext.NoNativeQuery;
- }
leftSchema = newContext.getSchema();
}
diff --git a/src/main/java/org/rumbledb/types/TypeMappings.java b/src/main/java/org/rumbledb/types/TypeMappings.java
index f637cc18d..e37bb117a 100644
--- a/src/main/java/org/rumbledb/types/TypeMappings.java
+++ b/src/main/java/org/rumbledb/types/TypeMappings.java
@@ -112,7 +112,9 @@ public static ItemType getItemTypeFromDataFrameDataType(DataType dataType) {
return BuiltinTypesCatalogue.objectItem;
}
if (dataType instanceof ArrayType) {
- return BuiltinTypesCatalogue.arrayItem;
+ ArrayType arrayType = (ArrayType) dataType;
+ ItemType itemType = getItemTypeFromDataFrameDataType(arrayType.elementType());
+ return new ArrayItemType(null, BuiltinTypesCatalogue.arrayItem, itemType, null, null, null);
}
if (dataType instanceof StructType) {
return BuiltinTypesCatalogue.objectItem;
diff --git a/src/test/resources/test_files/runtime-native-flwor/group-by/GroupBy7.jq b/src/test/resources/test_files/runtime-native-flwor/group-by/GroupBy7.jq
index 227971f92..450a7ec4b 100644
--- a/src/test/resources/test_files/runtime-native-flwor/group-by/GroupBy7.jq
+++ b/src/test/resources/test_files/runtime-native-flwor/group-by/GroupBy7.jq
@@ -1,4 +1,4 @@
-(:JIQS: ShouldRun; Output="({ "k" : 2, "c" : [ { "key" : 2, "foo" : { "bar" : [ 0, 1, 2 ] } }, { "key" : 2, "foo" : { "bar" : [ 3, 4, 5 ] } }, { "key" : 2, "foo" : { "bar" : [ 6, 7, 8 ] } } ], "d" : [ 2, 2, 2 ], "e" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ], "f" : [ [ 0, 1, 2 ], [ 3, 4, 5 ], [ 6, 7, 8 ] ] }, { "k" : 1, "c" : [ { "key" : 1, "foo" : { "bar" : [ -1, 0, 1 ] } }, { "key" : 1, "foo" : { "bar" : [ 2, 3, 4 ] } }, { "key" : 1, "foo" : { "bar" : [ 5, 6, 7 ] } }, { "key" : 1, "foo" : { "bar" : [ 8, 9, 10 ] } } ], "d" : [ 1, 1, 1, 1 ], "e" : [ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], "f" : [ [ -1, 0, 1 ], [ 2, 3, 4 ], [ 5, 6, 7 ], [ 8, 9, 10 ] ] }, { "k" : 0, "c" : [ { "key" : 0, "foo" : { "bar" : [ 1, 2, 3 ] } }, { "key" : 0, "foo" : { "bar" : [ 4, 5, 6 ] } }, { "key" : 0, "foo" : { "bar" : [ 7, 8, 9 ] } } ], "d" : [ 0, 0, 0 ], "e" : [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ], "f" : [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] })" :)
+(:JIQS: ShouldRun; Output="({ "k" : 0, "c" : [ { "key" : 0, "foo" : { "bar" : [ 1, 2, 3 ] } }, { "key" : 0, "foo" : { "bar" : [ 4, 5, 6 ] } }, { "key" : 0, "foo" : { "bar" : [ 7, 8, 9 ] } } ], "d" : [ 0, 0, 0 ], "e" : [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ], "f" : [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] }, { "k" : 1, "c" : [ { "key" : 1, "foo" : { "bar" : [ -1, 0, 1 ] } }, { "key" : 1, "foo" : { "bar" : [ 2, 3, 4 ] } }, { "key" : 1, "foo" : { "bar" : [ 5, 6, 7 ] } }, { "key" : 1, "foo" : { "bar" : [ 8, 9, 10 ] } } ], "d" : [ 1, 1, 1, 1 ], "e" : [ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], "f" : [ [ -1, 0, 1 ], [ 2, 3, 4 ], [ 5, 6, 7 ], [ 8, 9, 10 ] ] }, { "k" : 2, "c" : [ { "key" : 2, "foo" : { "bar" : [ 0, 1, 2 ] } }, { "key" : 2, "foo" : { "bar" : [ 3, 4, 5 ] } }, { "key" : 2, "foo" : { "bar" : [ 6, 7, 8 ] } } ], "d" : [ 2, 2, 2 ], "e" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ], "f" : [ [ 0, 1, 2 ], [ 3, 4, 5 ], [ 6, 7, 8 ] ] })" :)
for $i in annotate(
for $j in 1 to 10 return {"key" : $j mod 3, "foo":{"bar":[ $j - 2 to $j ]}},
{"key" : "integer", "foo":{"bar":["integer"]}}
@@ -7,4 +7,5 @@ let $j := $i.key
let $l := $i.foo.bar[]
let $m := $i.foo.bar
group by $k := ($i.key || "") cast as integer
+order by $k
return { "k": $k, "c" : [ $i ], "d" : [ $j ], "e" : [ $l ], "f" : [ $m ] }
diff --git a/src/test/resources/test_files/runtime-native-flwor/group-by/GroupBy8.jq b/src/test/resources/test_files/runtime-native-flwor/group-by/GroupBy8.jq
index cb5ae31b6..7581fcc8a 100644
--- a/src/test/resources/test_files/runtime-native-flwor/group-by/GroupBy8.jq
+++ b/src/test/resources/test_files/runtime-native-flwor/group-by/GroupBy8.jq
@@ -1,4 +1,4 @@
-(:JIQS: ShouldRun; Output="({ "k" : 2, "c" : [ { "key" : 2, "foo" : { "bar" : [ 0, 1, 2 ] } }, { "key" : 2, "foo" : { "bar" : [ 3, 4, 5 ] } }, { "key" : 2, "foo" : { "bar" : [ 6, 7, 8 ] } } ], "d" : [ 2, 2, 2 ], "e" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ], "f" : [ [ 0, 1, 2 ], [ 3, 4, 5 ], [ 6, 7, 8 ] ] }, { "k" : 1, "c" : [ { "key" : 1, "foo" : { "bar" : [ -1, 0, 1 ] } }, { "key" : 1, "foo" : { "bar" : [ 2, 3, 4 ] } }, { "key" : 1, "foo" : { "bar" : [ 5, 6, 7 ] } }, { "key" : 1, "foo" : { "bar" : [ 8, 9, 10 ] } } ], "d" : [ 1, 1, 1, 1 ], "e" : [ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], "f" : [ [ -1, 0, 1 ], [ 2, 3, 4 ], [ 5, 6, 7 ], [ 8, 9, 10 ] ] }, { "k" : 0, "c" : [ { "key" : 0, "foo" : { "bar" : [ 1, 2, 3 ] } }, { "key" : 0, "foo" : { "bar" : [ 4, 5, 6 ] } }, { "key" : 0, "foo" : { "bar" : [ 7, 8, 9 ] } } ], "d" : [ 0, 0, 0 ], "e" : [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ], "f" : [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] })" :)
+(:JIQS: ShouldRun; Output="({ "k" : 0, "c" : [ { "key" : 0, "foo" : { "bar" : [ 1, 2, 3 ] } }, { "key" : 0, "foo" : { "bar" : [ 4, 5, 6 ] } }, { "key" : 0, "foo" : { "bar" : [ 7, 8, 9 ] } } ], "d" : [ 0, 0, 0 ], "e" : [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ], "f" : [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] }, { "k" : 1, "c" : [ { "key" : 1, "foo" : { "bar" : [ -1, 0, 1 ] } }, { "key" : 1, "foo" : { "bar" : [ 2, 3, 4 ] } }, { "key" : 1, "foo" : { "bar" : [ 5, 6, 7 ] } }, { "key" : 1, "foo" : { "bar" : [ 8, 9, 10 ] } } ], "d" : [ 1, 1, 1, 1 ], "e" : [ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ], "f" : [ [ -1, 0, 1 ], [ 2, 3, 4 ], [ 5, 6, 7 ], [ 8, 9, 10 ] ] }, { "k" : 2, "c" : [ { "key" : 2, "foo" : { "bar" : [ 0, 1, 2 ] } }, { "key" : 2, "foo" : { "bar" : [ 3, 4, 5 ] } }, { "key" : 2, "foo" : { "bar" : [ 6, 7, 8 ] } } ], "d" : [ 2, 2, 2 ], "e" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ], "f" : [ [ 0, 1, 2 ], [ 3, 4, 5 ], [ 6, 7, 8 ] ] })" :)
for $i in annotate(
for $j in 1 to 10 return {"key" : $j mod 3, "foo":{"bar":[ $j - 2 to $j ]}},
{"key" : "integer", "foo":{"bar":["integer"]}}
@@ -7,4 +7,5 @@ let $j := $i.key
let $l := $i.foo.bar[]
let $m := $i.foo.bar
group by $k := $i.key
+order by $k
return { "k": $k, "c" : [ $i ], "d" : [ $j ], "e" : [ $l ], "f" : [ $m ] }
From bc1f48232acc3019e0bfb5358bf22f63f614cdf5 Mon Sep 17 00:00:00 2001
From: Ghislain Fourny
Date: Thu, 27 Apr 2023 16:09:22 +0200
Subject: [PATCH 043/136] Add static context at runtime.
---
.../compiler/RuntimeIteratorVisitor.java | 156 ++++++------------
.../config/RumbleRuntimeConfiguration.java | 15 ++
.../org/rumbledb/context/DynamicContext.java | 2 +-
.../org/rumbledb/context/NamedFunctions.java | 54 ++++--
.../org/rumbledb/expressions/Expression.java | 15 ++
.../java/org/rumbledb/expressions/Node.java | 14 ++
.../rumbledb/expressions/flowr/Clause.java | 13 ++
.../AtMostOneItemLocalRuntimeIterator.java | 9 +-
.../runtime/CommaExpressionIterator.java | 8 +-
.../runtime/ConstantRDDRuntimeIterator.java | 7 +-
.../runtime/ConstantRuntimeIterator.java | 8 +-
.../runtime/DataFrameRuntimeIterator.java | 8 +-
.../runtime/EmptySequenceIterator.java | 7 +-
.../runtime/HybridRuntimeIterator.java | 10 +-
.../runtime/LocalRuntimeIterator.java | 9 +-
.../rumbledb/runtime/RDDRuntimeIterator.java | 8 +-
.../org/rumbledb/runtime/RuntimeIterator.java | 44 +++--
.../runtime/RuntimeTupleIterator.java | 24 +--
.../AdditiveOperationIterator.java | 8 +-
.../MultiplicativeOperationIterator.java | 7 +-
.../arithmetics/UnaryOperationIterator.java | 8 +-
.../AtMostOneItemIfRuntimeIterator.java | 8 +-
.../runtime/control/IfRuntimeIterator.java | 8 +-
.../control/SwitchRuntimeIterator.java | 8 +-
.../control/TryCatchRuntimeIterator.java | 8 +-
.../control/TypeswitchRuntimeIterator.java | 8 +-
.../clauses/CountClauseSparkIterator.java | 10 +-
.../flwor/clauses/ForClauseSparkIterator.java | 13 +-
.../clauses/GroupByClauseSparkIterator.java | 10 +-
.../clauses/JoinClauseSparkIterator.java | 41 +++--
.../flwor/clauses/LetClauseSparkIterator.java | 24 ++-
.../clauses/OrderByClauseSparkIterator.java | 10 +-
.../clauses/ReturnClauseSparkIterator.java | 18 +-
.../clauses/WhereClauseSparkIterator.java | 12 +-
.../SimpleMapExpressionIterator.java | 18 +-
.../DynamicFunctionCallIterator.java | 8 +-
.../functions/FunctionItemCallIterator.java | 24 ++-
.../functions/FunctionRuntimeIterator.java | 8 +-
.../NamedFunctionRefRuntimeIterator.java | 8 +-
.../functions/NullFunctionIterator.java | 8 +-
...StaticUserDefinedFunctionCallIterator.java | 8 +-
.../ArrayDescendantFunctionIterator.java | 8 +-
.../arrays/ArrayFlattenFunctionIterator.java | 8 +-
.../arrays/ArrayMembersFunctionIterator.java | 8 +-
.../arrays/ArraySizeFunctionIterator.java | 8 +-
.../base/LocalFunctionCallIterator.java | 8 +-
.../booleans/BooleanFunctionIterator.java | 8 +-
.../booleans/FalseFunctionIterator.java | 8 +-
.../booleans/NotFunctionIterator.java | 8 +-
.../booleans/TrueFunctionIterator.java | 8 +-
.../context/LastFunctionIterator.java | 8 +-
.../context/PositionFunctionIterator.java | 8 +-
.../datetime/CurrentDateFunctionIterator.java | 8 +-
.../CurrentDateTimeFunctionIterator.java | 8 +-
.../datetime/CurrentTimeFunctionIterator.java | 8 +-
.../datetime/DateTimeFunctionIterator.java | 7 +-
.../datetime/FormatDateFunctionIterator.java | 8 +-
.../FormatDateTimeFunctionIterator.java | 8 +-
.../datetime/FormatTimeFunctionIterator.java | 8 +-
.../components/AdjustDateTimeToTimezone.java | 8 +-
.../components/AdjustDateToTimezone.java | 8 +-
.../components/AdjustTimeToTimezone.java | 8 +-
.../DayFromDateFunctionIterator.java | 8 +-
.../DayFromDateTimeFunctionIterator.java | 8 +-
.../HoursFromDateTimeFunctionIterator.java | 8 +-
.../HoursFromTimeFunctionIterator.java | 8 +-
.../MinutesFromDateTimeFunctionIterator.java | 8 +-
.../MinutesFromTimeFunctionIterator.java | 8 +-
.../MonthFromDateFunctionIterator.java | 8 +-
.../MonthFromDateTimeFunctionIterator.java | 8 +-
.../SecondsFromDateTimeFunctionIterator.java | 8 +-
.../SecondsFromTimeFunctionIterator.java | 8 +-
.../TimezoneFromDateFunctionIterator.java | 8 +-
.../TimezoneFromDateTimeFunctionIterator.java | 8 +-
.../TimezoneFromTimeFunctionIterator.java | 8 +-
.../YearFromDateFunctionIterator.java | 8 +-
.../YearFromDateTimeFunctionIterator.java | 8 +-
.../DaysFromDurationFunctionIterator.java | 8 +-
.../HoursFromDurationFunctionIterator.java | 8 +-
.../components/ImplicitTimezoneIterator.java | 8 +-
.../MinutesFromDurationFunctionIterator.java | 8 +-
.../MonthsFromDurationFunctionIterator.java | 8 +-
.../SecondsFromDurationFunctionIterator.java | 8 +-
.../YearsFromDurationFunctionIterator.java | 8 +-
.../input/AvroFileFunctionIterator.java | 8 +-
.../input/CSVFileFunctionIterator.java | 8 +-
.../input/JsonFileFunctionIterator.java | 8 +-
.../input/LibSVMFileFunctionIterator.java | 8 +-
.../input/ParallelizeFunctionIterator.java | 8 +-
.../input/ParquetFileFunctionIterator.java | 8 +-
.../input/RepartitionFunctionIterator.java | 8 +-
.../input/RootFileFunctionIterator.java | 8 +-
.../StructuredJsonFileFunctionIterator.java | 8 +-
.../UnparsedTextLinesFunctionIterator.java | 8 +-
.../io/CollectionFunctionIterator.java | 8 +-
.../functions/io/JsonDocFunctionIterator.java | 8 +-
.../io/LocalTextFileFunctionIterator.java | 8 +-
.../io/ParseJsonFunctionIterator.java | 8 +-
.../functions/io/TraceFunctionIterator.java | 8 +-
.../io/UnparsedTextFunctionIterator.java | 8 +-
.../functions/io/YamlDocFunctionIterator.java | 8 +-
.../numerics/AbsFunctionIterator.java | 8 +-
.../numerics/CeilingFunctionIterator.java | 8 +-
.../numerics/FloorFunctionIterator.java | 8 +-
.../numerics/NumberFunctionIterator.java | 8 +-
.../numerics/PiFunctionIterator.java | 8 +-
.../numerics/RoundFunctionIterator.java | 8 +-
.../RoundHalfToEvenFunctionIterator.java | 8 +-
.../exponential/Exp10FunctionIterator.java | 8 +-
.../exponential/ExpFunctionIterator.java | 8 +-
.../exponential/Log10FunctionIterator.java | 8 +-
.../exponential/LogFunctionIterator.java | 8 +-
.../exponential/PowFunctionIterator.java | 8 +-
.../exponential/SqrtFunctionIterator.java | 8 +-
.../trigonometric/ACosFunctionIterator.java | 8 +-
.../trigonometric/ASinFunctionIterator.java | 8 +-
.../trigonometric/ATan2FunctionIterator.java | 8 +-
.../trigonometric/ATanFunctionIterator.java | 8 +-
.../trigonometric/CosFunctionIterator.java | 8 +-
.../trigonometric/CoshFunctionIterator.java | 8 +-
.../trigonometric/SinFunctionIterator.java | 8 +-
.../trigonometric/SinhFunctionIterator.java | 8 +-
.../trigonometric/TanFunctionIterator.java | 8 +-
.../ObjectAccumulateFunctionIterator.java | 8 +-
.../ObjectDescendantFunctionIterator.java | 8 +-
...ObjectDescendantPairsFunctionIterator.java | 8 +-
.../ObjectIntersectFunctionIterator.java | 8 +-
.../object/ObjectKeysFunctionIterator.java | 8 +-
.../object/ObjectProjectFunctionIterator.java | 8 +-
.../ObjectRemoveKeysFunctionIterator.java | 8 +-
.../object/ObjectValuesFunctionIterator.java | 8 +-
.../aggregate/AvgFunctionIterator.java | 8 +-
.../aggregate/CountFunctionIterator.java | 7 +-
.../aggregate/MaxFunctionIterator.java | 7 +-
.../aggregate/MinFunctionIterator.java | 7 +-
.../aggregate/SumFunctionIterator.java | 7 +-
.../CardinalityFunctionIterator.java | 8 +-
.../cardinality/ExactlyOneIterator.java | 8 +-
.../cardinality/OneOrMoreIterator.java | 8 +-
.../cardinality/ZeroOrOneIterator.java | 8 +-
.../general/EmptyFunctionIterator.java | 8 +-
.../general/ExistsFunctionIterator.java | 8 +-
.../general/HeadFunctionIterator.java | 8 +-
.../general/InsertBeforeFunctionIterator.java | 8 +-
.../general/RemoveFunctionIterator.java | 8 +-
.../general/ReverseFunctionIterator.java | 8 +-
.../general/SubsequenceFunctionIterator.java | 8 +-
.../general/TailFunctionIterator.java | 8 +-
.../general/UnorderedFunctionIterator.java | 8 +-
.../value/DeepEqualFunctionIterator.java | 8 +-
.../value/DistinctValuesFunctionIterator.java | 8 +-
.../value/IndexOfFunctionIterator.java | 7 +-
.../CodepointEqualFunctionIterator.java | 8 +-
.../CodepointsToStringFunctionIterator.java | 8 +-
.../strings/ConcatFunctionIterator.java | 8 +-
.../strings/ContainsFunctionIterator.java | 8 +-
.../DefaultCollationFunctionIterator.java | 8 +-
.../strings/EncodeForURIFunctionIterator.java | 8 +-
.../strings/EndsWithFunctionIterator.java | 8 +-
.../strings/LowerCaseFunctionIterator.java | 8 +-
.../strings/MatchesFunctionIterator.java | 8 +-
.../NormalizeSpaceFunctionIterator.java | 8 +-
.../NormalizeUnicodeFunctionIterator.java | 8 +-
.../strings/ReplaceFunctionIterator.java | 8 +-
.../strings/ResolveURIFunctionIterator.java | 8 +-
.../strings/SerializeFunctionIterator.java | 8 +-
.../strings/StartsWithFunctionIterator.java | 8 +-
.../StaticBaseURIFunctionIterator.java | 8 +-
.../strings/StringFunctionIterator.java | 8 +-
.../strings/StringJoinFunctionIterator.java | 8 +-
.../strings/StringLengthFunctionIterator.java | 8 +-
.../StringToCodepointsFunctionIterator.java | 8 +-
.../SubstringAfterFunctionIterator.java | 8 +-
.../SubstringBeforeFunctionIterator.java | 8 +-
.../strings/SubstringFunctionIterator.java | 8 +-
.../strings/TokenizeFunctionIterator.java | 8 +-
.../strings/TranslateFunctionIterator.java | 8 +-
.../strings/UpperCaseFunctionIterator.java | 8 +-
.../runtime/logics/AndOperationIterator.java | 8 +-
.../runtime/logics/NotOperationIterator.java | 8 +-
.../runtime/logics/OrOperationIterator.java | 8 +-
.../runtime/misc/ComparisonIterator.java | 7 +-
.../runtime/misc/RangeOperationIterator.java | 8 +-
.../runtime/misc/StringConcatIterator.java | 8 +-
.../navigation/ArrayLookupIterator.java | 7 +-
.../navigation/ArrayUnboxingIterator.java | 8 +-
.../navigation/ObjectLookupIterator.java | 7 +-
.../runtime/navigation/PredicateIterator.java | 8 +-
.../navigation/SequenceLookupIterator.java | 8 +-
.../runtime/primary/ArrayRuntimeIterator.java | 8 +-
.../primary/BooleanRuntimeIterator.java | 7 +-
.../primary/ContextExpressionIterator.java | 7 +-
.../primary/DecimalRuntimeIterator.java | 7 +-
.../primary/DoubleRuntimeIterator.java | 7 +-
.../primary/IntegerRuntimeIterator.java | 8 +-
.../runtime/primary/NullRuntimeIterator.java | 7 +-
.../ObjectConstructorRuntimeIterator.java | 13 +-
.../primary/StringRuntimeIterator.java | 7 +-
.../primary/VariableReferenceIterator.java | 15 +-
.../AtMostOneItemTypePromotionIterator.java | 9 +-
.../rumbledb/runtime/typing/CastIterator.java | 7 +-
.../runtime/typing/CastableIterator.java | 7 +-
.../runtime/typing/InstanceOfIterator.java | 8 +-
.../runtime/typing/TreatIterator.java | 9 +-
.../runtime/typing/TypePromotionIterator.java | 8 +-
.../runtime/typing/ValidateTypeIterator.java | 9 +-
.../java/org/rumbledb/types/SequenceType.java | 11 ++
.../spark/ml/AnnotateFunctionIterator.java | 8 +-
.../ml/ApplyEstimatorRuntimeIterator.java | 16 +-
.../ml/ApplyTransformerRuntimeIterator.java | 8 +-
...ClassificationMetricsFunctionIterator.java | 32 +++-
.../ml/GetEstimatorFunctionIterator.java | 15 +-
.../ml/GetTransformerFunctionIterator.java | 15 +-
213 files changed, 920 insertions(+), 1197 deletions(-)
diff --git a/src/main/java/org/rumbledb/compiler/RuntimeIteratorVisitor.java b/src/main/java/org/rumbledb/compiler/RuntimeIteratorVisitor.java
index 7670eb3d9..6cf674c4c 100644
--- a/src/main/java/org/rumbledb/compiler/RuntimeIteratorVisitor.java
+++ b/src/main/java/org/rumbledb/compiler/RuntimeIteratorVisitor.java
@@ -187,8 +187,7 @@ public RuntimeIterator visitCommaExpression(CommaExpression expression, RuntimeI
} else {
RuntimeIterator runtimeIterator = new CommaExpressionIterator(
result,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -215,9 +214,7 @@ public RuntimeIterator visitFlowrExpression(FlworExpression expression, RuntimeI
(expression.getReturnClause()).getReturnExpr(),
argument
),
- expression.getReturnClause().getHighestExecutionMode(this.visitorConfig),
- expression.getReturnClause().getMetadata(),
- expression.getStaticSequenceType()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -240,8 +237,7 @@ private RuntimeTupleIterator visitFlowrClause(
forClause.getPositionalVariableName(),
forClause.isAllowEmpty(),
assignmentIterator,
- forClause.getHighestExecutionMode(this.visitorConfig),
- clause.getMetadata()
+ forClause.getStaticContextForRuntime(this.config, this.visitorConfig)
);
} else if (clause instanceof LetClause) {
LetClause letClause = (LetClause) clause;
@@ -251,8 +247,7 @@ private RuntimeTupleIterator visitFlowrClause(
letClause.getVariableName(),
letClause.getActualSequenceType(),
assignmentIterator,
- letClause.getHighestExecutionMode(this.visitorConfig),
- clause.getMetadata()
+ letClause.getStaticContextForRuntime(this.config, this.visitorConfig)
);
} else if (clause instanceof GroupByClause) {
List groupingExpressions = new ArrayList<>();
@@ -276,8 +271,7 @@ private RuntimeTupleIterator visitFlowrClause(
return new GroupByClauseSparkIterator(
previousIterator,
groupingExpressions,
- clause.getHighestExecutionMode(this.visitorConfig),
- clause.getMetadata()
+ clause.getStaticContextForRuntime(this.config, this.visitorConfig)
);
} else if (clause instanceof OrderByClause) {
List expressionsWithIterator = new ArrayList<>();
@@ -303,22 +297,19 @@ private RuntimeTupleIterator visitFlowrClause(
previousIterator,
expressionsWithIterator,
((OrderByClause) clause).isStable(),
- clause.getHighestExecutionMode(this.visitorConfig),
- clause.getMetadata()
+ clause.getStaticContextForRuntime(this.config, this.visitorConfig)
);
} else if (clause instanceof WhereClause) {
return new WhereClauseSparkIterator(
previousIterator,
this.visit(((WhereClause) clause).getWhereExpression(), argument),
- clause.getHighestExecutionMode(this.visitorConfig),
- clause.getMetadata()
+ clause.getStaticContextForRuntime(this.config, this.visitorConfig)
);
} else if (clause instanceof CountClause) {
return new CountClauseSparkIterator(
previousIterator,
((CountClause) clause).getCountVariableName(),
- clause.getHighestExecutionMode(this.visitorConfig),
- clause.getMetadata()
+ clause.getStaticContextForRuntime(this.config, this.visitorConfig)
);
}
throw new OurBadException("Clause unrecognized.");
@@ -328,9 +319,7 @@ private RuntimeTupleIterator visitFlowrClause(
public RuntimeIterator visitVariableReference(VariableReferenceExpression expression, RuntimeIterator argument) {
RuntimeIterator runtimeIterator = new VariableReferenceIterator(
expression.getVariableName(),
- expression.getType(),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -349,8 +338,7 @@ public RuntimeIterator visitFilterExpression(FilterExpression expression, Runtim
RuntimeIterator runtimeIterator = new SequenceLookupIterator(
mainIterator,
n,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -361,8 +349,7 @@ public RuntimeIterator visitFilterExpression(FilterExpression expression, Runtim
RuntimeIterator runtimeIterator = new PredicateIterator(
mainIterator,
filterIterator,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -375,8 +362,7 @@ public RuntimeIterator visitArrayLookupExpression(ArrayLookupExpression expressi
RuntimeIterator runtimeIterator = new ArrayLookupIterator(
mainIterator,
lookupIterator,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -389,8 +375,7 @@ public RuntimeIterator visitObjectLookupExpression(ObjectLookupExpression expres
RuntimeIterator runtimeIterator = new ObjectLookupIterator(
mainIterator,
lookupIterator,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -413,8 +398,7 @@ public RuntimeIterator visitDynamicFunctionCallExpression(
RuntimeIterator runtimeIterator = new DynamicFunctionCallIterator(
mainIterator,
arguments,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -425,8 +409,7 @@ public RuntimeIterator visitArrayUnboxingExpression(ArrayUnboxingExpression expr
RuntimeIterator mainIterator = this.visit(expression.getMainExpression(), argument);
RuntimeIterator runtimeIterator = new ArrayUnboxingIterator(
mainIterator,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -440,8 +423,7 @@ public RuntimeIterator visitArrayConstructor(ArrayConstructorExpression expressi
}
RuntimeIterator runtimeIterator = new ArrayRuntimeIterator(
result,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -456,8 +438,7 @@ public RuntimeIterator visitObjectConstructor(ObjectConstructorExpression expres
.stream()
.map(arg -> this.visit(arg, argument))
.collect(Collectors.toList()),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -473,8 +454,7 @@ public RuntimeIterator visitObjectConstructor(ObjectConstructorExpression expres
runtimeIterator = new ObjectConstructorRuntimeIterator(
keys,
values,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -484,8 +464,7 @@ public RuntimeIterator visitObjectConstructor(ObjectConstructorExpression expres
@Override
public RuntimeIterator visitContextExpr(ContextItemExpression expression, RuntimeIterator argument) {
RuntimeIterator runtimeIterator = new ContextExpressionIterator(
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -504,8 +483,7 @@ public RuntimeIterator visitInlineFunctionExpr(InlineFunctionExpression expressi
paramNameToSequenceTypes,
returnType,
bodyIterator,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -536,16 +514,15 @@ public RuntimeIterator visitFunctionCall(FunctionCallExpression expression, Runt
// all builtin functions static-context-dependent.
// This might be worth a more fine-grained adjustment later.
expression.getStaticContext(),
+ this.config,
expression.getHighestExecutionMode(this.visitorConfig),
- this.config.isCheckReturnTypeOfBuiltinFunctions(),
iteratorMetadata
);
} else {
runtimeIterator = new StaticUserDefinedFunctionCallIterator(
identifier,
arguments,
- expression.getHighestExecutionMode(this.visitorConfig),
- iteratorMetadata
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
}
runtimeIterator.setStaticContext(expression.getStaticContext());
@@ -566,8 +543,7 @@ public RuntimeIterator visitNamedFunctionRef(
}
RuntimeIterator runtimeIterator = new NamedFunctionRefRuntimeIterator(
identifier,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -579,8 +555,7 @@ public RuntimeIterator visitNamedFunctionRef(
public RuntimeIterator visitInteger(IntegerLiteralExpression expression, RuntimeIterator argument) {
RuntimeIterator runtimeIterator = new IntegerRuntimeIterator(
expression.getLexicalValue(),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -590,8 +565,7 @@ public RuntimeIterator visitInteger(IntegerLiteralExpression expression, Runtime
public RuntimeIterator visitString(StringLiteralExpression expression, RuntimeIterator argument) {
RuntimeIterator runtimeIterator = new StringRuntimeIterator(
expression.getValue(),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -601,8 +575,7 @@ public RuntimeIterator visitString(StringLiteralExpression expression, RuntimeIt
public RuntimeIterator visitDouble(DoubleLiteralExpression expression, RuntimeIterator argument) {
RuntimeIterator runtimeIterator = new DoubleRuntimeIterator(
expression.getValue(),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -612,8 +585,7 @@ public RuntimeIterator visitDouble(DoubleLiteralExpression expression, RuntimeIt
public RuntimeIterator visitDecimal(DecimalLiteralExpression expression, RuntimeIterator argument) {
RuntimeIterator runtimeIterator = new DecimalRuntimeIterator(
expression.getValue(),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -622,8 +594,7 @@ public RuntimeIterator visitDecimal(DecimalLiteralExpression expression, Runtime
@Override
public RuntimeIterator visitNull(NullLiteralExpression expression, RuntimeIterator argument) {
RuntimeIterator runtimeIterator = new NullRuntimeIterator(
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -633,8 +604,7 @@ public RuntimeIterator visitNull(NullLiteralExpression expression, RuntimeIterat
public RuntimeIterator visitBoolean(BooleanLiteralExpression expression, RuntimeIterator argument) {
RuntimeIterator runtimeIterator = new BooleanRuntimeIterator(
expression.getValue(),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -659,8 +629,7 @@ public RuntimeIterator visitAdditiveExpr(AdditiveExpression expression, RuntimeI
left,
right,
expression.isMinus(),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -683,8 +652,7 @@ public RuntimeIterator visitMultiplicativeExpr(MultiplicativeExpression expressi
left,
right,
expression.getMultiplicativeOperator(),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -706,9 +674,7 @@ public RuntimeIterator visitSimpleMapExpr(SimpleMapExpression expression, Runtim
RuntimeIterator runtimeIterator = new SimpleMapExpressionIterator(
left,
right,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getStaticSequenceType(),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -730,8 +696,7 @@ public RuntimeIterator visitAndExpr(AndExpression expression, RuntimeIterator ar
RuntimeIterator runtimeIterator = new AndOperationIterator(
left,
right,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -753,8 +718,7 @@ public RuntimeIterator visitOrExpr(OrExpression expression, RuntimeIterator argu
RuntimeIterator runtimeIterator = new OrOperationIterator(
left,
right,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -764,8 +728,7 @@ public RuntimeIterator visitOrExpr(OrExpression expression, RuntimeIterator argu
public RuntimeIterator visitNotExpr(NotExpression expression, RuntimeIterator argument) {
RuntimeIterator runtimeIterator = new NotOperationIterator(
this.visit(expression.getMainExpression(), argument),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -777,8 +740,7 @@ public RuntimeIterator visitUnaryExpr(UnaryExpression expression, RuntimeIterato
RuntimeIterator runtimeIterator = new UnaryOperationIterator(
this.visit(expression.getMainExpression(), argument),
expression.isNegated(),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -791,8 +753,7 @@ public RuntimeIterator visitRangeExpr(RangeExpression expression, RuntimeIterato
RuntimeIterator runtimeIterator = new RangeOperationIterator(
left,
right,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -806,8 +767,7 @@ public RuntimeIterator visitComparisonExpr(ComparisonExpression expression, Runt
left,
right,
expression.getComparisonOperator(),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -820,8 +780,7 @@ public RuntimeIterator visitStringConcatExpr(StringConcatExpression expression,
RuntimeIterator runtimeIterator = new StringConcatIterator(
left,
right,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -833,8 +792,7 @@ public RuntimeIterator visitInstanceOfExpression(InstanceOfExpression expression
RuntimeIterator runtimeIterator = new InstanceOfIterator(
childExpression,
expression.getSequenceType(),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -847,17 +805,14 @@ public RuntimeIterator visitValidateTypeExpression(ValidateTypeExpression expres
childExpression,
expression.getSequenceType().getItemType(),
expression.isValidate(),
- expression.getHighestExecutionMode(this.visitorConfig),
- this.config,
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
RuntimeIterator resultIterator = new TreatIterator(
runtimeIterator,
new SequenceType(BuiltinTypesCatalogue.item, expression.getSequenceType().getArity()),
ErrorCode.InvalidInstance,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
resultIterator.setStaticContext(expression.getStaticContext());
return resultIterator;
@@ -870,8 +825,7 @@ public RuntimeIterator visitTreatExpression(TreatExpression expression, RuntimeI
childExpression,
expression.getsequenceType(),
expression.errorCodeThatShouldBeThrown(),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -883,8 +837,7 @@ public RuntimeIterator visitCastableExpression(CastableExpression expression, Ru
RuntimeIterator runtimeIterator = new CastableIterator(
childExpression,
expression.getSequenceType(),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -896,8 +849,7 @@ public RuntimeIterator visitCastExpression(CastExpression expression, RuntimeIte
RuntimeIterator runtimeIterator = new CastIterator(
childExpression,
expression.getSequenceType(),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -920,16 +872,14 @@ public RuntimeIterator visitConditionalExpression(ConditionalExpression expressi
conditionIterator,
thenIterator,
elseIterator,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
} else {
runtimeIterator = new IfRuntimeIterator(
conditionIterator,
thenIterator,
elseIterator,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
}
runtimeIterator.setStaticContext(expression.getStaticContext());
@@ -950,8 +900,7 @@ public RuntimeIterator visitSwitchExpression(SwitchExpression expression, Runtim
this.visit(expression.getTestCondition(), argument),
cases,
this.visit(expression.getDefaultExpression(), argument),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -980,8 +929,7 @@ public RuntimeIterator visitTypeSwitchExpression(TypeSwitchExpression expression
this.visit(expression.getTestCondition(), argument),
cases,
defaultCase,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
runtimeIterator.setStaticContext(expression.getStaticContext());
return runtimeIterator;
@@ -1001,16 +949,14 @@ public RuntimeIterator visitTryCatchExpression(TryCatchExpression expression, Ru
this.visit(expression.getTryExpression(), argument),
cases,
null,
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
} else {
return new TryCatchRuntimeIterator(
this.visit(expression.getTryExpression(), argument),
cases,
this.visit(expression.getExpressionCatchingAll(), argument),
- expression.getHighestExecutionMode(this.visitorConfig),
- expression.getMetadata()
+ expression.getStaticContextForRuntime(this.config, this.visitorConfig)
);
}
}
diff --git a/src/main/java/org/rumbledb/config/RumbleRuntimeConfiguration.java b/src/main/java/org/rumbledb/config/RumbleRuntimeConfiguration.java
index d669d01e7..b338da2a8 100644
--- a/src/main/java/org/rumbledb/config/RumbleRuntimeConfiguration.java
+++ b/src/main/java/org/rumbledb/config/RumbleRuntimeConfiguration.java
@@ -69,6 +69,7 @@ public class RumbleRuntimeConfiguration implements Serializable, KryoSerializabl
private boolean datesWithTimeZone;
private boolean optimizeGeneralComparisonToValueComparison;
private boolean localExecutionOnly;
+ private boolean nativeExecution;
private boolean thirdFeature;
private Map shortcutMap;
@@ -401,6 +402,12 @@ public void init() {
this.localExecutionOnly = false;
}
+ if (this.arguments.containsKey("native-execution")) {
+ this.nativeExecution = this.arguments.get("native-execution").equals("yes");
+ } else {
+ this.nativeExecution = true;
+ }
+
if (this.arguments.containsKey("optimize-general-comparison-to-value-comparison")) {
this.optimizeGeneralComparisonToValueComparison = this.arguments.get(
"optimize-general-comparison-to-value-comparison"
@@ -599,6 +606,14 @@ public void setLocalExecutionOnly(boolean b) {
this.localExecutionOnly = b;
}
+ public boolean nativeExecution() {
+ return this.nativeExecution;
+ }
+
+ public void setnativeExecution(boolean b) {
+ this.nativeExecution = b;
+ }
+
public boolean optimizeGeneralComparisonToValueComparison() {
return this.optimizeGeneralComparisonToValueComparison;
}
diff --git a/src/main/java/org/rumbledb/context/DynamicContext.java b/src/main/java/org/rumbledb/context/DynamicContext.java
index 236deef58..a7850a407 100644
--- a/src/main/java/org/rumbledb/context/DynamicContext.java
+++ b/src/main/java/org/rumbledb/context/DynamicContext.java
@@ -69,7 +69,7 @@ public DynamicContext(RumbleRuntimeConfiguration conf) {
this.parent = null;
this.variableValues = new VariableValues();
this.conf = conf;
- this.namedFunctions = new NamedFunctions();
+ this.namedFunctions = new NamedFunctions(conf);
this.inScopeSchemaTypes = new InScopeSchemaTypes();
this.currentDateTime = new DateTime();
}
diff --git a/src/main/java/org/rumbledb/context/NamedFunctions.java b/src/main/java/org/rumbledb/context/NamedFunctions.java
index ce1916834..d4b0fae58 100644
--- a/src/main/java/org/rumbledb/context/NamedFunctions.java
+++ b/src/main/java/org/rumbledb/context/NamedFunctions.java
@@ -21,6 +21,7 @@
package org.rumbledb.context;
import org.rumbledb.api.Item;
+import org.rumbledb.config.RumbleRuntimeConfiguration;
import org.rumbledb.exceptions.DuplicateFunctionIdentifierException;
import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.OurBadException;
@@ -51,9 +52,11 @@ public class NamedFunctions implements Serializable, KryoSerializable {
// two maps for User defined function are needed as execution mode is known at static analysis phase
// but functions items are fully known at runtimeIterator generation
private HashMap userDefinedFunctions;
+ private RumbleRuntimeConfiguration conf;
- public NamedFunctions() {
+ public NamedFunctions(RumbleRuntimeConfiguration conf) {
this.userDefinedFunctions = new HashMap<>();
+ this.conf = conf;
}
public void clearUserDefinedFunctions() {
@@ -69,6 +72,7 @@ public RuntimeIterator getUserDefinedFunctionCallIterator(
if (checkUserDefinedFunctionExists(identifier)) {
return buildUserDefinedFunctionCallIterator(
getUserDefinedFunction(identifier),
+ this.conf,
executionMode,
metadata,
arguments
@@ -84,17 +88,25 @@ public RuntimeIterator getUserDefinedFunctionCallIterator(
public static RuntimeIterator buildUserDefinedFunctionCallIterator(
Item functionItem,
+ RumbleRuntimeConfiguration conf,
ExecutionMode executionMode,
ExceptionMetadata metadata,
List arguments
) {
+ SequenceType sequenceType = functionItem.getSignature().getReturnType();
+ SequenceType innerSequenceType = functionItem.getBodyIterator().getStaticType();
+ RuntimeStaticContext staticContext = new RuntimeStaticContext(conf, sequenceType, executionMode, metadata);
+ RuntimeStaticContext innerStaticContext = new RuntimeStaticContext(
+ conf,
+ innerSequenceType,
+ executionMode,
+ metadata
+ );
FunctionItemCallIterator functionCallIterator = new FunctionItemCallIterator(
functionItem,
arguments,
- executionMode,
- metadata
+ innerStaticContext
);
- SequenceType sequenceType = functionItem.getSignature().getReturnType();
if (sequenceType.equals(SequenceType.ITEM_STAR)) {
return functionCallIterator;
}
@@ -111,8 +123,7 @@ public static RuntimeIterator buildUserDefinedFunctionCallIterator(
? ""
: (functionItem.getIdentifier().getName()) + " ")
+ "function. ",
- executionMode,
- metadata
+ staticContext
);
} else {
return new TypePromotionIterator(
@@ -123,11 +134,9 @@ public static RuntimeIterator buildUserDefinedFunctionCallIterator(
? ""
: (functionItem.getIdentifier().getName()) + " ")
+ "function. ",
- executionMode,
- metadata
+ staticContext
);
}
-
}
public void addUserDefinedFunction(Item function, ExceptionMetadata meta) {
@@ -157,10 +166,11 @@ public static RuntimeIterator getBuiltInFunctionIterator(
FunctionIdentifier identifier,
List arguments,
StaticContext staticContext,
+ RumbleRuntimeConfiguration conf,
ExecutionMode executionMode,
- boolean checkReturnTypesOfBuiltinFunctions,
ExceptionMetadata metadata
) {
+ boolean checkReturnTypesOfBuiltinFunctions = conf.isCheckReturnTypeOfBuiltinFunctions();
BuiltinFunction builtinFunction = BuiltinFunctionCatalogue.getBuiltinFunction(identifier);
if (builtinFunction == null) {
throw new UnknownFunctionCallException(identifier.getName(), identifier.getArity(), metadata);
@@ -173,6 +183,12 @@ public static RuntimeIterator getBuiltInFunctionIterator(
.equals(SequenceType.ITEM_STAR)
) {
SequenceType sequenceType = builtinFunction.getSignature().getParameterTypes().get(i);
+ RuntimeStaticContext runtimeStaticContext = new RuntimeStaticContext(
+ conf,
+ sequenceType,
+ arguments.get(i).getHighestExecutionMode(),
+ arguments.get(i).getMetadata()
+ );
if (
sequenceType.isEmptySequence()
|| sequenceType.getArity().equals(Arity.One)
@@ -182,8 +198,7 @@ public static RuntimeIterator getBuiltInFunctionIterator(
arguments.get(i),
sequenceType,
"Invalid argument for function " + identifier.getName() + ". ",
- arguments.get(i).getHighestExecutionMode(),
- arguments.get(i).getMetadata()
+ runtimeStaticContext
);
arguments.set(i, typePromotionIterator);
@@ -192,8 +207,7 @@ public static RuntimeIterator getBuiltInFunctionIterator(
arguments.get(i),
sequenceType,
"Invalid argument for function " + identifier.getName() + ". ",
- arguments.get(i).getHighestExecutionMode(),
- arguments.get(i).getMetadata()
+ runtimeStaticContext
);
arguments.set(i, typePromotionIterator);
@@ -226,6 +240,12 @@ public static RuntimeIterator getBuiltInFunctionIterator(
}
functionCallIterator.setStaticContext(staticContext);
SequenceType sequenceType = builtinFunction.getSignature().getReturnType();
+ RuntimeStaticContext runtimeStaticContext = new RuntimeStaticContext(
+ conf,
+ sequenceType,
+ functionCallIterator.getHighestExecutionMode(),
+ functionCallIterator.getMetadata()
+ );
if (
sequenceType.isEmptySequence()
|| sequenceType.getArity().equals(Arity.One)
@@ -235,16 +255,14 @@ public static RuntimeIterator getBuiltInFunctionIterator(
functionCallIterator,
sequenceType,
"Invalid return type for function " + identifier.getName() + ". ",
- functionCallIterator.getHighestExecutionMode(),
- functionCallIterator.getMetadata()
+ runtimeStaticContext
);
} else {
return new TypePromotionIterator(
functionCallIterator,
sequenceType,
"Invalid return type for function " + identifier.getName() + ". ",
- functionCallIterator.getHighestExecutionMode(),
- functionCallIterator.getMetadata()
+ runtimeStaticContext
);
}
}
diff --git a/src/main/java/org/rumbledb/expressions/Expression.java b/src/main/java/org/rumbledb/expressions/Expression.java
index 3d866bbea..e0009d33c 100644
--- a/src/main/java/org/rumbledb/expressions/Expression.java
+++ b/src/main/java/org/rumbledb/expressions/Expression.java
@@ -21,6 +21,9 @@
package org.rumbledb.expressions;
+import org.rumbledb.compiler.VisitorConfig;
+import org.rumbledb.config.RumbleRuntimeConfiguration;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.context.StaticContext;
import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.types.SequenceType;
@@ -64,6 +67,18 @@ public void setStaticContext(StaticContext staticContext) {
this.staticContext = staticContext;
}
+ public RuntimeStaticContext getStaticContextForRuntime(
+ RumbleRuntimeConfiguration conf,
+ VisitorConfig visitorConfig
+ ) {
+ return new RuntimeStaticContext(
+ conf,
+ getStaticSequenceType(),
+ getHighestExecutionMode(visitorConfig),
+ getMetadata()
+ );
+ }
+
/**
* Provides the inferred static type, only if static analysis
* is activated.
diff --git a/src/main/java/org/rumbledb/expressions/Node.java b/src/main/java/org/rumbledb/expressions/Node.java
index 1ebd4b5ab..e17eeeecb 100644
--- a/src/main/java/org/rumbledb/expressions/Node.java
+++ b/src/main/java/org/rumbledb/expressions/Node.java
@@ -101,6 +101,20 @@ public ExecutionMode getHighestExecutionMode(VisitorConfig visitorConfig) {
return this.highestExecutionMode;
}
+ /**
+ * Gets the highest execution mode of this node, which determines
+ * whether evaluation will be done locally, with RDDs or with DataFrames.
+ *
+ * This method is used during the static analysis. It is meant to be
+ * overridden by subclasses that support higher execution modes. By
+ * default, the highest execution mode is assumed to be local.
+ *
+ * @return the highest execution mode.
+ */
+ public ExecutionMode getHighestExecutionMode() {
+ return this.highestExecutionMode;
+ }
+
public int numberOfUnsetExecutionModes() {
int result = 0;
for (Node n : this.getChildren()) {
diff --git a/src/main/java/org/rumbledb/expressions/flowr/Clause.java b/src/main/java/org/rumbledb/expressions/flowr/Clause.java
index 25f6319ac..58cfec4a1 100644
--- a/src/main/java/org/rumbledb/expressions/flowr/Clause.java
+++ b/src/main/java/org/rumbledb/expressions/flowr/Clause.java
@@ -21,6 +21,8 @@
package org.rumbledb.expressions.flowr;
import org.rumbledb.compiler.VisitorConfig;
+import org.rumbledb.config.RumbleRuntimeConfiguration;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.context.StaticContext;
import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.OurBadException;
@@ -181,4 +183,15 @@ public StaticContext getStaticContext() {
public void setStaticContext(StaticContext staticContext) {
this.staticContext = staticContext;
}
+
+ public RuntimeStaticContext getStaticContextForRuntime(
+ RumbleRuntimeConfiguration conf,
+ VisitorConfig visitorConfig
+ ) {
+ return new RuntimeStaticContext(
+ conf,
+ getHighestExecutionMode(visitorConfig),
+ getMetadata()
+ );
+ }
}
diff --git a/src/main/java/org/rumbledb/runtime/AtMostOneItemLocalRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/AtMostOneItemLocalRuntimeIterator.java
index e2332bc28..0cb26058c 100644
--- a/src/main/java/org/rumbledb/runtime/AtMostOneItemLocalRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/AtMostOneItemLocalRuntimeIterator.java
@@ -22,7 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.InvalidArgumentTypeException;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.MoreThanOneItemException;
@@ -44,11 +44,10 @@ public abstract class AtMostOneItemLocalRuntimeIterator extends RuntimeIterator
protected AtMostOneItemLocalRuntimeIterator(
List children,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(children, executionMode, iteratorMetadata);
- if (executionMode != ExecutionMode.LOCAL) {
+ super(children, staticContext);
+ if (getHighestExecutionMode() != ExecutionMode.LOCAL) {
throw new OurBadException("At-most-one-item runtime iterators support only the local execution mode");
}
}
diff --git a/src/main/java/org/rumbledb/runtime/CommaExpressionIterator.java b/src/main/java/org/rumbledb/runtime/CommaExpressionIterator.java
index b6b4ae8f2..bfbf567e8 100644
--- a/src/main/java/org/rumbledb/runtime/CommaExpressionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/CommaExpressionIterator.java
@@ -24,9 +24,8 @@
import org.apache.spark.api.java.JavaSparkContext;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import sparksoniq.spark.SparkSessionManager;
@@ -41,10 +40,9 @@ public class CommaExpressionIterator extends HybridRuntimeIterator {
public CommaExpressionIterator(
List childIterators,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(childIterators, executionMode, iteratorMetadata);
+ super(childIterators, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/ConstantRDDRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/ConstantRDDRuntimeIterator.java
index cf2f8ff78..eb7654215 100644
--- a/src/main/java/org/rumbledb/runtime/ConstantRDDRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/ConstantRDDRuntimeIterator.java
@@ -23,8 +23,7 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
public class ConstantRDDRuntimeIterator extends HybridRuntimeIterator {
@@ -33,9 +32,9 @@ public class ConstantRDDRuntimeIterator extends HybridRuntimeIterator {
public ConstantRDDRuntimeIterator(
JavaRDD
- items,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(null, ExecutionMode.RDD, iteratorMetadata);
+ super(null, staticContext);
this.items = items;
}
diff --git a/src/main/java/org/rumbledb/runtime/ConstantRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/ConstantRuntimeIterator.java
index 897f99167..8b14ff6e3 100644
--- a/src/main/java/org/rumbledb/runtime/ConstantRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/ConstantRuntimeIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
public class ConstantRuntimeIterator extends AtMostOneItemLocalRuntimeIterator {
@@ -32,10 +31,9 @@ public class ConstantRuntimeIterator extends AtMostOneItemLocalRuntimeIterator {
public ConstantRuntimeIterator(
Item item,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(null, executionMode, iteratorMetadata);
+ super(null, staticContext);
this.item = item;
}
diff --git a/src/main/java/org/rumbledb/runtime/DataFrameRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/DataFrameRuntimeIterator.java
index fb05f3601..c5fca2f34 100644
--- a/src/main/java/org/rumbledb/runtime/DataFrameRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/DataFrameRuntimeIterator.java
@@ -20,8 +20,7 @@
package org.rumbledb.runtime;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import java.util.List;
@@ -31,10 +30,9 @@ public abstract class DataFrameRuntimeIterator extends RDDRuntimeIterator {
protected DataFrameRuntimeIterator(
List children,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(children, executionMode, iteratorMetadata);
+ super(children, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/EmptySequenceIterator.java b/src/main/java/org/rumbledb/runtime/EmptySequenceIterator.java
index 3fb492500..c5165cf09 100644
--- a/src/main/java/org/rumbledb/runtime/EmptySequenceIterator.java
+++ b/src/main/java/org/rumbledb/runtime/EmptySequenceIterator.java
@@ -22,16 +22,15 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
public class EmptySequenceIterator extends AtMostOneItemLocalRuntimeIterator {
private static final long serialVersionUID = 1L;
- public EmptySequenceIterator(ExecutionMode executionMode, ExceptionMetadata iteratorMetadata) {
- super(null, executionMode, iteratorMetadata);
+ public EmptySequenceIterator(RuntimeStaticContext staticContext) {
+ super(null, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/HybridRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/HybridRuntimeIterator.java
index d33dd9b0e..8b6869f1d 100644
--- a/src/main/java/org/rumbledb/runtime/HybridRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/HybridRuntimeIterator.java
@@ -24,6 +24,7 @@
import org.apache.spark.sql.Row;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.MoreThanOneItemException;
@@ -44,11 +45,10 @@ public abstract class HybridRuntimeIterator extends RuntimeIterator {
protected HybridRuntimeIterator(
List children,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(children, executionMode, iteratorMetadata);
- fallbackToRDDIfDFNotImplemented(executionMode);
+ super(children, staticContext);
+ fallbackToRDDIfDFNotImplemented(getHighestExecutionMode());
}
protected boolean implementsDataFrames() {
@@ -61,7 +61,7 @@ protected boolean implementsLocal() {
protected void fallbackToRDDIfDFNotImplemented(ExecutionMode executionMode) {
if (executionMode == ExecutionMode.DATAFRAME && !this.implementsDataFrames()) {
- this.highestExecutionMode = ExecutionMode.RDD;
+ this.staticContext.setExecutionMode(ExecutionMode.RDD);
}
}
diff --git a/src/main/java/org/rumbledb/runtime/LocalRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/LocalRuntimeIterator.java
index 42d691845..cb5af7e55 100644
--- a/src/main/java/org/rumbledb/runtime/LocalRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/LocalRuntimeIterator.java
@@ -20,7 +20,7 @@
package org.rumbledb.runtime;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.OurBadException;
import org.rumbledb.expressions.ExecutionMode;
@@ -32,11 +32,10 @@ public abstract class LocalRuntimeIterator extends RuntimeIterator {
protected LocalRuntimeIterator(
List children,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(children, executionMode, iteratorMetadata);
- if (executionMode != ExecutionMode.LOCAL) {
+ super(children, staticContext);
+ if (getHighestExecutionMode() != ExecutionMode.LOCAL) {
throw new OurBadException("Local runtime iterators support only the local execution mode");
}
}
diff --git a/src/main/java/org/rumbledb/runtime/RDDRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/RDDRuntimeIterator.java
index 6fe382999..2b5fdaad3 100644
--- a/src/main/java/org/rumbledb/runtime/RDDRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/RDDRuntimeIterator.java
@@ -23,9 +23,8 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.OurBadException;
-import org.rumbledb.expressions.ExecutionMode;
import java.util.List;
@@ -35,10 +34,9 @@ public abstract class RDDRuntimeIterator extends HybridRuntimeIterator {
protected RDDRuntimeIterator(
List children,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(children, executionMode, iteratorMetadata);
+ super(children, staticContext);
}
protected JavaRDD
- getRDDAux(DynamicContext context) {
diff --git a/src/main/java/org/rumbledb/runtime/RuntimeIterator.java b/src/main/java/org/rumbledb/runtime/RuntimeIterator.java
index a6786464c..4975c079f 100644
--- a/src/main/java/org/rumbledb/runtime/RuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/RuntimeIterator.java
@@ -35,8 +35,10 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
+import org.rumbledb.config.RumbleRuntimeConfiguration;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.context.StaticContext;
import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.InvalidArgumentTypeException;
@@ -51,6 +53,7 @@
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.runtime.misc.ComparisonIterator;
import org.rumbledb.types.BuiltinTypesCatalogue;
+import org.rumbledb.types.SequenceType;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.KryoSerializable;
@@ -65,16 +68,13 @@ public abstract class RuntimeIterator implements RuntimeIteratorInterface, KryoS
protected transient boolean isOpen;
protected List children;
protected transient DynamicContext currentDynamicContextForLocalExecution;
- private ExceptionMetadata metadata;
+ protected RuntimeStaticContext staticContext;
protected URI staticURI;
// private StaticContext staticContext;
- protected ExecutionMode highestExecutionMode;
-
- protected RuntimeIterator(List children, ExecutionMode executionMode, ExceptionMetadata metadata) {
- this.metadata = metadata;
+ protected RuntimeIterator(List children, RuntimeStaticContext staticContext) {
+ this.staticContext = staticContext;
this.isOpen = false;
- this.highestExecutionMode = executionMode;
this.children = new ArrayList<>();
if (children != null && !children.isEmpty()) {
this.children.addAll(children);
@@ -238,32 +238,40 @@ public boolean isOpen() {
}
public ExceptionMetadata getMetadata() {
- return this.metadata;
+ return this.staticContext.getMetadata();
}
public ExecutionMode getHighestExecutionMode() {
- return this.highestExecutionMode;
+ return this.staticContext.getExecutionMode();
+ }
+
+ public SequenceType getStaticType() {
+ return this.staticContext.getStaticType();
+ }
+
+ public RumbleRuntimeConfiguration getConfiguration() {
+ return this.staticContext.getConfiguration();
}
public boolean isRDDOrDataFrame() {
- if (this.highestExecutionMode == ExecutionMode.UNSET) {
+ if (this.staticContext.getExecutionMode() == ExecutionMode.UNSET) {
throw new OurBadException("isRDDorDataFrame field in iterator without execution mode being set.");
}
- return this.highestExecutionMode.isRDDOrDataFrame();
+ return this.staticContext.getExecutionMode().isRDDOrDataFrame();
}
public boolean isRDD() {
- if (this.highestExecutionMode == ExecutionMode.UNSET) {
+ if (this.staticContext.getExecutionMode() == ExecutionMode.UNSET) {
throw new OurBadException("isRDD field in iterator without execution mode being set.");
}
- return this.highestExecutionMode.isRDD();
+ return this.staticContext.getExecutionMode().isRDD();
}
public boolean isLocal() {
- if (this.highestExecutionMode == ExecutionMode.UNSET) {
+ if (this.staticContext.getExecutionMode() == ExecutionMode.UNSET) {
throw new OurBadException("isLocal field in iterator without execution mode being set.");
}
- return this.highestExecutionMode.isLocal();
+ return this.staticContext.getExecutionMode().isLocal();
}
public JavaRDD
- getRDD(DynamicContext context) {
@@ -274,10 +282,10 @@ public JavaRDD
- getRDD(DynamicContext context) {
}
public boolean isDataFrame() {
- if (this.highestExecutionMode == ExecutionMode.UNSET) {
+ if (this.staticContext.getExecutionMode() == ExecutionMode.UNSET) {
throw new OurBadException("isDataFrame accessed in iterator without execution mode being set.");
}
- return this.highestExecutionMode.isDataFrame();
+ return this.staticContext.getExecutionMode().isDataFrame();
}
public JSoundDataFrame getDataFrame(DynamicContext context) {
@@ -390,7 +398,7 @@ public void print(StringBuffer buffer, int indent) {
}
buffer.append(getClass().getSimpleName());
buffer.append(" | ");
- buffer.append(this.highestExecutionMode);
+ buffer.append(this.staticContext.getExecutionMode());
buffer.append(" | ");
buffer.append("Variable dependencies: ");
@@ -460,7 +468,7 @@ public boolean isSparkJobNeeded() {
return true;
}
}
- switch (this.highestExecutionMode) {
+ switch (this.staticContext.getExecutionMode()) {
case DATAFRAME:
return true;
case LOCAL:
diff --git a/src/main/java/org/rumbledb/runtime/RuntimeTupleIterator.java b/src/main/java/org/rumbledb/runtime/RuntimeTupleIterator.java
index a0c2a8dd5..50dbc8010 100644
--- a/src/main/java/org/rumbledb/runtime/RuntimeTupleIterator.java
+++ b/src/main/java/org/rumbledb/runtime/RuntimeTupleIterator.java
@@ -24,8 +24,11 @@
import com.esotericsoftware.kryo.KryoSerializable;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
+
+import org.rumbledb.config.RumbleRuntimeConfiguration;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.OurBadException;
@@ -46,9 +49,8 @@ public abstract class RuntimeTupleIterator implements RuntimeTupleIteratorInterf
private static final long serialVersionUID = 1L;
protected static final String FLOW_EXCEPTION_MESSAGE = "Invalid next() call; ";
- private final ExceptionMetadata metadata;
+ private final RuntimeStaticContext staticContext;
protected RuntimeTupleIterator child;
- protected ExecutionMode highestExecutionMode;
protected int evaluationDepthLimit;
protected transient DynamicContext currentDynamicContext;
@@ -59,12 +61,10 @@ public abstract class RuntimeTupleIterator implements RuntimeTupleIteratorInterf
protected RuntimeTupleIterator(
RuntimeTupleIterator child,
- ExecutionMode executionMode,
- ExceptionMetadata metadata
+ RuntimeStaticContext staticContext
) {
- this.metadata = metadata;
+ this.staticContext = staticContext;
this.isOpen = false;
- this.highestExecutionMode = executionMode;
this.child = child;
this.evaluationDepthLimit = -1;
}
@@ -123,18 +123,22 @@ public boolean hasNext() {
public abstract FlworTuple next();
public ExceptionMetadata getMetadata() {
- return this.metadata;
+ return this.staticContext.getMetadata();
}
public ExecutionMode getHighestExecutionMode() {
- return this.highestExecutionMode;
+ return this.staticContext.getExecutionMode();
+ }
+
+ public RumbleRuntimeConfiguration getConfiguration() {
+ return this.staticContext.getConfiguration();
}
public boolean isDataFrame() {
- if (this.highestExecutionMode == ExecutionMode.UNSET) {
+ if (this.staticContext.getExecutionMode() == ExecutionMode.UNSET) {
throw new OurBadException("isDataFrame accessed in iterator without execution mode being set.");
}
- return this.highestExecutionMode.isDataFrame();
+ return this.staticContext.getExecutionMode().isDataFrame();
}
/**
diff --git a/src/main/java/org/rumbledb/runtime/arithmetics/AdditiveOperationIterator.java b/src/main/java/org/rumbledb/runtime/arithmetics/AdditiveOperationIterator.java
index ef2217ecb..910ce3bc8 100644
--- a/src/main/java/org/rumbledb/runtime/arithmetics/AdditiveOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/arithmetics/AdditiveOperationIterator.java
@@ -29,11 +29,10 @@
import org.joda.time.PeriodType;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.MoreThanOneItemException;
import org.rumbledb.exceptions.NonAtomicKeyException;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -58,10 +57,9 @@ public AdditiveOperationIterator(
RuntimeIterator leftIterator,
RuntimeIterator rightIterator,
boolean isMinus,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Arrays.asList(leftIterator, rightIterator), executionMode, iteratorMetadata);
+ super(Arrays.asList(leftIterator, rightIterator), staticContext);
this.leftIterator = leftIterator;
this.rightIterator = rightIterator;
this.isMinus = isMinus;
diff --git a/src/main/java/org/rumbledb/runtime/arithmetics/MultiplicativeOperationIterator.java b/src/main/java/org/rumbledb/runtime/arithmetics/MultiplicativeOperationIterator.java
index f912d2c3e..2d99afdc8 100644
--- a/src/main/java/org/rumbledb/runtime/arithmetics/MultiplicativeOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/arithmetics/MultiplicativeOperationIterator.java
@@ -30,8 +30,8 @@
import org.joda.time.PeriodType;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.*;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.arithmetic.MultiplicativeExpression;
import org.rumbledb.expressions.arithmetic.MultiplicativeExpression.MultiplicativeOperator;
import org.rumbledb.items.ItemFactory;
@@ -59,10 +59,9 @@ public MultiplicativeOperationIterator(
RuntimeIterator leftIterator,
RuntimeIterator rightIterator,
MultiplicativeExpression.MultiplicativeOperator multiplicativeOperator,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Arrays.asList(leftIterator, rightIterator), executionMode, iteratorMetadata);
+ super(Arrays.asList(leftIterator, rightIterator), staticContext);
this.leftIterator = leftIterator;
this.rightIterator = rightIterator;
this.multiplicativeOperator = multiplicativeOperator;
diff --git a/src/main/java/org/rumbledb/runtime/arithmetics/UnaryOperationIterator.java b/src/main/java/org/rumbledb/runtime/arithmetics/UnaryOperationIterator.java
index 93b3dcdfd..dc1c3f571 100644
--- a/src/main/java/org/rumbledb/runtime/arithmetics/UnaryOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/arithmetics/UnaryOperationIterator.java
@@ -22,10 +22,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.MoreThanOneItemException;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -47,10 +46,9 @@ public class UnaryOperationIterator extends AtMostOneItemLocalRuntimeIterator {
public UnaryOperationIterator(
RuntimeIterator child,
boolean negated,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Collections.singletonList(child), executionMode, iteratorMetadata);
+ super(Collections.singletonList(child), staticContext);
this.child = child;
this.negated = negated;
this.item = null;
diff --git a/src/main/java/org/rumbledb/runtime/control/AtMostOneItemIfRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/control/AtMostOneItemIfRuntimeIterator.java
index 57e985c14..ccbb99b22 100644
--- a/src/main/java/org/rumbledb/runtime/control/AtMostOneItemIfRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/control/AtMostOneItemIfRuntimeIterator.java
@@ -24,8 +24,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.flwor.NativeClauseContext;
@@ -40,10 +39,9 @@ public AtMostOneItemIfRuntimeIterator(
RuntimeIterator condition,
RuntimeIterator branch,
RuntimeIterator elseBranch,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Arrays.asList(condition, branch, elseBranch), executionMode, iteratorMetadata);
+ super(Arrays.asList(condition, branch, elseBranch), staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/control/IfRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/control/IfRuntimeIterator.java
index 852ff162f..f111d0297 100644
--- a/src/main/java/org/rumbledb/runtime/control/IfRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/control/IfRuntimeIterator.java
@@ -23,9 +23,8 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -40,10 +39,9 @@ public IfRuntimeIterator(
RuntimeIterator condition,
RuntimeIterator branch,
RuntimeIterator elseBranch,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(null, executionMode, iteratorMetadata);
+ super(null, staticContext);
this.children.add(condition);
this.children.add(branch);
this.children.add(elseBranch);
diff --git a/src/main/java/org/rumbledb/runtime/control/SwitchRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/control/SwitchRuntimeIterator.java
index 9a50b62ec..b1b74b493 100644
--- a/src/main/java/org/rumbledb/runtime/control/SwitchRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/control/SwitchRuntimeIterator.java
@@ -23,10 +23,9 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.NonAtomicKeyException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.comparison.ComparisonExpression.ComparisonOperator;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
@@ -48,10 +47,9 @@ public SwitchRuntimeIterator(
RuntimeIterator test,
Map cases,
RuntimeIterator defaultReturn,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(null, executionMode, iteratorMetadata);
+ super(null, staticContext);
this.children.add(test);
this.children.addAll(cases.keySet());
this.children.addAll(cases.values());
diff --git a/src/main/java/org/rumbledb/runtime/control/TryCatchRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/control/TryCatchRuntimeIterator.java
index 99b1029cf..98ce9a4fa 100644
--- a/src/main/java/org/rumbledb/runtime/control/TryCatchRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/control/TryCatchRuntimeIterator.java
@@ -20,10 +20,8 @@
package org.rumbledb.runtime.control;
-import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.RumbleException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.LocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -33,6 +31,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
public class TryCatchRuntimeIterator extends LocalRuntimeIterator {
@@ -50,10 +49,9 @@ public TryCatchRuntimeIterator(
RuntimeIterator tryExpression,
Map catchExpressions,
RuntimeIterator catchAllExpression,
- ExecutionMode mode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(null, mode, iteratorMetadata);
+ super(null, staticContext);
this.children.add(tryExpression);
for (RuntimeIterator value : catchExpressions.values())
this.children.add(value);
diff --git a/src/main/java/org/rumbledb/runtime/control/TypeswitchRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/control/TypeswitchRuntimeIterator.java
index 9a3aa848d..ce63cefe6 100644
--- a/src/main/java/org/rumbledb/runtime/control/TypeswitchRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/control/TypeswitchRuntimeIterator.java
@@ -3,9 +3,8 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.typing.InstanceOfIterator;
@@ -28,10 +27,9 @@ public TypeswitchRuntimeIterator(
RuntimeIterator test,
List cases,
TypeswitchRuntimeIteratorCase defaultCase,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(null, executionMode, iteratorMetadata);
+ super(null, staticContext);
this.children.add(test);
for (TypeswitchRuntimeIteratorCase typeSwitchCase : cases) {
this.children.add(typeSwitchCase.getReturnIterator());
diff --git a/src/main/java/org/rumbledb/runtime/flwor/clauses/CountClauseSparkIterator.java b/src/main/java/org/rumbledb/runtime/flwor/clauses/CountClauseSparkIterator.java
index 3e38bf8d9..2eb790a95 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/clauses/CountClauseSparkIterator.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/clauses/CountClauseSparkIterator.java
@@ -27,10 +27,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.OurBadException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.flowr.FLWOR_CLAUSES;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.RuntimeTupleIterator;
@@ -59,10 +58,9 @@ public class CountClauseSparkIterator extends RuntimeTupleIterator {
public CountClauseSparkIterator(
RuntimeTupleIterator child,
Name variableName,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(child, executionMode, iteratorMetadata);
+ super(child, staticContext);
this.variableName = variableName;
this.currentCountIndex = 1; // indices start at 1 in JSONiq
}
@@ -242,7 +240,7 @@ public boolean isSparkJobNeeded() {
if (this.child.isSparkJobNeeded()) {
return true;
}
- switch (this.highestExecutionMode) {
+ switch (getHighestExecutionMode()) {
case DATAFRAME:
return true;
case LOCAL:
diff --git a/src/main/java/org/rumbledb/runtime/flwor/clauses/ForClauseSparkIterator.java b/src/main/java/org/rumbledb/runtime/flwor/clauses/ForClauseSparkIterator.java
index 9b685457a..4c4011abd 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/clauses/ForClauseSparkIterator.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/clauses/ForClauseSparkIterator.java
@@ -33,11 +33,10 @@
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.DynamicContext.VariableDependency;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.JobWithinAJobException;
import org.rumbledb.exceptions.UnsupportedFeatureException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.flowr.FLWOR_CLAUSES;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.items.structured.JSoundDataFrame;
@@ -97,10 +96,9 @@ public ForClauseSparkIterator(
Name positionalVariableName,
boolean allowingEmpty,
RuntimeIterator assignmentIterator,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(child, executionMode, iteratorMetadata);
+ super(child, staticContext);
this.variableName = variableName;
this.positionalVariableName = positionalVariableName;
this.assignmentIterator = assignmentIterator;
@@ -501,7 +499,8 @@ private FlworDataFrame getDataFrameFromJoin(
predicateIterator,
this.allowingEmpty,
this.variableName,
- getMetadata()
+ getMetadata(),
+ getConfiguration()
);
}
@@ -1370,7 +1369,7 @@ public boolean isSparkJobNeeded() {
if (this.assignmentIterator.isSparkJobNeeded()) {
return true;
}
- switch (this.highestExecutionMode) {
+ switch (getHighestExecutionMode()) {
case DATAFRAME:
return true;
case LOCAL:
diff --git a/src/main/java/org/rumbledb/runtime/flwor/clauses/GroupByClauseSparkIterator.java b/src/main/java/org/rumbledb/runtime/flwor/clauses/GroupByClauseSparkIterator.java
index 184795945..4537e3c34 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/clauses/GroupByClauseSparkIterator.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/clauses/GroupByClauseSparkIterator.java
@@ -30,13 +30,12 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.InvalidGroupVariableException;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.JobWithinAJobException;
import org.rumbledb.exceptions.NonAtomicKeyException;
import org.rumbledb.exceptions.OurBadException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.flowr.FLWOR_CLAUSES;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.RuntimeTupleIterator;
@@ -71,10 +70,9 @@ public class GroupByClauseSparkIterator extends RuntimeTupleIterator {
public GroupByClauseSparkIterator(
RuntimeTupleIterator child,
List groupingExpressions,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(child, executionMode, iteratorMetadata);
+ super(child, staticContext);
this.groupingExpressions = groupingExpressions;
this.dependencies = new TreeMap<>();
for (GroupByClauseSparkIteratorExpression e : this.groupingExpressions) {
@@ -627,7 +625,7 @@ public boolean isSparkJobNeeded() {
}
}
}
- switch (this.highestExecutionMode) {
+ switch (getHighestExecutionMode()) {
case DATAFRAME:
return true;
case LOCAL:
diff --git a/src/main/java/org/rumbledb/runtime/flwor/clauses/JoinClauseSparkIterator.java b/src/main/java/org/rumbledb/runtime/flwor/clauses/JoinClauseSparkIterator.java
index cbb59396d..fb898ca12 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/clauses/JoinClauseSparkIterator.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/clauses/JoinClauseSparkIterator.java
@@ -25,9 +25,11 @@
import org.apache.spark.sql.Row;
import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.types.StructType;
+import org.rumbledb.config.RumbleRuntimeConfiguration;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.DynamicContext.VariableDependency;
import org.rumbledb.context.Name;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.flowr.FLWOR_CLAUSES;
@@ -43,6 +45,7 @@
import org.rumbledb.runtime.logics.AndOperationIterator;
import org.rumbledb.runtime.misc.ComparisonIterator;
import org.rumbledb.runtime.primary.ArrayRuntimeIterator;
+import org.rumbledb.types.SequenceType;
import sparksoniq.jsoniq.tuple.FlworTuple;
import sparksoniq.spark.SparkSessionManager;
@@ -82,10 +85,9 @@ public JoinClauseSparkIterator(
RuntimeTupleIterator leftChild,
RuntimeTupleIterator rightChild,
boolean isLeftOuterJoin,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(leftChild, executionMode, iteratorMetadata);
+ super(leftChild, staticContext);
this.isLeftOuterJoin = isLeftOuterJoin;
this.dataFrameContext = new DataFrameContext();
}
@@ -119,7 +121,8 @@ public static FlworDataFrame joinInputTupleWithSequenceOnPredicate(
RuntimeIterator predicateIterator,
boolean isLeftOuterJoin,
Name newRightSideVariableName, // really needed?
- ExceptionMetadata metadata
+ ExceptionMetadata metadata,
+ RumbleRuntimeConfiguration conf
) {
FlworDataFrame result = tryNativeQueryStatically(
context,
@@ -204,11 +207,19 @@ public static FlworDataFrame joinInputTupleWithSequenceOnPredicate(
rightHandSideEqualityCriterion = new ArrayRuntimeIterator(
new CommaExpressionIterator(
rightTupleSideEqualityCriteria,
+ new RuntimeStaticContext(
+ conf,
+ SequenceType.ITEM_STAR,
+ ExecutionMode.LOCAL,
+ metadata
+ )
+ ),
+ new RuntimeStaticContext(
+ conf,
+ SequenceType.ITEM_STAR,
ExecutionMode.LOCAL,
metadata
- ),
- ExecutionMode.LOCAL,
- metadata
+ )
);
}
if (leftTupleSideEqualityCriteria.size() == 1) {
@@ -217,11 +228,19 @@ public static FlworDataFrame joinInputTupleWithSequenceOnPredicate(
leftHandSideEqualityCriterion = new ArrayRuntimeIterator(
new CommaExpressionIterator(
leftTupleSideEqualityCriteria,
+ new RuntimeStaticContext(
+ conf,
+ SequenceType.ITEM_STAR,
+ ExecutionMode.LOCAL,
+ metadata
+ )
+ ),
+ new RuntimeStaticContext(
+ conf,
+ SequenceType.ITEM_STAR,
ExecutionMode.LOCAL,
metadata
- ),
- ExecutionMode.LOCAL,
- metadata
+ )
);
}
@@ -501,7 +520,7 @@ public boolean isSparkJobNeeded() {
if (this.child.isSparkJobNeeded()) {
return true;
}
- switch (this.highestExecutionMode) {
+ switch (getHighestExecutionMode()) {
case DATAFRAME:
return true;
case LOCAL:
diff --git a/src/main/java/org/rumbledb/runtime/flwor/clauses/LetClauseSparkIterator.java b/src/main/java/org/rumbledb/runtime/flwor/clauses/LetClauseSparkIterator.java
index 603f6d173..e527d48c7 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/clauses/LetClauseSparkIterator.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/clauses/LetClauseSparkIterator.java
@@ -29,8 +29,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.context.DynamicContext.VariableDependency;
-import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.JobWithinAJobException;
import org.rumbledb.exceptions.UnsupportedFeatureException;
@@ -84,10 +84,9 @@ public LetClauseSparkIterator(
Name variableName,
SequenceType sequenceType,
RuntimeIterator assignmentIterator,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(child, executionMode, iteratorMetadata);
+ super(child, staticContext);
this.variableName = variableName;
this.sequenceType = sequenceType;
this.assignmentIterator = assignmentIterator;
@@ -443,13 +442,20 @@ public FlworDataFrame getDataFrameAsJoin(
RuntimeIterator filteringPredicateIterator = new PredicateIterator(
new VariableReferenceIterator(
this.variableName,
+ new RuntimeStaticContext(
+ getConfiguration(),
+ SequenceType.ITEM_STAR,
+ ExecutionMode.LOCAL,
+ getMetadata()
+ )
+ ),
+ predicateIterator,
+ new RuntimeStaticContext(
+ getConfiguration(),
SequenceType.ITEM_STAR,
ExecutionMode.LOCAL,
getMetadata()
- ),
- predicateIterator,
- ExecutionMode.LOCAL,
- getMetadata()
+ )
);
inputDF = LetClauseSparkIterator.bindLetVariableInDataFrame(
inputDF,
@@ -853,7 +859,7 @@ public boolean isSparkJobNeeded() {
if (this.assignmentIterator.isSparkJobNeeded()) {
return true;
}
- switch (this.highestExecutionMode) {
+ switch (getHighestExecutionMode()) {
case DATAFRAME:
return true;
case LOCAL:
diff --git a/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java b/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java
index c738ec347..7547a0d2c 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/clauses/OrderByClauseSparkIterator.java
@@ -30,14 +30,13 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.JobWithinAJobException;
import org.rumbledb.exceptions.MoreThanOneItemException;
import org.rumbledb.exceptions.NoTypedValueException;
import org.rumbledb.exceptions.OurBadException;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.flowr.FLWOR_CLAUSES;
import org.rumbledb.expressions.flowr.OrderByClauseSortingKey.EMPTY_ORDER;
import org.rumbledb.runtime.RuntimeIterator;
@@ -80,10 +79,9 @@ public OrderByClauseSparkIterator(
RuntimeTupleIterator child,
List expressionsWithIterator,
boolean stable,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(child, executionMode, iteratorMetadata);
+ super(child, staticContext);
this.expressionsWithIterator = expressionsWithIterator;
this.dependencies = new TreeMap<>();
for (OrderByClauseAnnotatedChildIterator e : this.expressionsWithIterator) {
@@ -613,7 +611,7 @@ public boolean isSparkJobNeeded() {
return true;
}
}
- switch (this.highestExecutionMode) {
+ switch (getHighestExecutionMode()) {
case DATAFRAME:
return true;
case LOCAL:
diff --git a/src/main/java/org/rumbledb/runtime/flwor/clauses/ReturnClauseSparkIterator.java b/src/main/java/org/rumbledb/runtime/flwor/clauses/ReturnClauseSparkIterator.java
index 3e45c13a3..b7f56d93c 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/clauses/ReturnClauseSparkIterator.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/clauses/ReturnClauseSparkIterator.java
@@ -29,11 +29,10 @@
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.DynamicContext.VariableDependency;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.JobWithinAJobException;
import org.rumbledb.exceptions.OurBadException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.flowr.FLWOR_CLAUSES;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
@@ -44,7 +43,6 @@
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.runtime.flwor.closures.ReturnFlatMapClosure;
import org.rumbledb.runtime.typing.ValidateTypeIterator;
-import org.rumbledb.types.SequenceType;
import sparksoniq.jsoniq.tuple.FlworTuple;
import sparksoniq.spark.SparkSessionManager;
@@ -67,19 +65,15 @@ public class ReturnClauseSparkIterator extends HybridRuntimeIterator {
private DynamicContext tupleContext; // re-use same DynamicContext object for efficiency
private RuntimeIterator expression;
private Item nextResult;
- private SequenceType sequenceType;
public ReturnClauseSparkIterator(
RuntimeTupleIterator child,
RuntimeIterator expression,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata,
- SequenceType sequenceType
+ RuntimeStaticContext staticContext
) {
- super(Collections.singletonList(expression), executionMode, iteratorMetadata);
+ super(Collections.singletonList(expression), staticContext);
this.child = child;
this.expression = expression;
- this.sequenceType = sequenceType;
setInputAndOutputTupleVariableDependencies();
}
@@ -189,7 +183,7 @@ public JSoundDataFrame getDataFrame(DynamicContext context) {
context
);
if (nativeQueryResult != null) {
- if (this.sequenceType.getItemType().isObjectItemType()) {
+ if (getStaticType().getItemType().isObjectItemType()) {
String input = FlworDataFrameUtils.createTempView(nativeQueryResult);
nativeQueryResult =
nativeQueryResult.sparkSession()
@@ -203,13 +197,13 @@ public JSoundDataFrame getDataFrame(DynamicContext context) {
}
JSoundDataFrame result = new JSoundDataFrame(
nativeQueryResult,
- this.sequenceType.getItemType()
+ getStaticType().getItemType()
);
return result;
}
JavaRDD
- rdd = getRDDAux(context);
- return ValidateTypeIterator.convertRDDToValidDataFrame(rdd, this.sequenceType.getItemType(), context, false);
+ return ValidateTypeIterator.convertRDDToValidDataFrame(rdd, getStaticType().getItemType(), context, false);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/flwor/clauses/WhereClauseSparkIterator.java b/src/main/java/org/rumbledb/runtime/flwor/clauses/WhereClauseSparkIterator.java
index 69cba9d60..3980a9833 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/clauses/WhereClauseSparkIterator.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/clauses/WhereClauseSparkIterator.java
@@ -26,7 +26,7 @@
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.DynamicContext.VariableDependency;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.JobWithinAJobException;
import org.rumbledb.exceptions.OurBadException;
@@ -64,10 +64,9 @@ public class WhereClauseSparkIterator extends RuntimeTupleIterator {
public WhereClauseSparkIterator(
RuntimeTupleIterator child,
RuntimeIterator whereExpression,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(child, executionMode, iteratorMetadata);
+ super(child, staticContext);
this.expression = whereExpression;
this.expression.getVariableDependencies();
}
@@ -350,7 +349,8 @@ private FlworDataFrame getDataFrameIfJoinPossible(DynamicContext context) {
this.expression,
false,
null,
- getMetadata()
+ getMetadata(),
+ getConfiguration()
);
return result;
} catch (Exception e) {
@@ -480,7 +480,7 @@ public boolean isSparkJobNeeded() {
if (this.expression.isSparkJobNeeded()) {
return true;
}
- switch (this.highestExecutionMode) {
+ switch (getHighestExecutionMode()) {
case DATAFRAME:
return true;
case LOCAL:
diff --git a/src/main/java/org/rumbledb/runtime/flwor/expression/SimpleMapExpressionIterator.java b/src/main/java/org/rumbledb/runtime/flwor/expression/SimpleMapExpressionIterator.java
index b5f31d2b7..d7719b8f8 100644
--- a/src/main/java/org/rumbledb/runtime/flwor/expression/SimpleMapExpressionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/flwor/expression/SimpleMapExpressionIterator.java
@@ -30,9 +30,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.flowr.FLWOR_CLAUSES;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
@@ -40,7 +39,6 @@
import org.rumbledb.runtime.flwor.FlworDataFrameUtils;
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.runtime.typing.ValidateTypeIterator;
-import org.rumbledb.types.SequenceType;
import sparksoniq.spark.SparkSessionManager;
@@ -58,7 +56,6 @@ public class SimpleMapExpressionIterator extends HybridRuntimeIterator {
private RuntimeIterator leftIterator;
private RuntimeIterator rightIterator;
private Item nextResult;
- private SequenceType staticType;
private DynamicContext mapDynamicContext;
private Queue
- mapValues;
@@ -66,15 +63,12 @@ public class SimpleMapExpressionIterator extends HybridRuntimeIterator {
public SimpleMapExpressionIterator(
RuntimeIterator sequence,
RuntimeIterator mapExpression,
- ExecutionMode executionMode,
- SequenceType staticType,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Arrays.asList(sequence, mapExpression), executionMode, iteratorMetadata);
+ super(Arrays.asList(sequence, mapExpression), staticContext);
this.leftIterator = sequence;
this.rightIterator = mapExpression;
this.mapDynamicContext = null;
- this.staticType = staticType;
}
@Override
@@ -184,12 +178,12 @@ public JSoundDataFrame getDataFrame(DynamicContext context) {
if (nativeQuery == NativeClauseContext.NoNativeQuery) {
JavaRDD
- rdd = getRDDAux(context);
JavaRDD
rowRDD = rdd.map(i -> RowFactory.create(i.castToDecimalValue()));
- StructType schema = ValidateTypeIterator.convertToDataFrameSchema(this.staticType.getItemType());
+ StructType schema = ValidateTypeIterator.convertToDataFrameSchema(getStaticType().getItemType());
schema.printTreeString();
Dataset result = SparkSessionManager.getInstance()
.getOrCreateSession()
.createDataFrame(rowRDD, schema);
- return new JSoundDataFrame(result, this.staticType.getItemType());
+ return new JSoundDataFrame(result, getStaticType().getItemType());
}
LogManager.getLogger("SimpleMapExpressionIterator")
.info("Rumble was able to optimize a simple map expression to a native SQL query.");
@@ -205,7 +199,7 @@ public JSoundDataFrame getDataFrame(DynamicContext context) {
)
);
// execute query
- return new JSoundDataFrame(result, this.staticType.getItemType());
+ return new JSoundDataFrame(result, getStaticType().getItemType());
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/DynamicFunctionCallIterator.java b/src/main/java/org/rumbledb/runtime/functions/DynamicFunctionCallIterator.java
index 1fa5b6bae..90223668f 100644
--- a/src/main/java/org/rumbledb/runtime/functions/DynamicFunctionCallIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/DynamicFunctionCallIterator.java
@@ -24,7 +24,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.NamedFunctions;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.InvalidRumbleMLParamException;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.MoreThanOneItemException;
@@ -55,10 +55,9 @@ public class DynamicFunctionCallIterator extends HybridRuntimeIterator {
public DynamicFunctionCallIterator(
RuntimeIterator functionItemIterator,
List functionArguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(null, executionMode, iteratorMetadata);
+ super(null, staticContext);
this.isPartialApplication = false;
for (RuntimeIterator arg : functionArguments) {
if (arg != null) {
@@ -152,6 +151,7 @@ private void setFunctionItemAndIteratorWithCurrentContext(DynamicContext context
}
this.functionCallIterator = NamedFunctions.buildUserDefinedFunctionCallIterator(
this.functionItem,
+ getConfiguration(),
this.isPartialApplication
? ExecutionMode.LOCAL
: this.functionItem.getBodyIterator().getHighestExecutionMode(),
diff --git a/src/main/java/org/rumbledb/runtime/functions/FunctionItemCallIterator.java b/src/main/java/org/rumbledb/runtime/functions/FunctionItemCallIterator.java
index 3816b736e..2949304cf 100644
--- a/src/main/java/org/rumbledb/runtime/functions/FunctionItemCallIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/FunctionItemCallIterator.java
@@ -25,7 +25,7 @@
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.FunctionIdentifier;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.OurBadException;
import org.rumbledb.exceptions.UnexpectedTypeException;
@@ -65,10 +65,9 @@ public class FunctionItemCallIterator extends HybridRuntimeIterator {
public FunctionItemCallIterator(
Item functionItem,
List functionArguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(null, executionMode, iteratorMetadata);
+ super(null, staticContext);
for (RuntimeIterator arg : functionArguments) {
if (arg == null) {
this.isPartialApplication = true;
@@ -135,6 +134,12 @@ private void wrapArgumentIteratorsWithTypeCheckingIterators() {
) {
executionMode = ExecutionMode.LOCAL;
}
+ RuntimeStaticContext runtimeStaticContext = new RuntimeStaticContext(
+ getConfiguration(),
+ sequenceType,
+ executionMode,
+ this.functionArguments.get(i).getMetadata()
+ );
if (
sequenceType.isEmptySequence()
|| sequenceType.getArity().equals(Arity.One)
@@ -144,8 +149,7 @@ private void wrapArgumentIteratorsWithTypeCheckingIterators() {
this.functionArguments.get(i),
sequenceType,
"Invalid argument for " + this.functionItem.getIdentifier().getName() + " function. ",
- executionMode,
- getMetadata()
+ runtimeStaticContext
);
this.functionArguments.set(i, typePromotionIterator);
} else {
@@ -153,8 +157,7 @@ private void wrapArgumentIteratorsWithTypeCheckingIterators() {
this.functionArguments.get(i),
sequenceType,
"Invalid argument for " + this.functionItem.getIdentifier().getName() + " function. ",
- executionMode,
- getMetadata()
+ runtimeStaticContext
);
this.functionArguments.set(i, typePromotionIterator);
}
@@ -237,7 +240,10 @@ private RuntimeIterator generatePartiallyAppliedFunction(DynamicContext context)
RDDArgumentValues,
DFArgumentValues
);
- return new ConstantRuntimeIterator(partiallyAppliedFunction, ExecutionMode.LOCAL, getMetadata());
+ return new ConstantRuntimeIterator(
+ partiallyAppliedFunction,
+ new RuntimeStaticContext(getConfiguration(), SequenceType.FUNCTION, ExecutionMode.LOCAL, getMetadata())
+ );
}
private void populateDynamicContextWithArguments(DynamicContext context) {
diff --git a/src/main/java/org/rumbledb/runtime/functions/FunctionRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/functions/FunctionRuntimeIterator.java
index f57ad0206..f78db26be 100644
--- a/src/main/java/org/rumbledb/runtime/functions/FunctionRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/FunctionRuntimeIterator.java
@@ -25,8 +25,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.FunctionItem;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -45,10 +44,9 @@ public FunctionRuntimeIterator(
Map paramNameToSequenceTypes,
SequenceType returnType,
RuntimeIterator bodyIterator,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(null, executionMode, iteratorMetadata);
+ super(null, staticContext);
this.functionName = functionName;
this.paramNameToSequenceTypes = paramNameToSequenceTypes;
this.returnType = returnType;
diff --git a/src/main/java/org/rumbledb/runtime/functions/NamedFunctionRefRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/functions/NamedFunctionRefRuntimeIterator.java
index 0ddadf2e2..1dc91eb71 100644
--- a/src/main/java/org/rumbledb/runtime/functions/NamedFunctionRefRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/NamedFunctionRefRuntimeIterator.java
@@ -23,9 +23,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.FunctionIdentifier;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.UnknownFunctionCallException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.FunctionItem;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
@@ -37,10 +36,9 @@ public class NamedFunctionRefRuntimeIterator extends AtMostOneItemLocalRuntimeIt
public NamedFunctionRefRuntimeIterator(
FunctionIdentifier functionIdentifier,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(null, executionMode, iteratorMetadata);
+ super(null, staticContext);
this.functionIdentifier = functionIdentifier;
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/NullFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/NullFunctionIterator.java
index 064ce7bee..332c9af1a 100644
--- a/src/main/java/org/rumbledb/runtime/functions/NullFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/NullFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class NullFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
protected NullFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/StaticUserDefinedFunctionCallIterator.java b/src/main/java/org/rumbledb/runtime/functions/StaticUserDefinedFunctionCallIterator.java
index 1fa478bc1..f10b1c3fa 100644
--- a/src/main/java/org/rumbledb/runtime/functions/StaticUserDefinedFunctionCallIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/StaticUserDefinedFunctionCallIterator.java
@@ -25,9 +25,8 @@
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.FunctionIdentifier;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -52,10 +51,9 @@ public class StaticUserDefinedFunctionCallIterator extends HybridRuntimeIterator
public StaticUserDefinedFunctionCallIterator(
FunctionIdentifier functionIdentifier,
List functionArguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(null, executionMode, iteratorMetadata);
+ super(null, staticContext);
this.functionIdentifier = functionIdentifier;
this.functionArguments = functionArguments;
this.userDefinedFunctionCallIterator = null;
diff --git a/src/main/java/org/rumbledb/runtime/functions/arrays/ArrayDescendantFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/arrays/ArrayDescendantFunctionIterator.java
index 86452a2e2..edf74338a 100644
--- a/src/main/java/org/rumbledb/runtime/functions/arrays/ArrayDescendantFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/arrays/ArrayDescendantFunctionIterator.java
@@ -24,9 +24,8 @@
import org.apache.spark.api.java.function.FlatMapFunction;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -45,10 +44,9 @@ public class ArrayDescendantFunctionIterator extends HybridRuntimeIterator {
public ArrayDescendantFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.iterator = arguments.get(0);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/arrays/ArrayFlattenFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/arrays/ArrayFlattenFunctionIterator.java
index c9c51a0f4..45cc88704 100644
--- a/src/main/java/org/rumbledb/runtime/functions/arrays/ArrayFlattenFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/arrays/ArrayFlattenFunctionIterator.java
@@ -24,9 +24,8 @@
import org.apache.spark.api.java.function.FlatMapFunction;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -44,10 +43,9 @@ public class ArrayFlattenFunctionIterator extends HybridRuntimeIterator {
public ArrayFlattenFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.iterator = arguments.get(0);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/arrays/ArrayMembersFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/arrays/ArrayMembersFunctionIterator.java
index e46ec8918..07f86f567 100644
--- a/src/main/java/org/rumbledb/runtime/functions/arrays/ArrayMembersFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/arrays/ArrayMembersFunctionIterator.java
@@ -24,9 +24,8 @@
import org.apache.spark.api.java.function.FlatMapFunction;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.navigation.ArrayMembersClosure;
@@ -44,10 +43,9 @@ public class ArrayMembersFunctionIterator extends HybridRuntimeIterator {
public ArrayMembersFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.iterator = this.children.get(0);
this.nextResults = new LinkedList<>();
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/arrays/ArraySizeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/arrays/ArraySizeFunctionIterator.java
index 25790c8c4..8b96cdadf 100644
--- a/src/main/java/org/rumbledb/runtime/functions/arrays/ArraySizeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/arrays/ArraySizeFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class ArraySizeFunctionIterator extends AtMostOneItemLocalRuntimeIterator
public ArraySizeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/base/LocalFunctionCallIterator.java b/src/main/java/org/rumbledb/runtime/functions/base/LocalFunctionCallIterator.java
index 9f5273502..c6c355d4d 100644
--- a/src/main/java/org/rumbledb/runtime/functions/base/LocalFunctionCallIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/base/LocalFunctionCallIterator.java
@@ -20,8 +20,7 @@
package org.rumbledb.runtime.functions.base;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.runtime.LocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -33,9 +32,8 @@ public abstract class LocalFunctionCallIterator extends LocalRuntimeIterator {
protected LocalFunctionCallIterator(
List parameters,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(parameters, executionMode, iteratorMetadata);
+ super(parameters, staticContext);
}
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/booleans/BooleanFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/booleans/BooleanFunctionIterator.java
index f9f68a285..a84c8d3d6 100644
--- a/src/main/java/org/rumbledb/runtime/functions/booleans/BooleanFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/booleans/BooleanFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -36,10 +35,9 @@ public class BooleanFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public BooleanFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/booleans/FalseFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/booleans/FalseFunctionIterator.java
index 4ca6cab48..34601dbbc 100644
--- a/src/main/java/org/rumbledb/runtime/functions/booleans/FalseFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/booleans/FalseFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -36,10 +35,9 @@ public class FalseFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public FalseFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/booleans/NotFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/booleans/NotFunctionIterator.java
index ca3094c15..dfd5ac364 100644
--- a/src/main/java/org/rumbledb/runtime/functions/booleans/NotFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/booleans/NotFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -36,10 +35,9 @@ public class NotFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public NotFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/booleans/TrueFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/booleans/TrueFunctionIterator.java
index fdc48f24c..cdac28bf0 100644
--- a/src/main/java/org/rumbledb/runtime/functions/booleans/TrueFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/booleans/TrueFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -16,10 +15,9 @@ public class TrueFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public TrueFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/context/LastFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/context/LastFunctionIterator.java
index 7094815ef..a784562ee 100644
--- a/src/main/java/org/rumbledb/runtime/functions/context/LastFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/context/LastFunctionIterator.java
@@ -23,9 +23,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.AbsentPartOfDynamicContextException;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -40,10 +39,9 @@ public class LastFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public LastFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/context/PositionFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/context/PositionFunctionIterator.java
index db9dba61b..93a504d87 100644
--- a/src/main/java/org/rumbledb/runtime/functions/context/PositionFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/context/PositionFunctionIterator.java
@@ -23,9 +23,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.AbsentPartOfDynamicContextException;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -40,10 +39,9 @@ public class PositionFunctionIterator extends AtMostOneItemLocalRuntimeIterator
public PositionFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/CurrentDateFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/CurrentDateFunctionIterator.java
index 737b29c01..6989efcf0 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/CurrentDateFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/CurrentDateFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -16,10 +15,9 @@ public class CurrentDateFunctionIterator extends AtMostOneItemLocalRuntimeIterat
public CurrentDateFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/CurrentDateTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/CurrentDateTimeFunctionIterator.java
index 35b6ea50f..c8228cf3e 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/CurrentDateTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/CurrentDateTimeFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -16,10 +15,9 @@ public class CurrentDateTimeFunctionIterator extends AtMostOneItemLocalRuntimeIt
public CurrentDateTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/CurrentTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/CurrentTimeFunctionIterator.java
index 21c23a4c8..6dd23b4dc 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/CurrentTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/CurrentTimeFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -16,10 +15,9 @@ public class CurrentTimeFunctionIterator extends AtMostOneItemLocalRuntimeIterat
public CurrentTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/DateTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/DateTimeFunctionIterator.java
index 066b719ca..42ad98a75 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/DateTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/DateTimeFunctionIterator.java
@@ -3,8 +3,8 @@
import org.joda.time.DateTime;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.*;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -19,10 +19,9 @@ public class DateTimeFunctionIterator extends AtMostOneItemLocalRuntimeIterator
public DateTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/FormatDateFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/FormatDateFunctionIterator.java
index 37e8b8310..ef0e1d5aa 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/FormatDateFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/FormatDateFunctionIterator.java
@@ -3,12 +3,11 @@
import org.joda.time.DateTime;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.CastException;
import org.rumbledb.exceptions.ComponentSpecifierNotAvailableException;
-import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.IncorrectSyntaxFormatDateTimeException;
import org.rumbledb.exceptions.UnsupportedFeatureException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -26,10 +25,9 @@ public class FormatDateFunctionIterator extends AtMostOneItemLocalRuntimeIterato
public FormatDateFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/FormatDateTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/FormatDateTimeFunctionIterator.java
index d66bd9d8c..5112d1966 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/FormatDateTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/FormatDateTimeFunctionIterator.java
@@ -3,12 +3,11 @@
import org.joda.time.DateTime;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.CastException;
import org.rumbledb.exceptions.ComponentSpecifierNotAvailableException;
-import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.IncorrectSyntaxFormatDateTimeException;
import org.rumbledb.exceptions.UnsupportedFeatureException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -26,10 +25,9 @@ public class FormatDateTimeFunctionIterator extends AtMostOneItemLocalRuntimeIte
public FormatDateTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/FormatTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/FormatTimeFunctionIterator.java
index 9b68e53af..5f0493e94 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/FormatTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/FormatTimeFunctionIterator.java
@@ -3,12 +3,11 @@
import org.joda.time.DateTime;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.CastException;
import org.rumbledb.exceptions.ComponentSpecifierNotAvailableException;
-import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.IncorrectSyntaxFormatDateTimeException;
import org.rumbledb.exceptions.UnsupportedFeatureException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -26,10 +25,9 @@ public class FormatTimeFunctionIterator extends AtMostOneItemLocalRuntimeIterato
public FormatTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/AdjustDateTimeToTimezone.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/AdjustDateTimeToTimezone.java
index e5abe9197..b6c15a87c 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/AdjustDateTimeToTimezone.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/AdjustDateTimeToTimezone.java
@@ -4,9 +4,8 @@
import org.joda.time.Instant;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.InvalidTimezoneException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -21,10 +20,9 @@ public class AdjustDateTimeToTimezone extends AtMostOneItemLocalRuntimeIterator
public AdjustDateTimeToTimezone(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/AdjustDateToTimezone.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/AdjustDateToTimezone.java
index 8f87fabec..25b3c5405 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/AdjustDateToTimezone.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/AdjustDateToTimezone.java
@@ -4,9 +4,8 @@
import org.joda.time.Instant;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.InvalidTimezoneException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -21,10 +20,9 @@ public class AdjustDateToTimezone extends AtMostOneItemLocalRuntimeIterator {
public AdjustDateToTimezone(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/AdjustTimeToTimezone.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/AdjustTimeToTimezone.java
index c9af1b24e..a801c0d53 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/AdjustTimeToTimezone.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/AdjustTimeToTimezone.java
@@ -4,9 +4,8 @@
import org.joda.time.Instant;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.InvalidTimezoneException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -21,10 +20,9 @@ public class AdjustTimeToTimezone extends AtMostOneItemLocalRuntimeIterator {
public AdjustTimeToTimezone(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/DayFromDateFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/DayFromDateFunctionIterator.java
index 7b00705fc..0e53b659d 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/DayFromDateFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/DayFromDateFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class DayFromDateFunctionIterator extends AtMostOneItemLocalRuntimeIterat
public DayFromDateFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/DayFromDateTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/DayFromDateTimeFunctionIterator.java
index e1c7dca54..2f4135102 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/DayFromDateTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/DayFromDateTimeFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class DayFromDateTimeFunctionIterator extends AtMostOneItemLocalRuntimeIt
public DayFromDateTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/HoursFromDateTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/HoursFromDateTimeFunctionIterator.java
index dcef0581c..3f335bd3a 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/HoursFromDateTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/HoursFromDateTimeFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class HoursFromDateTimeFunctionIterator extends AtMostOneItemLocalRuntime
public HoursFromDateTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/HoursFromTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/HoursFromTimeFunctionIterator.java
index 6c2ab1168..b492ca8a9 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/HoursFromTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/HoursFromTimeFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class HoursFromTimeFunctionIterator extends AtMostOneItemLocalRuntimeIter
public HoursFromTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/MinutesFromDateTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/MinutesFromDateTimeFunctionIterator.java
index fe23568a4..62af3dc49 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/MinutesFromDateTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/MinutesFromDateTimeFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class MinutesFromDateTimeFunctionIterator extends AtMostOneItemLocalRunti
public MinutesFromDateTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/MinutesFromTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/MinutesFromTimeFunctionIterator.java
index ff3e3016a..b4eb6bffc 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/MinutesFromTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/MinutesFromTimeFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class MinutesFromTimeFunctionIterator extends AtMostOneItemLocalRuntimeIt
public MinutesFromTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/MonthFromDateFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/MonthFromDateFunctionIterator.java
index 91c573575..4c68eda68 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/MonthFromDateFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/MonthFromDateFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class MonthFromDateFunctionIterator extends AtMostOneItemLocalRuntimeIter
public MonthFromDateFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/MonthFromDateTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/MonthFromDateTimeFunctionIterator.java
index 6766fa3f1..a9017717b 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/MonthFromDateTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/MonthFromDateTimeFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class MonthFromDateTimeFunctionIterator extends AtMostOneItemLocalRuntime
public MonthFromDateTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/SecondsFromDateTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/SecondsFromDateTimeFunctionIterator.java
index 40c7baea0..b7995f049 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/SecondsFromDateTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/SecondsFromDateTimeFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -18,10 +17,9 @@ public class SecondsFromDateTimeFunctionIterator extends AtMostOneItemLocalRunti
public SecondsFromDateTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/SecondsFromTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/SecondsFromTimeFunctionIterator.java
index 33e6e95e0..d663c9ac4 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/SecondsFromTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/SecondsFromTimeFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -18,10 +17,9 @@ public class SecondsFromTimeFunctionIterator extends AtMostOneItemLocalRuntimeIt
public SecondsFromTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/TimezoneFromDateFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/TimezoneFromDateFunctionIterator.java
index 7499bd6d5..816fb6dd9 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/TimezoneFromDateFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/TimezoneFromDateFunctionIterator.java
@@ -3,8 +3,7 @@
import org.joda.time.Period;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -18,10 +17,9 @@ public class TimezoneFromDateFunctionIterator extends AtMostOneItemLocalRuntimeI
public TimezoneFromDateFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/TimezoneFromDateTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/TimezoneFromDateTimeFunctionIterator.java
index d157dddb3..fb292ce17 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/TimezoneFromDateTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/TimezoneFromDateTimeFunctionIterator.java
@@ -3,8 +3,7 @@
import org.joda.time.Period;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -18,10 +17,9 @@ public class TimezoneFromDateTimeFunctionIterator extends AtMostOneItemLocalRunt
public TimezoneFromDateTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/TimezoneFromTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/TimezoneFromTimeFunctionIterator.java
index 9b08f5e1d..0782af4a5 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/TimezoneFromTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/TimezoneFromTimeFunctionIterator.java
@@ -3,8 +3,7 @@
import org.joda.time.Period;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -18,10 +17,9 @@ public class TimezoneFromTimeFunctionIterator extends AtMostOneItemLocalRuntimeI
public TimezoneFromTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/YearFromDateFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/YearFromDateFunctionIterator.java
index 4b5248903..b5e1bab08 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/YearFromDateFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/YearFromDateFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class YearFromDateFunctionIterator extends AtMostOneItemLocalRuntimeItera
public YearFromDateFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/datetime/components/YearFromDateTimeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/datetime/components/YearFromDateTimeFunctionIterator.java
index 67415c969..401861ada 100644
--- a/src/main/java/org/rumbledb/runtime/functions/datetime/components/YearFromDateTimeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/datetime/components/YearFromDateTimeFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class YearFromDateTimeFunctionIterator extends AtMostOneItemLocalRuntimeI
public YearFromDateTimeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/durations/components/DaysFromDurationFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/durations/components/DaysFromDurationFunctionIterator.java
index 2554d8fbb..40d8ca16e 100644
--- a/src/main/java/org/rumbledb/runtime/functions/durations/components/DaysFromDurationFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/durations/components/DaysFromDurationFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class DaysFromDurationFunctionIterator extends AtMostOneItemLocalRuntimeI
public DaysFromDurationFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/durations/components/HoursFromDurationFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/durations/components/HoursFromDurationFunctionIterator.java
index a406efecc..c48d551be 100644
--- a/src/main/java/org/rumbledb/runtime/functions/durations/components/HoursFromDurationFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/durations/components/HoursFromDurationFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class HoursFromDurationFunctionIterator extends AtMostOneItemLocalRuntime
public HoursFromDurationFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/durations/components/ImplicitTimezoneIterator.java b/src/main/java/org/rumbledb/runtime/functions/durations/components/ImplicitTimezoneIterator.java
index 39ac5e8c9..24bc36d32 100644
--- a/src/main/java/org/rumbledb/runtime/functions/durations/components/ImplicitTimezoneIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/durations/components/ImplicitTimezoneIterator.java
@@ -4,8 +4,7 @@
import org.joda.time.Period;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -18,10 +17,9 @@ public class ImplicitTimezoneIterator extends AtMostOneItemLocalRuntimeIterator
public ImplicitTimezoneIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/durations/components/MinutesFromDurationFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/durations/components/MinutesFromDurationFunctionIterator.java
index b0f092a4b..11d42203c 100644
--- a/src/main/java/org/rumbledb/runtime/functions/durations/components/MinutesFromDurationFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/durations/components/MinutesFromDurationFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class MinutesFromDurationFunctionIterator extends AtMostOneItemLocalRunti
public MinutesFromDurationFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/durations/components/MonthsFromDurationFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/durations/components/MonthsFromDurationFunctionIterator.java
index a9cb39361..0bdbe1feb 100644
--- a/src/main/java/org/rumbledb/runtime/functions/durations/components/MonthsFromDurationFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/durations/components/MonthsFromDurationFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class MonthsFromDurationFunctionIterator extends AtMostOneItemLocalRuntim
public MonthsFromDurationFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/durations/components/SecondsFromDurationFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/durations/components/SecondsFromDurationFunctionIterator.java
index 9fe0e3900..78936df42 100644
--- a/src/main/java/org/rumbledb/runtime/functions/durations/components/SecondsFromDurationFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/durations/components/SecondsFromDurationFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -18,10 +17,9 @@ public class SecondsFromDurationFunctionIterator extends AtMostOneItemLocalRunti
public SecondsFromDurationFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/durations/components/YearsFromDurationFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/durations/components/YearsFromDurationFunctionIterator.java
index 5c1d6d772..5a07d52eb 100644
--- a/src/main/java/org/rumbledb/runtime/functions/durations/components/YearsFromDurationFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/durations/components/YearsFromDurationFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class YearsFromDurationFunctionIterator extends AtMostOneItemLocalRuntime
public YearsFromDurationFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/input/AvroFileFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/input/AvroFileFunctionIterator.java
index c933cfeb5..96f506c00 100644
--- a/src/main/java/org/rumbledb/runtime/functions/input/AvroFileFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/input/AvroFileFunctionIterator.java
@@ -25,10 +25,9 @@
import org.apache.spark.sql.Row;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.CannotRetrieveResourceException;
-import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ObjectItem;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.DataFrameRuntimeIterator;
@@ -45,10 +44,9 @@ public class AvroFileFunctionIterator extends DataFrameRuntimeIterator {
public AvroFileFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/input/CSVFileFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/input/CSVFileFunctionIterator.java
index 4e8f92545..d139125b6 100644
--- a/src/main/java/org/rumbledb/runtime/functions/input/CSVFileFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/input/CSVFileFunctionIterator.java
@@ -26,10 +26,9 @@
import org.apache.spark.sql.Row;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.CannotRetrieveResourceException;
-import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ObjectItem;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.DataFrameRuntimeIterator;
@@ -46,10 +45,9 @@ public class CSVFileFunctionIterator extends DataFrameRuntimeIterator {
public CSVFileFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/input/JsonFileFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/input/JsonFileFunctionIterator.java
index e8801dc8d..63f3cb125 100644
--- a/src/main/java/org/rumbledb/runtime/functions/input/JsonFileFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/input/JsonFileFunctionIterator.java
@@ -23,11 +23,10 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.CannotRetrieveResourceException;
-import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.RumbleException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.parsing.ItemParser;
import org.rumbledb.items.parsing.JSONSyntaxToItemMapper;
import org.rumbledb.runtime.HybridRuntimeIterator;
@@ -56,10 +55,9 @@ public class JsonFileFunctionIterator extends HybridRuntimeIterator {
public JsonFileFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.iterator = this.children.get(0);
this.reader = null;
this.nextItem = null;
diff --git a/src/main/java/org/rumbledb/runtime/functions/input/LibSVMFileFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/input/LibSVMFileFunctionIterator.java
index 27b229fa3..3db5931d7 100644
--- a/src/main/java/org/rumbledb/runtime/functions/input/LibSVMFileFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/input/LibSVMFileFunctionIterator.java
@@ -24,9 +24,8 @@
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.CannotRetrieveResourceException;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.DataFrameRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -42,10 +41,9 @@ public class LibSVMFileFunctionIterator extends DataFrameRuntimeIterator {
public LibSVMFileFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata metadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, metadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/input/ParallelizeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/input/ParallelizeFunctionIterator.java
index d25fe824e..a149ee98e 100644
--- a/src/main/java/org/rumbledb/runtime/functions/input/ParallelizeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/input/ParallelizeFunctionIterator.java
@@ -23,9 +23,8 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -40,10 +39,9 @@ public class ParallelizeFunctionIterator extends HybridRuntimeIterator {
public ParallelizeFunctionIterator(
List parameters,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(parameters, executionMode, iteratorMetadata);
+ super(parameters, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/input/ParquetFileFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/input/ParquetFileFunctionIterator.java
index 5864c2cc1..b051a04ed 100644
--- a/src/main/java/org/rumbledb/runtime/functions/input/ParquetFileFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/input/ParquetFileFunctionIterator.java
@@ -24,9 +24,8 @@
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.CannotRetrieveResourceException;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.DataFrameRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -42,10 +41,9 @@ public class ParquetFileFunctionIterator extends DataFrameRuntimeIterator {
public ParquetFileFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/input/RepartitionFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/input/RepartitionFunctionIterator.java
index 2e90cb632..abbf47207 100644
--- a/src/main/java/org/rumbledb/runtime/functions/input/RepartitionFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/input/RepartitionFunctionIterator.java
@@ -23,8 +23,7 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -41,10 +40,9 @@ public class RepartitionFunctionIterator extends HybridRuntimeIterator {
public RepartitionFunctionIterator(
List inputIterators,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(inputIterators, executionMode, iteratorMetadata);
+ super(inputIterators, staticContext);
this.iterator = inputIterators.get(0);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/input/RootFileFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/input/RootFileFunctionIterator.java
index 73f9ecd73..fdde19e82 100644
--- a/src/main/java/org/rumbledb/runtime/functions/input/RootFileFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/input/RootFileFunctionIterator.java
@@ -26,9 +26,8 @@
import org.apache.spark.sql.Row;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.CannotRetrieveResourceException;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.DataFrameRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -44,10 +43,9 @@ public class RootFileFunctionIterator extends DataFrameRuntimeIterator {
public RootFileFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/input/StructuredJsonFileFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/input/StructuredJsonFileFunctionIterator.java
index b34551fe6..40ad4b792 100644
--- a/src/main/java/org/rumbledb/runtime/functions/input/StructuredJsonFileFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/input/StructuredJsonFileFunctionIterator.java
@@ -25,10 +25,9 @@
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.CannotRetrieveResourceException;
-import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.RumbleException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.DataFrameRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -44,10 +43,9 @@ public class StructuredJsonFileFunctionIterator extends DataFrameRuntimeIterator
public StructuredJsonFileFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/input/UnparsedTextLinesFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/input/UnparsedTextLinesFunctionIterator.java
index be39d9c7c..9d751705f 100644
--- a/src/main/java/org/rumbledb/runtime/functions/input/UnparsedTextLinesFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/input/UnparsedTextLinesFunctionIterator.java
@@ -23,9 +23,8 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.CannotRetrieveResourceException;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.parsing.StringToStringItemMapper;
import org.rumbledb.runtime.RDDRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -47,10 +46,9 @@ public class UnparsedTextLinesFunctionIterator extends RDDRuntimeIterator {
public UnparsedTextLinesFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/io/CollectionFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/io/CollectionFunctionIterator.java
index 237d8df5e..b2bc6c274 100644
--- a/src/main/java/org/rumbledb/runtime/functions/io/CollectionFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/io/CollectionFunctionIterator.java
@@ -2,9 +2,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.CannotRetrieveResourceException;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.DataFrameRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -18,10 +17,9 @@ public class CollectionFunctionIterator extends DataFrameRuntimeIterator {
public CollectionFunctionIterator(
List children,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(children, executionMode, iteratorMetadata);
+ super(children, staticContext);
}
// TODO: implement collection function
diff --git a/src/main/java/org/rumbledb/runtime/functions/io/JsonDocFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/io/JsonDocFunctionIterator.java
index c5bdb69ef..cefbbc208 100644
--- a/src/main/java/org/rumbledb/runtime/functions/io/JsonDocFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/io/JsonDocFunctionIterator.java
@@ -23,9 +23,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.parsing.ItemParser;
import com.google.gson.stream.JsonReader;
import org.rumbledb.runtime.RuntimeIterator;
@@ -44,10 +43,9 @@ public class JsonDocFunctionIterator extends LocalFunctionCallIterator {
public JsonDocFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/io/LocalTextFileFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/io/LocalTextFileFunctionIterator.java
index 73be225a7..dfc0b7339 100644
--- a/src/main/java/org/rumbledb/runtime/functions/io/LocalTextFileFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/io/LocalTextFileFunctionIterator.java
@@ -23,10 +23,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.CannotRetrieveResourceException;
-import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.functions.base.LocalFunctionCallIterator;
@@ -50,10 +49,9 @@ public class LocalTextFileFunctionIterator extends LocalFunctionCallIterator {
public LocalTextFileFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/io/ParseJsonFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/io/ParseJsonFunctionIterator.java
index 69206fb9b..a9e46cf8b 100644
--- a/src/main/java/org/rumbledb/runtime/functions/io/ParseJsonFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/io/ParseJsonFunctionIterator.java
@@ -24,10 +24,9 @@
import com.google.gson.stream.JsonReader;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.RumbleException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.parsing.ItemParser;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -43,10 +42,9 @@ public class ParseJsonFunctionIterator extends AtMostOneItemLocalRuntimeIterator
public ParseJsonFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/io/TraceFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/io/TraceFunctionIterator.java
index 3d690d8b9..25c09eb16 100644
--- a/src/main/java/org/rumbledb/runtime/functions/io/TraceFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/io/TraceFunctionIterator.java
@@ -24,9 +24,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.config.RumbleRuntimeConfiguration;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.functions.base.LocalFunctionCallIterator;
import org.rumbledb.runtime.functions.input.FileSystemUtil;
@@ -45,10 +44,9 @@ public class TraceFunctionIterator extends LocalFunctionCallIterator {
public TraceFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.position = 0;
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/io/UnparsedTextFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/io/UnparsedTextFunctionIterator.java
index 7a4687ae4..3684a5dea 100644
--- a/src/main/java/org/rumbledb/runtime/functions/io/UnparsedTextFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/io/UnparsedTextFunctionIterator.java
@@ -23,9 +23,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.functions.base.LocalFunctionCallIterator;
@@ -43,10 +42,9 @@ public class UnparsedTextFunctionIterator extends LocalFunctionCallIterator {
public UnparsedTextFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/io/YamlDocFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/io/YamlDocFunctionIterator.java
index 41c8ba612..04b220d64 100644
--- a/src/main/java/org/rumbledb/runtime/functions/io/YamlDocFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/io/YamlDocFunctionIterator.java
@@ -23,9 +23,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.parsing.ItemParser;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
@@ -52,10 +51,9 @@ public class YamlDocFunctionIterator extends LocalFunctionCallIterator {
public YamlDocFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/AbsFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/AbsFunctionIterator.java
index 71ed3730e..33a0a8e42 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/AbsFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/AbsFunctionIterator.java
@@ -22,9 +22,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.OurBadException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class AbsFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public AbsFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/CeilingFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/CeilingFunctionIterator.java
index 2a0335c7e..9ed67669c 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/CeilingFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/CeilingFunctionIterator.java
@@ -22,9 +22,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -40,10 +39,9 @@ public class CeilingFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public CeilingFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/FloorFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/FloorFunctionIterator.java
index 999495344..1bac2688e 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/FloorFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/FloorFunctionIterator.java
@@ -22,9 +22,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -42,10 +41,9 @@ public class FloorFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public FloorFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/NumberFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/NumberFunctionIterator.java
index 3a17f005b..21f1d866a 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/NumberFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/NumberFunctionIterator.java
@@ -23,8 +23,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -38,10 +37,9 @@ public class NumberFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public NumberFunctionIterator(
List parameters,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(parameters, executionMode, iteratorMetadata);
+ super(parameters, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/PiFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/PiFunctionIterator.java
index a7faf61a5..302d5519a 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/PiFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/PiFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -36,10 +35,9 @@ public class PiFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public PiFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/RoundFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/RoundFunctionIterator.java
index 20bc96010..319112b53 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/RoundFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/RoundFunctionIterator.java
@@ -22,10 +22,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -42,10 +41,9 @@ public class RoundFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public RoundFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/RoundHalfToEvenFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/RoundHalfToEvenFunctionIterator.java
index b37a19284..0b638cbe7 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/RoundHalfToEvenFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/RoundHalfToEvenFunctionIterator.java
@@ -22,10 +22,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -41,10 +40,9 @@ public class RoundHalfToEvenFunctionIterator extends AtMostOneItemLocalRuntimeIt
public RoundHalfToEvenFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/Exp10FunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/Exp10FunctionIterator.java
index 1a8c78cd3..6a142c404 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/Exp10FunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/Exp10FunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class Exp10FunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public Exp10FunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/ExpFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/ExpFunctionIterator.java
index f0ee8f753..a7e2e52df 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/ExpFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/ExpFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -35,10 +34,9 @@ public class ExpFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public ExpFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/Log10FunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/Log10FunctionIterator.java
index 3591e711b..4d3344258 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/Log10FunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/Log10FunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class Log10FunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public Log10FunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/LogFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/LogFunctionIterator.java
index b2f64b231..00a22f307 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/LogFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/LogFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -35,10 +34,9 @@ public class LogFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public LogFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/PowFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/PowFunctionIterator.java
index 30ea6a472..6c0c24483 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/PowFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/PowFunctionIterator.java
@@ -22,9 +22,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -38,10 +37,9 @@ public class PowFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public PowFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/SqrtFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/SqrtFunctionIterator.java
index 79be0612f..9fad1a12b 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/SqrtFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/exponential/SqrtFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -36,10 +35,9 @@ public class SqrtFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public SqrtFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ACosFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ACosFunctionIterator.java
index 925ae189c..31c97f5f4 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ACosFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ACosFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -36,10 +35,9 @@ public class ACosFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public ACosFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ASinFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ASinFunctionIterator.java
index 1f236216b..3504dfc02 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ASinFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ASinFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class ASinFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public ASinFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ATan2FunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ATan2FunctionIterator.java
index 02666bfa7..ec7ba4a68 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ATan2FunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ATan2FunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -35,10 +34,9 @@ public class ATan2FunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public ATan2FunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ATanFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ATanFunctionIterator.java
index 959605444..41b4e5ac7 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ATanFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/ATanFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class ATanFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public ATanFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/CosFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/CosFunctionIterator.java
index dbf006706..ded789eb0 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/CosFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/CosFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -35,10 +34,9 @@ public class CosFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public CosFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/CoshFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/CoshFunctionIterator.java
index f346ac86b..58b5feb0b 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/CoshFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/CoshFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class CoshFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public CoshFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/SinFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/SinFunctionIterator.java
index e4b5ba6bf..25f768920 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/SinFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/SinFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -35,10 +34,9 @@ public class SinFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public SinFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/SinhFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/SinhFunctionIterator.java
index ce50c61fa..23d609214 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/SinhFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/SinhFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class SinhFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public SinhFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/TanFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/TanFunctionIterator.java
index b12253614..77d5f223c 100644
--- a/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/TanFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/numerics/trigonometric/TanFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class TanFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public TanFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/object/ObjectAccumulateFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/object/ObjectAccumulateFunctionIterator.java
index 754fe99f3..ae28047e8 100644
--- a/src/main/java/org/rumbledb/runtime/functions/object/ObjectAccumulateFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/object/ObjectAccumulateFunctionIterator.java
@@ -25,8 +25,7 @@
import org.apache.spark.api.java.function.Function2;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -43,10 +42,9 @@ public class ObjectAccumulateFunctionIterator extends AtMostOneItemLocalRuntimeI
public ObjectAccumulateFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/object/ObjectDescendantFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/object/ObjectDescendantFunctionIterator.java
index a0c4ac088..6230efd86 100644
--- a/src/main/java/org/rumbledb/runtime/functions/object/ObjectDescendantFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/object/ObjectDescendantFunctionIterator.java
@@ -24,9 +24,8 @@
import org.apache.spark.api.java.function.FlatMapFunction;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -44,10 +43,9 @@ public class ObjectDescendantFunctionIterator extends HybridRuntimeIterator {
public ObjectDescendantFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.iterator = arguments.get(0);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/object/ObjectDescendantPairsFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/object/ObjectDescendantPairsFunctionIterator.java
index f0100468a..edf66d1b5 100644
--- a/src/main/java/org/rumbledb/runtime/functions/object/ObjectDescendantPairsFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/object/ObjectDescendantPairsFunctionIterator.java
@@ -22,9 +22,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.functions.base.LocalFunctionCallIterator;
@@ -44,10 +43,9 @@ public class ObjectDescendantPairsFunctionIterator extends LocalFunctionCallIter
public ObjectDescendantPairsFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/object/ObjectIntersectFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/object/ObjectIntersectFunctionIterator.java
index 4f475ab0d..ee05ad56c 100644
--- a/src/main/java/org/rumbledb/runtime/functions/object/ObjectIntersectFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/object/ObjectIntersectFunctionIterator.java
@@ -25,8 +25,7 @@
import org.apache.spark.api.java.function.Function;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -46,10 +45,9 @@ public class ObjectIntersectFunctionIterator extends AtMostOneItemLocalRuntimeIt
public ObjectIntersectFunctionIterator(
List children,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(children, executionMode, iteratorMetadata);
+ super(children, staticContext);
this.iterator = this.children.get(0);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/object/ObjectKeysFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/object/ObjectKeysFunctionIterator.java
index de0619c4a..840c4f029 100644
--- a/src/main/java/org/rumbledb/runtime/functions/object/ObjectKeysFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/object/ObjectKeysFunctionIterator.java
@@ -24,9 +24,8 @@
import org.apache.spark.api.java.function.FlatMapFunction;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
@@ -48,10 +47,9 @@ public class ObjectKeysFunctionIterator extends HybridRuntimeIterator {
public ObjectKeysFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.iterator = arguments.get(0);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/object/ObjectProjectFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/object/ObjectProjectFunctionIterator.java
index b6d461e23..72a385ec2 100644
--- a/src/main/java/org/rumbledb/runtime/functions/object/ObjectProjectFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/object/ObjectProjectFunctionIterator.java
@@ -24,10 +24,9 @@
import org.apache.spark.api.java.function.FlatMapFunction;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.InvalidSelectorException;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
@@ -49,10 +48,9 @@ public class ObjectProjectFunctionIterator extends HybridRuntimeIterator {
public ObjectProjectFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.iterator = arguments.get(0);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/object/ObjectRemoveKeysFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/object/ObjectRemoveKeysFunctionIterator.java
index b827f5e38..6b5dd20f0 100644
--- a/src/main/java/org/rumbledb/runtime/functions/object/ObjectRemoveKeysFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/object/ObjectRemoveKeysFunctionIterator.java
@@ -24,11 +24,10 @@
import org.apache.spark.api.java.function.FlatMapFunction;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.InvalidSelectorException;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -46,10 +45,9 @@ public class ObjectRemoveKeysFunctionIterator extends HybridRuntimeIterator {
public ObjectRemoveKeysFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.iterator = arguments.get(0);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/object/ObjectValuesFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/object/ObjectValuesFunctionIterator.java
index 77791ffbc..9ac16899e 100644
--- a/src/main/java/org/rumbledb/runtime/functions/object/ObjectValuesFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/object/ObjectValuesFunctionIterator.java
@@ -24,9 +24,8 @@
import org.apache.spark.api.java.function.FlatMapFunction;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -42,10 +41,9 @@ public class ObjectValuesFunctionIterator extends HybridRuntimeIterator {
public ObjectValuesFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.iterator = arguments.get(0);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/AvgFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/AvgFunctionIterator.java
index 6554108e6..ca0875c16 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/AvgFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/AvgFunctionIterator.java
@@ -23,8 +23,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.expressions.arithmetic.MultiplicativeExpression;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
@@ -45,10 +44,9 @@ public class AvgFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public AvgFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/CountFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/CountFunctionIterator.java
index 02fadd7de..51c0f5d35 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/CountFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/CountFunctionIterator.java
@@ -23,9 +23,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.OurBadException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -43,10 +43,9 @@ public class CountFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public CountFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/MaxFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/MaxFunctionIterator.java
index 989ff14bb..cbda4f4ad 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/MaxFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/MaxFunctionIterator.java
@@ -27,8 +27,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.*;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemComparator;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.items.structured.JSoundDataFrame;
@@ -73,10 +73,9 @@ public class MaxFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public MaxFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.iterator = this.children.get(0);
this.comparator = new ItemComparator(
false,
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/MinFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/MinFunctionIterator.java
index 9af411578..32fe12873 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/MinFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/MinFunctionIterator.java
@@ -27,8 +27,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.*;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemComparator;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.items.structured.JSoundDataFrame;
@@ -72,10 +72,9 @@ public class MinFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public MinFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.iterator = this.children.get(0);
this.comparator = new ItemComparator(
true,
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/SumFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/SumFunctionIterator.java
index 1d585cd5d..432a3ad91 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/SumFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/aggregate/SumFunctionIterator.java
@@ -24,9 +24,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.InvalidArgumentTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
@@ -50,10 +50,9 @@ public class SumFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public SumFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/CardinalityFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/CardinalityFunctionIterator.java
index e775cbb6f..6c483c6eb 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/CardinalityFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/CardinalityFunctionIterator.java
@@ -20,8 +20,7 @@
package org.rumbledb.runtime.functions.sequences.cardinality;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -34,10 +33,9 @@ public abstract class CardinalityFunctionIterator extends AtMostOneItemLocalRunt
protected CardinalityFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/ExactlyOneIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/ExactlyOneIterator.java
index 180130f11..14e799da3 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/ExactlyOneIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/ExactlyOneIterator.java
@@ -22,10 +22,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.MoreThanOneItemException;
import org.rumbledb.exceptions.SequenceExceptionExactlyOne;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.flwor.NativeClauseContext;
@@ -39,10 +38,9 @@ public class ExactlyOneIterator extends AtMostOneItemLocalRuntimeIterator {
public ExactlyOneIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/OneOrMoreIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/OneOrMoreIterator.java
index 3785f6b3c..6842cc8e9 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/OneOrMoreIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/OneOrMoreIterator.java
@@ -23,10 +23,9 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.SequenceExceptionOneOrMore;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -41,10 +40,9 @@ public class OneOrMoreIterator extends HybridRuntimeIterator {
public OneOrMoreIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.iterator = this.children.get(0);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/ZeroOrOneIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/ZeroOrOneIterator.java
index 1101974b3..5dc794bcc 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/ZeroOrOneIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/cardinality/ZeroOrOneIterator.java
@@ -22,10 +22,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.MoreThanOneItemException;
import org.rumbledb.exceptions.SequenceExceptionZeroOrOne;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -38,10 +37,9 @@ public class ZeroOrOneIterator extends AtMostOneItemLocalRuntimeIterator {
public ZeroOrOneIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/general/EmptyFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/general/EmptyFunctionIterator.java
index ac3585f4e..95dfd6e3e 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/general/EmptyFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/general/EmptyFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class EmptyFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public EmptyFunctionIterator(
List parameters,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(parameters, executionMode, iteratorMetadata);
+ super(parameters, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/general/ExistsFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/general/ExistsFunctionIterator.java
index 39f025489..c4c943036 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/general/ExistsFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/general/ExistsFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class ExistsFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public ExistsFunctionIterator(
List parameters,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(parameters, executionMode, iteratorMetadata);
+ super(parameters, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/general/HeadFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/general/HeadFunctionIterator.java
index 5d9c268d5..4fd60f710 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/general/HeadFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/general/HeadFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -36,10 +35,9 @@ public class HeadFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public HeadFunctionIterator(
List parameters,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(parameters, executionMode, iteratorMetadata);
+ super(parameters, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/general/InsertBeforeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/general/InsertBeforeFunctionIterator.java
index c8983b745..d5cd4e3aa 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/general/InsertBeforeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/general/InsertBeforeFunctionIterator.java
@@ -24,9 +24,8 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
import scala.Tuple2;
@@ -49,10 +48,9 @@ public class InsertBeforeFunctionIterator extends HybridRuntimeIterator {
public InsertBeforeFunctionIterator(
List parameters,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(parameters, executionMode, iteratorMetadata);
+ super(parameters, staticContext);
this.sequenceIterator = this.children.get(0);
this.positionIterator = this.children.get(1);
this.insertIterator = this.children.get(2);
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/general/RemoveFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/general/RemoveFunctionIterator.java
index e17774557..29d347488 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/general/RemoveFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/general/RemoveFunctionIterator.java
@@ -24,9 +24,8 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -45,10 +44,9 @@ public class RemoveFunctionIterator extends HybridRuntimeIterator {
public RemoveFunctionIterator(
List parameters,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(parameters, executionMode, iteratorMetadata);
+ super(parameters, staticContext);
this.sequenceIterator = this.children.get(0);
this.positionIterator = this.children.get(1);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/general/ReverseFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/general/ReverseFunctionIterator.java
index 64726ffa9..71653d533 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/general/ReverseFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/general/ReverseFunctionIterator.java
@@ -25,9 +25,8 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -49,10 +48,9 @@ public class ReverseFunctionIterator extends HybridRuntimeIterator {
public ReverseFunctionIterator(
List parameters,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(parameters, executionMode, iteratorMetadata);
+ super(parameters, staticContext);
this.sequenceIterator = this.children.get(0);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/general/SubsequenceFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/general/SubsequenceFunctionIterator.java
index 6e46f6324..70b81fcaf 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/general/SubsequenceFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/general/SubsequenceFunctionIterator.java
@@ -26,10 +26,9 @@
import org.apache.spark.sql.Row;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.OurBadException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -54,10 +53,9 @@ public class SubsequenceFunctionIterator extends HybridRuntimeIterator {
public SubsequenceFunctionIterator(
List parameters,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(parameters, executionMode, iteratorMetadata);
+ super(parameters, staticContext);
this.sequenceIterator = this.children.get(0);
this.positionIterator = this.children.get(1);
if (this.children.size() == 3) {
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/general/TailFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/general/TailFunctionIterator.java
index 5f717ecd9..83040afb2 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/general/TailFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/general/TailFunctionIterator.java
@@ -24,9 +24,8 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -41,10 +40,9 @@ public class TailFunctionIterator extends HybridRuntimeIterator {
public TailFunctionIterator(
List parameters,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(parameters, executionMode, iteratorMetadata);
+ super(parameters, staticContext);
this.iterator = this.children.get(0);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/general/UnorderedFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/general/UnorderedFunctionIterator.java
index d548a16e6..75d76b228 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/general/UnorderedFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/general/UnorderedFunctionIterator.java
@@ -23,9 +23,8 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -41,10 +40,9 @@ public class UnorderedFunctionIterator extends HybridRuntimeIterator {
public UnorderedFunctionIterator(
List parameters,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(parameters, executionMode, iteratorMetadata);
+ super(parameters, staticContext);
this.iterator = this.children.get(0);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/value/DeepEqualFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/value/DeepEqualFunctionIterator.java
index a0861156d..1f7b8fbc8 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/value/DeepEqualFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/value/DeepEqualFunctionIterator.java
@@ -26,9 +26,8 @@
import org.apache.spark.api.java.function.FlatMapFunction2;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.DefaultCollationException;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -45,10 +44,9 @@ public class DeepEqualFunctionIterator extends AtMostOneItemLocalRuntimeIterator
public DeepEqualFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/value/DistinctValuesFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/value/DistinctValuesFunctionIterator.java
index 119165155..e4464da60 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/value/DistinctValuesFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/value/DistinctValuesFunctionIterator.java
@@ -23,10 +23,9 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.DefaultCollationException;
-import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -44,10 +43,9 @@ public class DistinctValuesFunctionIterator extends HybridRuntimeIterator {
public DistinctValuesFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.sequenceIterator = arguments.get(0);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/sequences/value/IndexOfFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/sequences/value/IndexOfFunctionIterator.java
index 662ed94d5..7d180f9f4 100644
--- a/src/main/java/org/rumbledb/runtime/functions/sequences/value/IndexOfFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/sequences/value/IndexOfFunctionIterator.java
@@ -24,8 +24,8 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.*;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.comparison.ComparisonExpression.ComparisonOperator;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.HybridRuntimeIterator;
@@ -46,10 +46,9 @@ public class IndexOfFunctionIterator extends HybridRuntimeIterator {
public IndexOfFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
this.sequenceIterator = this.children.get(0);
this.searchIterator = this.children.get(1);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/CodepointEqualFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/CodepointEqualFunctionIterator.java
index 2dd47fc64..a8f103207 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/CodepointEqualFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/CodepointEqualFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -39,10 +38,9 @@ public class CodepointEqualFunctionIterator extends AtMostOneItemLocalRuntimeIte
public CodepointEqualFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/CodepointsToStringFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/CodepointsToStringFunctionIterator.java
index 35a9dca6d..2f3f67580 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/CodepointsToStringFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/CodepointsToStringFunctionIterator.java
@@ -22,9 +22,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.exceptions.CodepointNotValidException;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
@@ -38,10 +37,9 @@ public class CodepointsToStringFunctionIterator extends AtMostOneItemLocalRuntim
public CodepointsToStringFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/ConcatFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/ConcatFunctionIterator.java
index eee61095e..0700342cb 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/ConcatFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/ConcatFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -36,10 +35,9 @@ public class ConcatFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public ConcatFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/ContainsFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/ContainsFunctionIterator.java
index 4ccdc0a53..b131325c9 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/ContainsFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/ContainsFunctionIterator.java
@@ -22,9 +22,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.UnsupportedCollationException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class ContainsFunctionIterator extends AtMostOneItemLocalRuntimeIterator
public ContainsFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/DefaultCollationFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/DefaultCollationFunctionIterator.java
index 995a3756c..4f4354fbe 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/DefaultCollationFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/DefaultCollationFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -16,10 +15,9 @@ public class DefaultCollationFunctionIterator extends AtMostOneItemLocalRuntimeI
public DefaultCollationFunctionIterator(
List children,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(children, executionMode, iteratorMetadata);
+ super(children, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/EncodeForURIFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/EncodeForURIFunctionIterator.java
index 6f3b57cd7..bfbd5c55c 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/EncodeForURIFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/EncodeForURIFunctionIterator.java
@@ -21,10 +21,9 @@
package org.rumbledb.runtime.functions.strings;
import org.rumbledb.api.Item;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.OurBadException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.functions.base.LocalFunctionCallIterator;
@@ -49,10 +48,9 @@ public class EncodeForURIFunctionIterator extends LocalFunctionCallIterator {
public EncodeForURIFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/EndsWithFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/EndsWithFunctionIterator.java
index 9a9b19591..2d7f208ba 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/EndsWithFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/EndsWithFunctionIterator.java
@@ -22,9 +22,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.UnsupportedCollationException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class EndsWithFunctionIterator extends AtMostOneItemLocalRuntimeIterator
public EndsWithFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/LowerCaseFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/LowerCaseFunctionIterator.java
index 450afbad4..515a07659 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/LowerCaseFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/LowerCaseFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -36,10 +35,9 @@ public class LowerCaseFunctionIterator extends AtMostOneItemLocalRuntimeIterator
public LowerCaseFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/MatchesFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/MatchesFunctionIterator.java
index a616a4ba6..ebb602603 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/MatchesFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/MatchesFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -38,10 +37,9 @@ public class MatchesFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public MatchesFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/NormalizeSpaceFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/NormalizeSpaceFunctionIterator.java
index 4426dff4c..9b19d0b89 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/NormalizeSpaceFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/NormalizeSpaceFunctionIterator.java
@@ -24,8 +24,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -38,10 +37,9 @@ public class NormalizeSpaceFunctionIterator extends AtMostOneItemLocalRuntimeIte
public NormalizeSpaceFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/NormalizeUnicodeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/NormalizeUnicodeFunctionIterator.java
index 606871c5f..393060345 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/NormalizeUnicodeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/NormalizeUnicodeFunctionIterator.java
@@ -22,9 +22,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.InvalidNormalizationException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -126,10 +125,9 @@ public class NormalizeUnicodeFunctionIterator extends AtMostOneItemLocalRuntimeI
public NormalizeUnicodeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/ReplaceFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/ReplaceFunctionIterator.java
index 4e1b23afd..fedbc1a0a 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/ReplaceFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/ReplaceFunctionIterator.java
@@ -22,10 +22,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.InvalidRegexPatternException;
import org.rumbledb.exceptions.MatchesEmptyStringException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.exceptions.InvalidReplacementStringException;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
@@ -42,10 +41,9 @@ public class ReplaceFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public ReplaceFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/ResolveURIFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/ResolveURIFunctionIterator.java
index 5bddc2597..d322c87f5 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/ResolveURIFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/ResolveURIFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -18,10 +17,9 @@ public class ResolveURIFunctionIterator extends AtMostOneItemLocalRuntimeIterato
public ResolveURIFunctionIterator(
List children,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(children, executionMode, iteratorMetadata);
+ super(children, staticContext);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/SerializeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/SerializeFunctionIterator.java
index be4c993ed..74815dc13 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/SerializeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/SerializeFunctionIterator.java
@@ -21,9 +21,8 @@
package org.rumbledb.runtime.functions.strings;
import org.rumbledb.api.Item;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.functions.base.LocalFunctionCallIterator;
@@ -36,10 +35,9 @@ public class SerializeFunctionIterator extends LocalFunctionCallIterator {
public SerializeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/StartsWithFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/StartsWithFunctionIterator.java
index 63b8291f3..9592fa1e3 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/StartsWithFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/StartsWithFunctionIterator.java
@@ -22,9 +22,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.UnsupportedCollationException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class StartsWithFunctionIterator extends AtMostOneItemLocalRuntimeIterato
public StartsWithFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/StaticBaseURIFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/StaticBaseURIFunctionIterator.java
index d9d30bbde..3156a9918 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/StaticBaseURIFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/StaticBaseURIFunctionIterator.java
@@ -2,8 +2,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -16,10 +15,9 @@ public class StaticBaseURIFunctionIterator extends AtMostOneItemLocalRuntimeIter
public StaticBaseURIFunctionIterator(
List children,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(children, executionMode, iteratorMetadata);
+ super(children, staticContext);
}
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/StringFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/StringFunctionIterator.java
index 3817c6b70..f0d39493d 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/StringFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/StringFunctionIterator.java
@@ -23,8 +23,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class StringFunctionIterator extends AtMostOneItemLocalRuntimeIterator {
public StringFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/StringJoinFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/StringJoinFunctionIterator.java
index 08ca254a6..817f84614 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/StringJoinFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/StringJoinFunctionIterator.java
@@ -22,9 +22,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class StringJoinFunctionIterator extends AtMostOneItemLocalRuntimeIterato
public StringJoinFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/StringLengthFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/StringLengthFunctionIterator.java
index 21f2a158a..a3baad686 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/StringLengthFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/StringLengthFunctionIterator.java
@@ -23,8 +23,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class StringLengthFunctionIterator extends AtMostOneItemLocalRuntimeItera
public StringLengthFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/StringToCodepointsFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/StringToCodepointsFunctionIterator.java
index 5b2277d10..a7208ab91 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/StringToCodepointsFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/StringToCodepointsFunctionIterator.java
@@ -22,9 +22,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.functions.base.LocalFunctionCallIterator;
@@ -40,10 +39,9 @@ public class StringToCodepointsFunctionIterator extends LocalFunctionCallIterato
public StringToCodepointsFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/SubstringAfterFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/SubstringAfterFunctionIterator.java
index 9478d9877..9507697fc 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/SubstringAfterFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/SubstringAfterFunctionIterator.java
@@ -2,9 +2,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.UnsupportedCollationException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class SubstringAfterFunctionIterator extends AtMostOneItemLocalRuntimeIte
public SubstringAfterFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/SubstringBeforeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/SubstringBeforeFunctionIterator.java
index 94f126e34..12cc2472f 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/SubstringBeforeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/SubstringBeforeFunctionIterator.java
@@ -2,9 +2,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.UnsupportedCollationException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -17,10 +16,9 @@ public class SubstringBeforeFunctionIterator extends AtMostOneItemLocalRuntimeIt
public SubstringBeforeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/SubstringFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/SubstringFunctionIterator.java
index dce331ff0..37e09e99d 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/SubstringFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/SubstringFunctionIterator.java
@@ -22,9 +22,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class SubstringFunctionIterator extends AtMostOneItemLocalRuntimeIterator
public SubstringFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/TokenizeFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/TokenizeFunctionIterator.java
index 59f2ff6a8..94ba13f71 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/TokenizeFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/TokenizeFunctionIterator.java
@@ -22,10 +22,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.RuntimeIterator;
import org.rumbledb.runtime.functions.base.LocalFunctionCallIterator;
@@ -42,10 +41,9 @@ public class TokenizeFunctionIterator extends LocalFunctionCallIterator {
public TokenizeFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/TranslateFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/TranslateFunctionIterator.java
index f0302909a..319440bb9 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/TranslateFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/TranslateFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -38,10 +37,9 @@ public class TranslateFunctionIterator extends AtMostOneItemLocalRuntimeIterator
public TranslateFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/functions/strings/UpperCaseFunctionIterator.java b/src/main/java/org/rumbledb/runtime/functions/strings/UpperCaseFunctionIterator.java
index 9c613187b..73475fbc7 100644
--- a/src/main/java/org/rumbledb/runtime/functions/strings/UpperCaseFunctionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/functions/strings/UpperCaseFunctionIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -36,10 +35,9 @@ public class UpperCaseFunctionIterator extends AtMostOneItemLocalRuntimeIterator
public UpperCaseFunctionIterator(
List arguments,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(arguments, executionMode, iteratorMetadata);
+ super(arguments, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/logics/AndOperationIterator.java b/src/main/java/org/rumbledb/runtime/logics/AndOperationIterator.java
index 7f54928e7..c50d9663b 100644
--- a/src/main/java/org/rumbledb/runtime/logics/AndOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/logics/AndOperationIterator.java
@@ -24,8 +24,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -41,10 +40,9 @@ public class AndOperationIterator extends AtMostOneItemLocalRuntimeIterator {
public AndOperationIterator(
RuntimeIterator leftIterator,
RuntimeIterator rightIterator,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Arrays.asList(leftIterator, rightIterator), executionMode, iteratorMetadata);
+ super(Arrays.asList(leftIterator, rightIterator), staticContext);
this.leftIterator = leftIterator;
this.rightIterator = rightIterator;
}
diff --git a/src/main/java/org/rumbledb/runtime/logics/NotOperationIterator.java b/src/main/java/org/rumbledb/runtime/logics/NotOperationIterator.java
index 5792f9f68..4fff1fefc 100644
--- a/src/main/java/org/rumbledb/runtime/logics/NotOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/logics/NotOperationIterator.java
@@ -24,8 +24,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -39,10 +38,9 @@ public class NotOperationIterator extends AtMostOneItemLocalRuntimeIterator {
public NotOperationIterator(
RuntimeIterator child,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Collections.singletonList(child), executionMode, iteratorMetadata);
+ super(Collections.singletonList(child), staticContext);
this.child = child;
}
diff --git a/src/main/java/org/rumbledb/runtime/logics/OrOperationIterator.java b/src/main/java/org/rumbledb/runtime/logics/OrOperationIterator.java
index 5f20ae5ee..08db3868e 100644
--- a/src/main/java/org/rumbledb/runtime/logics/OrOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/logics/OrOperationIterator.java
@@ -24,8 +24,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -42,10 +41,9 @@ public class OrOperationIterator extends AtMostOneItemLocalRuntimeIterator {
public OrOperationIterator(
RuntimeIterator leftIterator,
RuntimeIterator rightIterator,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Arrays.asList(leftIterator, rightIterator), executionMode, iteratorMetadata);
+ super(Arrays.asList(leftIterator, rightIterator), staticContext);
this.leftIterator = leftIterator;
this.rightIterator = rightIterator;
}
diff --git a/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java b/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java
index acd381a28..b4bfd4578 100644
--- a/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java
+++ b/src/main/java/org/rumbledb/runtime/misc/ComparisonIterator.java
@@ -25,13 +25,13 @@
import org.joda.time.Period;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.MoreThanOneItemException;
import org.rumbledb.exceptions.NonAtomicKeyException;
import org.rumbledb.exceptions.OurBadException;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.comparison.ComparisonExpression;
import org.rumbledb.expressions.comparison.ComparisonExpression.ComparisonOperator;
import org.rumbledb.items.ItemFactory;
@@ -62,10 +62,9 @@ public ComparisonIterator(
RuntimeIterator leftIterator,
RuntimeIterator rightIterator,
ComparisonExpression.ComparisonOperator comparisonOperator,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Arrays.asList(leftIterator, rightIterator), executionMode, iteratorMetadata);
+ super(Arrays.asList(leftIterator, rightIterator), staticContext);
this.leftIterator = leftIterator;
this.rightIterator = rightIterator;
this.comparisonOperator = comparisonOperator;
diff --git a/src/main/java/org/rumbledb/runtime/misc/RangeOperationIterator.java b/src/main/java/org/rumbledb/runtime/misc/RangeOperationIterator.java
index 698962b77..7127e0308 100644
--- a/src/main/java/org/rumbledb/runtime/misc/RangeOperationIterator.java
+++ b/src/main/java/org/rumbledb/runtime/misc/RangeOperationIterator.java
@@ -28,11 +28,10 @@
import org.apache.spark.api.java.JavaRDD;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.MoreThanOneItemException;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
@@ -56,10 +55,9 @@ public class RangeOperationIterator extends HybridRuntimeIterator {
public RangeOperationIterator(
RuntimeIterator leftIterator,
RuntimeIterator rightiterator,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Arrays.asList(leftIterator, rightiterator), executionMode, iteratorMetadata);
+ super(Arrays.asList(leftIterator, rightiterator), staticContext);
this.leftIterator = leftIterator;
this.rightIterator = rightiterator;
}
diff --git a/src/main/java/org/rumbledb/runtime/misc/StringConcatIterator.java b/src/main/java/org/rumbledb/runtime/misc/StringConcatIterator.java
index 6f249b684..254dd1abb 100644
--- a/src/main/java/org/rumbledb/runtime/misc/StringConcatIterator.java
+++ b/src/main/java/org/rumbledb/runtime/misc/StringConcatIterator.java
@@ -24,10 +24,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.MoreThanOneItemException;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -41,10 +40,9 @@ public class StringConcatIterator extends AtMostOneItemLocalRuntimeIterator {
public StringConcatIterator(
RuntimeIterator leftIterator,
RuntimeIterator rightIterator,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Arrays.asList(leftIterator, rightIterator), executionMode, iteratorMetadata);
+ super(Arrays.asList(leftIterator, rightIterator), staticContext);
this.leftIterator = leftIterator;
this.rightIterator = rightIterator;
}
diff --git a/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java b/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java
index c4e0d6aa7..9e2c98581 100644
--- a/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java
+++ b/src/main/java/org/rumbledb/runtime/navigation/ArrayLookupIterator.java
@@ -28,8 +28,8 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.*;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -55,10 +55,9 @@ public class ArrayLookupIterator extends HybridRuntimeIterator {
public ArrayLookupIterator(
RuntimeIterator array,
RuntimeIterator iterator,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Arrays.asList(array, iterator), executionMode, iteratorMetadata);
+ super(Arrays.asList(array, iterator), staticContext);
this.iterator = array;
}
diff --git a/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java b/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java
index f9dc9e1c6..8e6efdc87 100644
--- a/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java
+++ b/src/main/java/org/rumbledb/runtime/navigation/ArrayUnboxingIterator.java
@@ -25,9 +25,8 @@
import org.apache.spark.sql.types.ArrayType;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.flowr.FLWOR_CLAUSES;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
@@ -53,10 +52,9 @@ public class ArrayUnboxingIterator extends HybridRuntimeIterator {
public ArrayUnboxingIterator(
RuntimeIterator arrayIterator,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Arrays.asList(arrayIterator), executionMode, iteratorMetadata);
+ super(Arrays.asList(arrayIterator), staticContext);
this.iterator = arrayIterator;
}
diff --git a/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java b/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java
index d15afd998..9e24e51e1 100644
--- a/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java
+++ b/src/main/java/org/rumbledb/runtime/navigation/ObjectLookupIterator.java
@@ -28,9 +28,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.errorcodes.ErrorCode;
import org.rumbledb.exceptions.*;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.flowr.FLWOR_CLAUSES;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.items.structured.JSoundDataFrame;
@@ -65,10 +65,9 @@ public class ObjectLookupIterator extends HybridRuntimeIterator {
public ObjectLookupIterator(
RuntimeIterator object,
RuntimeIterator lookupIterator,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Arrays.asList(object, lookupIterator), executionMode, iteratorMetadata);
+ super(Arrays.asList(object, lookupIterator), staticContext);
this.iterator = object;
}
diff --git a/src/main/java/org/rumbledb/runtime/navigation/PredicateIterator.java b/src/main/java/org/rumbledb/runtime/navigation/PredicateIterator.java
index 343faaf87..bbe5e0491 100644
--- a/src/main/java/org/rumbledb/runtime/navigation/PredicateIterator.java
+++ b/src/main/java/org/rumbledb/runtime/navigation/PredicateIterator.java
@@ -28,10 +28,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.OurBadException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.expressions.flowr.FLWOR_CLAUSES;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
@@ -69,10 +68,9 @@ public class PredicateIterator extends HybridRuntimeIterator {
public PredicateIterator(
RuntimeIterator sequence,
RuntimeIterator filterExpression,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Arrays.asList(sequence, filterExpression), executionMode, iteratorMetadata);
+ super(Arrays.asList(sequence, filterExpression), staticContext);
this.iterator = sequence;
this.filter = filterExpression;
this.filterDynamicContext = null;
diff --git a/src/main/java/org/rumbledb/runtime/navigation/SequenceLookupIterator.java b/src/main/java/org/rumbledb/runtime/navigation/SequenceLookupIterator.java
index 8f361664e..7172eda4f 100644
--- a/src/main/java/org/rumbledb/runtime/navigation/SequenceLookupIterator.java
+++ b/src/main/java/org/rumbledb/runtime/navigation/SequenceLookupIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
import java.util.ArrayList;
@@ -39,10 +38,9 @@ public class SequenceLookupIterator extends AtMostOneItemLocalRuntimeIterator {
public SequenceLookupIterator(
RuntimeIterator sequence,
int position,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(Arrays.asList(sequence), executionMode, iteratorMetadata);
+ super(Arrays.asList(sequence), staticContext);
this.iterator = sequence;
this.position = position;
}
diff --git a/src/main/java/org/rumbledb/runtime/primary/ArrayRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/primary/ArrayRuntimeIterator.java
index 130c5b5be..36b2d8b91 100644
--- a/src/main/java/org/rumbledb/runtime/primary/ArrayRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/ArrayRuntimeIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -37,10 +36,9 @@ public class ArrayRuntimeIterator extends AtMostOneItemLocalRuntimeIterator {
public ArrayRuntimeIterator(
RuntimeIterator arrayItems,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(null, executionMode, iteratorMetadata);
+ super(null, staticContext);
if (arrayItems != null) {
this.children.add(arrayItems);
}
diff --git a/src/main/java/org/rumbledb/runtime/primary/BooleanRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/primary/BooleanRuntimeIterator.java
index 531f232ce..e60eac2b6 100644
--- a/src/main/java/org/rumbledb/runtime/primary/BooleanRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/BooleanRuntimeIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
@@ -32,8 +31,8 @@ public class BooleanRuntimeIterator extends AtMostOneItemLocalRuntimeIterator {
private static final long serialVersionUID = 1L;
private Item item;
- public BooleanRuntimeIterator(boolean value, ExecutionMode executionMode, ExceptionMetadata iteratorMetadata) {
- super(null, executionMode, iteratorMetadata);
+ public BooleanRuntimeIterator(boolean value, RuntimeStaticContext staticContext) {
+ super(null, staticContext);
this.item = ItemFactory.getInstance().createBooleanItem(value);
}
diff --git a/src/main/java/org/rumbledb/runtime/primary/ContextExpressionIterator.java b/src/main/java/org/rumbledb/runtime/primary/ContextExpressionIterator.java
index 9422f6a88..d0214264e 100644
--- a/src/main/java/org/rumbledb/runtime/primary/ContextExpressionIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/ContextExpressionIterator.java
@@ -26,8 +26,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.flwor.FlworDataFrameUtils;
import org.rumbledb.runtime.flwor.NativeClauseContext;
@@ -45,8 +44,8 @@ public class ContextExpressionIterator extends AtMostOneItemLocalRuntimeIterator
private static final long serialVersionUID = 1L;
- public ContextExpressionIterator(ExecutionMode executionMode, ExceptionMetadata iteratorMetadata) {
- super(null, executionMode, iteratorMetadata);
+ public ContextExpressionIterator(RuntimeStaticContext staticContext) {
+ super(null, staticContext);
}
@Override
diff --git a/src/main/java/org/rumbledb/runtime/primary/DecimalRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/primary/DecimalRuntimeIterator.java
index bca8ad702..5f4454bde 100644
--- a/src/main/java/org/rumbledb/runtime/primary/DecimalRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/DecimalRuntimeIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.SequenceType;
@@ -36,8 +35,8 @@ public class DecimalRuntimeIterator extends AtMostOneItemLocalRuntimeIterator {
private static final long serialVersionUID = 1L;
private Item item;
- public DecimalRuntimeIterator(BigDecimal value, ExecutionMode executionMode, ExceptionMetadata iteratorMetadata) {
- super(null, executionMode, iteratorMetadata);
+ public DecimalRuntimeIterator(BigDecimal value, RuntimeStaticContext staticContext) {
+ super(null, staticContext);
this.item = ItemFactory.getInstance().createDecimalItem(value);
}
diff --git a/src/main/java/org/rumbledb/runtime/primary/DoubleRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/primary/DoubleRuntimeIterator.java
index 1dbbaaf84..d1600fb4c 100644
--- a/src/main/java/org/rumbledb/runtime/primary/DoubleRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/DoubleRuntimeIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.SequenceType;
@@ -35,8 +34,8 @@ public class DoubleRuntimeIterator extends AtMostOneItemLocalRuntimeIterator {
private static final long serialVersionUID = 1L;
private Item item;
- public DoubleRuntimeIterator(Double value, ExecutionMode executionMode, ExceptionMetadata iteratorMetadata) {
- super(null, executionMode, iteratorMetadata);
+ public DoubleRuntimeIterator(Double value, RuntimeStaticContext staticContext) {
+ super(null, staticContext);
this.item = ItemFactory.getInstance().createDoubleItem(value);
}
diff --git a/src/main/java/org/rumbledb/runtime/primary/IntegerRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/primary/IntegerRuntimeIterator.java
index 7dfcaccf9..9c96c48fe 100644
--- a/src/main/java/org/rumbledb/runtime/primary/IntegerRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/IntegerRuntimeIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.flwor.NativeClauseContext;
import org.rumbledb.types.SequenceType;
@@ -37,10 +36,9 @@ public class IntegerRuntimeIterator extends AtMostOneItemLocalRuntimeIterator {
public IntegerRuntimeIterator(
String lexicalValue,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(null, executionMode, iteratorMetadata);
+ super(null, staticContext);
this.item = ItemFactory.getInstance().createIntegerItem(lexicalValue);
}
diff --git a/src/main/java/org/rumbledb/runtime/primary/NullRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/primary/NullRuntimeIterator.java
index 5b5e8dc6b..f3bc0908a 100644
--- a/src/main/java/org/rumbledb/runtime/primary/NullRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/NullRuntimeIterator.java
@@ -22,8 +22,7 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
@@ -33,8 +32,8 @@ public class NullRuntimeIterator extends AtMostOneItemLocalRuntimeIterator {
private static final long serialVersionUID = 1L;
private Item item;
- public NullRuntimeIterator(ExecutionMode executionMode, ExceptionMetadata iteratorMetadata) {
- super(null, executionMode, iteratorMetadata);
+ public NullRuntimeIterator(RuntimeStaticContext staticContext) {
+ super(null, staticContext);
this.item = ItemFactory.getInstance().createNullItem();
}
diff --git a/src/main/java/org/rumbledb/runtime/primary/ObjectConstructorRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/primary/ObjectConstructorRuntimeIterator.java
index 57f142999..4c871ea86 100644
--- a/src/main/java/org/rumbledb/runtime/primary/ObjectConstructorRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/ObjectConstructorRuntimeIterator.java
@@ -22,10 +22,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.exceptions.IteratorFlowException;
import org.rumbledb.exceptions.UnexpectedTypeException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.items.ObjectItem;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
@@ -45,10 +44,9 @@ public class ObjectConstructorRuntimeIterator extends AtMostOneItemLocalRuntimeI
public ObjectConstructorRuntimeIterator(
List keys,
List values,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(keys, executionMode, iteratorMetadata);
+ super(keys, staticContext);
this.children.addAll(values);
this.keys = keys;
this.values = values;
@@ -56,10 +54,9 @@ public ObjectConstructorRuntimeIterator(
public ObjectConstructorRuntimeIterator(
List childExpressions,
- ExecutionMode executionMode,
- ExceptionMetadata iteratorMetadata
+ RuntimeStaticContext staticContext
) {
- super(null, executionMode, iteratorMetadata);
+ super(null, staticContext);
this.children.addAll(childExpressions);
this.isMergedObject = true;
}
diff --git a/src/main/java/org/rumbledb/runtime/primary/StringRuntimeIterator.java b/src/main/java/org/rumbledb/runtime/primary/StringRuntimeIterator.java
index 821fae8f7..60564d175 100644
--- a/src/main/java/org/rumbledb/runtime/primary/StringRuntimeIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/StringRuntimeIterator.java
@@ -23,8 +23,7 @@
import org.apache.commons.text.StringEscapeUtils;
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
-import org.rumbledb.exceptions.ExceptionMetadata;
-import org.rumbledb.expressions.ExecutionMode;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.items.ItemFactory;
import org.rumbledb.runtime.AtMostOneItemLocalRuntimeIterator;
import org.rumbledb.runtime.flwor.NativeClauseContext;
@@ -35,8 +34,8 @@ public class StringRuntimeIterator extends AtMostOneItemLocalRuntimeIterator {
private static final long serialVersionUID = 1L;
private Item item;
- public StringRuntimeIterator(String value, ExecutionMode executionMode, ExceptionMetadata iteratorMetadata) {
- super(null, executionMode, iteratorMetadata);
+ public StringRuntimeIterator(String value, RuntimeStaticContext staticContext) {
+ super(null, staticContext);
this.item = ItemFactory.getInstance().createStringItem(StringEscapeUtils.unescapeJson(value));
}
diff --git a/src/main/java/org/rumbledb/runtime/primary/VariableReferenceIterator.java b/src/main/java/org/rumbledb/runtime/primary/VariableReferenceIterator.java
index ceb41a17e..4abd9b856 100644
--- a/src/main/java/org/rumbledb/runtime/primary/VariableReferenceIterator.java
+++ b/src/main/java/org/rumbledb/runtime/primary/VariableReferenceIterator.java
@@ -27,10 +27,9 @@
import org.rumbledb.api.Item;
import org.rumbledb.context.DynamicContext;
import org.rumbledb.context.Name;
+import org.rumbledb.context.RuntimeStaticContext;
import org.rumbledb.context.VariableValues;
-import org.rumbledb.exceptions.ExceptionMetadata;
import org.rumbledb.exceptions.IteratorFlowException;
-import org.rumbledb.expressions.ExecutionMode;
import org.rumbledb.items.structured.JSoundDataFrame;
import org.rumbledb.runtime.HybridRuntimeIterator;
import org.rumbledb.runtime.RuntimeIterator;
@@ -49,20 +48,16 @@ public class VariableReferenceIterator extends HybridRuntimeIterator {
private static final long serialVersionUID = 1L;
- private SequenceType sequence;
private Name variableName;
private List