summaryrefslogtreecommitdiff
path: root/src/mongo
diff options
context:
space:
mode:
authorGeorge Wangensteen <george.wangensteen@mongodb.com>2020-09-10 21:05:01 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-09-23 20:01:33 +0000
commit348db4a43b912824154dfe03e7b9559d5c464b7c (patch)
treea17c80548c5c53712a1051863e72f300294bd33e /src/mongo
parent6e8989d533886a774700689b46b90542b569c5eb (diff)
downloadmongo-348db4a43b912824154dfe03e7b9559d5c464b7c.tar.gz
SERVER-48850 Implement element and \$comment operators in CST
Diffstat (limited to 'src/mongo')
-rw-r--r--src/mongo/db/cst/bson_lexer.cpp2
-rw-r--r--src/mongo/db/cst/c_node_validation.cpp58
-rw-r--r--src/mongo/db/cst/c_node_validation.h12
-rwxr-xr-xsrc/mongo/db/cst/cst_match_test.cpp130
-rwxr-xr-xsrc/mongo/db/cst/cst_match_translation.cpp82
-rwxr-xr-xsrc/mongo/db/cst/cst_match_translation_test.cpp114
-rw-r--r--src/mongo/db/cst/grammar.yy67
-rw-r--r--src/mongo/db/cst/key_fieldname.h2
-rw-r--r--src/mongo/db/cst/parser_gen.cpp4376
-rw-r--r--src/mongo/db/cst/parser_gen.hpp1042
10 files changed, 3284 insertions, 2601 deletions
diff --git a/src/mongo/db/cst/bson_lexer.cpp b/src/mongo/db/cst/bson_lexer.cpp
index 649db9dd7d1..be0f7bd6ba2 100644
--- a/src/mongo/db/cst/bson_lexer.cpp
+++ b/src/mongo/db/cst/bson_lexer.cpp
@@ -149,6 +149,8 @@ const StringMap<ParserGen::token_type> reservedKeyFieldnameLookup = {
{"$type", ParserGen::token::TYPE},
{"chars", ParserGen::token::ARG_CHARS},
{"date", ParserGen::token::ARG_DATE},
+ {"$comment", ParserGen::token::COMMENT},
+ {"$exists", ParserGen::token::EXISTS},
{"dateString", ParserGen::token::ARG_DATE_STRING},
{"find", ParserGen::token::ARG_FIND},
{"format", ParserGen::token::ARG_FORMAT},
diff --git a/src/mongo/db/cst/c_node_validation.cpp b/src/mongo/db/cst/c_node_validation.cpp
index a6343b22d56..48fb1d60fc6 100644
--- a/src/mongo/db/cst/c_node_validation.cpp
+++ b/src/mongo/db/cst/c_node_validation.cpp
@@ -34,8 +34,10 @@
#include "mongo/base/status.h"
#include "mongo/bson/bson_depth.h"
+#include "mongo/db/cst/c_node.h"
#include "mongo/db/cst/c_node_validation.h"
#include "mongo/db/cst/path.h"
+#include "mongo/db/matcher/matcher_type_set.h"
#include "mongo/db/pipeline/field_path.h"
#include "mongo/db/pipeline/variable_validation.h"
#include "mongo/db/query/util/make_data_structure.h"
@@ -252,6 +254,50 @@ Status addPathsFromTreeToSet(const CNode::ObjectChildren& children,
return Status::OK();
}
+template <typename T>
+Status validateNumericType(T num) {
+ auto el = BSON("" << num).firstElement();
+ auto valueAsInt = el.parseIntegerElementToInt();
+ if (!valueAsInt.isOK() || valueAsInt.getValue() == 0 ||
+ !isValidBSONType(valueAsInt.getValue())) {
+ return Status{ErrorCodes::FailedToParse,
+ str::stream() << "invalid numerical type code: " << el.number()
+ << " provided as argument"};
+ }
+ return Status::OK();
+}
+
+Status validateSingleType(const CNode& element) {
+ return stdx::visit(
+ visit_helper::Overloaded{
+ [&](const UserDouble& dbl) { return validateNumericType(dbl); },
+ [&](const UserInt& num) { return validateNumericType(num); },
+ [&](const UserLong& lng) { return validateNumericType(lng); },
+ [&](const UserDecimal& dc) { return validateNumericType(dc); },
+ [&](const UserString& st) {
+ if (st == MatcherTypeSet::kMatchesAllNumbersAlias) {
+ return Status::OK();
+ }
+ auto optValue = findBSONTypeAlias(st);
+ if (!optValue) {
+ // The string "missing" can be returned from the $type agg expression, but is
+ // not valid for use in the $type match expression predicate. Return a special
+ // error message for this case.
+ if (st == StringData{typeName(BSONType::EOO)}) {
+ return Status{
+ ErrorCodes::FailedToParse,
+ "unknown type name alias 'missing' (to query for "
+ "non-existence of a field, use {$exists:false}) provided as argument"};
+ }
+ return Status{ErrorCodes::FailedToParse,
+ str::stream() << "unknown type name alias: " << st
+ << " provided as argument"};
+ }
+ return Status::OK();
+ },
+ [&](auto &&) -> Status { MONGO_UNREACHABLE; }},
+ element.payload);
+}
} // namespace
StatusWith<IsInclusion> validateProjectionAsInclusionOrExclusion(const CNode& projects) {
@@ -326,4 +372,16 @@ Status validateSortPath(const std::vector<std::string>& pathComponents) {
return Status::OK();
}
+Status validateTypeOperatorArgument(const CNode& types) {
+ // If the CNode is an array, we need to validate all of the types within it.
+ if (auto&& children = stdx::get_if<CNode::ArrayChildren>(&types.payload)) {
+ for (auto&& child : (*children)) {
+ if (auto status = validateSingleType(child); !status.isOK()) {
+ return status;
+ }
+ }
+ return Status::OK();
+ }
+ return validateSingleType(types);
+}
} // namespace mongo::c_node_validation
diff --git a/src/mongo/db/cst/c_node_validation.h b/src/mongo/db/cst/c_node_validation.h
index 206a5ad69c9..7aa3dec7ccf 100644
--- a/src/mongo/db/cst/c_node_validation.h
+++ b/src/mongo/db/cst/c_node_validation.h
@@ -36,6 +36,7 @@
#include "mongo/base/status_with.h"
#include "mongo/db/cst/c_node.h"
+#include "mongo/db/matcher/matcher_type_set.h"
/**
* Functions which perform additional validation beyond what a context free grammar can handle.
@@ -90,6 +91,15 @@ StatusWith<IsPositional> validateProjectionPathAsNormalOrPositional(
* * Forbids dollar characters.
* * Forbids null bytes.
*/
-Status validateSortPath(const std::vector<std::string>& pathComponents);
+Status validateSortPath(const std::vector<std::string>& pathComponents);
+/**
+ * Given a CNode holding the argument given to a parsed $type operator, this function returns
+ * Status::OK if the argument is either a valid number representing a BSON type, a valid string
+ * representing a BSON type, or an array whose members are all valid number-or-string BSON type
+ * specifiers. If the argument does not meet these conditions, than it is not a valid argument to
+ * $type, and this function returns an error status along with an error message detailing why the
+ * argument is invalid.
+ */
+Status validateTypeOperatorArgument(const CNode& argument);
} // namespace mongo::c_node_validation
diff --git a/src/mongo/db/cst/cst_match_test.cpp b/src/mongo/db/cst/cst_match_test.cpp
index 551b14818c5..9756cdbb464 100755
--- a/src/mongo/db/cst/cst_match_test.cpp
+++ b/src/mongo/db/cst/cst_match_test.cpp
@@ -147,6 +147,96 @@ TEST(CstMatchTest, ParsesNotWithChildExpression) {
"\"<UserRegex /^a/>\" } } }");
}
+TEST(CstMatchTest, ParsesExistsWithSimpleValueChild) {
+ CNode output;
+ auto input = fromjson("{filter: {a: {$exists: true}}}");
+ BSONLexer lexer(input["filter"].embeddedObject(), ParserGen::token::START_MATCH);
+ auto parseTree = ParserGen(lexer, &output);
+ ASSERT_EQ(0, parseTree.parse());
+ ASSERT_EQ(output.toBson().toString(),
+ "{ <UserFieldname a>: { <KeyFieldname existsExpr>: \"<UserBoolean true>\" } }");
+}
+
+TEST(CstMatchTest, ParsesExistsWithCompoundValueChild) {
+ CNode output;
+ auto input = fromjson("{filter: {a: {$exists: [\"hello\", 5, true, \"goodbye\"]}}}");
+ BSONLexer lexer(input["filter"].embeddedObject(), ParserGen::token::START_MATCH);
+ auto parseTree = ParserGen(lexer, &output);
+ ASSERT_EQ(0, parseTree.parse());
+ ASSERT_EQ(output.toBson().toString(),
+ "{ <UserFieldname a>: { <KeyFieldname existsExpr>: [ \"<UserString hello>\", "
+ "\"<UserInt 5>\", "
+ "\"<UserBoolean true>\", \"<UserString goodbye>\" ] } }");
+}
+
+TEST(CstMatchTest, ParsesExistsWithObjectChild) {
+ CNode output;
+ auto input = fromjson("{filter: {a: {$exists: {a: false }}}}");
+ BSONLexer lexer(input["filter"].embeddedObject(), ParserGen::token::START_MATCH);
+ auto parseTree = ParserGen(lexer, &output);
+ ASSERT_EQ(0, parseTree.parse());
+ ASSERT_EQ(output.toBson().toString(),
+ "{ <UserFieldname a>: { <KeyFieldname existsExpr>: { <UserFieldname a>: "
+ "\"<UserBoolean false>\" } } }");
+}
+
+TEST(CstMatchTest, ParsesTypeSingleArgument) {
+ // Check that $type parses with a string argument - a BSON type alias
+ {
+ CNode output;
+ auto input = fromjson("{filter: {a: {$type: \"bool\" }}}");
+ BSONLexer lexer(input["filter"].embeddedObject(), ParserGen::token::START_MATCH);
+ auto parseTree = ParserGen(lexer, &output);
+ ASSERT_EQ(0, parseTree.parse());
+ ASSERT_EQ(output.toBson().toString(),
+ "{ <UserFieldname a>: { <KeyFieldname type>: \"<UserString bool>\" } }");
+ }
+ // Check that $type parses a number (corresponding to a BSON type)
+ {
+ CNode output;
+ auto input = fromjson("{filter: {a: {$type: 1}}}");
+ BSONLexer lexer(input["filter"].embeddedObject(), ParserGen::token::START_MATCH);
+ auto parseTree = ParserGen(lexer, &output);
+ ASSERT_EQ(0, parseTree.parse());
+ ASSERT_EQ(output.toBson().toString(),
+ "{ <UserFieldname a>: { <KeyFieldname type>: \"<UserInt 1>\" } }");
+ }
+}
+
+TEST(CstMatchTest, ParsersTypeArrayArgument) {
+ CNode output;
+ auto input = fromjson("{filter: {a: {$type: [\"number\", 5, 127, \"objectId\"]}}}");
+ BSONLexer lexer(input["filter"].embeddedObject(), ParserGen::token::START_MATCH);
+ auto parseTree = ParserGen(lexer, &output);
+ ASSERT_EQ(0, parseTree.parse());
+ ASSERT_EQ(output.toBson().toString(),
+ "{ <UserFieldname a>: { <KeyFieldname type>: [ \"<UserString number>\", \"<UserInt "
+ "5>\", \"<UserInt 127>\", "
+ "\"<UserString objectId>\" ] } }");
+}
+
+TEST(CstMatchTest, ParsesCommentWithSimpleValueChild) {
+ CNode output;
+ auto input = fromjson("{filter: {a: 1, $comment: true}}");
+ BSONLexer lexer(input["filter"].embeddedObject(), ParserGen::token::START_MATCH);
+ auto parseTree = ParserGen(lexer, &output);
+ ASSERT_EQ(0, parseTree.parse());
+ ASSERT_EQ(output.toBson().toString(),
+ "{ <UserFieldname a>: \"<UserInt 1>\", <KeyFieldname commentExpr>: \"<UserBoolean "
+ "true>\" }");
+}
+
+TEST(CstMatchTest, ParsesCommentWithCompoundValueChild) {
+ CNode output;
+ auto input = fromjson("{filter: {a: 1, $comment: [\"hi\", 5]}}");
+ BSONLexer lexer(input["filter"].embeddedObject(), ParserGen::token::START_MATCH);
+ auto parseTree = ParserGen(lexer, &output);
+ ASSERT_EQ(0, parseTree.parse());
+ ASSERT_EQ(output.toBson().toString(),
+ "{ <UserFieldname a>: \"<UserInt 1>\", <KeyFieldname commentExpr>: [ \"<UserString "
+ "hi>\", \"<UserInt 5>\" ] }");
+}
+
TEST(CstMatchTest, FailsToParseNotWithNonObject) {
CNode output;
auto input = fromjson("{filter: {a: {$not: 1}}}");
@@ -162,22 +252,16 @@ TEST(CstMatchTest, FailsToParseUnknownOperatorWithinNotExpression) {
CNode output;
auto input = fromjson("{filter: {a: {$not: {$and: [{a: 1}]}}}}");
BSONLexer lexer(input["filter"].embeddedObject(), ParserGen::token::START_MATCH);
- ASSERT_THROWS_CODE_AND_WHAT(ParserGen(lexer, nullptr).parse(),
- AssertionException,
- ErrorCodes::FailedToParse,
- "syntax error, unexpected AND, expecting NOT at "
- "element '$and' within '$not' of input filter");
+ ASSERT_THROWS_CODE(
+ ParserGen(lexer, nullptr).parse(), AssertionException, ErrorCodes::FailedToParse);
}
TEST(CstMatchTest, FailsToParseNotWithEmptyObject) {
CNode output;
auto input = fromjson("{filter: {a: {$not: {}}}}");
BSONLexer lexer(input["filter"].embeddedObject(), ParserGen::token::START_MATCH);
- ASSERT_THROWS_CODE_AND_WHAT(ParserGen(lexer, nullptr).parse(),
- AssertionException,
- ErrorCodes::FailedToParse,
- "syntax error, unexpected end of object, expecting NOT at element "
- "'end object' within '$not' of input filter");
+ ASSERT_THROWS_CODE(
+ ParserGen(lexer, nullptr).parse(), AssertionException, ErrorCodes::FailedToParse);
}
TEST(CstMatchTest, FailsToParseDollarPrefixedPredicates) {
@@ -251,5 +335,31 @@ TEST(CstMatchTest, FailsToParseLogicalKeywordWithEmptyArray) {
"element 'end array' within '$nor' of input filter");
}
+TEST(CstMatchTest, FailsToParseTypeWithBadSpeifier) {
+ {
+ auto input = fromjson("{filter: {$type: 0}}"); // Shouldn't parse if the number given isn't
+ // a valid BSON type specifier.
+ BSONLexer lexer(input["filter"].embeddedObject(), ParserGen::token::START_MATCH);
+ ASSERT_THROWS_CODE(
+ ParserGen(lexer, nullptr).parse(), AssertionException, ErrorCodes::FailedToParse);
+ }
+ {
+ auto input =
+ fromjson("{filter: {$type: \"notABsonType\"}}"); // Shouldn't parse if the string given
+ // isn't a valid BSON type alias.
+ BSONLexer lexer(input["filter"].embeddedObject(), ParserGen::token::START_MATCH);
+ ASSERT_THROWS_CODE(
+ ParserGen(lexer, nullptr).parse(), AssertionException, ErrorCodes::FailedToParse);
+ }
+ {
+ auto input = fromjson(
+ "{filter: {$type: [1, \"number\", \"notABsonType\"]}}"); // Shouldn't parse if any
+ // argument isn't a valid BSON
+ // type alias.
+ BSONLexer lexer(input["filter"].embeddedObject(), ParserGen::token::START_MATCH);
+ ASSERT_THROWS_CODE(
+ ParserGen(lexer, nullptr).parse(), AssertionException, ErrorCodes::FailedToParse);
+ }
+}
} // namespace
} // namespace mongo
diff --git a/src/mongo/db/cst/cst_match_translation.cpp b/src/mongo/db/cst/cst_match_translation.cpp
index f91907408c4..91fcf04eb49 100755
--- a/src/mongo/db/cst/cst_match_translation.cpp
+++ b/src/mongo/db/cst/cst_match_translation.cpp
@@ -40,6 +40,7 @@
#include "mongo/db/cst/key_fieldname.h"
#include "mongo/db/cst/key_value.h"
#include "mongo/db/matcher/expression_tree.h"
+#include "mongo/db/matcher/matcher_type_set.h"
#include "mongo/util/visit_helper.h"
namespace mongo::cst_match_translation {
@@ -80,6 +81,72 @@ std::unique_ptr<MatchExpression> translateNot(
return std::make_unique<NotMatchExpression>(std::move(root));
}
+std::unique_ptr<MatchExpression> translateExists(const CNode::Fieldname& fieldName,
+ const CNode& argument) {
+ auto root = std::make_unique<ExistsMatchExpression>(stdx::get<UserFieldname>(fieldName));
+ if (stdx::visit(
+ visit_helper::Overloaded{
+ [&](const UserLong& userLong) { return userLong != 0; },
+ [&](const UserDouble& userDbl) { return userDbl != 0; },
+ [&](const UserDecimal& userDc) { return userDc.isNotEqual(Decimal128(0)); },
+ [&](const UserInt& userInt) { return userInt != 0; },
+ [&](const UserBoolean& b) { return b; },
+ [&](const UserNull&) { return false; },
+ [&](const UserUndefined&) { return false; },
+ [&](auto&&) { return true; }},
+ argument.payload)) {
+ return root;
+ }
+ return std::make_unique<NotMatchExpression>(root.release());
+}
+
+MatcherTypeSet getMatcherTypeSet(const CNode& argument) {
+ MatcherTypeSet ts;
+ auto add_individual_to_type_set = [&](const CNode& a) {
+ return stdx::visit(
+ visit_helper::Overloaded{
+ [&](const UserLong& userLong) {
+ auto el = BSON("" << userLong).firstElement();
+ auto valueAsInt = el.parseIntegerElementToInt();
+ ts.bsonTypes.insert(static_cast<BSONType>(valueAsInt.getValue()));
+ },
+ [&](const UserDouble& userDbl) {
+ auto el = BSON("" << userDbl).firstElement();
+ auto valueAsInt = el.parseIntegerElementToInt();
+ ts.bsonTypes.insert(static_cast<BSONType>(valueAsInt.getValue()));
+ },
+ [&](const UserDecimal& userDc) {
+ auto el = BSON("" << userDc).firstElement();
+ auto valueAsInt = el.parseIntegerElementToInt();
+ ts.bsonTypes.insert(static_cast<BSONType>(valueAsInt.getValue()));
+ },
+ [&](const UserInt& userInt) {
+ auto el = BSON("" << userInt).firstElement();
+ auto valueAsInt = el.parseIntegerElementToInt();
+ ts.bsonTypes.insert(static_cast<BSONType>(valueAsInt.getValue()));
+ },
+ [&](const UserString& s) {
+ if (StringData{s} == MatcherTypeSet::kMatchesAllNumbersAlias) {
+ ts.allNumbers = true;
+ return;
+ }
+ auto optValue = findBSONTypeAlias(s);
+ invariant(optValue);
+ ts.bsonTypes.insert(*optValue);
+ },
+ [&](auto&&) { MONGO_UNREACHABLE; }},
+ a.payload);
+ };
+ if (auto children = stdx::get_if<CNode::ArrayChildren>(&argument.payload)) {
+ for (auto child : (*children)) {
+ add_individual_to_type_set(child);
+ }
+ } else {
+ add_individual_to_type_set(argument);
+ }
+ return ts;
+}
+
std::unique_ptr<MatchExpression> translatePathExpression(
const CNode::Fieldname& fieldName,
const CNode::ObjectChildren& object,
@@ -88,6 +155,11 @@ std::unique_ptr<MatchExpression> translatePathExpression(
switch (stdx::get<KeyFieldname>(op)) {
case KeyFieldname::notExpr:
return translateNot(fieldName, argument, expCtx);
+ case KeyFieldname::existsExpr:
+ return translateExists(fieldName, argument);
+ case KeyFieldname::type:
+ return std::make_unique<TypeMatchExpression>(stdx::get<UserFieldname>(fieldName),
+ getMatcherTypeSet(argument));
default:
MONGO_UNREACHABLE;
}
@@ -108,6 +180,9 @@ std::unique_ptr<MatchExpression> translateMatchPredicate(
return translateTreeExpr<OrMatchExpression>(cst.arrayChildren(), expCtx);
case KeyFieldname::norExpr:
return translateTreeExpr<NorMatchExpression>(cst.arrayChildren(), expCtx);
+ case KeyFieldname::commentExpr:
+ // comment expr is not added to the tree.
+ return nullptr;
default:
MONGO_UNREACHABLE;
}
@@ -140,7 +215,12 @@ std::unique_ptr<MatchExpression> translateMatchExpression(
const CNode& cst, const boost::intrusive_ptr<ExpressionContext>& expCtx) {
auto root = std::make_unique<AndMatchExpression>();
for (const auto& [fieldName, expr] : cst.objectChildren()) {
- root->add(translateMatchPredicate(fieldName, expr, expCtx).release());
+ // A nullptr for 'translatedExpression' indicates that the particular operator should not
+ // be added to 'root'. The $comment operator currently follows this convention.
+ if (auto translatedExpression = translateMatchPredicate(fieldName, expr, expCtx);
+ translatedExpression) {
+ root->add(translatedExpression.release());
+ }
}
return root;
}
diff --git a/src/mongo/db/cst/cst_match_translation_test.cpp b/src/mongo/db/cst/cst_match_translation_test.cpp
index 52cc8bac19a..63019eefb3c 100755
--- a/src/mongo/db/cst/cst_match_translation_test.cpp
+++ b/src/mongo/db/cst/cst_match_translation_test.cpp
@@ -177,5 +177,119 @@ TEST(CstMatchTranslationTest, TranslatesNestedLogicalTreeExpressions) {
}
}
+TEST(CstMatchTranslationTest, TranslatesExistsBool) {
+ {
+ auto input = fromjson("{filter: {a: {$exists: true}}}");
+ auto cst = parseMatchToCst(input);
+ auto match = cst_match_translation::translateMatchExpression(cst, getExpCtx());
+ ASSERT_EQ(match->serialize().toString(), "{ $and: [ { a: { $exists: true } } ] }");
+ }
+ {
+ auto input = fromjson("{filter: {a: {$exists: false}}}");
+ auto cst = parseMatchToCst(input);
+ auto match = cst_match_translation::translateMatchExpression(cst, getExpCtx());
+ ASSERT_EQ(match->serialize().toString(),
+ "{ $and: [ { a: { $not: { $exists: true } } } ] }");
+ }
+}
+
+TEST(CstMatchTranslationTest, TranslatesExistsNumeric) {
+ {
+ auto input = fromjson("{filter: {a: {$exists: 15.0}}}");
+ auto cst = parseMatchToCst(input);
+ auto match = cst_match_translation::translateMatchExpression(cst, getExpCtx());
+ ASSERT_EQ(match->serialize().toString(), "{ $and: [ { a: { $exists: true } } ] }");
+ }
+ {
+ auto input = fromjson("{filter: {a: {$exists: 0}}}");
+ auto cst = parseMatchToCst(input);
+ auto match = cst_match_translation::translateMatchExpression(cst, getExpCtx());
+ ASSERT_EQ(match->serialize().toString(),
+ "{ $and: [ { a: { $not: { $exists: true } } } ] }");
+ }
+}
+
+TEST(CstMatchTranslationTest, TranslatesExistsNullAndCompound) {
+ {
+ auto input = fromjson("{filter: {a: {$exists: null}}}");
+ auto cst = parseMatchToCst(input);
+ auto match = cst_match_translation::translateMatchExpression(cst, getExpCtx());
+ ASSERT_EQ(match->serialize().toString(),
+ "{ $and: [ { a: { $not: { $exists: true } } } ] }");
+ }
+ {
+ auto input = fromjson("{filter: {a: {$exists: [\"arbitrary stuff\", null]}}}");
+ auto cst = parseMatchToCst(input);
+ auto match = cst_match_translation::translateMatchExpression(cst, getExpCtx());
+ ASSERT_EQ(match->serialize().toString(), "{ $and: [ { a: { $exists: true } } ] }");
+ }
+ {
+ auto input = fromjson("{filter: {a: {$exists: {doesnt: \"matter\"}}}}");
+ auto cst = parseMatchToCst(input);
+ auto match = cst_match_translation::translateMatchExpression(cst, getExpCtx());
+ ASSERT_EQ(match->serialize().toString(), "{ $and: [ { a: { $exists: true } } ] }");
+ }
+}
+
+TEST(CstMatchTranslationTest, TranslatesType) {
+ {
+ auto input = fromjson("{filter: {a: {$type: 1}}}");
+ auto cst = parseMatchToCst(input);
+ auto match = cst_match_translation::translateMatchExpression(cst, getExpCtx());
+ ASSERT_EQ(match->serialize().toString(), "{ $and: [ { a: { $type: [ 1 ] } } ] }");
+ }
+ {
+ auto input = fromjson("{filter: {a: {$type: \"number\"}}}");
+ auto cst = parseMatchToCst(input);
+ auto match = cst_match_translation::translateMatchExpression(cst, getExpCtx());
+ ASSERT_EQ(match->serialize().toString(), "{ $and: [ { a: { $type: [ \"number\" ] } } ] }");
+ // The compound "number" alias is not translated; instead the allNumbers flag of the typeset
+ // used by the MatchExpression is set.
+ auto andExpr = dynamic_cast<AndMatchExpression*>(match.get());
+ ASSERT(andExpr);
+ ASSERT_EQ(1, andExpr->numChildren());
+ auto type_match = dynamic_cast<TypeMatchExpression*>(andExpr->getChild(0));
+ ASSERT(type_match);
+ ASSERT(type_match->typeSet().allNumbers);
+ }
+ {
+ auto input = fromjson("{filter: {a: {$type: [ \"number\", \"string\", 11]}}}");
+ auto cst = parseMatchToCst(input);
+ auto match = cst_match_translation::translateMatchExpression(cst, getExpCtx());
+ ASSERT_EQ(match->serialize().toString(),
+ "{ $and: [ { a: { $type: [ \"number\", 2, 11 ] } } ] }");
+ // Direct type aliases (like "string" --> BSONType 2) are translated into their numeric
+ // type.
+ auto andExpr = dynamic_cast<AndMatchExpression*>(match.get());
+ ASSERT(andExpr);
+ ASSERT_EQ(1, andExpr->numChildren());
+ auto type_match = dynamic_cast<TypeMatchExpression*>(andExpr->getChild(0));
+ ASSERT(type_match->typeSet().allNumbers);
+ }
+}
+
+TEST(CstMatchTranslationTest, TranslatesComment) {
+ {
+ auto input = fromjson("{filter: {a: 1, $comment: \"hello, world\"}}}");
+ auto cst = parseMatchToCst(input);
+ auto match = cst_match_translation::translateMatchExpression(cst, getExpCtx());
+ ASSERT_EQ(match->serialize().toString(), "{ $and: [ { a: { $eq: 1 } } ] }");
+ }
+ {
+ auto input = fromjson("{filter: {$comment: \"hello, world\"}}}");
+ auto cst = parseMatchToCst(input);
+ auto match = cst_match_translation::translateMatchExpression(cst, getExpCtx());
+ auto andExpr = dynamic_cast<AndMatchExpression*>(match.get());
+ ASSERT(andExpr);
+ ASSERT_EQ(0, andExpr->numChildren());
+ }
+ {
+ auto input = fromjson("{filter: {a: {$exists: true}, $comment: \"hello, world\"}}}");
+ auto cst = parseMatchToCst(input);
+ auto match = cst_match_translation::translateMatchExpression(cst, getExpCtx());
+ ASSERT_EQ(match->serialize().toString(), "{ $and: [ { a: { $exists: true } } ] }");
+ }
+}
+
} // namespace
} // namespace mongo
diff --git a/src/mongo/db/cst/grammar.yy b/src/mongo/db/cst/grammar.yy
index ab315802579..f99bb52bdc3 100644
--- a/src/mongo/db/cst/grammar.yy
+++ b/src/mongo/db/cst/grammar.yy
@@ -150,6 +150,7 @@
BOOL_FALSE "false"
BOOL_TRUE "true"
CEIL
+ COMMENT
CMP
CONCAT
CONST_EXPR
@@ -169,6 +170,7 @@
END_ARRAY "end of array"
END_OBJECT "end of object"
EQ
+ EXISTS
EXPONENT
FLOOR
GEO_NEAR_DISTANCE "geoNearDistance"
@@ -288,7 +290,7 @@
//
// Possible fieldnames.
-%nterm <CNode::Fieldname> aggregationProjectionFieldname projectionFieldname expressionFieldname
+%nterm <CNode::Fieldname> aggregationProjectionFieldname projectionFieldname expressionFieldname
%nterm <CNode::Fieldname> stageAsUserFieldname argAsUserFieldname argAsProjectionPath
%nterm <CNode::Fieldname> aggExprAsUserFieldname invariableUserFieldname sortFieldname
%nterm <CNode::Fieldname> idAsUserFieldname idAsProjectionPath valueFieldname predFieldname
@@ -300,6 +302,7 @@
%nterm <CNode> dbPointer javascript symbol javascriptWScope int timestamp long double decimal
%nterm <CNode> minKey maxKey value string aggregationFieldPath binary undefined objectId bool date
%nterm <CNode> null regex simpleValue compoundValue valueArray valueObject valueFields variable
+%nterm <CNode> typeArray typeValue
// Pipeline stages and related non-terminals.
%nterm <CNode> pipeline stageList stage inhibitOptimization unionWith skip limit project sample
@@ -330,7 +333,9 @@
// Match expressions.
%nterm <CNode> match predicates compoundMatchExprs predValue additionalExprs
%nterm <std::pair<CNode::Fieldname, CNode>> predicate logicalExpr operatorExpression notExpr
+%nterm <std::pair<CNode::Fieldname, CNode>> existsExpr typeExpr commentExpr
%nterm <CNode::Fieldname> logicalExprField
+%nterm <std::vector<CNode>> typeValues
// Sort related rules
%nterm <CNode> sortSpecs specList metaSort oneOrNegOne metaSortKeyword
@@ -631,9 +636,8 @@ predicates:
predicate: predFieldname predValue {
$$ = {$predFieldname, $predValue};
}
- | logicalExpr {
- $$ = $logicalExpr;
- }
+ | logicalExpr
+ | commentExpr
;
// TODO SERVER-48847: This rule assumes that object predicates always contain sub-expressions.
@@ -657,7 +661,58 @@ compoundMatchExprs:
;
// Rules for the operators which act on a path.
-operatorExpression: notExpr
+operatorExpression:
+ notExpr | existsExpr | typeExpr
+;
+
+existsExpr:
+ EXISTS value {
+ $$ = std::pair{KeyFieldname::existsExpr, $value};
+ }
+;
+
+typeArray:
+ START_ARRAY typeValues END_ARRAY {
+ $$ = CNode{$typeValues};
+ }
+;
+
+typeValues:
+ %empty { }
+ | typeValues[ts] typeValue {
+ $$ = $ts;
+ $$.emplace_back($typeValue);
+ }
+;
+
+typeValue:
+ num | string
+;
+
+typeExpr:
+ TYPE typeValue {
+ auto&& type = $typeValue;
+ if (auto status = c_node_validation::validateTypeOperatorArgument(type); !status.isOK()) {
+ // TODO SERVER-50498: error() on the offending literal rather than the TYPE token.
+ // This will require removing the offending literal indicators in the error strings provided by the validation function.
+ error(@1, status.reason());
+ }
+ $$ = std::pair{KeyFieldname::type, std::move(type)};
+ }
+ | TYPE typeArray {
+ auto&& types = $typeArray;
+ if (auto status = c_node_validation::validateTypeOperatorArgument(types); !status.isOK()) {
+ error(@1, status.reason());
+ }
+ $$ = std::pair{KeyFieldname::type, std::move(types)};
+ }
+;
+
+commentExpr:
+ COMMENT value {
+ $$ = std::pair{KeyFieldname::commentExpr, $value};
+ }
+;
notExpr:
NOT regex {
@@ -870,7 +925,7 @@ aggExprAsUserFieldname:
}
| TO_LONG {
$$ = UserFieldname{"$toLong"};
- }
+ }
| TO_OBJECT_ID {
$$ = UserFieldname{"$toObjectId"};
}
diff --git a/src/mongo/db/cst/key_fieldname.h b/src/mongo/db/cst/key_fieldname.h
index 8458038993b..1af55265749 100644
--- a/src/mongo/db/cst/key_fieldname.h
+++ b/src/mongo/db/cst/key_fieldname.h
@@ -48,6 +48,7 @@
ENUMIFY(atanh) \
ENUMIFY(ceil) \
ENUMIFY(charsArg) \
+ ENUMIFY(commentExpr) \
ENUMIFY(cmp) \
ENUMIFY(collArg) \
ENUMIFY(concat) \
@@ -62,6 +63,7 @@
ENUMIFY(degreesToRadians) \
ENUMIFY(divide) \
ENUMIFY(eq) \
+ ENUMIFY(existsExpr) \
ENUMIFY(exponent) \
ENUMIFY(findArg) \
ENUMIFY(floor) \
diff --git a/src/mongo/db/cst/parser_gen.cpp b/src/mongo/db/cst/parser_gen.cpp
index 31c6723f6b2..682e8a8d28a 100644
--- a/src/mongo/db/cst/parser_gen.cpp
+++ b/src/mongo/db/cst/parser_gen.cpp
@@ -39,7 +39,7 @@
// Unqualified %code blocks.
-#line 82 "src/mongo/db/cst/grammar.yy"
+#line 82 "grammar.yy"
#include <boost/algorithm/string.hpp>
#include <iterator>
@@ -65,7 +65,7 @@ void ParserGen::error(const ParserGen::location_type& loc, const std::string& ms
// mongo.
#define YYLLOC_DEFAULT(newPos, rhsPositions, nRhs)
-#line 73 "src/mongo/db/cst/parser_gen.cpp"
+#line 73 "parser_gen.cpp"
#ifndef YY_
@@ -156,9 +156,9 @@ void ParserGen::error(const ParserGen::location_type& loc, const std::string& ms
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
-#line 57 "src/mongo/db/cst/grammar.yy"
+#line 57 "grammar.yy"
namespace mongo {
-#line 166 "src/mongo/db/cst/parser_gen.cpp"
+#line 166 "parser_gen.cpp"
/// Build a parser object.
ParserGen::ParserGen(BSONLexer& lexer_yyarg, CNode* cst_yyarg)
@@ -260,6 +260,8 @@ ParserGen::stack_symbol_type::stack_symbol_type(YY_RVREF(stack_symbol_type) that
case symbol_kind::S_valueObject: // valueObject
case symbol_kind::S_valueFields: // valueFields
case symbol_kind::S_variable: // variable
+ case symbol_kind::S_typeArray: // typeArray
+ case symbol_kind::S_typeValue: // typeValue
case symbol_kind::S_pipeline: // pipeline
case symbol_kind::S_stageList: // stageList
case symbol_kind::S_stage: // stage
@@ -469,6 +471,9 @@ ParserGen::stack_symbol_type::stack_symbol_type(YY_RVREF(stack_symbol_type) that
case symbol_kind::S_logicalExpr: // logicalExpr
case symbol_kind::S_operatorExpression: // operatorExpression
case symbol_kind::S_notExpr: // notExpr
+ case symbol_kind::S_existsExpr: // existsExpr
+ case symbol_kind::S_typeExpr: // typeExpr
+ case symbol_kind::S_commentExpr: // commentExpr
case symbol_kind::S_sortSpec: // sortSpec
value.YY_MOVE_OR_COPY<std::pair<CNode::Fieldname, CNode>>(YY_MOVE(that.value));
break;
@@ -485,6 +490,7 @@ ParserGen::stack_symbol_type::stack_symbol_type(YY_RVREF(stack_symbol_type) that
case symbol_kind::S_expressions: // expressions
case symbol_kind::S_values: // values
case symbol_kind::S_exprZeroToTwo: // exprZeroToTwo
+ case symbol_kind::S_typeValues: // typeValues
value.YY_MOVE_OR_COPY<std::vector<CNode>>(YY_MOVE(that.value));
break;
@@ -556,6 +562,8 @@ ParserGen::stack_symbol_type::stack_symbol_type(state_type s, YY_MOVE_REF(symbol
case symbol_kind::S_valueObject: // valueObject
case symbol_kind::S_valueFields: // valueFields
case symbol_kind::S_variable: // variable
+ case symbol_kind::S_typeArray: // typeArray
+ case symbol_kind::S_typeValue: // typeValue
case symbol_kind::S_pipeline: // pipeline
case symbol_kind::S_stageList: // stageList
case symbol_kind::S_stage: // stage
@@ -765,6 +773,9 @@ ParserGen::stack_symbol_type::stack_symbol_type(state_type s, YY_MOVE_REF(symbol
case symbol_kind::S_logicalExpr: // logicalExpr
case symbol_kind::S_operatorExpression: // operatorExpression
case symbol_kind::S_notExpr: // notExpr
+ case symbol_kind::S_existsExpr: // existsExpr
+ case symbol_kind::S_typeExpr: // typeExpr
+ case symbol_kind::S_commentExpr: // commentExpr
case symbol_kind::S_sortSpec: // sortSpec
value.move<std::pair<CNode::Fieldname, CNode>>(YY_MOVE(that.value));
break;
@@ -781,6 +792,7 @@ ParserGen::stack_symbol_type::stack_symbol_type(state_type s, YY_MOVE_REF(symbol
case symbol_kind::S_expressions: // expressions
case symbol_kind::S_values: // values
case symbol_kind::S_exprZeroToTwo: // exprZeroToTwo
+ case symbol_kind::S_typeValues: // typeValues
value.move<std::vector<CNode>>(YY_MOVE(that.value));
break;
@@ -852,6 +864,8 @@ ParserGen::stack_symbol_type& ParserGen::stack_symbol_type::operator=(
case symbol_kind::S_valueObject: // valueObject
case symbol_kind::S_valueFields: // valueFields
case symbol_kind::S_variable: // variable
+ case symbol_kind::S_typeArray: // typeArray
+ case symbol_kind::S_typeValue: // typeValue
case symbol_kind::S_pipeline: // pipeline
case symbol_kind::S_stageList: // stageList
case symbol_kind::S_stage: // stage
@@ -1061,6 +1075,9 @@ ParserGen::stack_symbol_type& ParserGen::stack_symbol_type::operator=(
case symbol_kind::S_logicalExpr: // logicalExpr
case symbol_kind::S_operatorExpression: // operatorExpression
case symbol_kind::S_notExpr: // notExpr
+ case symbol_kind::S_existsExpr: // existsExpr
+ case symbol_kind::S_typeExpr: // typeExpr
+ case symbol_kind::S_commentExpr: // commentExpr
case symbol_kind::S_sortSpec: // sortSpec
value.copy<std::pair<CNode::Fieldname, CNode>>(that.value);
break;
@@ -1077,6 +1094,7 @@ ParserGen::stack_symbol_type& ParserGen::stack_symbol_type::operator=(
case symbol_kind::S_expressions: // expressions
case symbol_kind::S_values: // values
case symbol_kind::S_exprZeroToTwo: // exprZeroToTwo
+ case symbol_kind::S_typeValues: // typeValues
value.copy<std::vector<CNode>>(that.value);
break;
@@ -1146,6 +1164,8 @@ ParserGen::stack_symbol_type& ParserGen::stack_symbol_type::operator=(stack_symb
case symbol_kind::S_valueObject: // valueObject
case symbol_kind::S_valueFields: // valueFields
case symbol_kind::S_variable: // variable
+ case symbol_kind::S_typeArray: // typeArray
+ case symbol_kind::S_typeValue: // typeValue
case symbol_kind::S_pipeline: // pipeline
case symbol_kind::S_stageList: // stageList
case symbol_kind::S_stage: // stage
@@ -1355,6 +1375,9 @@ ParserGen::stack_symbol_type& ParserGen::stack_symbol_type::operator=(stack_symb
case symbol_kind::S_logicalExpr: // logicalExpr
case symbol_kind::S_operatorExpression: // operatorExpression
case symbol_kind::S_notExpr: // notExpr
+ case symbol_kind::S_existsExpr: // existsExpr
+ case symbol_kind::S_typeExpr: // typeExpr
+ case symbol_kind::S_commentExpr: // commentExpr
case symbol_kind::S_sortSpec: // sortSpec
value.move<std::pair<CNode::Fieldname, CNode>>(that.value);
break;
@@ -1371,6 +1394,7 @@ ParserGen::stack_symbol_type& ParserGen::stack_symbol_type::operator=(stack_symb
case symbol_kind::S_expressions: // expressions
case symbol_kind::S_values: // values
case symbol_kind::S_exprZeroToTwo: // exprZeroToTwo
+ case symbol_kind::S_typeValues: // typeValues
value.move<std::vector<CNode>>(that.value);
break;
@@ -1652,6 +1676,8 @@ int ParserGen::parse() {
case symbol_kind::S_valueObject: // valueObject
case symbol_kind::S_valueFields: // valueFields
case symbol_kind::S_variable: // variable
+ case symbol_kind::S_typeArray: // typeArray
+ case symbol_kind::S_typeValue: // typeValue
case symbol_kind::S_pipeline: // pipeline
case symbol_kind::S_stageList: // stageList
case symbol_kind::S_stage: // stage
@@ -1863,6 +1889,9 @@ int ParserGen::parse() {
case symbol_kind::S_logicalExpr: // logicalExpr
case symbol_kind::S_operatorExpression: // operatorExpression
case symbol_kind::S_notExpr: // notExpr
+ case symbol_kind::S_existsExpr: // existsExpr
+ case symbol_kind::S_typeExpr: // typeExpr
+ case symbol_kind::S_commentExpr: // commentExpr
case symbol_kind::S_sortSpec: // sortSpec
yylhs.value.emplace<std::pair<CNode::Fieldname, CNode>>();
break;
@@ -1879,6 +1908,7 @@ int ParserGen::parse() {
case symbol_kind::S_expressions: // expressions
case symbol_kind::S_values: // values
case symbol_kind::S_exprZeroToTwo: // exprZeroToTwo
+ case symbol_kind::S_typeValues: // typeValues
yylhs.value.emplace<std::vector<CNode>>();
break;
@@ -1906,111 +1936,111 @@ int ParserGen::parse() {
{
switch (yyn) {
case 2: // start: START_PIPELINE pipeline
-#line 349 "src/mongo/db/cst/grammar.yy"
+#line 354 "grammar.yy"
{
*cst = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 1978 "src/mongo/db/cst/parser_gen.cpp"
+#line 2008 "parser_gen.cpp"
break;
case 3: // start: START_MATCH match
-#line 352 "src/mongo/db/cst/grammar.yy"
+#line 357 "grammar.yy"
{
*cst = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 1986 "src/mongo/db/cst/parser_gen.cpp"
+#line 2016 "parser_gen.cpp"
break;
case 4: // start: START_SORT sortSpecs
-#line 355 "src/mongo/db/cst/grammar.yy"
+#line 360 "grammar.yy"
{
*cst = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 1994 "src/mongo/db/cst/parser_gen.cpp"
+#line 2024 "parser_gen.cpp"
break;
case 5: // pipeline: "array" stageList "end of array"
-#line 362 "src/mongo/db/cst/grammar.yy"
+#line 367 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
}
-#line 2002 "src/mongo/db/cst/parser_gen.cpp"
+#line 2032 "parser_gen.cpp"
break;
case 6: // stageList: %empty
-#line 368 "src/mongo/db/cst/grammar.yy"
+#line 373 "grammar.yy"
{
}
-#line 2008 "src/mongo/db/cst/parser_gen.cpp"
+#line 2038 "parser_gen.cpp"
break;
case 7: // stageList: "object" stage "end of object" stageList
-#line 369 "src/mongo/db/cst/grammar.yy"
+#line 374 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[2].value.as<CNode>())}};
}
-#line 2016 "src/mongo/db/cst/parser_gen.cpp"
+#line 2046 "parser_gen.cpp"
break;
case 8: // $@1: %empty
-#line 377 "src/mongo/db/cst/grammar.yy"
+#line 382 "grammar.yy"
{
lexer.sortObjTokens();
}
-#line 2022 "src/mongo/db/cst/parser_gen.cpp"
+#line 2052 "parser_gen.cpp"
break;
case 10: // stage: inhibitOptimization
-#line 380 "src/mongo/db/cst/grammar.yy"
+#line 385 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2028 "src/mongo/db/cst/parser_gen.cpp"
+#line 2058 "parser_gen.cpp"
break;
case 11: // stage: unionWith
-#line 380 "src/mongo/db/cst/grammar.yy"
+#line 385 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2034 "src/mongo/db/cst/parser_gen.cpp"
+#line 2064 "parser_gen.cpp"
break;
case 12: // stage: skip
-#line 380 "src/mongo/db/cst/grammar.yy"
+#line 385 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2040 "src/mongo/db/cst/parser_gen.cpp"
+#line 2070 "parser_gen.cpp"
break;
case 13: // stage: limit
-#line 380 "src/mongo/db/cst/grammar.yy"
+#line 385 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2046 "src/mongo/db/cst/parser_gen.cpp"
+#line 2076 "parser_gen.cpp"
break;
case 14: // stage: project
-#line 380 "src/mongo/db/cst/grammar.yy"
+#line 385 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2052 "src/mongo/db/cst/parser_gen.cpp"
+#line 2082 "parser_gen.cpp"
break;
case 15: // stage: sample
-#line 380 "src/mongo/db/cst/grammar.yy"
+#line 385 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2058 "src/mongo/db/cst/parser_gen.cpp"
+#line 2088 "parser_gen.cpp"
break;
case 16: // sample: STAGE_SAMPLE "object" "size argument" num "end of object"
-#line 383 "src/mongo/db/cst/grammar.yy"
+#line 388 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{std::pair{
KeyFieldname::sample,
@@ -2018,22 +2048,22 @@ int ParserGen::parse() {
{KeyFieldname::sizeArg, YY_MOVE(yystack_[1].value.as<CNode>())},
}}}}};
}
-#line 2070 "src/mongo/db/cst/parser_gen.cpp"
+#line 2100 "parser_gen.cpp"
break;
case 17: // inhibitOptimization: STAGE_INHIBIT_OPTIMIZATION "object" "end of
// object"
-#line 393 "src/mongo/db/cst/grammar.yy"
+#line 398 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
std::pair{KeyFieldname::inhibitOptimization, CNode::noopLeaf()}}};
}
-#line 2078 "src/mongo/db/cst/parser_gen.cpp"
+#line 2108 "parser_gen.cpp"
break;
case 18: // unionWith: STAGE_UNION_WITH START_ORDERED_OBJECT "coll argument"
// string "pipeline argument" double "end of object"
-#line 399 "src/mongo/db/cst/grammar.yy"
+#line 404 "grammar.yy"
{
auto pipeline = YY_MOVE(yystack_[1].value.as<CNode>());
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{std::pair{
@@ -2042,61 +2072,61 @@ int ParserGen::parse() {
{KeyFieldname::collArg, YY_MOVE(yystack_[3].value.as<CNode>())},
{KeyFieldname::pipelineArg, std::move(pipeline)}}}}}};
}
-#line 2091 "src/mongo/db/cst/parser_gen.cpp"
+#line 2121 "parser_gen.cpp"
break;
case 19: // num: int
-#line 409 "src/mongo/db/cst/grammar.yy"
+#line 414 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2097 "src/mongo/db/cst/parser_gen.cpp"
+#line 2127 "parser_gen.cpp"
break;
case 20: // num: long
-#line 409 "src/mongo/db/cst/grammar.yy"
+#line 414 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2103 "src/mongo/db/cst/parser_gen.cpp"
+#line 2133 "parser_gen.cpp"
break;
case 21: // num: double
-#line 409 "src/mongo/db/cst/grammar.yy"
+#line 414 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2109 "src/mongo/db/cst/parser_gen.cpp"
+#line 2139 "parser_gen.cpp"
break;
case 22: // num: decimal
-#line 409 "src/mongo/db/cst/grammar.yy"
+#line 414 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2115 "src/mongo/db/cst/parser_gen.cpp"
+#line 2145 "parser_gen.cpp"
break;
case 23: // skip: STAGE_SKIP num
-#line 413 "src/mongo/db/cst/grammar.yy"
+#line 418 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
std::pair{KeyFieldname::skip, YY_MOVE(yystack_[0].value.as<CNode>())}}};
}
-#line 2123 "src/mongo/db/cst/parser_gen.cpp"
+#line 2153 "parser_gen.cpp"
break;
case 24: // limit: STAGE_LIMIT num
-#line 418 "src/mongo/db/cst/grammar.yy"
+#line 423 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{std::pair{
KeyFieldname::limit, YY_MOVE(yystack_[0].value.as<CNode>())}}};
}
-#line 2131 "src/mongo/db/cst/parser_gen.cpp"
+#line 2161 "parser_gen.cpp"
break;
case 25: // project: STAGE_PROJECT "object" projectFields "end of object"
-#line 423 "src/mongo/db/cst/grammar.yy"
+#line 428 "grammar.yy"
{
auto&& fields = YY_MOVE(yystack_[1].value.as<CNode>());
if (auto status =
@@ -2117,48 +2147,48 @@ int ParserGen::parse() {
// function.
error(yystack_[3].location, inclusion.getStatus().reason());
}
-#line 2152 "src/mongo/db/cst/parser_gen.cpp"
+#line 2182 "parser_gen.cpp"
break;
case 26: // projectFields: %empty
-#line 442 "src/mongo/db/cst/grammar.yy"
+#line 447 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode::noopLeaf();
}
-#line 2160 "src/mongo/db/cst/parser_gen.cpp"
+#line 2190 "parser_gen.cpp"
break;
case 27: // projectFields: projectFields projectField
-#line 445 "src/mongo/db/cst/grammar.yy"
+#line 450 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
yylhs.value.as<CNode>().objectChildren().emplace_back(
YY_MOVE(yystack_[0].value.as<std::pair<CNode::Fieldname, CNode>>()));
}
-#line 2169 "src/mongo/db/cst/parser_gen.cpp"
+#line 2199 "parser_gen.cpp"
break;
case 28: // projectField: ID topLevelProjection
-#line 452 "src/mongo/db/cst/grammar.yy"
+#line 457 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = {
KeyFieldname::id, YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 2177 "src/mongo/db/cst/parser_gen.cpp"
+#line 2207 "parser_gen.cpp"
break;
case 29: // projectField: aggregationProjectionFieldname topLevelProjection
-#line 455 "src/mongo/db/cst/grammar.yy"
+#line 460 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = {
YY_MOVE(yystack_[1].value.as<CNode::Fieldname>()),
YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 2185 "src/mongo/db/cst/parser_gen.cpp"
+#line 2215 "parser_gen.cpp"
break;
case 30: // topLevelProjection: projection
-#line 461 "src/mongo/db/cst/grammar.yy"
+#line 466 "grammar.yy"
{
auto projection = YY_MOVE(yystack_[0].value.as<CNode>());
yylhs.value.as<CNode>() =
@@ -2175,287 +2205,287 @@ int ParserGen::parse() {
"object project field cannot contain both "
"inclusion and exclusion indicators");
}
-#line 2201 "src/mongo/db/cst/parser_gen.cpp"
+#line 2231 "parser_gen.cpp"
break;
case 31: // projection: string
-#line 475 "src/mongo/db/cst/grammar.yy"
+#line 480 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2207 "src/mongo/db/cst/parser_gen.cpp"
+#line 2237 "parser_gen.cpp"
break;
case 32: // projection: binary
-#line 476 "src/mongo/db/cst/grammar.yy"
+#line 481 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2213 "src/mongo/db/cst/parser_gen.cpp"
+#line 2243 "parser_gen.cpp"
break;
case 33: // projection: undefined
-#line 477 "src/mongo/db/cst/grammar.yy"
+#line 482 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2219 "src/mongo/db/cst/parser_gen.cpp"
+#line 2249 "parser_gen.cpp"
break;
case 34: // projection: objectId
-#line 478 "src/mongo/db/cst/grammar.yy"
+#line 483 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2225 "src/mongo/db/cst/parser_gen.cpp"
+#line 2255 "parser_gen.cpp"
break;
case 35: // projection: date
-#line 479 "src/mongo/db/cst/grammar.yy"
+#line 484 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2231 "src/mongo/db/cst/parser_gen.cpp"
+#line 2261 "parser_gen.cpp"
break;
case 36: // projection: null
-#line 480 "src/mongo/db/cst/grammar.yy"
+#line 485 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2237 "src/mongo/db/cst/parser_gen.cpp"
+#line 2267 "parser_gen.cpp"
break;
case 37: // projection: regex
-#line 481 "src/mongo/db/cst/grammar.yy"
+#line 486 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2243 "src/mongo/db/cst/parser_gen.cpp"
+#line 2273 "parser_gen.cpp"
break;
case 38: // projection: dbPointer
-#line 482 "src/mongo/db/cst/grammar.yy"
+#line 487 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2249 "src/mongo/db/cst/parser_gen.cpp"
+#line 2279 "parser_gen.cpp"
break;
case 39: // projection: javascript
-#line 483 "src/mongo/db/cst/grammar.yy"
+#line 488 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2255 "src/mongo/db/cst/parser_gen.cpp"
+#line 2285 "parser_gen.cpp"
break;
case 40: // projection: symbol
-#line 484 "src/mongo/db/cst/grammar.yy"
+#line 489 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2261 "src/mongo/db/cst/parser_gen.cpp"
+#line 2291 "parser_gen.cpp"
break;
case 41: // projection: javascriptWScope
-#line 485 "src/mongo/db/cst/grammar.yy"
+#line 490 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2267 "src/mongo/db/cst/parser_gen.cpp"
+#line 2297 "parser_gen.cpp"
break;
case 42: // projection: "1 (int)"
-#line 486 "src/mongo/db/cst/grammar.yy"
+#line 491 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{NonZeroKey{1}};
}
-#line 2275 "src/mongo/db/cst/parser_gen.cpp"
+#line 2305 "parser_gen.cpp"
break;
case 43: // projection: "-1 (int)"
-#line 489 "src/mongo/db/cst/grammar.yy"
+#line 494 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{NonZeroKey{-1}};
}
-#line 2283 "src/mongo/db/cst/parser_gen.cpp"
+#line 2313 "parser_gen.cpp"
break;
case 44: // projection: "arbitrary integer"
-#line 492 "src/mongo/db/cst/grammar.yy"
+#line 497 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{NonZeroKey{YY_MOVE(yystack_[0].value.as<int>())}};
}
-#line 2291 "src/mongo/db/cst/parser_gen.cpp"
+#line 2321 "parser_gen.cpp"
break;
case 45: // projection: "zero (int)"
-#line 495 "src/mongo/db/cst/grammar.yy"
+#line 500 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::intZeroKey};
}
-#line 2299 "src/mongo/db/cst/parser_gen.cpp"
+#line 2329 "parser_gen.cpp"
break;
case 46: // projection: "1 (long)"
-#line 498 "src/mongo/db/cst/grammar.yy"
+#line 503 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{NonZeroKey{1ll}};
}
-#line 2307 "src/mongo/db/cst/parser_gen.cpp"
+#line 2337 "parser_gen.cpp"
break;
case 47: // projection: "-1 (long)"
-#line 501 "src/mongo/db/cst/grammar.yy"
+#line 506 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{NonZeroKey{-1ll}};
}
-#line 2315 "src/mongo/db/cst/parser_gen.cpp"
+#line 2345 "parser_gen.cpp"
break;
case 48: // projection: "arbitrary long"
-#line 504 "src/mongo/db/cst/grammar.yy"
+#line 509 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{NonZeroKey{YY_MOVE(yystack_[0].value.as<long long>())}};
}
-#line 2323 "src/mongo/db/cst/parser_gen.cpp"
+#line 2353 "parser_gen.cpp"
break;
case 49: // projection: "zero (long)"
-#line 507 "src/mongo/db/cst/grammar.yy"
+#line 512 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::longZeroKey};
}
-#line 2331 "src/mongo/db/cst/parser_gen.cpp"
+#line 2361 "parser_gen.cpp"
break;
case 50: // projection: "1 (double)"
-#line 510 "src/mongo/db/cst/grammar.yy"
+#line 515 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{NonZeroKey{1.0}};
}
-#line 2339 "src/mongo/db/cst/parser_gen.cpp"
+#line 2369 "parser_gen.cpp"
break;
case 51: // projection: "-1 (double)"
-#line 513 "src/mongo/db/cst/grammar.yy"
+#line 518 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{NonZeroKey{-1.0}};
}
-#line 2347 "src/mongo/db/cst/parser_gen.cpp"
+#line 2377 "parser_gen.cpp"
break;
case 52: // projection: "arbitrary double"
-#line 516 "src/mongo/db/cst/grammar.yy"
+#line 521 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{NonZeroKey{YY_MOVE(yystack_[0].value.as<double>())}};
}
-#line 2355 "src/mongo/db/cst/parser_gen.cpp"
+#line 2385 "parser_gen.cpp"
break;
case 53: // projection: "zero (double)"
-#line 519 "src/mongo/db/cst/grammar.yy"
+#line 524 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::doubleZeroKey};
}
-#line 2363 "src/mongo/db/cst/parser_gen.cpp"
+#line 2393 "parser_gen.cpp"
break;
case 54: // projection: "1 (decimal)"
-#line 522 "src/mongo/db/cst/grammar.yy"
+#line 527 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{NonZeroKey{Decimal128{1.0}}};
}
-#line 2371 "src/mongo/db/cst/parser_gen.cpp"
+#line 2401 "parser_gen.cpp"
break;
case 55: // projection: "-1 (decimal)"
-#line 525 "src/mongo/db/cst/grammar.yy"
+#line 530 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{NonZeroKey{Decimal128{-1.0}}};
}
-#line 2379 "src/mongo/db/cst/parser_gen.cpp"
+#line 2409 "parser_gen.cpp"
break;
case 56: // projection: "arbitrary decimal"
-#line 528 "src/mongo/db/cst/grammar.yy"
+#line 533 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{NonZeroKey{YY_MOVE(yystack_[0].value.as<Decimal128>())}};
}
-#line 2387 "src/mongo/db/cst/parser_gen.cpp"
+#line 2417 "parser_gen.cpp"
break;
case 57: // projection: "zero (decimal)"
-#line 531 "src/mongo/db/cst/grammar.yy"
+#line 536 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::decimalZeroKey};
}
-#line 2395 "src/mongo/db/cst/parser_gen.cpp"
+#line 2425 "parser_gen.cpp"
break;
case 58: // projection: "true"
-#line 534 "src/mongo/db/cst/grammar.yy"
+#line 539 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::trueKey};
}
-#line 2403 "src/mongo/db/cst/parser_gen.cpp"
+#line 2433 "parser_gen.cpp"
break;
case 59: // projection: "false"
-#line 537 "src/mongo/db/cst/grammar.yy"
+#line 542 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::falseKey};
}
-#line 2411 "src/mongo/db/cst/parser_gen.cpp"
+#line 2441 "parser_gen.cpp"
break;
case 60: // projection: timestamp
-#line 540 "src/mongo/db/cst/grammar.yy"
+#line 545 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2417 "src/mongo/db/cst/parser_gen.cpp"
+#line 2447 "parser_gen.cpp"
break;
case 61: // projection: minKey
-#line 541 "src/mongo/db/cst/grammar.yy"
+#line 546 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2423 "src/mongo/db/cst/parser_gen.cpp"
+#line 2453 "parser_gen.cpp"
break;
case 62: // projection: maxKey
-#line 542 "src/mongo/db/cst/grammar.yy"
+#line 547 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2429 "src/mongo/db/cst/parser_gen.cpp"
+#line 2459 "parser_gen.cpp"
break;
case 63: // projection: projectionObject
-#line 543 "src/mongo/db/cst/grammar.yy"
+#line 548 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2435 "src/mongo/db/cst/parser_gen.cpp"
+#line 2465 "parser_gen.cpp"
break;
case 64: // projection: compoundNonObjectExpression
-#line 544 "src/mongo/db/cst/grammar.yy"
+#line 549 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2441 "src/mongo/db/cst/parser_gen.cpp"
+#line 2471 "parser_gen.cpp"
break;
case 65: // aggregationProjectionFieldname: projectionFieldname
-#line 549 "src/mongo/db/cst/grammar.yy"
+#line 554 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>());
@@ -2465,11 +2495,11 @@ int ParserGen::parse() {
"positional projection forbidden in $project aggregation "
"pipeline stage");
}
-#line 2451 "src/mongo/db/cst/parser_gen.cpp"
+#line 2481 "parser_gen.cpp"
break;
case 66: // projectionFieldname: "fieldname"
-#line 557 "src/mongo/db/cst/grammar.yy"
+#line 562 "grammar.yy"
{
auto components =
make_vector<std::string>(YY_MOVE(yystack_[0].value.as<std::string>()));
@@ -2487,20 +2517,20 @@ int ParserGen::parse() {
error(yystack_[0].location, positional.getStatus().reason());
}
}
-#line 2469 "src/mongo/db/cst/parser_gen.cpp"
+#line 2499 "parser_gen.cpp"
break;
case 67: // projectionFieldname: argAsProjectionPath
-#line 570 "src/mongo/db/cst/grammar.yy"
+#line 575 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>());
}
-#line 2475 "src/mongo/db/cst/parser_gen.cpp"
+#line 2505 "parser_gen.cpp"
break;
case 68: // projectionFieldname: "fieldname containing dotted path"
-#line 571 "src/mongo/db/cst/grammar.yy"
+#line 576 "grammar.yy"
{
auto components = YY_MOVE(yystack_[0].value.as<std::vector<std::string>>());
if (auto positional =
@@ -2517,158 +2547,277 @@ int ParserGen::parse() {
error(yystack_[0].location, positional.getStatus().reason());
}
}
-#line 2493 "src/mongo/db/cst/parser_gen.cpp"
+#line 2523 "parser_gen.cpp"
break;
case 69: // projectionObject: "object" projectionObjectFields "end of object"
-#line 588 "src/mongo/db/cst/grammar.yy"
+#line 593 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
}
-#line 2501 "src/mongo/db/cst/parser_gen.cpp"
+#line 2531 "parser_gen.cpp"
break;
case 70: // projectionObjectFields: projectionObjectField
-#line 595 "src/mongo/db/cst/grammar.yy"
+#line 600 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode::noopLeaf();
yylhs.value.as<CNode>().objectChildren().emplace_back(
YY_MOVE(yystack_[0].value.as<std::pair<CNode::Fieldname, CNode>>()));
}
-#line 2510 "src/mongo/db/cst/parser_gen.cpp"
+#line 2540 "parser_gen.cpp"
break;
case 71: // projectionObjectFields: projectionObjectFields
// projectionObjectField
-#line 599 "src/mongo/db/cst/grammar.yy"
+#line 604 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
yylhs.value.as<CNode>().objectChildren().emplace_back(
YY_MOVE(yystack_[0].value.as<std::pair<CNode::Fieldname, CNode>>()));
}
-#line 2519 "src/mongo/db/cst/parser_gen.cpp"
+#line 2549 "parser_gen.cpp"
break;
case 72: // projectionObjectField: idAsProjectionPath projection
-#line 607 "src/mongo/db/cst/grammar.yy"
+#line 612 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = {
YY_MOVE(yystack_[1].value.as<CNode::Fieldname>()),
YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 2527 "src/mongo/db/cst/parser_gen.cpp"
+#line 2557 "parser_gen.cpp"
break;
case 73: // projectionObjectField: aggregationProjectionFieldname projection
-#line 610 "src/mongo/db/cst/grammar.yy"
+#line 615 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = {
YY_MOVE(yystack_[1].value.as<CNode::Fieldname>()),
YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 2535 "src/mongo/db/cst/parser_gen.cpp"
+#line 2565 "parser_gen.cpp"
break;
case 74: // match: "object" predicates "end of object"
-#line 616 "src/mongo/db/cst/grammar.yy"
+#line 621 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
}
-#line 2543 "src/mongo/db/cst/parser_gen.cpp"
+#line 2573 "parser_gen.cpp"
break;
case 75: // predicates: %empty
-#line 622 "src/mongo/db/cst/grammar.yy"
+#line 627 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode::noopLeaf();
}
-#line 2551 "src/mongo/db/cst/parser_gen.cpp"
+#line 2581 "parser_gen.cpp"
break;
case 76: // predicates: predicates predicate
-#line 625 "src/mongo/db/cst/grammar.yy"
+#line 630 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
yylhs.value.as<CNode>().objectChildren().emplace_back(
YY_MOVE(yystack_[0].value.as<std::pair<CNode::Fieldname, CNode>>()));
}
-#line 2560 "src/mongo/db/cst/parser_gen.cpp"
+#line 2590 "parser_gen.cpp"
break;
case 77: // predicate: predFieldname predValue
-#line 631 "src/mongo/db/cst/grammar.yy"
+#line 636 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = {
YY_MOVE(yystack_[1].value.as<CNode::Fieldname>()),
YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 2568 "src/mongo/db/cst/parser_gen.cpp"
+#line 2598 "parser_gen.cpp"
break;
case 78: // predicate: logicalExpr
-#line 634 "src/mongo/db/cst/grammar.yy"
+#line 639 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() =
YY_MOVE(yystack_[0].value.as<std::pair<CNode::Fieldname, CNode>>());
}
-#line 2576 "src/mongo/db/cst/parser_gen.cpp"
+#line 2604 "parser_gen.cpp"
break;
- case 79: // predValue: simpleValue
-#line 643 "src/mongo/db/cst/grammar.yy"
+ case 79: // predicate: commentExpr
+#line 640 "grammar.yy"
+ {
+ yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() =
+ YY_MOVE(yystack_[0].value.as<std::pair<CNode::Fieldname, CNode>>());
+ }
+#line 2610 "parser_gen.cpp"
+ break;
+
+ case 80: // predValue: simpleValue
+#line 647 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 2582 "src/mongo/db/cst/parser_gen.cpp"
+#line 2616 "parser_gen.cpp"
break;
- case 80: // predValue: "object" compoundMatchExprs "end of object"
-#line 644 "src/mongo/db/cst/grammar.yy"
+ case 81: // predValue: "object" compoundMatchExprs "end of object"
+#line 648 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
}
-#line 2590 "src/mongo/db/cst/parser_gen.cpp"
+#line 2624 "parser_gen.cpp"
break;
- case 81: // compoundMatchExprs: %empty
-#line 650 "src/mongo/db/cst/grammar.yy"
+ case 82: // compoundMatchExprs: %empty
+#line 654 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode::noopLeaf();
}
-#line 2598 "src/mongo/db/cst/parser_gen.cpp"
+#line 2632 "parser_gen.cpp"
break;
- case 82: // compoundMatchExprs: compoundMatchExprs operatorExpression
-#line 653 "src/mongo/db/cst/grammar.yy"
+ case 83: // compoundMatchExprs: compoundMatchExprs operatorExpression
+#line 657 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
yylhs.value.as<CNode>().objectChildren().emplace_back(
YY_MOVE(yystack_[0].value.as<std::pair<CNode::Fieldname, CNode>>()));
}
-#line 2607 "src/mongo/db/cst/parser_gen.cpp"
+#line 2641 "parser_gen.cpp"
+ break;
+
+ case 84: // operatorExpression: notExpr
+#line 665 "grammar.yy"
+ {
+ yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() =
+ YY_MOVE(yystack_[0].value.as<std::pair<CNode::Fieldname, CNode>>());
+ }
+#line 2647 "parser_gen.cpp"
+ break;
+
+ case 85: // operatorExpression: existsExpr
+#line 665 "grammar.yy"
+ {
+ yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() =
+ YY_MOVE(yystack_[0].value.as<std::pair<CNode::Fieldname, CNode>>());
+ }
+#line 2653 "parser_gen.cpp"
break;
- case 83: // operatorExpression: notExpr
-#line 660 "src/mongo/db/cst/grammar.yy"
+ case 86: // operatorExpression: typeExpr
+#line 665 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() =
YY_MOVE(yystack_[0].value.as<std::pair<CNode::Fieldname, CNode>>());
}
-#line 2613 "src/mongo/db/cst/parser_gen.cpp"
+#line 2659 "parser_gen.cpp"
+ break;
+
+ case 87: // existsExpr: EXISTS value
+#line 669 "grammar.yy"
+ {
+ yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = std::pair{
+ KeyFieldname::existsExpr, YY_MOVE(yystack_[0].value.as<CNode>())};
+ }
+#line 2667 "parser_gen.cpp"
+ break;
+
+ case 88: // typeArray: "array" typeValues "end of array"
+#line 675 "grammar.yy"
+ {
+ yylhs.value.as<CNode>() =
+ CNode{YY_MOVE(yystack_[1].value.as<std::vector<CNode>>())};
+ }
+#line 2675 "parser_gen.cpp"
+ break;
+
+ case 89: // typeValues: %empty
+#line 681 "grammar.yy"
+ {
+ }
+#line 2681 "parser_gen.cpp"
+ break;
+
+ case 90: // typeValues: typeValues typeValue
+#line 682 "grammar.yy"
+ {
+ yylhs.value.as<std::vector<CNode>>() =
+ YY_MOVE(yystack_[1].value.as<std::vector<CNode>>());
+ yylhs.value.as<std::vector<CNode>>().emplace_back(
+ YY_MOVE(yystack_[0].value.as<CNode>()));
+ }
+#line 2690 "parser_gen.cpp"
+ break;
+
+ case 91: // typeValue: num
+#line 689 "grammar.yy"
+ {
+ yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
+ }
+#line 2696 "parser_gen.cpp"
+ break;
+
+ case 92: // typeValue: string
+#line 689 "grammar.yy"
+ {
+ yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
+ }
+#line 2702 "parser_gen.cpp"
+ break;
+
+ case 93: // typeExpr: TYPE typeValue
+#line 693 "grammar.yy"
+ {
+ auto&& type = YY_MOVE(yystack_[0].value.as<CNode>());
+ if (auto status = c_node_validation::validateTypeOperatorArgument(type);
+ !status.isOK()) {
+ // TODO SERVER-50498: error() on the offending literal rather than the
+ // TYPE token. This will require removing the offending literal
+ // indicators in the error strings provided by the validation function.
+ error(yystack_[1].location, status.reason());
+ }
+ yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() =
+ std::pair{KeyFieldname::type, std::move(type)};
+ }
+#line 2716 "parser_gen.cpp"
+ break;
+
+ case 94: // typeExpr: TYPE typeArray
+#line 702 "grammar.yy"
+ {
+ auto&& types = YY_MOVE(yystack_[0].value.as<CNode>());
+ if (auto status = c_node_validation::validateTypeOperatorArgument(types);
+ !status.isOK()) {
+ error(yystack_[1].location, status.reason());
+ }
+ yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() =
+ std::pair{KeyFieldname::type, std::move(types)};
+ }
+#line 2728 "parser_gen.cpp"
+ break;
+
+ case 95: // commentExpr: COMMENT value
+#line 712 "grammar.yy"
+ {
+ yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = std::pair{
+ KeyFieldname::commentExpr, YY_MOVE(yystack_[0].value.as<CNode>())};
+ }
+#line 2736 "parser_gen.cpp"
break;
- case 84: // notExpr: NOT regex
-#line 663 "src/mongo/db/cst/grammar.yy"
+ case 96: // notExpr: NOT regex
+#line 718 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = std::pair{
KeyFieldname::notExpr, YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 2621 "src/mongo/db/cst/parser_gen.cpp"
+#line 2744 "parser_gen.cpp"
break;
- case 85: // notExpr: NOT "object" compoundMatchExprs operatorExpression "end of
+ case 97: // notExpr: NOT "object" compoundMatchExprs operatorExpression "end of
// object"
-#line 668 "src/mongo/db/cst/grammar.yy"
+#line 723 "grammar.yy"
{
auto&& exprs = YY_MOVE(yystack_[2].value.as<CNode>());
exprs.objectChildren().emplace_back(
@@ -2677,12 +2826,12 @@ int ParserGen::parse() {
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() =
std::pair{KeyFieldname::notExpr, std::move(exprs)};
}
-#line 2632 "src/mongo/db/cst/parser_gen.cpp"
+#line 2755 "parser_gen.cpp"
break;
- case 86: // logicalExpr: logicalExprField "array" additionalExprs match "end of
+ case 98: // logicalExpr: logicalExprField "array" additionalExprs match "end of
// array"
-#line 678 "src/mongo/db/cst/grammar.yy"
+#line 733 "grammar.yy"
{
auto&& children = YY_MOVE(yystack_[2].value.as<CNode>());
children.arrayChildren().emplace_back(
@@ -2690,147 +2839,147 @@ int ParserGen::parse() {
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = {
YY_MOVE(yystack_[4].value.as<CNode::Fieldname>()), std::move(children)};
}
-#line 2642 "src/mongo/db/cst/parser_gen.cpp"
+#line 2765 "parser_gen.cpp"
break;
- case 87: // logicalExprField: AND
-#line 686 "src/mongo/db/cst/grammar.yy"
+ case 99: // logicalExprField: AND
+#line 741 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = KeyFieldname::andExpr;
}
-#line 2648 "src/mongo/db/cst/parser_gen.cpp"
+#line 2771 "parser_gen.cpp"
break;
- case 88: // logicalExprField: OR
-#line 687 "src/mongo/db/cst/grammar.yy"
+ case 100: // logicalExprField: OR
+#line 742 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = KeyFieldname::orExpr;
}
-#line 2654 "src/mongo/db/cst/parser_gen.cpp"
+#line 2777 "parser_gen.cpp"
break;
- case 89: // logicalExprField: NOR
-#line 688 "src/mongo/db/cst/grammar.yy"
+ case 101: // logicalExprField: NOR
+#line 743 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = KeyFieldname::norExpr;
}
-#line 2660 "src/mongo/db/cst/parser_gen.cpp"
+#line 2783 "parser_gen.cpp"
break;
- case 90: // additionalExprs: %empty
-#line 691 "src/mongo/db/cst/grammar.yy"
+ case 102: // additionalExprs: %empty
+#line 746 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ArrayChildren{}};
}
-#line 2668 "src/mongo/db/cst/parser_gen.cpp"
+#line 2791 "parser_gen.cpp"
break;
- case 91: // additionalExprs: additionalExprs match
-#line 694 "src/mongo/db/cst/grammar.yy"
+ case 103: // additionalExprs: additionalExprs match
+#line 749 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
yylhs.value.as<CNode>().arrayChildren().emplace_back(
YY_MOVE(yystack_[0].value.as<CNode>()));
}
-#line 2677 "src/mongo/db/cst/parser_gen.cpp"
+#line 2800 "parser_gen.cpp"
break;
- case 92: // predFieldname: idAsUserFieldname
-#line 701 "src/mongo/db/cst/grammar.yy"
+ case 104: // predFieldname: idAsUserFieldname
+#line 756 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>());
}
-#line 2683 "src/mongo/db/cst/parser_gen.cpp"
+#line 2806 "parser_gen.cpp"
break;
- case 93: // predFieldname: argAsUserFieldname
-#line 701 "src/mongo/db/cst/grammar.yy"
+ case 105: // predFieldname: argAsUserFieldname
+#line 756 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>());
}
-#line 2689 "src/mongo/db/cst/parser_gen.cpp"
+#line 2812 "parser_gen.cpp"
break;
- case 94: // predFieldname: invariableUserFieldname
-#line 701 "src/mongo/db/cst/grammar.yy"
+ case 106: // predFieldname: invariableUserFieldname
+#line 756 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>());
}
-#line 2695 "src/mongo/db/cst/parser_gen.cpp"
+#line 2818 "parser_gen.cpp"
break;
- case 95: // invariableUserFieldname: "fieldname"
-#line 704 "src/mongo/db/cst/grammar.yy"
+ case 107: // invariableUserFieldname: "fieldname"
+#line 759 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
UserFieldname{YY_MOVE(yystack_[0].value.as<std::string>())};
}
-#line 2703 "src/mongo/db/cst/parser_gen.cpp"
+#line 2826 "parser_gen.cpp"
break;
- case 96: // stageAsUserFieldname: STAGE_INHIBIT_OPTIMIZATION
-#line 712 "src/mongo/db/cst/grammar.yy"
+ case 108: // stageAsUserFieldname: STAGE_INHIBIT_OPTIMIZATION
+#line 767 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
UserFieldname{"$_internalInhibitOptimization"};
}
-#line 2711 "src/mongo/db/cst/parser_gen.cpp"
+#line 2834 "parser_gen.cpp"
break;
- case 97: // stageAsUserFieldname: STAGE_UNION_WITH
-#line 715 "src/mongo/db/cst/grammar.yy"
+ case 109: // stageAsUserFieldname: STAGE_UNION_WITH
+#line 770 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$unionWith"};
}
-#line 2719 "src/mongo/db/cst/parser_gen.cpp"
+#line 2842 "parser_gen.cpp"
break;
- case 98: // stageAsUserFieldname: STAGE_SKIP
-#line 718 "src/mongo/db/cst/grammar.yy"
+ case 110: // stageAsUserFieldname: STAGE_SKIP
+#line 773 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$skip"};
}
-#line 2727 "src/mongo/db/cst/parser_gen.cpp"
+#line 2850 "parser_gen.cpp"
break;
- case 99: // stageAsUserFieldname: STAGE_LIMIT
-#line 721 "src/mongo/db/cst/grammar.yy"
+ case 111: // stageAsUserFieldname: STAGE_LIMIT
+#line 776 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$limit"};
}
-#line 2735 "src/mongo/db/cst/parser_gen.cpp"
+#line 2858 "parser_gen.cpp"
break;
- case 100: // stageAsUserFieldname: STAGE_PROJECT
-#line 724 "src/mongo/db/cst/grammar.yy"
+ case 112: // stageAsUserFieldname: STAGE_PROJECT
+#line 779 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$project"};
}
-#line 2743 "src/mongo/db/cst/parser_gen.cpp"
+#line 2866 "parser_gen.cpp"
break;
- case 101: // stageAsUserFieldname: STAGE_SAMPLE
-#line 727 "src/mongo/db/cst/grammar.yy"
+ case 113: // stageAsUserFieldname: STAGE_SAMPLE
+#line 782 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$sample"};
}
-#line 2751 "src/mongo/db/cst/parser_gen.cpp"
+#line 2874 "parser_gen.cpp"
break;
- case 102: // argAsUserFieldname: arg
-#line 733 "src/mongo/db/cst/grammar.yy"
+ case 114: // argAsUserFieldname: arg
+#line 788 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
UserFieldname{YY_MOVE(yystack_[0].value.as<std::string>())};
}
-#line 2759 "src/mongo/db/cst/parser_gen.cpp"
+#line 2882 "parser_gen.cpp"
break;
- case 103: // argAsProjectionPath: arg
-#line 739 "src/mongo/db/cst/grammar.yy"
+ case 115: // argAsProjectionPath: arg
+#line 794 "grammar.yy"
{
auto components =
make_vector<std::string>(YY_MOVE(yystack_[0].value.as<std::string>()));
@@ -2848,892 +2997,892 @@ int ParserGen::parse() {
error(yystack_[0].location, positional.getStatus().reason());
}
}
-#line 2777 "src/mongo/db/cst/parser_gen.cpp"
+#line 2900 "parser_gen.cpp"
break;
- case 104: // arg: "coll argument"
-#line 758 "src/mongo/db/cst/grammar.yy"
+ case 116: // arg: "coll argument"
+#line 813 "grammar.yy"
{
yylhs.value.as<std::string>() = "coll";
}
-#line 2785 "src/mongo/db/cst/parser_gen.cpp"
+#line 2908 "parser_gen.cpp"
break;
- case 105: // arg: "pipeline argument"
-#line 761 "src/mongo/db/cst/grammar.yy"
+ case 117: // arg: "pipeline argument"
+#line 816 "grammar.yy"
{
yylhs.value.as<std::string>() = "pipeline";
}
-#line 2793 "src/mongo/db/cst/parser_gen.cpp"
+#line 2916 "parser_gen.cpp"
break;
- case 106: // arg: "size argument"
-#line 764 "src/mongo/db/cst/grammar.yy"
+ case 118: // arg: "size argument"
+#line 819 "grammar.yy"
{
yylhs.value.as<std::string>() = "size";
}
-#line 2801 "src/mongo/db/cst/parser_gen.cpp"
+#line 2924 "parser_gen.cpp"
break;
- case 107: // arg: "input argument"
-#line 767 "src/mongo/db/cst/grammar.yy"
+ case 119: // arg: "input argument"
+#line 822 "grammar.yy"
{
yylhs.value.as<std::string>() = "input";
}
-#line 2809 "src/mongo/db/cst/parser_gen.cpp"
+#line 2932 "parser_gen.cpp"
break;
- case 108: // arg: "to argument"
-#line 770 "src/mongo/db/cst/grammar.yy"
+ case 120: // arg: "to argument"
+#line 825 "grammar.yy"
{
yylhs.value.as<std::string>() = "to";
}
-#line 2817 "src/mongo/db/cst/parser_gen.cpp"
+#line 2940 "parser_gen.cpp"
break;
- case 109: // arg: "onError argument"
-#line 773 "src/mongo/db/cst/grammar.yy"
+ case 121: // arg: "onError argument"
+#line 828 "grammar.yy"
{
yylhs.value.as<std::string>() = "onError";
}
-#line 2825 "src/mongo/db/cst/parser_gen.cpp"
+#line 2948 "parser_gen.cpp"
break;
- case 110: // arg: "onNull argument"
-#line 776 "src/mongo/db/cst/grammar.yy"
+ case 122: // arg: "onNull argument"
+#line 831 "grammar.yy"
{
yylhs.value.as<std::string>() = "onNull";
}
-#line 2833 "src/mongo/db/cst/parser_gen.cpp"
+#line 2956 "parser_gen.cpp"
break;
- case 111: // arg: "dateString argument"
-#line 779 "src/mongo/db/cst/grammar.yy"
+ case 123: // arg: "dateString argument"
+#line 834 "grammar.yy"
{
yylhs.value.as<std::string>() = "dateString";
}
-#line 2841 "src/mongo/db/cst/parser_gen.cpp"
+#line 2964 "parser_gen.cpp"
break;
- case 112: // arg: "format argument"
-#line 782 "src/mongo/db/cst/grammar.yy"
+ case 124: // arg: "format argument"
+#line 837 "grammar.yy"
{
yylhs.value.as<std::string>() = "format";
}
-#line 2849 "src/mongo/db/cst/parser_gen.cpp"
+#line 2972 "parser_gen.cpp"
break;
- case 113: // arg: "timezone argument"
-#line 785 "src/mongo/db/cst/grammar.yy"
+ case 125: // arg: "timezone argument"
+#line 840 "grammar.yy"
{
yylhs.value.as<std::string>() = "timezone";
}
-#line 2857 "src/mongo/db/cst/parser_gen.cpp"
+#line 2980 "parser_gen.cpp"
break;
- case 114: // arg: "date argument"
-#line 788 "src/mongo/db/cst/grammar.yy"
+ case 126: // arg: "date argument"
+#line 843 "grammar.yy"
{
yylhs.value.as<std::string>() = "date";
}
-#line 2865 "src/mongo/db/cst/parser_gen.cpp"
+#line 2988 "parser_gen.cpp"
break;
- case 115: // arg: "chars argument"
-#line 791 "src/mongo/db/cst/grammar.yy"
+ case 127: // arg: "chars argument"
+#line 846 "grammar.yy"
{
yylhs.value.as<std::string>() = "chars";
}
-#line 2873 "src/mongo/db/cst/parser_gen.cpp"
+#line 2996 "parser_gen.cpp"
break;
- case 116: // arg: "regex argument"
-#line 794 "src/mongo/db/cst/grammar.yy"
+ case 128: // arg: "regex argument"
+#line 849 "grammar.yy"
{
yylhs.value.as<std::string>() = "regex";
}
-#line 2881 "src/mongo/db/cst/parser_gen.cpp"
+#line 3004 "parser_gen.cpp"
break;
- case 117: // arg: "options argument"
-#line 797 "src/mongo/db/cst/grammar.yy"
+ case 129: // arg: "options argument"
+#line 852 "grammar.yy"
{
yylhs.value.as<std::string>() = "options";
}
-#line 2889 "src/mongo/db/cst/parser_gen.cpp"
+#line 3012 "parser_gen.cpp"
break;
- case 118: // arg: "find argument"
-#line 800 "src/mongo/db/cst/grammar.yy"
+ case 130: // arg: "find argument"
+#line 855 "grammar.yy"
{
yylhs.value.as<std::string>() = "find";
}
-#line 2897 "src/mongo/db/cst/parser_gen.cpp"
+#line 3020 "parser_gen.cpp"
break;
- case 119: // arg: "replacement argument"
-#line 803 "src/mongo/db/cst/grammar.yy"
+ case 131: // arg: "replacement argument"
+#line 858 "grammar.yy"
{
yylhs.value.as<std::string>() = "replacement";
}
-#line 2905 "src/mongo/db/cst/parser_gen.cpp"
+#line 3028 "parser_gen.cpp"
break;
- case 120: // aggExprAsUserFieldname: ADD
-#line 811 "src/mongo/db/cst/grammar.yy"
+ case 132: // aggExprAsUserFieldname: ADD
+#line 866 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$add"};
}
-#line 2913 "src/mongo/db/cst/parser_gen.cpp"
+#line 3036 "parser_gen.cpp"
break;
- case 121: // aggExprAsUserFieldname: ATAN2
-#line 814 "src/mongo/db/cst/grammar.yy"
+ case 133: // aggExprAsUserFieldname: ATAN2
+#line 869 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$atan2"};
}
-#line 2921 "src/mongo/db/cst/parser_gen.cpp"
+#line 3044 "parser_gen.cpp"
break;
- case 122: // aggExprAsUserFieldname: AND
-#line 817 "src/mongo/db/cst/grammar.yy"
+ case 134: // aggExprAsUserFieldname: AND
+#line 872 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$and"};
}
-#line 2929 "src/mongo/db/cst/parser_gen.cpp"
+#line 3052 "parser_gen.cpp"
break;
- case 123: // aggExprAsUserFieldname: CONST_EXPR
-#line 820 "src/mongo/db/cst/grammar.yy"
+ case 135: // aggExprAsUserFieldname: CONST_EXPR
+#line 875 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$const"};
}
-#line 2937 "src/mongo/db/cst/parser_gen.cpp"
+#line 3060 "parser_gen.cpp"
break;
- case 124: // aggExprAsUserFieldname: LITERAL
-#line 823 "src/mongo/db/cst/grammar.yy"
+ case 136: // aggExprAsUserFieldname: LITERAL
+#line 878 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$literal"};
}
-#line 2945 "src/mongo/db/cst/parser_gen.cpp"
+#line 3068 "parser_gen.cpp"
break;
- case 125: // aggExprAsUserFieldname: OR
-#line 826 "src/mongo/db/cst/grammar.yy"
+ case 137: // aggExprAsUserFieldname: OR
+#line 881 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$or"};
}
-#line 2953 "src/mongo/db/cst/parser_gen.cpp"
+#line 3076 "parser_gen.cpp"
break;
- case 126: // aggExprAsUserFieldname: NOT
-#line 829 "src/mongo/db/cst/grammar.yy"
+ case 138: // aggExprAsUserFieldname: NOT
+#line 884 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$not"};
}
-#line 2961 "src/mongo/db/cst/parser_gen.cpp"
+#line 3084 "parser_gen.cpp"
break;
- case 127: // aggExprAsUserFieldname: CMP
-#line 832 "src/mongo/db/cst/grammar.yy"
+ case 139: // aggExprAsUserFieldname: CMP
+#line 887 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$cmp"};
}
-#line 2969 "src/mongo/db/cst/parser_gen.cpp"
+#line 3092 "parser_gen.cpp"
break;
- case 128: // aggExprAsUserFieldname: EQ
-#line 835 "src/mongo/db/cst/grammar.yy"
+ case 140: // aggExprAsUserFieldname: EQ
+#line 890 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$eq"};
}
-#line 2977 "src/mongo/db/cst/parser_gen.cpp"
+#line 3100 "parser_gen.cpp"
break;
- case 129: // aggExprAsUserFieldname: GT
-#line 838 "src/mongo/db/cst/grammar.yy"
+ case 141: // aggExprAsUserFieldname: GT
+#line 893 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$gt"};
}
-#line 2985 "src/mongo/db/cst/parser_gen.cpp"
+#line 3108 "parser_gen.cpp"
break;
- case 130: // aggExprAsUserFieldname: GTE
-#line 841 "src/mongo/db/cst/grammar.yy"
+ case 142: // aggExprAsUserFieldname: GTE
+#line 896 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$gte"};
}
-#line 2993 "src/mongo/db/cst/parser_gen.cpp"
+#line 3116 "parser_gen.cpp"
break;
- case 131: // aggExprAsUserFieldname: LT
-#line 844 "src/mongo/db/cst/grammar.yy"
+ case 143: // aggExprAsUserFieldname: LT
+#line 899 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$lt"};
}
-#line 3001 "src/mongo/db/cst/parser_gen.cpp"
+#line 3124 "parser_gen.cpp"
break;
- case 132: // aggExprAsUserFieldname: LTE
-#line 847 "src/mongo/db/cst/grammar.yy"
+ case 144: // aggExprAsUserFieldname: LTE
+#line 902 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$lte"};
}
-#line 3009 "src/mongo/db/cst/parser_gen.cpp"
+#line 3132 "parser_gen.cpp"
break;
- case 133: // aggExprAsUserFieldname: NE
-#line 850 "src/mongo/db/cst/grammar.yy"
+ case 145: // aggExprAsUserFieldname: NE
+#line 905 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$ne"};
}
-#line 3017 "src/mongo/db/cst/parser_gen.cpp"
+#line 3140 "parser_gen.cpp"
break;
- case 134: // aggExprAsUserFieldname: CONVERT
-#line 853 "src/mongo/db/cst/grammar.yy"
+ case 146: // aggExprAsUserFieldname: CONVERT
+#line 908 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$convert"};
}
-#line 3025 "src/mongo/db/cst/parser_gen.cpp"
+#line 3148 "parser_gen.cpp"
break;
- case 135: // aggExprAsUserFieldname: TO_BOOL
-#line 856 "src/mongo/db/cst/grammar.yy"
+ case 147: // aggExprAsUserFieldname: TO_BOOL
+#line 911 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toBool"};
}
-#line 3033 "src/mongo/db/cst/parser_gen.cpp"
+#line 3156 "parser_gen.cpp"
break;
- case 136: // aggExprAsUserFieldname: TO_DATE
-#line 859 "src/mongo/db/cst/grammar.yy"
+ case 148: // aggExprAsUserFieldname: TO_DATE
+#line 914 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toDate"};
}
-#line 3041 "src/mongo/db/cst/parser_gen.cpp"
+#line 3164 "parser_gen.cpp"
break;
- case 137: // aggExprAsUserFieldname: TO_DECIMAL
-#line 862 "src/mongo/db/cst/grammar.yy"
+ case 149: // aggExprAsUserFieldname: TO_DECIMAL
+#line 917 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toDecimal"};
}
-#line 3049 "src/mongo/db/cst/parser_gen.cpp"
+#line 3172 "parser_gen.cpp"
break;
- case 138: // aggExprAsUserFieldname: TO_DOUBLE
-#line 865 "src/mongo/db/cst/grammar.yy"
+ case 150: // aggExprAsUserFieldname: TO_DOUBLE
+#line 920 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toDouble"};
}
-#line 3057 "src/mongo/db/cst/parser_gen.cpp"
+#line 3180 "parser_gen.cpp"
break;
- case 139: // aggExprAsUserFieldname: TO_INT
-#line 868 "src/mongo/db/cst/grammar.yy"
+ case 151: // aggExprAsUserFieldname: TO_INT
+#line 923 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toInt"};
}
-#line 3065 "src/mongo/db/cst/parser_gen.cpp"
+#line 3188 "parser_gen.cpp"
break;
- case 140: // aggExprAsUserFieldname: TO_LONG
-#line 871 "src/mongo/db/cst/grammar.yy"
+ case 152: // aggExprAsUserFieldname: TO_LONG
+#line 926 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toLong"};
}
-#line 3073 "src/mongo/db/cst/parser_gen.cpp"
+#line 3196 "parser_gen.cpp"
break;
- case 141: // aggExprAsUserFieldname: TO_OBJECT_ID
-#line 874 "src/mongo/db/cst/grammar.yy"
+ case 153: // aggExprAsUserFieldname: TO_OBJECT_ID
+#line 929 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toObjectId"};
}
-#line 3081 "src/mongo/db/cst/parser_gen.cpp"
+#line 3204 "parser_gen.cpp"
break;
- case 142: // aggExprAsUserFieldname: TO_STRING
-#line 877 "src/mongo/db/cst/grammar.yy"
+ case 154: // aggExprAsUserFieldname: TO_STRING
+#line 932 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toString"};
}
-#line 3089 "src/mongo/db/cst/parser_gen.cpp"
+#line 3212 "parser_gen.cpp"
break;
- case 143: // aggExprAsUserFieldname: TYPE
-#line 880 "src/mongo/db/cst/grammar.yy"
+ case 155: // aggExprAsUserFieldname: TYPE
+#line 935 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$type"};
}
-#line 3097 "src/mongo/db/cst/parser_gen.cpp"
+#line 3220 "parser_gen.cpp"
break;
- case 144: // aggExprAsUserFieldname: ABS
-#line 883 "src/mongo/db/cst/grammar.yy"
+ case 156: // aggExprAsUserFieldname: ABS
+#line 938 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$abs"};
}
-#line 3105 "src/mongo/db/cst/parser_gen.cpp"
+#line 3228 "parser_gen.cpp"
break;
- case 145: // aggExprAsUserFieldname: CEIL
-#line 886 "src/mongo/db/cst/grammar.yy"
+ case 157: // aggExprAsUserFieldname: CEIL
+#line 941 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$ceil"};
}
-#line 3113 "src/mongo/db/cst/parser_gen.cpp"
+#line 3236 "parser_gen.cpp"
break;
- case 146: // aggExprAsUserFieldname: DIVIDE
-#line 889 "src/mongo/db/cst/grammar.yy"
+ case 158: // aggExprAsUserFieldname: DIVIDE
+#line 944 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$divide"};
}
-#line 3121 "src/mongo/db/cst/parser_gen.cpp"
+#line 3244 "parser_gen.cpp"
break;
- case 147: // aggExprAsUserFieldname: EXPONENT
-#line 892 "src/mongo/db/cst/grammar.yy"
+ case 159: // aggExprAsUserFieldname: EXPONENT
+#line 947 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$exp"};
}
-#line 3129 "src/mongo/db/cst/parser_gen.cpp"
+#line 3252 "parser_gen.cpp"
break;
- case 148: // aggExprAsUserFieldname: FLOOR
-#line 895 "src/mongo/db/cst/grammar.yy"
+ case 160: // aggExprAsUserFieldname: FLOOR
+#line 950 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$floor"};
}
-#line 3137 "src/mongo/db/cst/parser_gen.cpp"
+#line 3260 "parser_gen.cpp"
break;
- case 149: // aggExprAsUserFieldname: LN
-#line 898 "src/mongo/db/cst/grammar.yy"
+ case 161: // aggExprAsUserFieldname: LN
+#line 953 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$ln"};
}
-#line 3145 "src/mongo/db/cst/parser_gen.cpp"
+#line 3268 "parser_gen.cpp"
break;
- case 150: // aggExprAsUserFieldname: LOG
-#line 901 "src/mongo/db/cst/grammar.yy"
+ case 162: // aggExprAsUserFieldname: LOG
+#line 956 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$log"};
}
-#line 3153 "src/mongo/db/cst/parser_gen.cpp"
+#line 3276 "parser_gen.cpp"
break;
- case 151: // aggExprAsUserFieldname: LOGTEN
-#line 904 "src/mongo/db/cst/grammar.yy"
+ case 163: // aggExprAsUserFieldname: LOGTEN
+#line 959 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$log10"};
}
-#line 3161 "src/mongo/db/cst/parser_gen.cpp"
+#line 3284 "parser_gen.cpp"
break;
- case 152: // aggExprAsUserFieldname: MOD
-#line 907 "src/mongo/db/cst/grammar.yy"
+ case 164: // aggExprAsUserFieldname: MOD
+#line 962 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$mod"};
}
-#line 3169 "src/mongo/db/cst/parser_gen.cpp"
+#line 3292 "parser_gen.cpp"
break;
- case 153: // aggExprAsUserFieldname: MULTIPLY
-#line 910 "src/mongo/db/cst/grammar.yy"
+ case 165: // aggExprAsUserFieldname: MULTIPLY
+#line 965 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$multiply"};
}
-#line 3177 "src/mongo/db/cst/parser_gen.cpp"
+#line 3300 "parser_gen.cpp"
break;
- case 154: // aggExprAsUserFieldname: POW
-#line 913 "src/mongo/db/cst/grammar.yy"
+ case 166: // aggExprAsUserFieldname: POW
+#line 968 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$pow"};
}
-#line 3185 "src/mongo/db/cst/parser_gen.cpp"
+#line 3308 "parser_gen.cpp"
break;
- case 155: // aggExprAsUserFieldname: ROUND
-#line 916 "src/mongo/db/cst/grammar.yy"
+ case 167: // aggExprAsUserFieldname: ROUND
+#line 971 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$round"};
}
-#line 3193 "src/mongo/db/cst/parser_gen.cpp"
+#line 3316 "parser_gen.cpp"
break;
- case 156: // aggExprAsUserFieldname: "slice"
-#line 919 "src/mongo/db/cst/grammar.yy"
+ case 168: // aggExprAsUserFieldname: "slice"
+#line 974 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$slice"};
}
-#line 3201 "src/mongo/db/cst/parser_gen.cpp"
+#line 3324 "parser_gen.cpp"
break;
- case 157: // aggExprAsUserFieldname: SQRT
-#line 922 "src/mongo/db/cst/grammar.yy"
+ case 169: // aggExprAsUserFieldname: SQRT
+#line 977 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$sqrt"};
}
-#line 3209 "src/mongo/db/cst/parser_gen.cpp"
+#line 3332 "parser_gen.cpp"
break;
- case 158: // aggExprAsUserFieldname: SUBTRACT
-#line 925 "src/mongo/db/cst/grammar.yy"
+ case 170: // aggExprAsUserFieldname: SUBTRACT
+#line 980 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$subtract"};
}
-#line 3217 "src/mongo/db/cst/parser_gen.cpp"
+#line 3340 "parser_gen.cpp"
break;
- case 159: // aggExprAsUserFieldname: TRUNC
-#line 928 "src/mongo/db/cst/grammar.yy"
+ case 171: // aggExprAsUserFieldname: TRUNC
+#line 983 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$trunc"};
}
-#line 3225 "src/mongo/db/cst/parser_gen.cpp"
+#line 3348 "parser_gen.cpp"
break;
- case 160: // aggExprAsUserFieldname: CONCAT
-#line 931 "src/mongo/db/cst/grammar.yy"
+ case 172: // aggExprAsUserFieldname: CONCAT
+#line 986 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$concat"};
}
-#line 3233 "src/mongo/db/cst/parser_gen.cpp"
+#line 3356 "parser_gen.cpp"
break;
- case 161: // aggExprAsUserFieldname: DATE_FROM_STRING
-#line 934 "src/mongo/db/cst/grammar.yy"
+ case 173: // aggExprAsUserFieldname: DATE_FROM_STRING
+#line 989 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$dateFromString"};
}
-#line 3241 "src/mongo/db/cst/parser_gen.cpp"
+#line 3364 "parser_gen.cpp"
break;
- case 162: // aggExprAsUserFieldname: DATE_TO_STRING
-#line 937 "src/mongo/db/cst/grammar.yy"
+ case 174: // aggExprAsUserFieldname: DATE_TO_STRING
+#line 992 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$dateToString"};
}
-#line 3249 "src/mongo/db/cst/parser_gen.cpp"
+#line 3372 "parser_gen.cpp"
break;
- case 163: // aggExprAsUserFieldname: INDEX_OF_BYTES
-#line 940 "src/mongo/db/cst/grammar.yy"
+ case 175: // aggExprAsUserFieldname: INDEX_OF_BYTES
+#line 995 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$indexOfBytes"};
}
-#line 3257 "src/mongo/db/cst/parser_gen.cpp"
+#line 3380 "parser_gen.cpp"
break;
- case 164: // aggExprAsUserFieldname: INDEX_OF_CP
-#line 943 "src/mongo/db/cst/grammar.yy"
+ case 176: // aggExprAsUserFieldname: INDEX_OF_CP
+#line 998 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$indexOfCP"};
}
-#line 3265 "src/mongo/db/cst/parser_gen.cpp"
+#line 3388 "parser_gen.cpp"
break;
- case 165: // aggExprAsUserFieldname: LTRIM
-#line 946 "src/mongo/db/cst/grammar.yy"
+ case 177: // aggExprAsUserFieldname: LTRIM
+#line 1001 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$ltrim"};
}
-#line 3273 "src/mongo/db/cst/parser_gen.cpp"
+#line 3396 "parser_gen.cpp"
break;
- case 166: // aggExprAsUserFieldname: META
-#line 949 "src/mongo/db/cst/grammar.yy"
+ case 178: // aggExprAsUserFieldname: META
+#line 1004 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$meta"};
}
-#line 3281 "src/mongo/db/cst/parser_gen.cpp"
+#line 3404 "parser_gen.cpp"
break;
- case 167: // aggExprAsUserFieldname: REGEX_FIND
-#line 952 "src/mongo/db/cst/grammar.yy"
+ case 179: // aggExprAsUserFieldname: REGEX_FIND
+#line 1007 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$regexFind"};
}
-#line 3289 "src/mongo/db/cst/parser_gen.cpp"
+#line 3412 "parser_gen.cpp"
break;
- case 168: // aggExprAsUserFieldname: REGEX_FIND_ALL
-#line 955 "src/mongo/db/cst/grammar.yy"
+ case 180: // aggExprAsUserFieldname: REGEX_FIND_ALL
+#line 1010 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$regexFindAll"};
}
-#line 3297 "src/mongo/db/cst/parser_gen.cpp"
+#line 3420 "parser_gen.cpp"
break;
- case 169: // aggExprAsUserFieldname: REGEX_MATCH
-#line 958 "src/mongo/db/cst/grammar.yy"
+ case 181: // aggExprAsUserFieldname: REGEX_MATCH
+#line 1013 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$regexMatch"};
}
-#line 3305 "src/mongo/db/cst/parser_gen.cpp"
+#line 3428 "parser_gen.cpp"
break;
- case 170: // aggExprAsUserFieldname: REPLACE_ONE
-#line 961 "src/mongo/db/cst/grammar.yy"
+ case 182: // aggExprAsUserFieldname: REPLACE_ONE
+#line 1016 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$replaceOne"};
}
-#line 3313 "src/mongo/db/cst/parser_gen.cpp"
+#line 3436 "parser_gen.cpp"
break;
- case 171: // aggExprAsUserFieldname: REPLACE_ALL
-#line 964 "src/mongo/db/cst/grammar.yy"
+ case 183: // aggExprAsUserFieldname: REPLACE_ALL
+#line 1019 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$replaceAll"};
}
-#line 3321 "src/mongo/db/cst/parser_gen.cpp"
+#line 3444 "parser_gen.cpp"
break;
- case 172: // aggExprAsUserFieldname: RTRIM
-#line 967 "src/mongo/db/cst/grammar.yy"
+ case 184: // aggExprAsUserFieldname: RTRIM
+#line 1022 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$rtrim"};
}
-#line 3329 "src/mongo/db/cst/parser_gen.cpp"
+#line 3452 "parser_gen.cpp"
break;
- case 173: // aggExprAsUserFieldname: SPLIT
-#line 970 "src/mongo/db/cst/grammar.yy"
+ case 185: // aggExprAsUserFieldname: SPLIT
+#line 1025 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$split"};
}
-#line 3337 "src/mongo/db/cst/parser_gen.cpp"
+#line 3460 "parser_gen.cpp"
break;
- case 174: // aggExprAsUserFieldname: STR_LEN_BYTES
-#line 973 "src/mongo/db/cst/grammar.yy"
+ case 186: // aggExprAsUserFieldname: STR_LEN_BYTES
+#line 1028 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$strLenBytes"};
}
-#line 3345 "src/mongo/db/cst/parser_gen.cpp"
+#line 3468 "parser_gen.cpp"
break;
- case 175: // aggExprAsUserFieldname: STR_LEN_CP
-#line 976 "src/mongo/db/cst/grammar.yy"
+ case 187: // aggExprAsUserFieldname: STR_LEN_CP
+#line 1031 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$strLenCP"};
}
-#line 3353 "src/mongo/db/cst/parser_gen.cpp"
+#line 3476 "parser_gen.cpp"
break;
- case 176: // aggExprAsUserFieldname: STR_CASE_CMP
-#line 979 "src/mongo/db/cst/grammar.yy"
+ case 188: // aggExprAsUserFieldname: STR_CASE_CMP
+#line 1034 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$strcasecmp"};
}
-#line 3361 "src/mongo/db/cst/parser_gen.cpp"
+#line 3484 "parser_gen.cpp"
break;
- case 177: // aggExprAsUserFieldname: SUBSTR
-#line 982 "src/mongo/db/cst/grammar.yy"
+ case 189: // aggExprAsUserFieldname: SUBSTR
+#line 1037 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$substr"};
}
-#line 3369 "src/mongo/db/cst/parser_gen.cpp"
+#line 3492 "parser_gen.cpp"
break;
- case 178: // aggExprAsUserFieldname: SUBSTR_BYTES
-#line 985 "src/mongo/db/cst/grammar.yy"
+ case 190: // aggExprAsUserFieldname: SUBSTR_BYTES
+#line 1040 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$substrBytes"};
}
-#line 3377 "src/mongo/db/cst/parser_gen.cpp"
+#line 3500 "parser_gen.cpp"
break;
- case 179: // aggExprAsUserFieldname: SUBSTR_CP
-#line 988 "src/mongo/db/cst/grammar.yy"
+ case 191: // aggExprAsUserFieldname: SUBSTR_CP
+#line 1043 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$substrCP"};
}
-#line 3385 "src/mongo/db/cst/parser_gen.cpp"
+#line 3508 "parser_gen.cpp"
break;
- case 180: // aggExprAsUserFieldname: TO_LOWER
-#line 991 "src/mongo/db/cst/grammar.yy"
+ case 192: // aggExprAsUserFieldname: TO_LOWER
+#line 1046 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toLower"};
}
-#line 3393 "src/mongo/db/cst/parser_gen.cpp"
+#line 3516 "parser_gen.cpp"
break;
- case 181: // aggExprAsUserFieldname: TRIM
-#line 994 "src/mongo/db/cst/grammar.yy"
+ case 193: // aggExprAsUserFieldname: TRIM
+#line 1049 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$trim"};
}
-#line 3401 "src/mongo/db/cst/parser_gen.cpp"
+#line 3524 "parser_gen.cpp"
break;
- case 182: // aggExprAsUserFieldname: TO_UPPER
-#line 997 "src/mongo/db/cst/grammar.yy"
+ case 194: // aggExprAsUserFieldname: TO_UPPER
+#line 1052 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toUpper"};
}
-#line 3409 "src/mongo/db/cst/parser_gen.cpp"
+#line 3532 "parser_gen.cpp"
break;
- case 183: // aggExprAsUserFieldname: "allElementsTrue"
-#line 1000 "src/mongo/db/cst/grammar.yy"
+ case 195: // aggExprAsUserFieldname: "allElementsTrue"
+#line 1055 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$allElementsTrue"};
}
-#line 3417 "src/mongo/db/cst/parser_gen.cpp"
+#line 3540 "parser_gen.cpp"
break;
- case 184: // aggExprAsUserFieldname: "anyElementTrue"
-#line 1003 "src/mongo/db/cst/grammar.yy"
+ case 196: // aggExprAsUserFieldname: "anyElementTrue"
+#line 1058 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$anyElementTrue"};
}
-#line 3425 "src/mongo/db/cst/parser_gen.cpp"
+#line 3548 "parser_gen.cpp"
break;
- case 185: // aggExprAsUserFieldname: "setDifference"
-#line 1006 "src/mongo/db/cst/grammar.yy"
+ case 197: // aggExprAsUserFieldname: "setDifference"
+#line 1061 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$setDifference"};
}
-#line 3433 "src/mongo/db/cst/parser_gen.cpp"
+#line 3556 "parser_gen.cpp"
break;
- case 186: // aggExprAsUserFieldname: "setEquals"
-#line 1009 "src/mongo/db/cst/grammar.yy"
+ case 198: // aggExprAsUserFieldname: "setEquals"
+#line 1064 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$setEquals"};
}
-#line 3441 "src/mongo/db/cst/parser_gen.cpp"
+#line 3564 "parser_gen.cpp"
break;
- case 187: // aggExprAsUserFieldname: "setIntersection"
-#line 1012 "src/mongo/db/cst/grammar.yy"
+ case 199: // aggExprAsUserFieldname: "setIntersection"
+#line 1067 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$setIntersection"};
}
-#line 3449 "src/mongo/db/cst/parser_gen.cpp"
+#line 3572 "parser_gen.cpp"
break;
- case 188: // aggExprAsUserFieldname: "setIsSubset"
-#line 1015 "src/mongo/db/cst/grammar.yy"
+ case 200: // aggExprAsUserFieldname: "setIsSubset"
+#line 1070 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$setIsSubset"};
}
-#line 3457 "src/mongo/db/cst/parser_gen.cpp"
+#line 3580 "parser_gen.cpp"
break;
- case 189: // aggExprAsUserFieldname: "setUnion"
-#line 1018 "src/mongo/db/cst/grammar.yy"
+ case 201: // aggExprAsUserFieldname: "setUnion"
+#line 1073 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$setUnion"};
}
-#line 3465 "src/mongo/db/cst/parser_gen.cpp"
+#line 3588 "parser_gen.cpp"
break;
- case 190: // aggExprAsUserFieldname: SIN
-#line 1021 "src/mongo/db/cst/grammar.yy"
+ case 202: // aggExprAsUserFieldname: SIN
+#line 1076 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$sin"};
}
-#line 3473 "src/mongo/db/cst/parser_gen.cpp"
+#line 3596 "parser_gen.cpp"
break;
- case 191: // aggExprAsUserFieldname: COS
-#line 1024 "src/mongo/db/cst/grammar.yy"
+ case 203: // aggExprAsUserFieldname: COS
+#line 1079 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$cos"};
}
-#line 3481 "src/mongo/db/cst/parser_gen.cpp"
+#line 3604 "parser_gen.cpp"
break;
- case 192: // aggExprAsUserFieldname: TAN
-#line 1027 "src/mongo/db/cst/grammar.yy"
+ case 204: // aggExprAsUserFieldname: TAN
+#line 1082 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$tan"};
}
-#line 3489 "src/mongo/db/cst/parser_gen.cpp"
+#line 3612 "parser_gen.cpp"
break;
- case 193: // aggExprAsUserFieldname: SINH
-#line 1030 "src/mongo/db/cst/grammar.yy"
+ case 205: // aggExprAsUserFieldname: SINH
+#line 1085 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$sinh"};
}
-#line 3497 "src/mongo/db/cst/parser_gen.cpp"
+#line 3620 "parser_gen.cpp"
break;
- case 194: // aggExprAsUserFieldname: COSH
-#line 1033 "src/mongo/db/cst/grammar.yy"
+ case 206: // aggExprAsUserFieldname: COSH
+#line 1088 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$cosh"};
}
-#line 3505 "src/mongo/db/cst/parser_gen.cpp"
+#line 3628 "parser_gen.cpp"
break;
- case 195: // aggExprAsUserFieldname: TANH
-#line 1036 "src/mongo/db/cst/grammar.yy"
+ case 207: // aggExprAsUserFieldname: TANH
+#line 1091 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$tanh"};
}
-#line 3513 "src/mongo/db/cst/parser_gen.cpp"
+#line 3636 "parser_gen.cpp"
break;
- case 196: // aggExprAsUserFieldname: ASIN
-#line 1039 "src/mongo/db/cst/grammar.yy"
+ case 208: // aggExprAsUserFieldname: ASIN
+#line 1094 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$asin"};
}
-#line 3521 "src/mongo/db/cst/parser_gen.cpp"
+#line 3644 "parser_gen.cpp"
break;
- case 197: // aggExprAsUserFieldname: ACOS
-#line 1042 "src/mongo/db/cst/grammar.yy"
+ case 209: // aggExprAsUserFieldname: ACOS
+#line 1097 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$acos"};
}
-#line 3529 "src/mongo/db/cst/parser_gen.cpp"
+#line 3652 "parser_gen.cpp"
break;
- case 198: // aggExprAsUserFieldname: ATAN
-#line 1045 "src/mongo/db/cst/grammar.yy"
+ case 210: // aggExprAsUserFieldname: ATAN
+#line 1100 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$atan"};
}
-#line 3537 "src/mongo/db/cst/parser_gen.cpp"
+#line 3660 "parser_gen.cpp"
break;
- case 199: // aggExprAsUserFieldname: ASINH
-#line 1048 "src/mongo/db/cst/grammar.yy"
+ case 211: // aggExprAsUserFieldname: ASINH
+#line 1103 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$asinh"};
}
-#line 3545 "src/mongo/db/cst/parser_gen.cpp"
+#line 3668 "parser_gen.cpp"
break;
- case 200: // aggExprAsUserFieldname: ACOSH
-#line 1051 "src/mongo/db/cst/grammar.yy"
+ case 212: // aggExprAsUserFieldname: ACOSH
+#line 1106 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$acosh"};
}
-#line 3553 "src/mongo/db/cst/parser_gen.cpp"
+#line 3676 "parser_gen.cpp"
break;
- case 201: // aggExprAsUserFieldname: ATANH
-#line 1054 "src/mongo/db/cst/grammar.yy"
+ case 213: // aggExprAsUserFieldname: ATANH
+#line 1109 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$atanh"};
}
-#line 3561 "src/mongo/db/cst/parser_gen.cpp"
+#line 3684 "parser_gen.cpp"
break;
- case 202: // aggExprAsUserFieldname: DEGREES_TO_RADIANS
-#line 1057 "src/mongo/db/cst/grammar.yy"
+ case 214: // aggExprAsUserFieldname: DEGREES_TO_RADIANS
+#line 1112 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$degreesToRadians"};
}
-#line 3569 "src/mongo/db/cst/parser_gen.cpp"
+#line 3692 "parser_gen.cpp"
break;
- case 203: // aggExprAsUserFieldname: RADIANS_TO_DEGREES
-#line 1060 "src/mongo/db/cst/grammar.yy"
+ case 215: // aggExprAsUserFieldname: RADIANS_TO_DEGREES
+#line 1115 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$radiansToDegrees"};
}
-#line 3577 "src/mongo/db/cst/parser_gen.cpp"
+#line 3700 "parser_gen.cpp"
break;
- case 204: // string: "string"
-#line 1067 "src/mongo/db/cst/grammar.yy"
+ case 216: // string: "string"
+#line 1122 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{UserString{YY_MOVE(yystack_[0].value.as<std::string>())}};
}
-#line 3585 "src/mongo/db/cst/parser_gen.cpp"
+#line 3708 "parser_gen.cpp"
break;
- case 205: // string: "geoNearDistance"
-#line 1072 "src/mongo/db/cst/grammar.yy"
+ case 217: // string: "geoNearDistance"
+#line 1127 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserString{"geoNearDistance"}};
}
-#line 3593 "src/mongo/db/cst/parser_gen.cpp"
+#line 3716 "parser_gen.cpp"
break;
- case 206: // string: "geoNearPoint"
-#line 1075 "src/mongo/db/cst/grammar.yy"
+ case 218: // string: "geoNearPoint"
+#line 1130 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserString{"geoNearPoint"}};
}
-#line 3601 "src/mongo/db/cst/parser_gen.cpp"
+#line 3724 "parser_gen.cpp"
break;
- case 207: // string: "indexKey"
-#line 1078 "src/mongo/db/cst/grammar.yy"
+ case 219: // string: "indexKey"
+#line 1133 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserString{"indexKey"}};
}
-#line 3609 "src/mongo/db/cst/parser_gen.cpp"
+#line 3732 "parser_gen.cpp"
break;
- case 208: // string: "randVal"
-#line 1081 "src/mongo/db/cst/grammar.yy"
+ case 220: // string: "randVal"
+#line 1136 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserString{"randVal"}};
}
-#line 3617 "src/mongo/db/cst/parser_gen.cpp"
+#line 3740 "parser_gen.cpp"
break;
- case 209: // string: "recordId"
-#line 1084 "src/mongo/db/cst/grammar.yy"
+ case 221: // string: "recordId"
+#line 1139 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserString{"recordId"}};
}
-#line 3625 "src/mongo/db/cst/parser_gen.cpp"
+#line 3748 "parser_gen.cpp"
break;
- case 210: // string: "searchHighlights"
-#line 1087 "src/mongo/db/cst/grammar.yy"
+ case 222: // string: "searchHighlights"
+#line 1142 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserString{"searchHighlights"}};
}
-#line 3633 "src/mongo/db/cst/parser_gen.cpp"
+#line 3756 "parser_gen.cpp"
break;
- case 211: // string: "searchScore"
-#line 1090 "src/mongo/db/cst/grammar.yy"
+ case 223: // string: "searchScore"
+#line 1145 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserString{"searchScore"}};
}
-#line 3641 "src/mongo/db/cst/parser_gen.cpp"
+#line 3764 "parser_gen.cpp"
break;
- case 212: // string: "sortKey"
-#line 1093 "src/mongo/db/cst/grammar.yy"
+ case 224: // string: "sortKey"
+#line 1148 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserString{"sortKey"}};
}
-#line 3649 "src/mongo/db/cst/parser_gen.cpp"
+#line 3772 "parser_gen.cpp"
break;
- case 213: // string: "textScore"
-#line 1096 "src/mongo/db/cst/grammar.yy"
+ case 225: // string: "textScore"
+#line 1151 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserString{"textScore"}};
}
-#line 3657 "src/mongo/db/cst/parser_gen.cpp"
+#line 3780 "parser_gen.cpp"
break;
- case 214: // aggregationFieldPath: "$-prefixed string"
-#line 1102 "src/mongo/db/cst/grammar.yy"
+ case 226: // aggregationFieldPath: "$-prefixed string"
+#line 1157 "grammar.yy"
{
auto str = YY_MOVE(yystack_[0].value.as<std::string>());
auto components = std::vector<std::string>{};
@@ -3744,11 +3893,11 @@ int ParserGen::parse() {
error(yystack_[0].location, status.reason());
yylhs.value.as<CNode>() = CNode{AggregationPath{std::move(components)}};
}
-#line 3673 "src/mongo/db/cst/parser_gen.cpp"
+#line 3796 "parser_gen.cpp"
break;
- case 215: // variable: "$$-prefixed string"
-#line 1116 "src/mongo/db/cst/grammar.yy"
+ case 227: // variable: "$$-prefixed string"
+#line 1171 "grammar.yy"
{
auto str = YY_MOVE(yystack_[0].value.as<std::string>());
auto components = std::vector<std::string>{};
@@ -3762,1228 +3911,1228 @@ int ParserGen::parse() {
yylhs.value.as<CNode>() =
CNode{AggregationVariablePath{std::move(components)}};
}
-#line 3689 "src/mongo/db/cst/parser_gen.cpp"
+#line 3812 "parser_gen.cpp"
break;
- case 216: // binary: "BinData"
-#line 1130 "src/mongo/db/cst/grammar.yy"
+ case 228: // binary: "BinData"
+#line 1185 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{UserBinary{YY_MOVE(yystack_[0].value.as<BSONBinData>())}};
}
-#line 3697 "src/mongo/db/cst/parser_gen.cpp"
+#line 3820 "parser_gen.cpp"
break;
- case 217: // undefined: "undefined"
-#line 1136 "src/mongo/db/cst/grammar.yy"
+ case 229: // undefined: "undefined"
+#line 1191 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserUndefined{}};
}
-#line 3705 "src/mongo/db/cst/parser_gen.cpp"
+#line 3828 "parser_gen.cpp"
break;
- case 218: // objectId: "ObjectID"
-#line 1142 "src/mongo/db/cst/grammar.yy"
+ case 230: // objectId: "ObjectID"
+#line 1197 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserObjectId{}};
}
-#line 3713 "src/mongo/db/cst/parser_gen.cpp"
+#line 3836 "parser_gen.cpp"
break;
- case 219: // date: "Date"
-#line 1148 "src/mongo/db/cst/grammar.yy"
+ case 231: // date: "Date"
+#line 1203 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{UserDate{YY_MOVE(yystack_[0].value.as<Date_t>())}};
}
-#line 3721 "src/mongo/db/cst/parser_gen.cpp"
+#line 3844 "parser_gen.cpp"
break;
- case 220: // null: "null"
-#line 1154 "src/mongo/db/cst/grammar.yy"
+ case 232: // null: "null"
+#line 1209 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserNull{}};
}
-#line 3729 "src/mongo/db/cst/parser_gen.cpp"
+#line 3852 "parser_gen.cpp"
break;
- case 221: // regex: "regex"
-#line 1160 "src/mongo/db/cst/grammar.yy"
+ case 233: // regex: "regex"
+#line 1215 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{UserRegex{YY_MOVE(yystack_[0].value.as<BSONRegEx>())}};
}
-#line 3737 "src/mongo/db/cst/parser_gen.cpp"
+#line 3860 "parser_gen.cpp"
break;
- case 222: // dbPointer: "dbPointer"
-#line 1166 "src/mongo/db/cst/grammar.yy"
+ case 234: // dbPointer: "dbPointer"
+#line 1221 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{UserDBPointer{YY_MOVE(yystack_[0].value.as<BSONDBRef>())}};
}
-#line 3745 "src/mongo/db/cst/parser_gen.cpp"
+#line 3868 "parser_gen.cpp"
break;
- case 223: // javascript: "Code"
-#line 1172 "src/mongo/db/cst/grammar.yy"
+ case 235: // javascript: "Code"
+#line 1227 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{UserJavascript{YY_MOVE(yystack_[0].value.as<BSONCode>())}};
}
-#line 3753 "src/mongo/db/cst/parser_gen.cpp"
+#line 3876 "parser_gen.cpp"
break;
- case 224: // symbol: "Symbol"
-#line 1178 "src/mongo/db/cst/grammar.yy"
+ case 236: // symbol: "Symbol"
+#line 1233 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{UserSymbol{YY_MOVE(yystack_[0].value.as<BSONSymbol>())}};
}
-#line 3761 "src/mongo/db/cst/parser_gen.cpp"
+#line 3884 "parser_gen.cpp"
break;
- case 225: // javascriptWScope: "CodeWScope"
-#line 1184 "src/mongo/db/cst/grammar.yy"
+ case 237: // javascriptWScope: "CodeWScope"
+#line 1239 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserJavascriptWithScope{
YY_MOVE(yystack_[0].value.as<BSONCodeWScope>())}};
}
-#line 3769 "src/mongo/db/cst/parser_gen.cpp"
+#line 3892 "parser_gen.cpp"
break;
- case 226: // timestamp: "Timestamp"
-#line 1190 "src/mongo/db/cst/grammar.yy"
+ case 238: // timestamp: "Timestamp"
+#line 1245 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{UserTimestamp{YY_MOVE(yystack_[0].value.as<Timestamp>())}};
}
-#line 3777 "src/mongo/db/cst/parser_gen.cpp"
+#line 3900 "parser_gen.cpp"
break;
- case 227: // minKey: "minKey"
-#line 1196 "src/mongo/db/cst/grammar.yy"
+ case 239: // minKey: "minKey"
+#line 1251 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{UserMinKey{YY_MOVE(yystack_[0].value.as<UserMinKey>())}};
}
-#line 3785 "src/mongo/db/cst/parser_gen.cpp"
+#line 3908 "parser_gen.cpp"
break;
- case 228: // maxKey: "maxKey"
-#line 1202 "src/mongo/db/cst/grammar.yy"
+ case 240: // maxKey: "maxKey"
+#line 1257 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{UserMaxKey{YY_MOVE(yystack_[0].value.as<UserMaxKey>())}};
}
-#line 3793 "src/mongo/db/cst/parser_gen.cpp"
+#line 3916 "parser_gen.cpp"
break;
- case 229: // int: "arbitrary integer"
-#line 1208 "src/mongo/db/cst/grammar.yy"
+ case 241: // int: "arbitrary integer"
+#line 1263 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{UserInt{YY_MOVE(yystack_[0].value.as<int>())}};
}
-#line 3801 "src/mongo/db/cst/parser_gen.cpp"
+#line 3924 "parser_gen.cpp"
break;
- case 230: // int: "zero (int)"
-#line 1211 "src/mongo/db/cst/grammar.yy"
+ case 242: // int: "zero (int)"
+#line 1266 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserInt{0}};
}
-#line 3809 "src/mongo/db/cst/parser_gen.cpp"
+#line 3932 "parser_gen.cpp"
break;
- case 231: // int: "1 (int)"
-#line 1214 "src/mongo/db/cst/grammar.yy"
+ case 243: // int: "1 (int)"
+#line 1269 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserInt{1}};
}
-#line 3817 "src/mongo/db/cst/parser_gen.cpp"
+#line 3940 "parser_gen.cpp"
break;
- case 232: // int: "-1 (int)"
-#line 1217 "src/mongo/db/cst/grammar.yy"
+ case 244: // int: "-1 (int)"
+#line 1272 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserInt{-1}};
}
-#line 3825 "src/mongo/db/cst/parser_gen.cpp"
+#line 3948 "parser_gen.cpp"
break;
- case 233: // long: "arbitrary long"
-#line 1223 "src/mongo/db/cst/grammar.yy"
+ case 245: // long: "arbitrary long"
+#line 1278 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{UserLong{YY_MOVE(yystack_[0].value.as<long long>())}};
}
-#line 3833 "src/mongo/db/cst/parser_gen.cpp"
+#line 3956 "parser_gen.cpp"
break;
- case 234: // long: "zero (long)"
-#line 1226 "src/mongo/db/cst/grammar.yy"
+ case 246: // long: "zero (long)"
+#line 1281 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserLong{0ll}};
}
-#line 3841 "src/mongo/db/cst/parser_gen.cpp"
+#line 3964 "parser_gen.cpp"
break;
- case 235: // long: "1 (long)"
-#line 1229 "src/mongo/db/cst/grammar.yy"
+ case 247: // long: "1 (long)"
+#line 1284 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserLong{1ll}};
}
-#line 3849 "src/mongo/db/cst/parser_gen.cpp"
+#line 3972 "parser_gen.cpp"
break;
- case 236: // long: "-1 (long)"
-#line 1232 "src/mongo/db/cst/grammar.yy"
+ case 248: // long: "-1 (long)"
+#line 1287 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserLong{-1ll}};
}
-#line 3857 "src/mongo/db/cst/parser_gen.cpp"
+#line 3980 "parser_gen.cpp"
break;
- case 237: // double: "arbitrary double"
-#line 1238 "src/mongo/db/cst/grammar.yy"
+ case 249: // double: "arbitrary double"
+#line 1293 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{UserDouble{YY_MOVE(yystack_[0].value.as<double>())}};
}
-#line 3865 "src/mongo/db/cst/parser_gen.cpp"
+#line 3988 "parser_gen.cpp"
break;
- case 238: // double: "zero (double)"
-#line 1241 "src/mongo/db/cst/grammar.yy"
+ case 250: // double: "zero (double)"
+#line 1296 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserDouble{0.0}};
}
-#line 3873 "src/mongo/db/cst/parser_gen.cpp"
+#line 3996 "parser_gen.cpp"
break;
- case 239: // double: "1 (double)"
-#line 1244 "src/mongo/db/cst/grammar.yy"
+ case 251: // double: "1 (double)"
+#line 1299 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserDouble{1.0}};
}
-#line 3881 "src/mongo/db/cst/parser_gen.cpp"
+#line 4004 "parser_gen.cpp"
break;
- case 240: // double: "-1 (double)"
-#line 1247 "src/mongo/db/cst/grammar.yy"
+ case 252: // double: "-1 (double)"
+#line 1302 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserDouble{-1.0}};
}
-#line 3889 "src/mongo/db/cst/parser_gen.cpp"
+#line 4012 "parser_gen.cpp"
break;
- case 241: // decimal: "arbitrary decimal"
-#line 1253 "src/mongo/db/cst/grammar.yy"
+ case 253: // decimal: "arbitrary decimal"
+#line 1308 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{UserDecimal{YY_MOVE(yystack_[0].value.as<Decimal128>())}};
}
-#line 3897 "src/mongo/db/cst/parser_gen.cpp"
+#line 4020 "parser_gen.cpp"
break;
- case 242: // decimal: "zero (decimal)"
-#line 1256 "src/mongo/db/cst/grammar.yy"
+ case 254: // decimal: "zero (decimal)"
+#line 1311 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserDecimal{0.0}};
}
-#line 3905 "src/mongo/db/cst/parser_gen.cpp"
+#line 4028 "parser_gen.cpp"
break;
- case 243: // decimal: "1 (decimal)"
-#line 1259 "src/mongo/db/cst/grammar.yy"
+ case 255: // decimal: "1 (decimal)"
+#line 1314 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserDecimal{1.0}};
}
-#line 3913 "src/mongo/db/cst/parser_gen.cpp"
+#line 4036 "parser_gen.cpp"
break;
- case 244: // decimal: "-1 (decimal)"
-#line 1262 "src/mongo/db/cst/grammar.yy"
+ case 256: // decimal: "-1 (decimal)"
+#line 1317 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserDecimal{-1.0}};
}
-#line 3921 "src/mongo/db/cst/parser_gen.cpp"
+#line 4044 "parser_gen.cpp"
break;
- case 245: // bool: "true"
-#line 1268 "src/mongo/db/cst/grammar.yy"
+ case 257: // bool: "true"
+#line 1323 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserBoolean{true}};
}
-#line 3929 "src/mongo/db/cst/parser_gen.cpp"
+#line 4052 "parser_gen.cpp"
break;
- case 246: // bool: "false"
-#line 1271 "src/mongo/db/cst/grammar.yy"
+ case 258: // bool: "false"
+#line 1326 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{UserBoolean{false}};
}
-#line 3937 "src/mongo/db/cst/parser_gen.cpp"
+#line 4060 "parser_gen.cpp"
break;
- case 247: // simpleValue: string
-#line 1277 "src/mongo/db/cst/grammar.yy"
+ case 259: // simpleValue: string
+#line 1332 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 3943 "src/mongo/db/cst/parser_gen.cpp"
+#line 4066 "parser_gen.cpp"
break;
- case 248: // simpleValue: aggregationFieldPath
-#line 1278 "src/mongo/db/cst/grammar.yy"
+ case 260: // simpleValue: aggregationFieldPath
+#line 1333 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 3949 "src/mongo/db/cst/parser_gen.cpp"
+#line 4072 "parser_gen.cpp"
break;
- case 249: // simpleValue: variable
-#line 1279 "src/mongo/db/cst/grammar.yy"
+ case 261: // simpleValue: variable
+#line 1334 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 3955 "src/mongo/db/cst/parser_gen.cpp"
+#line 4078 "parser_gen.cpp"
break;
- case 250: // simpleValue: binary
-#line 1280 "src/mongo/db/cst/grammar.yy"
+ case 262: // simpleValue: binary
+#line 1335 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 3961 "src/mongo/db/cst/parser_gen.cpp"
+#line 4084 "parser_gen.cpp"
break;
- case 251: // simpleValue: undefined
-#line 1281 "src/mongo/db/cst/grammar.yy"
+ case 263: // simpleValue: undefined
+#line 1336 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 3967 "src/mongo/db/cst/parser_gen.cpp"
+#line 4090 "parser_gen.cpp"
break;
- case 252: // simpleValue: objectId
-#line 1282 "src/mongo/db/cst/grammar.yy"
+ case 264: // simpleValue: objectId
+#line 1337 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 3973 "src/mongo/db/cst/parser_gen.cpp"
+#line 4096 "parser_gen.cpp"
break;
- case 253: // simpleValue: date
-#line 1283 "src/mongo/db/cst/grammar.yy"
+ case 265: // simpleValue: date
+#line 1338 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 3979 "src/mongo/db/cst/parser_gen.cpp"
+#line 4102 "parser_gen.cpp"
break;
- case 254: // simpleValue: null
-#line 1284 "src/mongo/db/cst/grammar.yy"
+ case 266: // simpleValue: null
+#line 1339 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 3985 "src/mongo/db/cst/parser_gen.cpp"
+#line 4108 "parser_gen.cpp"
break;
- case 255: // simpleValue: regex
-#line 1285 "src/mongo/db/cst/grammar.yy"
+ case 267: // simpleValue: regex
+#line 1340 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 3991 "src/mongo/db/cst/parser_gen.cpp"
+#line 4114 "parser_gen.cpp"
break;
- case 256: // simpleValue: dbPointer
-#line 1286 "src/mongo/db/cst/grammar.yy"
+ case 268: // simpleValue: dbPointer
+#line 1341 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 3997 "src/mongo/db/cst/parser_gen.cpp"
+#line 4120 "parser_gen.cpp"
break;
- case 257: // simpleValue: javascript
-#line 1287 "src/mongo/db/cst/grammar.yy"
+ case 269: // simpleValue: javascript
+#line 1342 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4003 "src/mongo/db/cst/parser_gen.cpp"
+#line 4126 "parser_gen.cpp"
break;
- case 258: // simpleValue: symbol
-#line 1288 "src/mongo/db/cst/grammar.yy"
+ case 270: // simpleValue: symbol
+#line 1343 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4009 "src/mongo/db/cst/parser_gen.cpp"
+#line 4132 "parser_gen.cpp"
break;
- case 259: // simpleValue: javascriptWScope
-#line 1289 "src/mongo/db/cst/grammar.yy"
+ case 271: // simpleValue: javascriptWScope
+#line 1344 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4015 "src/mongo/db/cst/parser_gen.cpp"
+#line 4138 "parser_gen.cpp"
break;
- case 260: // simpleValue: int
-#line 1290 "src/mongo/db/cst/grammar.yy"
+ case 272: // simpleValue: int
+#line 1345 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4021 "src/mongo/db/cst/parser_gen.cpp"
+#line 4144 "parser_gen.cpp"
break;
- case 261: // simpleValue: long
-#line 1291 "src/mongo/db/cst/grammar.yy"
+ case 273: // simpleValue: long
+#line 1346 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4027 "src/mongo/db/cst/parser_gen.cpp"
+#line 4150 "parser_gen.cpp"
break;
- case 262: // simpleValue: double
-#line 1292 "src/mongo/db/cst/grammar.yy"
+ case 274: // simpleValue: double
+#line 1347 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4033 "src/mongo/db/cst/parser_gen.cpp"
+#line 4156 "parser_gen.cpp"
break;
- case 263: // simpleValue: decimal
-#line 1293 "src/mongo/db/cst/grammar.yy"
+ case 275: // simpleValue: decimal
+#line 1348 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4039 "src/mongo/db/cst/parser_gen.cpp"
+#line 4162 "parser_gen.cpp"
break;
- case 264: // simpleValue: bool
-#line 1294 "src/mongo/db/cst/grammar.yy"
+ case 276: // simpleValue: bool
+#line 1349 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4045 "src/mongo/db/cst/parser_gen.cpp"
+#line 4168 "parser_gen.cpp"
break;
- case 265: // simpleValue: timestamp
-#line 1295 "src/mongo/db/cst/grammar.yy"
+ case 277: // simpleValue: timestamp
+#line 1350 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4051 "src/mongo/db/cst/parser_gen.cpp"
+#line 4174 "parser_gen.cpp"
break;
- case 266: // simpleValue: minKey
-#line 1296 "src/mongo/db/cst/grammar.yy"
+ case 278: // simpleValue: minKey
+#line 1351 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4057 "src/mongo/db/cst/parser_gen.cpp"
+#line 4180 "parser_gen.cpp"
break;
- case 267: // simpleValue: maxKey
-#line 1297 "src/mongo/db/cst/grammar.yy"
+ case 279: // simpleValue: maxKey
+#line 1352 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4063 "src/mongo/db/cst/parser_gen.cpp"
+#line 4186 "parser_gen.cpp"
break;
- case 268: // expressions: %empty
-#line 1304 "src/mongo/db/cst/grammar.yy"
+ case 280: // expressions: %empty
+#line 1359 "grammar.yy"
{
}
-#line 4069 "src/mongo/db/cst/parser_gen.cpp"
+#line 4192 "parser_gen.cpp"
break;
- case 269: // expressions: expressions expression
-#line 1305 "src/mongo/db/cst/grammar.yy"
+ case 281: // expressions: expressions expression
+#line 1360 "grammar.yy"
{
yylhs.value.as<std::vector<CNode>>() =
YY_MOVE(yystack_[1].value.as<std::vector<CNode>>());
yylhs.value.as<std::vector<CNode>>().emplace_back(
YY_MOVE(yystack_[0].value.as<CNode>()));
}
-#line 4078 "src/mongo/db/cst/parser_gen.cpp"
+#line 4201 "parser_gen.cpp"
break;
- case 270: // expression: simpleValue
-#line 1312 "src/mongo/db/cst/grammar.yy"
+ case 282: // expression: simpleValue
+#line 1367 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4084 "src/mongo/db/cst/parser_gen.cpp"
+#line 4207 "parser_gen.cpp"
break;
- case 271: // expression: expressionObject
-#line 1312 "src/mongo/db/cst/grammar.yy"
+ case 283: // expression: expressionObject
+#line 1367 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4090 "src/mongo/db/cst/parser_gen.cpp"
+#line 4213 "parser_gen.cpp"
break;
- case 272: // expression: expressionArray
-#line 1312 "src/mongo/db/cst/grammar.yy"
+ case 284: // expression: expressionArray
+#line 1367 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4096 "src/mongo/db/cst/parser_gen.cpp"
+#line 4219 "parser_gen.cpp"
break;
- case 273: // expression: nonArrayNonObjCompoundExpression
-#line 1312 "src/mongo/db/cst/grammar.yy"
+ case 285: // expression: nonArrayNonObjCompoundExpression
+#line 1367 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4102 "src/mongo/db/cst/parser_gen.cpp"
+#line 4225 "parser_gen.cpp"
break;
- case 274: // nonArrayExpression: simpleValue
-#line 1316 "src/mongo/db/cst/grammar.yy"
+ case 286: // nonArrayExpression: simpleValue
+#line 1371 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4108 "src/mongo/db/cst/parser_gen.cpp"
+#line 4231 "parser_gen.cpp"
break;
- case 275: // nonArrayExpression: nonArrayCompoundExpression
-#line 1316 "src/mongo/db/cst/grammar.yy"
+ case 287: // nonArrayExpression: nonArrayCompoundExpression
+#line 1371 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4114 "src/mongo/db/cst/parser_gen.cpp"
+#line 4237 "parser_gen.cpp"
break;
- case 276: // nonArrayCompoundExpression: expressionObject
-#line 1320 "src/mongo/db/cst/grammar.yy"
+ case 288: // nonArrayCompoundExpression: expressionObject
+#line 1375 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4120 "src/mongo/db/cst/parser_gen.cpp"
+#line 4243 "parser_gen.cpp"
break;
- case 277: // nonArrayCompoundExpression: nonArrayNonObjCompoundExpression
-#line 1320 "src/mongo/db/cst/grammar.yy"
+ case 289: // nonArrayCompoundExpression: nonArrayNonObjCompoundExpression
+#line 1375 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4126 "src/mongo/db/cst/parser_gen.cpp"
+#line 4249 "parser_gen.cpp"
break;
- case 278: // nonArrayNonObjCompoundExpression: arrayManipulation
-#line 1324 "src/mongo/db/cst/grammar.yy"
+ case 290: // nonArrayNonObjCompoundExpression: arrayManipulation
+#line 1379 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4132 "src/mongo/db/cst/parser_gen.cpp"
+#line 4255 "parser_gen.cpp"
break;
- case 279: // nonArrayNonObjCompoundExpression: maths
-#line 1324 "src/mongo/db/cst/grammar.yy"
+ case 291: // nonArrayNonObjCompoundExpression: maths
+#line 1379 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4138 "src/mongo/db/cst/parser_gen.cpp"
+#line 4261 "parser_gen.cpp"
break;
- case 280: // nonArrayNonObjCompoundExpression: meta
-#line 1324 "src/mongo/db/cst/grammar.yy"
+ case 292: // nonArrayNonObjCompoundExpression: meta
+#line 1379 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4144 "src/mongo/db/cst/parser_gen.cpp"
+#line 4267 "parser_gen.cpp"
break;
- case 281: // nonArrayNonObjCompoundExpression: boolExprs
-#line 1324 "src/mongo/db/cst/grammar.yy"
+ case 293: // nonArrayNonObjCompoundExpression: boolExprs
+#line 1379 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4150 "src/mongo/db/cst/parser_gen.cpp"
+#line 4273 "parser_gen.cpp"
break;
- case 282: // nonArrayNonObjCompoundExpression: literalEscapes
-#line 1324 "src/mongo/db/cst/grammar.yy"
+ case 294: // nonArrayNonObjCompoundExpression: literalEscapes
+#line 1379 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4156 "src/mongo/db/cst/parser_gen.cpp"
+#line 4279 "parser_gen.cpp"
break;
- case 283: // nonArrayNonObjCompoundExpression: compExprs
-#line 1324 "src/mongo/db/cst/grammar.yy"
+ case 295: // nonArrayNonObjCompoundExpression: compExprs
+#line 1379 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4162 "src/mongo/db/cst/parser_gen.cpp"
+#line 4285 "parser_gen.cpp"
break;
- case 284: // nonArrayNonObjCompoundExpression: typeExpression
-#line 1324 "src/mongo/db/cst/grammar.yy"
+ case 296: // nonArrayNonObjCompoundExpression: typeExpression
+#line 1379 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4168 "src/mongo/db/cst/parser_gen.cpp"
+#line 4291 "parser_gen.cpp"
break;
- case 285: // nonArrayNonObjCompoundExpression: stringExps
-#line 1325 "src/mongo/db/cst/grammar.yy"
+ case 297: // nonArrayNonObjCompoundExpression: stringExps
+#line 1380 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4174 "src/mongo/db/cst/parser_gen.cpp"
+#line 4297 "parser_gen.cpp"
break;
- case 286: // nonArrayNonObjCompoundExpression: setExpression
-#line 1325 "src/mongo/db/cst/grammar.yy"
+ case 298: // nonArrayNonObjCompoundExpression: setExpression
+#line 1380 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4180 "src/mongo/db/cst/parser_gen.cpp"
+#line 4303 "parser_gen.cpp"
break;
- case 287: // nonArrayNonObjCompoundExpression: trig
-#line 1325 "src/mongo/db/cst/grammar.yy"
+ case 299: // nonArrayNonObjCompoundExpression: trig
+#line 1380 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4186 "src/mongo/db/cst/parser_gen.cpp"
+#line 4309 "parser_gen.cpp"
break;
- case 288: // exprFixedTwoArg: "array" expression expression "end of array"
-#line 1330 "src/mongo/db/cst/grammar.yy"
+ case 300: // exprFixedTwoArg: "array" expression expression "end of array"
+#line 1385 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[2].value.as<CNode>()),
YY_MOVE(yystack_[1].value.as<CNode>())}};
}
-#line 4194 "src/mongo/db/cst/parser_gen.cpp"
+#line 4317 "parser_gen.cpp"
break;
- case 289: // exprFixedThreeArg: "array" expression expression expression "end
+ case 301: // exprFixedThreeArg: "array" expression expression expression "end
// of array"
-#line 1337 "src/mongo/db/cst/grammar.yy"
+#line 1392 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[3].value.as<CNode>()),
YY_MOVE(yystack_[2].value.as<CNode>()),
YY_MOVE(yystack_[1].value.as<CNode>())}};
}
-#line 4202 "src/mongo/db/cst/parser_gen.cpp"
+#line 4325 "parser_gen.cpp"
break;
- case 290: // compoundNonObjectExpression: expressionArray
-#line 1343 "src/mongo/db/cst/grammar.yy"
+ case 302: // compoundNonObjectExpression: expressionArray
+#line 1398 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4208 "src/mongo/db/cst/parser_gen.cpp"
+#line 4331 "parser_gen.cpp"
break;
- case 291: // compoundNonObjectExpression: nonArrayNonObjCompoundExpression
-#line 1343 "src/mongo/db/cst/grammar.yy"
+ case 303: // compoundNonObjectExpression: nonArrayNonObjCompoundExpression
+#line 1398 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4214 "src/mongo/db/cst/parser_gen.cpp"
+#line 4337 "parser_gen.cpp"
break;
- case 292: // arrayManipulation: slice
-#line 1347 "src/mongo/db/cst/grammar.yy"
+ case 304: // arrayManipulation: slice
+#line 1402 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4220 "src/mongo/db/cst/parser_gen.cpp"
+#line 4343 "parser_gen.cpp"
break;
- case 293: // slice: "object" "slice" exprFixedTwoArg "end of object"
-#line 1351 "src/mongo/db/cst/grammar.yy"
+ case 305: // slice: "object" "slice" exprFixedTwoArg "end of object"
+#line 1406 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::slice, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4229 "src/mongo/db/cst/parser_gen.cpp"
+#line 4352 "parser_gen.cpp"
break;
- case 294: // slice: "object" "slice" exprFixedThreeArg "end of object"
-#line 1355 "src/mongo/db/cst/grammar.yy"
+ case 306: // slice: "object" "slice" exprFixedThreeArg "end of object"
+#line 1410 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::slice, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4238 "src/mongo/db/cst/parser_gen.cpp"
+#line 4361 "parser_gen.cpp"
break;
- case 295: // expressionArray: "array" expressions "end of array"
-#line 1364 "src/mongo/db/cst/grammar.yy"
+ case 307: // expressionArray: "array" expressions "end of array"
+#line 1419 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{YY_MOVE(yystack_[1].value.as<std::vector<CNode>>())};
}
-#line 4246 "src/mongo/db/cst/parser_gen.cpp"
+#line 4369 "parser_gen.cpp"
break;
- case 296: // expressionSingletonArray: "array" expression "end of array"
-#line 1371 "src/mongo/db/cst/grammar.yy"
+ case 308: // expressionSingletonArray: "array" expression "end of array"
+#line 1426 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[1].value.as<CNode>())}};
}
-#line 4254 "src/mongo/db/cst/parser_gen.cpp"
+#line 4377 "parser_gen.cpp"
break;
- case 297: // singleArgExpression: nonArrayExpression
-#line 1376 "src/mongo/db/cst/grammar.yy"
+ case 309: // singleArgExpression: nonArrayExpression
+#line 1431 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4260 "src/mongo/db/cst/parser_gen.cpp"
+#line 4383 "parser_gen.cpp"
break;
- case 298: // singleArgExpression: expressionSingletonArray
-#line 1376 "src/mongo/db/cst/grammar.yy"
+ case 310: // singleArgExpression: expressionSingletonArray
+#line 1431 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4266 "src/mongo/db/cst/parser_gen.cpp"
+#line 4389 "parser_gen.cpp"
break;
- case 299: // expressionObject: "object" expressionFields "end of object"
-#line 1381 "src/mongo/db/cst/grammar.yy"
+ case 311: // expressionObject: "object" expressionFields "end of object"
+#line 1436 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
}
-#line 4274 "src/mongo/db/cst/parser_gen.cpp"
+#line 4397 "parser_gen.cpp"
break;
- case 300: // expressionFields: %empty
-#line 1387 "src/mongo/db/cst/grammar.yy"
+ case 312: // expressionFields: %empty
+#line 1442 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode::noopLeaf();
}
-#line 4282 "src/mongo/db/cst/parser_gen.cpp"
+#line 4405 "parser_gen.cpp"
break;
- case 301: // expressionFields: expressionFields expressionField
-#line 1390 "src/mongo/db/cst/grammar.yy"
+ case 313: // expressionFields: expressionFields expressionField
+#line 1445 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
yylhs.value.as<CNode>().objectChildren().emplace_back(
YY_MOVE(yystack_[0].value.as<std::pair<CNode::Fieldname, CNode>>()));
}
-#line 4291 "src/mongo/db/cst/parser_gen.cpp"
+#line 4414 "parser_gen.cpp"
break;
- case 302: // expressionField: expressionFieldname expression
-#line 1397 "src/mongo/db/cst/grammar.yy"
+ case 314: // expressionField: expressionFieldname expression
+#line 1452 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = {
YY_MOVE(yystack_[1].value.as<CNode::Fieldname>()),
YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 4299 "src/mongo/db/cst/parser_gen.cpp"
+#line 4422 "parser_gen.cpp"
break;
- case 303: // expressionFieldname: invariableUserFieldname
-#line 1404 "src/mongo/db/cst/grammar.yy"
+ case 315: // expressionFieldname: invariableUserFieldname
+#line 1459 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>());
}
-#line 4305 "src/mongo/db/cst/parser_gen.cpp"
+#line 4428 "parser_gen.cpp"
break;
- case 304: // expressionFieldname: stageAsUserFieldname
-#line 1404 "src/mongo/db/cst/grammar.yy"
+ case 316: // expressionFieldname: stageAsUserFieldname
+#line 1459 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>());
}
-#line 4311 "src/mongo/db/cst/parser_gen.cpp"
+#line 4434 "parser_gen.cpp"
break;
- case 305: // expressionFieldname: argAsUserFieldname
-#line 1404 "src/mongo/db/cst/grammar.yy"
+ case 317: // expressionFieldname: argAsUserFieldname
+#line 1459 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>());
}
-#line 4317 "src/mongo/db/cst/parser_gen.cpp"
+#line 4440 "parser_gen.cpp"
break;
- case 306: // expressionFieldname: idAsUserFieldname
-#line 1404 "src/mongo/db/cst/grammar.yy"
+ case 318: // expressionFieldname: idAsUserFieldname
+#line 1459 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>());
}
-#line 4323 "src/mongo/db/cst/parser_gen.cpp"
+#line 4446 "parser_gen.cpp"
break;
- case 307: // idAsUserFieldname: ID
-#line 1408 "src/mongo/db/cst/grammar.yy"
+ case 319: // idAsUserFieldname: ID
+#line 1463 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() = UserFieldname{"_id"};
}
-#line 4331 "src/mongo/db/cst/parser_gen.cpp"
+#line 4454 "parser_gen.cpp"
break;
- case 308: // idAsProjectionPath: ID
-#line 1414 "src/mongo/db/cst/grammar.yy"
+ case 320: // idAsProjectionPath: ID
+#line 1469 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
ProjectionPath{make_vector<std::string>("_id")};
}
-#line 4339 "src/mongo/db/cst/parser_gen.cpp"
+#line 4462 "parser_gen.cpp"
break;
- case 309: // maths: add
-#line 1420 "src/mongo/db/cst/grammar.yy"
+ case 321: // maths: add
+#line 1475 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4345 "src/mongo/db/cst/parser_gen.cpp"
+#line 4468 "parser_gen.cpp"
break;
- case 310: // maths: abs
-#line 1420 "src/mongo/db/cst/grammar.yy"
+ case 322: // maths: abs
+#line 1475 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4351 "src/mongo/db/cst/parser_gen.cpp"
+#line 4474 "parser_gen.cpp"
break;
- case 311: // maths: ceil
-#line 1420 "src/mongo/db/cst/grammar.yy"
+ case 323: // maths: ceil
+#line 1475 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4357 "src/mongo/db/cst/parser_gen.cpp"
+#line 4480 "parser_gen.cpp"
break;
- case 312: // maths: divide
-#line 1420 "src/mongo/db/cst/grammar.yy"
+ case 324: // maths: divide
+#line 1475 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4363 "src/mongo/db/cst/parser_gen.cpp"
+#line 4486 "parser_gen.cpp"
break;
- case 313: // maths: exponent
-#line 1420 "src/mongo/db/cst/grammar.yy"
+ case 325: // maths: exponent
+#line 1475 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4369 "src/mongo/db/cst/parser_gen.cpp"
+#line 4492 "parser_gen.cpp"
break;
- case 314: // maths: floor
-#line 1420 "src/mongo/db/cst/grammar.yy"
+ case 326: // maths: floor
+#line 1475 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4375 "src/mongo/db/cst/parser_gen.cpp"
+#line 4498 "parser_gen.cpp"
break;
- case 315: // maths: ln
-#line 1420 "src/mongo/db/cst/grammar.yy"
+ case 327: // maths: ln
+#line 1475 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4381 "src/mongo/db/cst/parser_gen.cpp"
+#line 4504 "parser_gen.cpp"
break;
- case 316: // maths: log
-#line 1420 "src/mongo/db/cst/grammar.yy"
+ case 328: // maths: log
+#line 1475 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4387 "src/mongo/db/cst/parser_gen.cpp"
+#line 4510 "parser_gen.cpp"
break;
- case 317: // maths: logten
-#line 1420 "src/mongo/db/cst/grammar.yy"
+ case 329: // maths: logten
+#line 1475 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4393 "src/mongo/db/cst/parser_gen.cpp"
+#line 4516 "parser_gen.cpp"
break;
- case 318: // maths: mod
-#line 1420 "src/mongo/db/cst/grammar.yy"
+ case 330: // maths: mod
+#line 1475 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4399 "src/mongo/db/cst/parser_gen.cpp"
+#line 4522 "parser_gen.cpp"
break;
- case 319: // maths: multiply
-#line 1420 "src/mongo/db/cst/grammar.yy"
+ case 331: // maths: multiply
+#line 1475 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4405 "src/mongo/db/cst/parser_gen.cpp"
+#line 4528 "parser_gen.cpp"
break;
- case 320: // maths: pow
-#line 1420 "src/mongo/db/cst/grammar.yy"
+ case 332: // maths: pow
+#line 1475 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4411 "src/mongo/db/cst/parser_gen.cpp"
+#line 4534 "parser_gen.cpp"
break;
- case 321: // maths: round
-#line 1421 "src/mongo/db/cst/grammar.yy"
+ case 333: // maths: round
+#line 1476 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4417 "src/mongo/db/cst/parser_gen.cpp"
+#line 4540 "parser_gen.cpp"
break;
- case 322: // maths: sqrt
-#line 1421 "src/mongo/db/cst/grammar.yy"
+ case 334: // maths: sqrt
+#line 1476 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4423 "src/mongo/db/cst/parser_gen.cpp"
+#line 4546 "parser_gen.cpp"
break;
- case 323: // maths: subtract
-#line 1421 "src/mongo/db/cst/grammar.yy"
+ case 335: // maths: subtract
+#line 1476 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4429 "src/mongo/db/cst/parser_gen.cpp"
+#line 4552 "parser_gen.cpp"
break;
- case 324: // maths: trunc
-#line 1421 "src/mongo/db/cst/grammar.yy"
+ case 336: // maths: trunc
+#line 1476 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4435 "src/mongo/db/cst/parser_gen.cpp"
+#line 4558 "parser_gen.cpp"
break;
- case 325: // meta: "object" META "geoNearDistance" "end of object"
-#line 1425 "src/mongo/db/cst/grammar.yy"
+ case 337: // meta: "object" META "geoNearDistance" "end of object"
+#line 1480 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::meta, CNode{KeyValue::geoNearDistance}}}};
}
-#line 4443 "src/mongo/db/cst/parser_gen.cpp"
+#line 4566 "parser_gen.cpp"
break;
- case 326: // meta: "object" META "geoNearPoint" "end of object"
-#line 1428 "src/mongo/db/cst/grammar.yy"
+ case 338: // meta: "object" META "geoNearPoint" "end of object"
+#line 1483 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::meta, CNode{KeyValue::geoNearPoint}}}};
}
-#line 4451 "src/mongo/db/cst/parser_gen.cpp"
+#line 4574 "parser_gen.cpp"
break;
- case 327: // meta: "object" META "indexKey" "end of object"
-#line 1431 "src/mongo/db/cst/grammar.yy"
+ case 339: // meta: "object" META "indexKey" "end of object"
+#line 1486 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{
CNode::ObjectChildren{{KeyFieldname::meta, CNode{KeyValue::indexKey}}}};
}
-#line 4459 "src/mongo/db/cst/parser_gen.cpp"
+#line 4582 "parser_gen.cpp"
break;
- case 328: // meta: "object" META "randVal" "end of object"
-#line 1434 "src/mongo/db/cst/grammar.yy"
+ case 340: // meta: "object" META "randVal" "end of object"
+#line 1489 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{
CNode::ObjectChildren{{KeyFieldname::meta, CNode{KeyValue::randVal}}}};
}
-#line 4467 "src/mongo/db/cst/parser_gen.cpp"
+#line 4590 "parser_gen.cpp"
break;
- case 329: // meta: "object" META "recordId" "end of object"
-#line 1437 "src/mongo/db/cst/grammar.yy"
+ case 341: // meta: "object" META "recordId" "end of object"
+#line 1492 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{
CNode::ObjectChildren{{KeyFieldname::meta, CNode{KeyValue::recordId}}}};
}
-#line 4475 "src/mongo/db/cst/parser_gen.cpp"
+#line 4598 "parser_gen.cpp"
break;
- case 330: // meta: "object" META "searchHighlights" "end of object"
-#line 1440 "src/mongo/db/cst/grammar.yy"
+ case 342: // meta: "object" META "searchHighlights" "end of object"
+#line 1495 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::meta, CNode{KeyValue::searchHighlights}}}};
}
-#line 4483 "src/mongo/db/cst/parser_gen.cpp"
+#line 4606 "parser_gen.cpp"
break;
- case 331: // meta: "object" META "searchScore" "end of object"
-#line 1443 "src/mongo/db/cst/grammar.yy"
+ case 343: // meta: "object" META "searchScore" "end of object"
+#line 1498 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::meta, CNode{KeyValue::searchScore}}}};
}
-#line 4491 "src/mongo/db/cst/parser_gen.cpp"
+#line 4614 "parser_gen.cpp"
break;
- case 332: // meta: "object" META "sortKey" "end of object"
-#line 1446 "src/mongo/db/cst/grammar.yy"
+ case 344: // meta: "object" META "sortKey" "end of object"
+#line 1501 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{
CNode::ObjectChildren{{KeyFieldname::meta, CNode{KeyValue::sortKey}}}};
}
-#line 4499 "src/mongo/db/cst/parser_gen.cpp"
+#line 4622 "parser_gen.cpp"
break;
- case 333: // meta: "object" META "textScore" "end of object"
-#line 1449 "src/mongo/db/cst/grammar.yy"
+ case 345: // meta: "object" META "textScore" "end of object"
+#line 1504 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::meta, CNode{KeyValue::textScore}}}};
}
-#line 4507 "src/mongo/db/cst/parser_gen.cpp"
+#line 4630 "parser_gen.cpp"
break;
- case 334: // trig: sin
-#line 1454 "src/mongo/db/cst/grammar.yy"
+ case 346: // trig: sin
+#line 1509 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4513 "src/mongo/db/cst/parser_gen.cpp"
+#line 4636 "parser_gen.cpp"
break;
- case 335: // trig: cos
-#line 1454 "src/mongo/db/cst/grammar.yy"
+ case 347: // trig: cos
+#line 1509 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4519 "src/mongo/db/cst/parser_gen.cpp"
+#line 4642 "parser_gen.cpp"
break;
- case 336: // trig: tan
-#line 1454 "src/mongo/db/cst/grammar.yy"
+ case 348: // trig: tan
+#line 1509 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4525 "src/mongo/db/cst/parser_gen.cpp"
+#line 4648 "parser_gen.cpp"
break;
- case 337: // trig: sinh
-#line 1454 "src/mongo/db/cst/grammar.yy"
+ case 349: // trig: sinh
+#line 1509 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4531 "src/mongo/db/cst/parser_gen.cpp"
+#line 4654 "parser_gen.cpp"
break;
- case 338: // trig: cosh
-#line 1454 "src/mongo/db/cst/grammar.yy"
+ case 350: // trig: cosh
+#line 1509 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4537 "src/mongo/db/cst/parser_gen.cpp"
+#line 4660 "parser_gen.cpp"
break;
- case 339: // trig: tanh
-#line 1454 "src/mongo/db/cst/grammar.yy"
+ case 351: // trig: tanh
+#line 1509 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4543 "src/mongo/db/cst/parser_gen.cpp"
+#line 4666 "parser_gen.cpp"
break;
- case 340: // trig: asin
-#line 1454 "src/mongo/db/cst/grammar.yy"
+ case 352: // trig: asin
+#line 1509 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4549 "src/mongo/db/cst/parser_gen.cpp"
+#line 4672 "parser_gen.cpp"
break;
- case 341: // trig: acos
-#line 1454 "src/mongo/db/cst/grammar.yy"
+ case 353: // trig: acos
+#line 1509 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4555 "src/mongo/db/cst/parser_gen.cpp"
+#line 4678 "parser_gen.cpp"
break;
- case 342: // trig: atan
-#line 1454 "src/mongo/db/cst/grammar.yy"
+ case 354: // trig: atan
+#line 1509 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4561 "src/mongo/db/cst/parser_gen.cpp"
+#line 4684 "parser_gen.cpp"
break;
- case 343: // trig: atan2
-#line 1454 "src/mongo/db/cst/grammar.yy"
+ case 355: // trig: atan2
+#line 1509 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4567 "src/mongo/db/cst/parser_gen.cpp"
+#line 4690 "parser_gen.cpp"
break;
- case 344: // trig: asinh
-#line 1454 "src/mongo/db/cst/grammar.yy"
+ case 356: // trig: asinh
+#line 1509 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4573 "src/mongo/db/cst/parser_gen.cpp"
+#line 4696 "parser_gen.cpp"
break;
- case 345: // trig: acosh
-#line 1454 "src/mongo/db/cst/grammar.yy"
+ case 357: // trig: acosh
+#line 1509 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4579 "src/mongo/db/cst/parser_gen.cpp"
+#line 4702 "parser_gen.cpp"
break;
- case 346: // trig: atanh
-#line 1454 "src/mongo/db/cst/grammar.yy"
+ case 358: // trig: atanh
+#line 1509 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4585 "src/mongo/db/cst/parser_gen.cpp"
+#line 4708 "parser_gen.cpp"
break;
- case 347: // trig: degreesToRadians
-#line 1455 "src/mongo/db/cst/grammar.yy"
+ case 359: // trig: degreesToRadians
+#line 1510 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4591 "src/mongo/db/cst/parser_gen.cpp"
+#line 4714 "parser_gen.cpp"
break;
- case 348: // trig: radiansToDegrees
-#line 1455 "src/mongo/db/cst/grammar.yy"
+ case 360: // trig: radiansToDegrees
+#line 1510 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4597 "src/mongo/db/cst/parser_gen.cpp"
+#line 4720 "parser_gen.cpp"
break;
- case 349: // add: "object" ADD expressionArray "end of object"
-#line 1459 "src/mongo/db/cst/grammar.yy"
+ case 361: // add: "object" ADD expressionArray "end of object"
+#line 1514 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::add, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4606 "src/mongo/db/cst/parser_gen.cpp"
+#line 4729 "parser_gen.cpp"
break;
- case 350: // atan2: "object" ATAN2 exprFixedTwoArg "end of object"
-#line 1466 "src/mongo/db/cst/grammar.yy"
+ case 362: // atan2: "object" ATAN2 exprFixedTwoArg "end of object"
+#line 1521 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::atan2, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4615 "src/mongo/db/cst/parser_gen.cpp"
+#line 4738 "parser_gen.cpp"
break;
- case 351: // abs: "object" ABS expression "end of object"
-#line 1472 "src/mongo/db/cst/grammar.yy"
+ case 363: // abs: "object" ABS expression "end of object"
+#line 1527 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::abs, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4623 "src/mongo/db/cst/parser_gen.cpp"
+#line 4746 "parser_gen.cpp"
break;
- case 352: // ceil: "object" CEIL expression "end of object"
-#line 1477 "src/mongo/db/cst/grammar.yy"
+ case 364: // ceil: "object" CEIL expression "end of object"
+#line 1532 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::ceil, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4631 "src/mongo/db/cst/parser_gen.cpp"
+#line 4754 "parser_gen.cpp"
break;
- case 353: // divide: "object" DIVIDE "array" expression expression "end of
+ case 365: // divide: "object" DIVIDE "array" expression expression "end of
// array" "end of object"
-#line 1482 "src/mongo/db/cst/grammar.yy"
+#line 1537 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::divide,
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[3].value.as<CNode>()),
YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 4640 "src/mongo/db/cst/parser_gen.cpp"
+#line 4763 "parser_gen.cpp"
break;
- case 354: // exponent: "object" EXPONENT expression "end of object"
-#line 1488 "src/mongo/db/cst/grammar.yy"
+ case 366: // exponent: "object" EXPONENT expression "end of object"
+#line 1543 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::exponent, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4648 "src/mongo/db/cst/parser_gen.cpp"
+#line 4771 "parser_gen.cpp"
break;
- case 355: // floor: "object" FLOOR expression "end of object"
-#line 1493 "src/mongo/db/cst/grammar.yy"
+ case 367: // floor: "object" FLOOR expression "end of object"
+#line 1548 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::floor, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4656 "src/mongo/db/cst/parser_gen.cpp"
+#line 4779 "parser_gen.cpp"
break;
- case 356: // ln: "object" LN expression "end of object"
-#line 1498 "src/mongo/db/cst/grammar.yy"
+ case 368: // ln: "object" LN expression "end of object"
+#line 1553 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::ln, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4664 "src/mongo/db/cst/parser_gen.cpp"
+#line 4787 "parser_gen.cpp"
break;
- case 357: // log: "object" LOG "array" expression expression "end of array"
+ case 369: // log: "object" LOG "array" expression expression "end of array"
// "end of object"
-#line 1503 "src/mongo/db/cst/grammar.yy"
+#line 1558 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::log,
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[3].value.as<CNode>()),
YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 4673 "src/mongo/db/cst/parser_gen.cpp"
+#line 4796 "parser_gen.cpp"
break;
- case 358: // logten: "object" LOGTEN expression "end of object"
-#line 1509 "src/mongo/db/cst/grammar.yy"
+ case 370: // logten: "object" LOGTEN expression "end of object"
+#line 1564 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::logten, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4681 "src/mongo/db/cst/parser_gen.cpp"
+#line 4804 "parser_gen.cpp"
break;
- case 359: // mod: "object" MOD "array" expression expression "end of array"
+ case 371: // mod: "object" MOD "array" expression expression "end of array"
// "end of object"
-#line 1514 "src/mongo/db/cst/grammar.yy"
+#line 1569 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::mod,
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[3].value.as<CNode>()),
YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 4690 "src/mongo/db/cst/parser_gen.cpp"
+#line 4813 "parser_gen.cpp"
break;
- case 360: // multiply: "object" MULTIPLY "array" expression expression
+ case 372: // multiply: "object" MULTIPLY "array" expression expression
// expressions "end of array" "end of object"
-#line 1520 "src/mongo/db/cst/grammar.yy"
+#line 1575 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::multiply,
@@ -4994,428 +5143,428 @@ int ParserGen::parse() {
yylhs.value.as<CNode>().objectChildren()[0].second.arrayChildren();
array.insert(array.end(), others.begin(), others.end());
}
-#line 4702 "src/mongo/db/cst/parser_gen.cpp"
+#line 4825 "parser_gen.cpp"
break;
- case 361: // pow: "object" POW "array" expression expression "end of array"
+ case 373: // pow: "object" POW "array" expression expression "end of array"
// "end of object"
-#line 1529 "src/mongo/db/cst/grammar.yy"
+#line 1584 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::pow,
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[3].value.as<CNode>()),
YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 4711 "src/mongo/db/cst/parser_gen.cpp"
+#line 4834 "parser_gen.cpp"
break;
- case 362: // round: "object" ROUND "array" expression expression "end of array"
+ case 374: // round: "object" ROUND "array" expression expression "end of array"
// "end of object"
-#line 1535 "src/mongo/db/cst/grammar.yy"
+#line 1590 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::round,
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[3].value.as<CNode>()),
YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 4720 "src/mongo/db/cst/parser_gen.cpp"
+#line 4843 "parser_gen.cpp"
break;
- case 363: // sqrt: "object" SQRT expression "end of object"
-#line 1541 "src/mongo/db/cst/grammar.yy"
+ case 375: // sqrt: "object" SQRT expression "end of object"
+#line 1596 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::sqrt, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4728 "src/mongo/db/cst/parser_gen.cpp"
+#line 4851 "parser_gen.cpp"
break;
- case 364: // subtract: "object" SUBTRACT "array" expression expression "end of
+ case 376: // subtract: "object" SUBTRACT "array" expression expression "end of
// array" "end of object"
-#line 1546 "src/mongo/db/cst/grammar.yy"
+#line 1601 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::subtract,
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[3].value.as<CNode>()),
YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 4737 "src/mongo/db/cst/parser_gen.cpp"
+#line 4860 "parser_gen.cpp"
break;
- case 365: // trunc: "object" TRUNC "array" expression expression "end of array"
+ case 377: // trunc: "object" TRUNC "array" expression expression "end of array"
// "end of object"
-#line 1552 "src/mongo/db/cst/grammar.yy"
+#line 1607 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::trunc,
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[3].value.as<CNode>()),
YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 4746 "src/mongo/db/cst/parser_gen.cpp"
+#line 4869 "parser_gen.cpp"
break;
- case 366: // sin: "object" SIN singleArgExpression "end of object"
-#line 1558 "src/mongo/db/cst/grammar.yy"
+ case 378: // sin: "object" SIN singleArgExpression "end of object"
+#line 1613 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::sin, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4754 "src/mongo/db/cst/parser_gen.cpp"
+#line 4877 "parser_gen.cpp"
break;
- case 367: // cos: "object" COS singleArgExpression "end of object"
-#line 1563 "src/mongo/db/cst/grammar.yy"
+ case 379: // cos: "object" COS singleArgExpression "end of object"
+#line 1618 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::cos, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4762 "src/mongo/db/cst/parser_gen.cpp"
+#line 4885 "parser_gen.cpp"
break;
- case 368: // tan: "object" TAN singleArgExpression "end of object"
-#line 1568 "src/mongo/db/cst/grammar.yy"
+ case 380: // tan: "object" TAN singleArgExpression "end of object"
+#line 1623 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::tan, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4770 "src/mongo/db/cst/parser_gen.cpp"
+#line 4893 "parser_gen.cpp"
break;
- case 369: // sinh: "object" SINH singleArgExpression "end of object"
-#line 1573 "src/mongo/db/cst/grammar.yy"
+ case 381: // sinh: "object" SINH singleArgExpression "end of object"
+#line 1628 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::sinh, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4778 "src/mongo/db/cst/parser_gen.cpp"
+#line 4901 "parser_gen.cpp"
break;
- case 370: // cosh: "object" COSH singleArgExpression "end of object"
-#line 1578 "src/mongo/db/cst/grammar.yy"
+ case 382: // cosh: "object" COSH singleArgExpression "end of object"
+#line 1633 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::cosh, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4786 "src/mongo/db/cst/parser_gen.cpp"
+#line 4909 "parser_gen.cpp"
break;
- case 371: // tanh: "object" TANH singleArgExpression "end of object"
-#line 1583 "src/mongo/db/cst/grammar.yy"
+ case 383: // tanh: "object" TANH singleArgExpression "end of object"
+#line 1638 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::tanh, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4794 "src/mongo/db/cst/parser_gen.cpp"
+#line 4917 "parser_gen.cpp"
break;
- case 372: // asin: "object" ASIN singleArgExpression "end of object"
-#line 1588 "src/mongo/db/cst/grammar.yy"
+ case 384: // asin: "object" ASIN singleArgExpression "end of object"
+#line 1643 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::asin, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4802 "src/mongo/db/cst/parser_gen.cpp"
+#line 4925 "parser_gen.cpp"
break;
- case 373: // acos: "object" ACOS singleArgExpression "end of object"
-#line 1593 "src/mongo/db/cst/grammar.yy"
+ case 385: // acos: "object" ACOS singleArgExpression "end of object"
+#line 1648 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::acos, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4810 "src/mongo/db/cst/parser_gen.cpp"
+#line 4933 "parser_gen.cpp"
break;
- case 374: // atan: "object" ATAN singleArgExpression "end of object"
-#line 1598 "src/mongo/db/cst/grammar.yy"
+ case 386: // atan: "object" ATAN singleArgExpression "end of object"
+#line 1653 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::atan, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4818 "src/mongo/db/cst/parser_gen.cpp"
+#line 4941 "parser_gen.cpp"
break;
- case 375: // asinh: "object" ASINH singleArgExpression "end of object"
-#line 1603 "src/mongo/db/cst/grammar.yy"
+ case 387: // asinh: "object" ASINH singleArgExpression "end of object"
+#line 1658 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::asinh, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4826 "src/mongo/db/cst/parser_gen.cpp"
+#line 4949 "parser_gen.cpp"
break;
- case 376: // acosh: "object" ACOSH singleArgExpression "end of object"
-#line 1608 "src/mongo/db/cst/grammar.yy"
+ case 388: // acosh: "object" ACOSH singleArgExpression "end of object"
+#line 1663 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::acosh, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4834 "src/mongo/db/cst/parser_gen.cpp"
+#line 4957 "parser_gen.cpp"
break;
- case 377: // atanh: "object" ATANH singleArgExpression "end of object"
-#line 1613 "src/mongo/db/cst/grammar.yy"
+ case 389: // atanh: "object" ATANH singleArgExpression "end of object"
+#line 1668 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::atanh, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4842 "src/mongo/db/cst/parser_gen.cpp"
+#line 4965 "parser_gen.cpp"
break;
- case 378: // degreesToRadians: "object" DEGREES_TO_RADIANS singleArgExpression
+ case 390: // degreesToRadians: "object" DEGREES_TO_RADIANS singleArgExpression
// "end of object"
-#line 1618 "src/mongo/db/cst/grammar.yy"
+#line 1673 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{CNode::ObjectChildren{{KeyFieldname::degreesToRadians,
YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4850 "src/mongo/db/cst/parser_gen.cpp"
+#line 4973 "parser_gen.cpp"
break;
- case 379: // radiansToDegrees: "object" RADIANS_TO_DEGREES singleArgExpression
+ case 391: // radiansToDegrees: "object" RADIANS_TO_DEGREES singleArgExpression
// "end of object"
-#line 1623 "src/mongo/db/cst/grammar.yy"
+#line 1678 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{CNode::ObjectChildren{{KeyFieldname::radiansToDegrees,
YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4858 "src/mongo/db/cst/parser_gen.cpp"
+#line 4981 "parser_gen.cpp"
break;
- case 380: // boolExprs: and
-#line 1629 "src/mongo/db/cst/grammar.yy"
+ case 392: // boolExprs: and
+#line 1684 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4864 "src/mongo/db/cst/parser_gen.cpp"
+#line 4987 "parser_gen.cpp"
break;
- case 381: // boolExprs: or
-#line 1629 "src/mongo/db/cst/grammar.yy"
+ case 393: // boolExprs: or
+#line 1684 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4870 "src/mongo/db/cst/parser_gen.cpp"
+#line 4993 "parser_gen.cpp"
break;
- case 382: // boolExprs: not
-#line 1629 "src/mongo/db/cst/grammar.yy"
+ case 394: // boolExprs: not
+#line 1684 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4876 "src/mongo/db/cst/parser_gen.cpp"
+#line 4999 "parser_gen.cpp"
break;
- case 383: // and: "object" AND expressionArray "end of object"
-#line 1633 "src/mongo/db/cst/grammar.yy"
+ case 395: // and: "object" AND expressionArray "end of object"
+#line 1688 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::andExpr, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4885 "src/mongo/db/cst/parser_gen.cpp"
+#line 5008 "parser_gen.cpp"
break;
- case 384: // or: "object" OR expressionArray "end of object"
-#line 1640 "src/mongo/db/cst/grammar.yy"
+ case 396: // or: "object" OR expressionArray "end of object"
+#line 1695 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::orExpr, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 4894 "src/mongo/db/cst/parser_gen.cpp"
+#line 5017 "parser_gen.cpp"
break;
- case 385: // not: "object" NOT "array" expression "end of array" "end of
+ case 397: // not: "object" NOT "array" expression "end of array" "end of
// object"
-#line 1647 "src/mongo/db/cst/grammar.yy"
+#line 1702 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::notExpr,
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 4903 "src/mongo/db/cst/parser_gen.cpp"
+#line 5026 "parser_gen.cpp"
break;
- case 386: // stringExps: concat
-#line 1654 "src/mongo/db/cst/grammar.yy"
+ case 398: // stringExps: concat
+#line 1709 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4909 "src/mongo/db/cst/parser_gen.cpp"
+#line 5032 "parser_gen.cpp"
break;
- case 387: // stringExps: dateFromString
-#line 1654 "src/mongo/db/cst/grammar.yy"
+ case 399: // stringExps: dateFromString
+#line 1709 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4915 "src/mongo/db/cst/parser_gen.cpp"
+#line 5038 "parser_gen.cpp"
break;
- case 388: // stringExps: dateToString
-#line 1654 "src/mongo/db/cst/grammar.yy"
+ case 400: // stringExps: dateToString
+#line 1709 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4921 "src/mongo/db/cst/parser_gen.cpp"
+#line 5044 "parser_gen.cpp"
break;
- case 389: // stringExps: indexOfBytes
-#line 1654 "src/mongo/db/cst/grammar.yy"
+ case 401: // stringExps: indexOfBytes
+#line 1709 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4927 "src/mongo/db/cst/parser_gen.cpp"
+#line 5050 "parser_gen.cpp"
break;
- case 390: // stringExps: indexOfCP
-#line 1654 "src/mongo/db/cst/grammar.yy"
+ case 402: // stringExps: indexOfCP
+#line 1709 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4933 "src/mongo/db/cst/parser_gen.cpp"
+#line 5056 "parser_gen.cpp"
break;
- case 391: // stringExps: ltrim
-#line 1654 "src/mongo/db/cst/grammar.yy"
+ case 403: // stringExps: ltrim
+#line 1709 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4939 "src/mongo/db/cst/parser_gen.cpp"
+#line 5062 "parser_gen.cpp"
break;
- case 392: // stringExps: regexFind
-#line 1654 "src/mongo/db/cst/grammar.yy"
+ case 404: // stringExps: regexFind
+#line 1709 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4945 "src/mongo/db/cst/parser_gen.cpp"
+#line 5068 "parser_gen.cpp"
break;
- case 393: // stringExps: regexFindAll
-#line 1655 "src/mongo/db/cst/grammar.yy"
+ case 405: // stringExps: regexFindAll
+#line 1710 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4951 "src/mongo/db/cst/parser_gen.cpp"
+#line 5074 "parser_gen.cpp"
break;
- case 394: // stringExps: regexMatch
-#line 1655 "src/mongo/db/cst/grammar.yy"
+ case 406: // stringExps: regexMatch
+#line 1710 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4957 "src/mongo/db/cst/parser_gen.cpp"
+#line 5080 "parser_gen.cpp"
break;
- case 395: // stringExps: replaceOne
-#line 1655 "src/mongo/db/cst/grammar.yy"
+ case 407: // stringExps: replaceOne
+#line 1710 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4963 "src/mongo/db/cst/parser_gen.cpp"
+#line 5086 "parser_gen.cpp"
break;
- case 396: // stringExps: replaceAll
-#line 1655 "src/mongo/db/cst/grammar.yy"
+ case 408: // stringExps: replaceAll
+#line 1710 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4969 "src/mongo/db/cst/parser_gen.cpp"
+#line 5092 "parser_gen.cpp"
break;
- case 397: // stringExps: rtrim
-#line 1655 "src/mongo/db/cst/grammar.yy"
+ case 409: // stringExps: rtrim
+#line 1710 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4975 "src/mongo/db/cst/parser_gen.cpp"
+#line 5098 "parser_gen.cpp"
break;
- case 398: // stringExps: split
-#line 1655 "src/mongo/db/cst/grammar.yy"
+ case 410: // stringExps: split
+#line 1710 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4981 "src/mongo/db/cst/parser_gen.cpp"
+#line 5104 "parser_gen.cpp"
break;
- case 399: // stringExps: strLenBytes
-#line 1655 "src/mongo/db/cst/grammar.yy"
+ case 411: // stringExps: strLenBytes
+#line 1710 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4987 "src/mongo/db/cst/parser_gen.cpp"
+#line 5110 "parser_gen.cpp"
break;
- case 400: // stringExps: strLenCP
-#line 1655 "src/mongo/db/cst/grammar.yy"
+ case 412: // stringExps: strLenCP
+#line 1710 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4993 "src/mongo/db/cst/parser_gen.cpp"
+#line 5116 "parser_gen.cpp"
break;
- case 401: // stringExps: strcasecmp
-#line 1656 "src/mongo/db/cst/grammar.yy"
+ case 413: // stringExps: strcasecmp
+#line 1711 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 4999 "src/mongo/db/cst/parser_gen.cpp"
+#line 5122 "parser_gen.cpp"
break;
- case 402: // stringExps: substr
-#line 1656 "src/mongo/db/cst/grammar.yy"
+ case 414: // stringExps: substr
+#line 1711 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5005 "src/mongo/db/cst/parser_gen.cpp"
+#line 5128 "parser_gen.cpp"
break;
- case 403: // stringExps: substrBytes
-#line 1656 "src/mongo/db/cst/grammar.yy"
+ case 415: // stringExps: substrBytes
+#line 1711 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5011 "src/mongo/db/cst/parser_gen.cpp"
+#line 5134 "parser_gen.cpp"
break;
- case 404: // stringExps: substrCP
-#line 1656 "src/mongo/db/cst/grammar.yy"
+ case 416: // stringExps: substrCP
+#line 1711 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5017 "src/mongo/db/cst/parser_gen.cpp"
+#line 5140 "parser_gen.cpp"
break;
- case 405: // stringExps: toLower
-#line 1656 "src/mongo/db/cst/grammar.yy"
+ case 417: // stringExps: toLower
+#line 1711 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5023 "src/mongo/db/cst/parser_gen.cpp"
+#line 5146 "parser_gen.cpp"
break;
- case 406: // stringExps: trim
-#line 1656 "src/mongo/db/cst/grammar.yy"
+ case 418: // stringExps: trim
+#line 1711 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5029 "src/mongo/db/cst/parser_gen.cpp"
+#line 5152 "parser_gen.cpp"
break;
- case 407: // stringExps: toUpper
-#line 1656 "src/mongo/db/cst/grammar.yy"
+ case 419: // stringExps: toUpper
+#line 1711 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5035 "src/mongo/db/cst/parser_gen.cpp"
+#line 5158 "parser_gen.cpp"
break;
- case 408: // concat: "object" CONCAT "array" expressions "end of array" "end of
+ case 420: // concat: "object" CONCAT "array" expressions "end of array" "end of
// object"
-#line 1660 "src/mongo/db/cst/grammar.yy"
+#line 1715 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::concat, CNode{CNode::ArrayChildren{}}}}};
@@ -5424,49 +5573,49 @@ int ParserGen::parse() {
yylhs.value.as<CNode>().objectChildren()[0].second.arrayChildren();
array.insert(array.end(), others.begin(), others.end());
}
-#line 5047 "src/mongo/db/cst/parser_gen.cpp"
+#line 5170 "parser_gen.cpp"
break;
- case 409: // formatArg: %empty
-#line 1670 "src/mongo/db/cst/grammar.yy"
+ case 421: // formatArg: %empty
+#line 1725 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() =
std::pair{KeyFieldname::formatArg, CNode{KeyValue::absentKey}};
}
-#line 5055 "src/mongo/db/cst/parser_gen.cpp"
+#line 5178 "parser_gen.cpp"
break;
- case 410: // formatArg: "format argument" expression
-#line 1673 "src/mongo/db/cst/grammar.yy"
+ case 422: // formatArg: "format argument" expression
+#line 1728 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = std::pair{
KeyFieldname::formatArg, YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 5063 "src/mongo/db/cst/parser_gen.cpp"
+#line 5186 "parser_gen.cpp"
break;
- case 411: // timezoneArg: %empty
-#line 1679 "src/mongo/db/cst/grammar.yy"
+ case 423: // timezoneArg: %empty
+#line 1734 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() =
std::pair{KeyFieldname::timezoneArg, CNode{KeyValue::absentKey}};
}
-#line 5071 "src/mongo/db/cst/parser_gen.cpp"
+#line 5194 "parser_gen.cpp"
break;
- case 412: // timezoneArg: "timezone argument" expression
-#line 1682 "src/mongo/db/cst/grammar.yy"
+ case 424: // timezoneArg: "timezone argument" expression
+#line 1737 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = std::pair{
KeyFieldname::timezoneArg, YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 5079 "src/mongo/db/cst/parser_gen.cpp"
+#line 5202 "parser_gen.cpp"
break;
- case 413: // dateFromString: "object" DATE_FROM_STRING START_ORDERED_OBJECT
+ case 425: // dateFromString: "object" DATE_FROM_STRING START_ORDERED_OBJECT
// "dateString argument" expression formatArg timezoneArg onErrorArg
// onNullArg "end of object" "end of object"
-#line 1689 "src/mongo/db/cst/grammar.yy"
+#line 1744 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::dateFromString,
@@ -5482,13 +5631,13 @@ int ParserGen::parse() {
YY_MOVE(yystack_[2]
.value.as<std::pair<CNode::Fieldname, CNode>>())}}}}};
}
-#line 5089 "src/mongo/db/cst/parser_gen.cpp"
+#line 5212 "parser_gen.cpp"
break;
- case 414: // dateToString: "object" DATE_TO_STRING START_ORDERED_OBJECT "date
+ case 426: // dateToString: "object" DATE_TO_STRING START_ORDERED_OBJECT "date
// argument" expression formatArg timezoneArg onNullArg "end of
// object" "end of object"
-#line 1698 "src/mongo/db/cst/grammar.yy"
+#line 1753 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::dateToString,
@@ -5501,39 +5650,39 @@ int ParserGen::parse() {
YY_MOVE(yystack_[2]
.value.as<std::pair<CNode::Fieldname, CNode>>())}}}}};
}
-#line 5099 "src/mongo/db/cst/parser_gen.cpp"
+#line 5222 "parser_gen.cpp"
break;
- case 415: // exprZeroToTwo: %empty
-#line 1706 "src/mongo/db/cst/grammar.yy"
+ case 427: // exprZeroToTwo: %empty
+#line 1761 "grammar.yy"
{
yylhs.value.as<std::vector<CNode>>() = CNode::ArrayChildren{};
}
-#line 5107 "src/mongo/db/cst/parser_gen.cpp"
+#line 5230 "parser_gen.cpp"
break;
- case 416: // exprZeroToTwo: expression
-#line 1709 "src/mongo/db/cst/grammar.yy"
+ case 428: // exprZeroToTwo: expression
+#line 1764 "grammar.yy"
{
yylhs.value.as<std::vector<CNode>>() =
CNode::ArrayChildren{YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 5115 "src/mongo/db/cst/parser_gen.cpp"
+#line 5238 "parser_gen.cpp"
break;
- case 417: // exprZeroToTwo: expression expression
-#line 1712 "src/mongo/db/cst/grammar.yy"
+ case 429: // exprZeroToTwo: expression expression
+#line 1767 "grammar.yy"
{
yylhs.value.as<std::vector<CNode>>() =
CNode::ArrayChildren{YY_MOVE(yystack_[1].value.as<CNode>()),
YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 5123 "src/mongo/db/cst/parser_gen.cpp"
+#line 5246 "parser_gen.cpp"
break;
- case 418: // indexOfBytes: "object" INDEX_OF_BYTES "array" expression
+ case 430: // indexOfBytes: "object" INDEX_OF_BYTES "array" expression
// expression exprZeroToTwo "end of array" "end of object"
-#line 1719 "src/mongo/db/cst/grammar.yy"
+#line 1774 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::indexOfBytes,
@@ -5544,12 +5693,12 @@ int ParserGen::parse() {
yylhs.value.as<CNode>().objectChildren()[0].second.arrayChildren();
array.insert(array.end(), others.begin(), others.end());
}
-#line 5135 "src/mongo/db/cst/parser_gen.cpp"
+#line 5258 "parser_gen.cpp"
break;
- case 419: // indexOfCP: "object" INDEX_OF_CP "array" expression expression
+ case 431: // indexOfCP: "object" INDEX_OF_CP "array" expression expression
// exprZeroToTwo "end of array" "end of object"
-#line 1730 "src/mongo/db/cst/grammar.yy"
+#line 1785 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::indexOfCP,
@@ -5560,30 +5709,30 @@ int ParserGen::parse() {
yylhs.value.as<CNode>().objectChildren()[0].second.arrayChildren();
array.insert(array.end(), others.begin(), others.end());
}
-#line 5147 "src/mongo/db/cst/parser_gen.cpp"
+#line 5270 "parser_gen.cpp"
break;
- case 420: // charsArg: %empty
-#line 1740 "src/mongo/db/cst/grammar.yy"
+ case 432: // charsArg: %empty
+#line 1795 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() =
std::pair{KeyFieldname::charsArg, CNode{KeyValue::absentKey}};
}
-#line 5155 "src/mongo/db/cst/parser_gen.cpp"
+#line 5278 "parser_gen.cpp"
break;
- case 421: // charsArg: "chars argument" expression
-#line 1743 "src/mongo/db/cst/grammar.yy"
+ case 433: // charsArg: "chars argument" expression
+#line 1798 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = std::pair{
KeyFieldname::charsArg, YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 5163 "src/mongo/db/cst/parser_gen.cpp"
+#line 5286 "parser_gen.cpp"
break;
- case 422: // ltrim: "object" LTRIM START_ORDERED_OBJECT charsArg "input
+ case 434: // ltrim: "object" LTRIM START_ORDERED_OBJECT charsArg "input
// argument" expression "end of object" "end of object"
-#line 1749 "src/mongo/db/cst/grammar.yy"
+#line 1804 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::ltrim,
@@ -5592,12 +5741,12 @@ int ParserGen::parse() {
YY_MOVE(yystack_[4]
.value.as<std::pair<CNode::Fieldname, CNode>>())}}}}};
}
-#line 5173 "src/mongo/db/cst/parser_gen.cpp"
+#line 5296 "parser_gen.cpp"
break;
- case 423: // rtrim: "object" RTRIM START_ORDERED_OBJECT charsArg "input
+ case 435: // rtrim: "object" RTRIM START_ORDERED_OBJECT charsArg "input
// argument" expression "end of object" "end of object"
-#line 1757 "src/mongo/db/cst/grammar.yy"
+#line 1812 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::rtrim,
@@ -5606,12 +5755,12 @@ int ParserGen::parse() {
YY_MOVE(yystack_[4]
.value.as<std::pair<CNode::Fieldname, CNode>>())}}}}};
}
-#line 5183 "src/mongo/db/cst/parser_gen.cpp"
+#line 5306 "parser_gen.cpp"
break;
- case 424: // trim: "object" TRIM START_ORDERED_OBJECT charsArg "input argument"
+ case 436: // trim: "object" TRIM START_ORDERED_OBJECT charsArg "input argument"
// expression "end of object" "end of object"
-#line 1765 "src/mongo/db/cst/grammar.yy"
+#line 1820 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::trim,
@@ -5620,30 +5769,30 @@ int ParserGen::parse() {
YY_MOVE(yystack_[4]
.value.as<std::pair<CNode::Fieldname, CNode>>())}}}}};
}
-#line 5193 "src/mongo/db/cst/parser_gen.cpp"
+#line 5316 "parser_gen.cpp"
break;
- case 425: // optionsArg: %empty
-#line 1773 "src/mongo/db/cst/grammar.yy"
+ case 437: // optionsArg: %empty
+#line 1828 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() =
std::pair{KeyFieldname::optionsArg, CNode{KeyValue::absentKey}};
}
-#line 5201 "src/mongo/db/cst/parser_gen.cpp"
+#line 5324 "parser_gen.cpp"
break;
- case 426: // optionsArg: "options argument" expression
-#line 1776 "src/mongo/db/cst/grammar.yy"
+ case 438: // optionsArg: "options argument" expression
+#line 1831 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = std::pair{
KeyFieldname::optionsArg, YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 5209 "src/mongo/db/cst/parser_gen.cpp"
+#line 5332 "parser_gen.cpp"
break;
- case 427: // regexArgs: START_ORDERED_OBJECT "input argument" expression
+ case 439: // regexArgs: START_ORDERED_OBJECT "input argument" expression
// optionsArg "regex argument" expression "end of object"
-#line 1781 "src/mongo/db/cst/grammar.yy"
+#line 1836 "grammar.yy"
{
// Note that the order of these arguments must match the constructor for the
// regex expression.
@@ -5652,40 +5801,40 @@ int ParserGen::parse() {
{KeyFieldname::regexArg, YY_MOVE(yystack_[1].value.as<CNode>())},
YY_MOVE(yystack_[3].value.as<std::pair<CNode::Fieldname, CNode>>())}};
}
-#line 5221 "src/mongo/db/cst/parser_gen.cpp"
+#line 5344 "parser_gen.cpp"
break;
- case 428: // regexFind: "object" REGEX_FIND regexArgs "end of object"
-#line 1790 "src/mongo/db/cst/grammar.yy"
+ case 440: // regexFind: "object" REGEX_FIND regexArgs "end of object"
+#line 1845 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::regexFind, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5229 "src/mongo/db/cst/parser_gen.cpp"
+#line 5352 "parser_gen.cpp"
break;
- case 429: // regexFindAll: "object" REGEX_FIND_ALL regexArgs "end of object"
-#line 1796 "src/mongo/db/cst/grammar.yy"
+ case 441: // regexFindAll: "object" REGEX_FIND_ALL regexArgs "end of object"
+#line 1851 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::regexFindAll, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5237 "src/mongo/db/cst/parser_gen.cpp"
+#line 5360 "parser_gen.cpp"
break;
- case 430: // regexMatch: "object" REGEX_MATCH regexArgs "end of object"
-#line 1802 "src/mongo/db/cst/grammar.yy"
+ case 442: // regexMatch: "object" REGEX_MATCH regexArgs "end of object"
+#line 1857 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::regexMatch, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5245 "src/mongo/db/cst/parser_gen.cpp"
+#line 5368 "parser_gen.cpp"
break;
- case 431: // replaceOne: "object" REPLACE_ONE START_ORDERED_OBJECT "find
+ case 443: // replaceOne: "object" REPLACE_ONE START_ORDERED_OBJECT "find
// argument" expression "input argument" expression "replacement
// argument" expression "end of object" "end of object"
-#line 1809 "src/mongo/db/cst/grammar.yy"
+#line 1864 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::replaceOne,
@@ -5695,13 +5844,13 @@ int ParserGen::parse() {
{KeyFieldname::replacementArg,
YY_MOVE(yystack_[2].value.as<CNode>())}}}}}};
}
-#line 5256 "src/mongo/db/cst/parser_gen.cpp"
+#line 5379 "parser_gen.cpp"
break;
- case 432: // replaceAll: "object" REPLACE_ALL START_ORDERED_OBJECT "find
+ case 444: // replaceAll: "object" REPLACE_ALL START_ORDERED_OBJECT "find
// argument" expression "input argument" expression "replacement
// argument" expression "end of object" "end of object"
-#line 1819 "src/mongo/db/cst/grammar.yy"
+#line 1874 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::replaceAll,
@@ -5711,54 +5860,54 @@ int ParserGen::parse() {
{KeyFieldname::replacementArg,
YY_MOVE(yystack_[2].value.as<CNode>())}}}}}};
}
-#line 5267 "src/mongo/db/cst/parser_gen.cpp"
+#line 5390 "parser_gen.cpp"
break;
- case 433: // split: "object" SPLIT "array" expression expression "end of array"
+ case 445: // split: "object" SPLIT "array" expression expression "end of array"
// "end of object"
-#line 1828 "src/mongo/db/cst/grammar.yy"
+#line 1883 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::split,
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[3].value.as<CNode>()),
YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 5276 "src/mongo/db/cst/parser_gen.cpp"
+#line 5399 "parser_gen.cpp"
break;
- case 434: // strLenBytes: "object" STR_LEN_BYTES expression "end of object"
-#line 1835 "src/mongo/db/cst/grammar.yy"
+ case 446: // strLenBytes: "object" STR_LEN_BYTES expression "end of object"
+#line 1890 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::strLenBytes, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5285 "src/mongo/db/cst/parser_gen.cpp"
+#line 5408 "parser_gen.cpp"
break;
- case 435: // strLenCP: "object" STR_LEN_CP expression "end of object"
-#line 1842 "src/mongo/db/cst/grammar.yy"
+ case 447: // strLenCP: "object" STR_LEN_CP expression "end of object"
+#line 1897 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::strLenCP, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5294 "src/mongo/db/cst/parser_gen.cpp"
+#line 5417 "parser_gen.cpp"
break;
- case 436: // strcasecmp: "object" STR_CASE_CMP "array" expression expression
+ case 448: // strcasecmp: "object" STR_CASE_CMP "array" expression expression
// "end of array" "end of object"
-#line 1850 "src/mongo/db/cst/grammar.yy"
+#line 1905 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::strcasecmp,
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[3].value.as<CNode>()),
YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 5303 "src/mongo/db/cst/parser_gen.cpp"
+#line 5426 "parser_gen.cpp"
break;
- case 437: // substr: "object" SUBSTR "array" expression expression expression
+ case 449: // substr: "object" SUBSTR "array" expression expression expression
// "end of array" "end of object"
-#line 1858 "src/mongo/db/cst/grammar.yy"
+#line 1913 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::substr,
@@ -5766,12 +5915,12 @@ int ParserGen::parse() {
YY_MOVE(yystack_[3].value.as<CNode>()),
YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 5312 "src/mongo/db/cst/parser_gen.cpp"
+#line 5435 "parser_gen.cpp"
break;
- case 438: // substrBytes: "object" SUBSTR_BYTES "array" expression expression
+ case 450: // substrBytes: "object" SUBSTR_BYTES "array" expression expression
// expression "end of array" "end of object"
-#line 1866 "src/mongo/db/cst/grammar.yy"
+#line 1921 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::substrBytes,
@@ -5779,12 +5928,12 @@ int ParserGen::parse() {
YY_MOVE(yystack_[3].value.as<CNode>()),
YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 5321 "src/mongo/db/cst/parser_gen.cpp"
+#line 5444 "parser_gen.cpp"
break;
- case 439: // substrCP: "object" SUBSTR_CP "array" expression expression
+ case 451: // substrCP: "object" SUBSTR_CP "array" expression expression
// expression "end of array" "end of object"
-#line 1874 "src/mongo/db/cst/grammar.yy"
+#line 1929 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::substrCP,
@@ -5792,154 +5941,154 @@ int ParserGen::parse() {
YY_MOVE(yystack_[3].value.as<CNode>()),
YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 5330 "src/mongo/db/cst/parser_gen.cpp"
+#line 5453 "parser_gen.cpp"
break;
- case 440: // toLower: "object" TO_LOWER expression "end of object"
-#line 1881 "src/mongo/db/cst/grammar.yy"
+ case 452: // toLower: "object" TO_LOWER expression "end of object"
+#line 1936 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::toLower, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5338 "src/mongo/db/cst/parser_gen.cpp"
+#line 5461 "parser_gen.cpp"
break;
- case 441: // toUpper: "object" TO_UPPER expression "end of object"
-#line 1887 "src/mongo/db/cst/grammar.yy"
+ case 453: // toUpper: "object" TO_UPPER expression "end of object"
+#line 1942 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::toUpper, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5346 "src/mongo/db/cst/parser_gen.cpp"
+#line 5469 "parser_gen.cpp"
break;
- case 442: // metaSortKeyword: "randVal"
-#line 1893 "src/mongo/db/cst/grammar.yy"
+ case 454: // metaSortKeyword: "randVal"
+#line 1948 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::randVal};
}
-#line 5354 "src/mongo/db/cst/parser_gen.cpp"
+#line 5477 "parser_gen.cpp"
break;
- case 443: // metaSortKeyword: "textScore"
-#line 1896 "src/mongo/db/cst/grammar.yy"
+ case 455: // metaSortKeyword: "textScore"
+#line 1951 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::textScore};
}
-#line 5362 "src/mongo/db/cst/parser_gen.cpp"
+#line 5485 "parser_gen.cpp"
break;
- case 444: // metaSort: "object" META metaSortKeyword "end of object"
-#line 1902 "src/mongo/db/cst/grammar.yy"
+ case 456: // metaSort: "object" META metaSortKeyword "end of object"
+#line 1957 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::meta, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5370 "src/mongo/db/cst/parser_gen.cpp"
+#line 5493 "parser_gen.cpp"
break;
- case 445: // sortSpecs: "object" specList "end of object"
-#line 1908 "src/mongo/db/cst/grammar.yy"
+ case 457: // sortSpecs: "object" specList "end of object"
+#line 1963 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
}
-#line 5378 "src/mongo/db/cst/parser_gen.cpp"
+#line 5501 "parser_gen.cpp"
break;
- case 446: // specList: %empty
-#line 1913 "src/mongo/db/cst/grammar.yy"
+ case 458: // specList: %empty
+#line 1968 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode::noopLeaf();
}
-#line 5386 "src/mongo/db/cst/parser_gen.cpp"
+#line 5509 "parser_gen.cpp"
break;
- case 447: // specList: specList sortSpec
-#line 1916 "src/mongo/db/cst/grammar.yy"
+ case 459: // specList: specList sortSpec
+#line 1971 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
yylhs.value.as<CNode>().objectChildren().emplace_back(
YY_MOVE(yystack_[0].value.as<std::pair<CNode::Fieldname, CNode>>()));
}
-#line 5395 "src/mongo/db/cst/parser_gen.cpp"
+#line 5518 "parser_gen.cpp"
break;
- case 448: // oneOrNegOne: "1 (int)"
-#line 1923 "src/mongo/db/cst/grammar.yy"
+ case 460: // oneOrNegOne: "1 (int)"
+#line 1978 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::intOneKey};
}
-#line 5403 "src/mongo/db/cst/parser_gen.cpp"
+#line 5526 "parser_gen.cpp"
break;
- case 449: // oneOrNegOne: "-1 (int)"
-#line 1926 "src/mongo/db/cst/grammar.yy"
+ case 461: // oneOrNegOne: "-1 (int)"
+#line 1981 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::intNegOneKey};
}
-#line 5411 "src/mongo/db/cst/parser_gen.cpp"
+#line 5534 "parser_gen.cpp"
break;
- case 450: // oneOrNegOne: "1 (long)"
-#line 1929 "src/mongo/db/cst/grammar.yy"
+ case 462: // oneOrNegOne: "1 (long)"
+#line 1984 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::longOneKey};
}
-#line 5419 "src/mongo/db/cst/parser_gen.cpp"
+#line 5542 "parser_gen.cpp"
break;
- case 451: // oneOrNegOne: "-1 (long)"
-#line 1932 "src/mongo/db/cst/grammar.yy"
+ case 463: // oneOrNegOne: "-1 (long)"
+#line 1987 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::longNegOneKey};
}
-#line 5427 "src/mongo/db/cst/parser_gen.cpp"
+#line 5550 "parser_gen.cpp"
break;
- case 452: // oneOrNegOne: "1 (double)"
-#line 1935 "src/mongo/db/cst/grammar.yy"
+ case 464: // oneOrNegOne: "1 (double)"
+#line 1990 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::doubleOneKey};
}
-#line 5435 "src/mongo/db/cst/parser_gen.cpp"
+#line 5558 "parser_gen.cpp"
break;
- case 453: // oneOrNegOne: "-1 (double)"
-#line 1938 "src/mongo/db/cst/grammar.yy"
+ case 465: // oneOrNegOne: "-1 (double)"
+#line 1993 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::doubleNegOneKey};
}
-#line 5443 "src/mongo/db/cst/parser_gen.cpp"
+#line 5566 "parser_gen.cpp"
break;
- case 454: // oneOrNegOne: "1 (decimal)"
-#line 1941 "src/mongo/db/cst/grammar.yy"
+ case 466: // oneOrNegOne: "1 (decimal)"
+#line 1996 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::decimalOneKey};
}
-#line 5451 "src/mongo/db/cst/parser_gen.cpp"
+#line 5574 "parser_gen.cpp"
break;
- case 455: // oneOrNegOne: "-1 (decimal)"
-#line 1944 "src/mongo/db/cst/grammar.yy"
+ case 467: // oneOrNegOne: "-1 (decimal)"
+#line 1999 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{KeyValue::decimalNegOneKey};
}
-#line 5459 "src/mongo/db/cst/parser_gen.cpp"
+#line 5582 "parser_gen.cpp"
break;
- case 456: // sortFieldname: valueFieldname
-#line 1949 "src/mongo/db/cst/grammar.yy"
+ case 468: // sortFieldname: valueFieldname
+#line 2004 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
SortPath{make_vector<std::string>(stdx::get<UserFieldname>(
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>())))};
}
-#line 5467 "src/mongo/db/cst/parser_gen.cpp"
+#line 5590 "parser_gen.cpp"
break;
- case 457: // sortFieldname: "fieldname containing dotted path"
-#line 1951 "src/mongo/db/cst/grammar.yy"
+ case 469: // sortFieldname: "fieldname containing dotted path"
+#line 2006 "grammar.yy"
{
auto components = YY_MOVE(yystack_[0].value.as<std::vector<std::string>>());
if (auto status = c_node_validation::validateSortPath(components);
@@ -5947,120 +6096,120 @@ int ParserGen::parse() {
error(yystack_[0].location, status.reason());
yylhs.value.as<CNode::Fieldname>() = SortPath{std::move(components)};
}
-#line 5479 "src/mongo/db/cst/parser_gen.cpp"
+#line 5602 "parser_gen.cpp"
break;
- case 458: // sortSpec: sortFieldname metaSort
-#line 1961 "src/mongo/db/cst/grammar.yy"
+ case 470: // sortSpec: sortFieldname metaSort
+#line 2016 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = {
YY_MOVE(yystack_[1].value.as<CNode::Fieldname>()),
YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 5487 "src/mongo/db/cst/parser_gen.cpp"
+#line 5610 "parser_gen.cpp"
break;
- case 459: // sortSpec: sortFieldname oneOrNegOne
-#line 1963 "src/mongo/db/cst/grammar.yy"
+ case 471: // sortSpec: sortFieldname oneOrNegOne
+#line 2018 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = {
YY_MOVE(yystack_[1].value.as<CNode::Fieldname>()),
YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 5495 "src/mongo/db/cst/parser_gen.cpp"
+#line 5618 "parser_gen.cpp"
break;
- case 460: // setExpression: allElementsTrue
-#line 1969 "src/mongo/db/cst/grammar.yy"
+ case 472: // setExpression: allElementsTrue
+#line 2024 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5501 "src/mongo/db/cst/parser_gen.cpp"
+#line 5624 "parser_gen.cpp"
break;
- case 461: // setExpression: anyElementTrue
-#line 1969 "src/mongo/db/cst/grammar.yy"
+ case 473: // setExpression: anyElementTrue
+#line 2024 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5507 "src/mongo/db/cst/parser_gen.cpp"
+#line 5630 "parser_gen.cpp"
break;
- case 462: // setExpression: setDifference
-#line 1969 "src/mongo/db/cst/grammar.yy"
+ case 474: // setExpression: setDifference
+#line 2024 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5513 "src/mongo/db/cst/parser_gen.cpp"
+#line 5636 "parser_gen.cpp"
break;
- case 463: // setExpression: setEquals
-#line 1969 "src/mongo/db/cst/grammar.yy"
+ case 475: // setExpression: setEquals
+#line 2024 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5519 "src/mongo/db/cst/parser_gen.cpp"
+#line 5642 "parser_gen.cpp"
break;
- case 464: // setExpression: setIntersection
-#line 1969 "src/mongo/db/cst/grammar.yy"
+ case 476: // setExpression: setIntersection
+#line 2024 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5525 "src/mongo/db/cst/parser_gen.cpp"
+#line 5648 "parser_gen.cpp"
break;
- case 465: // setExpression: setIsSubset
-#line 1969 "src/mongo/db/cst/grammar.yy"
+ case 477: // setExpression: setIsSubset
+#line 2024 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5531 "src/mongo/db/cst/parser_gen.cpp"
+#line 5654 "parser_gen.cpp"
break;
- case 466: // setExpression: setUnion
-#line 1970 "src/mongo/db/cst/grammar.yy"
+ case 478: // setExpression: setUnion
+#line 2025 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5537 "src/mongo/db/cst/parser_gen.cpp"
+#line 5660 "parser_gen.cpp"
break;
- case 467: // allElementsTrue: "object" "allElementsTrue" "array" expression
+ case 479: // allElementsTrue: "object" "allElementsTrue" "array" expression
// "end of array" "end of object"
-#line 1974 "src/mongo/db/cst/grammar.yy"
+#line 2029 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{
CNode::ObjectChildren{{KeyFieldname::allElementsTrue,
CNode{YY_MOVE(yystack_[2].value.as<CNode>())}}}};
}
-#line 5545 "src/mongo/db/cst/parser_gen.cpp"
+#line 5668 "parser_gen.cpp"
break;
- case 468: // anyElementTrue: "object" "anyElementTrue" "array" expression "end
+ case 480: // anyElementTrue: "object" "anyElementTrue" "array" expression "end
// of array" "end of object"
-#line 1980 "src/mongo/db/cst/grammar.yy"
+#line 2035 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{
CNode::ObjectChildren{{KeyFieldname::anyElementTrue,
CNode{YY_MOVE(yystack_[2].value.as<CNode>())}}}};
}
-#line 5553 "src/mongo/db/cst/parser_gen.cpp"
+#line 5676 "parser_gen.cpp"
break;
- case 469: // setDifference: "object" "setDifference" exprFixedTwoArg "end of
+ case 481: // setDifference: "object" "setDifference" exprFixedTwoArg "end of
// object"
-#line 1986 "src/mongo/db/cst/grammar.yy"
+#line 2041 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::setDifference, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5562 "src/mongo/db/cst/parser_gen.cpp"
+#line 5685 "parser_gen.cpp"
break;
- case 470: // setEquals: "object" "setEquals" "array" expression expression
+ case 482: // setEquals: "object" "setEquals" "array" expression expression
// expressions "end of array" "end of object"
-#line 1994 "src/mongo/db/cst/grammar.yy"
+#line 2049 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::setEquals,
@@ -6071,12 +6220,12 @@ int ParserGen::parse() {
yylhs.value.as<CNode>().objectChildren()[0].second.arrayChildren();
array.insert(array.end(), others.begin(), others.end());
}
-#line 5574 "src/mongo/db/cst/parser_gen.cpp"
+#line 5697 "parser_gen.cpp"
break;
- case 471: // setIntersection: "object" "setIntersection" "array" expression
+ case 483: // setIntersection: "object" "setIntersection" "array" expression
// expression expressions "end of array" "end of object"
-#line 2005 "src/mongo/db/cst/grammar.yy"
+#line 2060 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::setIntersection,
@@ -6087,22 +6236,22 @@ int ParserGen::parse() {
yylhs.value.as<CNode>().objectChildren()[0].second.arrayChildren();
array.insert(array.end(), others.begin(), others.end());
}
-#line 5586 "src/mongo/db/cst/parser_gen.cpp"
+#line 5709 "parser_gen.cpp"
break;
- case 472: // setIsSubset: "object" "setIsSubset" exprFixedTwoArg "end of
+ case 484: // setIsSubset: "object" "setIsSubset" exprFixedTwoArg "end of
// object"
-#line 2015 "src/mongo/db/cst/grammar.yy"
+#line 2070 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::setIsSubset, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5595 "src/mongo/db/cst/parser_gen.cpp"
+#line 5718 "parser_gen.cpp"
break;
- case 473: // setUnion: "object" "setUnion" "array" expression expression
+ case 485: // setUnion: "object" "setUnion" "array" expression expression
// expressions "end of array" "end of object"
-#line 2023 "src/mongo/db/cst/grammar.yy"
+#line 2078 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::setUnion,
@@ -6113,426 +6262,426 @@ int ParserGen::parse() {
yylhs.value.as<CNode>().objectChildren()[0].second.arrayChildren();
array.insert(array.end(), others.begin(), others.end());
}
-#line 5607 "src/mongo/db/cst/parser_gen.cpp"
+#line 5730 "parser_gen.cpp"
break;
- case 474: // literalEscapes: const
-#line 2033 "src/mongo/db/cst/grammar.yy"
+ case 486: // literalEscapes: const
+#line 2088 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5613 "src/mongo/db/cst/parser_gen.cpp"
+#line 5736 "parser_gen.cpp"
break;
- case 475: // literalEscapes: literal
-#line 2033 "src/mongo/db/cst/grammar.yy"
+ case 487: // literalEscapes: literal
+#line 2088 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5619 "src/mongo/db/cst/parser_gen.cpp"
+#line 5742 "parser_gen.cpp"
break;
- case 476: // const: "object" CONST_EXPR "array" value "end of array" "end of
+ case 488: // const: "object" CONST_EXPR "array" value "end of array" "end of
// object"
-#line 2037 "src/mongo/db/cst/grammar.yy"
+#line 2092 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::constExpr,
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 5628 "src/mongo/db/cst/parser_gen.cpp"
+#line 5751 "parser_gen.cpp"
break;
- case 477: // literal: "object" LITERAL "array" value "end of array" "end of
+ case 489: // literal: "object" LITERAL "array" value "end of array" "end of
// object"
-#line 2044 "src/mongo/db/cst/grammar.yy"
+#line 2099 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::literal,
CNode{CNode::ArrayChildren{YY_MOVE(yystack_[2].value.as<CNode>())}}}}};
}
-#line 5637 "src/mongo/db/cst/parser_gen.cpp"
+#line 5760 "parser_gen.cpp"
break;
- case 478: // value: simpleValue
-#line 2051 "src/mongo/db/cst/grammar.yy"
+ case 490: // value: simpleValue
+#line 2106 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5643 "src/mongo/db/cst/parser_gen.cpp"
+#line 5766 "parser_gen.cpp"
break;
- case 479: // value: compoundValue
-#line 2051 "src/mongo/db/cst/grammar.yy"
+ case 491: // value: compoundValue
+#line 2106 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5649 "src/mongo/db/cst/parser_gen.cpp"
+#line 5772 "parser_gen.cpp"
break;
- case 480: // compoundValue: valueArray
-#line 2055 "src/mongo/db/cst/grammar.yy"
+ case 492: // compoundValue: valueArray
+#line 2110 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5655 "src/mongo/db/cst/parser_gen.cpp"
+#line 5778 "parser_gen.cpp"
break;
- case 481: // compoundValue: valueObject
-#line 2055 "src/mongo/db/cst/grammar.yy"
+ case 493: // compoundValue: valueObject
+#line 2110 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5661 "src/mongo/db/cst/parser_gen.cpp"
+#line 5784 "parser_gen.cpp"
break;
- case 482: // valueArray: "array" values "end of array"
-#line 2059 "src/mongo/db/cst/grammar.yy"
+ case 494: // valueArray: "array" values "end of array"
+#line 2114 "grammar.yy"
{
yylhs.value.as<CNode>() =
CNode{YY_MOVE(yystack_[1].value.as<std::vector<CNode>>())};
}
-#line 5669 "src/mongo/db/cst/parser_gen.cpp"
+#line 5792 "parser_gen.cpp"
break;
- case 483: // values: %empty
-#line 2065 "src/mongo/db/cst/grammar.yy"
+ case 495: // values: %empty
+#line 2120 "grammar.yy"
{
}
-#line 5675 "src/mongo/db/cst/parser_gen.cpp"
+#line 5798 "parser_gen.cpp"
break;
- case 484: // values: values value
-#line 2066 "src/mongo/db/cst/grammar.yy"
+ case 496: // values: values value
+#line 2121 "grammar.yy"
{
yylhs.value.as<std::vector<CNode>>() =
YY_MOVE(yystack_[1].value.as<std::vector<CNode>>());
yylhs.value.as<std::vector<CNode>>().emplace_back(
YY_MOVE(yystack_[0].value.as<CNode>()));
}
-#line 5684 "src/mongo/db/cst/parser_gen.cpp"
+#line 5807 "parser_gen.cpp"
break;
- case 485: // valueObject: "object" valueFields "end of object"
-#line 2073 "src/mongo/db/cst/grammar.yy"
+ case 497: // valueObject: "object" valueFields "end of object"
+#line 2128 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
}
-#line 5692 "src/mongo/db/cst/parser_gen.cpp"
+#line 5815 "parser_gen.cpp"
break;
- case 486: // valueFields: %empty
-#line 2079 "src/mongo/db/cst/grammar.yy"
+ case 498: // valueFields: %empty
+#line 2134 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode::noopLeaf();
}
-#line 5700 "src/mongo/db/cst/parser_gen.cpp"
+#line 5823 "parser_gen.cpp"
break;
- case 487: // valueFields: valueFields valueField
-#line 2082 "src/mongo/db/cst/grammar.yy"
+ case 499: // valueFields: valueFields valueField
+#line 2137 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>());
yylhs.value.as<CNode>().objectChildren().emplace_back(
YY_MOVE(yystack_[0].value.as<std::pair<CNode::Fieldname, CNode>>()));
}
-#line 5709 "src/mongo/db/cst/parser_gen.cpp"
+#line 5832 "parser_gen.cpp"
break;
- case 488: // valueField: valueFieldname value
-#line 2089 "src/mongo/db/cst/grammar.yy"
+ case 500: // valueField: valueFieldname value
+#line 2144 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = {
YY_MOVE(yystack_[1].value.as<CNode::Fieldname>()),
YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 5717 "src/mongo/db/cst/parser_gen.cpp"
+#line 5840 "parser_gen.cpp"
break;
- case 489: // valueFieldname: invariableUserFieldname
-#line 2096 "src/mongo/db/cst/grammar.yy"
+ case 501: // valueFieldname: invariableUserFieldname
+#line 2151 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>());
}
-#line 5723 "src/mongo/db/cst/parser_gen.cpp"
+#line 5846 "parser_gen.cpp"
break;
- case 490: // valueFieldname: stageAsUserFieldname
-#line 2097 "src/mongo/db/cst/grammar.yy"
+ case 502: // valueFieldname: stageAsUserFieldname
+#line 2152 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>());
}
-#line 5729 "src/mongo/db/cst/parser_gen.cpp"
+#line 5852 "parser_gen.cpp"
break;
- case 491: // valueFieldname: argAsUserFieldname
-#line 2098 "src/mongo/db/cst/grammar.yy"
+ case 503: // valueFieldname: argAsUserFieldname
+#line 2153 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>());
}
-#line 5735 "src/mongo/db/cst/parser_gen.cpp"
+#line 5858 "parser_gen.cpp"
break;
- case 492: // valueFieldname: aggExprAsUserFieldname
-#line 2099 "src/mongo/db/cst/grammar.yy"
+ case 504: // valueFieldname: aggExprAsUserFieldname
+#line 2154 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>());
}
-#line 5741 "src/mongo/db/cst/parser_gen.cpp"
+#line 5864 "parser_gen.cpp"
break;
- case 493: // valueFieldname: idAsUserFieldname
-#line 2100 "src/mongo/db/cst/grammar.yy"
+ case 505: // valueFieldname: idAsUserFieldname
+#line 2155 "grammar.yy"
{
yylhs.value.as<CNode::Fieldname>() =
YY_MOVE(yystack_[0].value.as<CNode::Fieldname>());
}
-#line 5747 "src/mongo/db/cst/parser_gen.cpp"
+#line 5870 "parser_gen.cpp"
break;
- case 494: // compExprs: cmp
-#line 2103 "src/mongo/db/cst/grammar.yy"
+ case 506: // compExprs: cmp
+#line 2158 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5753 "src/mongo/db/cst/parser_gen.cpp"
+#line 5876 "parser_gen.cpp"
break;
- case 495: // compExprs: eq
-#line 2103 "src/mongo/db/cst/grammar.yy"
+ case 507: // compExprs: eq
+#line 2158 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5759 "src/mongo/db/cst/parser_gen.cpp"
+#line 5882 "parser_gen.cpp"
break;
- case 496: // compExprs: gt
-#line 2103 "src/mongo/db/cst/grammar.yy"
+ case 508: // compExprs: gt
+#line 2158 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5765 "src/mongo/db/cst/parser_gen.cpp"
+#line 5888 "parser_gen.cpp"
break;
- case 497: // compExprs: gte
-#line 2103 "src/mongo/db/cst/grammar.yy"
+ case 509: // compExprs: gte
+#line 2158 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5771 "src/mongo/db/cst/parser_gen.cpp"
+#line 5894 "parser_gen.cpp"
break;
- case 498: // compExprs: lt
-#line 2103 "src/mongo/db/cst/grammar.yy"
+ case 510: // compExprs: lt
+#line 2158 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5777 "src/mongo/db/cst/parser_gen.cpp"
+#line 5900 "parser_gen.cpp"
break;
- case 499: // compExprs: lte
-#line 2103 "src/mongo/db/cst/grammar.yy"
+ case 511: // compExprs: lte
+#line 2158 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5783 "src/mongo/db/cst/parser_gen.cpp"
+#line 5906 "parser_gen.cpp"
break;
- case 500: // compExprs: ne
-#line 2103 "src/mongo/db/cst/grammar.yy"
+ case 512: // compExprs: ne
+#line 2158 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5789 "src/mongo/db/cst/parser_gen.cpp"
+#line 5912 "parser_gen.cpp"
break;
- case 501: // cmp: "object" CMP exprFixedTwoArg "end of object"
-#line 2105 "src/mongo/db/cst/grammar.yy"
+ case 513: // cmp: "object" CMP exprFixedTwoArg "end of object"
+#line 2160 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::cmp, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5798 "src/mongo/db/cst/parser_gen.cpp"
+#line 5921 "parser_gen.cpp"
break;
- case 502: // eq: "object" EQ exprFixedTwoArg "end of object"
-#line 2110 "src/mongo/db/cst/grammar.yy"
+ case 514: // eq: "object" EQ exprFixedTwoArg "end of object"
+#line 2165 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::eq, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5807 "src/mongo/db/cst/parser_gen.cpp"
+#line 5930 "parser_gen.cpp"
break;
- case 503: // gt: "object" GT exprFixedTwoArg "end of object"
-#line 2115 "src/mongo/db/cst/grammar.yy"
+ case 515: // gt: "object" GT exprFixedTwoArg "end of object"
+#line 2170 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::gt, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5816 "src/mongo/db/cst/parser_gen.cpp"
+#line 5939 "parser_gen.cpp"
break;
- case 504: // gte: "object" GTE exprFixedTwoArg "end of object"
-#line 2120 "src/mongo/db/cst/grammar.yy"
+ case 516: // gte: "object" GTE exprFixedTwoArg "end of object"
+#line 2175 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::gte, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5825 "src/mongo/db/cst/parser_gen.cpp"
+#line 5948 "parser_gen.cpp"
break;
- case 505: // lt: "object" LT exprFixedTwoArg "end of object"
-#line 2125 "src/mongo/db/cst/grammar.yy"
+ case 517: // lt: "object" LT exprFixedTwoArg "end of object"
+#line 2180 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::lt, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5834 "src/mongo/db/cst/parser_gen.cpp"
+#line 5957 "parser_gen.cpp"
break;
- case 506: // lte: "object" LTE exprFixedTwoArg "end of object"
-#line 2130 "src/mongo/db/cst/grammar.yy"
+ case 518: // lte: "object" LTE exprFixedTwoArg "end of object"
+#line 2185 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::lte, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5843 "src/mongo/db/cst/parser_gen.cpp"
+#line 5966 "parser_gen.cpp"
break;
- case 507: // ne: "object" NE exprFixedTwoArg "end of object"
-#line 2135 "src/mongo/db/cst/grammar.yy"
+ case 519: // ne: "object" NE exprFixedTwoArg "end of object"
+#line 2190 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::ne, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5852 "src/mongo/db/cst/parser_gen.cpp"
+#line 5975 "parser_gen.cpp"
break;
- case 508: // typeExpression: convert
-#line 2141 "src/mongo/db/cst/grammar.yy"
+ case 520: // typeExpression: convert
+#line 2196 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5858 "src/mongo/db/cst/parser_gen.cpp"
+#line 5981 "parser_gen.cpp"
break;
- case 509: // typeExpression: toBool
-#line 2142 "src/mongo/db/cst/grammar.yy"
+ case 521: // typeExpression: toBool
+#line 2197 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5864 "src/mongo/db/cst/parser_gen.cpp"
+#line 5987 "parser_gen.cpp"
break;
- case 510: // typeExpression: toDate
-#line 2143 "src/mongo/db/cst/grammar.yy"
+ case 522: // typeExpression: toDate
+#line 2198 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5870 "src/mongo/db/cst/parser_gen.cpp"
+#line 5993 "parser_gen.cpp"
break;
- case 511: // typeExpression: toDecimal
-#line 2144 "src/mongo/db/cst/grammar.yy"
+ case 523: // typeExpression: toDecimal
+#line 2199 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5876 "src/mongo/db/cst/parser_gen.cpp"
+#line 5999 "parser_gen.cpp"
break;
- case 512: // typeExpression: toDouble
-#line 2145 "src/mongo/db/cst/grammar.yy"
+ case 524: // typeExpression: toDouble
+#line 2200 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5882 "src/mongo/db/cst/parser_gen.cpp"
+#line 6005 "parser_gen.cpp"
break;
- case 513: // typeExpression: toInt
-#line 2146 "src/mongo/db/cst/grammar.yy"
+ case 525: // typeExpression: toInt
+#line 2201 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5888 "src/mongo/db/cst/parser_gen.cpp"
+#line 6011 "parser_gen.cpp"
break;
- case 514: // typeExpression: toLong
-#line 2147 "src/mongo/db/cst/grammar.yy"
+ case 526: // typeExpression: toLong
+#line 2202 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5894 "src/mongo/db/cst/parser_gen.cpp"
+#line 6017 "parser_gen.cpp"
break;
- case 515: // typeExpression: toObjectId
-#line 2148 "src/mongo/db/cst/grammar.yy"
+ case 527: // typeExpression: toObjectId
+#line 2203 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5900 "src/mongo/db/cst/parser_gen.cpp"
+#line 6023 "parser_gen.cpp"
break;
- case 516: // typeExpression: toString
-#line 2149 "src/mongo/db/cst/grammar.yy"
+ case 528: // typeExpression: toString
+#line 2204 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5906 "src/mongo/db/cst/parser_gen.cpp"
+#line 6029 "parser_gen.cpp"
break;
- case 517: // typeExpression: type
-#line 2150 "src/mongo/db/cst/grammar.yy"
+ case 529: // typeExpression: type
+#line 2205 "grammar.yy"
{
yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>());
}
-#line 5912 "src/mongo/db/cst/parser_gen.cpp"
+#line 6035 "parser_gen.cpp"
break;
- case 518: // onErrorArg: %empty
-#line 2155 "src/mongo/db/cst/grammar.yy"
+ case 530: // onErrorArg: %empty
+#line 2210 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() =
std::pair{KeyFieldname::onErrorArg, CNode{KeyValue::absentKey}};
}
-#line 5920 "src/mongo/db/cst/parser_gen.cpp"
+#line 6043 "parser_gen.cpp"
break;
- case 519: // onErrorArg: "onError argument" expression
-#line 2158 "src/mongo/db/cst/grammar.yy"
+ case 531: // onErrorArg: "onError argument" expression
+#line 2213 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = std::pair{
KeyFieldname::onErrorArg, YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 5928 "src/mongo/db/cst/parser_gen.cpp"
+#line 6051 "parser_gen.cpp"
break;
- case 520: // onNullArg: %empty
-#line 2165 "src/mongo/db/cst/grammar.yy"
+ case 532: // onNullArg: %empty
+#line 2220 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() =
std::pair{KeyFieldname::onNullArg, CNode{KeyValue::absentKey}};
}
-#line 5936 "src/mongo/db/cst/parser_gen.cpp"
+#line 6059 "parser_gen.cpp"
break;
- case 521: // onNullArg: "onNull argument" expression
-#line 2168 "src/mongo/db/cst/grammar.yy"
+ case 533: // onNullArg: "onNull argument" expression
+#line 2223 "grammar.yy"
{
yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = std::pair{
KeyFieldname::onNullArg, YY_MOVE(yystack_[0].value.as<CNode>())};
}
-#line 5944 "src/mongo/db/cst/parser_gen.cpp"
+#line 6067 "parser_gen.cpp"
break;
- case 522: // convert: "object" CONVERT START_ORDERED_OBJECT "input argument"
+ case 534: // convert: "object" CONVERT START_ORDERED_OBJECT "input argument"
// expression onErrorArg onNullArg "to argument" expression "end of
// object" "end of object"
-#line 2175 "src/mongo/db/cst/grammar.yy"
+#line 2230 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::convert,
@@ -6544,92 +6693,92 @@ int ParserGen::parse() {
YY_MOVE(yystack_[4]
.value.as<std::pair<CNode::Fieldname, CNode>>())}}}}};
}
-#line 5955 "src/mongo/db/cst/parser_gen.cpp"
+#line 6078 "parser_gen.cpp"
break;
- case 523: // toBool: "object" TO_BOOL expression "end of object"
-#line 2184 "src/mongo/db/cst/grammar.yy"
+ case 535: // toBool: "object" TO_BOOL expression "end of object"
+#line 2239 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::toBool, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5963 "src/mongo/db/cst/parser_gen.cpp"
+#line 6086 "parser_gen.cpp"
break;
- case 524: // toDate: "object" TO_DATE expression "end of object"
-#line 2189 "src/mongo/db/cst/grammar.yy"
+ case 536: // toDate: "object" TO_DATE expression "end of object"
+#line 2244 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::toDate, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5971 "src/mongo/db/cst/parser_gen.cpp"
+#line 6094 "parser_gen.cpp"
break;
- case 525: // toDecimal: "object" TO_DECIMAL expression "end of object"
-#line 2194 "src/mongo/db/cst/grammar.yy"
+ case 537: // toDecimal: "object" TO_DECIMAL expression "end of object"
+#line 2249 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::toDecimal, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5979 "src/mongo/db/cst/parser_gen.cpp"
+#line 6102 "parser_gen.cpp"
break;
- case 526: // toDouble: "object" TO_DOUBLE expression "end of object"
-#line 2199 "src/mongo/db/cst/grammar.yy"
+ case 538: // toDouble: "object" TO_DOUBLE expression "end of object"
+#line 2254 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::toDouble, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5987 "src/mongo/db/cst/parser_gen.cpp"
+#line 6110 "parser_gen.cpp"
break;
- case 527: // toInt: "object" TO_INT expression "end of object"
-#line 2204 "src/mongo/db/cst/grammar.yy"
+ case 539: // toInt: "object" TO_INT expression "end of object"
+#line 2259 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::toInt, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 5995 "src/mongo/db/cst/parser_gen.cpp"
+#line 6118 "parser_gen.cpp"
break;
- case 528: // toLong: "object" TO_LONG expression "end of object"
-#line 2209 "src/mongo/db/cst/grammar.yy"
+ case 540: // toLong: "object" TO_LONG expression "end of object"
+#line 2264 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::toLong, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 6003 "src/mongo/db/cst/parser_gen.cpp"
+#line 6126 "parser_gen.cpp"
break;
- case 529: // toObjectId: "object" TO_OBJECT_ID expression "end of object"
-#line 2214 "src/mongo/db/cst/grammar.yy"
+ case 541: // toObjectId: "object" TO_OBJECT_ID expression "end of object"
+#line 2269 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::toObjectId, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 6011 "src/mongo/db/cst/parser_gen.cpp"
+#line 6134 "parser_gen.cpp"
break;
- case 530: // toString: "object" TO_STRING expression "end of object"
-#line 2219 "src/mongo/db/cst/grammar.yy"
+ case 542: // toString: "object" TO_STRING expression "end of object"
+#line 2274 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::toString, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 6019 "src/mongo/db/cst/parser_gen.cpp"
+#line 6142 "parser_gen.cpp"
break;
- case 531: // type: "object" TYPE expression "end of object"
-#line 2224 "src/mongo/db/cst/grammar.yy"
+ case 543: // type: "object" TYPE expression "end of object"
+#line 2279 "grammar.yy"
{
yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{
{KeyFieldname::type, YY_MOVE(yystack_[1].value.as<CNode>())}}};
}
-#line 6027 "src/mongo/db/cst/parser_gen.cpp"
+#line 6150 "parser_gen.cpp"
break;
-#line 6031 "src/mongo/db/cst/parser_gen.cpp"
+#line 6154 "parser_gen.cpp"
default:
break;
@@ -6944,567 +7093,604 @@ std::string ParserGen::yysyntax_error_(const context& yyctx) const {
}
-const short ParserGen::yypact_ninf_ = -794;
+const short ParserGen::yypact_ninf_ = -756;
const signed char ParserGen::yytable_ninf_ = -1;
const short ParserGen::yypact_[] = {
- -50, -76, -71, -69, 52, -60, -794, -794, -794, -794, -794, -794, 23, 13, 1133, 566,
- -49, 57, -48, -40, 57, -794, 26, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, 2561, -794, -794, -794, -34, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, 161, -794, -794, -794,
- 40, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, 79, -794, 92, 0, -60, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, 32, -794, -794, -794, 2806, 57, 54, -794,
- -794, -5, -71, -75, -794, 2691, -794, -794, 2691, -794, -794, -794, -794, 64, 98, -794,
- -87, -794, -794, 74, -794, -794, 75, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, 730, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -18, -794,
- -794, -794, -794, 1131, 2171, 2301, 2301, 12, 24, 12, 28, 2301, 2301, 2301, 31, 2301,
- 2171, 31, 34, 37, -794, 2301, 2301, -794, -794, 2301, 38, 31, 2171, 2171, 31, 31,
- -794, 39, 41, 42, 2171, 44, 2171, 31, 31, -794, 313, 45, 49, 31, 51, 12,
- 53, 2301, -794, -794, -794, -794, -794, 55, -794, 31, 56, 58, 31, 59, 61, 2301,
- 2301, 62, 2171, 69, 2171, 2171, 71, 73, 76, 81, 2301, 2301, 2171, 2171, 2171, 2171,
- 2171, 2171, 2171, 2171, 2171, 2171, -794, 84, 2171, 2691, 2691, -794, 2856, 94, 72, -794,
- 1003, -794, -794, -794, -794, -794, 108, 2171, -794, -794, -794, -794, -794, -794, 116, 119,
- 137, 2171, 147, 2171, 148, 149, 150, 2171, 151, 154, 155, 159, -794, 2431, 199, 165,
- 166, 205, 207, 169, 2171, 171, 172, 175, 177, 178, 2171, 2171, 2431, 179, 2171, 182,
- 183, 184, 226, 186, 188, 190, 191, 197, 198, 203, 204, 208, 2171, 2171, 211, 2171,
- 222, 2171, 223, 227, 261, 238, 246, 294, 295, 2171, 226, 260, 2171, 2171, 263, 2171,
- 2171, 265, 266, 270, 275, 2171, 276, 2171, 277, 278, 2171, 2171, 2171, 2171, 279, 281,
- 282, 285, 286, 291, 292, 293, 296, 297, 298, 299, 226, 2171, 300, -794, -794, -794,
- -794, -794, 301, 2872, -794, 303, -794, -794, -794, 305, -794, 306, -794, -794, -794, 2171,
- -794, -794, -794, -794, 1261, -794, -794, 307, -794, -794, -794, -794, 2171, -794, -794, 2171,
- 2171, -794, 2171, -794, -794, -794, -794, -794, 2171, 2171, 309, -794, 2171, -794, -794, -794,
- 2171, 330, -794, -794, -794, -794, -794, -794, -794, -794, -794, 2171, 2171, -794, 310, -794,
- 2171, -794, -794, 2171, -794, -794, 2171, 2171, 2171, 348, -794, 2171, 2171, -794, 2171, 2171,
- -794, -794, -794, -794, 2171, -794, 2171, -794, -794, 2171, 2171, 2171, 2171, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, 354, 2171, -794, -794, -794, 2171, -794,
- -794, -794, -794, -794, -794, 320, 326, 329, 334, 1391, 867, 336, 364, 373, 373, 339,
- 2171, 2171, 340, 342, -794, 2171, 343, -794, 344, 350, 371, 385, 386, 353, 2171, -794,
- -794, -794, 1521, 355, 359, 2171, 2171, 2171, 361, 2171, 362, -794, -794, -794, -794, -794,
- -794, -794, -794, 2431, -794, -794, 2171, 395, 2171, 380, 380, 365, 2171, 368, 370, -794,
- 375, 376, 377, 1651, -794, 378, 2171, 400, 2171, 2171, 381, 382, 1781, 1911, 2041, 384,
- 387, 388, 391, 392, 393, 394, 396, 398, -794, -794, 2171, 406, -794, 2171, 364, 395,
- -794, -794, 399, 403, -794, 405, -794, 408, -794, -794, 2171, 422, 424, -794, 409, 410,
- 411, 412, -794, -794, -794, 413, 414, 415, -794, 418, -794, -794, 2171, -794, 395, 419,
- -794, -794, -794, -794, 420, 2171, 2171, -794, -794, -794, -794, -794, -794, -794, -794, 421,
- 425, 427, -794, 428, 429, 430, 431, -794, 439, 440, -794, -794, -794, -794};
+ -32, -77, -70, -68, 68, -23, -756, -756, -756, -756, -756, -756, 51, 21, 63, 918,
+ -2, 319, 0, 1, 319, -756, 67, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, 2499,
+ -756, -756, -756, -756, -756, -756, -756, -756, 2895, -756, -756, -756, -756, 5, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, 86, -756,
+ -756, -756, 70, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, 102, -756, 116, 12, -23, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, 58, -756, -756, -756, 88, 319, 130, -756, -756, 1443, 1196, -21, -70, -36, -756,
+ 3027, -756, -756, 3027, -756, -756, -756, -756, 85, 119, -756, -756, -756, 2499, -756, -756,
+ 2499, -25, 3147, -756, -756, -756, -756, 90, -756, -756, 91, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, 1057, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -20, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, 1575, 2631,
+ 2763, 2763, 27, 29, 27, 31, 2763, 2763, 2763, 33, 2763, 2631, 33, 38, 39, -756,
+ 2763, 2763, -756, -756, 2763, 40, 33, 2631, 2631, 33, 33, -756, 41, 42, 52, 2631,
+ 69, 2631, 33, 33, -756, 293, 71, 74, 33, 75, 27, 78, 2763, -756, -756, -756,
+ -756, -756, 80, -756, 33, 81, 89, 33, 94, 97, 2763, 2763, 98, 2631, 100, 2631,
+ 2631, 105, 106, 108, 109, 2763, 2763, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631,
+ 2631, -756, 110, 2631, 3027, 3027, -756, 158, 114, 11, 3181, -756, 1334, -756, -756, -756,
+ -756, -756, 133, 2631, -756, -756, -756, -756, -756, -756, 148, 153, 154, 2631, 178, 2631,
+ 179, 180, 181, 2631, 184, 185, 187, 188, -756, 2499, 226, 191, 193, 242, 245, 207,
+ 2631, 210, 211, 213, 214, 215, 2631, 2631, 2499, 216, 2631, 217, 218, 219, 262, 222,
+ 225, 230, 233, 235, 236, 238, 254, 255, 2631, 2631, 257, 2631, 270, 2631, 292, 294,
+ 329, 295, 296, 264, 335, 2631, 262, 300, 2631, 2631, 301, 2631, 2631, 302, 303, 304,
+ 306, 2631, 307, 2631, 308, 309, 2631, 2631, 2631, 2631, 313, 314, 320, 321, 322, 323,
+ 324, 325, 326, 330, 331, 336, 262, 2631, 342, -756, -756, -756, -756, -756, 343, -756,
+ -756, 318, -756, 345, -756, -756, -756, 347, -756, 348, -756, -756, -756, 2631, -756, -756,
+ -756, -756, 1707, 349, 2631, -756, -756, 2631, 2631, -756, 2631, -756, -756, -756, -756, -756,
+ 2631, 2631, 350, -756, 2631, -756, -756, -756, 2631, 355, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, 2631, 2631, -756, 351, -756, 2631, -756, -756, 2631, -756, -756, 2631, 2631,
+ 2631, 371, -756, 2631, 2631, -756, 2631, 2631, -756, -756, -756, -756, 2631, -756, 2631, -756,
+ -756, 2631, 2631, 2631, 2631, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, 387, 2631, -756, -756, -756, 2631, -756, -756, -756, -756, -756, -756, 354, 356, 358,
+ 361, 363, 390, 401, 401, 366, 2631, 2631, 370, 367, -756, 2631, 374, -756, 381, 375,
+ 415, 419, 420, 386, 2631, -756, -756, -756, 1839, 388, 389, 2631, 2631, 2631, 391, 2631,
+ 392, -756, -756, -756, -756, -756, -756, 2631, 423, 2631, 414, 414, 393, 2631, 396, 400,
+ -756, 402, 403, 404, 1971, -756, 405, 2631, 431, 2631, 2631, 407, 408, 2103, 2235, 2367,
+ 410, 412, 413, 417, 418, 421, 432, 433, 434, -756, 2631, 428, -756, 2631, 390, 423,
+ -756, -756, 435, 436, -756, 437, -756, 438, -756, -756, 2631, 422, 444, -756, 439, 440,
+ 442, 443, -756, -756, -756, 445, 446, 447, -756, 448, -756, -756, 2631, -756, 423, 449,
+ -756, -756, -756, -756, 450, 2631, 2631, -756, -756, -756, -756, -756, -756, -756, -756, 451,
+ 452, 455, -756, 456, 457, 458, 459, -756, 462, 464, -756, -756, -756, -756};
const short ParserGen::yydefact_[] = {
- 0, 0, 0, 0, 0, 6, 2, 75, 3, 446, 4, 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 8, 0, 10, 11, 12, 13, 14, 15, 5, 87, 115, 104, 114, 111, 118, 112, 107,
- 109, 110, 117, 105, 116, 119, 106, 113, 108, 74, 307, 89, 88, 95, 93, 94, 92, 0, 102,
- 76, 78, 0, 144, 197, 200, 120, 183, 122, 184, 196, 199, 198, 121, 201, 145, 127, 160, 123,
- 134, 191, 194, 161, 162, 202, 146, 445, 128, 147, 148, 129, 130, 163, 164, 124, 149, 150, 151,
- 131, 132, 165, 166, 152, 153, 133, 126, 125, 154, 203, 167, 168, 169, 171, 170, 155, 172, 185,
- 186, 187, 188, 189, 156, 190, 193, 173, 157, 96, 99, 100, 101, 98, 97, 176, 174, 175, 177,
- 178, 179, 158, 192, 195, 135, 136, 137, 138, 139, 140, 180, 141, 142, 182, 181, 159, 143, 457,
- 490, 491, 492, 489, 0, 493, 456, 447, 0, 244, 243, 242, 240, 239, 238, 232, 231, 230, 236,
- 235, 234, 229, 233, 237, 241, 19, 20, 21, 22, 24, 26, 0, 23, 0, 0, 6, 246, 245,
- 205, 206, 207, 208, 209, 210, 211, 212, 81, 213, 204, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 256, 257, 258, 259, 260, 265, 261, 262, 263, 266, 267, 247,
- 248, 250, 251, 252, 264, 253, 254, 255, 79, 249, 77, 90, 455, 454, 453, 452, 449, 448, 451,
- 450, 0, 458, 459, 17, 0, 0, 0, 9, 7, 0, 0, 0, 25, 0, 66, 68, 0, 65,
- 67, 27, 103, 0, 0, 80, 0, 82, 83, 91, 442, 443, 0, 59, 58, 55, 54, 57, 51,
- 50, 53, 43, 42, 45, 47, 46, 49, 268, 0, 44, 48, 52, 56, 38, 39, 40, 41, 60,
- 61, 62, 31, 32, 33, 34, 35, 36, 37, 28, 30, 63, 64, 278, 292, 290, 279, 280, 309,
- 281, 380, 381, 382, 282, 474, 475, 285, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 407, 406, 283, 494, 495, 496, 497, 498, 499, 500,
- 284, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, 319, 320, 321, 322, 323, 324, 286, 460, 461, 462, 463, 464, 465, 466, 287, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 344, 345, 346, 343, 347, 348, 291, 29, 16, 0, 81, 84, 86,
- 444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
- 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 308, 0, 0, 0, 0, 0, 0, 0,
- 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 0, 8, 0, 0,
+ 0, 0, 0, 0, 0, 6, 2, 75, 3, 458, 4, 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 8, 0, 10, 11, 12, 13, 14, 15, 5, 99, 127, 116, 126, 123, 130, 124, 119,
+ 121, 122, 129, 117, 128, 131, 118, 125, 120, 0, 74, 319, 101, 100, 107, 105, 106, 104, 0,
+ 114, 76, 78, 79, 0, 156, 209, 212, 132, 195, 134, 196, 208, 211, 210, 133, 213, 157, 139,
+ 172, 135, 146, 203, 206, 173, 174, 214, 158, 457, 140, 159, 160, 141, 142, 175, 176, 136, 161,
+ 162, 163, 143, 144, 177, 178, 164, 165, 145, 138, 137, 166, 215, 179, 180, 181, 183, 182, 167,
+ 184, 197, 198, 199, 200, 201, 168, 202, 205, 185, 169, 108, 111, 112, 113, 110, 109, 188, 186,
+ 187, 189, 190, 191, 170, 204, 207, 147, 148, 149, 150, 151, 152, 192, 153, 154, 194, 193, 171,
+ 155, 469, 502, 503, 504, 501, 0, 505, 468, 459, 0, 256, 255, 254, 252, 251, 250, 244, 243,
+ 242, 248, 247, 246, 241, 245, 249, 253, 19, 20, 21, 22, 24, 26, 0, 23, 0, 0, 6,
+ 258, 257, 217, 218, 219, 220, 221, 222, 223, 224, 495, 498, 225, 216, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 268, 269, 270, 271, 272, 277, 273, 274, 275,
+ 278, 279, 95, 259, 260, 262, 263, 264, 276, 265, 266, 267, 490, 491, 492, 493, 261, 82, 80,
+ 77, 102, 467, 466, 465, 464, 461, 460, 463, 462, 0, 470, 471, 17, 0, 0, 0, 9, 7,
+ 0, 0, 0, 0, 0, 25, 0, 66, 68, 0, 65, 67, 27, 115, 0, 0, 494, 496, 497,
+ 0, 499, 81, 0, 0, 0, 83, 84, 85, 86, 103, 454, 455, 0, 59, 58, 55, 54, 57,
+ 51, 50, 53, 43, 42, 45, 47, 46, 49, 280, 0, 44, 48, 52, 56, 38, 39, 40, 41,
+ 60, 61, 62, 31, 32, 33, 34, 35, 36, 37, 28, 30, 63, 64, 290, 304, 302, 291, 292,
+ 321, 293, 392, 393, 394, 294, 486, 487, 297, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 419, 418, 295, 506, 507, 508, 509, 510, 511,
+ 512, 296, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 322, 323, 324, 325, 326, 327, 328,
+ 329, 330, 331, 332, 333, 334, 335, 336, 298, 472, 473, 474, 475, 476, 477, 478, 299, 346, 347,
+ 348, 349, 350, 351, 352, 353, 354, 356, 357, 358, 355, 359, 360, 303, 29, 16, 0, 500, 87,
+ 82, 96, 89, 92, 94, 93, 91, 98, 456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0,
+ 320, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 8,
+ 8, 8, 8, 8, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0,
+ 0, 0, 70, 0, 0, 0, 0, 307, 312, 282, 281, 284, 283, 285, 0, 0, 286, 288, 309,
+ 287, 289, 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 70, 0, 0, 0, 295, 300,
- 270, 269, 272, 271, 273, 0, 0, 274, 276, 297, 275, 277, 298, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, 0,
+ 0, 432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, 0, 73, 72, 69, 71, 18, 82,
- 0, 351, 0, 373, 376, 349, 0, 383, 0, 372, 375, 374, 0, 350, 377, 352, 501, 0, 483,
- 486, 0, 478, 479, 480, 481, 0, 367, 370, 0, 0, 378, 0, 502, 354, 355, 503, 504, 0,
- 0, 0, 356, 0, 358, 505, 506, 0, 0, 325, 326, 327, 328, 329, 330, 331, 332, 333, 0,
- 0, 507, 0, 384, 0, 379, 428, 0, 429, 430, 0, 0, 0, 0, 469, 0, 0, 472, 0,
- 0, 293, 294, 366, 369, 0, 363, 0, 434, 435, 0, 0, 0, 0, 368, 371, 523, 524, 525,
- 526, 527, 528, 440, 529, 530, 441, 0, 0, 531, 85, 299, 0, 304, 305, 303, 306, 301, 296,
- 0, 0, 0, 0, 0, 0, 0, 518, 409, 409, 0, 415, 415, 0, 0, 421, 0, 0, 268,
- 0, 0, 425, 0, 0, 0, 0, 268, 268, 268, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 302, 467, 468, 288, 408, 482, 484, 485, 0, 487, 476, 0, 520, 0, 411, 411, 0, 416, 0,
- 0, 477, 0, 0, 0, 0, 385, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 488, 519, 0, 0, 410, 0, 518, 520, 353, 417, 0, 0,
- 357, 0, 359, 0, 361, 426, 0, 0, 0, 362, 0, 0, 0, 0, 289, 433, 436, 0, 0,
- 0, 364, 0, 365, 521, 0, 412, 520, 0, 418, 419, 422, 360, 0, 0, 0, 423, 470, 471,
- 473, 437, 438, 439, 424, 0, 0, 0, 427, 0, 0, 0, 0, 414, 0, 0, 522, 413, 432,
- 431};
+ 432, 0, 0, 73, 72, 69, 71, 18, 83, 88, 90, 0, 363, 0, 385, 388, 361, 0, 395,
+ 0, 384, 387, 386, 0, 362, 389, 364, 513, 0, 0, 0, 379, 382, 0, 0, 390, 0, 514,
+ 366, 367, 515, 516, 0, 0, 0, 368, 0, 370, 517, 518, 0, 0, 337, 338, 339, 340, 341,
+ 342, 343, 344, 345, 0, 0, 519, 0, 396, 0, 391, 440, 0, 441, 442, 0, 0, 0, 0,
+ 481, 0, 0, 484, 0, 0, 305, 306, 378, 381, 0, 375, 0, 446, 447, 0, 0, 0, 0,
+ 380, 383, 535, 536, 537, 538, 539, 540, 452, 541, 542, 453, 0, 0, 543, 97, 311, 0, 316,
+ 317, 315, 318, 313, 308, 0, 0, 0, 0, 0, 530, 421, 421, 0, 427, 427, 0, 0, 433,
+ 0, 0, 280, 0, 0, 437, 0, 0, 0, 0, 280, 280, 280, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 314, 479, 480, 300, 420, 488, 0, 532, 0, 423, 423, 0, 428, 0, 0, 489,
+ 0, 0, 0, 0, 397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 531, 0, 0, 422, 0, 530, 532, 365, 429, 0, 0, 369, 0, 371,
+ 0, 373, 438, 0, 0, 0, 374, 0, 0, 0, 0, 301, 445, 448, 0, 0, 0, 376, 0,
+ 377, 533, 0, 424, 532, 0, 430, 431, 434, 372, 0, 0, 0, 435, 482, 483, 485, 449, 450,
+ 451, 436, 0, 0, 0, 439, 0, 0, 0, 0, 426, 0, 0, 534, 425, 444, 443};
const short ParserGen::yypgoto_[] = {
- -794, 240, -794, -794, -176, -13, -794, -794, -12, -794, -11, -794, -253, -794, -794,
- -1, -794, -794, -247, -240, -236, -225, -220, -6, -213, -2, -8, 78, -211, -206,
- -549, -248, -794, -200, -193, -186, -794, -171, -167, -238, -55, -794, -794, -794, -794,
- -794, -794, 315, -794, -794, -794, -794, -794, -794, -794, -794, -794, 233, -449, -794,
- -3, -412, -794, 66, -794, -794, -794, -242, 67, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -408, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -330, -793, -244, -291, -551, -794, -444, -794, -243, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794, -794,
- -794, -794, -794, -794, -794, -794, -794, -794, 46, -794, 907, 256, -794, 100, -794,
- -794, -794, -794, 6, -794, -794, -794, -794, -794, -794, -794, -794, -794, -17, -794};
+ -756, 209, -756, -756, -186, -14, -756, -756, -13, -756, -12, -756, 229, -756, -756, -52,
+ -756, -756, -244, -238, -232, -230, -228, -10, -222, -9, -11, -4, -220, -218, -261, -249,
+ -756, -216, -214, -212, -756, -208, -206, -240, -44, -756, -756, -756, -756, -756, -756, -19,
+ -756, 328, -756, -756, -756, -756, -756, -756, -756, -756, -756, 243, -512, -756, 2, 34,
+ -756, 202, -756, -756, -756, -236, 83, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -399, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -326, -755, -251, -289,
+ -525, -756, -543, -756, -252, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -756, -257,
+ -756, 115, 261, -756, 87, -756, -756, -756, -756, -1, -756, -756, -756, -756, -756, -756,
+ -756, -756, -756, -756, -756, -756, -756, -17, -756};
const short ParserGen::yydefgoto_[] = {
- -1, 505, 265, 734, 152, 153, 266, 154, 155, 156, 157, 506, 158, 55, 267, 507, 739, 788,
- 56, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 647, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 513, 649, 650, 651, 746, 237, 6, 13, 22, 23, 24, 25, 26, 27,
- 28, 252, 508, 313, 314, 315, 181, 514, 316, 536, 594, 317, 318, 515, 516, 627, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
- 579, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 791, 827, 793, 830, 673, 807,
- 419, 745, 797, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 403, 404, 405, 406, 407, 408, 409, 410, 522, 523, 517, 525, 526, 8, 14, 257, 238,
- 258, 57, 58, 273, 274, 59, 10, 15, 249, 250, 278, 159, 4, 580, 186};
+ -1, 532, 276, 758, 154, 155, 277, 156, 157, 158, 159, 533, 160, 56, 278, 534, 763, 286, 57,
+ 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 541, 241, 242, 243, 267, 244, 441, 442, 6, 13, 22, 23, 24, 25, 26, 27, 28,
+ 261, 535, 333, 334, 335, 443, 542, 336, 564, 622, 337, 338, 543, 544, 657, 340, 341, 342, 343,
+ 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 607, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
+ 400, 401, 402, 403, 404, 405, 406, 808, 843, 810, 846, 697, 824, 446, 266, 814, 407, 408, 409,
+ 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 550, 551, 545, 553, 554, 8, 14, 268, 247, 269, 58, 59, 291, 292, 293, 294, 60,
+ 61, 538, 10, 15, 258, 259, 298, 161, 4, 608, 188};
const short ParserGen::yytable_[] = {
- 236, 52, 53, 54, 185, 268, 270, 666, 518, 179, 276, 177, 179, 306, 177, 178, 306, 184, 178,
- 319, 538, 299, 319, 312, 299, 300, 312, 415, 300, 164, 165, 166, 550, 551, 416, 697, 301, 5,
- 863, 301, 557, 302, 559, 7, 302, 9, 271, 268, 303, 277, 304, 303, 11, 304, 12, 305, 621,
- 622, 305, 581, 582, 307, 208, 29, 307, 160, 182, 729, 308, 880, 598, 308, 600, 601, 183, 309,
- 272, 187, 309, 239, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 310, 251, 620, 310, 311,
- 180, 644, 311, 180, 161, 162, 163, 253, 254, 164, 165, 166, 629, 259, 190, 191, 1, 2, 3,
- 255, 413, 192, 633, 414, 635, 167, 168, 169, 639, 417, 293, 418, 170, 171, 172, 16, 17, 18,
- 19, 20, 21, 658, 529, 175, 193, 194, 531, 664, 665, 535, 625, 668, 540, 195, 196, 541, 548,
- 554, 272, 555, 556, 197, 558, 572, 628, 683, 684, 573, 686, 575, 688, 577, 630, 585, 588, 631,
- 589, 591, 696, 592, 597, 699, 700, 199, 702, 703, 528, 599, 530, 602, 708, 603, 710, 632, 604,
- 713, 714, 715, 716, 605, 200, 785, 619, 634, 636, 637, 638, 640, 240, 241, 641, 642, 730, 242,
- 243, 643, 173, 174, 175, 176, 652, 653, 654, 655, 656, 657, 576, 659, 660, 244, 245, 661, 743,
- 662, 663, 667, 246, 247, 669, 670, 671, 672, 674, 824, 675, 748, 676, 677, 749, 750, 179, 751,
- 177, 678, 679, 269, 178, 752, 753, 680, 681, 755, 306, 306, 682, 756, 268, 685, 319, 319, 299,
- 299, 312, 312, 300, 300, 758, 759, 687, 689, 248, 761, 691, 690, 762, 301, 301, 763, 764, 765,
- 302, 302, 767, 768, 692, 769, 770, 303, 303, 304, 304, 771, 693, 772, 305, 305, 773, 774, 775,
- 776, 307, 307, 411, 694, 695, 411, 698, 308, 308, 701, 803, 704, 705, 778, 309, 309, 706, 779,
- 812, 813, 814, 707, 709, 711, 712, 717, 180, 718, 719, 310, 310, 720, 721, 311, 311, 796, 796,
- 722, 723, 724, 801, 757, 725, 726, 727, 728, 731, 732, 740, 811, 741, 742, 747, 815, 754, 760,
- 818, 819, 820, 766, 822, 520, 520, 563, 564, 777, 780, 520, 520, 520, 565, 520, 781, 825, 782,
- 828, 790, 520, 520, 833, 783, 520, 789, 792, 795, 806, 799, 800, 802, 841, 804, 843, 844, 566,
- 567, 805, 808, 809, 810, 829, 816, 509, 568, 569, 817, 520, 821, 823, 826, 859, 570, 832, 861,
- 834, 542, 835, 842, 545, 546, 520, 520, 836, 837, 838, 840, 868, 860, 845, 846, 850, 520, 520,
- 571, 851, 852, 562, 853, 854, 855, 869, 856, 870, 857, 879, 858, 864, 735, 583, 584, 865, 586,
- 866, 883, 884, 867, 871, 872, 873, 874, 875, 876, 877, 524, 524, 878, 881, 882, 885, 524, 524,
- 524, 886, 524, 887, 888, 889, 890, 891, 524, 524, 618, 648, 524, 521, 521, 892, 893, 264, 787,
- 521, 521, 521, 412, 521, 539, 862, 648, 256, 831, 521, 521, 794, 624, 521, 549, 798, 524, 552,
- 553, 275, 510, 626, 0, 0, 0, 0, 560, 561, 0, 0, 524, 524, 574, 0, 0, 0, 0,
- 521, 0, 0, 0, 524, 524, 0, 587, 0, 0, 590, 0, 593, 0, 521, 521, 0, 0, 0,
- 411, 411, 0, 0, 0, 0, 521, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,
- 61, 62, 63, 64, 65, 66, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 67, 68, 69, 70, 71, 0, 0, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 0, 0, 0, 81, 82, 0, 736, 737, 738, 83, 84, 85, 86, 0, 0, 87, 88, 48, 89,
- 90, 0, 0, 0, 0, 91, 92, 93, 94, 0, 0, 0, 95, 96, 97, 98, 99, 100, 101,
- 0, 102, 103, 104, 105, 0, 0, 106, 107, 108, 109, 110, 111, 112, 0, 0, 113, 114, 115,
- 116, 117, 118, 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 648, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 51, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 648, 420, 421, 422, 423, 424, 425, 426, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 427, 428, 429, 430,
- 431, 0, 0, 432, 433, 434, 435, 436, 437, 438, 439, 440, 0, 0, 0, 441, 442, 0, 0,
- 0, 0, 0, 443, 444, 445, 0, 0, 446, 447, 448, 449, 450, 0, 0, 0, 0, 451, 452,
- 453, 454, 0, 0, 0, 455, 456, 457, 458, 459, 460, 461, 0, 462, 463, 464, 465, 0, 0,
- 466, 467, 468, 469, 470, 471, 472, 0, 0, 473, 474, 475, 476, 477, 478, 0, 479, 480, 481,
- 482, 0, 0, 0, 0, 0, 0, 0, 0, 483, 484, 485, 486, 487, 488, 489, 490, 491, 0,
- 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 262, 263, 60, 61, 62, 63,
- 64, 65, 66, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 67, 68, 69, 70, 71, 0, 0, 72, 73, 74, 75, 76, 77, 78, 79, 80, 0, 0, 0,
- 81, 82, 0, 0, 0, 0, 786, 84, 85, 86, 0, 0, 87, 88, 48, 89, 90, 0, 0,
- 0, 0, 91, 92, 93, 94, 0, 0, 0, 95, 96, 97, 98, 99, 100, 101, 0, 102, 103,
- 104, 105, 0, 0, 106, 107, 108, 109, 110, 111, 112, 0, 0, 113, 114, 115, 116, 117, 118,
- 0, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 0, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 51, 420,
- 421, 422, 423, 424, 425, 426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 427, 428, 429, 430, 431, 0, 0, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 0, 0, 0, 441, 442, 0, 0, 0, 0, 0, 443, 444, 445, 0, 0, 446, 447, 0, 449,
- 450, 0, 0, 0, 0, 451, 452, 453, 454, 0, 0, 0, 455, 456, 457, 458, 459, 460, 461,
- 0, 462, 463, 464, 465, 0, 0, 466, 467, 468, 469, 470, 471, 472, 0, 0, 473, 474, 475,
- 476, 477, 478, 0, 479, 480, 481, 482, 0, 0, 0, 0, 0, 0, 0, 0, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 0, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
- 504, 30, 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 0, 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 162, 163, 0, 0,
- 164, 165, 166, 511, 0, 0, 47, 0, 190, 191, 0, 0, 0, 0, 48, 192, 167, 168, 169,
- 0, 0, 0, 0, 170, 171, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 50,
- 193, 194, 0, 0, 0, 0, 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 197, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 293, 512, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 173, 174, 175, 176, 213, 214, 215,
- 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 162, 163, 0, 0, 164, 165, 166,
- 744, 0, 0, 0, 0, 190, 191, 0, 0, 0, 0, 0, 192, 167, 168, 169, 0, 0, 527,
- 0, 170, 171, 172, 532, 533, 534, 0, 537, 0, 0, 0, 0, 0, 543, 544, 193, 194, 547,
- 0, 0, 0, 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 0,
- 0, 0, 0, 0, 578, 0, 293, 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 595,
- 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 607, 0, 0, 0, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 173, 174, 175, 176, 213, 214, 215, 188, 189, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 161, 162, 163, 0, 0, 164, 165, 166, 784, 0, 0,
- 0, 0, 190, 191, 0, 0, 0, 0, 0, 192, 167, 168, 169, 0, 0, 0, 0, 170, 171,
- 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 194, 0, 0, 0, 0,
- 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 645, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 173, 174, 175, 176, 213, 214, 215, 188, 189, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 161, 162, 163, 0, 0, 164, 165, 166, 782, 0, 0, 0, 0, 190,
- 191, 0, 0, 0, 0, 0, 192, 167, 168, 169, 0, 0, 0, 0, 170, 171, 172, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 194, 0, 0, 0, 0, 0, 0, 0,
- 195, 196, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 293, 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 173, 174, 175, 176, 213, 214, 215, 188, 189, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 161, 162, 163, 0, 0, 164, 165, 166, 839, 0, 0, 0, 0, 190, 191, 0, 0,
- 0, 0, 0, 192, 167, 168, 169, 0, 0, 0, 0, 170, 171, 172, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 193, 194, 0, 0, 0, 0, 0, 0, 0, 195, 196, 0,
- 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 293, 512, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 173, 174, 175, 176, 213, 214, 215, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161,
- 162, 163, 0, 0, 164, 165, 166, 847, 0, 0, 0, 0, 190, 191, 0, 0, 0, 0, 0,
- 192, 167, 168, 169, 0, 0, 0, 0, 170, 171, 172, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 193, 194, 0, 0, 0, 0, 0, 0, 0, 195, 196, 0, 0, 0, 0,
- 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 293, 512, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 173, 174, 175,
- 176, 213, 214, 215, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 162, 163, 0,
- 0, 164, 165, 166, 848, 0, 0, 0, 0, 190, 191, 0, 0, 0, 0, 0, 192, 167, 168,
- 169, 0, 0, 0, 0, 170, 171, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 193, 194, 0, 0, 0, 0, 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 197,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 293, 512, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 173, 174, 175, 176, 213, 214,
- 215, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 162, 163, 0, 0, 164, 165,
- 166, 849, 0, 0, 0, 0, 190, 191, 0, 0, 0, 0, 0, 192, 167, 168, 169, 0, 0,
- 0, 0, 170, 171, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 194,
- 0, 0, 0, 0, 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 293, 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 173, 174, 175, 176, 213, 214, 215, 188, 189,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 162, 163, 0, 0, 164, 165, 166, 0, 0,
- 0, 0, 0, 190, 191, 0, 0, 0, 0, 0, 192, 167, 168, 169, 0, 0, 0, 0, 170,
- 171, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 194, 0, 0, 0,
- 0, 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 293, 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 173, 174, 175, 176, 213, 214, 215, 188, 189, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 161, 162, 163, 0, 0, 164, 165, 166, 0, 0, 0, 0, 0,
- 190, 191, 0, 0, 0, 0, 0, 192, 167, 168, 169, 0, 0, 0, 0, 170, 171, 172, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 194, 0, 0, 0, 0, 0, 0,
- 0, 195, 196, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 519, 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 173, 174, 175, 176, 213, 214, 215, 188, 189, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 161, 162, 163, 0, 0, 164, 165, 166, 0, 0, 0, 0, 0, 190, 191, 0,
- 0, 0, 0, 0, 192, 167, 168, 169, 0, 0, 0, 0, 170, 171, 172, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 193, 194, 0, 0, 0, 0, 0, 0, 0, 195, 196,
- 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 646,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 173, 174, 175, 176, 213, 214, 215, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 161, 162, 163, 0, 0, 164, 165, 166, 0, 0, 0, 0, 0, 190, 191, 0, 0, 0, 0,
- 0, 192, 167, 168, 169, 0, 0, 0, 0, 170, 171, 172, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 193, 194, 0, 0, 0, 0, 0, 0, 0, 195, 196, 0, 0, 0,
- 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 173, 174,
- 175, 176, 213, 214, 215, 279, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 281, 282, 283,
- 0, 0, 284, 285, 286, 0, 0, 0, 0, 0, 190, 191, 0, 0, 0, 0, 0, 192, 287,
- 288, 289, 0, 0, 0, 0, 290, 291, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 193, 194, 0, 0, 0, 0, 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0,
- 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 293, 294, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 199, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 200, 0, 0, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 295, 296, 297, 298, 213,
- 214, 215, 0, 0, 0, 0, 0, 260, 0, 0, 0, 0, 0, 0, 0, 261, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 623, 0, 0, 0, 0, 0, 0, 0, 448, 0, 0, 0, 0, 0, 0, 0, 733, 0, 0,
- 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262,
- 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 124, 125, 126,
- 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 263, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 51};
+ 53, 54, 55, 240, 187, 283, 181, 179, 180, 181, 179, 180, 246, 182, 281, 431, 182, 279, 431,
+ 183, 649, 650, 186, 326, 435, 674, 326, 436, 166, 167, 168, 287, 332, 288, 319, 332, 339, 319,
+ 5, 339, 320, 440, 321, 320, 322, 321, 7, 322, 9, 438, 323, 296, 324, 323, 325, 324, 327,
+ 325, 328, 327, 329, 328, 289, 329, 330, 288, 331, 330, 11, 331, 279, 30, 29, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 721, 297, 437, 879, 12, 289,
+ 609, 610, 47, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 162, 48, 184, 185, 290, 189, 248, 753, 260, 896, 49, 262, 211, 263, 264, 249, 250, 1, 2,
+ 3, 251, 252, 270, 433, 177, 434, 271, 444, 313, 445, 557, 50, 559, 51, 563, 272, 290, 253,
+ 254, 568, 569, 576, 582, 583, 255, 256, 16, 17, 18, 19, 20, 21, 653, 584, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 586, 658, 600, 192, 193, 601,
+ 603, 552, 552, 605, 194, 613, 616, 552, 552, 552, 660, 552, 257, 52, 617, 661, 662, 552, 552,
+ 619, 651, 552, 620, 625, 556, 627, 558, 195, 196, 475, 630, 631, 240, 632, 633, 647, 197, 198,
+ 273, 274, 664, 666, 667, 668, 199, 552, 670, 671, 820, 672, 673, 240, 676, 677, 240, 678, 829,
+ 830, 831, 552, 552, 181, 179, 180, 604, 679, 202, 680, 182, 681, 552, 552, 683, 684, 280, 685,
+ 686, 687, 691, 693, 694, 695, 696, 203, 698, 431, 431, 699, 718, 181, 179, 180, 700, 326, 326,
+ 701, 182, 702, 703, 440, 704, 279, 332, 332, 319, 319, 339, 339, 273, 274, 320, 320, 321, 321,
+ 322, 322, 705, 706, 675, 709, 323, 323, 324, 324, 325, 325, 327, 327, 328, 328, 329, 329, 711,
+ 690, 330, 330, 331, 331, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 713, 715, 714, 716, 717, 719, 591, 592, 722, 725, 728, 729, 730, 593, 731, 733, 735,
+ 736, 163, 164, 165, 741, 742, 166, 167, 168, 757, 779, 743, 744, 745, 746, 747, 748, 749, 49,
+ 594, 595, 750, 751, 169, 170, 171, 788, 752, 596, 597, 172, 173, 174, 755, 756, 764, 598, 765,
+ 766, 769, 776, 782, 799, 548, 548, 802, 807, 803, 804, 548, 548, 548, 805, 548, 806, 809, 812,
+ 817, 599, 548, 548, 816, 536, 548, 819, 822, 125, 126, 127, 128, 129, 130, 821, 823, 825, 826,
+ 827, 845, 833, 834, 842, 838, 840, 885, 848, 570, 850, 548, 573, 574, 851, 858, 876, 852, 853,
+ 854, 856, 52, 861, 862, 866, 548, 548, 867, 868, 886, 590, 869, 870, 275, 759, 871, 548, 548,
+ 175, 176, 177, 178, 611, 612, 546, 614, 652, 872, 873, 874, 880, 881, 882, 883, 887, 888, 566,
+ 889, 890, 285, 891, 892, 893, 894, 897, 898, 901, 902, 578, 579, 903, 904, 905, 906, 907, 646,
+ 585, 908, 587, 909, 265, 432, 656, 878, 811, 847, 815, 537, 240, 0, 181, 179, 180, 295, 549,
+ 549, 0, 182, 0, 654, 549, 549, 549, 240, 549, 0, 626, 0, 628, 629, 549, 549, 0, 0,
+ 549, 0, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 0, 555, 648, 0, 0, 0, 560,
+ 561, 562, 0, 565, 0, 549, 0, 0, 0, 571, 572, 659, 0, 575, 0, 0, 0, 0, 0,
+ 549, 549, 663, 0, 665, 0, 0, 0, 669, 0, 0, 549, 549, 0, 0, 0, 0, 0, 606,
+ 0, 0, 682, 0, 0, 0, 0, 0, 688, 689, 0, 0, 692, 623, 624, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 634, 635, 707, 708, 0, 710, 0, 712, 0, 0, 0, 760, 761, 762,
+ 0, 720, 0, 0, 723, 724, 0, 726, 727, 0, 0, 0, 0, 732, 0, 734, 567, 0, 737,
+ 738, 739, 740, 0, 0, 0, 0, 577, 0, 0, 580, 581, 0, 0, 0, 0, 754, 0, 0,
+ 588, 589, 0, 0, 0, 0, 602, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615,
+ 767, 0, 618, 0, 621, 0, 0, 770, 0, 0, 771, 772, 0, 773, 0, 0, 0, 0, 0,
+ 774, 775, 0, 0, 777, 0, 0, 0, 778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 780, 781, 0, 0, 0, 783, 0, 0, 784, 0, 0, 785, 786, 787, 0, 0, 789, 790, 0,
+ 791, 792, 0, 0, 0, 0, 793, 0, 794, 0, 0, 795, 796, 797, 798, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 800, 0, 0, 0, 801, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 813, 813, 0, 0, 0, 818, 0, 0, 0,
+ 0, 0, 0, 0, 0, 828, 0, 0, 0, 832, 0, 0, 835, 836, 837, 0, 839, 0, 0,
+ 0, 0, 0, 0, 0, 841, 0, 844, 0, 0, 0, 849, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 857, 0, 859, 860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 875, 0, 0, 877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 884,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 895, 0,
+ 0, 0, 0, 0, 0, 0, 0, 899, 900, 62, 63, 64, 65, 66, 67, 68, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 69, 70, 71, 72, 73, 0,
+ 0, 74, 0, 75, 76, 77, 78, 79, 80, 81, 82, 0, 0, 0, 83, 84, 0, 0, 0,
+ 0, 85, 86, 0, 87, 88, 0, 0, 89, 90, 49, 91, 92, 0, 0, 0, 0, 93, 94,
+ 95, 96, 0, 0, 0, 97, 98, 99, 100, 101, 102, 103, 0, 104, 105, 106, 107, 0, 0,
+ 108, 109, 110, 111, 112, 113, 114, 0, 0, 115, 116, 117, 118, 119, 120, 0, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 0, 0, 131, 132, 133, 134, 135, 136, 137, 138, 139, 0,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 52, 153, 447, 448, 449, 450,
+ 451, 452, 453, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 454, 455, 456, 457, 458, 0, 0, 459, 0, 460, 461, 462, 463, 464, 465, 466, 467, 0, 0,
+ 0, 468, 469, 0, 0, 0, 0, 0, 470, 0, 471, 472, 0, 0, 473, 474, 475, 476, 477,
+ 0, 0, 0, 0, 478, 479, 480, 481, 0, 0, 0, 482, 483, 484, 485, 486, 487, 488, 0,
+ 489, 490, 491, 492, 0, 0, 493, 494, 495, 496, 497, 498, 499, 0, 0, 500, 501, 502, 503,
+ 504, 505, 0, 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 510, 511, 512, 513,
+ 514, 515, 516, 517, 518, 0, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
+ 273, 274, 62, 63, 64, 65, 66, 67, 68, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 69, 70, 71, 72, 73, 0, 0, 74, 0, 75, 76, 77, 78,
+ 79, 80, 81, 82, 0, 0, 0, 83, 84, 0, 0, 0, 0, 284, 86, 0, 87, 88, 0,
+ 0, 89, 90, 49, 91, 92, 0, 0, 0, 0, 93, 94, 95, 96, 0, 0, 0, 97, 98,
+ 99, 100, 101, 102, 103, 0, 104, 105, 106, 107, 0, 0, 108, 109, 110, 111, 112, 113, 114,
+ 0, 0, 115, 116, 117, 118, 119, 120, 0, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 0, 0, 131, 132, 133, 134, 135, 136, 137, 138, 139, 0, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 52, 447, 448, 449, 450, 451, 452, 453, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 454, 455, 456, 457, 458, 0, 0, 459,
+ 0, 460, 461, 462, 463, 464, 465, 466, 467, 0, 0, 0, 468, 469, 0, 0, 0, 0, 0,
+ 470, 0, 471, 472, 0, 0, 473, 474, 0, 476, 477, 0, 0, 0, 0, 478, 479, 480, 481,
+ 0, 0, 0, 482, 483, 484, 485, 486, 487, 488, 0, 489, 490, 491, 492, 0, 0, 493, 494,
+ 495, 496, 497, 498, 499, 0, 0, 500, 501, 502, 503, 504, 505, 0, 506, 507, 508, 509, 0,
+ 0, 0, 0, 0, 0, 0, 0, 510, 511, 512, 513, 514, 515, 516, 517, 518, 0, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 190, 191, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 163, 164, 165, 0, 0, 166, 167, 168, 282, 0, 0, 0, 0, 0, 192,
+ 193, 0, 0, 0, 0, 0, 194, 169, 170, 171, 0, 0, 0, 0, 172, 173, 174, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 0,
+ 197, 198, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 200, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 175, 176, 177, 178, 216, 217, 218, 190, 191, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 163, 164, 165, 0, 0, 166, 167, 168, 539, 0, 0, 0, 0, 0, 192, 193,
+ 0, 0, 0, 0, 0, 194, 169, 170, 171, 0, 0, 0, 0, 172, 173, 174, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 0, 197,
+ 198, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313,
+ 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 175, 176, 177, 178, 216, 217, 218, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 163, 164, 165, 0, 0, 166, 167, 168, 768, 0, 0, 0, 0, 0, 192, 193, 0,
+ 0, 0, 0, 0, 194, 169, 170, 171, 0, 0, 0, 0, 172, 173, 174, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 0, 197, 198,
+ 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 540,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 175, 176, 177, 178, 216, 217, 218, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 163, 164, 165, 0, 0, 166, 167, 168, 804, 0, 0, 0, 0, 0, 192, 193, 0, 0,
+ 0, 0, 0, 194, 169, 170, 171, 0, 0, 0, 0, 172, 173, 174, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, 0,
+ 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 540, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 175, 176, 177, 178, 216, 217, 218, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 163, 164, 165, 0, 0, 166, 167, 168, 855, 0, 0, 0, 0, 0, 192, 193, 0, 0, 0,
+ 0, 0, 194, 169, 170, 171, 0, 0, 0, 0, 172, 173, 174, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, 0, 0,
+ 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 540, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 175,
+ 176, 177, 178, 216, 217, 218, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163,
+ 164, 165, 0, 0, 166, 167, 168, 863, 0, 0, 0, 0, 0, 192, 193, 0, 0, 0, 0,
+ 0, 194, 169, 170, 171, 0, 0, 0, 0, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, 0, 0, 0,
+ 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 540, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 175, 176,
+ 177, 178, 216, 217, 218, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 164,
+ 165, 0, 0, 166, 167, 168, 864, 0, 0, 0, 0, 0, 192, 193, 0, 0, 0, 0, 0,
+ 194, 169, 170, 171, 0, 0, 0, 0, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, 0, 0, 0, 0,
+ 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 540, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 175, 176, 177,
+ 178, 216, 217, 218, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 164, 165,
+ 0, 0, 166, 167, 168, 865, 0, 0, 0, 0, 0, 192, 193, 0, 0, 0, 0, 0, 194,
+ 169, 170, 171, 0, 0, 0, 0, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, 0, 0, 0, 0, 0,
+ 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 540, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 175, 176, 177, 178,
+ 216, 217, 218, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 164, 165, 0,
+ 0, 166, 167, 168, 0, 0, 0, 0, 0, 0, 192, 193, 0, 0, 0, 0, 0, 194, 169,
+ 170, 171, 0, 0, 0, 0, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 195, 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, 0, 0, 0, 0, 0, 0,
+ 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 175, 176, 177, 178, 216,
+ 217, 218, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 164, 165, 0, 0,
+ 166, 167, 168, 0, 0, 0, 0, 0, 0, 192, 193, 0, 0, 0, 0, 0, 194, 169, 170,
+ 171, 0, 0, 0, 0, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 195, 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, 0, 0, 0, 0, 0, 0, 199,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 540, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 175, 176, 177, 178, 216, 217,
+ 218, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 164, 165, 0, 0, 166,
+ 167, 168, 0, 0, 0, 0, 0, 0, 192, 193, 0, 0, 0, 0, 0, 194, 169, 170, 171,
+ 0, 0, 0, 0, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 195, 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, 0, 0, 0, 0, 0, 0, 199, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 547, 540, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 175, 176, 177, 178, 216, 217, 218,
+ 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 164, 165, 0, 0, 166, 167,
+ 168, 0, 0, 0, 0, 0, 0, 192, 193, 0, 0, 0, 0, 0, 194, 169, 170, 171, 0,
+ 0, 0, 0, 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195,
+ 196, 0, 0, 0, 0, 0, 0, 0, 197, 198, 0, 0, 0, 0, 0, 0, 199, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 175, 176, 177, 178, 216, 217, 218, 299,
+ 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 0, 0, 304, 305, 306,
+ 0, 0, 0, 0, 0, 0, 192, 193, 0, 0, 0, 0, 0, 194, 307, 308, 309, 0, 0,
+ 0, 0, 310, 311, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 196,
+ 0, 0, 0, 0, 0, 0, 0, 197, 198, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 313, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, 0, 0,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 315, 316, 317, 318, 216, 217, 218, 163, 164,
+ 165, 0, 0, 166, 167, 168, 0, 0, 0, 0, 0, 0, 192, 193, 0, 0, 0, 0, 0,
+ 194, 169, 170, 171, 0, 0, 0, 0, 172, 173, 174, 0, 0, 163, 164, 165, 0, 0, 166,
+ 167, 168, 655, 0, 195, 196, 0, 0, 192, 193, 0, 0, 0, 197, 198, 194, 169, 170, 171,
+ 0, 0, 199, 0, 172, 173, 174, 0, 0, 0, 0, 0, 0, 439, 0, 0, 0, 0, 0,
+ 195, 196, 0, 0, 0, 202, 0, 0, 0, 197, 198, 0, 0, 0, 0, 0, 0, 199, 0,
+ 0, 0, 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 176, 177,
+ 178, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 176, 177, 178};
const short ParserGen::yycheck_[] = {
- 55, 14, 14, 14, 21, 252, 254, 556, 420, 17, 85, 17, 20, 261, 20, 17, 264, 20, 20,
- 261, 432, 261, 264, 261, 264, 261, 264, 114, 264, 47, 48, 49, 444, 445, 272, 586, 261, 113,
- 831, 264, 452, 261, 454, 114, 264, 114, 51, 294, 261, 124, 261, 264, 0, 264, 114, 261, 505,
- 506, 264, 467, 468, 261, 149, 50, 264, 114, 114, 618, 261, 862, 482, 264, 484, 485, 114, 261,
- 81, 51, 264, 113, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 261, 51, 504, 264, 261,
- 17, 540, 264, 20, 42, 43, 44, 23, 11, 47, 48, 49, 519, 76, 55, 56, 161, 162, 163,
- 114, 51, 62, 529, 20, 531, 63, 64, 65, 535, 50, 113, 51, 70, 71, 72, 107, 108, 109,
- 110, 111, 112, 548, 113, 156, 85, 86, 113, 554, 555, 113, 51, 558, 113, 94, 95, 113, 113,
- 113, 81, 113, 113, 102, 113, 113, 51, 572, 573, 113, 575, 113, 577, 113, 51, 113, 113, 51,
- 113, 113, 585, 113, 113, 588, 589, 124, 591, 592, 423, 113, 425, 113, 597, 113, 599, 51, 113,
- 602, 603, 604, 605, 113, 141, 745, 113, 51, 51, 51, 51, 51, 42, 43, 51, 51, 619, 47,
- 48, 51, 154, 155, 156, 157, 16, 51, 51, 13, 12, 51, 463, 51, 51, 63, 64, 51, 639,
- 51, 51, 51, 70, 71, 51, 51, 51, 10, 51, 787, 51, 652, 51, 51, 655, 656, 253, 658,
- 253, 51, 51, 253, 253, 664, 665, 51, 51, 668, 505, 506, 51, 672, 508, 51, 505, 506, 505,
- 506, 505, 506, 505, 506, 683, 684, 51, 51, 114, 688, 16, 51, 691, 505, 506, 694, 695, 696,
- 505, 506, 699, 700, 51, 702, 703, 505, 506, 505, 506, 708, 51, 710, 505, 506, 713, 714, 715,
- 716, 505, 506, 261, 14, 14, 264, 51, 505, 506, 51, 759, 51, 51, 730, 505, 506, 51, 734,
- 767, 768, 769, 51, 51, 51, 51, 51, 253, 51, 51, 505, 506, 51, 51, 505, 506, 752, 753,
- 51, 51, 51, 757, 16, 51, 51, 51, 51, 51, 51, 50, 766, 50, 50, 50, 770, 50, 50,
- 773, 774, 775, 16, 777, 421, 422, 55, 56, 16, 51, 427, 428, 429, 62, 431, 51, 790, 50,
- 792, 17, 437, 438, 796, 51, 441, 51, 15, 50, 19, 51, 50, 50, 806, 51, 808, 809, 85,
- 86, 50, 16, 16, 50, 24, 50, 414, 94, 95, 50, 465, 50, 50, 18, 826, 102, 51, 829,
- 50, 436, 50, 21, 439, 440, 479, 480, 51, 51, 51, 51, 842, 25, 51, 51, 50, 490, 491,
- 124, 51, 51, 457, 50, 50, 50, 22, 51, 22, 51, 860, 51, 51, 627, 469, 470, 51, 472,
- 51, 869, 870, 51, 51, 51, 51, 51, 51, 51, 51, 421, 422, 51, 51, 51, 51, 427, 428,
- 429, 51, 431, 51, 51, 51, 51, 51, 437, 438, 502, 541, 441, 421, 422, 51, 51, 252, 746,
- 427, 428, 429, 264, 431, 433, 830, 556, 187, 794, 437, 438, 750, 508, 441, 443, 753, 465, 446,
- 447, 258, 415, 510, -1, -1, -1, -1, 455, 456, -1, -1, 479, 480, 461, -1, -1, -1, -1,
- 465, -1, -1, -1, 490, 491, -1, 473, -1, -1, 476, -1, 478, -1, 479, 480, -1, -1, -1,
- 505, 506, -1, -1, -1, -1, 490, 491, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- -1, -1, -1, 45, 46, -1, 627, 627, 627, 51, 52, 53, 54, -1, -1, 57, 58, 59, 60,
- 61, -1, -1, -1, -1, 66, 67, 68, 69, -1, -1, -1, 73, 74, 75, 76, 77, 78, 79,
- -1, 81, 82, 83, 84, -1, -1, 87, 88, 89, 90, 91, 92, 93, -1, -1, 96, 97, 98,
- 99, 100, 101, -1, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, -1, -1, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 745, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 787, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, -1, -1, 45, 46, -1, -1,
- -1, -1, -1, 52, 53, 54, -1, -1, 57, 58, 59, 60, 61, -1, -1, -1, -1, 66, 67,
- 68, 69, -1, -1, -1, 73, 74, 75, 76, 77, 78, 79, -1, 81, 82, 83, 84, -1, -1,
- 87, 88, 89, 90, 91, 92, 93, -1, -1, 96, 97, 98, 99, 100, 101, -1, 103, 104, 105,
- 106, -1, -1, -1, -1, -1, -1, -1, -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, -1,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 3, 4, 5, 6,
+ 14, 14, 14, 47, 21, 266, 17, 17, 17, 20, 20, 20, 56, 17, 263, 272, 20, 261, 275,
+ 17, 532, 533, 20, 272, 285, 568, 275, 288, 48, 49, 50, 52, 272, 54, 272, 275, 272, 275,
+ 115, 275, 272, 290, 272, 275, 272, 275, 116, 275, 116, 289, 272, 87, 272, 275, 272, 275, 272,
+ 275, 272, 275, 272, 275, 83, 275, 272, 54, 272, 275, 0, 275, 314, 8, 51, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 614, 126, 116, 847, 116, 83,
+ 494, 495, 34, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 116, 52, 116, 116, 139, 52, 115, 646, 52, 878, 61, 23, 151, 11, 116, 43, 44, 163, 164,
+ 165, 48, 49, 78, 52, 158, 20, 52, 51, 115, 52, 115, 82, 115, 84, 115, 61, 139, 65,
+ 66, 115, 115, 115, 115, 115, 72, 73, 109, 110, 111, 112, 113, 114, 52, 115, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 115, 52, 115, 57, 58, 115,
+ 115, 448, 449, 115, 64, 115, 115, 454, 455, 456, 52, 458, 116, 140, 115, 52, 52, 464, 465,
+ 115, 52, 468, 115, 115, 450, 115, 452, 87, 88, 61, 115, 115, 266, 115, 115, 115, 96, 97,
+ 140, 141, 52, 52, 52, 52, 104, 492, 52, 52, 781, 52, 52, 285, 16, 52, 288, 52, 789,
+ 790, 791, 506, 507, 262, 262, 262, 490, 13, 126, 12, 262, 52, 517, 518, 52, 52, 262, 52,
+ 52, 52, 52, 52, 52, 52, 10, 143, 52, 532, 533, 52, 14, 290, 290, 290, 52, 532, 533,
+ 52, 290, 52, 52, 538, 52, 535, 532, 533, 532, 533, 532, 533, 140, 141, 532, 533, 532, 533,
+ 532, 533, 52, 52, 569, 52, 532, 533, 532, 533, 532, 533, 532, 533, 532, 533, 532, 533, 52,
+ 584, 532, 533, 532, 533, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 52, 16, 52, 52, 52, 14, 57, 58, 52, 52, 52, 52, 52, 64, 52, 52, 52,
+ 52, 43, 44, 45, 52, 52, 48, 49, 50, 52, 16, 52, 52, 52, 52, 52, 52, 52, 61,
+ 87, 88, 52, 52, 65, 66, 67, 16, 52, 96, 97, 72, 73, 74, 52, 52, 51, 104, 51,
+ 51, 51, 51, 51, 16, 448, 449, 52, 17, 52, 51, 454, 455, 456, 52, 458, 52, 15, 51,
+ 51, 126, 464, 465, 52, 434, 468, 51, 51, 109, 110, 111, 112, 113, 114, 52, 19, 16, 16,
+ 51, 24, 51, 51, 18, 51, 51, 22, 52, 463, 51, 492, 466, 467, 51, 21, 25, 52, 52,
+ 52, 52, 140, 52, 52, 51, 506, 507, 52, 52, 22, 484, 51, 51, 261, 657, 51, 517, 518,
+ 156, 157, 158, 159, 496, 497, 447, 499, 535, 52, 52, 52, 52, 52, 52, 52, 52, 52, 459,
+ 52, 52, 267, 52, 52, 52, 52, 52, 52, 52, 52, 471, 472, 52, 52, 52, 52, 52, 529,
+ 479, 52, 481, 52, 189, 275, 538, 846, 772, 811, 775, 437, 569, -1, 538, 538, 538, 269, 448,
+ 449, -1, 538, -1, 537, 454, 455, 456, 584, 458, -1, 509, -1, 511, 512, 464, 465, -1, -1,
+ 468, -1, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, -1, 449, 531, -1, -1, -1, 454,
+ 455, 456, -1, 458, -1, 492, -1, -1, -1, 464, 465, 547, -1, 468, -1, -1, -1, -1, -1,
+ 506, 507, 557, -1, 559, -1, -1, -1, 563, -1, -1, 517, 518, -1, -1, -1, -1, -1, 492,
+ -1, -1, 576, -1, -1, -1, -1, -1, 582, 583, -1, -1, 586, 506, 507, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 517, 518, 600, 601, -1, 603, -1, 605, -1, -1, -1, 657, 657, 657,
+ -1, 613, -1, -1, 616, 617, -1, 619, 620, -1, -1, -1, -1, 625, -1, 627, 460, -1, 630,
+ 631, 632, 633, -1, -1, -1, -1, 470, -1, -1, 473, 474, -1, -1, -1, -1, 647, -1, -1,
+ 482, 483, -1, -1, -1, -1, 488, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 500,
+ 669, -1, 503, -1, 505, -1, -1, 676, -1, -1, 679, 680, -1, 682, -1, -1, -1, -1, -1,
+ 688, 689, -1, -1, 692, -1, -1, -1, 696, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 707, 708, -1, -1, -1, 712, -1, -1, 715, -1, -1, 718, 719, 720, -1, -1, 723, 724, -1,
+ 726, 727, -1, -1, -1, -1, 732, -1, 734, -1, -1, 737, 738, 739, 740, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 754, -1, -1, -1, 758, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 774, 775, -1, -1, -1, 779, -1, -1, -1,
+ -1, -1, -1, -1, -1, 788, -1, -1, -1, 792, -1, -1, 795, 796, 797, -1, 799, -1, -1,
+ -1, -1, -1, -1, -1, 807, -1, 809, -1, -1, -1, 813, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 823, -1, 825, 826, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 842, -1, -1, 845, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 858,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 876, -1,
+ -1, -1, -1, -1, -1, -1, -1, 885, 886, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1,
+ -1, 33, -1, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, -1, 46, 47, -1, -1, -1,
+ -1, 52, 53, -1, 55, 56, -1, -1, 59, 60, 61, 62, 63, -1, -1, -1, -1, 68, 69,
+ 70, 71, -1, -1, -1, 75, 76, 77, 78, 79, 80, 81, -1, 83, 84, 85, 86, -1, -1,
+ 89, 90, 91, 92, 93, 94, 95, -1, -1, 98, 99, 100, 101, 102, 103, -1, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, -1, -1, 117, 118, 119, 120, 121, 122, 123, 124, 125, -1,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, -1, -1,
- 45, 46, -1, -1, -1, -1, 51, 52, 53, 54, -1, -1, 57, 58, 59, 60, 61, -1, -1,
- -1, -1, 66, 67, 68, 69, -1, -1, -1, 73, 74, 75, 76, 77, 78, 79, -1, 81, 82,
- 83, 84, -1, -1, 87, 88, 89, 90, 91, 92, 93, -1, -1, 96, 97, 98, 99, 100, 101,
- -1, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, -1, -1, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 3,
- 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 26, 27, 28, 29, 30, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- -1, -1, -1, 45, 46, -1, -1, -1, -1, -1, 52, 53, 54, -1, -1, 57, 58, -1, 60,
- 61, -1, -1, -1, -1, 66, 67, 68, 69, -1, -1, -1, 73, 74, 75, 76, 77, 78, 79,
- -1, 81, 82, 83, 84, -1, -1, 87, 88, 89, 90, 91, 92, 93, -1, -1, 96, 97, 98,
- 99, 100, 101, -1, 103, 104, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, -1, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- -1, -1, -1, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, -1,
- 47, 48, 49, 50, -1, -1, 51, -1, 55, 56, -1, -1, -1, -1, 59, 62, 63, 64, 65,
- -1, -1, -1, -1, 70, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, 82,
- 85, 86, -1, -1, -1, -1, -1, -1, -1, 94, 95, -1, -1, -1, -1, -1, -1, 102, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 113, 114, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, -1, 47, 48, 49,
- 50, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, -1, 62, 63, 64, 65, -1, -1, 422,
- -1, 70, 71, 72, 427, 428, 429, -1, 431, -1, -1, -1, -1, -1, 437, 438, 85, 86, 441,
- -1, -1, -1, -1, -1, -1, 94, 95, -1, -1, -1, -1, -1, -1, 102, -1, -1, -1, -1,
- -1, -1, -1, -1, 465, -1, 113, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, 479,
- 480, -1, -1, -1, -1, -1, -1, -1, -1, -1, 490, 491, -1, -1, -1, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 31, 32, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, -1, 47, 48, 49, 50, -1, -1,
- -1, -1, 55, 56, -1, -1, -1, -1, -1, 62, 63, 64, 65, -1, -1, -1, -1, 70, 71,
- 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, -1, -1, -1, -1,
- -1, -1, -1, 94, 95, -1, -1, -1, -1, -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 113, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 31, 32, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 42, 43, 44, -1, -1, 47, 48, 49, 50, -1, -1, -1, -1, 55,
- 56, -1, -1, -1, -1, -1, 62, 63, 64, 65, -1, -1, -1, -1, 70, 71, 72, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, -1, -1, -1, -1, -1, -1, -1,
- 94, 95, -1, -1, -1, -1, -1, -1, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 113, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 31, 32, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 42, 43, 44, -1, -1, 47, 48, 49, 50, -1, -1, -1, -1, 55, 56, -1, -1,
- -1, -1, -1, 62, 63, 64, 65, -1, -1, -1, -1, 70, 71, 72, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 85, 86, -1, -1, -1, -1, -1, -1, -1, 94, 95, -1,
- -1, -1, -1, -1, -1, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 113, 114, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42,
- 43, 44, -1, -1, 47, 48, 49, 50, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, -1,
- 62, 63, 64, 65, -1, -1, -1, -1, 70, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 85, 86, -1, -1, -1, -1, -1, -1, -1, 94, 95, -1, -1, -1, -1,
- -1, -1, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 113, 114, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1,
- -1, 47, 48, 49, 50, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, -1, 62, 63, 64,
- 65, -1, -1, -1, -1, 70, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 85, 86, -1, -1, -1, -1, -1, -1, -1, 94, 95, -1, -1, -1, -1, -1, -1, 102,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 113, 114, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, -1, 47, 48,
- 49, 50, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, -1, 62, 63, 64, 65, -1, -1,
- -1, -1, 70, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 86,
- -1, -1, -1, -1, -1, -1, -1, 94, 95, -1, -1, -1, -1, -1, -1, 102, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 113, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 31, 32,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, -1, 47, 48, 49, -1, -1,
- -1, -1, -1, 55, 56, -1, -1, -1, -1, -1, 62, 63, 64, 65, -1, -1, -1, -1, 70,
- 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, -1, -1, -1,
- -1, -1, -1, -1, 94, 95, -1, -1, -1, -1, -1, -1, 102, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 113, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 31, 32, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, -1, 47, 48, 49, -1, -1, -1, -1, -1,
- 55, 56, -1, -1, -1, -1, -1, 62, 63, 64, 65, -1, -1, -1, -1, 70, 71, 72, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, -1, -1, -1, -1, -1, -1,
- -1, 94, 95, -1, -1, -1, -1, -1, -1, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 113, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 31, 32, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 42, 43, 44, -1, -1, 47, 48, 49, -1, -1, -1, -1, -1, 55, 56, -1,
- -1, -1, -1, -1, 62, 63, 64, 65, -1, -1, -1, -1, 70, 71, 72, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, -1, -1, -1, -1, -1, -1, -1, 94, 95,
- -1, -1, -1, -1, -1, -1, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 113, 114,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 42, 43, 44, -1, -1, 47, 48, 49, -1, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1,
- -1, 62, 63, 64, 65, -1, -1, -1, -1, 70, 71, 72, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 85, 86, -1, -1, -1, -1, -1, -1, -1, 94, 95, -1, -1, -1,
- -1, -1, -1, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44,
- -1, -1, 47, 48, 49, -1, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, -1, 62, 63,
- 64, 65, -1, -1, -1, -1, 70, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 85, 86, -1, -1, -1, -1, -1, -1, -1, 94, 95, -1, -1, -1, -1, -1, -1,
- 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 113, 114, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 124, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 141, -1, -1, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, 59, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 51, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, 51, -1, -1,
- -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
- 139, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110,
- 111, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 138};
+ 26, 27, 28, 29, 30, -1, -1, 33, -1, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1,
+ -1, 46, 47, -1, -1, -1, -1, -1, 53, -1, 55, 56, -1, -1, 59, 60, 61, 62, 63,
+ -1, -1, -1, -1, 68, 69, 70, 71, -1, -1, -1, 75, 76, 77, 78, 79, 80, 81, -1,
+ 83, 84, 85, 86, -1, -1, 89, 90, 91, 92, 93, 94, 95, -1, -1, 98, 99, 100, 101,
+ 102, 103, -1, 105, 106, 107, 108, -1, -1, -1, -1, -1, -1, -1, -1, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, -1, 33, -1, 35, 36, 37, 38,
+ 39, 40, 41, 42, -1, -1, -1, 46, 47, -1, -1, -1, -1, 52, 53, -1, 55, 56, -1,
+ -1, 59, 60, 61, 62, 63, -1, -1, -1, -1, 68, 69, 70, 71, -1, -1, -1, 75, 76,
+ 77, 78, 79, 80, 81, -1, 83, 84, 85, 86, -1, -1, 89, 90, 91, 92, 93, 94, 95,
+ -1, -1, 98, 99, 100, 101, 102, 103, -1, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ -1, -1, 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, -1, -1, 33,
+ -1, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, -1, 46, 47, -1, -1, -1, -1, -1,
+ 53, -1, 55, 56, -1, -1, 59, 60, -1, 62, 63, -1, -1, -1, -1, 68, 69, 70, 71,
+ -1, -1, -1, 75, 76, 77, 78, 79, 80, 81, -1, 83, 84, 85, 86, -1, -1, 89, 90,
+ 91, 92, 93, 94, 95, -1, -1, 98, 99, 100, 101, 102, 103, -1, 105, 106, 107, 108, -1,
+ -1, -1, -1, -1, -1, -1, -1, 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 31, 32, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 43, 44, 45, -1, -1, 48, 49, 50, 51, -1, -1, -1, -1, -1, 57,
+ 58, -1, -1, -1, -1, -1, 64, 65, 66, 67, -1, -1, -1, -1, 72, 73, 74, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, -1,
+ 96, 97, -1, -1, -1, -1, -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 115, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 31, 32, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 43, 44, 45, -1, -1, 48, 49, 50, 51, -1, -1, -1, -1, -1, 57, 58,
+ -1, -1, -1, -1, -1, 64, 65, 66, 67, -1, -1, -1, -1, 72, 73, 74, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, -1, 96,
+ 97, -1, -1, -1, -1, -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 115,
+ 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 43, 44, 45, -1, -1, 48, 49, 50, 51, -1, -1, -1, -1, -1, 57, 58, -1,
+ -1, -1, -1, -1, 64, 65, 66, 67, -1, -1, -1, -1, 72, 73, 74, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, -1, 96, 97,
+ -1, -1, -1, -1, -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, 116,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 43, 44, 45, -1, -1, 48, 49, 50, 51, -1, -1, -1, -1, -1, 57, 58, -1, -1,
+ -1, -1, -1, 64, 65, 66, 67, -1, -1, -1, -1, 72, 73, 74, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, -1, 96, 97, -1,
+ -1, -1, -1, -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, 116, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 43, 44, 45, -1, -1, 48, 49, 50, 51, -1, -1, -1, -1, -1, 57, 58, -1, -1, -1,
+ -1, -1, 64, 65, 66, 67, -1, -1, -1, -1, 72, 73, 74, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, -1, 96, 97, -1, -1,
+ -1, -1, -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, 116, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 43,
+ 44, 45, -1, -1, 48, 49, 50, 51, -1, -1, -1, -1, -1, 57, 58, -1, -1, -1, -1,
+ -1, 64, 65, 66, 67, -1, -1, -1, -1, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, -1, 96, 97, -1, -1, -1,
+ -1, -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, 116, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, 44,
+ 45, -1, -1, 48, 49, 50, 51, -1, -1, -1, -1, -1, 57, 58, -1, -1, -1, -1, -1,
+ 64, 65, 66, 67, -1, -1, -1, -1, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, -1, 96, 97, -1, -1, -1, -1,
+ -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, 116, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, 45,
+ -1, -1, 48, 49, 50, 51, -1, -1, -1, -1, -1, 57, 58, -1, -1, -1, -1, -1, 64,
+ 65, 66, 67, -1, -1, -1, -1, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, -1, 96, 97, -1, -1, -1, -1, -1,
+ -1, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, 116, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, 45, -1,
+ -1, 48, 49, 50, -1, -1, -1, -1, -1, -1, 57, 58, -1, -1, -1, -1, -1, 64, 65,
+ 66, 67, -1, -1, -1, -1, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, -1, 96, 97, -1, -1, -1, -1, -1, -1,
+ 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, 116, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, 45, -1, -1,
+ 48, 49, 50, -1, -1, -1, -1, -1, -1, 57, 58, -1, -1, -1, -1, -1, 64, 65, 66,
+ 67, -1, -1, -1, -1, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 87, 88, -1, -1, -1, -1, -1, -1, -1, 96, 97, -1, -1, -1, -1, -1, -1, 104,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, 116, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, 45, -1, -1, 48,
+ 49, 50, -1, -1, -1, -1, -1, -1, 57, 58, -1, -1, -1, -1, -1, 64, 65, 66, 67,
+ -1, -1, -1, -1, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 87, 88, -1, -1, -1, -1, -1, -1, -1, 96, 97, -1, -1, -1, -1, -1, -1, 104, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, 116, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, 45, -1, -1, 48, 49,
+ 50, -1, -1, -1, -1, -1, -1, 57, 58, -1, -1, -1, -1, -1, 64, 65, 66, 67, -1,
+ -1, -1, -1, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 87,
+ 88, -1, -1, -1, -1, -1, -1, -1, 96, 97, -1, -1, -1, -1, -1, -1, 104, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 31,
+ 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 43, 44, 45, -1, -1, 48, 49, 50,
+ -1, -1, -1, -1, -1, -1, 57, 58, -1, -1, -1, -1, -1, 64, 65, 66, 67, -1, -1,
+ -1, -1, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, 88,
+ -1, -1, -1, -1, -1, -1, -1, 96, 97, -1, -1, -1, -1, -1, -1, 104, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 115, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, 126,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 143, -1, -1,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 43, 44,
+ 45, -1, -1, 48, 49, 50, -1, -1, -1, -1, -1, -1, 57, 58, -1, -1, -1, -1, -1,
+ 64, 65, 66, 67, -1, -1, -1, -1, 72, 73, 74, -1, -1, 43, 44, 45, -1, -1, 48,
+ 49, 50, 51, -1, 87, 88, -1, -1, 57, 58, -1, -1, -1, 96, 97, 64, 65, 66, 67,
+ -1, -1, 104, -1, 72, 73, 74, -1, -1, -1, -1, -1, -1, 115, -1, -1, -1, -1, -1,
+ 87, 88, -1, -1, -1, 126, -1, -1, -1, 96, 97, -1, -1, -1, -1, -1, -1, 104, -1,
+ -1, -1, -1, 143, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 156, 157, 158,
+ 159, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 143,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 156, 157, 158, 159};
const short ParserGen::yystos_[] = {
- 0, 161, 162, 163, 356, 113, 210, 114, 340, 114, 350, 0, 114, 211, 341, 351, 107, 108, 109,
- 110, 111, 112, 212, 213, 214, 215, 216, 217, 218, 50, 8, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 51, 59, 80, 82, 138, 169, 172, 174, 177, 182,
- 345, 346, 349, 3, 4, 5, 6, 7, 8, 9, 26, 27, 28, 29, 30, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 45, 46, 51, 52, 53, 54, 57, 58, 60, 61, 66, 67, 68, 69,
- 73, 74, 75, 76, 77, 78, 79, 81, 82, 83, 84, 87, 88, 89, 90, 91, 92, 93, 96,
- 97, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139,
- 168, 169, 171, 172, 173, 174, 176, 355, 114, 42, 43, 44, 47, 48, 49, 63, 64, 65, 70,
- 71, 72, 154, 155, 156, 157, 187, 189, 190, 191, 224, 114, 114, 224, 357, 358, 51, 31, 32,
- 55, 56, 62, 85, 86, 94, 95, 102, 114, 124, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 158, 159, 160, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 209, 343, 113, 42, 43, 47, 48, 63, 64, 70,
- 71, 114, 352, 353, 51, 219, 23, 11, 114, 211, 342, 344, 76, 51, 59, 138, 139, 165, 166,
- 170, 178, 182, 224, 195, 51, 81, 347, 348, 340, 85, 124, 354, 31, 32, 42, 43, 44, 47,
- 48, 49, 63, 64, 65, 70, 71, 72, 113, 114, 154, 155, 156, 157, 183, 184, 185, 186, 188,
- 192, 193, 195, 197, 198, 199, 201, 202, 203, 221, 222, 223, 226, 229, 230, 231, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 337, 221, 51, 20, 114, 203, 50,
- 51, 308, 3, 4, 5, 6, 7, 8, 9, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 45, 46, 52, 53, 54, 57, 58, 59, 60, 61, 66, 67, 68, 69, 73,
- 74, 75, 76, 77, 78, 79, 81, 82, 83, 84, 87, 88, 89, 90, 91, 92, 93, 96, 97,
- 98, 99, 100, 101, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 123, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 165, 175, 179, 220, 190, 342, 50, 114,
- 204, 225, 231, 232, 337, 225, 113, 204, 232, 335, 336, 337, 338, 339, 339, 231, 113, 231, 113,
- 339, 339, 339, 113, 227, 339, 225, 227, 113, 113, 357, 339, 339, 357, 357, 339, 113, 227, 225,
- 225, 227, 227, 113, 113, 113, 225, 113, 225, 227, 227, 357, 55, 56, 62, 85, 86, 94, 95,
- 102, 124, 113, 113, 227, 113, 231, 113, 339, 254, 357, 254, 254, 357, 357, 113, 357, 227, 113,
- 113, 227, 113, 113, 227, 228, 339, 339, 113, 225, 113, 225, 225, 113, 113, 113, 113, 339, 339,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 357, 113, 225, 222, 222, 51, 179, 51, 347,
- 233, 51, 225, 51, 51, 51, 225, 51, 225, 51, 51, 51, 225, 51, 51, 51, 51, 308, 113,
- 114, 194, 204, 205, 206, 207, 16, 51, 51, 13, 12, 51, 225, 51, 51, 51, 51, 51, 225,
- 225, 194, 51, 225, 51, 51, 51, 10, 306, 51, 51, 51, 51, 51, 51, 51, 51, 51, 225,
- 225, 51, 225, 51, 225, 51, 51, 16, 51, 51, 14, 14, 225, 306, 51, 225, 225, 51, 225,
- 225, 51, 51, 51, 51, 225, 51, 225, 51, 51, 225, 225, 225, 225, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 306, 225, 51, 51, 51, 167, 168, 169, 172, 174, 180, 50,
- 50, 50, 225, 50, 309, 208, 50, 225, 225, 225, 225, 225, 225, 50, 225, 225, 16, 225, 225,
- 50, 225, 225, 225, 225, 225, 16, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 16, 225,
- 225, 51, 51, 50, 51, 50, 194, 51, 176, 181, 51, 17, 302, 15, 304, 304, 50, 225, 310,
- 310, 51, 50, 225, 50, 308, 51, 50, 19, 307, 16, 16, 50, 225, 308, 308, 308, 225, 50,
- 50, 225, 225, 225, 50, 225, 50, 194, 225, 18, 303, 225, 24, 305, 305, 51, 225, 50, 50,
- 51, 51, 51, 50, 51, 225, 21, 225, 225, 51, 51, 50, 50, 50, 50, 51, 51, 50, 50,
- 50, 51, 51, 51, 225, 25, 225, 302, 303, 51, 51, 51, 51, 225, 22, 22, 51, 51, 51,
- 51, 51, 51, 51, 51, 225, 303, 51, 51, 225, 225, 51, 51, 51, 51, 51, 51, 51, 51,
- 51};
+ 0, 163, 164, 165, 364, 115, 214, 116, 344, 116, 358, 0, 116, 215, 345, 359, 109, 110, 111,
+ 112, 113, 114, 216, 217, 218, 219, 220, 221, 222, 51, 8, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 34, 52, 61, 82, 84, 140, 171, 174, 176, 179,
+ 184, 349, 350, 355, 356, 3, 4, 5, 6, 7, 8, 9, 26, 27, 28, 29, 30, 33, 35,
+ 36, 37, 38, 39, 40, 41, 42, 46, 47, 52, 53, 55, 56, 59, 60, 62, 63, 68, 69,
+ 70, 71, 75, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 89, 90, 91, 92, 93, 94,
+ 95, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 141, 170, 171, 173, 174, 175, 176, 178, 363, 116, 43, 44, 45, 48, 49, 50, 65, 66,
+ 67, 72, 73, 74, 156, 157, 158, 159, 189, 191, 192, 193, 228, 116, 116, 228, 365, 366, 52,
+ 31, 32, 57, 58, 64, 87, 88, 96, 97, 104, 115, 116, 126, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, 154, 155, 160, 161, 162, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 211, 116, 206,
+ 347, 115, 43, 44, 48, 49, 65, 66, 72, 73, 116, 360, 361, 52, 223, 23, 11, 116, 215,
+ 313, 210, 346, 348, 78, 52, 61, 140, 141, 167, 168, 172, 180, 184, 228, 197, 51, 196, 52,
+ 178, 183, 52, 54, 83, 139, 351, 352, 353, 354, 344, 87, 126, 362, 31, 32, 43, 44, 45,
+ 48, 49, 50, 65, 66, 67, 72, 73, 74, 115, 116, 156, 157, 158, 159, 185, 186, 187, 188,
+ 190, 194, 195, 197, 199, 200, 201, 203, 204, 205, 225, 226, 227, 230, 233, 234, 235, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 341, 225, 52, 20, 196, 196,
+ 116, 205, 115, 197, 212, 213, 228, 51, 52, 312, 3, 4, 5, 6, 7, 8, 9, 26, 27,
+ 28, 29, 30, 33, 35, 36, 37, 38, 39, 40, 41, 42, 46, 47, 53, 55, 56, 59, 60,
+ 61, 62, 63, 68, 69, 70, 71, 75, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 89,
+ 90, 91, 92, 93, 94, 95, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 167, 177, 181, 224, 192, 346, 357, 51, 116, 206, 229, 235, 236, 341, 229, 115, 206, 236, 339,
+ 340, 341, 342, 343, 343, 235, 115, 235, 115, 343, 343, 343, 115, 231, 343, 229, 231, 115, 115,
+ 365, 343, 343, 365, 365, 343, 115, 231, 229, 229, 231, 231, 115, 115, 115, 229, 115, 229, 231,
+ 231, 365, 57, 58, 64, 87, 88, 96, 97, 104, 126, 115, 115, 231, 115, 235, 115, 343, 258,
+ 365, 258, 258, 365, 365, 115, 365, 231, 115, 115, 231, 115, 115, 231, 232, 343, 343, 115, 229,
+ 115, 229, 229, 115, 115, 115, 115, 343, 343, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
+ 365, 115, 229, 226, 226, 52, 181, 52, 351, 51, 213, 237, 52, 229, 52, 52, 52, 229, 52,
+ 229, 52, 52, 52, 229, 52, 52, 52, 52, 312, 196, 16, 52, 52, 13, 12, 52, 229, 52,
+ 52, 52, 52, 52, 229, 229, 196, 52, 229, 52, 52, 52, 10, 310, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 229, 229, 52, 229, 52, 229, 52, 52, 16, 52, 52, 14, 14, 229, 310,
+ 52, 229, 229, 52, 229, 229, 52, 52, 52, 52, 229, 52, 229, 52, 52, 229, 229, 229, 229,
+ 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 310, 229, 52, 52, 52, 169, 170,
+ 171, 174, 176, 182, 51, 51, 51, 229, 51, 51, 229, 229, 229, 229, 229, 229, 51, 229, 229,
+ 16, 229, 229, 51, 229, 229, 229, 229, 229, 16, 229, 229, 229, 229, 229, 229, 229, 229, 229,
+ 229, 16, 229, 229, 52, 52, 51, 52, 52, 17, 306, 15, 308, 308, 51, 229, 314, 314, 52,
+ 51, 229, 51, 312, 52, 51, 19, 311, 16, 16, 51, 229, 312, 312, 312, 229, 51, 51, 229,
+ 229, 229, 51, 229, 51, 229, 18, 307, 229, 24, 309, 309, 52, 229, 51, 51, 52, 52, 52,
+ 51, 52, 229, 21, 229, 229, 52, 52, 51, 51, 51, 51, 52, 52, 51, 51, 51, 52, 52,
+ 52, 229, 25, 229, 306, 307, 52, 52, 52, 52, 229, 22, 22, 52, 52, 52, 52, 52, 52,
+ 52, 52, 229, 307, 52, 52, 229, 229, 52, 52, 52, 52, 52, 52, 52, 52, 52};
const short ParserGen::yyr1_[] = {
- 0, 164, 356, 356, 356, 210, 211, 211, 358, 357, 212, 212, 212, 212, 212, 212, 218, 213, 214,
- 224, 224, 224, 224, 215, 216, 217, 219, 219, 178, 178, 221, 222, 222, 222, 222, 222, 222, 222,
- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
- 222, 222, 222, 222, 222, 222, 222, 222, 165, 166, 166, 166, 223, 220, 220, 179, 179, 340, 341,
- 341, 345, 345, 343, 343, 342, 342, 347, 348, 348, 346, 349, 349, 349, 344, 344, 177, 177, 177,
- 172, 168, 168, 168, 168, 168, 168, 169, 170, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
- 182, 182, 182, 182, 182, 182, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
- 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
- 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
- 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
- 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 195, 195, 195, 195, 195,
- 195, 195, 195, 195, 195, 196, 209, 197, 198, 199, 201, 202, 203, 183, 184, 185, 186, 188, 192,
- 193, 187, 187, 187, 187, 189, 189, 189, 189, 190, 190, 190, 190, 191, 191, 191, 191, 200, 200,
- 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
- 204, 204, 308, 308, 225, 225, 225, 225, 335, 335, 336, 336, 337, 337, 337, 337, 337, 337, 337,
- 337, 337, 337, 227, 228, 226, 226, 229, 230, 230, 231, 338, 339, 339, 232, 233, 233, 180, 167,
- 167, 167, 167, 174, 175, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
- 234, 234, 235, 235, 235, 235, 235, 235, 235, 235, 235, 319, 319, 319, 319, 319, 319, 319, 319,
- 319, 319, 319, 319, 319, 319, 319, 236, 332, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 333, 334,
- 237, 237, 237, 238, 239, 240, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
- 244, 244, 244, 244, 244, 244, 244, 244, 244, 245, 304, 304, 305, 305, 246, 247, 310, 310, 310,
- 248, 249, 306, 306, 250, 257, 267, 307, 307, 254, 251, 252, 253, 255, 256, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 354, 354, 352, 350, 351, 351, 353, 353, 353, 353, 353, 353, 353, 353,
- 173, 173, 355, 355, 311, 311, 311, 311, 311, 311, 311, 312, 313, 314, 315, 316, 317, 318, 241,
- 241, 242, 243, 194, 194, 205, 205, 206, 309, 309, 207, 208, 208, 181, 176, 176, 176, 176, 176,
- 268, 268, 268, 268, 268, 268, 268, 269, 270, 271, 272, 273, 274, 275, 276, 276, 276, 276, 276,
- 276, 276, 276, 276, 276, 302, 302, 303, 303, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286};
+ 0, 166, 364, 364, 364, 214, 215, 215, 366, 365, 216, 216, 216, 216, 216, 216, 222, 217, 218,
+ 228, 228, 228, 228, 219, 220, 221, 223, 223, 180, 180, 225, 226, 226, 226, 226, 226, 226, 226,
+ 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
+ 226, 226, 226, 226, 226, 226, 226, 226, 167, 168, 168, 168, 227, 224, 224, 181, 181, 344, 345,
+ 345, 349, 349, 349, 347, 347, 346, 346, 351, 351, 351, 353, 212, 357, 357, 213, 213, 354, 354,
+ 355, 352, 352, 350, 356, 356, 356, 348, 348, 179, 179, 179, 174, 170, 170, 170, 170, 170, 170,
+ 171, 172, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 173,
+ 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 173, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 198, 211,
+ 199, 200, 201, 203, 204, 205, 185, 186, 187, 188, 190, 194, 195, 189, 189, 189, 189, 191, 191,
+ 191, 191, 192, 192, 192, 192, 193, 193, 193, 193, 202, 202, 206, 206, 206, 206, 206, 206, 206,
+ 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 312, 312, 229, 229, 229,
+ 229, 339, 339, 340, 340, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 231, 232, 230, 230,
+ 233, 234, 234, 235, 342, 343, 343, 236, 237, 237, 182, 169, 169, 169, 169, 176, 177, 238, 238,
+ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 239, 239, 239, 239,
+ 239, 239, 239, 239, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
+ 240, 336, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 241, 241, 241, 242, 243, 244, 248,
+ 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
+ 248, 248, 249, 308, 308, 309, 309, 250, 251, 314, 314, 314, 252, 253, 310, 310, 254, 261, 271,
+ 311, 311, 258, 255, 256, 257, 259, 260, 262, 263, 264, 265, 266, 267, 268, 269, 270, 362, 362,
+ 360, 358, 359, 359, 361, 361, 361, 361, 361, 361, 361, 361, 175, 175, 363, 363, 315, 315, 315,
+ 315, 315, 315, 315, 316, 317, 318, 319, 320, 321, 322, 245, 245, 246, 247, 196, 196, 207, 207,
+ 208, 313, 313, 209, 210, 210, 183, 178, 178, 178, 178, 178, 272, 272, 272, 272, 272, 272, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 306, 306,
+ 307, 307, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290};
const signed char ParserGen::yyr2_[] = {
- 0, 2, 2, 2, 2, 3, 0, 4, 0, 2, 1, 1, 1, 1, 1, 1, 5, 3, 7, 1, 1, 1, 1, 2, 2, 4, 0, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 3, 0, 2, 2, 1, 1, 3, 0, 2, 1, 2, 5, 5, 1, 1, 1,
- 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 5, 1, 1, 1, 4, 4, 3, 3, 1, 1, 3,
- 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 7, 4, 4, 4, 7, 4, 7,
- 8, 7, 7, 4, 7, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 6, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 0, 2, 0, 2, 11, 10, 0, 1, 2, 8, 8,
- 0, 2, 8, 8, 8, 0, 2, 7, 4, 4, 4, 11, 11, 7, 4, 4, 7, 8, 8, 8, 4, 4, 1, 1, 4, 3, 0, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 6, 6, 4, 8, 8, 4, 8, 1, 1, 6, 6, 1, 1,
- 1, 1, 3, 0, 2, 3, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 2, 11, 4, 4, 4, 4, 4, 4, 4, 4, 4};
+ 0, 2, 2, 2, 2, 3, 0, 4, 0, 2, 1, 1, 1, 1, 1, 1, 5, 3, 7, 1, 1, 1, 1, 2, 2, 4, 0, 2, 2,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 3, 0, 2, 2, 1, 1, 1, 3, 0, 2, 1, 1, 1,
+ 2, 3, 0, 2, 1, 1, 2, 2, 2, 2, 5, 5, 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 5, 1, 1, 1, 4, 4, 3, 3, 1, 1, 3, 0, 2, 2, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 7, 4, 4, 4, 7, 4, 7, 8, 7, 7, 4, 7,
+ 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 6, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 0, 2, 0, 2, 11, 10, 0, 1, 2, 8, 8, 0, 2, 8,
+ 8, 8, 0, 2, 7, 4, 4, 4, 11, 11, 7, 4, 4, 7, 8, 8, 8, 4, 4, 1, 1, 4, 3, 0, 2, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 6, 6, 4, 8, 8, 4, 8, 1, 1, 6, 6, 1, 1, 1,
+ 1, 3, 0, 2, 3, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 2, 11, 4, 4, 4, 4, 4, 4, 4, 4, 4};
#if YYDEBUG || 1
@@ -7544,6 +7730,7 @@ const char* const ParserGen::yytname_[] = {"\"EOF\"",
"\"false\"",
"\"true\"",
"CEIL",
+ "COMMENT",
"CMP",
"CONCAT",
"CONST_EXPR",
@@ -7563,6 +7750,7 @@ const char* const ParserGen::yytname_[] = {"\"EOF\"",
"\"end of array\"",
"\"end of object\"",
"EQ",
+ "EXISTS",
"EXPONENT",
"FLOOR",
"\"geoNearDistance\"",
@@ -7720,6 +7908,8 @@ const char* const ParserGen::yytname_[] = {"\"EOF\"",
"valueObject",
"valueFields",
"variable",
+ "typeArray",
+ "typeValue",
"pipeline",
"stageList",
"stage",
@@ -7859,7 +8049,11 @@ const char* const ParserGen::yytname_[] = {"\"EOF\"",
"logicalExpr",
"operatorExpression",
"notExpr",
+ "existsExpr",
+ "typeExpr",
+ "commentExpr",
"logicalExprField",
+ "typeValues",
"sortSpecs",
"specList",
"metaSort",
@@ -7875,40 +8069,40 @@ const char* const ParserGen::yytname_[] = {"\"EOF\"",
#if YYDEBUG
const short ParserGen::yyrline_[] = {
- 0, 349, 349, 352, 355, 362, 368, 369, 377, 377, 380, 380, 380, 380, 380, 380,
- 383, 393, 399, 409, 409, 409, 409, 413, 418, 423, 442, 445, 452, 455, 461, 475,
- 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 489, 492, 495, 498, 501,
- 504, 507, 510, 513, 516, 519, 522, 525, 528, 531, 534, 537, 540, 541, 542, 543,
- 544, 549, 557, 570, 571, 588, 595, 599, 607, 610, 616, 622, 625, 631, 634, 643,
- 644, 650, 653, 660, 663, 668, 678, 686, 687, 688, 691, 694, 701, 701, 701, 704,
- 712, 715, 718, 721, 724, 727, 733, 739, 758, 761, 764, 767, 770, 773, 776, 779,
- 782, 785, 788, 791, 794, 797, 800, 803, 811, 814, 817, 820, 823, 826, 829, 832,
- 835, 838, 841, 844, 847, 850, 853, 856, 859, 862, 865, 868, 871, 874, 877, 880,
- 883, 886, 889, 892, 895, 898, 901, 904, 907, 910, 913, 916, 919, 922, 925, 928,
- 931, 934, 937, 940, 943, 946, 949, 952, 955, 958, 961, 964, 967, 970, 973, 976,
- 979, 982, 985, 988, 991, 994, 997, 1000, 1003, 1006, 1009, 1012, 1015, 1018, 1021, 1024,
- 1027, 1030, 1033, 1036, 1039, 1042, 1045, 1048, 1051, 1054, 1057, 1060, 1067, 1072, 1075, 1078,
- 1081, 1084, 1087, 1090, 1093, 1096, 1102, 1116, 1130, 1136, 1142, 1148, 1154, 1160, 1166, 1172,
- 1178, 1184, 1190, 1196, 1202, 1208, 1211, 1214, 1217, 1223, 1226, 1229, 1232, 1238, 1241, 1244,
- 1247, 1253, 1256, 1259, 1262, 1268, 1271, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285,
- 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1304, 1305, 1312, 1312,
- 1312, 1312, 1316, 1316, 1320, 1320, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1325, 1325, 1325,
- 1330, 1337, 1343, 1343, 1347, 1351, 1355, 1364, 1371, 1376, 1376, 1381, 1387, 1390, 1397, 1404,
- 1404, 1404, 1404, 1408, 1414, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420,
- 1420, 1421, 1421, 1421, 1421, 1425, 1428, 1431, 1434, 1437, 1440, 1443, 1446, 1449, 1454, 1454,
- 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1455, 1455, 1459, 1466, 1472,
- 1477, 1482, 1488, 1493, 1498, 1503, 1509, 1514, 1520, 1529, 1535, 1541, 1546, 1552, 1558, 1563,
- 1568, 1573, 1578, 1583, 1588, 1593, 1598, 1603, 1608, 1613, 1618, 1623, 1629, 1629, 1629, 1633,
- 1640, 1647, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
- 1655, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1660, 1670, 1673, 1679, 1682, 1688, 1697, 1706,
- 1709, 1712, 1718, 1729, 1740, 1743, 1749, 1757, 1765, 1773, 1776, 1781, 1790, 1796, 1802, 1808,
- 1818, 1828, 1835, 1842, 1849, 1857, 1865, 1873, 1881, 1887, 1893, 1896, 1902, 1908, 1913, 1916,
- 1923, 1926, 1929, 1932, 1935, 1938, 1941, 1944, 1949, 1951, 1961, 1963, 1969, 1969, 1969, 1969,
- 1969, 1969, 1970, 1974, 1980, 1986, 1993, 2004, 2015, 2022, 2033, 2033, 2037, 2044, 2051, 2051,
- 2055, 2055, 2059, 2065, 2066, 2073, 2079, 2082, 2089, 2096, 2097, 2098, 2099, 2100, 2103, 2103,
- 2103, 2103, 2103, 2103, 2103, 2105, 2110, 2115, 2120, 2125, 2130, 2135, 2141, 2142, 2143, 2144,
- 2145, 2146, 2147, 2148, 2149, 2150, 2155, 2158, 2165, 2168, 2174, 2184, 2189, 2194, 2199, 2204,
- 2209, 2214, 2219, 2224};
+ 0, 354, 354, 357, 360, 367, 373, 374, 382, 382, 385, 385, 385, 385, 385, 385,
+ 388, 398, 404, 414, 414, 414, 414, 418, 423, 428, 447, 450, 457, 460, 466, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 494, 497, 500, 503, 506,
+ 509, 512, 515, 518, 521, 524, 527, 530, 533, 536, 539, 542, 545, 546, 547, 548,
+ 549, 554, 562, 575, 576, 593, 600, 604, 612, 615, 621, 627, 630, 636, 639, 640,
+ 647, 648, 654, 657, 665, 665, 665, 669, 675, 681, 682, 689, 689, 693, 702, 712,
+ 718, 723, 733, 741, 742, 743, 746, 749, 756, 756, 756, 759, 767, 770, 773, 776,
+ 779, 782, 788, 794, 813, 816, 819, 822, 825, 828, 831, 834, 837, 840, 843, 846,
+ 849, 852, 855, 858, 866, 869, 872, 875, 878, 881, 884, 887, 890, 893, 896, 899,
+ 902, 905, 908, 911, 914, 917, 920, 923, 926, 929, 932, 935, 938, 941, 944, 947,
+ 950, 953, 956, 959, 962, 965, 968, 971, 974, 977, 980, 983, 986, 989, 992, 995,
+ 998, 1001, 1004, 1007, 1010, 1013, 1016, 1019, 1022, 1025, 1028, 1031, 1034, 1037, 1040, 1043,
+ 1046, 1049, 1052, 1055, 1058, 1061, 1064, 1067, 1070, 1073, 1076, 1079, 1082, 1085, 1088, 1091,
+ 1094, 1097, 1100, 1103, 1106, 1109, 1112, 1115, 1122, 1127, 1130, 1133, 1136, 1139, 1142, 1145,
+ 1148, 1151, 1157, 1171, 1185, 1191, 1197, 1203, 1209, 1215, 1221, 1227, 1233, 1239, 1245, 1251,
+ 1257, 1263, 1266, 1269, 1272, 1278, 1281, 1284, 1287, 1293, 1296, 1299, 1302, 1308, 1311, 1314,
+ 1317, 1323, 1326, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344,
+ 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1359, 1360, 1367, 1367, 1367, 1367, 1371, 1371,
+ 1375, 1375, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1380, 1380, 1380, 1385, 1392, 1398, 1398,
+ 1402, 1406, 1410, 1419, 1426, 1431, 1431, 1436, 1442, 1445, 1452, 1459, 1459, 1459, 1459, 1463,
+ 1469, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1475, 1476, 1476, 1476,
+ 1476, 1480, 1483, 1486, 1489, 1492, 1495, 1498, 1501, 1504, 1509, 1509, 1509, 1509, 1509, 1509,
+ 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1510, 1510, 1514, 1521, 1527, 1532, 1537, 1543, 1548,
+ 1553, 1558, 1564, 1569, 1575, 1584, 1590, 1596, 1601, 1607, 1613, 1618, 1623, 1628, 1633, 1638,
+ 1643, 1648, 1653, 1658, 1663, 1668, 1673, 1678, 1684, 1684, 1684, 1688, 1695, 1702, 1709, 1709,
+ 1709, 1709, 1709, 1709, 1709, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1711, 1711, 1711,
+ 1711, 1711, 1711, 1711, 1715, 1725, 1728, 1734, 1737, 1743, 1752, 1761, 1764, 1767, 1773, 1784,
+ 1795, 1798, 1804, 1812, 1820, 1828, 1831, 1836, 1845, 1851, 1857, 1863, 1873, 1883, 1890, 1897,
+ 1904, 1912, 1920, 1928, 1936, 1942, 1948, 1951, 1957, 1963, 1968, 1971, 1978, 1981, 1984, 1987,
+ 1990, 1993, 1996, 1999, 2004, 2006, 2016, 2018, 2024, 2024, 2024, 2024, 2024, 2024, 2025, 2029,
+ 2035, 2041, 2048, 2059, 2070, 2077, 2088, 2088, 2092, 2099, 2106, 2106, 2110, 2110, 2114, 2120,
+ 2121, 2128, 2134, 2137, 2144, 2151, 2152, 2153, 2154, 2155, 2158, 2158, 2158, 2158, 2158, 2158,
+ 2158, 2160, 2165, 2170, 2175, 2180, 2185, 2190, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203,
+ 2204, 2205, 2210, 2213, 2220, 2223, 2229, 2239, 2244, 2249, 2254, 2259, 2264, 2269, 2274, 2279};
void ParserGen::yy_stack_print_() const {
*yycdebug_ << "Stack now";
@@ -7929,8 +8123,8 @@ void ParserGen::yy_reduce_print_(int yyrule) const {
#endif // YYDEBUG
-#line 57 "src/mongo/db/cst/grammar.yy"
+#line 57 "grammar.yy"
} // namespace mongo
-#line 7628 "src/mongo/db/cst/parser_gen.cpp"
+#line 7827 "parser_gen.cpp"
-#line 2228 "src/mongo/db/cst/grammar.yy"
+#line 2283 "grammar.yy"
diff --git a/src/mongo/db/cst/parser_gen.hpp b/src/mongo/db/cst/parser_gen.hpp
index 3837c538d14..a0021bd6a40 100644
--- a/src/mongo/db/cst/parser_gen.hpp
+++ b/src/mongo/db/cst/parser_gen.hpp
@@ -32,7 +32,7 @@
/**
- ** \file src/mongo/db/cst/parser_gen.hpp
+ ** \file parser_gen.hpp
** Define the mongo::parser class.
*/
@@ -42,10 +42,10 @@
// especially those whose name start with YY_ or yy_. They are
// private implementation details that can be changed or removed.
-#ifndef YY_YY_SRC_MONGO_DB_CST_PARSER_GEN_HPP_INCLUDED
-#define YY_YY_SRC_MONGO_DB_CST_PARSER_GEN_HPP_INCLUDED
+#ifndef YY_YY_PARSER_GEN_HPP_INCLUDED
+#define YY_YY_PARSER_GEN_HPP_INCLUDED
// "%code requires" blocks.
-#line 66 "src/mongo/db/cst/grammar.yy"
+#line 66 "grammar.yy"
#include "mongo/db/cst/bson_location.h"
#include "mongo/db/cst/c_node.h"
@@ -60,7 +60,7 @@ class BSONLexer;
#pragma warning(disable : 4065)
#endif
-#line 64 "src/mongo/db/cst/parser_gen.hpp"
+#line 64 "parser_gen.hpp"
#include <cassert>
#include <cstdlib> // std::abort
@@ -189,9 +189,9 @@ class BSONLexer;
#define YYDEBUG 0
#endif
-#line 57 "src/mongo/db/cst/grammar.yy"
+#line 57 "grammar.yy"
namespace mongo {
-#line 199 "src/mongo/db/cst/parser_gen.hpp"
+#line 199 "parser_gen.hpp"
/// A Bison parser.
@@ -411,6 +411,8 @@ public:
// valueObject
// valueFields
// variable
+ // typeArray
+ // typeValue
// pipeline
// stageList
// stage
@@ -607,6 +609,9 @@ public:
// logicalExpr
// operatorExpression
// notExpr
+ // existsExpr
+ // typeExpr
+ // commentExpr
// sortSpec
char dummy20[sizeof(std::pair<CNode::Fieldname, CNode>)];
@@ -621,6 +626,7 @@ public:
// expressions
// values
// exprZeroToTwo
+ // typeValues
char dummy22[sizeof(std::vector<CNode>)];
// "fieldname containing dotted path"
@@ -698,136 +704,138 @@ public:
BOOL_FALSE = 31, // "false"
BOOL_TRUE = 32, // "true"
CEIL = 33, // CEIL
- CMP = 34, // CMP
- CONCAT = 35, // CONCAT
- CONST_EXPR = 36, // CONST_EXPR
- CONVERT = 37, // CONVERT
- COS = 38, // COS
- COSH = 39, // COSH
- DATE_FROM_STRING = 40, // DATE_FROM_STRING
- DATE_TO_STRING = 41, // DATE_TO_STRING
- DECIMAL_NEGATIVE_ONE = 42, // "-1 (decimal)"
- DECIMAL_ONE = 43, // "1 (decimal)"
- DECIMAL_ZERO = 44, // "zero (decimal)"
- DEGREES_TO_RADIANS = 45, // DEGREES_TO_RADIANS
- DIVIDE = 46, // DIVIDE
- DOUBLE_NEGATIVE_ONE = 47, // "-1 (double)"
- DOUBLE_ONE = 48, // "1 (double)"
- DOUBLE_ZERO = 49, // "zero (double)"
- END_ARRAY = 50, // "end of array"
- END_OBJECT = 51, // "end of object"
- EQ = 52, // EQ
- EXPONENT = 53, // EXPONENT
- FLOOR = 54, // FLOOR
- GEO_NEAR_DISTANCE = 55, // "geoNearDistance"
- GEO_NEAR_POINT = 56, // "geoNearPoint"
- GT = 57, // GT
- GTE = 58, // GTE
- ID = 59, // ID
- INDEX_OF_BYTES = 60, // INDEX_OF_BYTES
- INDEX_OF_CP = 61, // INDEX_OF_CP
- INDEX_KEY = 62, // "indexKey"
- INT_NEGATIVE_ONE = 63, // "-1 (int)"
- INT_ONE = 64, // "1 (int)"
- INT_ZERO = 65, // "zero (int)"
- LITERAL = 66, // LITERAL
- LN = 67, // LN
- LOG = 68, // LOG
- LOGTEN = 69, // LOGTEN
- LONG_NEGATIVE_ONE = 70, // "-1 (long)"
- LONG_ONE = 71, // "1 (long)"
- LONG_ZERO = 72, // "zero (long)"
- LT = 73, // LT
- LTE = 74, // LTE
- LTRIM = 75, // LTRIM
- META = 76, // META
- MOD = 77, // MOD
- MULTIPLY = 78, // MULTIPLY
- NE = 79, // NE
- NOR = 80, // NOR
- NOT = 81, // NOT
- OR = 82, // OR
- POW = 83, // POW
- RADIANS_TO_DEGREES = 84, // RADIANS_TO_DEGREES
- RAND_VAL = 85, // "randVal"
- RECORD_ID = 86, // "recordId"
- REGEX_FIND = 87, // REGEX_FIND
- REGEX_FIND_ALL = 88, // REGEX_FIND_ALL
- REGEX_MATCH = 89, // REGEX_MATCH
- REPLACE_ALL = 90, // REPLACE_ALL
- REPLACE_ONE = 91, // REPLACE_ONE
- ROUND = 92, // ROUND
- RTRIM = 93, // RTRIM
- SEARCH_HIGHLIGHTS = 94, // "searchHighlights"
- SEARCH_SCORE = 95, // "searchScore"
- SET_DIFFERENCE = 96, // "setDifference"
- SET_EQUALS = 97, // "setEquals"
- SET_INTERSECTION = 98, // "setIntersection"
- SET_IS_SUBSET = 99, // "setIsSubset"
- SET_UNION = 100, // "setUnion"
- SLICE = 101, // "slice"
- SORT_KEY = 102, // "sortKey"
- SIN = 103, // SIN
- SINH = 104, // SINH
- SPLIT = 105, // SPLIT
- SQRT = 106, // SQRT
- STAGE_INHIBIT_OPTIMIZATION = 107, // STAGE_INHIBIT_OPTIMIZATION
- STAGE_LIMIT = 108, // STAGE_LIMIT
- STAGE_PROJECT = 109, // STAGE_PROJECT
- STAGE_SAMPLE = 110, // STAGE_SAMPLE
- STAGE_SKIP = 111, // STAGE_SKIP
- STAGE_UNION_WITH = 112, // STAGE_UNION_WITH
- START_ARRAY = 113, // "array"
- START_OBJECT = 114, // "object"
- STR_CASE_CMP = 115, // STR_CASE_CMP
- STR_LEN_BYTES = 116, // STR_LEN_BYTES
- STR_LEN_CP = 117, // STR_LEN_CP
- SUBSTR = 118, // SUBSTR
- SUBSTR_BYTES = 119, // SUBSTR_BYTES
- SUBSTR_CP = 120, // SUBSTR_CP
- SUBTRACT = 121, // SUBTRACT
- TAN = 122, // TAN
- TANH = 123, // TANH
- TEXT_SCORE = 124, // "textScore"
- TO_BOOL = 125, // TO_BOOL
- TO_DATE = 126, // TO_DATE
- TO_DECIMAL = 127, // TO_DECIMAL
- TO_DOUBLE = 128, // TO_DOUBLE
- TO_INT = 129, // TO_INT
- TO_LONG = 130, // TO_LONG
- TO_LOWER = 131, // TO_LOWER
- TO_OBJECT_ID = 132, // TO_OBJECT_ID
- TO_STRING = 133, // TO_STRING
- TO_UPPER = 134, // TO_UPPER
- TRIM = 135, // TRIM
- TRUNC = 136, // TRUNC
- TYPE = 137, // TYPE
- FIELDNAME = 138, // "fieldname"
- DOTTED_FIELDNAME = 139, // "fieldname containing dotted path"
- DOLLAR_PREF_FIELDNAME = 140, // "$-prefixed fieldname"
- STRING = 141, // "string"
- DOLLAR_STRING = 142, // "$-prefixed string"
- DOLLAR_DOLLAR_STRING = 143, // "$$-prefixed string"
- BINARY = 144, // "BinData"
- UNDEFINED = 145, // "undefined"
- OBJECT_ID = 146, // "ObjectID"
- DATE_LITERAL = 147, // "Date"
- JSNULL = 148, // "null"
- REGEX = 149, // "regex"
- DB_POINTER = 150, // "dbPointer"
- JAVASCRIPT = 151, // "Code"
- SYMBOL = 152, // "Symbol"
- JAVASCRIPT_W_SCOPE = 153, // "CodeWScope"
- INT_OTHER = 154, // "arbitrary integer"
- LONG_OTHER = 155, // "arbitrary long"
- DOUBLE_OTHER = 156, // "arbitrary double"
- DECIMAL_OTHER = 157, // "arbitrary decimal"
- TIMESTAMP = 158, // "Timestamp"
- MIN_KEY = 159, // "minKey"
- MAX_KEY = 160, // "maxKey"
- START_PIPELINE = 161, // START_PIPELINE
- START_MATCH = 162, // START_MATCH
- START_SORT = 163 // START_SORT
+ COMMENT = 34, // COMMENT
+ CMP = 35, // CMP
+ CONCAT = 36, // CONCAT
+ CONST_EXPR = 37, // CONST_EXPR
+ CONVERT = 38, // CONVERT
+ COS = 39, // COS
+ COSH = 40, // COSH
+ DATE_FROM_STRING = 41, // DATE_FROM_STRING
+ DATE_TO_STRING = 42, // DATE_TO_STRING
+ DECIMAL_NEGATIVE_ONE = 43, // "-1 (decimal)"
+ DECIMAL_ONE = 44, // "1 (decimal)"
+ DECIMAL_ZERO = 45, // "zero (decimal)"
+ DEGREES_TO_RADIANS = 46, // DEGREES_TO_RADIANS
+ DIVIDE = 47, // DIVIDE
+ DOUBLE_NEGATIVE_ONE = 48, // "-1 (double)"
+ DOUBLE_ONE = 49, // "1 (double)"
+ DOUBLE_ZERO = 50, // "zero (double)"
+ END_ARRAY = 51, // "end of array"
+ END_OBJECT = 52, // "end of object"
+ EQ = 53, // EQ
+ EXISTS = 54, // EXISTS
+ EXPONENT = 55, // EXPONENT
+ FLOOR = 56, // FLOOR
+ GEO_NEAR_DISTANCE = 57, // "geoNearDistance"
+ GEO_NEAR_POINT = 58, // "geoNearPoint"
+ GT = 59, // GT
+ GTE = 60, // GTE
+ ID = 61, // ID
+ INDEX_OF_BYTES = 62, // INDEX_OF_BYTES
+ INDEX_OF_CP = 63, // INDEX_OF_CP
+ INDEX_KEY = 64, // "indexKey"
+ INT_NEGATIVE_ONE = 65, // "-1 (int)"
+ INT_ONE = 66, // "1 (int)"
+ INT_ZERO = 67, // "zero (int)"
+ LITERAL = 68, // LITERAL
+ LN = 69, // LN
+ LOG = 70, // LOG
+ LOGTEN = 71, // LOGTEN
+ LONG_NEGATIVE_ONE = 72, // "-1 (long)"
+ LONG_ONE = 73, // "1 (long)"
+ LONG_ZERO = 74, // "zero (long)"
+ LT = 75, // LT
+ LTE = 76, // LTE
+ LTRIM = 77, // LTRIM
+ META = 78, // META
+ MOD = 79, // MOD
+ MULTIPLY = 80, // MULTIPLY
+ NE = 81, // NE
+ NOR = 82, // NOR
+ NOT = 83, // NOT
+ OR = 84, // OR
+ POW = 85, // POW
+ RADIANS_TO_DEGREES = 86, // RADIANS_TO_DEGREES
+ RAND_VAL = 87, // "randVal"
+ RECORD_ID = 88, // "recordId"
+ REGEX_FIND = 89, // REGEX_FIND
+ REGEX_FIND_ALL = 90, // REGEX_FIND_ALL
+ REGEX_MATCH = 91, // REGEX_MATCH
+ REPLACE_ALL = 92, // REPLACE_ALL
+ REPLACE_ONE = 93, // REPLACE_ONE
+ ROUND = 94, // ROUND
+ RTRIM = 95, // RTRIM
+ SEARCH_HIGHLIGHTS = 96, // "searchHighlights"
+ SEARCH_SCORE = 97, // "searchScore"
+ SET_DIFFERENCE = 98, // "setDifference"
+ SET_EQUALS = 99, // "setEquals"
+ SET_INTERSECTION = 100, // "setIntersection"
+ SET_IS_SUBSET = 101, // "setIsSubset"
+ SET_UNION = 102, // "setUnion"
+ SLICE = 103, // "slice"
+ SORT_KEY = 104, // "sortKey"
+ SIN = 105, // SIN
+ SINH = 106, // SINH
+ SPLIT = 107, // SPLIT
+ SQRT = 108, // SQRT
+ STAGE_INHIBIT_OPTIMIZATION = 109, // STAGE_INHIBIT_OPTIMIZATION
+ STAGE_LIMIT = 110, // STAGE_LIMIT
+ STAGE_PROJECT = 111, // STAGE_PROJECT
+ STAGE_SAMPLE = 112, // STAGE_SAMPLE
+ STAGE_SKIP = 113, // STAGE_SKIP
+ STAGE_UNION_WITH = 114, // STAGE_UNION_WITH
+ START_ARRAY = 115, // "array"
+ START_OBJECT = 116, // "object"
+ STR_CASE_CMP = 117, // STR_CASE_CMP
+ STR_LEN_BYTES = 118, // STR_LEN_BYTES
+ STR_LEN_CP = 119, // STR_LEN_CP
+ SUBSTR = 120, // SUBSTR
+ SUBSTR_BYTES = 121, // SUBSTR_BYTES
+ SUBSTR_CP = 122, // SUBSTR_CP
+ SUBTRACT = 123, // SUBTRACT
+ TAN = 124, // TAN
+ TANH = 125, // TANH
+ TEXT_SCORE = 126, // "textScore"
+ TO_BOOL = 127, // TO_BOOL
+ TO_DATE = 128, // TO_DATE
+ TO_DECIMAL = 129, // TO_DECIMAL
+ TO_DOUBLE = 130, // TO_DOUBLE
+ TO_INT = 131, // TO_INT
+ TO_LONG = 132, // TO_LONG
+ TO_LOWER = 133, // TO_LOWER
+ TO_OBJECT_ID = 134, // TO_OBJECT_ID
+ TO_STRING = 135, // TO_STRING
+ TO_UPPER = 136, // TO_UPPER
+ TRIM = 137, // TRIM
+ TRUNC = 138, // TRUNC
+ TYPE = 139, // TYPE
+ FIELDNAME = 140, // "fieldname"
+ DOTTED_FIELDNAME = 141, // "fieldname containing dotted path"
+ DOLLAR_PREF_FIELDNAME = 142, // "$-prefixed fieldname"
+ STRING = 143, // "string"
+ DOLLAR_STRING = 144, // "$-prefixed string"
+ DOLLAR_DOLLAR_STRING = 145, // "$$-prefixed string"
+ BINARY = 146, // "BinData"
+ UNDEFINED = 147, // "undefined"
+ OBJECT_ID = 148, // "ObjectID"
+ DATE_LITERAL = 149, // "Date"
+ JSNULL = 150, // "null"
+ REGEX = 151, // "regex"
+ DB_POINTER = 152, // "dbPointer"
+ JAVASCRIPT = 153, // "Code"
+ SYMBOL = 154, // "Symbol"
+ JAVASCRIPT_W_SCOPE = 155, // "CodeWScope"
+ INT_OTHER = 156, // "arbitrary integer"
+ LONG_OTHER = 157, // "arbitrary long"
+ DOUBLE_OTHER = 158, // "arbitrary double"
+ DECIMAL_OTHER = 159, // "arbitrary decimal"
+ TIMESTAMP = 160, // "Timestamp"
+ MIN_KEY = 161, // "minKey"
+ MAX_KEY = 162, // "maxKey"
+ START_PIPELINE = 163, // START_PIPELINE
+ START_MATCH = 164, // START_MATCH
+ START_SORT = 165 // START_SORT
};
/// Backward compatibility alias (Bison 3.6).
typedef token_kind_type yytokentype;
@@ -842,7 +850,7 @@ public:
/// Symbol kinds.
struct symbol_kind {
enum symbol_kind_type {
- YYNTOKENS = 164, ///< Number of tokens.
+ YYNTOKENS = 166, ///< Number of tokens.
S_YYEMPTY = -2,
S_YYEOF = 0, // "EOF"
S_YYerror = 1, // error
@@ -878,331 +886,339 @@ public:
S_BOOL_FALSE = 31, // "false"
S_BOOL_TRUE = 32, // "true"
S_CEIL = 33, // CEIL
- S_CMP = 34, // CMP
- S_CONCAT = 35, // CONCAT
- S_CONST_EXPR = 36, // CONST_EXPR
- S_CONVERT = 37, // CONVERT
- S_COS = 38, // COS
- S_COSH = 39, // COSH
- S_DATE_FROM_STRING = 40, // DATE_FROM_STRING
- S_DATE_TO_STRING = 41, // DATE_TO_STRING
- S_DECIMAL_NEGATIVE_ONE = 42, // "-1 (decimal)"
- S_DECIMAL_ONE = 43, // "1 (decimal)"
- S_DECIMAL_ZERO = 44, // "zero (decimal)"
- S_DEGREES_TO_RADIANS = 45, // DEGREES_TO_RADIANS
- S_DIVIDE = 46, // DIVIDE
- S_DOUBLE_NEGATIVE_ONE = 47, // "-1 (double)"
- S_DOUBLE_ONE = 48, // "1 (double)"
- S_DOUBLE_ZERO = 49, // "zero (double)"
- S_END_ARRAY = 50, // "end of array"
- S_END_OBJECT = 51, // "end of object"
- S_EQ = 52, // EQ
- S_EXPONENT = 53, // EXPONENT
- S_FLOOR = 54, // FLOOR
- S_GEO_NEAR_DISTANCE = 55, // "geoNearDistance"
- S_GEO_NEAR_POINT = 56, // "geoNearPoint"
- S_GT = 57, // GT
- S_GTE = 58, // GTE
- S_ID = 59, // ID
- S_INDEX_OF_BYTES = 60, // INDEX_OF_BYTES
- S_INDEX_OF_CP = 61, // INDEX_OF_CP
- S_INDEX_KEY = 62, // "indexKey"
- S_INT_NEGATIVE_ONE = 63, // "-1 (int)"
- S_INT_ONE = 64, // "1 (int)"
- S_INT_ZERO = 65, // "zero (int)"
- S_LITERAL = 66, // LITERAL
- S_LN = 67, // LN
- S_LOG = 68, // LOG
- S_LOGTEN = 69, // LOGTEN
- S_LONG_NEGATIVE_ONE = 70, // "-1 (long)"
- S_LONG_ONE = 71, // "1 (long)"
- S_LONG_ZERO = 72, // "zero (long)"
- S_LT = 73, // LT
- S_LTE = 74, // LTE
- S_LTRIM = 75, // LTRIM
- S_META = 76, // META
- S_MOD = 77, // MOD
- S_MULTIPLY = 78, // MULTIPLY
- S_NE = 79, // NE
- S_NOR = 80, // NOR
- S_NOT = 81, // NOT
- S_OR = 82, // OR
- S_POW = 83, // POW
- S_RADIANS_TO_DEGREES = 84, // RADIANS_TO_DEGREES
- S_RAND_VAL = 85, // "randVal"
- S_RECORD_ID = 86, // "recordId"
- S_REGEX_FIND = 87, // REGEX_FIND
- S_REGEX_FIND_ALL = 88, // REGEX_FIND_ALL
- S_REGEX_MATCH = 89, // REGEX_MATCH
- S_REPLACE_ALL = 90, // REPLACE_ALL
- S_REPLACE_ONE = 91, // REPLACE_ONE
- S_ROUND = 92, // ROUND
- S_RTRIM = 93, // RTRIM
- S_SEARCH_HIGHLIGHTS = 94, // "searchHighlights"
- S_SEARCH_SCORE = 95, // "searchScore"
- S_SET_DIFFERENCE = 96, // "setDifference"
- S_SET_EQUALS = 97, // "setEquals"
- S_SET_INTERSECTION = 98, // "setIntersection"
- S_SET_IS_SUBSET = 99, // "setIsSubset"
- S_SET_UNION = 100, // "setUnion"
- S_SLICE = 101, // "slice"
- S_SORT_KEY = 102, // "sortKey"
- S_SIN = 103, // SIN
- S_SINH = 104, // SINH
- S_SPLIT = 105, // SPLIT
- S_SQRT = 106, // SQRT
- S_STAGE_INHIBIT_OPTIMIZATION = 107, // STAGE_INHIBIT_OPTIMIZATION
- S_STAGE_LIMIT = 108, // STAGE_LIMIT
- S_STAGE_PROJECT = 109, // STAGE_PROJECT
- S_STAGE_SAMPLE = 110, // STAGE_SAMPLE
- S_STAGE_SKIP = 111, // STAGE_SKIP
- S_STAGE_UNION_WITH = 112, // STAGE_UNION_WITH
- S_START_ARRAY = 113, // "array"
- S_START_OBJECT = 114, // "object"
- S_STR_CASE_CMP = 115, // STR_CASE_CMP
- S_STR_LEN_BYTES = 116, // STR_LEN_BYTES
- S_STR_LEN_CP = 117, // STR_LEN_CP
- S_SUBSTR = 118, // SUBSTR
- S_SUBSTR_BYTES = 119, // SUBSTR_BYTES
- S_SUBSTR_CP = 120, // SUBSTR_CP
- S_SUBTRACT = 121, // SUBTRACT
- S_TAN = 122, // TAN
- S_TANH = 123, // TANH
- S_TEXT_SCORE = 124, // "textScore"
- S_TO_BOOL = 125, // TO_BOOL
- S_TO_DATE = 126, // TO_DATE
- S_TO_DECIMAL = 127, // TO_DECIMAL
- S_TO_DOUBLE = 128, // TO_DOUBLE
- S_TO_INT = 129, // TO_INT
- S_TO_LONG = 130, // TO_LONG
- S_TO_LOWER = 131, // TO_LOWER
- S_TO_OBJECT_ID = 132, // TO_OBJECT_ID
- S_TO_STRING = 133, // TO_STRING
- S_TO_UPPER = 134, // TO_UPPER
- S_TRIM = 135, // TRIM
- S_TRUNC = 136, // TRUNC
- S_TYPE = 137, // TYPE
- S_FIELDNAME = 138, // "fieldname"
- S_DOTTED_FIELDNAME = 139, // "fieldname containing dotted path"
- S_DOLLAR_PREF_FIELDNAME = 140, // "$-prefixed fieldname"
- S_STRING = 141, // "string"
- S_DOLLAR_STRING = 142, // "$-prefixed string"
- S_DOLLAR_DOLLAR_STRING = 143, // "$$-prefixed string"
- S_BINARY = 144, // "BinData"
- S_UNDEFINED = 145, // "undefined"
- S_OBJECT_ID = 146, // "ObjectID"
- S_DATE_LITERAL = 147, // "Date"
- S_JSNULL = 148, // "null"
- S_REGEX = 149, // "regex"
- S_DB_POINTER = 150, // "dbPointer"
- S_JAVASCRIPT = 151, // "Code"
- S_SYMBOL = 152, // "Symbol"
- S_JAVASCRIPT_W_SCOPE = 153, // "CodeWScope"
- S_INT_OTHER = 154, // "arbitrary integer"
- S_LONG_OTHER = 155, // "arbitrary long"
- S_DOUBLE_OTHER = 156, // "arbitrary double"
- S_DECIMAL_OTHER = 157, // "arbitrary decimal"
- S_TIMESTAMP = 158, // "Timestamp"
- S_MIN_KEY = 159, // "minKey"
- S_MAX_KEY = 160, // "maxKey"
- S_START_PIPELINE = 161, // START_PIPELINE
- S_START_MATCH = 162, // START_MATCH
- S_START_SORT = 163, // START_SORT
- S_YYACCEPT = 164, // $accept
- S_aggregationProjectionFieldname = 165, // aggregationProjectionFieldname
- S_projectionFieldname = 166, // projectionFieldname
- S_expressionFieldname = 167, // expressionFieldname
- S_stageAsUserFieldname = 168, // stageAsUserFieldname
- S_argAsUserFieldname = 169, // argAsUserFieldname
- S_argAsProjectionPath = 170, // argAsProjectionPath
- S_aggExprAsUserFieldname = 171, // aggExprAsUserFieldname
- S_invariableUserFieldname = 172, // invariableUserFieldname
- S_sortFieldname = 173, // sortFieldname
- S_idAsUserFieldname = 174, // idAsUserFieldname
- S_idAsProjectionPath = 175, // idAsProjectionPath
- S_valueFieldname = 176, // valueFieldname
- S_predFieldname = 177, // predFieldname
- S_projectField = 178, // projectField
- S_projectionObjectField = 179, // projectionObjectField
- S_expressionField = 180, // expressionField
- S_valueField = 181, // valueField
- S_arg = 182, // arg
- S_dbPointer = 183, // dbPointer
- S_javascript = 184, // javascript
- S_symbol = 185, // symbol
- S_javascriptWScope = 186, // javascriptWScope
- S_int = 187, // int
- S_timestamp = 188, // timestamp
- S_long = 189, // long
- S_double = 190, // double
- S_decimal = 191, // decimal
- S_minKey = 192, // minKey
- S_maxKey = 193, // maxKey
- S_value = 194, // value
- S_string = 195, // string
- S_aggregationFieldPath = 196, // aggregationFieldPath
- S_binary = 197, // binary
- S_undefined = 198, // undefined
- S_objectId = 199, // objectId
- S_bool = 200, // bool
- S_date = 201, // date
- S_null = 202, // null
- S_regex = 203, // regex
- S_simpleValue = 204, // simpleValue
- S_compoundValue = 205, // compoundValue
- S_valueArray = 206, // valueArray
- S_valueObject = 207, // valueObject
- S_valueFields = 208, // valueFields
- S_variable = 209, // variable
- S_pipeline = 210, // pipeline
- S_stageList = 211, // stageList
- S_stage = 212, // stage
- S_inhibitOptimization = 213, // inhibitOptimization
- S_unionWith = 214, // unionWith
- S_skip = 215, // skip
- S_limit = 216, // limit
- S_project = 217, // project
- S_sample = 218, // sample
- S_projectFields = 219, // projectFields
- S_projectionObjectFields = 220, // projectionObjectFields
- S_topLevelProjection = 221, // topLevelProjection
- S_projection = 222, // projection
- S_projectionObject = 223, // projectionObject
- S_num = 224, // num
- S_expression = 225, // expression
- S_compoundNonObjectExpression = 226, // compoundNonObjectExpression
- S_exprFixedTwoArg = 227, // exprFixedTwoArg
- S_exprFixedThreeArg = 228, // exprFixedThreeArg
- S_arrayManipulation = 229, // arrayManipulation
- S_slice = 230, // slice
- S_expressionArray = 231, // expressionArray
- S_expressionObject = 232, // expressionObject
- S_expressionFields = 233, // expressionFields
- S_maths = 234, // maths
- S_meta = 235, // meta
- S_add = 236, // add
- S_boolExprs = 237, // boolExprs
- S_and = 238, // and
- S_or = 239, // or
- S_not = 240, // not
- S_literalEscapes = 241, // literalEscapes
- S_const = 242, // const
- S_literal = 243, // literal
- S_stringExps = 244, // stringExps
- S_concat = 245, // concat
- S_dateFromString = 246, // dateFromString
- S_dateToString = 247, // dateToString
- S_indexOfBytes = 248, // indexOfBytes
- S_indexOfCP = 249, // indexOfCP
- S_ltrim = 250, // ltrim
- S_regexFind = 251, // regexFind
- S_regexFindAll = 252, // regexFindAll
- S_regexMatch = 253, // regexMatch
- S_regexArgs = 254, // regexArgs
- S_replaceOne = 255, // replaceOne
- S_replaceAll = 256, // replaceAll
- S_rtrim = 257, // rtrim
- S_split = 258, // split
- S_strLenBytes = 259, // strLenBytes
- S_strLenCP = 260, // strLenCP
- S_strcasecmp = 261, // strcasecmp
- S_substr = 262, // substr
- S_substrBytes = 263, // substrBytes
- S_substrCP = 264, // substrCP
- S_toLower = 265, // toLower
- S_toUpper = 266, // toUpper
- S_trim = 267, // trim
- S_compExprs = 268, // compExprs
- S_cmp = 269, // cmp
- S_eq = 270, // eq
- S_gt = 271, // gt
- S_gte = 272, // gte
- S_lt = 273, // lt
- S_lte = 274, // lte
- S_ne = 275, // ne
- S_typeExpression = 276, // typeExpression
- S_convert = 277, // convert
- S_toBool = 278, // toBool
- S_toDate = 279, // toDate
- S_toDecimal = 280, // toDecimal
- S_toDouble = 281, // toDouble
- S_toInt = 282, // toInt
- S_toLong = 283, // toLong
- S_toObjectId = 284, // toObjectId
- S_toString = 285, // toString
- S_type = 286, // type
- S_abs = 287, // abs
- S_ceil = 288, // ceil
- S_divide = 289, // divide
- S_exponent = 290, // exponent
- S_floor = 291, // floor
- S_ln = 292, // ln
- S_log = 293, // log
- S_logten = 294, // logten
- S_mod = 295, // mod
- S_multiply = 296, // multiply
- S_pow = 297, // pow
- S_round = 298, // round
- S_sqrt = 299, // sqrt
- S_subtract = 300, // subtract
- S_trunc = 301, // trunc
- S_onErrorArg = 302, // onErrorArg
- S_onNullArg = 303, // onNullArg
- S_formatArg = 304, // formatArg
- S_timezoneArg = 305, // timezoneArg
- S_charsArg = 306, // charsArg
- S_optionsArg = 307, // optionsArg
- S_expressions = 308, // expressions
- S_values = 309, // values
- S_exprZeroToTwo = 310, // exprZeroToTwo
- S_setExpression = 311, // setExpression
- S_allElementsTrue = 312, // allElementsTrue
- S_anyElementTrue = 313, // anyElementTrue
- S_setDifference = 314, // setDifference
- S_setEquals = 315, // setEquals
- S_setIntersection = 316, // setIntersection
- S_setIsSubset = 317, // setIsSubset
- S_setUnion = 318, // setUnion
- S_trig = 319, // trig
- S_sin = 320, // sin
- S_cos = 321, // cos
- S_tan = 322, // tan
- S_sinh = 323, // sinh
- S_cosh = 324, // cosh
- S_tanh = 325, // tanh
- S_asin = 326, // asin
- S_acos = 327, // acos
- S_atan = 328, // atan
- S_asinh = 329, // asinh
- S_acosh = 330, // acosh
- S_atanh = 331, // atanh
- S_atan2 = 332, // atan2
- S_degreesToRadians = 333, // degreesToRadians
- S_radiansToDegrees = 334, // radiansToDegrees
- S_nonArrayExpression = 335, // nonArrayExpression
- S_nonArrayCompoundExpression = 336, // nonArrayCompoundExpression
- S_nonArrayNonObjCompoundExpression = 337, // nonArrayNonObjCompoundExpression
- S_expressionSingletonArray = 338, // expressionSingletonArray
- S_singleArgExpression = 339, // singleArgExpression
- S_match = 340, // match
- S_predicates = 341, // predicates
- S_compoundMatchExprs = 342, // compoundMatchExprs
- S_predValue = 343, // predValue
- S_additionalExprs = 344, // additionalExprs
- S_predicate = 345, // predicate
- S_logicalExpr = 346, // logicalExpr
- S_operatorExpression = 347, // operatorExpression
- S_notExpr = 348, // notExpr
- S_logicalExprField = 349, // logicalExprField
- S_sortSpecs = 350, // sortSpecs
- S_specList = 351, // specList
- S_metaSort = 352, // metaSort
- S_oneOrNegOne = 353, // oneOrNegOne
- S_metaSortKeyword = 354, // metaSortKeyword
- S_sortSpec = 355, // sortSpec
- S_start = 356, // start
- S_START_ORDERED_OBJECT = 357, // START_ORDERED_OBJECT
- S_358_1 = 358 // $@1
+ S_COMMENT = 34, // COMMENT
+ S_CMP = 35, // CMP
+ S_CONCAT = 36, // CONCAT
+ S_CONST_EXPR = 37, // CONST_EXPR
+ S_CONVERT = 38, // CONVERT
+ S_COS = 39, // COS
+ S_COSH = 40, // COSH
+ S_DATE_FROM_STRING = 41, // DATE_FROM_STRING
+ S_DATE_TO_STRING = 42, // DATE_TO_STRING
+ S_DECIMAL_NEGATIVE_ONE = 43, // "-1 (decimal)"
+ S_DECIMAL_ONE = 44, // "1 (decimal)"
+ S_DECIMAL_ZERO = 45, // "zero (decimal)"
+ S_DEGREES_TO_RADIANS = 46, // DEGREES_TO_RADIANS
+ S_DIVIDE = 47, // DIVIDE
+ S_DOUBLE_NEGATIVE_ONE = 48, // "-1 (double)"
+ S_DOUBLE_ONE = 49, // "1 (double)"
+ S_DOUBLE_ZERO = 50, // "zero (double)"
+ S_END_ARRAY = 51, // "end of array"
+ S_END_OBJECT = 52, // "end of object"
+ S_EQ = 53, // EQ
+ S_EXISTS = 54, // EXISTS
+ S_EXPONENT = 55, // EXPONENT
+ S_FLOOR = 56, // FLOOR
+ S_GEO_NEAR_DISTANCE = 57, // "geoNearDistance"
+ S_GEO_NEAR_POINT = 58, // "geoNearPoint"
+ S_GT = 59, // GT
+ S_GTE = 60, // GTE
+ S_ID = 61, // ID
+ S_INDEX_OF_BYTES = 62, // INDEX_OF_BYTES
+ S_INDEX_OF_CP = 63, // INDEX_OF_CP
+ S_INDEX_KEY = 64, // "indexKey"
+ S_INT_NEGATIVE_ONE = 65, // "-1 (int)"
+ S_INT_ONE = 66, // "1 (int)"
+ S_INT_ZERO = 67, // "zero (int)"
+ S_LITERAL = 68, // LITERAL
+ S_LN = 69, // LN
+ S_LOG = 70, // LOG
+ S_LOGTEN = 71, // LOGTEN
+ S_LONG_NEGATIVE_ONE = 72, // "-1 (long)"
+ S_LONG_ONE = 73, // "1 (long)"
+ S_LONG_ZERO = 74, // "zero (long)"
+ S_LT = 75, // LT
+ S_LTE = 76, // LTE
+ S_LTRIM = 77, // LTRIM
+ S_META = 78, // META
+ S_MOD = 79, // MOD
+ S_MULTIPLY = 80, // MULTIPLY
+ S_NE = 81, // NE
+ S_NOR = 82, // NOR
+ S_NOT = 83, // NOT
+ S_OR = 84, // OR
+ S_POW = 85, // POW
+ S_RADIANS_TO_DEGREES = 86, // RADIANS_TO_DEGREES
+ S_RAND_VAL = 87, // "randVal"
+ S_RECORD_ID = 88, // "recordId"
+ S_REGEX_FIND = 89, // REGEX_FIND
+ S_REGEX_FIND_ALL = 90, // REGEX_FIND_ALL
+ S_REGEX_MATCH = 91, // REGEX_MATCH
+ S_REPLACE_ALL = 92, // REPLACE_ALL
+ S_REPLACE_ONE = 93, // REPLACE_ONE
+ S_ROUND = 94, // ROUND
+ S_RTRIM = 95, // RTRIM
+ S_SEARCH_HIGHLIGHTS = 96, // "searchHighlights"
+ S_SEARCH_SCORE = 97, // "searchScore"
+ S_SET_DIFFERENCE = 98, // "setDifference"
+ S_SET_EQUALS = 99, // "setEquals"
+ S_SET_INTERSECTION = 100, // "setIntersection"
+ S_SET_IS_SUBSET = 101, // "setIsSubset"
+ S_SET_UNION = 102, // "setUnion"
+ S_SLICE = 103, // "slice"
+ S_SORT_KEY = 104, // "sortKey"
+ S_SIN = 105, // SIN
+ S_SINH = 106, // SINH
+ S_SPLIT = 107, // SPLIT
+ S_SQRT = 108, // SQRT
+ S_STAGE_INHIBIT_OPTIMIZATION = 109, // STAGE_INHIBIT_OPTIMIZATION
+ S_STAGE_LIMIT = 110, // STAGE_LIMIT
+ S_STAGE_PROJECT = 111, // STAGE_PROJECT
+ S_STAGE_SAMPLE = 112, // STAGE_SAMPLE
+ S_STAGE_SKIP = 113, // STAGE_SKIP
+ S_STAGE_UNION_WITH = 114, // STAGE_UNION_WITH
+ S_START_ARRAY = 115, // "array"
+ S_START_OBJECT = 116, // "object"
+ S_STR_CASE_CMP = 117, // STR_CASE_CMP
+ S_STR_LEN_BYTES = 118, // STR_LEN_BYTES
+ S_STR_LEN_CP = 119, // STR_LEN_CP
+ S_SUBSTR = 120, // SUBSTR
+ S_SUBSTR_BYTES = 121, // SUBSTR_BYTES
+ S_SUBSTR_CP = 122, // SUBSTR_CP
+ S_SUBTRACT = 123, // SUBTRACT
+ S_TAN = 124, // TAN
+ S_TANH = 125, // TANH
+ S_TEXT_SCORE = 126, // "textScore"
+ S_TO_BOOL = 127, // TO_BOOL
+ S_TO_DATE = 128, // TO_DATE
+ S_TO_DECIMAL = 129, // TO_DECIMAL
+ S_TO_DOUBLE = 130, // TO_DOUBLE
+ S_TO_INT = 131, // TO_INT
+ S_TO_LONG = 132, // TO_LONG
+ S_TO_LOWER = 133, // TO_LOWER
+ S_TO_OBJECT_ID = 134, // TO_OBJECT_ID
+ S_TO_STRING = 135, // TO_STRING
+ S_TO_UPPER = 136, // TO_UPPER
+ S_TRIM = 137, // TRIM
+ S_TRUNC = 138, // TRUNC
+ S_TYPE = 139, // TYPE
+ S_FIELDNAME = 140, // "fieldname"
+ S_DOTTED_FIELDNAME = 141, // "fieldname containing dotted path"
+ S_DOLLAR_PREF_FIELDNAME = 142, // "$-prefixed fieldname"
+ S_STRING = 143, // "string"
+ S_DOLLAR_STRING = 144, // "$-prefixed string"
+ S_DOLLAR_DOLLAR_STRING = 145, // "$$-prefixed string"
+ S_BINARY = 146, // "BinData"
+ S_UNDEFINED = 147, // "undefined"
+ S_OBJECT_ID = 148, // "ObjectID"
+ S_DATE_LITERAL = 149, // "Date"
+ S_JSNULL = 150, // "null"
+ S_REGEX = 151, // "regex"
+ S_DB_POINTER = 152, // "dbPointer"
+ S_JAVASCRIPT = 153, // "Code"
+ S_SYMBOL = 154, // "Symbol"
+ S_JAVASCRIPT_W_SCOPE = 155, // "CodeWScope"
+ S_INT_OTHER = 156, // "arbitrary integer"
+ S_LONG_OTHER = 157, // "arbitrary long"
+ S_DOUBLE_OTHER = 158, // "arbitrary double"
+ S_DECIMAL_OTHER = 159, // "arbitrary decimal"
+ S_TIMESTAMP = 160, // "Timestamp"
+ S_MIN_KEY = 161, // "minKey"
+ S_MAX_KEY = 162, // "maxKey"
+ S_START_PIPELINE = 163, // START_PIPELINE
+ S_START_MATCH = 164, // START_MATCH
+ S_START_SORT = 165, // START_SORT
+ S_YYACCEPT = 166, // $accept
+ S_aggregationProjectionFieldname = 167, // aggregationProjectionFieldname
+ S_projectionFieldname = 168, // projectionFieldname
+ S_expressionFieldname = 169, // expressionFieldname
+ S_stageAsUserFieldname = 170, // stageAsUserFieldname
+ S_argAsUserFieldname = 171, // argAsUserFieldname
+ S_argAsProjectionPath = 172, // argAsProjectionPath
+ S_aggExprAsUserFieldname = 173, // aggExprAsUserFieldname
+ S_invariableUserFieldname = 174, // invariableUserFieldname
+ S_sortFieldname = 175, // sortFieldname
+ S_idAsUserFieldname = 176, // idAsUserFieldname
+ S_idAsProjectionPath = 177, // idAsProjectionPath
+ S_valueFieldname = 178, // valueFieldname
+ S_predFieldname = 179, // predFieldname
+ S_projectField = 180, // projectField
+ S_projectionObjectField = 181, // projectionObjectField
+ S_expressionField = 182, // expressionField
+ S_valueField = 183, // valueField
+ S_arg = 184, // arg
+ S_dbPointer = 185, // dbPointer
+ S_javascript = 186, // javascript
+ S_symbol = 187, // symbol
+ S_javascriptWScope = 188, // javascriptWScope
+ S_int = 189, // int
+ S_timestamp = 190, // timestamp
+ S_long = 191, // long
+ S_double = 192, // double
+ S_decimal = 193, // decimal
+ S_minKey = 194, // minKey
+ S_maxKey = 195, // maxKey
+ S_value = 196, // value
+ S_string = 197, // string
+ S_aggregationFieldPath = 198, // aggregationFieldPath
+ S_binary = 199, // binary
+ S_undefined = 200, // undefined
+ S_objectId = 201, // objectId
+ S_bool = 202, // bool
+ S_date = 203, // date
+ S_null = 204, // null
+ S_regex = 205, // regex
+ S_simpleValue = 206, // simpleValue
+ S_compoundValue = 207, // compoundValue
+ S_valueArray = 208, // valueArray
+ S_valueObject = 209, // valueObject
+ S_valueFields = 210, // valueFields
+ S_variable = 211, // variable
+ S_typeArray = 212, // typeArray
+ S_typeValue = 213, // typeValue
+ S_pipeline = 214, // pipeline
+ S_stageList = 215, // stageList
+ S_stage = 216, // stage
+ S_inhibitOptimization = 217, // inhibitOptimization
+ S_unionWith = 218, // unionWith
+ S_skip = 219, // skip
+ S_limit = 220, // limit
+ S_project = 221, // project
+ S_sample = 222, // sample
+ S_projectFields = 223, // projectFields
+ S_projectionObjectFields = 224, // projectionObjectFields
+ S_topLevelProjection = 225, // topLevelProjection
+ S_projection = 226, // projection
+ S_projectionObject = 227, // projectionObject
+ S_num = 228, // num
+ S_expression = 229, // expression
+ S_compoundNonObjectExpression = 230, // compoundNonObjectExpression
+ S_exprFixedTwoArg = 231, // exprFixedTwoArg
+ S_exprFixedThreeArg = 232, // exprFixedThreeArg
+ S_arrayManipulation = 233, // arrayManipulation
+ S_slice = 234, // slice
+ S_expressionArray = 235, // expressionArray
+ S_expressionObject = 236, // expressionObject
+ S_expressionFields = 237, // expressionFields
+ S_maths = 238, // maths
+ S_meta = 239, // meta
+ S_add = 240, // add
+ S_boolExprs = 241, // boolExprs
+ S_and = 242, // and
+ S_or = 243, // or
+ S_not = 244, // not
+ S_literalEscapes = 245, // literalEscapes
+ S_const = 246, // const
+ S_literal = 247, // literal
+ S_stringExps = 248, // stringExps
+ S_concat = 249, // concat
+ S_dateFromString = 250, // dateFromString
+ S_dateToString = 251, // dateToString
+ S_indexOfBytes = 252, // indexOfBytes
+ S_indexOfCP = 253, // indexOfCP
+ S_ltrim = 254, // ltrim
+ S_regexFind = 255, // regexFind
+ S_regexFindAll = 256, // regexFindAll
+ S_regexMatch = 257, // regexMatch
+ S_regexArgs = 258, // regexArgs
+ S_replaceOne = 259, // replaceOne
+ S_replaceAll = 260, // replaceAll
+ S_rtrim = 261, // rtrim
+ S_split = 262, // split
+ S_strLenBytes = 263, // strLenBytes
+ S_strLenCP = 264, // strLenCP
+ S_strcasecmp = 265, // strcasecmp
+ S_substr = 266, // substr
+ S_substrBytes = 267, // substrBytes
+ S_substrCP = 268, // substrCP
+ S_toLower = 269, // toLower
+ S_toUpper = 270, // toUpper
+ S_trim = 271, // trim
+ S_compExprs = 272, // compExprs
+ S_cmp = 273, // cmp
+ S_eq = 274, // eq
+ S_gt = 275, // gt
+ S_gte = 276, // gte
+ S_lt = 277, // lt
+ S_lte = 278, // lte
+ S_ne = 279, // ne
+ S_typeExpression = 280, // typeExpression
+ S_convert = 281, // convert
+ S_toBool = 282, // toBool
+ S_toDate = 283, // toDate
+ S_toDecimal = 284, // toDecimal
+ S_toDouble = 285, // toDouble
+ S_toInt = 286, // toInt
+ S_toLong = 287, // toLong
+ S_toObjectId = 288, // toObjectId
+ S_toString = 289, // toString
+ S_type = 290, // type
+ S_abs = 291, // abs
+ S_ceil = 292, // ceil
+ S_divide = 293, // divide
+ S_exponent = 294, // exponent
+ S_floor = 295, // floor
+ S_ln = 296, // ln
+ S_log = 297, // log
+ S_logten = 298, // logten
+ S_mod = 299, // mod
+ S_multiply = 300, // multiply
+ S_pow = 301, // pow
+ S_round = 302, // round
+ S_sqrt = 303, // sqrt
+ S_subtract = 304, // subtract
+ S_trunc = 305, // trunc
+ S_onErrorArg = 306, // onErrorArg
+ S_onNullArg = 307, // onNullArg
+ S_formatArg = 308, // formatArg
+ S_timezoneArg = 309, // timezoneArg
+ S_charsArg = 310, // charsArg
+ S_optionsArg = 311, // optionsArg
+ S_expressions = 312, // expressions
+ S_values = 313, // values
+ S_exprZeroToTwo = 314, // exprZeroToTwo
+ S_setExpression = 315, // setExpression
+ S_allElementsTrue = 316, // allElementsTrue
+ S_anyElementTrue = 317, // anyElementTrue
+ S_setDifference = 318, // setDifference
+ S_setEquals = 319, // setEquals
+ S_setIntersection = 320, // setIntersection
+ S_setIsSubset = 321, // setIsSubset
+ S_setUnion = 322, // setUnion
+ S_trig = 323, // trig
+ S_sin = 324, // sin
+ S_cos = 325, // cos
+ S_tan = 326, // tan
+ S_sinh = 327, // sinh
+ S_cosh = 328, // cosh
+ S_tanh = 329, // tanh
+ S_asin = 330, // asin
+ S_acos = 331, // acos
+ S_atan = 332, // atan
+ S_asinh = 333, // asinh
+ S_acosh = 334, // acosh
+ S_atanh = 335, // atanh
+ S_atan2 = 336, // atan2
+ S_degreesToRadians = 337, // degreesToRadians
+ S_radiansToDegrees = 338, // radiansToDegrees
+ S_nonArrayExpression = 339, // nonArrayExpression
+ S_nonArrayCompoundExpression = 340, // nonArrayCompoundExpression
+ S_nonArrayNonObjCompoundExpression = 341, // nonArrayNonObjCompoundExpression
+ S_expressionSingletonArray = 342, // expressionSingletonArray
+ S_singleArgExpression = 343, // singleArgExpression
+ S_match = 344, // match
+ S_predicates = 345, // predicates
+ S_compoundMatchExprs = 346, // compoundMatchExprs
+ S_predValue = 347, // predValue
+ S_additionalExprs = 348, // additionalExprs
+ S_predicate = 349, // predicate
+ S_logicalExpr = 350, // logicalExpr
+ S_operatorExpression = 351, // operatorExpression
+ S_notExpr = 352, // notExpr
+ S_existsExpr = 353, // existsExpr
+ S_typeExpr = 354, // typeExpr
+ S_commentExpr = 355, // commentExpr
+ S_logicalExprField = 356, // logicalExprField
+ S_typeValues = 357, // typeValues
+ S_sortSpecs = 358, // sortSpecs
+ S_specList = 359, // specList
+ S_metaSort = 360, // metaSort
+ S_oneOrNegOne = 361, // oneOrNegOne
+ S_metaSortKeyword = 362, // metaSortKeyword
+ S_sortSpec = 363, // sortSpec
+ S_start = 364, // start
+ S_START_ORDERED_OBJECT = 365, // START_ORDERED_OBJECT
+ S_366_1 = 366 // $@1
};
};
@@ -1282,6 +1298,8 @@ public:
case symbol_kind::S_valueObject: // valueObject
case symbol_kind::S_valueFields: // valueFields
case symbol_kind::S_variable: // variable
+ case symbol_kind::S_typeArray: // typeArray
+ case symbol_kind::S_typeValue: // typeValue
case symbol_kind::S_pipeline: // pipeline
case symbol_kind::S_stageList: // stageList
case symbol_kind::S_stage: // stage
@@ -1493,6 +1511,9 @@ public:
case symbol_kind::S_logicalExpr: // logicalExpr
case symbol_kind::S_operatorExpression: // operatorExpression
case symbol_kind::S_notExpr: // notExpr
+ case symbol_kind::S_existsExpr: // existsExpr
+ case symbol_kind::S_typeExpr: // typeExpr
+ case symbol_kind::S_commentExpr: // commentExpr
case symbol_kind::S_sortSpec: // sortSpec
value.move<std::pair<CNode::Fieldname, CNode>>(std::move(that.value));
break;
@@ -1509,6 +1530,7 @@ public:
case symbol_kind::S_expressions: // expressions
case symbol_kind::S_values: // values
case symbol_kind::S_exprZeroToTwo: // exprZeroToTwo
+ case symbol_kind::S_typeValues: // typeValues
value.move<std::vector<CNode>>(std::move(that.value));
break;
@@ -1771,6 +1793,8 @@ public:
case symbol_kind::S_valueObject: // valueObject
case symbol_kind::S_valueFields: // valueFields
case symbol_kind::S_variable: // variable
+ case symbol_kind::S_typeArray: // typeArray
+ case symbol_kind::S_typeValue: // typeValue
case symbol_kind::S_pipeline: // pipeline
case symbol_kind::S_stageList: // stageList
case symbol_kind::S_stage: // stage
@@ -1982,6 +2006,9 @@ public:
case symbol_kind::S_logicalExpr: // logicalExpr
case symbol_kind::S_operatorExpression: // operatorExpression
case symbol_kind::S_notExpr: // notExpr
+ case symbol_kind::S_existsExpr: // existsExpr
+ case symbol_kind::S_typeExpr: // typeExpr
+ case symbol_kind::S_commentExpr: // commentExpr
case symbol_kind::S_sortSpec: // sortSpec
value.template destroy<std::pair<CNode::Fieldname, CNode>>();
break;
@@ -1998,6 +2025,7 @@ public:
case symbol_kind::S_expressions: // expressions
case symbol_kind::S_values: // values
case symbol_kind::S_exprZeroToTwo: // exprZeroToTwo
+ case symbol_kind::S_typeValues: // typeValues
value.template destroy<std::vector<CNode>>();
break;
@@ -2103,18 +2131,18 @@ public:
tok == token::ARG_SIZE || tok == token::ARG_TIMEZONE || tok == token::ARG_TO ||
tok == token::ASIN || tok == token::ASINH || tok == token::ATAN ||
tok == token::ATAN2 || tok == token::ATANH || tok == token::BOOL_FALSE ||
- tok == token::BOOL_TRUE || tok == token::CEIL || tok == token::CMP ||
- tok == token::CONCAT || tok == token::CONST_EXPR || tok == token::CONVERT ||
- tok == token::COS || tok == token::COSH || tok == token::DATE_FROM_STRING ||
- tok == token::DATE_TO_STRING || tok == token::DECIMAL_NEGATIVE_ONE ||
- tok == token::DECIMAL_ONE || tok == token::DECIMAL_ZERO ||
- tok == token::DEGREES_TO_RADIANS || tok == token::DIVIDE ||
- tok == token::DOUBLE_NEGATIVE_ONE || tok == token::DOUBLE_ONE ||
- tok == token::DOUBLE_ZERO || tok == token::END_ARRAY || tok == token::END_OBJECT ||
- tok == token::EQ || tok == token::EXPONENT || tok == token::FLOOR ||
- tok == token::GEO_NEAR_DISTANCE || tok == token::GEO_NEAR_POINT ||
- tok == token::GT || tok == token::GTE || tok == token::ID ||
- tok == token::INDEX_OF_BYTES || tok == token::INDEX_OF_CP ||
+ tok == token::BOOL_TRUE || tok == token::CEIL || tok == token::COMMENT ||
+ tok == token::CMP || tok == token::CONCAT || tok == token::CONST_EXPR ||
+ tok == token::CONVERT || tok == token::COS || tok == token::COSH ||
+ tok == token::DATE_FROM_STRING || tok == token::DATE_TO_STRING ||
+ tok == token::DECIMAL_NEGATIVE_ONE || tok == token::DECIMAL_ONE ||
+ tok == token::DECIMAL_ZERO || tok == token::DEGREES_TO_RADIANS ||
+ tok == token::DIVIDE || tok == token::DOUBLE_NEGATIVE_ONE ||
+ tok == token::DOUBLE_ONE || tok == token::DOUBLE_ZERO || tok == token::END_ARRAY ||
+ tok == token::END_OBJECT || tok == token::EQ || tok == token::EXISTS ||
+ tok == token::EXPONENT || tok == token::FLOOR || tok == token::GEO_NEAR_DISTANCE ||
+ tok == token::GEO_NEAR_POINT || tok == token::GT || tok == token::GTE ||
+ tok == token::ID || tok == token::INDEX_OF_BYTES || tok == token::INDEX_OF_CP ||
tok == token::INDEX_KEY || tok == token::INT_NEGATIVE_ONE ||
tok == token::INT_ONE || tok == token::INT_ZERO || tok == token::LITERAL ||
tok == token::LN || tok == token::LOG || tok == token::LOGTEN ||
@@ -2163,18 +2191,18 @@ public:
tok == token::ARG_SIZE || tok == token::ARG_TIMEZONE || tok == token::ARG_TO ||
tok == token::ASIN || tok == token::ASINH || tok == token::ATAN ||
tok == token::ATAN2 || tok == token::ATANH || tok == token::BOOL_FALSE ||
- tok == token::BOOL_TRUE || tok == token::CEIL || tok == token::CMP ||
- tok == token::CONCAT || tok == token::CONST_EXPR || tok == token::CONVERT ||
- tok == token::COS || tok == token::COSH || tok == token::DATE_FROM_STRING ||
- tok == token::DATE_TO_STRING || tok == token::DECIMAL_NEGATIVE_ONE ||
- tok == token::DECIMAL_ONE || tok == token::DECIMAL_ZERO ||
- tok == token::DEGREES_TO_RADIANS || tok == token::DIVIDE ||
- tok == token::DOUBLE_NEGATIVE_ONE || tok == token::DOUBLE_ONE ||
- tok == token::DOUBLE_ZERO || tok == token::END_ARRAY || tok == token::END_OBJECT ||
- tok == token::EQ || tok == token::EXPONENT || tok == token::FLOOR ||
- tok == token::GEO_NEAR_DISTANCE || tok == token::GEO_NEAR_POINT ||
- tok == token::GT || tok == token::GTE || tok == token::ID ||
- tok == token::INDEX_OF_BYTES || tok == token::INDEX_OF_CP ||
+ tok == token::BOOL_TRUE || tok == token::CEIL || tok == token::COMMENT ||
+ tok == token::CMP || tok == token::CONCAT || tok == token::CONST_EXPR ||
+ tok == token::CONVERT || tok == token::COS || tok == token::COSH ||
+ tok == token::DATE_FROM_STRING || tok == token::DATE_TO_STRING ||
+ tok == token::DECIMAL_NEGATIVE_ONE || tok == token::DECIMAL_ONE ||
+ tok == token::DECIMAL_ZERO || tok == token::DEGREES_TO_RADIANS ||
+ tok == token::DIVIDE || tok == token::DOUBLE_NEGATIVE_ONE ||
+ tok == token::DOUBLE_ONE || tok == token::DOUBLE_ZERO || tok == token::END_ARRAY ||
+ tok == token::END_OBJECT || tok == token::EQ || tok == token::EXISTS ||
+ tok == token::EXPONENT || tok == token::FLOOR || tok == token::GEO_NEAR_DISTANCE ||
+ tok == token::GEO_NEAR_POINT || tok == token::GT || tok == token::GTE ||
+ tok == token::ID || tok == token::INDEX_OF_BYTES || tok == token::INDEX_OF_CP ||
tok == token::INDEX_KEY || tok == token::INT_NEGATIVE_ONE ||
tok == token::INT_ONE || tok == token::INT_ZERO || tok == token::LITERAL ||
tok == token::LN || tok == token::LOG || tok == token::LOGTEN ||
@@ -2777,6 +2805,15 @@ public:
}
#endif
#if 201103L <= YY_CPLUSPLUS
+ static symbol_type make_COMMENT(location_type l) {
+ return symbol_type(token::COMMENT, std::move(l));
+ }
+#else
+ static symbol_type make_COMMENT(const location_type& l) {
+ return symbol_type(token::COMMENT, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
static symbol_type make_CMP(location_type l) {
return symbol_type(token::CMP, std::move(l));
}
@@ -2948,6 +2985,15 @@ public:
}
#endif
#if 201103L <= YY_CPLUSPLUS
+ static symbol_type make_EXISTS(location_type l) {
+ return symbol_type(token::EXISTS, std::move(l));
+ }
+#else
+ static symbol_type make_EXISTS(const location_type& l) {
+ return symbol_type(token::EXISTS, l);
+ }
+#endif
+#if 201103L <= YY_CPLUSPLUS
static symbol_type make_EXPONENT(location_type l) {
return symbol_type(token::EXPONENT, std::move(l));
}
@@ -4255,8 +4301,8 @@ private:
/// Constants.
enum {
- yylast_ = 3010, ///< Last index in yytable_.
- yynnts_ = 195, ///< Number of nonterminal symbols.
+ yylast_ = 3340, ///< Last index in yytable_.
+ yynnts_ = 201, ///< Number of nonterminal symbols.
yyfinal_ = 11 ///< Termination state number.
};
@@ -4326,6 +4372,8 @@ ParserGen::basic_symbol<Base>::basic_symbol(const basic_symbol& that)
case symbol_kind::S_valueObject: // valueObject
case symbol_kind::S_valueFields: // valueFields
case symbol_kind::S_variable: // variable
+ case symbol_kind::S_typeArray: // typeArray
+ case symbol_kind::S_typeValue: // typeValue
case symbol_kind::S_pipeline: // pipeline
case symbol_kind::S_stageList: // stageList
case symbol_kind::S_stage: // stage
@@ -4535,6 +4583,9 @@ ParserGen::basic_symbol<Base>::basic_symbol(const basic_symbol& that)
case symbol_kind::S_logicalExpr: // logicalExpr
case symbol_kind::S_operatorExpression: // operatorExpression
case symbol_kind::S_notExpr: // notExpr
+ case symbol_kind::S_existsExpr: // existsExpr
+ case symbol_kind::S_typeExpr: // typeExpr
+ case symbol_kind::S_commentExpr: // commentExpr
case symbol_kind::S_sortSpec: // sortSpec
value.copy<std::pair<CNode::Fieldname, CNode>>(YY_MOVE(that.value));
break;
@@ -4551,6 +4602,7 @@ ParserGen::basic_symbol<Base>::basic_symbol(const basic_symbol& that)
case symbol_kind::S_expressions: // expressions
case symbol_kind::S_values: // values
case symbol_kind::S_exprZeroToTwo: // exprZeroToTwo
+ case symbol_kind::S_typeValues: // typeValues
value.copy<std::vector<CNode>>(YY_MOVE(that.value));
break;
@@ -4629,6 +4681,8 @@ void ParserGen::basic_symbol<Base>::move(basic_symbol& s) {
case symbol_kind::S_valueObject: // valueObject
case symbol_kind::S_valueFields: // valueFields
case symbol_kind::S_variable: // variable
+ case symbol_kind::S_typeArray: // typeArray
+ case symbol_kind::S_typeValue: // typeValue
case symbol_kind::S_pipeline: // pipeline
case symbol_kind::S_stageList: // stageList
case symbol_kind::S_stage: // stage
@@ -4838,6 +4892,9 @@ void ParserGen::basic_symbol<Base>::move(basic_symbol& s) {
case symbol_kind::S_logicalExpr: // logicalExpr
case symbol_kind::S_operatorExpression: // operatorExpression
case symbol_kind::S_notExpr: // notExpr
+ case symbol_kind::S_existsExpr: // existsExpr
+ case symbol_kind::S_typeExpr: // typeExpr
+ case symbol_kind::S_commentExpr: // commentExpr
case symbol_kind::S_sortSpec: // sortSpec
value.move<std::pair<CNode::Fieldname, CNode>>(YY_MOVE(s.value));
break;
@@ -4854,6 +4911,7 @@ void ParserGen::basic_symbol<Base>::move(basic_symbol& s) {
case symbol_kind::S_expressions: // expressions
case symbol_kind::S_values: // values
case symbol_kind::S_exprZeroToTwo: // exprZeroToTwo
+ case symbol_kind::S_typeValues: // typeValues
value.move<std::vector<CNode>>(YY_MOVE(s.value));
break;
@@ -4898,9 +4956,9 @@ inline ParserGen::symbol_kind_type ParserGen::by_kind::type_get() const YY_NOEXC
return this->kind();
}
-#line 57 "src/mongo/db/cst/grammar.yy"
+#line 57 "grammar.yy"
} // namespace mongo
-#line 6077 "src/mongo/db/cst/parser_gen.hpp"
+#line 6147 "parser_gen.hpp"
-#endif // !YY_YY_SRC_MONGO_DB_CST_PARSER_GEN_HPP_INCLUDED
+#endif // !YY_YY_PARSER_GEN_HPP_INCLUDED