diff options
Diffstat (limited to 'src/mongo/db/cst/pipeline_parser_gen.cpp')
-rw-r--r-- | src/mongo/db/cst/pipeline_parser_gen.cpp | 3048 |
1 files changed, 1793 insertions, 1255 deletions
diff --git a/src/mongo/db/cst/pipeline_parser_gen.cpp b/src/mongo/db/cst/pipeline_parser_gen.cpp index 8d13065b8ee..6b78e3bc2e2 100644 --- a/src/mongo/db/cst/pipeline_parser_gen.cpp +++ b/src/mongo/db/cst/pipeline_parser_gen.cpp @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.6. +// A Bison parser, made by GNU Bison 3.6.3. // Skeleton implementation for Bison LALR(1) parsers in C++ @@ -39,7 +39,7 @@ // Unqualified %code blocks. -#line 83 "src/mongo/db/cst/pipeline_grammar.yy" +#line 83 "pipeline_grammar.yy" #include "mongo/db/cst/bson_lexer.h" #include "mongo/platform/decimal128.h" @@ -54,7 +54,7 @@ void PipelineParserGen::error(const PipelineParserGen::location_type& loc, const } } // namespace mongo -#line 63 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 63 "pipeline_parser_gen.cpp" #ifndef YY_ @@ -145,16 +145,9 @@ void PipelineParserGen::error(const PipelineParserGen::location_type& loc, const #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus_) -#line 58 "src/mongo/db/cst/pipeline_grammar.yy" +#line 58 "pipeline_grammar.yy" namespace mongo { -#line 156 "src/mongo/db/cst/pipeline_parser_gen.cpp" - -#if YYDEBUG || 0 -const char* PipelineParserGen::symbol_name(symbol_kind_type yysymbol) { - return yytname_[yysymbol]; -} -#endif // #if YYDEBUG || 0 - +#line 156 "pipeline_parser_gen.cpp" /// Build a parser object. PipelineParserGen::PipelineParserGen(BSONLexer& lexer_yyarg, CNode* cst_yyarg) @@ -205,175 +198,190 @@ PipelineParserGen::stack_symbol_type::stack_symbol_type() {} PipelineParserGen::stack_symbol_type::stack_symbol_type(YY_RVREF(stack_symbol_type) that) : super_type(YY_MOVE(that.state), YY_MOVE(that.location)) { switch (that.kind()) { - case 53: // BINARY + case 68: // BINARY value.YY_MOVE_OR_COPY<BSONBinData>(YY_MOVE(that.value)); break; - case 60: // JAVASCRIPT + case 75: // JAVASCRIPT value.YY_MOVE_OR_COPY<BSONCode>(YY_MOVE(that.value)); break; - case 62: // JAVASCRIPT_W_SCOPE + case 77: // JAVASCRIPT_W_SCOPE value.YY_MOVE_OR_COPY<BSONCodeWScope>(YY_MOVE(that.value)); break; - case 59: // DB_POINTER + case 74: // DB_POINTER value.YY_MOVE_OR_COPY<BSONDBRef>(YY_MOVE(that.value)); break; - case 58: // REGEX + case 73: // REGEX value.YY_MOVE_OR_COPY<BSONRegEx>(YY_MOVE(that.value)); break; - case 61: // SYMBOL + case 76: // SYMBOL value.YY_MOVE_OR_COPY<BSONSymbol>(YY_MOVE(that.value)); break; - case 82: // dbPointer - case 83: // javascript - case 84: // symbol - case 85: // javascriptWScope - case 86: // int - case 87: // timestamp - case 88: // long - case 89: // double - case 90: // decimal - case 91: // minKey - case 92: // maxKey - case 93: // value - case 94: // string - case 95: // binary - case 96: // undefined - case 97: // objectId - case 98: // bool - case 99: // date - case 100: // null - case 101: // regex - case 102: // simpleValue - case 103: // compoundValue - case 104: // valueArray - case 105: // valueObject - case 106: // valueFields - case 107: // stageList - case 108: // stage - case 109: // inhibitOptimization - case 110: // unionWith - case 111: // skip - case 112: // limit - case 113: // project - case 114: // sample - case 115: // projectFields - case 116: // projection - case 117: // num - case 118: // expression - case 119: // compoundExpression - case 120: // exprFixedTwoArg - case 121: // expressionArray - case 122: // expressionObject - case 123: // expressionFields - case 124: // maths - case 125: // add - case 126: // atan2 - case 127: // boolExps - case 128: // and - case 129: // or - case 130: // not - case 131: // literalEscapes - case 132: // const - case 133: // literal - case 134: // compExprs - case 135: // cmp - case 136: // eq - case 137: // gt - case 138: // gte - case 139: // lt - case 140: // lte - case 141: // ne - case 142: // typeExpression - case 143: // typeValue - case 144: // convert - case 145: // toBool - case 146: // toDate - case 147: // toDecimal - case 148: // toDouble - case 149: // toInt - case 150: // toLong - case 151: // toObjectId - case 152: // toString - case 153: // type + case 97: // dbPointer + case 98: // javascript + case 99: // symbol + case 100: // javascriptWScope + case 101: // int + case 102: // timestamp + case 103: // long + case 104: // double + case 105: // decimal + case 106: // minKey + case 107: // maxKey + case 108: // value + case 109: // string + case 110: // binary + case 111: // undefined + case 112: // objectId + case 113: // bool + case 114: // date + case 115: // null + case 116: // regex + case 117: // simpleValue + case 118: // compoundValue + case 119: // valueArray + case 120: // valueObject + case 121: // valueFields + case 122: // stageList + case 123: // stage + case 124: // inhibitOptimization + case 125: // unionWith + case 126: // skip + case 127: // limit + case 128: // project + case 129: // sample + case 130: // projectFields + case 131: // projection + case 132: // num + case 133: // expression + case 134: // compoundExpression + case 135: // exprFixedTwoArg + case 136: // expressionArray + case 137: // expressionObject + case 138: // expressionFields + case 139: // maths + case 140: // add + case 141: // atan2 + case 142: // boolExps + case 143: // and + case 144: // or + case 145: // not + case 146: // literalEscapes + case 147: // const + case 148: // literal + case 149: // compExprs + case 150: // cmp + case 151: // eq + case 152: // gt + case 153: // gte + case 154: // lt + case 155: // lte + case 156: // ne + case 157: // typeExpression + case 158: // typeValue + case 159: // convert + case 160: // toBool + case 161: // toDate + case 162: // toDecimal + case 163: // toDouble + case 164: // toInt + case 165: // toLong + case 166: // toObjectId + case 167: // toString + case 168: // type + case 169: // abs + case 170: // ceil + case 171: // divide + case 172: // exponent + case 173: // floor + case 174: // ln + case 175: // log + case 176: // logten + case 177: // mod + case 178: // multiply + case 179: // pow + case 180: // round + case 181: // sqrt + case 182: // subtract + case 183: // trunc value.YY_MOVE_OR_COPY<CNode>(YY_MOVE(that.value)); break; - case 71: // projectionFieldname - case 72: // expressionFieldname - case 73: // stageAsUserFieldname - case 74: // argAsUserFieldname - case 75: // aggExprAsUserFieldname - case 76: // invariableUserFieldname - case 77: // idAsUserFieldname - case 78: // valueFieldname + case 86: // projectionFieldname + case 87: // expressionFieldname + case 88: // stageAsUserFieldname + case 89: // argAsUserFieldname + case 90: // aggExprAsUserFieldname + case 91: // invariableUserFieldname + case 92: // idAsUserFieldname + case 93: // valueFieldname value.YY_MOVE_OR_COPY<CNode::Fieldname>(YY_MOVE(that.value)); break; - case 56: // DATE_LITERAL + case 71: // DATE_LITERAL value.YY_MOVE_OR_COPY<Date_t>(YY_MOVE(that.value)); break; - case 67: // DECIMAL_NON_ZERO + case 82: // DECIMAL_NON_ZERO value.YY_MOVE_OR_COPY<Decimal128>(YY_MOVE(that.value)); break; - case 55: // OBJECT_ID + case 70: // OBJECT_ID value.YY_MOVE_OR_COPY<OID>(YY_MOVE(that.value)); break; - case 64: // TIMESTAMP + case 79: // TIMESTAMP value.YY_MOVE_OR_COPY<Timestamp>(YY_MOVE(that.value)); break; - case 69: // MAX_KEY + case 84: // MAX_KEY value.YY_MOVE_OR_COPY<UserMaxKey>(YY_MOVE(that.value)); break; - case 68: // MIN_KEY + case 83: // MIN_KEY value.YY_MOVE_OR_COPY<UserMinKey>(YY_MOVE(that.value)); break; - case 57: // JSNULL + case 72: // JSNULL value.YY_MOVE_OR_COPY<UserNull>(YY_MOVE(that.value)); break; - case 54: // UNDEFINED + case 69: // UNDEFINED value.YY_MOVE_OR_COPY<UserUndefined>(YY_MOVE(that.value)); break; - case 66: // DOUBLE_NON_ZERO + case 81: // DOUBLE_NON_ZERO value.YY_MOVE_OR_COPY<double>(YY_MOVE(that.value)); break; - case 63: // INT_NON_ZERO + case 78: // INT_NON_ZERO value.YY_MOVE_OR_COPY<int>(YY_MOVE(that.value)); break; - case 65: // LONG_NON_ZERO + case 80: // LONG_NON_ZERO value.YY_MOVE_OR_COPY<long long>(YY_MOVE(that.value)); break; - case 79: // projectField - case 80: // expressionField - case 81: // valueField - case 154: // onErrorArg - case 155: // onNullArg + case 94: // projectField + case 95: // expressionField + case 96: // valueField + case 184: // onErrorArg + case 185: // onNullArg value.YY_MOVE_OR_COPY<std::pair<CNode::Fieldname, CNode>>(YY_MOVE(that.value)); break; - case 51: // FIELDNAME - case 52: // STRING + case 66: // FIELDNAME + case 67: // STRING value.YY_MOVE_OR_COPY<std::string>(YY_MOVE(that.value)); break; - case 156: // expressions - case 157: // values + case 186: // expressions + case 187: // values value.YY_MOVE_OR_COPY<std::vector<CNode>>(YY_MOVE(that.value)); break; @@ -390,175 +398,190 @@ PipelineParserGen::stack_symbol_type::stack_symbol_type(YY_RVREF(stack_symbol_ty PipelineParserGen::stack_symbol_type::stack_symbol_type(state_type s, YY_MOVE_REF(symbol_type) that) : super_type(s, YY_MOVE(that.location)) { switch (that.kind()) { - case 53: // BINARY + case 68: // BINARY value.move<BSONBinData>(YY_MOVE(that.value)); break; - case 60: // JAVASCRIPT + case 75: // JAVASCRIPT value.move<BSONCode>(YY_MOVE(that.value)); break; - case 62: // JAVASCRIPT_W_SCOPE + case 77: // JAVASCRIPT_W_SCOPE value.move<BSONCodeWScope>(YY_MOVE(that.value)); break; - case 59: // DB_POINTER + case 74: // DB_POINTER value.move<BSONDBRef>(YY_MOVE(that.value)); break; - case 58: // REGEX + case 73: // REGEX value.move<BSONRegEx>(YY_MOVE(that.value)); break; - case 61: // SYMBOL + case 76: // SYMBOL value.move<BSONSymbol>(YY_MOVE(that.value)); break; - case 82: // dbPointer - case 83: // javascript - case 84: // symbol - case 85: // javascriptWScope - case 86: // int - case 87: // timestamp - case 88: // long - case 89: // double - case 90: // decimal - case 91: // minKey - case 92: // maxKey - case 93: // value - case 94: // string - case 95: // binary - case 96: // undefined - case 97: // objectId - case 98: // bool - case 99: // date - case 100: // null - case 101: // regex - case 102: // simpleValue - case 103: // compoundValue - case 104: // valueArray - case 105: // valueObject - case 106: // valueFields - case 107: // stageList - case 108: // stage - case 109: // inhibitOptimization - case 110: // unionWith - case 111: // skip - case 112: // limit - case 113: // project - case 114: // sample - case 115: // projectFields - case 116: // projection - case 117: // num - case 118: // expression - case 119: // compoundExpression - case 120: // exprFixedTwoArg - case 121: // expressionArray - case 122: // expressionObject - case 123: // expressionFields - case 124: // maths - case 125: // add - case 126: // atan2 - case 127: // boolExps - case 128: // and - case 129: // or - case 130: // not - case 131: // literalEscapes - case 132: // const - case 133: // literal - case 134: // compExprs - case 135: // cmp - case 136: // eq - case 137: // gt - case 138: // gte - case 139: // lt - case 140: // lte - case 141: // ne - case 142: // typeExpression - case 143: // typeValue - case 144: // convert - case 145: // toBool - case 146: // toDate - case 147: // toDecimal - case 148: // toDouble - case 149: // toInt - case 150: // toLong - case 151: // toObjectId - case 152: // toString - case 153: // type + case 97: // dbPointer + case 98: // javascript + case 99: // symbol + case 100: // javascriptWScope + case 101: // int + case 102: // timestamp + case 103: // long + case 104: // double + case 105: // decimal + case 106: // minKey + case 107: // maxKey + case 108: // value + case 109: // string + case 110: // binary + case 111: // undefined + case 112: // objectId + case 113: // bool + case 114: // date + case 115: // null + case 116: // regex + case 117: // simpleValue + case 118: // compoundValue + case 119: // valueArray + case 120: // valueObject + case 121: // valueFields + case 122: // stageList + case 123: // stage + case 124: // inhibitOptimization + case 125: // unionWith + case 126: // skip + case 127: // limit + case 128: // project + case 129: // sample + case 130: // projectFields + case 131: // projection + case 132: // num + case 133: // expression + case 134: // compoundExpression + case 135: // exprFixedTwoArg + case 136: // expressionArray + case 137: // expressionObject + case 138: // expressionFields + case 139: // maths + case 140: // add + case 141: // atan2 + case 142: // boolExps + case 143: // and + case 144: // or + case 145: // not + case 146: // literalEscapes + case 147: // const + case 148: // literal + case 149: // compExprs + case 150: // cmp + case 151: // eq + case 152: // gt + case 153: // gte + case 154: // lt + case 155: // lte + case 156: // ne + case 157: // typeExpression + case 158: // typeValue + case 159: // convert + case 160: // toBool + case 161: // toDate + case 162: // toDecimal + case 163: // toDouble + case 164: // toInt + case 165: // toLong + case 166: // toObjectId + case 167: // toString + case 168: // type + case 169: // abs + case 170: // ceil + case 171: // divide + case 172: // exponent + case 173: // floor + case 174: // ln + case 175: // log + case 176: // logten + case 177: // mod + case 178: // multiply + case 179: // pow + case 180: // round + case 181: // sqrt + case 182: // subtract + case 183: // trunc value.move<CNode>(YY_MOVE(that.value)); break; - case 71: // projectionFieldname - case 72: // expressionFieldname - case 73: // stageAsUserFieldname - case 74: // argAsUserFieldname - case 75: // aggExprAsUserFieldname - case 76: // invariableUserFieldname - case 77: // idAsUserFieldname - case 78: // valueFieldname + case 86: // projectionFieldname + case 87: // expressionFieldname + case 88: // stageAsUserFieldname + case 89: // argAsUserFieldname + case 90: // aggExprAsUserFieldname + case 91: // invariableUserFieldname + case 92: // idAsUserFieldname + case 93: // valueFieldname value.move<CNode::Fieldname>(YY_MOVE(that.value)); break; - case 56: // DATE_LITERAL + case 71: // DATE_LITERAL value.move<Date_t>(YY_MOVE(that.value)); break; - case 67: // DECIMAL_NON_ZERO + case 82: // DECIMAL_NON_ZERO value.move<Decimal128>(YY_MOVE(that.value)); break; - case 55: // OBJECT_ID + case 70: // OBJECT_ID value.move<OID>(YY_MOVE(that.value)); break; - case 64: // TIMESTAMP + case 79: // TIMESTAMP value.move<Timestamp>(YY_MOVE(that.value)); break; - case 69: // MAX_KEY + case 84: // MAX_KEY value.move<UserMaxKey>(YY_MOVE(that.value)); break; - case 68: // MIN_KEY + case 83: // MIN_KEY value.move<UserMinKey>(YY_MOVE(that.value)); break; - case 57: // JSNULL + case 72: // JSNULL value.move<UserNull>(YY_MOVE(that.value)); break; - case 54: // UNDEFINED + case 69: // UNDEFINED value.move<UserUndefined>(YY_MOVE(that.value)); break; - case 66: // DOUBLE_NON_ZERO + case 81: // DOUBLE_NON_ZERO value.move<double>(YY_MOVE(that.value)); break; - case 63: // INT_NON_ZERO + case 78: // INT_NON_ZERO value.move<int>(YY_MOVE(that.value)); break; - case 65: // LONG_NON_ZERO + case 80: // LONG_NON_ZERO value.move<long long>(YY_MOVE(that.value)); break; - case 79: // projectField - case 80: // expressionField - case 81: // valueField - case 154: // onErrorArg - case 155: // onNullArg + case 94: // projectField + case 95: // expressionField + case 96: // valueField + case 184: // onErrorArg + case 185: // onNullArg value.move<std::pair<CNode::Fieldname, CNode>>(YY_MOVE(that.value)); break; - case 51: // FIELDNAME - case 52: // STRING + case 66: // FIELDNAME + case 67: // STRING value.move<std::string>(YY_MOVE(that.value)); break; - case 156: // expressions - case 157: // values + case 186: // expressions + case 187: // values value.move<std::vector<CNode>>(YY_MOVE(that.value)); break; @@ -575,175 +598,190 @@ PipelineParserGen::stack_symbol_type& PipelineParserGen::stack_symbol_type::oper const stack_symbol_type& that) { state = that.state; switch (that.kind()) { - case 53: // BINARY + case 68: // BINARY value.copy<BSONBinData>(that.value); break; - case 60: // JAVASCRIPT + case 75: // JAVASCRIPT value.copy<BSONCode>(that.value); break; - case 62: // JAVASCRIPT_W_SCOPE + case 77: // JAVASCRIPT_W_SCOPE value.copy<BSONCodeWScope>(that.value); break; - case 59: // DB_POINTER + case 74: // DB_POINTER value.copy<BSONDBRef>(that.value); break; - case 58: // REGEX + case 73: // REGEX value.copy<BSONRegEx>(that.value); break; - case 61: // SYMBOL + case 76: // SYMBOL value.copy<BSONSymbol>(that.value); break; - case 82: // dbPointer - case 83: // javascript - case 84: // symbol - case 85: // javascriptWScope - case 86: // int - case 87: // timestamp - case 88: // long - case 89: // double - case 90: // decimal - case 91: // minKey - case 92: // maxKey - case 93: // value - case 94: // string - case 95: // binary - case 96: // undefined - case 97: // objectId - case 98: // bool - case 99: // date - case 100: // null - case 101: // regex - case 102: // simpleValue - case 103: // compoundValue - case 104: // valueArray - case 105: // valueObject - case 106: // valueFields - case 107: // stageList - case 108: // stage - case 109: // inhibitOptimization - case 110: // unionWith - case 111: // skip - case 112: // limit - case 113: // project - case 114: // sample - case 115: // projectFields - case 116: // projection - case 117: // num - case 118: // expression - case 119: // compoundExpression - case 120: // exprFixedTwoArg - case 121: // expressionArray - case 122: // expressionObject - case 123: // expressionFields - case 124: // maths - case 125: // add - case 126: // atan2 - case 127: // boolExps - case 128: // and - case 129: // or - case 130: // not - case 131: // literalEscapes - case 132: // const - case 133: // literal - case 134: // compExprs - case 135: // cmp - case 136: // eq - case 137: // gt - case 138: // gte - case 139: // lt - case 140: // lte - case 141: // ne - case 142: // typeExpression - case 143: // typeValue - case 144: // convert - case 145: // toBool - case 146: // toDate - case 147: // toDecimal - case 148: // toDouble - case 149: // toInt - case 150: // toLong - case 151: // toObjectId - case 152: // toString - case 153: // type + case 97: // dbPointer + case 98: // javascript + case 99: // symbol + case 100: // javascriptWScope + case 101: // int + case 102: // timestamp + case 103: // long + case 104: // double + case 105: // decimal + case 106: // minKey + case 107: // maxKey + case 108: // value + case 109: // string + case 110: // binary + case 111: // undefined + case 112: // objectId + case 113: // bool + case 114: // date + case 115: // null + case 116: // regex + case 117: // simpleValue + case 118: // compoundValue + case 119: // valueArray + case 120: // valueObject + case 121: // valueFields + case 122: // stageList + case 123: // stage + case 124: // inhibitOptimization + case 125: // unionWith + case 126: // skip + case 127: // limit + case 128: // project + case 129: // sample + case 130: // projectFields + case 131: // projection + case 132: // num + case 133: // expression + case 134: // compoundExpression + case 135: // exprFixedTwoArg + case 136: // expressionArray + case 137: // expressionObject + case 138: // expressionFields + case 139: // maths + case 140: // add + case 141: // atan2 + case 142: // boolExps + case 143: // and + case 144: // or + case 145: // not + case 146: // literalEscapes + case 147: // const + case 148: // literal + case 149: // compExprs + case 150: // cmp + case 151: // eq + case 152: // gt + case 153: // gte + case 154: // lt + case 155: // lte + case 156: // ne + case 157: // typeExpression + case 158: // typeValue + case 159: // convert + case 160: // toBool + case 161: // toDate + case 162: // toDecimal + case 163: // toDouble + case 164: // toInt + case 165: // toLong + case 166: // toObjectId + case 167: // toString + case 168: // type + case 169: // abs + case 170: // ceil + case 171: // divide + case 172: // exponent + case 173: // floor + case 174: // ln + case 175: // log + case 176: // logten + case 177: // mod + case 178: // multiply + case 179: // pow + case 180: // round + case 181: // sqrt + case 182: // subtract + case 183: // trunc value.copy<CNode>(that.value); break; - case 71: // projectionFieldname - case 72: // expressionFieldname - case 73: // stageAsUserFieldname - case 74: // argAsUserFieldname - case 75: // aggExprAsUserFieldname - case 76: // invariableUserFieldname - case 77: // idAsUserFieldname - case 78: // valueFieldname + case 86: // projectionFieldname + case 87: // expressionFieldname + case 88: // stageAsUserFieldname + case 89: // argAsUserFieldname + case 90: // aggExprAsUserFieldname + case 91: // invariableUserFieldname + case 92: // idAsUserFieldname + case 93: // valueFieldname value.copy<CNode::Fieldname>(that.value); break; - case 56: // DATE_LITERAL + case 71: // DATE_LITERAL value.copy<Date_t>(that.value); break; - case 67: // DECIMAL_NON_ZERO + case 82: // DECIMAL_NON_ZERO value.copy<Decimal128>(that.value); break; - case 55: // OBJECT_ID + case 70: // OBJECT_ID value.copy<OID>(that.value); break; - case 64: // TIMESTAMP + case 79: // TIMESTAMP value.copy<Timestamp>(that.value); break; - case 69: // MAX_KEY + case 84: // MAX_KEY value.copy<UserMaxKey>(that.value); break; - case 68: // MIN_KEY + case 83: // MIN_KEY value.copy<UserMinKey>(that.value); break; - case 57: // JSNULL + case 72: // JSNULL value.copy<UserNull>(that.value); break; - case 54: // UNDEFINED + case 69: // UNDEFINED value.copy<UserUndefined>(that.value); break; - case 66: // DOUBLE_NON_ZERO + case 81: // DOUBLE_NON_ZERO value.copy<double>(that.value); break; - case 63: // INT_NON_ZERO + case 78: // INT_NON_ZERO value.copy<int>(that.value); break; - case 65: // LONG_NON_ZERO + case 80: // LONG_NON_ZERO value.copy<long long>(that.value); break; - case 79: // projectField - case 80: // expressionField - case 81: // valueField - case 154: // onErrorArg - case 155: // onNullArg + case 94: // projectField + case 95: // expressionField + case 96: // valueField + case 184: // onErrorArg + case 185: // onNullArg value.copy<std::pair<CNode::Fieldname, CNode>>(that.value); break; - case 51: // FIELDNAME - case 52: // STRING + case 66: // FIELDNAME + case 67: // STRING value.copy<std::string>(that.value); break; - case 156: // expressions - case 157: // values + case 186: // expressions + case 187: // values value.copy<std::vector<CNode>>(that.value); break; @@ -759,175 +797,190 @@ PipelineParserGen::stack_symbol_type& PipelineParserGen::stack_symbol_type::oper stack_symbol_type& that) { state = that.state; switch (that.kind()) { - case 53: // BINARY + case 68: // BINARY value.move<BSONBinData>(that.value); break; - case 60: // JAVASCRIPT + case 75: // JAVASCRIPT value.move<BSONCode>(that.value); break; - case 62: // JAVASCRIPT_W_SCOPE + case 77: // JAVASCRIPT_W_SCOPE value.move<BSONCodeWScope>(that.value); break; - case 59: // DB_POINTER + case 74: // DB_POINTER value.move<BSONDBRef>(that.value); break; - case 58: // REGEX + case 73: // REGEX value.move<BSONRegEx>(that.value); break; - case 61: // SYMBOL + case 76: // SYMBOL value.move<BSONSymbol>(that.value); break; - case 82: // dbPointer - case 83: // javascript - case 84: // symbol - case 85: // javascriptWScope - case 86: // int - case 87: // timestamp - case 88: // long - case 89: // double - case 90: // decimal - case 91: // minKey - case 92: // maxKey - case 93: // value - case 94: // string - case 95: // binary - case 96: // undefined - case 97: // objectId - case 98: // bool - case 99: // date - case 100: // null - case 101: // regex - case 102: // simpleValue - case 103: // compoundValue - case 104: // valueArray - case 105: // valueObject - case 106: // valueFields - case 107: // stageList - case 108: // stage - case 109: // inhibitOptimization - case 110: // unionWith - case 111: // skip - case 112: // limit - case 113: // project - case 114: // sample - case 115: // projectFields - case 116: // projection - case 117: // num - case 118: // expression - case 119: // compoundExpression - case 120: // exprFixedTwoArg - case 121: // expressionArray - case 122: // expressionObject - case 123: // expressionFields - case 124: // maths - case 125: // add - case 126: // atan2 - case 127: // boolExps - case 128: // and - case 129: // or - case 130: // not - case 131: // literalEscapes - case 132: // const - case 133: // literal - case 134: // compExprs - case 135: // cmp - case 136: // eq - case 137: // gt - case 138: // gte - case 139: // lt - case 140: // lte - case 141: // ne - case 142: // typeExpression - case 143: // typeValue - case 144: // convert - case 145: // toBool - case 146: // toDate - case 147: // toDecimal - case 148: // toDouble - case 149: // toInt - case 150: // toLong - case 151: // toObjectId - case 152: // toString - case 153: // type + case 97: // dbPointer + case 98: // javascript + case 99: // symbol + case 100: // javascriptWScope + case 101: // int + case 102: // timestamp + case 103: // long + case 104: // double + case 105: // decimal + case 106: // minKey + case 107: // maxKey + case 108: // value + case 109: // string + case 110: // binary + case 111: // undefined + case 112: // objectId + case 113: // bool + case 114: // date + case 115: // null + case 116: // regex + case 117: // simpleValue + case 118: // compoundValue + case 119: // valueArray + case 120: // valueObject + case 121: // valueFields + case 122: // stageList + case 123: // stage + case 124: // inhibitOptimization + case 125: // unionWith + case 126: // skip + case 127: // limit + case 128: // project + case 129: // sample + case 130: // projectFields + case 131: // projection + case 132: // num + case 133: // expression + case 134: // compoundExpression + case 135: // exprFixedTwoArg + case 136: // expressionArray + case 137: // expressionObject + case 138: // expressionFields + case 139: // maths + case 140: // add + case 141: // atan2 + case 142: // boolExps + case 143: // and + case 144: // or + case 145: // not + case 146: // literalEscapes + case 147: // const + case 148: // literal + case 149: // compExprs + case 150: // cmp + case 151: // eq + case 152: // gt + case 153: // gte + case 154: // lt + case 155: // lte + case 156: // ne + case 157: // typeExpression + case 158: // typeValue + case 159: // convert + case 160: // toBool + case 161: // toDate + case 162: // toDecimal + case 163: // toDouble + case 164: // toInt + case 165: // toLong + case 166: // toObjectId + case 167: // toString + case 168: // type + case 169: // abs + case 170: // ceil + case 171: // divide + case 172: // exponent + case 173: // floor + case 174: // ln + case 175: // log + case 176: // logten + case 177: // mod + case 178: // multiply + case 179: // pow + case 180: // round + case 181: // sqrt + case 182: // subtract + case 183: // trunc value.move<CNode>(that.value); break; - case 71: // projectionFieldname - case 72: // expressionFieldname - case 73: // stageAsUserFieldname - case 74: // argAsUserFieldname - case 75: // aggExprAsUserFieldname - case 76: // invariableUserFieldname - case 77: // idAsUserFieldname - case 78: // valueFieldname + case 86: // projectionFieldname + case 87: // expressionFieldname + case 88: // stageAsUserFieldname + case 89: // argAsUserFieldname + case 90: // aggExprAsUserFieldname + case 91: // invariableUserFieldname + case 92: // idAsUserFieldname + case 93: // valueFieldname value.move<CNode::Fieldname>(that.value); break; - case 56: // DATE_LITERAL + case 71: // DATE_LITERAL value.move<Date_t>(that.value); break; - case 67: // DECIMAL_NON_ZERO + case 82: // DECIMAL_NON_ZERO value.move<Decimal128>(that.value); break; - case 55: // OBJECT_ID + case 70: // OBJECT_ID value.move<OID>(that.value); break; - case 64: // TIMESTAMP + case 79: // TIMESTAMP value.move<Timestamp>(that.value); break; - case 69: // MAX_KEY + case 84: // MAX_KEY value.move<UserMaxKey>(that.value); break; - case 68: // MIN_KEY + case 83: // MIN_KEY value.move<UserMinKey>(that.value); break; - case 57: // JSNULL + case 72: // JSNULL value.move<UserNull>(that.value); break; - case 54: // UNDEFINED + case 69: // UNDEFINED value.move<UserUndefined>(that.value); break; - case 66: // DOUBLE_NON_ZERO + case 81: // DOUBLE_NON_ZERO value.move<double>(that.value); break; - case 63: // INT_NON_ZERO + case 78: // INT_NON_ZERO value.move<int>(that.value); break; - case 65: // LONG_NON_ZERO + case 80: // LONG_NON_ZERO value.move<long long>(that.value); break; - case 79: // projectField - case 80: // expressionField - case 81: // valueField - case 154: // onErrorArg - case 155: // onNullArg + case 94: // projectField + case 95: // expressionField + case 96: // valueField + case 184: // onErrorArg + case 185: // onNullArg value.move<std::pair<CNode::Fieldname, CNode>>(that.value); break; - case 51: // FIELDNAME - case 52: // STRING + case 66: // FIELDNAME + case 67: // STRING value.move<std::string>(that.value); break; - case 156: // expressions - case 157: // values + case 186: // expressions + case 187: // values value.move<std::vector<CNode>>(that.value); break; @@ -957,7 +1010,7 @@ void PipelineParserGen::yy_print_(std::ostream& yyo, const basic_symbol<Base>& y yyo << "empty symbol"; else { symbol_kind_type yykind = yysym.kind(); - yyo << (yykind < YYNTOKENS ? "token" : "nterm") << ' ' << symbol_name(yykind) << " (" + yyo << (yykind < YYNTOKENS ? "token" : "nterm") << ' ' << yysym.name() << " (" << yysym.location << ": "; YYUSE(yykind); yyo << ')'; @@ -1154,175 +1207,190 @@ int PipelineParserGen::parse() { correct type. The default '$$ = $1' action is NOT applied when using variants. */ switch (yyr1_[yyn]) { - case 53: // BINARY + case 68: // BINARY yylhs.value.emplace<BSONBinData>(); break; - case 60: // JAVASCRIPT + case 75: // JAVASCRIPT yylhs.value.emplace<BSONCode>(); break; - case 62: // JAVASCRIPT_W_SCOPE + case 77: // JAVASCRIPT_W_SCOPE yylhs.value.emplace<BSONCodeWScope>(); break; - case 59: // DB_POINTER + case 74: // DB_POINTER yylhs.value.emplace<BSONDBRef>(); break; - case 58: // REGEX + case 73: // REGEX yylhs.value.emplace<BSONRegEx>(); break; - case 61: // SYMBOL + case 76: // SYMBOL yylhs.value.emplace<BSONSymbol>(); break; - case 82: // dbPointer - case 83: // javascript - case 84: // symbol - case 85: // javascriptWScope - case 86: // int - case 87: // timestamp - case 88: // long - case 89: // double - case 90: // decimal - case 91: // minKey - case 92: // maxKey - case 93: // value - case 94: // string - case 95: // binary - case 96: // undefined - case 97: // objectId - case 98: // bool - case 99: // date - case 100: // null - case 101: // regex - case 102: // simpleValue - case 103: // compoundValue - case 104: // valueArray - case 105: // valueObject - case 106: // valueFields - case 107: // stageList - case 108: // stage - case 109: // inhibitOptimization - case 110: // unionWith - case 111: // skip - case 112: // limit - case 113: // project - case 114: // sample - case 115: // projectFields - case 116: // projection - case 117: // num - case 118: // expression - case 119: // compoundExpression - case 120: // exprFixedTwoArg - case 121: // expressionArray - case 122: // expressionObject - case 123: // expressionFields - case 124: // maths - case 125: // add - case 126: // atan2 - case 127: // boolExps - case 128: // and - case 129: // or - case 130: // not - case 131: // literalEscapes - case 132: // const - case 133: // literal - case 134: // compExprs - case 135: // cmp - case 136: // eq - case 137: // gt - case 138: // gte - case 139: // lt - case 140: // lte - case 141: // ne - case 142: // typeExpression - case 143: // typeValue - case 144: // convert - case 145: // toBool - case 146: // toDate - case 147: // toDecimal - case 148: // toDouble - case 149: // toInt - case 150: // toLong - case 151: // toObjectId - case 152: // toString - case 153: // type + case 97: // dbPointer + case 98: // javascript + case 99: // symbol + case 100: // javascriptWScope + case 101: // int + case 102: // timestamp + case 103: // long + case 104: // double + case 105: // decimal + case 106: // minKey + case 107: // maxKey + case 108: // value + case 109: // string + case 110: // binary + case 111: // undefined + case 112: // objectId + case 113: // bool + case 114: // date + case 115: // null + case 116: // regex + case 117: // simpleValue + case 118: // compoundValue + case 119: // valueArray + case 120: // valueObject + case 121: // valueFields + case 122: // stageList + case 123: // stage + case 124: // inhibitOptimization + case 125: // unionWith + case 126: // skip + case 127: // limit + case 128: // project + case 129: // sample + case 130: // projectFields + case 131: // projection + case 132: // num + case 133: // expression + case 134: // compoundExpression + case 135: // exprFixedTwoArg + case 136: // expressionArray + case 137: // expressionObject + case 138: // expressionFields + case 139: // maths + case 140: // add + case 141: // atan2 + case 142: // boolExps + case 143: // and + case 144: // or + case 145: // not + case 146: // literalEscapes + case 147: // const + case 148: // literal + case 149: // compExprs + case 150: // cmp + case 151: // eq + case 152: // gt + case 153: // gte + case 154: // lt + case 155: // lte + case 156: // ne + case 157: // typeExpression + case 158: // typeValue + case 159: // convert + case 160: // toBool + case 161: // toDate + case 162: // toDecimal + case 163: // toDouble + case 164: // toInt + case 165: // toLong + case 166: // toObjectId + case 167: // toString + case 168: // type + case 169: // abs + case 170: // ceil + case 171: // divide + case 172: // exponent + case 173: // floor + case 174: // ln + case 175: // log + case 176: // logten + case 177: // mod + case 178: // multiply + case 179: // pow + case 180: // round + case 181: // sqrt + case 182: // subtract + case 183: // trunc yylhs.value.emplace<CNode>(); break; - case 71: // projectionFieldname - case 72: // expressionFieldname - case 73: // stageAsUserFieldname - case 74: // argAsUserFieldname - case 75: // aggExprAsUserFieldname - case 76: // invariableUserFieldname - case 77: // idAsUserFieldname - case 78: // valueFieldname + case 86: // projectionFieldname + case 87: // expressionFieldname + case 88: // stageAsUserFieldname + case 89: // argAsUserFieldname + case 90: // aggExprAsUserFieldname + case 91: // invariableUserFieldname + case 92: // idAsUserFieldname + case 93: // valueFieldname yylhs.value.emplace<CNode::Fieldname>(); break; - case 56: // DATE_LITERAL + case 71: // DATE_LITERAL yylhs.value.emplace<Date_t>(); break; - case 67: // DECIMAL_NON_ZERO + case 82: // DECIMAL_NON_ZERO yylhs.value.emplace<Decimal128>(); break; - case 55: // OBJECT_ID + case 70: // OBJECT_ID yylhs.value.emplace<OID>(); break; - case 64: // TIMESTAMP + case 79: // TIMESTAMP yylhs.value.emplace<Timestamp>(); break; - case 69: // MAX_KEY + case 84: // MAX_KEY yylhs.value.emplace<UserMaxKey>(); break; - case 68: // MIN_KEY + case 83: // MIN_KEY yylhs.value.emplace<UserMinKey>(); break; - case 57: // JSNULL + case 72: // JSNULL yylhs.value.emplace<UserNull>(); break; - case 54: // UNDEFINED + case 69: // UNDEFINED yylhs.value.emplace<UserUndefined>(); break; - case 66: // DOUBLE_NON_ZERO + case 81: // DOUBLE_NON_ZERO yylhs.value.emplace<double>(); break; - case 63: // INT_NON_ZERO + case 78: // INT_NON_ZERO yylhs.value.emplace<int>(); break; - case 65: // LONG_NON_ZERO + case 80: // LONG_NON_ZERO yylhs.value.emplace<long long>(); break; - case 79: // projectField - case 80: // expressionField - case 81: // valueField - case 154: // onErrorArg - case 155: // onNullArg + case 94: // projectField + case 95: // expressionField + case 96: // valueField + case 184: // onErrorArg + case 185: // onNullArg yylhs.value.emplace<std::pair<CNode::Fieldname, CNode>>(); break; - case 51: // FIELDNAME - case 52: // STRING + case 66: // FIELDNAME + case 67: // STRING yylhs.value.emplace<std::string>(); break; - case 156: // expressions - case 157: // values + case 186: // expressions + case 187: // values yylhs.value.emplace<std::vector<CNode>>(); break; @@ -1346,87 +1414,87 @@ int PipelineParserGen::parse() { { switch (yyn) { case 2: -#line 230 "src/mongo/db/cst/pipeline_grammar.yy" +#line 246 "pipeline_grammar.yy" { *cst = YY_MOVE(yystack_[1].value.as<CNode>()); } -#line 1422 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1488 "pipeline_parser_gen.cpp" break; case 3: -#line 236 "src/mongo/db/cst/pipeline_grammar.yy" +#line 252 "pipeline_grammar.yy" { } -#line 1428 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1494 "pipeline_parser_gen.cpp" break; case 4: -#line 237 "src/mongo/db/cst/pipeline_grammar.yy" +#line 253 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ArrayChildren{YY_MOVE(yystack_[2].value.as<CNode>())}}; } -#line 1436 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1502 "pipeline_parser_gen.cpp" break; case 5: -#line 245 "src/mongo/db/cst/pipeline_grammar.yy" +#line 261 "pipeline_grammar.yy" { lexer.sortObjTokens(); } -#line 1442 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1508 "pipeline_parser_gen.cpp" break; case 7: -#line 248 "src/mongo/db/cst/pipeline_grammar.yy" +#line 264 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 1448 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1514 "pipeline_parser_gen.cpp" break; case 8: -#line 248 "src/mongo/db/cst/pipeline_grammar.yy" +#line 264 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 1454 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1520 "pipeline_parser_gen.cpp" break; case 9: -#line 248 "src/mongo/db/cst/pipeline_grammar.yy" +#line 264 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 1460 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1526 "pipeline_parser_gen.cpp" break; case 10: -#line 248 "src/mongo/db/cst/pipeline_grammar.yy" +#line 264 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 1466 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1532 "pipeline_parser_gen.cpp" break; case 11: -#line 248 "src/mongo/db/cst/pipeline_grammar.yy" +#line 264 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 1472 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1538 "pipeline_parser_gen.cpp" break; case 12: -#line 248 "src/mongo/db/cst/pipeline_grammar.yy" +#line 264 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 1478 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1544 "pipeline_parser_gen.cpp" break; case 13: -#line 251 "src/mongo/db/cst/pipeline_grammar.yy" +#line 267 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{std::pair{ KeyFieldname::sample, @@ -1434,20 +1502,20 @@ int PipelineParserGen::parse() { {KeyFieldname::sizeArg, YY_MOVE(yystack_[1].value.as<CNode>())}, }}}}}; } -#line 1490 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1556 "pipeline_parser_gen.cpp" break; case 14: -#line 261 "src/mongo/db/cst/pipeline_grammar.yy" +#line 277 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ std::pair{KeyFieldname::inhibitOptimization, CNode::noopLeaf()}}}; } -#line 1498 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1564 "pipeline_parser_gen.cpp" break; case 15: -#line 267 "src/mongo/db/cst/pipeline_grammar.yy" +#line 283 "pipeline_grammar.yy" { auto pipeline = YY_MOVE(yystack_[1].value.as<CNode>()); yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{std::pair{ @@ -1456,1113 +1524,1353 @@ int PipelineParserGen::parse() { {KeyFieldname::collArg, YY_MOVE(yystack_[3].value.as<CNode>())}, {KeyFieldname::pipelineArg, std::move(pipeline)}}}}}}; } -#line 1511 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1577 "pipeline_parser_gen.cpp" break; case 16: -#line 277 "src/mongo/db/cst/pipeline_grammar.yy" +#line 293 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 1517 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1583 "pipeline_parser_gen.cpp" break; case 17: -#line 277 "src/mongo/db/cst/pipeline_grammar.yy" +#line 293 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 1523 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1589 "pipeline_parser_gen.cpp" break; case 18: -#line 277 "src/mongo/db/cst/pipeline_grammar.yy" +#line 293 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 1529 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1595 "pipeline_parser_gen.cpp" break; case 19: -#line 277 "src/mongo/db/cst/pipeline_grammar.yy" +#line 293 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 1535 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1601 "pipeline_parser_gen.cpp" break; case 20: -#line 281 "src/mongo/db/cst/pipeline_grammar.yy" +#line 297 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ std::pair{KeyFieldname::skip, YY_MOVE(yystack_[0].value.as<CNode>())}}}; } -#line 1543 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1609 "pipeline_parser_gen.cpp" break; case 21: -#line 286 "src/mongo/db/cst/pipeline_grammar.yy" +#line 302 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{std::pair{ KeyFieldname::limit, YY_MOVE(yystack_[0].value.as<CNode>())}}}; } -#line 1551 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1617 "pipeline_parser_gen.cpp" break; case 22: -#line 291 "src/mongo/db/cst/pipeline_grammar.yy" +#line 307 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{std::pair{ KeyFieldname::project, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 1559 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1625 "pipeline_parser_gen.cpp" break; case 23: -#line 297 "src/mongo/db/cst/pipeline_grammar.yy" +#line 313 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode::noopLeaf(); } -#line 1567 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1633 "pipeline_parser_gen.cpp" break; case 24: -#line 300 "src/mongo/db/cst/pipeline_grammar.yy" +#line 316 "pipeline_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 1576 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1642 "pipeline_parser_gen.cpp" break; case 25: -#line 307 "src/mongo/db/cst/pipeline_grammar.yy" +#line 323 "pipeline_grammar.yy" { yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = { KeyFieldname::id, YY_MOVE(yystack_[0].value.as<CNode>())}; } -#line 1584 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1650 "pipeline_parser_gen.cpp" break; case 26: -#line 310 "src/mongo/db/cst/pipeline_grammar.yy" +#line 326 "pipeline_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 1592 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1658 "pipeline_parser_gen.cpp" break; case 27: -#line 316 "src/mongo/db/cst/pipeline_grammar.yy" +#line 332 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 1598 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1664 "pipeline_parser_gen.cpp" break; case 28: -#line 317 "src/mongo/db/cst/pipeline_grammar.yy" +#line 333 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{NonZeroKey{YY_MOVE(yystack_[0].value.as<int>())}}; } -#line 1606 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1672 "pipeline_parser_gen.cpp" break; case 29: -#line 320 "src/mongo/db/cst/pipeline_grammar.yy" +#line 336 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{KeyValue::intZeroKey}; } -#line 1614 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1680 "pipeline_parser_gen.cpp" break; case 30: -#line 323 "src/mongo/db/cst/pipeline_grammar.yy" +#line 339 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{NonZeroKey{YY_MOVE(yystack_[0].value.as<long long>())}}; } -#line 1622 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1688 "pipeline_parser_gen.cpp" break; case 31: -#line 326 "src/mongo/db/cst/pipeline_grammar.yy" +#line 342 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{KeyValue::longZeroKey}; } -#line 1630 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1696 "pipeline_parser_gen.cpp" break; case 32: -#line 329 "src/mongo/db/cst/pipeline_grammar.yy" +#line 345 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{NonZeroKey{YY_MOVE(yystack_[0].value.as<double>())}}; } -#line 1638 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1704 "pipeline_parser_gen.cpp" break; case 33: -#line 332 "src/mongo/db/cst/pipeline_grammar.yy" +#line 348 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{KeyValue::doubleZeroKey}; } -#line 1646 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1712 "pipeline_parser_gen.cpp" break; case 34: -#line 335 "src/mongo/db/cst/pipeline_grammar.yy" +#line 351 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{NonZeroKey{YY_MOVE(yystack_[0].value.as<Decimal128>())}}; } -#line 1654 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1720 "pipeline_parser_gen.cpp" break; case 35: -#line 338 "src/mongo/db/cst/pipeline_grammar.yy" +#line 354 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{KeyValue::decimalZeroKey}; } -#line 1662 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1728 "pipeline_parser_gen.cpp" break; case 36: -#line 341 "src/mongo/db/cst/pipeline_grammar.yy" +#line 357 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{KeyValue::trueKey}; } -#line 1670 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1736 "pipeline_parser_gen.cpp" break; case 37: -#line 344 "src/mongo/db/cst/pipeline_grammar.yy" +#line 360 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{KeyValue::falseKey}; } -#line 1678 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1744 "pipeline_parser_gen.cpp" break; case 38: -#line 347 "src/mongo/db/cst/pipeline_grammar.yy" +#line 363 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 1684 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1750 "pipeline_parser_gen.cpp" break; case 39: -#line 351 "src/mongo/db/cst/pipeline_grammar.yy" +#line 367 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = YY_MOVE(yystack_[0].value.as<CNode::Fieldname>()); } -#line 1690 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1756 "pipeline_parser_gen.cpp" break; case 40: -#line 351 "src/mongo/db/cst/pipeline_grammar.yy" +#line 367 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = YY_MOVE(yystack_[0].value.as<CNode::Fieldname>()); } -#line 1696 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1762 "pipeline_parser_gen.cpp" break; case 41: -#line 351 "src/mongo/db/cst/pipeline_grammar.yy" +#line 367 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = YY_MOVE(yystack_[0].value.as<CNode::Fieldname>()); } -#line 1702 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1768 "pipeline_parser_gen.cpp" break; case 42: -#line 351 "src/mongo/db/cst/pipeline_grammar.yy" +#line 367 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = YY_MOVE(yystack_[0].value.as<CNode::Fieldname>()); } -#line 1708 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1774 "pipeline_parser_gen.cpp" break; case 43: -#line 355 "src/mongo/db/cst/pipeline_grammar.yy" +#line 371 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{YY_MOVE(yystack_[0].value.as<std::string>())}; } -#line 1716 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1782 "pipeline_parser_gen.cpp" break; case 44: -#line 363 "src/mongo/db/cst/pipeline_grammar.yy" +#line 379 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$_internalInhibitOptimization"}; } -#line 1724 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1790 "pipeline_parser_gen.cpp" break; case 45: -#line 366 "src/mongo/db/cst/pipeline_grammar.yy" +#line 382 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$unionWith"}; } -#line 1732 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1798 "pipeline_parser_gen.cpp" break; case 46: -#line 369 "src/mongo/db/cst/pipeline_grammar.yy" +#line 385 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$skip"}; } -#line 1740 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1806 "pipeline_parser_gen.cpp" break; case 47: -#line 372 "src/mongo/db/cst/pipeline_grammar.yy" +#line 388 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$limit"}; } -#line 1748 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1814 "pipeline_parser_gen.cpp" break; case 48: -#line 375 "src/mongo/db/cst/pipeline_grammar.yy" +#line 391 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$project"}; } -#line 1756 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1822 "pipeline_parser_gen.cpp" break; case 49: -#line 378 "src/mongo/db/cst/pipeline_grammar.yy" +#line 394 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$sample"}; } -#line 1764 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1830 "pipeline_parser_gen.cpp" break; case 50: -#line 387 "src/mongo/db/cst/pipeline_grammar.yy" +#line 403 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"coll"}; } -#line 1772 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1838 "pipeline_parser_gen.cpp" break; case 51: -#line 390 "src/mongo/db/cst/pipeline_grammar.yy" +#line 406 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"pipeline"}; } -#line 1780 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1846 "pipeline_parser_gen.cpp" break; case 52: -#line 393 "src/mongo/db/cst/pipeline_grammar.yy" +#line 409 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"size"}; } -#line 1788 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1854 "pipeline_parser_gen.cpp" break; case 53: -#line 396 "src/mongo/db/cst/pipeline_grammar.yy" +#line 412 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"input"}; } -#line 1796 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1862 "pipeline_parser_gen.cpp" break; case 54: -#line 399 "src/mongo/db/cst/pipeline_grammar.yy" +#line 415 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"to"}; } -#line 1804 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1870 "pipeline_parser_gen.cpp" break; case 55: -#line 402 "src/mongo/db/cst/pipeline_grammar.yy" +#line 418 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"onError"}; } -#line 1812 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1878 "pipeline_parser_gen.cpp" break; case 56: -#line 405 "src/mongo/db/cst/pipeline_grammar.yy" +#line 421 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"onNull"}; } -#line 1820 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1886 "pipeline_parser_gen.cpp" break; case 57: -#line 413 "src/mongo/db/cst/pipeline_grammar.yy" +#line 429 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$add"}; } -#line 1828 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1894 "pipeline_parser_gen.cpp" break; case 58: -#line 416 "src/mongo/db/cst/pipeline_grammar.yy" +#line 432 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$atan2"}; } -#line 1836 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1902 "pipeline_parser_gen.cpp" break; case 59: -#line 419 "src/mongo/db/cst/pipeline_grammar.yy" +#line 435 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$and"}; } -#line 1844 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1910 "pipeline_parser_gen.cpp" break; case 60: -#line 422 "src/mongo/db/cst/pipeline_grammar.yy" +#line 438 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$const"}; } -#line 1852 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1918 "pipeline_parser_gen.cpp" break; case 61: -#line 425 "src/mongo/db/cst/pipeline_grammar.yy" +#line 441 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$literal"}; } -#line 1860 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1926 "pipeline_parser_gen.cpp" break; case 62: -#line 428 "src/mongo/db/cst/pipeline_grammar.yy" +#line 444 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$or"}; } -#line 1868 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1934 "pipeline_parser_gen.cpp" break; case 63: -#line 431 "src/mongo/db/cst/pipeline_grammar.yy" +#line 447 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$not"}; } -#line 1876 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1942 "pipeline_parser_gen.cpp" break; case 64: -#line 434 "src/mongo/db/cst/pipeline_grammar.yy" +#line 450 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$cmp"}; } -#line 1884 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1950 "pipeline_parser_gen.cpp" break; case 65: -#line 437 "src/mongo/db/cst/pipeline_grammar.yy" +#line 453 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$eq"}; } -#line 1892 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1958 "pipeline_parser_gen.cpp" break; case 66: -#line 440 "src/mongo/db/cst/pipeline_grammar.yy" +#line 456 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$gt"}; } -#line 1900 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1966 "pipeline_parser_gen.cpp" break; case 67: -#line 443 "src/mongo/db/cst/pipeline_grammar.yy" +#line 459 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$gte"}; } -#line 1908 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1974 "pipeline_parser_gen.cpp" break; case 68: -#line 446 "src/mongo/db/cst/pipeline_grammar.yy" +#line 462 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$lt"}; } -#line 1916 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1982 "pipeline_parser_gen.cpp" break; case 69: -#line 449 "src/mongo/db/cst/pipeline_grammar.yy" +#line 465 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$lte"}; } -#line 1924 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1990 "pipeline_parser_gen.cpp" break; case 70: -#line 452 "src/mongo/db/cst/pipeline_grammar.yy" +#line 468 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$ne"}; } -#line 1932 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 1998 "pipeline_parser_gen.cpp" break; case 71: -#line 455 "src/mongo/db/cst/pipeline_grammar.yy" +#line 471 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$convert"}; } -#line 1940 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2006 "pipeline_parser_gen.cpp" break; case 72: -#line 458 "src/mongo/db/cst/pipeline_grammar.yy" +#line 474 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toBool"}; } -#line 1948 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2014 "pipeline_parser_gen.cpp" break; case 73: -#line 461 "src/mongo/db/cst/pipeline_grammar.yy" +#line 477 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toDate"}; } -#line 1956 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2022 "pipeline_parser_gen.cpp" break; case 74: -#line 464 "src/mongo/db/cst/pipeline_grammar.yy" +#line 480 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toDecimal"}; } -#line 1964 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2030 "pipeline_parser_gen.cpp" break; case 75: -#line 467 "src/mongo/db/cst/pipeline_grammar.yy" +#line 483 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toDouble"}; } -#line 1972 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2038 "pipeline_parser_gen.cpp" break; case 76: -#line 470 "src/mongo/db/cst/pipeline_grammar.yy" +#line 486 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toInt"}; } -#line 1980 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2046 "pipeline_parser_gen.cpp" break; case 77: -#line 473 "src/mongo/db/cst/pipeline_grammar.yy" +#line 489 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toLong"}; } -#line 1988 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2054 "pipeline_parser_gen.cpp" break; case 78: -#line 476 "src/mongo/db/cst/pipeline_grammar.yy" +#line 492 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toObjectId"}; } -#line 1996 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2062 "pipeline_parser_gen.cpp" break; case 79: -#line 479 "src/mongo/db/cst/pipeline_grammar.yy" +#line 495 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$toString"}; } -#line 2004 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2070 "pipeline_parser_gen.cpp" break; case 80: -#line 482 "src/mongo/db/cst/pipeline_grammar.yy" +#line 498 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$type"}; } -#line 2012 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2078 "pipeline_parser_gen.cpp" break; case 81: -#line 489 "src/mongo/db/cst/pipeline_grammar.yy" +#line 501 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$abs"}; + } +#line 2086 "pipeline_parser_gen.cpp" + break; + + case 82: +#line 504 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$ceil"}; + } +#line 2094 "pipeline_parser_gen.cpp" + break; + + case 83: +#line 507 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$divide"}; + } +#line 2102 "pipeline_parser_gen.cpp" + break; + + case 84: +#line 510 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$exp"}; + } +#line 2110 "pipeline_parser_gen.cpp" + break; + + case 85: +#line 513 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$floor"}; + } +#line 2118 "pipeline_parser_gen.cpp" + break; + + case 86: +#line 516 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$ln"}; + } +#line 2126 "pipeline_parser_gen.cpp" + break; + + case 87: +#line 519 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$log"}; + } +#line 2134 "pipeline_parser_gen.cpp" + break; + + case 88: +#line 522 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$log10"}; + } +#line 2142 "pipeline_parser_gen.cpp" + break; + + case 89: +#line 525 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$mod"}; + } +#line 2150 "pipeline_parser_gen.cpp" + break; + + case 90: +#line 528 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$multiply"}; + } +#line 2158 "pipeline_parser_gen.cpp" + break; + + case 91: +#line 531 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$pow"}; + } +#line 2166 "pipeline_parser_gen.cpp" + break; + + case 92: +#line 534 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$round"}; + } +#line 2174 "pipeline_parser_gen.cpp" + break; + + case 93: +#line 537 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$sqrt"}; + } +#line 2182 "pipeline_parser_gen.cpp" + break; + + case 94: +#line 540 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$subtract"}; + } +#line 2190 "pipeline_parser_gen.cpp" + break; + + case 95: +#line 543 "pipeline_grammar.yy" + { + yylhs.value.as<CNode::Fieldname>() = UserFieldname{"$trunc"}; + } +#line 2198 "pipeline_parser_gen.cpp" + break; + + case 96: +#line 550 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserString{YY_MOVE(yystack_[0].value.as<std::string>())}}; } -#line 2020 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2206 "pipeline_parser_gen.cpp" break; - case 82: -#line 495 "src/mongo/db/cst/pipeline_grammar.yy" + case 97: +#line 556 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserBinary{YY_MOVE(yystack_[0].value.as<BSONBinData>())}}; } -#line 2028 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2214 "pipeline_parser_gen.cpp" break; - case 83: -#line 501 "src/mongo/db/cst/pipeline_grammar.yy" + case 98: +#line 562 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserUndefined{}}; } -#line 2036 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2222 "pipeline_parser_gen.cpp" break; - case 84: -#line 507 "src/mongo/db/cst/pipeline_grammar.yy" + case 99: +#line 568 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserObjectId{}}; } -#line 2044 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2230 "pipeline_parser_gen.cpp" break; - case 85: -#line 513 "src/mongo/db/cst/pipeline_grammar.yy" + case 100: +#line 574 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserDate{YY_MOVE(yystack_[0].value.as<Date_t>())}}; } -#line 2052 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2238 "pipeline_parser_gen.cpp" break; - case 86: -#line 519 "src/mongo/db/cst/pipeline_grammar.yy" + case 101: +#line 580 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserNull{}}; } -#line 2060 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2246 "pipeline_parser_gen.cpp" break; - case 87: -#line 525 "src/mongo/db/cst/pipeline_grammar.yy" + case 102: +#line 586 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserRegex{YY_MOVE(yystack_[0].value.as<BSONRegEx>())}}; } -#line 2068 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2254 "pipeline_parser_gen.cpp" break; - case 88: -#line 531 "src/mongo/db/cst/pipeline_grammar.yy" + case 103: +#line 592 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserDBPointer{YY_MOVE(yystack_[0].value.as<BSONDBRef>())}}; } -#line 2076 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2262 "pipeline_parser_gen.cpp" break; - case 89: -#line 537 "src/mongo/db/cst/pipeline_grammar.yy" + case 104: +#line 598 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserJavascript{YY_MOVE(yystack_[0].value.as<BSONCode>())}}; } -#line 2084 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2270 "pipeline_parser_gen.cpp" break; - case 90: -#line 543 "src/mongo/db/cst/pipeline_grammar.yy" + case 105: +#line 604 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserSymbol{YY_MOVE(yystack_[0].value.as<BSONSymbol>())}}; } -#line 2092 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2278 "pipeline_parser_gen.cpp" break; - case 91: -#line 549 "src/mongo/db/cst/pipeline_grammar.yy" + case 106: +#line 610 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserJavascriptWithScope{ YY_MOVE(yystack_[0].value.as<BSONCodeWScope>())}}; } -#line 2100 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2286 "pipeline_parser_gen.cpp" break; - case 92: -#line 555 "src/mongo/db/cst/pipeline_grammar.yy" + case 107: +#line 616 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserTimestamp{YY_MOVE(yystack_[0].value.as<Timestamp>())}}; } -#line 2108 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2294 "pipeline_parser_gen.cpp" break; - case 93: -#line 561 "src/mongo/db/cst/pipeline_grammar.yy" + case 108: +#line 622 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserMinKey{YY_MOVE(yystack_[0].value.as<UserMinKey>())}}; } -#line 2116 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2302 "pipeline_parser_gen.cpp" break; - case 94: -#line 567 "src/mongo/db/cst/pipeline_grammar.yy" + case 109: +#line 628 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserMaxKey{YY_MOVE(yystack_[0].value.as<UserMaxKey>())}}; } -#line 2124 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2310 "pipeline_parser_gen.cpp" break; - case 95: -#line 573 "src/mongo/db/cst/pipeline_grammar.yy" + case 110: +#line 634 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserInt{YY_MOVE(yystack_[0].value.as<int>())}}; } -#line 2132 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2318 "pipeline_parser_gen.cpp" break; - case 96: -#line 576 "src/mongo/db/cst/pipeline_grammar.yy" + case 111: +#line 637 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserInt{0}}; } -#line 2140 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2326 "pipeline_parser_gen.cpp" break; - case 97: -#line 582 "src/mongo/db/cst/pipeline_grammar.yy" + case 112: +#line 643 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserLong{YY_MOVE(yystack_[0].value.as<long long>())}}; } -#line 2148 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2334 "pipeline_parser_gen.cpp" break; - case 98: -#line 585 "src/mongo/db/cst/pipeline_grammar.yy" + case 113: +#line 646 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserLong{0ll}}; } -#line 2156 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2342 "pipeline_parser_gen.cpp" break; - case 99: -#line 591 "src/mongo/db/cst/pipeline_grammar.yy" + case 114: +#line 652 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserDouble{YY_MOVE(yystack_[0].value.as<double>())}}; } -#line 2164 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2350 "pipeline_parser_gen.cpp" break; - case 100: -#line 594 "src/mongo/db/cst/pipeline_grammar.yy" + case 115: +#line 655 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserDouble{0.0}}; } -#line 2172 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2358 "pipeline_parser_gen.cpp" break; - case 101: -#line 600 "src/mongo/db/cst/pipeline_grammar.yy" + case 116: +#line 661 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserDecimal{YY_MOVE(yystack_[0].value.as<Decimal128>())}}; } -#line 2180 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2366 "pipeline_parser_gen.cpp" break; - case 102: -#line 603 "src/mongo/db/cst/pipeline_grammar.yy" + case 117: +#line 664 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserDecimal{0.0}}; } -#line 2188 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2374 "pipeline_parser_gen.cpp" break; - case 103: -#line 609 "src/mongo/db/cst/pipeline_grammar.yy" + case 118: +#line 670 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserBoolean{true}}; } -#line 2196 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2382 "pipeline_parser_gen.cpp" break; - case 104: -#line 612 "src/mongo/db/cst/pipeline_grammar.yy" + case 119: +#line 673 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{UserBoolean{false}}; } -#line 2204 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2390 "pipeline_parser_gen.cpp" break; - case 105: -#line 618 "src/mongo/db/cst/pipeline_grammar.yy" + case 120: +#line 679 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2210 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2396 "pipeline_parser_gen.cpp" break; - case 106: -#line 619 "src/mongo/db/cst/pipeline_grammar.yy" + case 121: +#line 680 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2216 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2402 "pipeline_parser_gen.cpp" break; - case 107: -#line 620 "src/mongo/db/cst/pipeline_grammar.yy" + case 122: +#line 681 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2222 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2408 "pipeline_parser_gen.cpp" break; - case 108: -#line 621 "src/mongo/db/cst/pipeline_grammar.yy" + case 123: +#line 682 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2228 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2414 "pipeline_parser_gen.cpp" break; - case 109: -#line 622 "src/mongo/db/cst/pipeline_grammar.yy" + case 124: +#line 683 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2234 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2420 "pipeline_parser_gen.cpp" break; - case 110: -#line 623 "src/mongo/db/cst/pipeline_grammar.yy" + case 125: +#line 684 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2240 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2426 "pipeline_parser_gen.cpp" break; - case 111: -#line 624 "src/mongo/db/cst/pipeline_grammar.yy" + case 126: +#line 685 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2246 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2432 "pipeline_parser_gen.cpp" break; - case 112: -#line 625 "src/mongo/db/cst/pipeline_grammar.yy" + case 127: +#line 686 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2252 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2438 "pipeline_parser_gen.cpp" break; - case 113: -#line 626 "src/mongo/db/cst/pipeline_grammar.yy" + case 128: +#line 687 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2258 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2444 "pipeline_parser_gen.cpp" break; - case 114: -#line 627 "src/mongo/db/cst/pipeline_grammar.yy" + case 129: +#line 688 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2264 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2450 "pipeline_parser_gen.cpp" break; - case 115: -#line 628 "src/mongo/db/cst/pipeline_grammar.yy" + case 130: +#line 689 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2270 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2456 "pipeline_parser_gen.cpp" break; - case 116: -#line 629 "src/mongo/db/cst/pipeline_grammar.yy" + case 131: +#line 690 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2276 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2462 "pipeline_parser_gen.cpp" break; - case 117: -#line 630 "src/mongo/db/cst/pipeline_grammar.yy" + case 132: +#line 691 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2282 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2468 "pipeline_parser_gen.cpp" break; - case 118: -#line 631 "src/mongo/db/cst/pipeline_grammar.yy" + case 133: +#line 692 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2288 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2474 "pipeline_parser_gen.cpp" break; - case 119: -#line 632 "src/mongo/db/cst/pipeline_grammar.yy" + case 134: +#line 693 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2294 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2480 "pipeline_parser_gen.cpp" break; - case 120: -#line 633 "src/mongo/db/cst/pipeline_grammar.yy" + case 135: +#line 694 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2300 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2486 "pipeline_parser_gen.cpp" break; - case 121: -#line 634 "src/mongo/db/cst/pipeline_grammar.yy" + case 136: +#line 695 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2306 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2492 "pipeline_parser_gen.cpp" break; - case 122: -#line 635 "src/mongo/db/cst/pipeline_grammar.yy" + case 137: +#line 696 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2312 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2498 "pipeline_parser_gen.cpp" break; - case 123: -#line 636 "src/mongo/db/cst/pipeline_grammar.yy" + case 138: +#line 697 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2318 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2504 "pipeline_parser_gen.cpp" break; - case 124: -#line 643 "src/mongo/db/cst/pipeline_grammar.yy" + case 139: +#line 704 "pipeline_grammar.yy" { } -#line 2324 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2510 "pipeline_parser_gen.cpp" break; - case 125: -#line 644 "src/mongo/db/cst/pipeline_grammar.yy" + case 140: +#line 705 "pipeline_grammar.yy" { yylhs.value.as<std::vector<CNode>>() = YY_MOVE(yystack_[0].value.as<std::vector<CNode>>()); yylhs.value.as<std::vector<CNode>>().emplace_back( YY_MOVE(yystack_[1].value.as<CNode>())); } -#line 2333 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2519 "pipeline_parser_gen.cpp" break; - case 126: -#line 651 "src/mongo/db/cst/pipeline_grammar.yy" + case 141: +#line 712 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2339 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2525 "pipeline_parser_gen.cpp" break; - case 127: -#line 651 "src/mongo/db/cst/pipeline_grammar.yy" + case 142: +#line 712 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2345 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2531 "pipeline_parser_gen.cpp" break; - case 128: -#line 655 "src/mongo/db/cst/pipeline_grammar.yy" + case 143: +#line 716 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ArrayChildren{YY_MOVE(yystack_[2].value.as<CNode>()), YY_MOVE(yystack_[1].value.as<CNode>())}}; } -#line 2353 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2539 "pipeline_parser_gen.cpp" break; - case 129: -#line 660 "src/mongo/db/cst/pipeline_grammar.yy" + case 144: +#line 721 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2359 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2545 "pipeline_parser_gen.cpp" break; - case 130: -#line 660 "src/mongo/db/cst/pipeline_grammar.yy" + case 145: +#line 721 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2365 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2551 "pipeline_parser_gen.cpp" break; - case 131: -#line 660 "src/mongo/db/cst/pipeline_grammar.yy" + case 146: +#line 721 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2371 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2557 "pipeline_parser_gen.cpp" break; - case 132: -#line 660 "src/mongo/db/cst/pipeline_grammar.yy" + case 147: +#line 721 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2377 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2563 "pipeline_parser_gen.cpp" break; - case 133: -#line 660 "src/mongo/db/cst/pipeline_grammar.yy" + case 148: +#line 721 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2383 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2569 "pipeline_parser_gen.cpp" break; - case 134: -#line 660 "src/mongo/db/cst/pipeline_grammar.yy" + case 149: +#line 721 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2389 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2575 "pipeline_parser_gen.cpp" break; - case 135: -#line 661 "src/mongo/db/cst/pipeline_grammar.yy" + case 150: +#line 722 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2395 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2581 "pipeline_parser_gen.cpp" break; - case 136: -#line 667 "src/mongo/db/cst/pipeline_grammar.yy" + case 151: +#line 728 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{YY_MOVE(yystack_[1].value.as<std::vector<CNode>>())}; } -#line 2403 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2589 "pipeline_parser_gen.cpp" break; - case 137: -#line 675 "src/mongo/db/cst/pipeline_grammar.yy" + case 152: +#line 736 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>()); } -#line 2411 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2597 "pipeline_parser_gen.cpp" break; - case 138: -#line 681 "src/mongo/db/cst/pipeline_grammar.yy" + case 153: +#line 742 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode::noopLeaf(); } -#line 2419 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2605 "pipeline_parser_gen.cpp" break; - case 139: -#line 684 "src/mongo/db/cst/pipeline_grammar.yy" + case 154: +#line 745 "pipeline_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 2428 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2614 "pipeline_parser_gen.cpp" break; - case 140: -#line 691 "src/mongo/db/cst/pipeline_grammar.yy" + case 155: +#line 752 "pipeline_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 2436 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2622 "pipeline_parser_gen.cpp" break; - case 141: -#line 698 "src/mongo/db/cst/pipeline_grammar.yy" + case 156: +#line 759 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = YY_MOVE(yystack_[0].value.as<CNode::Fieldname>()); } -#line 2442 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2628 "pipeline_parser_gen.cpp" break; - case 142: -#line 698 "src/mongo/db/cst/pipeline_grammar.yy" + case 157: +#line 759 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = YY_MOVE(yystack_[0].value.as<CNode::Fieldname>()); } -#line 2448 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2634 "pipeline_parser_gen.cpp" break; - case 143: -#line 698 "src/mongo/db/cst/pipeline_grammar.yy" + case 158: +#line 759 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = YY_MOVE(yystack_[0].value.as<CNode::Fieldname>()); } -#line 2454 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2640 "pipeline_parser_gen.cpp" break; - case 144: -#line 698 "src/mongo/db/cst/pipeline_grammar.yy" + case 159: +#line 759 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = YY_MOVE(yystack_[0].value.as<CNode::Fieldname>()); } -#line 2460 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2646 "pipeline_parser_gen.cpp" break; - case 145: -#line 702 "src/mongo/db/cst/pipeline_grammar.yy" + case 160: +#line 763 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = UserFieldname{"_id"}; } -#line 2468 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2654 "pipeline_parser_gen.cpp" break; - case 146: -#line 708 "src/mongo/db/cst/pipeline_grammar.yy" + case 161: +#line 769 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2474 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2660 "pipeline_parser_gen.cpp" break; - case 147: -#line 709 "src/mongo/db/cst/pipeline_grammar.yy" + case 162: +#line 769 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2480 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2666 "pipeline_parser_gen.cpp" break; - case 148: -#line 713 "src/mongo/db/cst/pipeline_grammar.yy" + case 163: +#line 769 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2672 "pipeline_parser_gen.cpp" + break; + + case 164: +#line 769 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2678 "pipeline_parser_gen.cpp" + break; + + case 165: +#line 769 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2684 "pipeline_parser_gen.cpp" + break; + + case 166: +#line 769 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2690 "pipeline_parser_gen.cpp" + break; + + case 167: +#line 769 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2696 "pipeline_parser_gen.cpp" + break; + + case 168: +#line 769 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2702 "pipeline_parser_gen.cpp" + break; + + case 169: +#line 769 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2708 "pipeline_parser_gen.cpp" + break; + + case 170: +#line 769 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2714 "pipeline_parser_gen.cpp" + break; + + case 171: +#line 769 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2720 "pipeline_parser_gen.cpp" + break; + + case 172: +#line 769 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2726 "pipeline_parser_gen.cpp" + break; + + case 173: +#line 769 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2732 "pipeline_parser_gen.cpp" + break; + + case 174: +#line 770 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2738 "pipeline_parser_gen.cpp" + break; + + case 175: +#line 770 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2744 "pipeline_parser_gen.cpp" + break; + + case 176: +#line 770 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2750 "pipeline_parser_gen.cpp" + break; + + case 177: +#line 770 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); + } +#line 2756 "pipeline_parser_gen.cpp" + break; + + case 178: +#line 774 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::add, @@ -2573,44 +2881,199 @@ int PipelineParserGen::parse() { yylhs.value.as<CNode>().objectChildren()[0].second.arrayChildren(); array.insert(array.end(), others.begin(), others.end()); } -#line 2492 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2768 "pipeline_parser_gen.cpp" break; - case 149: -#line 723 "src/mongo/db/cst/pipeline_grammar.yy" + case 179: +#line 784 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::atan2, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2501 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2777 "pipeline_parser_gen.cpp" break; - case 150: -#line 730 "src/mongo/db/cst/pipeline_grammar.yy" + case 180: +#line 790 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ + {KeyFieldname::abs, YY_MOVE(yystack_[1].value.as<CNode>())}}}; + } +#line 2785 "pipeline_parser_gen.cpp" + break; + + case 181: +#line 795 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ + {KeyFieldname::ceil, YY_MOVE(yystack_[1].value.as<CNode>())}}}; + } +#line 2793 "pipeline_parser_gen.cpp" + break; + + case 182: +#line 800 "pipeline_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 2802 "pipeline_parser_gen.cpp" + break; + + case 183: +#line 806 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ + {KeyFieldname::exponent, YY_MOVE(yystack_[1].value.as<CNode>())}}}; + } +#line 2810 "pipeline_parser_gen.cpp" + break; + + case 184: +#line 811 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ + {KeyFieldname::floor, YY_MOVE(yystack_[1].value.as<CNode>())}}}; + } +#line 2818 "pipeline_parser_gen.cpp" + break; + + case 185: +#line 816 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ + {KeyFieldname::ln, YY_MOVE(yystack_[1].value.as<CNode>())}}}; + } +#line 2826 "pipeline_parser_gen.cpp" + break; + + case 186: +#line 821 "pipeline_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 2835 "pipeline_parser_gen.cpp" + break; + + case 187: +#line 827 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ + {KeyFieldname::logten, YY_MOVE(yystack_[1].value.as<CNode>())}}}; + } +#line 2843 "pipeline_parser_gen.cpp" + break; + + case 188: +#line 832 "pipeline_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 2852 "pipeline_parser_gen.cpp" + break; + + case 189: +#line 838 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ + {KeyFieldname::multiply, + CNode{CNode::ArrayChildren{YY_MOVE(yystack_[4].value.as<CNode>()), + YY_MOVE(yystack_[3].value.as<CNode>())}}}}}; + auto&& others = YY_MOVE(yystack_[2].value.as<std::vector<CNode>>()); + auto&& array = + yylhs.value.as<CNode>().objectChildren()[0].second.arrayChildren(); + array.insert(array.end(), others.begin(), others.end()); + } +#line 2864 "pipeline_parser_gen.cpp" + break; + + case 190: +#line 847 "pipeline_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 2873 "pipeline_parser_gen.cpp" + break; + + case 191: +#line 853 "pipeline_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 2882 "pipeline_parser_gen.cpp" + break; + + case 192: +#line 859 "pipeline_grammar.yy" + { + yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ + {KeyFieldname::sqrt, YY_MOVE(yystack_[1].value.as<CNode>())}}}; + } +#line 2890 "pipeline_parser_gen.cpp" + break; + + case 193: +#line 864 "pipeline_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 2899 "pipeline_parser_gen.cpp" + break; + + case 194: +#line 870 "pipeline_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 2908 "pipeline_parser_gen.cpp" + break; + + case 195: +#line 876 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2507 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2914 "pipeline_parser_gen.cpp" break; - case 151: -#line 730 "src/mongo/db/cst/pipeline_grammar.yy" + case 196: +#line 876 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2513 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2920 "pipeline_parser_gen.cpp" break; - case 152: -#line 730 "src/mongo/db/cst/pipeline_grammar.yy" + case 197: +#line 876 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2519 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2926 "pipeline_parser_gen.cpp" break; - case 153: -#line 734 "src/mongo/db/cst/pipeline_grammar.yy" + case 198: +#line 880 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::andExpr, @@ -2621,11 +3084,11 @@ int PipelineParserGen::parse() { yylhs.value.as<CNode>().objectChildren()[0].second.arrayChildren(); array.insert(array.end(), others.begin(), others.end()); } -#line 2531 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2938 "pipeline_parser_gen.cpp" break; - case 154: -#line 744 "src/mongo/db/cst/pipeline_grammar.yy" + case 199: +#line 890 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::orExpr, @@ -2636,472 +3099,472 @@ int PipelineParserGen::parse() { yylhs.value.as<CNode>().objectChildren()[0].second.arrayChildren(); array.insert(array.end(), others.begin(), others.end()); } -#line 2543 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2950 "pipeline_parser_gen.cpp" break; - case 155: -#line 754 "src/mongo/db/cst/pipeline_grammar.yy" + case 200: +#line 900 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::notExpr, CNode{CNode::ArrayChildren{YY_MOVE(yystack_[2].value.as<CNode>())}}}}}; } -#line 2552 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2959 "pipeline_parser_gen.cpp" break; - case 156: -#line 761 "src/mongo/db/cst/pipeline_grammar.yy" + case 201: +#line 907 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2558 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2965 "pipeline_parser_gen.cpp" break; - case 157: -#line 761 "src/mongo/db/cst/pipeline_grammar.yy" + case 202: +#line 907 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2564 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2971 "pipeline_parser_gen.cpp" break; - case 158: -#line 765 "src/mongo/db/cst/pipeline_grammar.yy" + case 203: +#line 911 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::constExpr, CNode{CNode::ArrayChildren{YY_MOVE(yystack_[2].value.as<CNode>())}}}}}; } -#line 2573 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2980 "pipeline_parser_gen.cpp" break; - case 159: -#line 772 "src/mongo/db/cst/pipeline_grammar.yy" + case 204: +#line 918 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::literal, CNode{CNode::ArrayChildren{YY_MOVE(yystack_[2].value.as<CNode>())}}}}}; } -#line 2582 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2989 "pipeline_parser_gen.cpp" break; - case 160: -#line 779 "src/mongo/db/cst/pipeline_grammar.yy" + case 205: +#line 925 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2588 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 2995 "pipeline_parser_gen.cpp" break; - case 161: -#line 779 "src/mongo/db/cst/pipeline_grammar.yy" + case 206: +#line 925 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2594 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3001 "pipeline_parser_gen.cpp" break; - case 162: -#line 783 "src/mongo/db/cst/pipeline_grammar.yy" + case 207: +#line 929 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2600 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3007 "pipeline_parser_gen.cpp" break; - case 163: -#line 783 "src/mongo/db/cst/pipeline_grammar.yy" + case 208: +#line 929 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2606 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3013 "pipeline_parser_gen.cpp" break; - case 164: -#line 787 "src/mongo/db/cst/pipeline_grammar.yy" + case 209: +#line 933 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{YY_MOVE(yystack_[1].value.as<std::vector<CNode>>())}; } -#line 2614 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3021 "pipeline_parser_gen.cpp" break; - case 165: -#line 793 "src/mongo/db/cst/pipeline_grammar.yy" + case 210: +#line 939 "pipeline_grammar.yy" { } -#line 2620 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3027 "pipeline_parser_gen.cpp" break; - case 166: -#line 794 "src/mongo/db/cst/pipeline_grammar.yy" + case 211: +#line 940 "pipeline_grammar.yy" { yylhs.value.as<std::vector<CNode>>() = YY_MOVE(yystack_[0].value.as<std::vector<CNode>>()); yylhs.value.as<std::vector<CNode>>().emplace_back( YY_MOVE(yystack_[1].value.as<CNode>())); } -#line 2629 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3036 "pipeline_parser_gen.cpp" break; - case 167: -#line 801 "src/mongo/db/cst/pipeline_grammar.yy" + case 212: +#line 947 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[1].value.as<CNode>()); } -#line 2637 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3044 "pipeline_parser_gen.cpp" break; - case 168: -#line 807 "src/mongo/db/cst/pipeline_grammar.yy" + case 213: +#line 953 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode::noopLeaf(); } -#line 2645 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3052 "pipeline_parser_gen.cpp" break; - case 169: -#line 810 "src/mongo/db/cst/pipeline_grammar.yy" + case 214: +#line 956 "pipeline_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 2654 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3061 "pipeline_parser_gen.cpp" break; - case 170: -#line 817 "src/mongo/db/cst/pipeline_grammar.yy" + case 215: +#line 963 "pipeline_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 2662 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3069 "pipeline_parser_gen.cpp" break; - case 171: -#line 824 "src/mongo/db/cst/pipeline_grammar.yy" + case 216: +#line 970 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = YY_MOVE(yystack_[0].value.as<CNode::Fieldname>()); } -#line 2668 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3075 "pipeline_parser_gen.cpp" break; - case 172: -#line 825 "src/mongo/db/cst/pipeline_grammar.yy" + case 217: +#line 971 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = YY_MOVE(yystack_[0].value.as<CNode::Fieldname>()); } -#line 2674 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3081 "pipeline_parser_gen.cpp" break; - case 173: -#line 826 "src/mongo/db/cst/pipeline_grammar.yy" + case 218: +#line 972 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = YY_MOVE(yystack_[0].value.as<CNode::Fieldname>()); } -#line 2680 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3087 "pipeline_parser_gen.cpp" break; - case 174: -#line 827 "src/mongo/db/cst/pipeline_grammar.yy" + case 219: +#line 973 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = YY_MOVE(yystack_[0].value.as<CNode::Fieldname>()); } -#line 2686 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3093 "pipeline_parser_gen.cpp" break; - case 175: -#line 828 "src/mongo/db/cst/pipeline_grammar.yy" + case 220: +#line 974 "pipeline_grammar.yy" { yylhs.value.as<CNode::Fieldname>() = YY_MOVE(yystack_[0].value.as<CNode::Fieldname>()); } -#line 2692 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3099 "pipeline_parser_gen.cpp" break; - case 176: -#line 831 "src/mongo/db/cst/pipeline_grammar.yy" + case 221: +#line 977 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2698 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3105 "pipeline_parser_gen.cpp" break; - case 177: -#line 831 "src/mongo/db/cst/pipeline_grammar.yy" + case 222: +#line 977 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2704 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3111 "pipeline_parser_gen.cpp" break; - case 178: -#line 831 "src/mongo/db/cst/pipeline_grammar.yy" + case 223: +#line 977 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2710 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3117 "pipeline_parser_gen.cpp" break; - case 179: -#line 831 "src/mongo/db/cst/pipeline_grammar.yy" + case 224: +#line 977 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2716 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3123 "pipeline_parser_gen.cpp" break; - case 180: -#line 831 "src/mongo/db/cst/pipeline_grammar.yy" + case 225: +#line 977 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2722 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3129 "pipeline_parser_gen.cpp" break; - case 181: -#line 831 "src/mongo/db/cst/pipeline_grammar.yy" + case 226: +#line 977 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2728 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3135 "pipeline_parser_gen.cpp" break; - case 182: -#line 831 "src/mongo/db/cst/pipeline_grammar.yy" + case 227: +#line 977 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2734 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3141 "pipeline_parser_gen.cpp" break; - case 183: -#line 833 "src/mongo/db/cst/pipeline_grammar.yy" + case 228: +#line 979 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::cmp, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2743 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3150 "pipeline_parser_gen.cpp" break; - case 184: -#line 838 "src/mongo/db/cst/pipeline_grammar.yy" + case 229: +#line 984 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::eq, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2752 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3159 "pipeline_parser_gen.cpp" break; - case 185: -#line 843 "src/mongo/db/cst/pipeline_grammar.yy" + case 230: +#line 989 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::gt, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2761 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3168 "pipeline_parser_gen.cpp" break; - case 186: -#line 848 "src/mongo/db/cst/pipeline_grammar.yy" + case 231: +#line 994 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::gte, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2770 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3177 "pipeline_parser_gen.cpp" break; - case 187: -#line 853 "src/mongo/db/cst/pipeline_grammar.yy" + case 232: +#line 999 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::lt, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2779 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3186 "pipeline_parser_gen.cpp" break; - case 188: -#line 858 "src/mongo/db/cst/pipeline_grammar.yy" + case 233: +#line 1004 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::lte, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2788 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3195 "pipeline_parser_gen.cpp" break; - case 189: -#line 863 "src/mongo/db/cst/pipeline_grammar.yy" + case 234: +#line 1009 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::ne, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2797 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3204 "pipeline_parser_gen.cpp" break; - case 190: -#line 869 "src/mongo/db/cst/pipeline_grammar.yy" + case 235: +#line 1015 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2803 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3210 "pipeline_parser_gen.cpp" break; - case 191: -#line 870 "src/mongo/db/cst/pipeline_grammar.yy" + case 236: +#line 1016 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2809 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3216 "pipeline_parser_gen.cpp" break; - case 192: -#line 871 "src/mongo/db/cst/pipeline_grammar.yy" + case 237: +#line 1017 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2815 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3222 "pipeline_parser_gen.cpp" break; - case 193: -#line 872 "src/mongo/db/cst/pipeline_grammar.yy" + case 238: +#line 1018 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2821 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3228 "pipeline_parser_gen.cpp" break; - case 194: -#line 873 "src/mongo/db/cst/pipeline_grammar.yy" + case 239: +#line 1019 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2827 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3234 "pipeline_parser_gen.cpp" break; - case 195: -#line 874 "src/mongo/db/cst/pipeline_grammar.yy" + case 240: +#line 1020 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2833 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3240 "pipeline_parser_gen.cpp" break; - case 196: -#line 875 "src/mongo/db/cst/pipeline_grammar.yy" + case 241: +#line 1021 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2839 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3246 "pipeline_parser_gen.cpp" break; - case 197: -#line 876 "src/mongo/db/cst/pipeline_grammar.yy" + case 242: +#line 1022 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2845 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3252 "pipeline_parser_gen.cpp" break; - case 198: -#line 877 "src/mongo/db/cst/pipeline_grammar.yy" + case 243: +#line 1023 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2851 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3258 "pipeline_parser_gen.cpp" break; - case 199: -#line 878 "src/mongo/db/cst/pipeline_grammar.yy" + case 244: +#line 1024 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2857 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3264 "pipeline_parser_gen.cpp" break; - case 200: -#line 884 "src/mongo/db/cst/pipeline_grammar.yy" + case 245: +#line 1030 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2863 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3270 "pipeline_parser_gen.cpp" break; - case 201: -#line 884 "src/mongo/db/cst/pipeline_grammar.yy" + case 246: +#line 1030 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2869 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3276 "pipeline_parser_gen.cpp" break; - case 202: -#line 884 "src/mongo/db/cst/pipeline_grammar.yy" + case 247: +#line 1030 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2875 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3282 "pipeline_parser_gen.cpp" break; - case 203: -#line 884 "src/mongo/db/cst/pipeline_grammar.yy" + case 248: +#line 1030 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2881 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3288 "pipeline_parser_gen.cpp" break; - case 204: -#line 884 "src/mongo/db/cst/pipeline_grammar.yy" + case 249: +#line 1030 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = YY_MOVE(yystack_[0].value.as<CNode>()); } -#line 2887 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3294 "pipeline_parser_gen.cpp" break; - case 205: -#line 888 "src/mongo/db/cst/pipeline_grammar.yy" + case 250: +#line 1034 "pipeline_grammar.yy" { yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = std::pair{KeyFieldname::onErrorArg, CNode{KeyValue::absentKey}}; } -#line 2895 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3302 "pipeline_parser_gen.cpp" break; - case 206: -#line 891 "src/mongo/db/cst/pipeline_grammar.yy" + case 251: +#line 1037 "pipeline_grammar.yy" { yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = std::pair{ KeyFieldname::onErrorArg, YY_MOVE(yystack_[0].value.as<CNode>())}; } -#line 2903 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3310 "pipeline_parser_gen.cpp" break; - case 207: -#line 898 "src/mongo/db/cst/pipeline_grammar.yy" + case 252: +#line 1044 "pipeline_grammar.yy" { yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = std::pair{KeyFieldname::onNullArg, CNode{KeyValue::absentKey}}; } -#line 2911 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3318 "pipeline_parser_gen.cpp" break; - case 208: -#line 901 "src/mongo/db/cst/pipeline_grammar.yy" + case 253: +#line 1047 "pipeline_grammar.yy" { yylhs.value.as<std::pair<CNode::Fieldname, CNode>>() = std::pair{ KeyFieldname::onNullArg, YY_MOVE(yystack_[0].value.as<CNode>())}; } -#line 2919 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3326 "pipeline_parser_gen.cpp" break; - case 209: -#line 907 "src/mongo/db/cst/pipeline_grammar.yy" + case 254: +#line 1053 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::convert, @@ -3113,92 +3576,92 @@ int PipelineParserGen::parse() { YY_MOVE(yystack_[2] .value.as<std::pair<CNode::Fieldname, CNode>>())}}}}}; } -#line 2930 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3337 "pipeline_parser_gen.cpp" break; - case 210: -#line 916 "src/mongo/db/cst/pipeline_grammar.yy" + case 255: +#line 1062 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::toBool, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2938 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3345 "pipeline_parser_gen.cpp" break; - case 211: -#line 921 "src/mongo/db/cst/pipeline_grammar.yy" + case 256: +#line 1067 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::toDate, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2946 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3353 "pipeline_parser_gen.cpp" break; - case 212: -#line 926 "src/mongo/db/cst/pipeline_grammar.yy" + case 257: +#line 1072 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::toDecimal, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2954 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3361 "pipeline_parser_gen.cpp" break; - case 213: -#line 931 "src/mongo/db/cst/pipeline_grammar.yy" + case 258: +#line 1077 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::toDouble, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2962 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3369 "pipeline_parser_gen.cpp" break; - case 214: -#line 936 "src/mongo/db/cst/pipeline_grammar.yy" + case 259: +#line 1082 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::toInt, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2970 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3377 "pipeline_parser_gen.cpp" break; - case 215: -#line 941 "src/mongo/db/cst/pipeline_grammar.yy" + case 260: +#line 1087 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::toLong, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2978 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3385 "pipeline_parser_gen.cpp" break; - case 216: -#line 946 "src/mongo/db/cst/pipeline_grammar.yy" + case 261: +#line 1092 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::toObjectId, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2986 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3393 "pipeline_parser_gen.cpp" break; - case 217: -#line 951 "src/mongo/db/cst/pipeline_grammar.yy" + case 262: +#line 1097 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::toString, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 2994 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3401 "pipeline_parser_gen.cpp" break; - case 218: -#line 956 "src/mongo/db/cst/pipeline_grammar.yy" + case 263: +#line 1102 "pipeline_grammar.yy" { yylhs.value.as<CNode>() = CNode{CNode::ObjectChildren{ {KeyFieldname::type, YY_MOVE(yystack_[1].value.as<CNode>())}}}; } -#line 3002 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3409 "pipeline_parser_gen.cpp" break; -#line 3006 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 3413 "pipeline_parser_gen.cpp" default: break; @@ -3362,161 +3825,201 @@ void PipelineParserGen::error(const syntax_error& yyexc) { error(yyexc.location, yyexc.what()); } +#if YYDEBUG || 0 +const char* PipelineParserGen::symbol_name(symbol_kind_type yysymbol) { + return yytname_[yysymbol]; +} +#endif // #if YYDEBUG || 0 + -const short PipelineParserGen::yypact_ninf_ = -190; +const short PipelineParserGen::yypact_ninf_ = -226; const signed char PipelineParserGen::yytable_ninf_ = -1; const short PipelineParserGen::yypact_[] = { - 29, 35, 39, 59, 34, -190, 46, 48, 49, 50, 48, -190, 47, -190, -190, -190, - -190, -190, -190, -190, 51, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, - -190, -190, -190, 32, -190, 43, 63, 35, -190, 297, 48, 17, -190, -190, -190, 167, - -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, - -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, - -190, -190, -190, -190, -190, -190, 167, -190, -190, -190, -190, -190, 66, -190, 58, 374, - 129, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, - -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, - -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, 15, - 75, 77, 79, 84, 85, 87, 89, 77, 77, 77, 77, 77, 77, 77, -190, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 222, -190, -190, -190, -190, -190, -190, -190, - -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, - -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, 129, -190, 90, 95, - 129, 129, 98, 129, 147, 147, 129, 129, 99, 100, 101, 102, 104, 108, 112, 70, - 116, 118, 119, 120, 121, 122, 123, 124, 125, -190, -190, 129, -190, -190, -190, -190, - -190, -190, -190, -190, 129, 129, -190, 129, -190, 147, 137, -190, -190, -190, -190, 138, - 129, 139, -190, -190, -190, -190, -190, -190, -190, 129, -190, -190, -190, -190, -190, -190, - -190, -190, -190, -190, 129, 140, 129, 345, 147, 141, 126, 127, 129, 131, 103, 142, - -190, 143, -190, -190, -190, -190, -190, -190, 147, -190, -190, -190, -190, -190, 148, -190, - 20, 149, 157, -190, 158, -190, -190, -190, -190, -190, 114, -190, -190, -190, 129, 115, - -190, 129, 160, -190, 162, -190}; - -const unsigned char PipelineParserGen::yydefact_[] = { + 35, 39, 44, 77, 41, -226, 43, 61, 51, 52, 61, -226, 60, -226, -226, -226, + -226, -226, -226, -226, 62, -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, 45, -226, 48, 70, 39, -226, 278, 61, 7, -226, -226, -226, 40, + -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, -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, 40, -226, -226, -226, -226, -226, 71, -226, 55, 487, 179, + -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, -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, -2, 76, 81, + 82, 83, 84, 92, 93, 81, 81, 81, 81, 81, 81, 81, -226, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 94, 179, 179, 179, 95, 179, 96, 97, + 98, 100, 179, 101, 104, 443, -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, -226, 179, -226, 108, 78, 179, 179, 113, + 179, 197, 197, 179, 179, 119, 129, 130, 131, 133, 141, 142, 85, 144, 146, 148, + 151, 152, 153, 154, 155, 158, 159, 160, 179, 170, 171, 172, 179, 173, 179, 179, + 179, 179, 174, 179, 179, -226, -226, 179, -226, -226, -226, -226, -226, -226, -226, -226, + 179, 179, -226, 179, -226, 197, 175, -226, -226, -226, -226, 180, 179, 187, -226, -226, + -226, -226, -226, -226, -226, 179, -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, 179, -226, -226, -226, 179, -226, 179, 179, 179, 179, -226, 179, 179, -226, 179, + 189, 179, 380, 197, 193, 176, 181, 179, 199, 138, 198, 205, 206, 179, 207, 208, + 209, 210, 211, -226, 212, -226, -226, -226, -226, -226, -226, 197, -226, -226, -226, -226, + -226, 213, -226, 116, 216, 217, 218, 219, 220, 222, 223, 224, 225, 226, -226, 227, + -226, -226, -226, -226, -226, 115, -226, -226, -226, 228, -226, -226, -226, -226, -226, -226, + -226, 179, 168, -226, -226, 179, 230, -226, 231, -226}; + +const short PipelineParserGen::yydefact_[] = { 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5, 0, 7, 8, 9, 10, 11, 12, - 2, 0, 96, 98, 100, 102, 95, 97, 99, 101, 16, 17, 18, 19, 21, 23, 0, 20, 0, + 2, 0, 111, 113, 115, 117, 110, 112, 114, 116, 16, 17, 18, 19, 21, 23, 0, 20, 0, 0, 3, 14, 0, 0, 0, 6, 4, 22, 0, 44, 47, 48, 49, 46, 45, 50, 51, 52, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 53, 54, 55, 56, 43, 0, 40, 41, 42, 39, 24, 0, 81, 0, - 138, 124, 29, 31, 33, 35, 36, 37, 28, 30, 32, 34, 27, 25, 38, 129, 130, 131, 146, - 147, 132, 150, 151, 152, 133, 156, 157, 134, 176, 177, 178, 179, 180, 181, 182, 135, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 26, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 104, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 112, 113, 114, 115, 116, 121, - 117, 118, 119, 122, 123, 105, 106, 107, 108, 120, 109, 110, 111, 126, 124, 127, 0, 0, 0, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 53, 54, 55, 56, 43, 0, 40, 41, 42, 39, 24, 0, 96, 0, 153, 139, 29, 31, + 33, 35, 36, 37, 28, 30, 32, 34, 27, 25, 38, 144, 145, 146, 161, 162, 147, 195, 196, + 197, 148, 201, 202, 149, 221, 222, 223, 224, 225, 226, 227, 150, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 26, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 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, 118, 119, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 127, 128, 129, 130, 131, 136, 132, 133, 134, 137, 138, 120, 121, 122, 123, 135, 124, 125, + 126, 141, 139, 142, 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, 137, 145, 0, 142, 143, 141, 144, 139, 125, 136, 15, 0, 0, 149, - 0, 168, 165, 0, 160, 161, 162, 163, 0, 0, 0, 183, 184, 185, 186, 187, 188, 189, 0, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 140, 124, 0, 124, 0, 165, 0, 0, 0, 124, - 0, 0, 0, 128, 0, 167, 172, 173, 174, 171, 175, 0, 169, 166, 164, 158, 159, 0, 155, - 0, 0, 0, 170, 0, 201, 202, 203, 204, 200, 205, 148, 153, 154, 0, 207, 206, 0, 0, - 208, 0, 209}; + 0, 0, 0, 0, 0, 0, 0, 0, 152, 160, 0, 157, 158, 156, 159, 154, 140, 151, 15, + 0, 0, 179, 0, 213, 210, 0, 205, 206, 207, 208, 0, 0, 0, 228, 229, 230, 231, 232, + 233, 234, 0, 255, 256, 257, 258, 259, 260, 261, 262, 263, 180, 181, 0, 183, 184, 185, 0, + 187, 0, 0, 0, 0, 192, 0, 0, 155, 139, 0, 139, 0, 210, 0, 0, 0, 139, 0, + 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 143, 0, 212, 217, 218, 219, 216, 220, 0, + 214, 211, 209, 203, 204, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, + 0, 246, 247, 248, 249, 245, 250, 182, 186, 188, 0, 190, 191, 193, 194, 178, 198, 199, 0, + 252, 189, 251, 0, 0, 253, 0, 254}; const short PipelineParserGen::yypgoto_[] = { - -190, -190, -190, -160, -158, -112, -146, -111, -190, -190, -190, -190, -190, -190, -190, -190, - -6, -190, -5, -7, -1, -190, -190, -186, -36, -190, -190, -190, -190, -190, -190, -190, - -189, -190, -190, -190, -190, 130, -190, -190, -190, -190, -190, -190, -190, -190, 132, 23, - -147, -15, -109, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, - -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, - -190, -190, -190, -190, -190, -190, -183, -107, -190, 62, -190}; + -226, -226, -226, -203, -201, -131, -183, -118, -226, -226, -226, -226, -226, -226, -226, -226, + -6, -226, -5, -7, -1, -226, -226, -225, -36, -226, -226, -226, -226, -226, -226, -226, + -219, -226, -226, -226, -226, 200, -226, -226, -226, -226, -226, -226, -226, -226, 136, 14, + -176, -16, -124, -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, -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -221, -117, -226, 54, -226}; const short PipelineParserGen::yydefgoto_[] = { - -1, 86, 235, 87, 88, 89, 90, 239, 296, 91, 240, 297, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 280, 195, 196, 197, 198, 199, 200, 201, 202, 203, 252, 253, 254, 279, 4, - 12, 13, 14, 15, 16, 17, 18, 41, 108, 33, 204, 205, 210, 110, 111, 168, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 314, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 319, 322, 206, 281, 2, 37, 38}; + -1, 101, 295, 102, 103, 104, 105, 299, 379, 106, 300, 380, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 355, 240, 241, 242, 243, 244, 245, 246, 247, 248, 312, 313, 314, + 354, 4, 12, 13, 14, 15, 16, 17, 18, 41, 123, 33, 249, 250, 255, 125, 126, 213, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 405, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 418, 422, 251, 356, 2, 37, 38}; const short PipelineParserGen::yytable_[] = { - 31, 29, 30, 31, 29, 30, 32, 94, 236, 32, 237, 107, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 241, 238, 251, 251, 23, 250, 255, 21, 22, 23, 24, 109, 36, 1, 31, 29, 30, - 3, 5, 19, 32, 216, 217, 218, 219, 220, 221, 222, 20, 107, 39, 34, 35, 42, 40, 21, - 22, 23, 24, 251, 244, 245, 43, 247, 92, 44, 256, 257, 93, 142, 109, 93, 6, 7, 8, - 9, 10, 11, 143, 208, 27, 209, 25, 211, 26, 27, 28, 275, 212, 213, 251, 214, 287, 215, - 289, 242, 276, 277, 243, 278, 302, 246, 258, 259, 260, 261, 251, 262, 284, 307, 25, 263, 26, - 27, 28, 264, 265, 286, 291, 266, 292, 267, 268, 269, 270, 271, 272, 273, 274, 300, 301, 95, - 294, 96, 303, 207, 21, 22, 23, 24, 169, 170, 282, 283, 285, 288, 299, 305, 306, 248, 304, - 249, 315, 308, 21, 22, 23, 24, 169, 170, 316, 317, 318, 324, 321, 325, 293, 295, 45, 95, - 320, 96, 298, 323, 97, 98, 99, 100, 101, 102, 93, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 25, 181, 26, 27, 28, 182, 183, 93, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 25, 181, 26, 27, 28, 182, 183, 0, 141, 93, 223, 0, 0, 0, 0, 0, 233, 0, - 0, 234, 103, 0, 104, 105, 106, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 313, 81, 82, 83, 84, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 311, 309, 310, 0, 46, 0, 312, + 31, 29, 30, 31, 29, 30, 32, 109, 23, 32, 296, 122, 297, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 36, 281, 282, 283, 301, 285, 298, 124, 310, 315, 290, 31, 29, 30, + 311, 311, 1, 32, 3, 110, 5, 111, 20, 19, 112, 113, 114, 115, 116, 117, 34, 35, 107, + 261, 262, 263, 264, 265, 266, 267, 39, 122, 40, 42, 43, 21, 22, 23, 24, 44, 108, 172, + 173, 304, 305, 27, 307, 253, 303, 316, 317, 124, 254, 256, 257, 258, 311, 6, 7, 8, 9, + 10, 11, 259, 260, 280, 284, 286, 287, 288, 337, 289, 291, 108, 341, 292, 343, 344, 345, 346, + 302, 348, 349, 306, 118, 350, 119, 120, 121, 318, 21, 22, 23, 24, 351, 352, 370, 353, 372, + 319, 320, 321, 311, 322, 385, 25, 359, 26, 27, 28, 391, 323, 324, 325, 326, 361, 327, 374, + 328, 375, 398, 329, 330, 331, 332, 333, 311, 362, 334, 335, 336, 363, 252, 364, 365, 366, 367, + 377, 368, 369, 338, 339, 340, 342, 347, 417, 383, 357, 110, 108, 111, 384, 358, 21, 22, 23, + 24, 214, 215, 360, 25, 371, 26, 27, 28, 382, 308, 387, 309, 386, 388, 21, 22, 23, 24, + 214, 215, 389, 390, 392, 393, 394, 395, 396, 397, 399, 406, 407, 408, 376, 410, 409, 411, 412, + 413, 414, 415, 416, 419, 421, 424, 425, 378, 171, 381, 45, 0, 420, 268, 0, 0, 423, 108, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 25, 226, 26, 27, 28, 227, 228, 108, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 25, 226, 26, 27, 28, 227, 228, 46, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 290, 0, 0, 234, 0, 0, 0, 0, 0, 0, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167}; + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 0, 0, 0, 0, 0, 0, 404, 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, + 402, 400, 401, 0, 373, 0, 403, 294, 0, 0, 0, 0, 0, 0, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 293, 0, 0, 294, 0, 0, 0, 0, 0, + 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 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, 96, 97, 98, 99, 100, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 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, 210, 211, 212}; const short PipelineParserGen::yycheck_[] = { - 7, 7, 7, 10, 10, 10, 7, 43, 168, 10, 168, 47, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 204, 168, 212, 213, 10, 212, 213, 8, 9, 10, 11, 47, 10, 5, 42, 42, 42, - 3, 0, 6, 42, 151, 152, 153, 154, 155, 156, 157, 3, 86, 4, 3, 3, 22, 4, 8, - 9, 10, 11, 249, 208, 209, 20, 211, 42, 3, 214, 215, 52, 4, 86, 52, 14, 15, 16, - 17, 18, 19, 21, 5, 66, 5, 63, 5, 65, 66, 67, 235, 5, 5, 280, 5, 276, 5, - 278, 6, 244, 245, 4, 247, 284, 4, 4, 4, 4, 4, 296, 4, 256, 296, 63, 4, 65, - 66, 67, 4, 47, 265, 279, 4, 279, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, - 279, 5, 4, 143, 8, 9, 10, 11, 12, 13, 6, 6, 6, 6, 6, 6, 6, 3, 48, - 5, 4, 6, 8, 9, 10, 11, 12, 13, 4, 4, 49, 4, 50, 4, 279, 279, 39, 3, - 318, 5, 280, 321, 8, 9, 10, 11, 12, 13, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, -1, 86, 52, 158, -1, -1, -1, -1, -1, 4, -1, - -1, 7, 63, -1, 65, 66, 67, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 304, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 304, 304, 304, -1, 4, -1, 304, + 7, 7, 7, 10, 10, 10, 7, 43, 10, 10, 213, 47, 213, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 10, 201, 202, 203, 249, 205, 213, 47, 257, 258, 210, 42, 42, 42, + 257, 258, 5, 42, 3, 3, 0, 5, 3, 6, 8, 9, 10, 11, 12, 13, 3, 3, 42, + 181, 182, 183, 184, 185, 186, 187, 4, 101, 4, 22, 20, 8, 9, 10, 11, 3, 67, 4, + 21, 253, 254, 81, 256, 5, 4, 259, 260, 101, 5, 5, 5, 5, 309, 14, 15, 16, 17, + 18, 19, 5, 5, 5, 5, 5, 5, 5, 280, 5, 5, 67, 284, 5, 286, 287, 288, 289, + 6, 291, 292, 4, 78, 295, 80, 81, 82, 4, 8, 9, 10, 11, 304, 305, 351, 307, 353, + 4, 4, 4, 355, 4, 359, 78, 316, 80, 81, 82, 365, 4, 4, 62, 4, 325, 4, 354, + 4, 354, 379, 4, 4, 4, 4, 4, 379, 337, 4, 4, 4, 341, 173, 343, 344, 345, 346, + 354, 348, 349, 4, 4, 4, 4, 4, 64, 4, 6, 3, 67, 5, 4, 6, 8, 9, 10, + 11, 12, 13, 6, 78, 6, 80, 81, 82, 6, 3, 63, 5, 4, 6, 8, 9, 10, 11, + 12, 13, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 354, 4, 6, 4, 4, + 4, 4, 4, 4, 4, 65, 4, 4, 354, 101, 355, 39, -1, 417, 188, -1, -1, 421, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 4, -1, -1, 7, -1, -1, -1, -1, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 4, -1, -1, 7, -1, -1, -1, -1, -1, -1, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46}; + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, -1, -1, -1, -1, -1, -1, 387, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 387, 387, 387, -1, 4, -1, 387, 7, -1, -1, -1, -1, -1, -1, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 4, -1, -1, 7, -1, -1, -1, -1, -1, + -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, 63, 64, 65, 66, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61}; const unsigned char PipelineParserGen::yystos_[] = { - 0, 5, 158, 3, 107, 0, 14, 15, 16, 17, 18, 19, 108, 109, 110, 111, 112, 113, 114, - 6, 3, 8, 9, 10, 11, 63, 65, 66, 67, 86, 88, 89, 90, 117, 3, 3, 117, 159, - 160, 4, 4, 115, 22, 20, 3, 107, 4, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 0, 5, 188, 3, 122, 0, 14, 15, 16, 17, 18, 19, 123, 124, 125, 126, 127, 128, 129, + 6, 3, 8, 9, 10, 11, 78, 80, 81, 82, 101, 103, 104, 105, 132, 3, 3, 132, 189, + 190, 4, 4, 130, 22, 20, 3, 122, 4, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 71, 73, 74, 75, 76, 79, 117, 52, 94, - 3, 5, 8, 9, 10, 11, 12, 13, 63, 65, 66, 67, 94, 116, 119, 121, 122, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 116, 4, 21, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 123, 12, 13, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 64, 68, 69, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 118, 119, 156, 89, 5, - 5, 120, 5, 5, 5, 5, 5, 120, 120, 120, 120, 120, 120, 120, 159, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 4, 7, 72, 73, 74, 76, 77, 80, 156, 6, 4, 118, 118, 4, - 118, 3, 5, 93, 102, 103, 104, 105, 93, 118, 118, 4, 4, 4, 4, 4, 4, 4, 47, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 118, 118, 118, 118, 106, 93, 157, 6, 6, 118, - 6, 118, 156, 6, 156, 4, 73, 74, 75, 76, 77, 78, 81, 157, 6, 4, 4, 156, 4, - 48, 6, 6, 93, 6, 86, 88, 89, 90, 94, 143, 4, 4, 4, 49, 154, 118, 50, 155, - 118, 4, 4}; + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 86, 88, 89, 90, 91, 94, 132, 67, 109, 3, 5, 8, 9, + 10, 11, 12, 13, 78, 80, 81, 82, 109, 131, 134, 136, 137, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 131, 4, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 138, 12, 13, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 83, + 84, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 133, 134, 186, 104, 5, 5, 135, 5, 5, 5, 5, 5, 135, 135, 135, 135, 135, + 135, 135, 189, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 5, 133, 133, 133, 5, + 133, 5, 5, 5, 5, 133, 5, 5, 4, 7, 87, 88, 89, 91, 92, 95, 186, 6, 4, + 133, 133, 4, 133, 3, 5, 108, 117, 118, 119, 120, 108, 133, 133, 4, 4, 4, 4, 4, + 4, 4, 62, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 133, 4, 4, 4, 133, + 4, 133, 133, 133, 133, 4, 133, 133, 133, 133, 133, 133, 121, 108, 187, 6, 6, 133, 6, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 186, 6, 186, 4, 88, 89, 90, 91, 92, 93, + 96, 187, 6, 4, 4, 186, 4, 63, 6, 6, 6, 186, 6, 6, 6, 6, 6, 6, 108, + 6, 101, 103, 104, 105, 109, 158, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 64, + 184, 4, 133, 65, 185, 133, 4, 4}; const unsigned char PipelineParserGen::yyr1_[] = { - 0, 70, 158, 107, 107, 160, 159, 108, 108, 108, 108, 108, 108, 114, 109, 110, 117, 117, 117, - 117, 111, 112, 113, 115, 115, 79, 79, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 71, 71, 71, 71, 76, 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, 74, 74, 74, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 94, 95, 96, 97, 99, 100, 101, 82, 83, 84, 85, 87, 91, 92, - 86, 86, 88, 88, 89, 89, 90, 90, 98, 98, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 156, 156, 118, 118, 120, 119, 119, 119, 119, - 119, 119, 119, 121, 122, 123, 123, 80, 72, 72, 72, 72, 77, 124, 124, 125, 126, 127, 127, - 127, 128, 129, 130, 131, 131, 132, 133, 93, 93, 103, 103, 104, 157, 157, 105, 106, 106, 81, - 78, 78, 78, 78, 78, 134, 134, 134, 134, 134, 134, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 143, 143, 143, 143, 143, 154, 154, 155, 155, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153}; + 0, 85, 188, 122, 122, 190, 189, 123, 123, 123, 123, 123, 123, 129, 124, 125, 132, 132, 132, + 132, 126, 127, 128, 130, 130, 94, 94, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, + 131, 86, 86, 86, 86, 91, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 109, 110, 111, 112, 114, 115, 116, 97, 98, 99, 100, 102, 106, 107, 101, 101, 103, 103, + 104, 104, 105, 105, 113, 113, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 186, 186, 133, 133, 135, 134, 134, 134, 134, 134, 134, 134, 136, + 137, 138, 138, 95, 87, 87, 87, 87, 92, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 140, 141, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 142, 142, 142, 143, 144, 145, 146, 146, 147, 148, 108, 108, 118, 118, + 119, 187, 187, 120, 121, 121, 96, 93, 93, 93, 93, 93, 149, 149, 149, 149, 149, 149, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 158, 158, + 158, 158, 158, 184, 184, 185, 185, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168}; const signed char PipelineParserGen::yyr2_[] = { - 0, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 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, - 4, 1, 1, 1, 1, 1, 1, 1, 3, 3, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 8, 4, 1, 1, 1, 8, 8, 6, 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, 1, 1, 1, 1, 1, 0, 2, 0, 2, 11, 4, 4, 4, 4, 4, 4, 4, 4, 4}; + 0, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 4, 1, 1, 1, 1, 1, 1, + 1, 3, 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, 8, 4, + 4, 4, 7, 4, 4, 4, 7, 4, 7, 8, 7, 7, 4, 7, 7, 1, 1, 1, 8, 8, 6, 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, 1, 1, 1, 1, 1, 0, 2, 0, 2, 11, 4, 4, 4, 4, 4, 4, 4, 4, 4}; #if YYDEBUG @@ -3569,6 +4072,21 @@ const char* const PipelineParserGen::yytname_[] = {"\"EOF\"", "TO_OBJECT_ID", "TO_STRING", "TYPE", + "ABS", + "CEIL", + "DIVIDE", + "EXPONENT", + "FLOOR", + "LN", + "LOG", + "LOGTEN", + "MOD", + "MULTIPLY", + "POW", + "ROUND", + "SQRT", + "SUBTRACT", + "TRUNC", "INPUT_ARG", "TO_ARG", "ON_ERROR_ARG", @@ -3676,6 +4194,21 @@ const char* const PipelineParserGen::yytname_[] = {"\"EOF\"", "toObjectId", "toString", "type", + "abs", + "ceil", + "divide", + "exponent", + "floor", + "ln", + "log", + "logten", + "mod", + "multiply", + "pow", + "round", + "sqrt", + "subtract", + "trunc", "onErrorArg", "onNullArg", "expressions", @@ -3689,18 +4222,23 @@ const char* const PipelineParserGen::yytname_[] = {"\"EOF\"", #if YYDEBUG const short PipelineParserGen::yyrline_[] = { - 0, 230, 230, 236, 237, 245, 245, 248, 248, 248, 248, 248, 248, 251, 261, 267, 277, 277, 277, - 277, 281, 286, 291, 297, 300, 307, 310, 316, 317, 320, 323, 326, 329, 332, 335, 338, 341, 344, - 347, 351, 351, 351, 351, 355, 363, 366, 369, 372, 375, 378, 387, 390, 393, 396, 399, 402, 405, - 413, 416, 419, 422, 425, 428, 431, 434, 437, 440, 443, 446, 449, 452, 455, 458, 461, 464, 467, - 470, 473, 476, 479, 482, 489, 495, 501, 507, 513, 519, 525, 531, 537, 543, 549, 555, 561, 567, - 573, 576, 582, 585, 591, 594, 600, 603, 609, 612, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 643, 644, 651, 651, 655, 660, 660, 660, 660, - 660, 660, 661, 667, 675, 681, 684, 691, 698, 698, 698, 698, 702, 708, 709, 713, 723, 730, 730, - 730, 734, 744, 754, 761, 761, 765, 772, 779, 779, 783, 783, 787, 793, 794, 801, 807, 810, 817, - 824, 825, 826, 827, 828, 831, 831, 831, 831, 831, 831, 831, 833, 838, 843, 848, 853, 858, 863, - 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 884, 884, 884, 884, 884, 888, 891, 898, 901, - 907, 916, 921, 926, 931, 936, 941, 946, 951, 956}; + 0, 246, 246, 252, 253, 261, 261, 264, 264, 264, 264, 264, 264, 267, 277, 283, + 293, 293, 293, 293, 297, 302, 307, 313, 316, 323, 326, 332, 333, 336, 339, 342, + 345, 348, 351, 354, 357, 360, 363, 367, 367, 367, 367, 371, 379, 382, 385, 388, + 391, 394, 403, 406, 409, 412, 415, 418, 421, 429, 432, 435, 438, 441, 444, 447, + 450, 453, 456, 459, 462, 465, 468, 471, 474, 477, 480, 483, 486, 489, 492, 495, + 498, 501, 504, 507, 510, 513, 516, 519, 522, 525, 528, 531, 534, 537, 540, 543, + 550, 556, 562, 568, 574, 580, 586, 592, 598, 604, 610, 616, 622, 628, 634, 637, + 643, 646, 652, 655, 661, 664, 670, 673, 679, 680, 681, 682, 683, 684, 685, 686, + 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 704, 705, 712, 712, 716, + 721, 721, 721, 721, 721, 721, 722, 728, 736, 742, 745, 752, 759, 759, 759, 759, + 763, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 769, 770, 770, + 770, 770, 774, 784, 790, 795, 800, 806, 811, 816, 821, 827, 832, 838, 847, 853, + 859, 864, 870, 876, 876, 876, 880, 890, 900, 907, 907, 911, 918, 925, 925, 929, + 929, 933, 939, 940, 947, 953, 956, 963, 970, 971, 972, 973, 974, 977, 977, 977, + 977, 977, 977, 977, 979, 984, 989, 994, 999, 1004, 1009, 1015, 1016, 1017, 1018, 1019, + 1020, 1021, 1022, 1023, 1024, 1030, 1030, 1030, 1030, 1030, 1034, 1037, 1044, 1047, 1053, 1062, + 1067, 1072, 1077, 1082, 1087, 1092, 1097, 1102}; void PipelineParserGen::yy_stack_print_() const { *yycdebug_ << "Stack now"; @@ -3721,8 +4259,8 @@ void PipelineParserGen::yy_reduce_print_(int yyrule) const { #endif // YYDEBUG -#line 58 "src/mongo/db/cst/pipeline_grammar.yy" +#line 58 "pipeline_grammar.yy" } // namespace mongo -#line 3582 "src/mongo/db/cst/pipeline_parser_gen.cpp" +#line 4075 "pipeline_parser_gen.cpp" -#line 960 "src/mongo/db/cst/pipeline_grammar.yy" +#line 1106 "pipeline_grammar.yy" |