@malloydata/render 0.0.123-dev240203154014 → 0.0.123-dev240205203117

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -226,6 +226,7 @@
226
226
  between: options === null || options === void 0 ? void 0 : options.between,
227
227
  isSymmetric: options === null || options === void 0 ? void 0 : options.isSymmetric,
228
228
  supportsOrderBy: options === null || options === void 0 ? void 0 : options.supportsOrderBy,
229
+ defaultOrderByArgIndex: options === null || options === void 0 ? void 0 : options.defaultOrderByArgIndex,
229
230
  supportsLimit: options === null || options === void 0 ? void 0 : options.supportsLimit
230
231
  };
231
232
  }
@@ -1354,6 +1355,9 @@
1354
1355
  case "function_parameter":
1355
1356
  case "parameter":
1356
1357
  case "outputField":
1358
+ case "source-reference":
1359
+ case "aggregate_limit":
1360
+ case "aggregate_order_by":
1357
1361
  return fragment2;
1358
1362
  case "sql-string":
1359
1363
  return {
@@ -1460,6 +1464,9 @@
1460
1464
  case "function_parameter":
1461
1465
  case "parameter":
1462
1466
  case "outputField":
1467
+ case "source-reference":
1468
+ case "aggregate_limit":
1469
+ case "aggregate_order_by":
1463
1470
  return fragment;
1464
1471
  case "function_call":
1465
1472
  return {
@@ -1533,7 +1540,7 @@
1533
1540
  }
1534
1541
  }
1535
1542
  default:
1536
- throw new Error("unexpected");
1543
+ throw new Error(`unexpected fragment type ${fragment.type}`);
1537
1544
  }
1538
1545
  });
1539
1546
  }
@@ -2461,8 +2468,8 @@
2461
2468
  const separator = (0, util_1.makeParam)("separator", (0, util_1.literal)((0, util_1.maxScalar)("string")));
2462
2469
  const orderBy = { type: "aggregate_order_by" };
2463
2470
  return [
2464
- (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param], (0, util_1.sql)`STRING_AGG(${value3.arg}${orderBy})`, { supportsOrderBy: true }),
2465
- (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param, separator.param], (0, util_1.sql)`STRING_AGG(${value3.arg}, ${separator.arg}${orderBy})`, { supportsOrderBy: true })
2471
+ (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param], (0, util_1.sql)`STRING_AGG(${value3.arg}${orderBy})`, { supportsOrderBy: true, defaultOrderByArgIndex: 0 }),
2472
+ (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param, separator.param], (0, util_1.sql)`STRING_AGG(${value3.arg}, ${separator.arg}${orderBy})`, { supportsOrderBy: true, defaultOrderByArgIndex: 0 })
2466
2473
  ];
2467
2474
  }
2468
2475
  exports.fnStringAgg = fnStringAgg;
@@ -2471,8 +2478,16 @@
2471
2478
  const separator = (0, util_1.makeParam)("separator", (0, util_1.literal)((0, util_1.maxScalar)("string")));
2472
2479
  const orderBy = { type: "aggregate_order_by" };
2473
2480
  return [
2474
- (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param], (0, util_1.sql)`STRING_AGG(DISTINCT ${value3.arg}${orderBy})`, { isSymmetric: true, supportsOrderBy: true }),
2475
- (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param, separator.param], (0, util_1.sql)`STRING_AGG(DISTINCT ${value3.arg}, ${separator.arg}${orderBy})`, { isSymmetric: true, supportsOrderBy: true })
2481
+ (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param], (0, util_1.sql)`STRING_AGG(DISTINCT ${value3.arg}${orderBy})`, {
2482
+ isSymmetric: true,
2483
+ supportsOrderBy: "only_default",
2484
+ defaultOrderByArgIndex: 0
2485
+ }),
2486
+ (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param, separator.param], (0, util_1.sql)`STRING_AGG(DISTINCT ${value3.arg}, ${separator.arg}${orderBy})`, {
2487
+ isSymmetric: true,
2488
+ supportsOrderBy: "only_default",
2489
+ defaultOrderByArgIndex: 0
2490
+ })
2476
2491
  ];
2477
2492
  }
2478
2493
  exports.fnStringAggDistinct = fnStringAggDistinct;
@@ -2668,8 +2683,8 @@
2668
2683
  const orderBy = { type: "aggregate_order_by" };
2669
2684
  const limit = { type: "aggregate_limit" };
2670
2685
  return [
2671
- (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param], (0, util_1.sql)`STRING_AGG(${value3.arg}${orderBy}${limit})`, { supportsOrderBy: true, supportsLimit: true }),
2672
- (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param, separator.param], (0, util_1.sql)`STRING_AGG(${value3.arg}, ${separator.arg}${orderBy}${limit})`, { supportsOrderBy: true, supportsLimit: true })
2686
+ (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param], (0, util_1.sql)`STRING_AGG(${value3.arg}${orderBy}${limit})`, { supportsOrderBy: true, supportsLimit: true, defaultOrderByArgIndex: 0 }),
2687
+ (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param, separator.param], (0, util_1.sql)`STRING_AGG(${value3.arg}, ${separator.arg}${orderBy}${limit})`, { supportsOrderBy: true, supportsLimit: true, defaultOrderByArgIndex: 0 })
2673
2688
  ];
2674
2689
  }
2675
2690
  exports.fnStringAgg = fnStringAgg;
@@ -2679,8 +2694,18 @@
2679
2694
  const orderBy = { type: "aggregate_order_by" };
2680
2695
  const limit = { type: "aggregate_limit" };
2681
2696
  return [
2682
- (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param], (0, util_1.sql)`STRING_AGG(DISTINCT ${value3.arg}${orderBy}${limit})`, { isSymmetric: true, supportsOrderBy: true, supportsLimit: true }),
2683
- (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param, separator.param], (0, util_1.sql)`STRING_AGG(DISTINCT ${value3.arg}, ${separator.arg}${orderBy}${limit})`, { isSymmetric: true, supportsOrderBy: true, supportsLimit: true })
2697
+ (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param], (0, util_1.sql)`STRING_AGG(DISTINCT ${value3.arg}${orderBy}${limit})`, {
2698
+ isSymmetric: true,
2699
+ supportsOrderBy: "only_default",
2700
+ supportsLimit: true,
2701
+ defaultOrderByArgIndex: 0
2702
+ }),
2703
+ (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param, separator.param], (0, util_1.sql)`STRING_AGG(DISTINCT ${value3.arg}, ${separator.arg}${orderBy}${limit})`, {
2704
+ isSymmetric: true,
2705
+ supportsOrderBy: "only_default",
2706
+ supportsLimit: true,
2707
+ defaultOrderByArgIndex: 0
2708
+ })
2684
2709
  ];
2685
2710
  }
2686
2711
  exports.fnStringAggDistinct = fnStringAggDistinct;
@@ -3234,8 +3259,16 @@ ${(0, utils_1.indent)(sql)}
3234
3259
  const separator = (0, util_1.makeParam)("separator", (0, util_1.literal)((0, util_1.maxScalar)("string")));
3235
3260
  const orderBy = { type: "aggregate_order_by" };
3236
3261
  return [
3237
- (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param], (0, util_1.sql)`STRING_AGG(DISTINCT ${value3.arg}, ','${orderBy})`, { isSymmetric: true, supportsOrderBy: true }),
3238
- (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param, separator.param], (0, util_1.sql)`STRING_AGG(DISTINCT ${value3.arg}, ${separator.arg}${orderBy})`, { isSymmetric: true, supportsOrderBy: true })
3262
+ (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param], (0, util_1.sql)`STRING_AGG(DISTINCT ${value3.arg}, ','${orderBy})`, {
3263
+ isSymmetric: true,
3264
+ supportsOrderBy: "only_default",
3265
+ defaultOrderByArgIndex: 0
3266
+ }),
3267
+ (0, util_1.overload)((0, util_1.minAggregate)("string"), [value3.param, separator.param], (0, util_1.sql)`STRING_AGG(DISTINCT ${value3.arg}, ${separator.arg}${orderBy})`, {
3268
+ isSymmetric: true,
3269
+ supportsOrderBy: "only_default",
3270
+ defaultOrderByArgIndex: 0
3271
+ })
3239
3272
  ];
3240
3273
  }
3241
3274
  exports.fnStringAggDistinct = fnStringAggDistinct;
@@ -4734,6 +4767,7 @@ ${hackSplitComment}
4734
4767
  existingOverload.dialect[dialect.name] = {
4735
4768
  e: overload.e,
4736
4769
  supportsOrderBy: overload.supportsOrderBy,
4770
+ defaultOrderByArgIndex: overload.defaultOrderByArgIndex,
4737
4771
  supportsLimit: overload.supportsLimit
4738
4772
  };
4739
4773
  handled = true;
@@ -4746,6 +4780,7 @@ ${hackSplitComment}
4746
4780
  [dialect.name]: {
4747
4781
  e: overload.e,
4748
4782
  supportsOrderBy: overload.supportsOrderBy,
4783
+ defaultOrderByArgIndex: overload.defaultOrderByArgIndex,
4749
4784
  supportsLimit: overload.supportsLimit
4750
4785
  }
4751
4786
  },
@@ -4872,7 +4907,7 @@ ${hackSplitComment}
4872
4907
  }
4873
4908
  }
4874
4909
  hasAsymetricFunctions() {
4875
- return this.has("sum") || this.has("avg") || this.has("count");
4910
+ return this.has("sum") || this.has("avg") || this.has("count") || this.has("generic_asymmetric_aggregate");
4876
4911
  }
4877
4912
  };
4878
4913
  var StageWriter = class {
@@ -5091,40 +5126,91 @@ ${(0, utils_1.indent)(sql)})
5091
5126
  return [fragment];
5092
5127
  });
5093
5128
  }
5129
+ getFunctionOrderBy(resultSet, context3, state, orderBy, args, overload) {
5130
+ if (orderBy.length === 0)
5131
+ return void 0;
5132
+ return "ORDER BY " + orderBy.map((ob) => {
5133
+ var _a, _b;
5134
+ const defaultOrderByArgIndex = (_a = overload.dialect[context3.dialect.name].defaultOrderByArgIndex) !== null && _a !== void 0 ? _a : 0;
5135
+ const expr2 = (_b = ob.e) !== null && _b !== void 0 ? _b : args[defaultOrderByArgIndex];
5136
+ const osql = this.generateDimFragment(resultSet, context3, expr2, state);
5137
+ const dirsql = ob.dir === "asc" ? " ASC" : ob.dir === "desc" ? " DESC" : "";
5138
+ return `${osql}${dirsql}`;
5139
+ }).join(", ");
5140
+ }
5141
+ generateAsymmetricStringAggExpression(resultSet, context3, value3, separator, distinctKey, orderBy, dialectName, state) {
5142
+ if (orderBy) {
5143
+ throw new Error(`Function \`string_agg\` does not support fanning out with an order by in ${dialectName}`);
5144
+ }
5145
+ const valueSQL = this.generateDimFragment(resultSet, context3, value3, state);
5146
+ const separatorSQL = separator ? " ," + this.generateDimFragment(resultSet, context3, separator, state) : "";
5147
+ const keyStart = "__STRING_AGG_KS__";
5148
+ const keyEnd = "__STRING_AGG_KE__";
5149
+ const distinctValueSQL = `concat('${keyStart}', ${distinctKey}, '${keyEnd}', ${valueSQL})`;
5150
+ return `REGEXP_REPLACE(
5151
+ STRING_AGG(DISTINCT ${distinctValueSQL}${separatorSQL}),
5152
+ '${keyStart}.*?${keyEnd}',
5153
+ ''
5154
+ )`;
5155
+ }
5156
+ getParamForArgIndex(params2, argIndex) {
5157
+ const prevVariadic = params2.slice(0, argIndex).find((p3) => p3.isVariadic);
5158
+ return prevVariadic !== null && prevVariadic !== void 0 ? prevVariadic : params2[argIndex];
5159
+ }
5094
5160
  generateFunctionCallExpression(resultSet, context3, frag, state) {
5095
- var _a, _b;
5161
+ var _a, _b, _c2;
5096
5162
  const overload = frag.overload;
5097
5163
  const args = frag.args;
5098
5164
  const isSymmetric = (_a = frag.overload.isSymmetric) !== null && _a !== void 0 ? _a : false;
5099
5165
  const distinctKey = (0, malloy_types_1.expressionIsAggregate)(overload.returnType.expressionType) && !isSymmetric && this.generateDistinctKeyIfNecessary(resultSet, context3, frag.structPath);
5100
- const aggregateOrderBy = frag.orderBy ? "ORDER BY " + frag.orderBy.map((ob) => {
5101
- const osql = this.generateDimFragment(resultSet, context3, ob.e, state);
5102
- const dirsql = ob.dir === "asc" ? " ASC" : ob.dir === "desc" ? " DESC" : "";
5103
- return `${osql}${dirsql}`;
5104
- }).join(", ") : void 0;
5105
5166
  const aggregateLimit = frag.limit ? `LIMIT ${frag.limit}` : void 0;
5167
+ if (frag.name === "string_agg" && distinctKey && !context3.dialect.supportsAggDistinct) {
5168
+ return this.generateAsymmetricStringAggExpression(resultSet, context3, args[0], args[1], distinctKey, frag.orderBy, context3.dialect.name, state);
5169
+ }
5106
5170
  if (distinctKey) {
5107
5171
  if (!context3.dialect.supportsAggDistinct) {
5108
- throw new Error(`Asymmetric aggregates are not supported for custom functions in ${context3.dialect.name}.`);
5172
+ throw new Error(`Function \`${frag.name}\` does not support fanning out in ${context3.dialect.name}`);
5109
5173
  }
5110
5174
  const argsExpressions = args.map((arg) => {
5111
5175
  return this.generateDimFragment(resultSet, context3, arg, state);
5112
5176
  });
5113
- return context3.dialect.sqlAggDistinct(distinctKey, argsExpressions, (valNames) => {
5114
- const funcCall = this.expandFunctionCall(context3.dialect.name, overload, valNames.map((v6) => [v6]), aggregateOrderBy, aggregateLimit);
5177
+ const orderBys = (_b = frag.orderBy) !== null && _b !== void 0 ? _b : [];
5178
+ const orderByExpressions = orderBys.map((ob) => {
5179
+ var _a2, _b2;
5180
+ const defaultOrderByArgIndex = (_a2 = overload.dialect[context3.dialect.name].defaultOrderByArgIndex) !== null && _a2 !== void 0 ? _a2 : 0;
5181
+ const expr2 = (_b2 = ob.e) !== null && _b2 !== void 0 ? _b2 : args[defaultOrderByArgIndex];
5182
+ return this.generateDimFragment(resultSet, context3, expr2, state);
5183
+ });
5184
+ return context3.dialect.sqlAggDistinct(distinctKey, [...argsExpressions, ...orderByExpressions], (valNames) => {
5185
+ const vals2 = valNames.map((v6, i6) => {
5186
+ if (i6 < args.length) {
5187
+ const param2 = this.getParamForArgIndex(overload.params, i6);
5188
+ if (param2.allowedTypes.every((t9) => (0, malloy_types_1.isLiteral)(t9.evalSpace))) {
5189
+ return args[i6];
5190
+ }
5191
+ }
5192
+ return [v6];
5193
+ });
5194
+ const newArgs = vals2.slice(0, argsExpressions.length);
5195
+ const orderBy = vals2.slice(argsExpressions.length).map((e12, i6) => {
5196
+ return { e: e12, dir: orderBys[i6].dir };
5197
+ });
5198
+ const orderBySQL = this.getFunctionOrderBy(resultSet, context3, state, orderBy, newArgs, overload);
5199
+ const funcCall = this.expandFunctionCall(context3.dialect.name, overload, newArgs, orderBySQL, aggregateLimit);
5115
5200
  return this.generateExpressionFromExpr(resultSet, context3, funcCall, state);
5116
5201
  });
5117
5202
  } else {
5118
5203
  const mappedArgs = (0, malloy_types_1.expressionIsAggregate)(overload.returnType.expressionType) ? args.map((arg, index3) => {
5119
- const param2 = overload.params[index3];
5204
+ const param2 = this.getParamForArgIndex(overload.params, index3);
5120
5205
  return param2.allowedTypes.every((t9) => (0, malloy_types_1.isLiteral)(t9.evalSpace)) ? arg : [this.generateDimFragment(resultSet, context3, arg, state)];
5121
5206
  }) : args;
5122
- const funcCall = this.expandFunctionCall(context3.dialect.name, overload, mappedArgs, aggregateOrderBy, aggregateLimit);
5207
+ const orderBySql = frag.orderBy ? this.getFunctionOrderBy(resultSet, context3, state, frag.orderBy, args, overload) : "";
5208
+ const funcCall = this.expandFunctionCall(context3.dialect.name, overload, mappedArgs, orderBySql, aggregateLimit);
5123
5209
  if ((0, malloy_types_1.expressionIsAnalytic)(overload.returnType.expressionType)) {
5124
- const extraPartitions = ((_b = frag.partitionBy) !== null && _b !== void 0 ? _b : []).map((outputName) => {
5210
+ const extraPartitions = ((_c2 = frag.partitionBy) !== null && _c2 !== void 0 ? _c2 : []).map((outputName) => {
5125
5211
  return `(${resultSet.getField(outputName).getAnalyticalSQL(false)})`;
5126
5212
  });
5127
- return this.generateAnalyticFragment(resultSet, context3, funcCall, overload, state, args, extraPartitions, aggregateOrderBy);
5213
+ return this.generateAnalyticFragment(resultSet, context3, funcCall, overload, state, args, extraPartitions, orderBySql);
5128
5214
  }
5129
5215
  return this.generateExpressionFromExpr(resultSet, context3, funcCall, state);
5130
5216
  }
@@ -6071,6 +6157,7 @@ ${(0, utils_1.indent)(sql)})
6071
6157
  resultStruct.root().addStructToJoin(struct.getJoinableParent(), this, uniqueKeyPossibleUse, joinStack);
6072
6158
  }
6073
6159
  addDependantExpr(resultStruct, context3, e12, joinStack) {
6160
+ var _a;
6074
6161
  for (const expr2 of e12) {
6075
6162
  if ((0, malloy_types_1.isFunctionCallFragment)(expr2) && (0, malloy_types_1.expressionIsAnalytic)(expr2.overload.returnType.expressionType) && this.parent.dialect.cantPartitionWindowFunctionsOnExpressions) {
6076
6163
  resultStruct.root().isComplexQuery = true;
@@ -6148,8 +6235,14 @@ ${(0, utils_1.indent)(sql)})
6148
6235
  }
6149
6236
  this.addDependantExpr(resultStruct, context3, expr2.e, joinStack);
6150
6237
  } else if ((0, malloy_types_1.isFunctionCallFragment)(expr2)) {
6238
+ const isSymmetric = (_a = expr2.overload.isSymmetric) !== null && _a !== void 0 ? _a : false;
6239
+ const isAggregate3 = (0, malloy_types_1.expressionIsAggregate)(expr2.overload.returnType.expressionType);
6240
+ const isAsymmetricAggregate = isAggregate3 && !isSymmetric;
6241
+ const uniqueKeyPossibleUse = isAsymmetricAggregate ? "generic_asymmetric_aggregate" : void 0;
6151
6242
  if (expr2.structPath) {
6152
- this.addDependantPath(resultStruct, context3, expr2.structPath, "generic_aggregate", joinStack);
6243
+ this.addDependantPath(resultStruct, context3, expr2.structPath, uniqueKeyPossibleUse, joinStack);
6244
+ } else if (isAsymmetricAggregate) {
6245
+ resultStruct.addStructToJoin(context3, this, uniqueKeyPossibleUse, joinStack);
6153
6246
  }
6154
6247
  for (const e13 of expr2.args) {
6155
6248
  this.addDependantExpr(resultStruct, context3, e13, joinStack);
@@ -6159,7 +6252,9 @@ ${(0, utils_1.indent)(sql)})
6159
6252
  }
6160
6253
  if (expr2.orderBy) {
6161
6254
  for (const ob of expr2.orderBy) {
6162
- this.addDependantExpr(resultStruct, context3, ob.e, joinStack);
6255
+ if (ob.e) {
6256
+ this.addDependantExpr(resultStruct, context3, ob.e, joinStack);
6257
+ }
6163
6258
  }
6164
6259
  }
6165
6260
  }
@@ -33333,9 +33428,9 @@ ${struct.dialect.sqlFinalStage("__stage0", [
33333
33428
  Object.defineProperty(exports, "__esModule", { value: true });
33334
33429
  exports.DefExploreEditFieldContext = exports.DefExploreRenameContext = exports.DefExplorePrimaryKeyContext = exports.DefExploreWhere_stubContext = exports.DefJoin_stubContext = exports.DefDeclare_stubContext = exports.DefExploreMeasure_stubContext = exports.DefExploreDimension_stubContext = exports.ExploreStatementContext = exports.ExplorePropertiesContext = exports.SourceIDContext = exports.SourceNameDefContext = exports.SqExploreContext = exports.SourceDefinitionContext = exports.SourcePropertyListContext = exports.QueryNameContext = exports.FilterShortcutContext = exports.QueryPropertiesContext = exports.ConnectionIdContext = exports.TableMethodContext = exports.TableFunctionContext = exports.ExploreTableContext = exports.SqlSourceContext = exports.TurtleNameContext = exports.RefineOperatorContext = exports.TopLevelQueryDefContext = exports.TopLevelQueryDefsContext = exports.IgnoredModelAnnotationsContext = exports.IgnoredObjectAnnotationsContext = exports.DocAnnotationsContext = exports.ImportURLContext = exports.ImportItemContext = exports.ImportSelectContext = exports.ImportStatementContext = exports.SqlInterpolationContext = exports.SqlStringContext = exports.BlockSQLDefContext = exports.SqlBlockContext = exports.DefineSQLStatementContext = exports.RunStatementContext = exports.IsDefineContext = exports.TagsContext = exports.TopLevelAnonQueryDefContext = exports.AnonymousQueryContext = exports.Use_top_level_query_defsContext = exports.DefineQueryContext = exports.DefineSourceStatementContext = exports.MalloyStatementContext = exports.MalloyDocumentContext = exports.MalloyParser = void 0;
33335
33430
  exports.FieldPropertyLimitStatementContext = exports.AggregateOrderByStatementContext = exports.AggregateOrderBySpecContext = exports.AggregateOrderingContext = exports.FieldPropertiesContext = exports.FilterStatementContext = exports.JoinExpressionContext = exports.JoinOnContext = exports.JoinWithContext = exports.JoinDefContext = exports.MatrixOperationContext = exports.IsExploreContext = exports.JoinListContext = exports.QueryExtendStatementListContext = exports.QueryExtendStatementContext = exports.VArrowContext = exports.VSegContext = exports.VExprContext = exports.SegRefineContext = exports.SegParenContext = exports.SegOpsContext = exports.SegFieldContext = exports.SegExprContext = exports.SQSQLContext = exports.SQTableContext = exports.SQExtendedSourceContext = exports.SQArrowContext = exports.SQRefinedQueryContext = exports.SQParensContext = exports.SQIDContext = exports.SqExprContext = exports.ModEitherContext = exports.QueryExtendContext = exports.DefJoinCrossContext = exports.DefJoinManyContext = exports.DefJoinOneContext = exports.JoinStatementContext = exports.DeclareStatementContext = exports.JoinNameDefContext = exports.FieldNameDefContext = exports.FieldDefContext = exports.DefListContext = exports.ExploreRenameDefContext = exports.RenameListContext = exports.DefDimensionsContext = exports.DefMeasuresContext = exports.DefIgnoreModel_stubContext = exports.DefExploreAnnotationContext = exports.DefExploreTimezoneContext = exports.DefExploreQueryContext = void 0;
33336
- exports.LiteralTimestampContext = exports.DateLiteralContext = exports.ExprNowContext = exports.ExprRegexContext = exports.ExprBoolContext = exports.ExprNULLContext = exports.ExprTimeContext = exports.ExprNumberContext = exports.ExprStringContext = exports.LiteralContext = exports.NumericLiteralContext = exports.ShortStringContext = exports.StringContext = exports.CompareOpContext = exports.MalloyTypeContext = exports.AggregateContext = exports.SampleSpecContext = exports.QueryAnnotationContext = exports.TimezoneStatementContext = exports.SampleStatementContext = exports.IndexStatementContext = exports.IndexFieldsContext = exports.IndexElementContext = exports.TopStatementContext = exports.BySpecContext = exports.LimitStatementContext = exports.OrderBySpecContext = exports.OrderingContext = exports.OrderByStatementContext = exports.PartitionByStatementContext = exports.ProjectStatementContext = exports.CalculateStatementContext = exports.AggregateStatementContext = exports.NestDefContext = exports.NestExistingContext = exports.NestEntryContext = exports.NestedQueryListContext = exports.NestStatementContext = exports.QueryFieldEntryContext = exports.QueryFieldListContext = exports.GroupByStatementContext = exports.QueryJoinStatementContext = exports.QueryStatementContext = exports.ExploreQueryDefContext = exports.ExploreQueryNameDefContext = exports.SubQueryDefListContext = exports.HavingStatementContext = exports.WhereStatementContext = exports.FilterClauseListContext = exports.FieldPropertyStatementContext = void 0;
33337
- exports.TaggedRefContext = exports.StarQualifiedContext = exports.CollectionWildCardContext = exports.FieldCollectionContext = exports.FieldNameListContext = exports.ArgumentListContext = exports.PickContext = exports.PickStatementContext = exports.PartialAllowedFieldExprContext = exports.ExprUngroupContext = exports.ExprPickContext = exports.ExprFuncContext = exports.ExprAggFuncContext = exports.ExprExprContext = exports.ExprAggregateContext = exports.ExprPathlessAggregateContext = exports.ExprCountDisinctContext = exports.ExprCoalesceContext = exports.ExprLogicalOrContext = exports.ExprLogicalAndContext = exports.ExprNotContext = exports.ExprApplyContext = exports.ExprCompareContext = exports.ExprOrTreeContext = exports.ExprAndTreeContext = exports.ExprForRangeContext = exports.ExprRangeContext = exports.ExprAddSubContext = exports.ExprMulDivContext = exports.ExprMinusContext = exports.ExprSafeCastContext = exports.ExprCastContext = exports.ExprTimeTruncContext = exports.ExprDurationContext = exports.ExprLiteralContext = exports.ExprFieldPropsContext = exports.ExprFieldPathContext = exports.FieldExprContext = exports.MalloyOrSQLTypeContext = exports.UngroupContext = exports.TimeframeContext = exports.IdContext = exports.TableURIContext = exports.TablePathContext = exports.LiteralYearContext = exports.LiteralQuarterContext = exports.LiteralMonthContext = exports.LiteralWeekContext = exports.LiteralDayContext = exports.LiteralHourContext = void 0;
33338
- exports.ExperimentalStatementForTestingContext = exports.ConnectionNameContext = exports.NameSQLBlockContext = exports.SqlExploreNameRefContext = exports.JustExprContext = exports.FieldNameContext = exports.JoinNameContext = exports.FieldPathContext = exports.CollectionMemberContext = exports.RefExprContext = void 0;
33431
+ exports.LiteralHourContext = exports.LiteralTimestampContext = exports.DateLiteralContext = exports.ExprNowContext = exports.ExprRegexContext = exports.ExprBoolContext = exports.ExprNULLContext = exports.ExprTimeContext = exports.ExprNumberContext = exports.ExprStringContext = exports.LiteralContext = exports.NumericLiteralContext = exports.ShortStringContext = exports.StringContext = exports.CompareOpContext = exports.MalloyTypeContext = exports.AggregateContext = exports.SampleSpecContext = exports.QueryAnnotationContext = exports.TimezoneStatementContext = exports.SampleStatementContext = exports.IndexStatementContext = exports.IndexFieldsContext = exports.IndexElementContext = exports.TopStatementContext = exports.BySpecContext = exports.LimitStatementContext = exports.OrderBySpecContext = exports.OrderingContext = exports.OrderByStatementContext = exports.PartitionByStatementContext = exports.ProjectStatementContext = exports.CalculateStatementContext = exports.AggregateStatementContext = exports.NestDefContext = exports.NestEntryContext = exports.NestedQueryListContext = exports.NestStatementContext = exports.QueryFieldEntryContext = exports.QueryFieldListContext = exports.GroupByStatementContext = exports.QueryJoinStatementContext = exports.QueryStatementContext = exports.ExploreQueryDefContext = exports.ExploreQueryNameDefContext = exports.SubQueryDefListContext = exports.HavingStatementContext = exports.WhereStatementContext = exports.FilterClauseListContext = exports.FieldPropertyStatementContext = void 0;
33432
+ exports.RefExprContext = exports.TaggedRefContext = exports.StarQualifiedContext = exports.CollectionWildCardContext = exports.FieldCollectionContext = exports.FieldNameListContext = exports.ArgumentListContext = exports.PickContext = exports.PickStatementContext = exports.PartialAllowedFieldExprContext = exports.ExprUngroupContext = exports.ExprPickContext = exports.ExprFuncContext = exports.ExprAggFuncContext = exports.ExprExprContext = exports.ExprAggregateContext = exports.ExprPathlessAggregateContext = exports.ExprCountDisinctContext = exports.ExprCoalesceContext = exports.ExprLogicalOrContext = exports.ExprLogicalAndContext = exports.ExprNotContext = exports.ExprApplyContext = exports.ExprCompareContext = exports.ExprOrTreeContext = exports.ExprAndTreeContext = exports.ExprForRangeContext = exports.ExprRangeContext = exports.ExprAddSubContext = exports.ExprMulDivContext = exports.ExprMinusContext = exports.ExprSafeCastContext = exports.ExprCastContext = exports.ExprTimeTruncContext = exports.ExprDurationContext = exports.ExprLiteralContext = exports.ExprFieldPropsContext = exports.ExprFieldPathContext = exports.FieldExprContext = exports.MalloyOrSQLTypeContext = exports.UngroupContext = exports.TimeframeContext = exports.IdContext = exports.TableURIContext = exports.TablePathContext = exports.LiteralYearContext = exports.LiteralQuarterContext = exports.LiteralMonthContext = exports.LiteralWeekContext = exports.LiteralDayContext = void 0;
33433
+ exports.ExperimentalStatementForTestingContext = exports.ConnectionNameContext = exports.NameSQLBlockContext = exports.SqlExploreNameRefContext = exports.JustExprContext = exports.FieldNameContext = exports.JoinNameContext = exports.FieldPathContext = exports.CollectionMemberContext = void 0;
33339
33434
  var ATN_1 = require_ATN();
33340
33435
  var ATNDeserializer_1 = require_ATNDeserializer();
33341
33436
  var FailedPredicateException_1 = require_FailedPredicateException();
@@ -36381,28 +36476,89 @@ ${struct.dialect.sqlFinalStage("__stage0", [
36381
36476
  this.enterRule(_localctx, 124, _MalloyParser.RULE_aggregateOrderBySpec);
36382
36477
  let _la;
36383
36478
  try {
36384
- this.enterOuterAlt(_localctx, 1);
36385
- {
36386
- this.state = 727;
36387
- this.fieldExpr(0);
36388
- this.state = 729;
36389
- this._errHandler.sync(this);
36390
- _la = this._input.LA(1);
36391
- if (_la === _MalloyParser.ASC || _la === _MalloyParser.DESC) {
36479
+ this.state = 733;
36480
+ this._errHandler.sync(this);
36481
+ switch (this._input.LA(1)) {
36482
+ case _MalloyParser.ALL:
36483
+ case _MalloyParser.AVG:
36484
+ case _MalloyParser.CAST:
36485
+ case _MalloyParser.COUNT:
36486
+ case _MalloyParser.DAY:
36487
+ case _MalloyParser.EXCLUDE:
36488
+ case _MalloyParser.FALSE:
36489
+ case _MalloyParser.HOUR:
36490
+ case _MalloyParser.MAX:
36491
+ case _MalloyParser.MIN:
36492
+ case _MalloyParser.MINUTE:
36493
+ case _MalloyParser.MONTH:
36494
+ case _MalloyParser.NOT:
36495
+ case _MalloyParser.NOW:
36496
+ case _MalloyParser.NULL:
36497
+ case _MalloyParser.PICK:
36498
+ case _MalloyParser.QUARTER:
36499
+ case _MalloyParser.SECOND:
36500
+ case _MalloyParser.SOURCE_KW:
36501
+ case _MalloyParser.SUM:
36502
+ case _MalloyParser.TRUE:
36503
+ case _MalloyParser.WEEK:
36504
+ case _MalloyParser.YEAR:
36505
+ case _MalloyParser.HACKY_REGEX:
36506
+ case _MalloyParser.SQ_STRING:
36507
+ case _MalloyParser.DQ_STRING:
36508
+ case _MalloyParser.BQ_STRING:
36509
+ case _MalloyParser.OPAREN:
36510
+ case _MalloyParser.MINUS:
36511
+ case _MalloyParser.LITERAL_TIMESTAMP:
36512
+ case _MalloyParser.LITERAL_HOUR:
36513
+ case _MalloyParser.LITERAL_DAY:
36514
+ case _MalloyParser.LITERAL_QUARTER:
36515
+ case _MalloyParser.LITERAL_MONTH:
36516
+ case _MalloyParser.LITERAL_WEEK:
36517
+ case _MalloyParser.LITERAL_YEAR:
36518
+ case _MalloyParser.IDENTIFIER:
36519
+ case _MalloyParser.NUMERIC_LITERAL:
36520
+ case _MalloyParser.INTEGER_LITERAL:
36521
+ case _MalloyParser.SQL_BEGIN:
36522
+ this.enterOuterAlt(_localctx, 1);
36392
36523
  {
36393
- this.state = 728;
36524
+ this.state = 727;
36525
+ this.fieldExpr(0);
36526
+ this.state = 729;
36527
+ this._errHandler.sync(this);
36394
36528
  _la = this._input.LA(1);
36395
- if (!(_la === _MalloyParser.ASC || _la === _MalloyParser.DESC)) {
36396
- this._errHandler.recoverInline(this);
36397
- } else {
36398
- if (this._input.LA(1) === Token_1.Token.EOF) {
36399
- this.matchedEOF = true;
36529
+ if (_la === _MalloyParser.ASC || _la === _MalloyParser.DESC) {
36530
+ {
36531
+ this.state = 728;
36532
+ _la = this._input.LA(1);
36533
+ if (!(_la === _MalloyParser.ASC || _la === _MalloyParser.DESC)) {
36534
+ this._errHandler.recoverInline(this);
36535
+ } else {
36536
+ if (this._input.LA(1) === Token_1.Token.EOF) {
36537
+ this.matchedEOF = true;
36538
+ }
36539
+ this._errHandler.reportMatch(this);
36540
+ this.consume();
36541
+ }
36400
36542
  }
36401
- this._errHandler.reportMatch(this);
36402
- this.consume();
36403
36543
  }
36404
36544
  }
36405
- }
36545
+ break;
36546
+ case _MalloyParser.ASC:
36547
+ this.enterOuterAlt(_localctx, 2);
36548
+ {
36549
+ this.state = 731;
36550
+ this.match(_MalloyParser.ASC);
36551
+ }
36552
+ break;
36553
+ case _MalloyParser.DESC:
36554
+ this.enterOuterAlt(_localctx, 3);
36555
+ {
36556
+ this.state = 732;
36557
+ this.match(_MalloyParser.DESC);
36558
+ }
36559
+ break;
36560
+ default:
36561
+ throw new NoViableAltException_1.NoViableAltException(this);
36406
36562
  }
36407
36563
  } catch (re2) {
36408
36564
  if (re2 instanceof RecognitionException_1.RecognitionException) {
@@ -36424,9 +36580,9 @@ ${struct.dialect.sqlFinalStage("__stage0", [
36424
36580
  try {
36425
36581
  this.enterOuterAlt(_localctx, 1);
36426
36582
  {
36427
- this.state = 731;
36583
+ this.state = 735;
36428
36584
  this.match(_MalloyParser.ORDER_BY);
36429
- this.state = 732;
36585
+ this.state = 736;
36430
36586
  this.aggregateOrdering();
36431
36587
  }
36432
36588
  } catch (re2) {
@@ -36449,7 +36605,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
36449
36605
  try {
36450
36606
  this.enterOuterAlt(_localctx, 1);
36451
36607
  {
36452
- this.state = 734;
36608
+ this.state = 738;
36453
36609
  this.limitStatement();
36454
36610
  }
36455
36611
  } catch (re2) {
@@ -36470,34 +36626,34 @@ ${struct.dialect.sqlFinalStage("__stage0", [
36470
36626
  let _localctx = new FieldPropertyStatementContext(this._ctx, this.state);
36471
36627
  this.enterRule(_localctx, 130, _MalloyParser.RULE_fieldPropertyStatement);
36472
36628
  try {
36473
- this.state = 740;
36629
+ this.state = 744;
36474
36630
  this._errHandler.sync(this);
36475
36631
  switch (this._input.LA(1)) {
36476
36632
  case _MalloyParser.WHERE:
36477
36633
  this.enterOuterAlt(_localctx, 1);
36478
36634
  {
36479
- this.state = 736;
36635
+ this.state = 740;
36480
36636
  this.whereStatement();
36481
36637
  }
36482
36638
  break;
36483
36639
  case _MalloyParser.PARTITION_BY:
36484
36640
  this.enterOuterAlt(_localctx, 2);
36485
36641
  {
36486
- this.state = 737;
36642
+ this.state = 741;
36487
36643
  this.partitionByStatement();
36488
36644
  }
36489
36645
  break;
36490
36646
  case _MalloyParser.ORDER_BY:
36491
36647
  this.enterOuterAlt(_localctx, 3);
36492
36648
  {
36493
- this.state = 738;
36649
+ this.state = 742;
36494
36650
  this.aggregateOrderByStatement();
36495
36651
  }
36496
36652
  break;
36497
36653
  case _MalloyParser.LIMIT:
36498
36654
  this.enterOuterAlt(_localctx, 4);
36499
36655
  {
36500
- this.state = 739;
36656
+ this.state = 743;
36501
36657
  this.fieldPropertyLimitStatement();
36502
36658
  }
36503
36659
  break;
@@ -36526,32 +36682,32 @@ ${struct.dialect.sqlFinalStage("__stage0", [
36526
36682
  let _alt;
36527
36683
  this.enterOuterAlt(_localctx, 1);
36528
36684
  {
36529
- this.state = 742;
36685
+ this.state = 746;
36530
36686
  this.fieldExpr(0);
36531
- this.state = 747;
36687
+ this.state = 751;
36532
36688
  this._errHandler.sync(this);
36533
- _alt = this.interpreter.adaptivePredict(this._input, 65, this._ctx);
36689
+ _alt = this.interpreter.adaptivePredict(this._input, 66, this._ctx);
36534
36690
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
36535
36691
  if (_alt === 1) {
36536
36692
  {
36537
36693
  {
36538
- this.state = 743;
36694
+ this.state = 747;
36539
36695
  this.match(_MalloyParser.COMMA);
36540
- this.state = 744;
36696
+ this.state = 748;
36541
36697
  this.fieldExpr(0);
36542
36698
  }
36543
36699
  }
36544
36700
  }
36545
- this.state = 749;
36701
+ this.state = 753;
36546
36702
  this._errHandler.sync(this);
36547
- _alt = this.interpreter.adaptivePredict(this._input, 65, this._ctx);
36703
+ _alt = this.interpreter.adaptivePredict(this._input, 66, this._ctx);
36548
36704
  }
36549
- this.state = 751;
36705
+ this.state = 755;
36550
36706
  this._errHandler.sync(this);
36551
36707
  _la = this._input.LA(1);
36552
36708
  if (_la === _MalloyParser.COMMA) {
36553
36709
  {
36554
- this.state = 750;
36710
+ this.state = 754;
36555
36711
  this.match(_MalloyParser.COMMA);
36556
36712
  }
36557
36713
  }
@@ -36576,9 +36732,9 @@ ${struct.dialect.sqlFinalStage("__stage0", [
36576
36732
  try {
36577
36733
  this.enterOuterAlt(_localctx, 1);
36578
36734
  {
36579
- this.state = 753;
36735
+ this.state = 757;
36580
36736
  this.match(_MalloyParser.WHERE);
36581
- this.state = 754;
36737
+ this.state = 758;
36582
36738
  this.filterClauseList();
36583
36739
  }
36584
36740
  } catch (re2) {
@@ -36601,9 +36757,9 @@ ${struct.dialect.sqlFinalStage("__stage0", [
36601
36757
  try {
36602
36758
  this.enterOuterAlt(_localctx, 1);
36603
36759
  {
36604
- this.state = 756;
36760
+ this.state = 760;
36605
36761
  this.match(_MalloyParser.HAVING);
36606
- this.state = 757;
36762
+ this.state = 761;
36607
36763
  this.filterClauseList();
36608
36764
  }
36609
36765
  } catch (re2) {
@@ -36628,39 +36784,39 @@ ${struct.dialect.sqlFinalStage("__stage0", [
36628
36784
  let _alt;
36629
36785
  this.enterOuterAlt(_localctx, 1);
36630
36786
  {
36631
- this.state = 759;
36787
+ this.state = 763;
36632
36788
  this.exploreQueryDef();
36633
- this.state = 766;
36789
+ this.state = 770;
36634
36790
  this._errHandler.sync(this);
36635
- _alt = this.interpreter.adaptivePredict(this._input, 68, this._ctx);
36791
+ _alt = this.interpreter.adaptivePredict(this._input, 69, this._ctx);
36636
36792
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
36637
36793
  if (_alt === 1) {
36638
36794
  {
36639
36795
  {
36640
- this.state = 761;
36796
+ this.state = 765;
36641
36797
  this._errHandler.sync(this);
36642
36798
  _la = this._input.LA(1);
36643
36799
  if (_la === _MalloyParser.COMMA) {
36644
36800
  {
36645
- this.state = 760;
36801
+ this.state = 764;
36646
36802
  this.match(_MalloyParser.COMMA);
36647
36803
  }
36648
36804
  }
36649
- this.state = 763;
36805
+ this.state = 767;
36650
36806
  this.exploreQueryDef();
36651
36807
  }
36652
36808
  }
36653
36809
  }
36654
- this.state = 768;
36810
+ this.state = 772;
36655
36811
  this._errHandler.sync(this);
36656
- _alt = this.interpreter.adaptivePredict(this._input, 68, this._ctx);
36812
+ _alt = this.interpreter.adaptivePredict(this._input, 69, this._ctx);
36657
36813
  }
36658
- this.state = 770;
36814
+ this.state = 774;
36659
36815
  this._errHandler.sync(this);
36660
36816
  _la = this._input.LA(1);
36661
36817
  if (_la === _MalloyParser.COMMA) {
36662
36818
  {
36663
- this.state = 769;
36819
+ this.state = 773;
36664
36820
  this.match(_MalloyParser.COMMA);
36665
36821
  }
36666
36822
  }
@@ -36685,7 +36841,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
36685
36841
  try {
36686
36842
  this.enterOuterAlt(_localctx, 1);
36687
36843
  {
36688
- this.state = 772;
36844
+ this.state = 776;
36689
36845
  this.id();
36690
36846
  }
36691
36847
  } catch (re2) {
@@ -36709,25 +36865,25 @@ ${struct.dialect.sqlFinalStage("__stage0", [
36709
36865
  try {
36710
36866
  this.enterOuterAlt(_localctx, 1);
36711
36867
  {
36712
- this.state = 777;
36868
+ this.state = 781;
36713
36869
  this._errHandler.sync(this);
36714
36870
  _la = this._input.LA(1);
36715
36871
  while (_la === _MalloyParser.ANNOTATION) {
36716
36872
  {
36717
36873
  {
36718
- this.state = 774;
36874
+ this.state = 778;
36719
36875
  this.match(_MalloyParser.ANNOTATION);
36720
36876
  }
36721
36877
  }
36722
- this.state = 779;
36878
+ this.state = 783;
36723
36879
  this._errHandler.sync(this);
36724
36880
  _la = this._input.LA(1);
36725
36881
  }
36726
- this.state = 780;
36882
+ this.state = 784;
36727
36883
  this.exploreQueryNameDef();
36728
- this.state = 781;
36884
+ this.state = 785;
36729
36885
  this.isDefine();
36730
- this.state = 782;
36886
+ this.state = 786;
36731
36887
  this.vExpr();
36732
36888
  }
36733
36889
  } catch (re2) {
@@ -36748,132 +36904,132 @@ ${struct.dialect.sqlFinalStage("__stage0", [
36748
36904
  let _localctx = new QueryStatementContext(this._ctx, this.state);
36749
36905
  this.enterRule(_localctx, 144, _MalloyParser.RULE_queryStatement);
36750
36906
  try {
36751
- this.state = 802;
36907
+ this.state = 806;
36752
36908
  this._errHandler.sync(this);
36753
- switch (this.interpreter.adaptivePredict(this._input, 71, this._ctx)) {
36909
+ switch (this.interpreter.adaptivePredict(this._input, 72, this._ctx)) {
36754
36910
  case 1:
36755
36911
  this.enterOuterAlt(_localctx, 1);
36756
36912
  {
36757
- this.state = 784;
36913
+ this.state = 788;
36758
36914
  this.groupByStatement();
36759
36915
  }
36760
36916
  break;
36761
36917
  case 2:
36762
36918
  this.enterOuterAlt(_localctx, 2);
36763
36919
  {
36764
- this.state = 785;
36920
+ this.state = 789;
36765
36921
  this.declareStatement();
36766
36922
  }
36767
36923
  break;
36768
36924
  case 3:
36769
36925
  this.enterOuterAlt(_localctx, 3);
36770
36926
  {
36771
- this.state = 786;
36927
+ this.state = 790;
36772
36928
  this.queryJoinStatement();
36773
36929
  }
36774
36930
  break;
36775
36931
  case 4:
36776
36932
  this.enterOuterAlt(_localctx, 4);
36777
36933
  {
36778
- this.state = 787;
36934
+ this.state = 791;
36779
36935
  this.queryExtend();
36780
36936
  }
36781
36937
  break;
36782
36938
  case 5:
36783
36939
  this.enterOuterAlt(_localctx, 5);
36784
36940
  {
36785
- this.state = 788;
36941
+ this.state = 792;
36786
36942
  this.projectStatement();
36787
36943
  }
36788
36944
  break;
36789
36945
  case 6:
36790
36946
  this.enterOuterAlt(_localctx, 6);
36791
36947
  {
36792
- this.state = 789;
36948
+ this.state = 793;
36793
36949
  this.indexStatement();
36794
36950
  }
36795
36951
  break;
36796
36952
  case 7:
36797
36953
  this.enterOuterAlt(_localctx, 7);
36798
36954
  {
36799
- this.state = 790;
36955
+ this.state = 794;
36800
36956
  this.aggregateStatement();
36801
36957
  }
36802
36958
  break;
36803
36959
  case 8:
36804
36960
  this.enterOuterAlt(_localctx, 8);
36805
36961
  {
36806
- this.state = 791;
36962
+ this.state = 795;
36807
36963
  this.calculateStatement();
36808
36964
  }
36809
36965
  break;
36810
36966
  case 9:
36811
36967
  this.enterOuterAlt(_localctx, 9);
36812
36968
  {
36813
- this.state = 792;
36969
+ this.state = 796;
36814
36970
  this.topStatement();
36815
36971
  }
36816
36972
  break;
36817
36973
  case 10:
36818
36974
  this.enterOuterAlt(_localctx, 10);
36819
36975
  {
36820
- this.state = 793;
36976
+ this.state = 797;
36821
36977
  this.limitStatement();
36822
36978
  }
36823
36979
  break;
36824
36980
  case 11:
36825
36981
  this.enterOuterAlt(_localctx, 11);
36826
36982
  {
36827
- this.state = 794;
36983
+ this.state = 798;
36828
36984
  this.orderByStatement();
36829
36985
  }
36830
36986
  break;
36831
36987
  case 12:
36832
36988
  this.enterOuterAlt(_localctx, 12);
36833
36989
  {
36834
- this.state = 795;
36990
+ this.state = 799;
36835
36991
  this.whereStatement();
36836
36992
  }
36837
36993
  break;
36838
36994
  case 13:
36839
36995
  this.enterOuterAlt(_localctx, 13);
36840
36996
  {
36841
- this.state = 796;
36997
+ this.state = 800;
36842
36998
  this.havingStatement();
36843
36999
  }
36844
37000
  break;
36845
37001
  case 14:
36846
37002
  this.enterOuterAlt(_localctx, 14);
36847
37003
  {
36848
- this.state = 797;
37004
+ this.state = 801;
36849
37005
  this.nestStatement();
36850
37006
  }
36851
37007
  break;
36852
37008
  case 15:
36853
37009
  this.enterOuterAlt(_localctx, 15);
36854
37010
  {
36855
- this.state = 798;
37011
+ this.state = 802;
36856
37012
  this.sampleStatement();
36857
37013
  }
36858
37014
  break;
36859
37015
  case 16:
36860
37016
  this.enterOuterAlt(_localctx, 16);
36861
37017
  {
36862
- this.state = 799;
37018
+ this.state = 803;
36863
37019
  this.timezoneStatement();
36864
37020
  }
36865
37021
  break;
36866
37022
  case 17:
36867
37023
  this.enterOuterAlt(_localctx, 17);
36868
37024
  {
36869
- this.state = 800;
37025
+ this.state = 804;
36870
37026
  this.queryAnnotation();
36871
37027
  }
36872
37028
  break;
36873
37029
  case 18:
36874
37030
  this.enterOuterAlt(_localctx, 18);
36875
37031
  {
36876
- this.state = 801;
37032
+ this.state = 805;
36877
37033
  this.ignoredModelAnnotations();
36878
37034
  }
36879
37035
  break;
@@ -36898,7 +37054,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
36898
37054
  try {
36899
37055
  this.enterOuterAlt(_localctx, 1);
36900
37056
  {
36901
- this.state = 804;
37057
+ this.state = 808;
36902
37058
  this.joinStatement();
36903
37059
  }
36904
37060
  } catch (re2) {
@@ -36921,11 +37077,11 @@ ${struct.dialect.sqlFinalStage("__stage0", [
36921
37077
  try {
36922
37078
  this.enterOuterAlt(_localctx, 1);
36923
37079
  {
36924
- this.state = 806;
37080
+ this.state = 810;
36925
37081
  this.tags();
36926
- this.state = 807;
37082
+ this.state = 811;
36927
37083
  this.match(_MalloyParser.GROUP_BY);
36928
- this.state = 808;
37084
+ this.state = 812;
36929
37085
  this.queryFieldList();
36930
37086
  }
36931
37087
  } catch (re2) {
@@ -36950,39 +37106,39 @@ ${struct.dialect.sqlFinalStage("__stage0", [
36950
37106
  let _alt;
36951
37107
  this.enterOuterAlt(_localctx, 1);
36952
37108
  {
36953
- this.state = 810;
37109
+ this.state = 814;
36954
37110
  this.queryFieldEntry();
36955
- this.state = 817;
37111
+ this.state = 821;
36956
37112
  this._errHandler.sync(this);
36957
- _alt = this.interpreter.adaptivePredict(this._input, 73, this._ctx);
37113
+ _alt = this.interpreter.adaptivePredict(this._input, 74, this._ctx);
36958
37114
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
36959
37115
  if (_alt === 1) {
36960
37116
  {
36961
37117
  {
36962
- this.state = 812;
37118
+ this.state = 816;
36963
37119
  this._errHandler.sync(this);
36964
37120
  _la = this._input.LA(1);
36965
37121
  if (_la === _MalloyParser.COMMA) {
36966
37122
  {
36967
- this.state = 811;
37123
+ this.state = 815;
36968
37124
  this.match(_MalloyParser.COMMA);
36969
37125
  }
36970
37126
  }
36971
- this.state = 814;
37127
+ this.state = 818;
36972
37128
  this.queryFieldEntry();
36973
37129
  }
36974
37130
  }
36975
37131
  }
36976
- this.state = 819;
37132
+ this.state = 823;
36977
37133
  this._errHandler.sync(this);
36978
- _alt = this.interpreter.adaptivePredict(this._input, 73, this._ctx);
37134
+ _alt = this.interpreter.adaptivePredict(this._input, 74, this._ctx);
36979
37135
  }
36980
- this.state = 821;
37136
+ this.state = 825;
36981
37137
  this._errHandler.sync(this);
36982
37138
  _la = this._input.LA(1);
36983
37139
  if (_la === _MalloyParser.COMMA) {
36984
37140
  {
36985
- this.state = 820;
37141
+ this.state = 824;
36986
37142
  this.match(_MalloyParser.COMMA);
36987
37143
  }
36988
37144
  }
@@ -37005,20 +37161,20 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37005
37161
  let _localctx = new QueryFieldEntryContext(this._ctx, this.state);
37006
37162
  this.enterRule(_localctx, 152, _MalloyParser.RULE_queryFieldEntry);
37007
37163
  try {
37008
- this.state = 825;
37164
+ this.state = 829;
37009
37165
  this._errHandler.sync(this);
37010
- switch (this.interpreter.adaptivePredict(this._input, 75, this._ctx)) {
37166
+ switch (this.interpreter.adaptivePredict(this._input, 76, this._ctx)) {
37011
37167
  case 1:
37012
37168
  this.enterOuterAlt(_localctx, 1);
37013
37169
  {
37014
- this.state = 823;
37170
+ this.state = 827;
37015
37171
  this.taggedRef();
37016
37172
  }
37017
37173
  break;
37018
37174
  case 2:
37019
37175
  this.enterOuterAlt(_localctx, 2);
37020
37176
  {
37021
- this.state = 824;
37177
+ this.state = 828;
37022
37178
  this.fieldDef();
37023
37179
  }
37024
37180
  break;
@@ -37043,11 +37199,11 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37043
37199
  try {
37044
37200
  this.enterOuterAlt(_localctx, 1);
37045
37201
  {
37046
- this.state = 827;
37202
+ this.state = 831;
37047
37203
  this.tags();
37048
- this.state = 828;
37204
+ this.state = 832;
37049
37205
  this.match(_MalloyParser.NEST);
37050
- this.state = 829;
37206
+ this.state = 833;
37051
37207
  this.nestedQueryList();
37052
37208
  }
37053
37209
  } catch (re2) {
@@ -37072,39 +37228,39 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37072
37228
  let _alt;
37073
37229
  this.enterOuterAlt(_localctx, 1);
37074
37230
  {
37075
- this.state = 831;
37231
+ this.state = 835;
37076
37232
  this.nestEntry();
37077
- this.state = 838;
37233
+ this.state = 842;
37078
37234
  this._errHandler.sync(this);
37079
- _alt = this.interpreter.adaptivePredict(this._input, 77, this._ctx);
37235
+ _alt = this.interpreter.adaptivePredict(this._input, 78, this._ctx);
37080
37236
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
37081
37237
  if (_alt === 1) {
37082
37238
  {
37083
37239
  {
37084
- this.state = 833;
37240
+ this.state = 837;
37085
37241
  this._errHandler.sync(this);
37086
37242
  _la = this._input.LA(1);
37087
37243
  if (_la === _MalloyParser.COMMA) {
37088
37244
  {
37089
- this.state = 832;
37245
+ this.state = 836;
37090
37246
  this.match(_MalloyParser.COMMA);
37091
37247
  }
37092
37248
  }
37093
- this.state = 835;
37249
+ this.state = 839;
37094
37250
  this.nestEntry();
37095
37251
  }
37096
37252
  }
37097
37253
  }
37098
- this.state = 840;
37254
+ this.state = 844;
37099
37255
  this._errHandler.sync(this);
37100
- _alt = this.interpreter.adaptivePredict(this._input, 77, this._ctx);
37256
+ _alt = this.interpreter.adaptivePredict(this._input, 78, this._ctx);
37101
37257
  }
37102
- this.state = 842;
37258
+ this.state = 846;
37103
37259
  this._errHandler.sync(this);
37104
37260
  _la = this._input.LA(1);
37105
37261
  if (_la === _MalloyParser.COMMA) {
37106
37262
  {
37107
- this.state = 841;
37263
+ this.state = 845;
37108
37264
  this.match(_MalloyParser.COMMA);
37109
37265
  }
37110
37266
  }
@@ -37126,46 +37282,26 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37126
37282
  nestEntry() {
37127
37283
  let _localctx = new NestEntryContext(this._ctx, this.state);
37128
37284
  this.enterRule(_localctx, 158, _MalloyParser.RULE_nestEntry);
37129
- let _la;
37130
37285
  try {
37131
- this.state = 855;
37132
- this._errHandler.sync(this);
37133
- switch (this.interpreter.adaptivePredict(this._input, 80, this._ctx)) {
37134
- case 1:
37135
- _localctx = new NestExistingContext(_localctx);
37136
- this.enterOuterAlt(_localctx, 1);
37137
- {
37138
- this.state = 844;
37139
- this.tags();
37140
- this.state = 845;
37141
- this.fieldPath();
37142
- this.state = 848;
37143
- this._errHandler.sync(this);
37144
- _la = this._input.LA(1);
37145
- if (_la === _MalloyParser.PLUS) {
37146
- {
37147
- this.state = 846;
37148
- this.match(_MalloyParser.PLUS);
37149
- this.state = 847;
37150
- this.vExpr();
37151
- }
37286
+ _localctx = new NestDefContext(_localctx);
37287
+ this.enterOuterAlt(_localctx, 1);
37288
+ {
37289
+ this.state = 848;
37290
+ this.tags();
37291
+ this.state = 852;
37292
+ this._errHandler.sync(this);
37293
+ switch (this.interpreter.adaptivePredict(this._input, 80, this._ctx)) {
37294
+ case 1:
37295
+ {
37296
+ this.state = 849;
37297
+ this.queryName();
37298
+ this.state = 850;
37299
+ this.isDefine();
37152
37300
  }
37153
- }
37154
- break;
37155
- case 2:
37156
- _localctx = new NestDefContext(_localctx);
37157
- this.enterOuterAlt(_localctx, 2);
37158
- {
37159
- this.state = 850;
37160
- this.tags();
37161
- this.state = 851;
37162
- this.queryName();
37163
- this.state = 852;
37164
- this.isDefine();
37165
- this.state = 853;
37166
- this.vExpr();
37167
- }
37168
- break;
37301
+ break;
37302
+ }
37303
+ this.state = 854;
37304
+ this.vExpr();
37169
37305
  }
37170
37306
  } catch (re2) {
37171
37307
  if (re2 instanceof RecognitionException_1.RecognitionException) {
@@ -37187,11 +37323,11 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37187
37323
  try {
37188
37324
  this.enterOuterAlt(_localctx, 1);
37189
37325
  {
37190
- this.state = 857;
37326
+ this.state = 856;
37191
37327
  this.tags();
37192
- this.state = 858;
37328
+ this.state = 857;
37193
37329
  this.match(_MalloyParser.AGGREGATE);
37194
- this.state = 859;
37330
+ this.state = 858;
37195
37331
  this.queryFieldList();
37196
37332
  }
37197
37333
  } catch (re2) {
@@ -37214,11 +37350,11 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37214
37350
  try {
37215
37351
  this.enterOuterAlt(_localctx, 1);
37216
37352
  {
37217
- this.state = 861;
37353
+ this.state = 860;
37218
37354
  this.tags();
37219
- this.state = 862;
37355
+ this.state = 861;
37220
37356
  this.match(_MalloyParser.CALCULATE);
37221
- this.state = 863;
37357
+ this.state = 862;
37222
37358
  this.queryFieldList();
37223
37359
  }
37224
37360
  } catch (re2) {
@@ -37242,9 +37378,9 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37242
37378
  try {
37243
37379
  this.enterOuterAlt(_localctx, 1);
37244
37380
  {
37245
- this.state = 865;
37381
+ this.state = 864;
37246
37382
  this.tags();
37247
- this.state = 866;
37383
+ this.state = 865;
37248
37384
  _la = this._input.LA(1);
37249
37385
  if (!(_la === _MalloyParser.PROJECT || _la === _MalloyParser.SELECT)) {
37250
37386
  this._errHandler.recoverInline(this);
@@ -37255,7 +37391,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37255
37391
  this._errHandler.reportMatch(this);
37256
37392
  this.consume();
37257
37393
  }
37258
- this.state = 867;
37394
+ this.state = 866;
37259
37395
  this.fieldCollection();
37260
37396
  }
37261
37397
  } catch (re2) {
@@ -37280,34 +37416,34 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37280
37416
  let _alt;
37281
37417
  this.enterOuterAlt(_localctx, 1);
37282
37418
  {
37283
- this.state = 869;
37419
+ this.state = 868;
37284
37420
  this.match(_MalloyParser.PARTITION_BY);
37285
- this.state = 870;
37421
+ this.state = 869;
37286
37422
  this.id();
37287
- this.state = 875;
37423
+ this.state = 874;
37288
37424
  this._errHandler.sync(this);
37289
37425
  _alt = this.interpreter.adaptivePredict(this._input, 81, this._ctx);
37290
37426
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
37291
37427
  if (_alt === 1) {
37292
37428
  {
37293
37429
  {
37294
- this.state = 871;
37430
+ this.state = 870;
37295
37431
  this.match(_MalloyParser.COMMA);
37296
- this.state = 872;
37432
+ this.state = 871;
37297
37433
  this.id();
37298
37434
  }
37299
37435
  }
37300
37436
  }
37301
- this.state = 877;
37437
+ this.state = 876;
37302
37438
  this._errHandler.sync(this);
37303
37439
  _alt = this.interpreter.adaptivePredict(this._input, 81, this._ctx);
37304
37440
  }
37305
- this.state = 879;
37441
+ this.state = 878;
37306
37442
  this._errHandler.sync(this);
37307
37443
  _la = this._input.LA(1);
37308
37444
  if (_la === _MalloyParser.COMMA) {
37309
37445
  {
37310
- this.state = 878;
37446
+ this.state = 877;
37311
37447
  this.match(_MalloyParser.COMMA);
37312
37448
  }
37313
37449
  }
@@ -37332,9 +37468,9 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37332
37468
  try {
37333
37469
  this.enterOuterAlt(_localctx, 1);
37334
37470
  {
37335
- this.state = 881;
37471
+ this.state = 880;
37336
37472
  this.match(_MalloyParser.ORDER_BY);
37337
- this.state = 882;
37473
+ this.state = 881;
37338
37474
  this.ordering();
37339
37475
  }
37340
37476
  } catch (re2) {
@@ -37359,39 +37495,39 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37359
37495
  let _alt;
37360
37496
  this.enterOuterAlt(_localctx, 1);
37361
37497
  {
37362
- this.state = 884;
37498
+ this.state = 883;
37363
37499
  this.orderBySpec();
37364
- this.state = 891;
37500
+ this.state = 890;
37365
37501
  this._errHandler.sync(this);
37366
37502
  _alt = this.interpreter.adaptivePredict(this._input, 84, this._ctx);
37367
37503
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
37368
37504
  if (_alt === 1) {
37369
37505
  {
37370
37506
  {
37371
- this.state = 886;
37507
+ this.state = 885;
37372
37508
  this._errHandler.sync(this);
37373
37509
  _la = this._input.LA(1);
37374
37510
  if (_la === _MalloyParser.COMMA) {
37375
37511
  {
37376
- this.state = 885;
37512
+ this.state = 884;
37377
37513
  this.match(_MalloyParser.COMMA);
37378
37514
  }
37379
37515
  }
37380
- this.state = 888;
37516
+ this.state = 887;
37381
37517
  this.orderBySpec();
37382
37518
  }
37383
37519
  }
37384
37520
  }
37385
- this.state = 893;
37521
+ this.state = 892;
37386
37522
  this._errHandler.sync(this);
37387
37523
  _alt = this.interpreter.adaptivePredict(this._input, 84, this._ctx);
37388
37524
  }
37389
- this.state = 895;
37525
+ this.state = 894;
37390
37526
  this._errHandler.sync(this);
37391
37527
  _la = this._input.LA(1);
37392
37528
  if (_la === _MalloyParser.COMMA) {
37393
37529
  {
37394
- this.state = 894;
37530
+ this.state = 893;
37395
37531
  this.match(_MalloyParser.COMMA);
37396
37532
  }
37397
37533
  }
@@ -37417,31 +37553,31 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37417
37553
  try {
37418
37554
  this.enterOuterAlt(_localctx, 1);
37419
37555
  {
37420
- this.state = 899;
37556
+ this.state = 898;
37421
37557
  this._errHandler.sync(this);
37422
37558
  switch (this._input.LA(1)) {
37423
37559
  case _MalloyParser.INTEGER_LITERAL:
37424
37560
  {
37425
- this.state = 897;
37561
+ this.state = 896;
37426
37562
  this.match(_MalloyParser.INTEGER_LITERAL);
37427
37563
  }
37428
37564
  break;
37429
37565
  case _MalloyParser.BQ_STRING:
37430
37566
  case _MalloyParser.IDENTIFIER:
37431
37567
  {
37432
- this.state = 898;
37568
+ this.state = 897;
37433
37569
  this.fieldName();
37434
37570
  }
37435
37571
  break;
37436
37572
  default:
37437
37573
  throw new NoViableAltException_1.NoViableAltException(this);
37438
37574
  }
37439
- this.state = 902;
37575
+ this.state = 901;
37440
37576
  this._errHandler.sync(this);
37441
37577
  _la = this._input.LA(1);
37442
37578
  if (_la === _MalloyParser.ASC || _la === _MalloyParser.DESC) {
37443
37579
  {
37444
- this.state = 901;
37580
+ this.state = 900;
37445
37581
  _la = this._input.LA(1);
37446
37582
  if (!(_la === _MalloyParser.ASC || _la === _MalloyParser.DESC)) {
37447
37583
  this._errHandler.recoverInline(this);
@@ -37475,9 +37611,9 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37475
37611
  try {
37476
37612
  this.enterOuterAlt(_localctx, 1);
37477
37613
  {
37478
- this.state = 904;
37614
+ this.state = 903;
37479
37615
  this.match(_MalloyParser.LIMIT);
37480
- this.state = 905;
37616
+ this.state = 904;
37481
37617
  this.match(_MalloyParser.INTEGER_LITERAL);
37482
37618
  }
37483
37619
  } catch (re2) {
@@ -37498,24 +37634,24 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37498
37634
  let _localctx = new BySpecContext(this._ctx, this.state);
37499
37635
  this.enterRule(_localctx, 176, _MalloyParser.RULE_bySpec);
37500
37636
  try {
37501
- this.state = 911;
37637
+ this.state = 910;
37502
37638
  this._errHandler.sync(this);
37503
37639
  switch (this.interpreter.adaptivePredict(this._input, 88, this._ctx)) {
37504
37640
  case 1:
37505
37641
  this.enterOuterAlt(_localctx, 1);
37506
37642
  {
37507
- this.state = 907;
37643
+ this.state = 906;
37508
37644
  this.match(_MalloyParser.BY);
37509
- this.state = 908;
37645
+ this.state = 907;
37510
37646
  this.fieldName();
37511
37647
  }
37512
37648
  break;
37513
37649
  case 2:
37514
37650
  this.enterOuterAlt(_localctx, 2);
37515
37651
  {
37516
- this.state = 909;
37652
+ this.state = 908;
37517
37653
  this.match(_MalloyParser.BY);
37518
- this.state = 910;
37654
+ this.state = 909;
37519
37655
  this.fieldExpr(0);
37520
37656
  }
37521
37657
  break;
@@ -37541,16 +37677,16 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37541
37677
  try {
37542
37678
  this.enterOuterAlt(_localctx, 1);
37543
37679
  {
37544
- this.state = 913;
37680
+ this.state = 912;
37545
37681
  this.match(_MalloyParser.TOP);
37546
- this.state = 914;
37682
+ this.state = 913;
37547
37683
  this.match(_MalloyParser.INTEGER_LITERAL);
37548
- this.state = 916;
37684
+ this.state = 915;
37549
37685
  this._errHandler.sync(this);
37550
37686
  _la = this._input.LA(1);
37551
37687
  if (_la === _MalloyParser.BY) {
37552
37688
  {
37553
- this.state = 915;
37689
+ this.state = 914;
37554
37690
  this.bySpec();
37555
37691
  }
37556
37692
  }
@@ -37574,23 +37710,23 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37574
37710
  this.enterRule(_localctx, 180, _MalloyParser.RULE_indexElement);
37575
37711
  let _la;
37576
37712
  try {
37577
- this.state = 924;
37713
+ this.state = 923;
37578
37714
  this._errHandler.sync(this);
37579
37715
  switch (this._input.LA(1)) {
37580
37716
  case _MalloyParser.BQ_STRING:
37581
37717
  case _MalloyParser.IDENTIFIER:
37582
37718
  this.enterOuterAlt(_localctx, 1);
37583
37719
  {
37584
- this.state = 918;
37720
+ this.state = 917;
37585
37721
  this.fieldPath();
37586
- this.state = 921;
37722
+ this.state = 920;
37587
37723
  this._errHandler.sync(this);
37588
37724
  _la = this._input.LA(1);
37589
37725
  if (_la === _MalloyParser.DOT) {
37590
37726
  {
37591
- this.state = 919;
37727
+ this.state = 918;
37592
37728
  this.match(_MalloyParser.DOT);
37593
- this.state = 920;
37729
+ this.state = 919;
37594
37730
  this.match(_MalloyParser.STAR);
37595
37731
  }
37596
37732
  }
@@ -37599,7 +37735,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37599
37735
  case _MalloyParser.STAR:
37600
37736
  this.enterOuterAlt(_localctx, 2);
37601
37737
  {
37602
- this.state = 923;
37738
+ this.state = 922;
37603
37739
  this.match(_MalloyParser.STAR);
37604
37740
  }
37605
37741
  break;
@@ -37628,30 +37764,30 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37628
37764
  let _alt;
37629
37765
  this.enterOuterAlt(_localctx, 1);
37630
37766
  {
37631
- this.state = 926;
37767
+ this.state = 925;
37632
37768
  this.indexElement();
37633
- this.state = 933;
37769
+ this.state = 932;
37634
37770
  this._errHandler.sync(this);
37635
37771
  _alt = this.interpreter.adaptivePredict(this._input, 93, this._ctx);
37636
37772
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
37637
37773
  if (_alt === 1) {
37638
37774
  {
37639
37775
  {
37640
- this.state = 928;
37776
+ this.state = 927;
37641
37777
  this._errHandler.sync(this);
37642
37778
  _la = this._input.LA(1);
37643
37779
  if (_la === _MalloyParser.COMMA) {
37644
37780
  {
37645
- this.state = 927;
37781
+ this.state = 926;
37646
37782
  this.match(_MalloyParser.COMMA);
37647
37783
  }
37648
37784
  }
37649
- this.state = 930;
37785
+ this.state = 929;
37650
37786
  this.indexElement();
37651
37787
  }
37652
37788
  }
37653
37789
  }
37654
- this.state = 935;
37790
+ this.state = 934;
37655
37791
  this._errHandler.sync(this);
37656
37792
  _alt = this.interpreter.adaptivePredict(this._input, 93, this._ctx);
37657
37793
  }
@@ -37677,18 +37813,18 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37677
37813
  try {
37678
37814
  this.enterOuterAlt(_localctx, 1);
37679
37815
  {
37680
- this.state = 936;
37816
+ this.state = 935;
37681
37817
  this.match(_MalloyParser.INDEX);
37682
- this.state = 937;
37818
+ this.state = 936;
37683
37819
  this.indexFields();
37684
- this.state = 940;
37820
+ this.state = 939;
37685
37821
  this._errHandler.sync(this);
37686
37822
  _la = this._input.LA(1);
37687
37823
  if (_la === _MalloyParser.BY) {
37688
37824
  {
37689
- this.state = 938;
37825
+ this.state = 937;
37690
37826
  this.match(_MalloyParser.BY);
37691
- this.state = 939;
37827
+ this.state = 938;
37692
37828
  this.fieldName();
37693
37829
  }
37694
37830
  }
@@ -37713,9 +37849,9 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37713
37849
  try {
37714
37850
  this.enterOuterAlt(_localctx, 1);
37715
37851
  {
37716
- this.state = 942;
37852
+ this.state = 941;
37717
37853
  this.match(_MalloyParser.SAMPLE);
37718
- this.state = 943;
37854
+ this.state = 942;
37719
37855
  this.sampleSpec();
37720
37856
  }
37721
37857
  } catch (re2) {
@@ -37738,9 +37874,9 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37738
37874
  try {
37739
37875
  this.enterOuterAlt(_localctx, 1);
37740
37876
  {
37741
- this.state = 945;
37877
+ this.state = 944;
37742
37878
  this.match(_MalloyParser.TIMEZONE);
37743
- this.state = 946;
37879
+ this.state = 945;
37744
37880
  this.string();
37745
37881
  }
37746
37882
  } catch (re2) {
@@ -37763,7 +37899,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37763
37899
  try {
37764
37900
  this.enterOuterAlt(_localctx, 1);
37765
37901
  {
37766
- this.state = 948;
37902
+ this.state = 947;
37767
37903
  this.match(_MalloyParser.ANNOTATION);
37768
37904
  }
37769
37905
  } catch (re2) {
@@ -37787,7 +37923,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37787
37923
  try {
37788
37924
  this.enterOuterAlt(_localctx, 1);
37789
37925
  {
37790
- this.state = 950;
37926
+ this.state = 949;
37791
37927
  _la = this._input.LA(1);
37792
37928
  if (!(_la === _MalloyParser.FALSE || _la === _MalloyParser.TRUE || _la === _MalloyParser.PERCENT_LITERAL || _la === _MalloyParser.INTEGER_LITERAL)) {
37793
37929
  this._errHandler.recoverInline(this);
@@ -37820,7 +37956,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37820
37956
  try {
37821
37957
  this.enterOuterAlt(_localctx, 1);
37822
37958
  {
37823
- this.state = 952;
37959
+ this.state = 951;
37824
37960
  _la = this._input.LA(1);
37825
37961
  if (!((_la - 38 & ~31) === 0 && (1 << _la - 38 & (1 << _MalloyParser.AVG - 38 | 1 << _MalloyParser.COUNT - 38 | 1 << _MalloyParser.MAX - 38 | 1 << _MalloyParser.MIN - 38)) !== 0 || _la === _MalloyParser.SUM)) {
37826
37962
  this._errHandler.recoverInline(this);
@@ -37853,7 +37989,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37853
37989
  try {
37854
37990
  this.enterOuterAlt(_localctx, 1);
37855
37991
  {
37856
- this.state = 954;
37992
+ this.state = 953;
37857
37993
  _la = this._input.LA(1);
37858
37994
  if (!(_la === _MalloyParser.BOOLEAN || _la === _MalloyParser.DATE || (_la - 73 & ~31) === 0 && (1 << _la - 73 & (1 << _MalloyParser.NUMBER - 73 | 1 << _MalloyParser.STRING - 73 | 1 << _MalloyParser.TIMESTAMP - 73)) !== 0)) {
37859
37995
  this._errHandler.recoverInline(this);
@@ -37886,7 +38022,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37886
38022
  try {
37887
38023
  this.enterOuterAlt(_localctx, 1);
37888
38024
  {
37889
- this.state = 956;
38025
+ this.state = 955;
37890
38026
  _la = this._input.LA(1);
37891
38027
  if (!((_la - 118 & ~31) === 0 && (1 << _la - 118 & (1 << _MalloyParser.LT - 118 | 1 << _MalloyParser.GT - 118 | 1 << _MalloyParser.EQ - 118 | 1 << _MalloyParser.NE - 118 | 1 << _MalloyParser.LTE - 118 | 1 << _MalloyParser.GTE - 118 | 1 << _MalloyParser.NOT_MATCH - 118 | 1 << _MalloyParser.MATCH - 118)) !== 0)) {
37892
38028
  this._errHandler.recoverInline(this);
@@ -37916,21 +38052,21 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37916
38052
  let _localctx = new StringContext(this._ctx, this.state);
37917
38053
  this.enterRule(_localctx, 200, _MalloyParser.RULE_string);
37918
38054
  try {
37919
- this.state = 960;
38055
+ this.state = 959;
37920
38056
  this._errHandler.sync(this);
37921
38057
  switch (this._input.LA(1)) {
37922
38058
  case _MalloyParser.SQ_STRING:
37923
38059
  case _MalloyParser.DQ_STRING:
37924
38060
  this.enterOuterAlt(_localctx, 1);
37925
38061
  {
37926
- this.state = 958;
38062
+ this.state = 957;
37927
38063
  this.shortString();
37928
38064
  }
37929
38065
  break;
37930
38066
  case _MalloyParser.SQL_BEGIN:
37931
38067
  this.enterOuterAlt(_localctx, 2);
37932
38068
  {
37933
- this.state = 959;
38069
+ this.state = 958;
37934
38070
  this.sqlString();
37935
38071
  }
37936
38072
  break;
@@ -37958,7 +38094,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37958
38094
  try {
37959
38095
  this.enterOuterAlt(_localctx, 1);
37960
38096
  {
37961
- this.state = 962;
38097
+ this.state = 961;
37962
38098
  _la = this._input.LA(1);
37963
38099
  if (!(_la === _MalloyParser.SQ_STRING || _la === _MalloyParser.DQ_STRING)) {
37964
38100
  this._errHandler.recoverInline(this);
@@ -37991,7 +38127,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
37991
38127
  try {
37992
38128
  this.enterOuterAlt(_localctx, 1);
37993
38129
  {
37994
- this.state = 964;
38130
+ this.state = 963;
37995
38131
  _la = this._input.LA(1);
37996
38132
  if (!(_la === _MalloyParser.NUMERIC_LITERAL || _la === _MalloyParser.INTEGER_LITERAL)) {
37997
38133
  this._errHandler.recoverInline(this);
@@ -38022,7 +38158,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38022
38158
  this.enterRule(_localctx, 206, _MalloyParser.RULE_literal);
38023
38159
  let _la;
38024
38160
  try {
38025
- this.state = 973;
38161
+ this.state = 972;
38026
38162
  this._errHandler.sync(this);
38027
38163
  switch (this._input.LA(1)) {
38028
38164
  case _MalloyParser.SQ_STRING:
@@ -38031,7 +38167,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38031
38167
  _localctx = new ExprStringContext(_localctx);
38032
38168
  this.enterOuterAlt(_localctx, 1);
38033
38169
  {
38034
- this.state = 966;
38170
+ this.state = 965;
38035
38171
  this.string();
38036
38172
  }
38037
38173
  break;
@@ -38040,7 +38176,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38040
38176
  _localctx = new ExprNumberContext(_localctx);
38041
38177
  this.enterOuterAlt(_localctx, 2);
38042
38178
  {
38043
- this.state = 967;
38179
+ this.state = 966;
38044
38180
  this.numericLiteral();
38045
38181
  }
38046
38182
  break;
@@ -38054,7 +38190,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38054
38190
  _localctx = new ExprTimeContext(_localctx);
38055
38191
  this.enterOuterAlt(_localctx, 3);
38056
38192
  {
38057
- this.state = 968;
38193
+ this.state = 967;
38058
38194
  this.dateLiteral();
38059
38195
  }
38060
38196
  break;
@@ -38062,7 +38198,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38062
38198
  _localctx = new ExprNULLContext(_localctx);
38063
38199
  this.enterOuterAlt(_localctx, 4);
38064
38200
  {
38065
- this.state = 969;
38201
+ this.state = 968;
38066
38202
  this.match(_MalloyParser.NULL);
38067
38203
  }
38068
38204
  break;
@@ -38071,7 +38207,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38071
38207
  _localctx = new ExprBoolContext(_localctx);
38072
38208
  this.enterOuterAlt(_localctx, 5);
38073
38209
  {
38074
- this.state = 970;
38210
+ this.state = 969;
38075
38211
  _la = this._input.LA(1);
38076
38212
  if (!(_la === _MalloyParser.FALSE || _la === _MalloyParser.TRUE)) {
38077
38213
  this._errHandler.recoverInline(this);
@@ -38088,7 +38224,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38088
38224
  _localctx = new ExprRegexContext(_localctx);
38089
38225
  this.enterOuterAlt(_localctx, 6);
38090
38226
  {
38091
- this.state = 971;
38227
+ this.state = 970;
38092
38228
  this.match(_MalloyParser.HACKY_REGEX);
38093
38229
  }
38094
38230
  break;
@@ -38096,7 +38232,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38096
38232
  _localctx = new ExprNowContext(_localctx);
38097
38233
  this.enterOuterAlt(_localctx, 7);
38098
38234
  {
38099
- this.state = 972;
38235
+ this.state = 971;
38100
38236
  this.match(_MalloyParser.NOW);
38101
38237
  }
38102
38238
  break;
@@ -38121,14 +38257,14 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38121
38257
  let _localctx = new DateLiteralContext(this._ctx, this.state);
38122
38258
  this.enterRule(_localctx, 208, _MalloyParser.RULE_dateLiteral);
38123
38259
  try {
38124
- this.state = 982;
38260
+ this.state = 981;
38125
38261
  this._errHandler.sync(this);
38126
38262
  switch (this._input.LA(1)) {
38127
38263
  case _MalloyParser.LITERAL_TIMESTAMP:
38128
38264
  _localctx = new LiteralTimestampContext(_localctx);
38129
38265
  this.enterOuterAlt(_localctx, 1);
38130
38266
  {
38131
- this.state = 975;
38267
+ this.state = 974;
38132
38268
  this.match(_MalloyParser.LITERAL_TIMESTAMP);
38133
38269
  }
38134
38270
  break;
@@ -38136,7 +38272,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38136
38272
  _localctx = new LiteralHourContext(_localctx);
38137
38273
  this.enterOuterAlt(_localctx, 2);
38138
38274
  {
38139
- this.state = 976;
38275
+ this.state = 975;
38140
38276
  this.match(_MalloyParser.LITERAL_HOUR);
38141
38277
  }
38142
38278
  break;
@@ -38144,7 +38280,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38144
38280
  _localctx = new LiteralDayContext(_localctx);
38145
38281
  this.enterOuterAlt(_localctx, 3);
38146
38282
  {
38147
- this.state = 977;
38283
+ this.state = 976;
38148
38284
  this.match(_MalloyParser.LITERAL_DAY);
38149
38285
  }
38150
38286
  break;
@@ -38152,7 +38288,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38152
38288
  _localctx = new LiteralWeekContext(_localctx);
38153
38289
  this.enterOuterAlt(_localctx, 4);
38154
38290
  {
38155
- this.state = 978;
38291
+ this.state = 977;
38156
38292
  this.match(_MalloyParser.LITERAL_WEEK);
38157
38293
  }
38158
38294
  break;
@@ -38160,7 +38296,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38160
38296
  _localctx = new LiteralMonthContext(_localctx);
38161
38297
  this.enterOuterAlt(_localctx, 5);
38162
38298
  {
38163
- this.state = 979;
38299
+ this.state = 978;
38164
38300
  this.match(_MalloyParser.LITERAL_MONTH);
38165
38301
  }
38166
38302
  break;
@@ -38168,7 +38304,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38168
38304
  _localctx = new LiteralQuarterContext(_localctx);
38169
38305
  this.enterOuterAlt(_localctx, 6);
38170
38306
  {
38171
- this.state = 980;
38307
+ this.state = 979;
38172
38308
  this.match(_MalloyParser.LITERAL_QUARTER);
38173
38309
  }
38174
38310
  break;
@@ -38176,7 +38312,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38176
38312
  _localctx = new LiteralYearContext(_localctx);
38177
38313
  this.enterOuterAlt(_localctx, 7);
38178
38314
  {
38179
- this.state = 981;
38315
+ this.state = 980;
38180
38316
  this.match(_MalloyParser.LITERAL_YEAR);
38181
38317
  }
38182
38318
  break;
@@ -38203,7 +38339,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38203
38339
  try {
38204
38340
  this.enterOuterAlt(_localctx, 1);
38205
38341
  {
38206
- this.state = 984;
38342
+ this.state = 983;
38207
38343
  this.string();
38208
38344
  }
38209
38345
  } catch (re2) {
@@ -38226,7 +38362,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38226
38362
  try {
38227
38363
  this.enterOuterAlt(_localctx, 1);
38228
38364
  {
38229
- this.state = 986;
38365
+ this.state = 985;
38230
38366
  this.string();
38231
38367
  }
38232
38368
  } catch (re2) {
@@ -38250,7 +38386,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38250
38386
  try {
38251
38387
  this.enterOuterAlt(_localctx, 1);
38252
38388
  {
38253
- this.state = 988;
38389
+ this.state = 987;
38254
38390
  _la = this._input.LA(1);
38255
38391
  if (!(_la === _MalloyParser.BQ_STRING || _la === _MalloyParser.IDENTIFIER)) {
38256
38392
  this._errHandler.recoverInline(this);
@@ -38283,7 +38419,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38283
38419
  try {
38284
38420
  this.enterOuterAlt(_localctx, 1);
38285
38421
  {
38286
- this.state = 990;
38422
+ this.state = 989;
38287
38423
  _la = this._input.LA(1);
38288
38424
  if (!((_la - 46 & ~31) === 0 && (1 << _la - 46 & (1 << _MalloyParser.DAY - 46 | 1 << _MalloyParser.HOUR - 46 | 1 << _MalloyParser.MINUTE - 46 | 1 << _MalloyParser.MONTH - 46 | 1 << _MalloyParser.QUARTER - 46)) !== 0 || (_la - 79 & ~31) === 0 && (1 << _la - 79 & (1 << _MalloyParser.SECOND - 79 | 1 << _MalloyParser.WEEK - 79 | 1 << _MalloyParser.YEAR - 79)) !== 0)) {
38289
38425
  this._errHandler.recoverInline(this);
@@ -38316,7 +38452,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38316
38452
  try {
38317
38453
  this.enterOuterAlt(_localctx, 1);
38318
38454
  {
38319
- this.state = 992;
38455
+ this.state = 991;
38320
38456
  _la = this._input.LA(1);
38321
38457
  if (!(_la === _MalloyParser.ALL || _la === _MalloyParser.EXCLUDE)) {
38322
38458
  this._errHandler.recoverInline(this);
@@ -38346,7 +38482,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38346
38482
  let _localctx = new MalloyOrSQLTypeContext(this._ctx, this.state);
38347
38483
  this.enterRule(_localctx, 220, _MalloyParser.RULE_malloyOrSQLType);
38348
38484
  try {
38349
- this.state = 996;
38485
+ this.state = 995;
38350
38486
  this._errHandler.sync(this);
38351
38487
  switch (this._input.LA(1)) {
38352
38488
  case _MalloyParser.BOOLEAN:
@@ -38356,7 +38492,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38356
38492
  case _MalloyParser.TIMESTAMP:
38357
38493
  this.enterOuterAlt(_localctx, 1);
38358
38494
  {
38359
- this.state = 994;
38495
+ this.state = 993;
38360
38496
  this.malloyType();
38361
38497
  }
38362
38498
  break;
@@ -38365,7 +38501,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38365
38501
  case _MalloyParser.SQL_BEGIN:
38366
38502
  this.enterOuterAlt(_localctx, 2);
38367
38503
  {
38368
- this.state = 995;
38504
+ this.state = 994;
38369
38505
  this.string();
38370
38506
  }
38371
38507
  break;
@@ -38401,7 +38537,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38401
38537
  let _alt;
38402
38538
  this.enterOuterAlt(_localctx, 1);
38403
38539
  {
38404
- this.state = 1081;
38540
+ this.state = 1080;
38405
38541
  this._errHandler.sync(this);
38406
38542
  switch (this.interpreter.adaptivePredict(this._input, 108, this._ctx)) {
38407
38543
  case 1:
@@ -38409,7 +38545,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38409
38545
  _localctx = new ExprFieldPathContext(_localctx);
38410
38546
  this._ctx = _localctx;
38411
38547
  _prevctx = _localctx;
38412
- this.state = 999;
38548
+ this.state = 998;
38413
38549
  this.fieldPath();
38414
38550
  }
38415
38551
  break;
@@ -38418,7 +38554,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38418
38554
  _localctx = new ExprLiteralContext(_localctx);
38419
38555
  this._ctx = _localctx;
38420
38556
  _prevctx = _localctx;
38421
- this.state = 1e3;
38557
+ this.state = 999;
38422
38558
  this.literal();
38423
38559
  }
38424
38560
  break;
@@ -38427,9 +38563,9 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38427
38563
  _localctx = new ExprMinusContext(_localctx);
38428
38564
  this._ctx = _localctx;
38429
38565
  _prevctx = _localctx;
38430
- this.state = 1001;
38566
+ this.state = 1e3;
38431
38567
  this.match(_MalloyParser.MINUS);
38432
- this.state = 1002;
38568
+ this.state = 1001;
38433
38569
  this.fieldExpr(22);
38434
38570
  }
38435
38571
  break;
@@ -38438,9 +38574,9 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38438
38574
  _localctx = new ExprNotContext(_localctx);
38439
38575
  this._ctx = _localctx;
38440
38576
  _prevctx = _localctx;
38441
- this.state = 1003;
38577
+ this.state = 1002;
38442
38578
  this.match(_MalloyParser.NOT);
38443
- this.state = 1004;
38579
+ this.state = 1003;
38444
38580
  this.fieldExpr(13);
38445
38581
  }
38446
38582
  break;
@@ -38449,17 +38585,17 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38449
38585
  _localctx = new ExprCastContext(_localctx);
38450
38586
  this._ctx = _localctx;
38451
38587
  _prevctx = _localctx;
38452
- this.state = 1005;
38588
+ this.state = 1004;
38453
38589
  this.match(_MalloyParser.CAST);
38454
- this.state = 1006;
38590
+ this.state = 1005;
38455
38591
  this.match(_MalloyParser.OPAREN);
38456
- this.state = 1007;
38592
+ this.state = 1006;
38457
38593
  this.fieldExpr(0);
38458
- this.state = 1008;
38594
+ this.state = 1007;
38459
38595
  this.match(_MalloyParser.AS);
38460
- this.state = 1009;
38596
+ this.state = 1008;
38461
38597
  this.malloyOrSQLType();
38462
- this.state = 1010;
38598
+ this.state = 1009;
38463
38599
  this.match(_MalloyParser.CPAREN);
38464
38600
  }
38465
38601
  break;
@@ -38468,15 +38604,15 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38468
38604
  _localctx = new ExprCountDisinctContext(_localctx);
38469
38605
  this._ctx = _localctx;
38470
38606
  _prevctx = _localctx;
38471
- this.state = 1012;
38607
+ this.state = 1011;
38472
38608
  this.match(_MalloyParser.COUNT);
38473
- this.state = 1013;
38609
+ this.state = 1012;
38474
38610
  this.match(_MalloyParser.OPAREN);
38475
- this.state = 1014;
38611
+ this.state = 1013;
38476
38612
  this.match(_MalloyParser.DISTINCT);
38477
- this.state = 1015;
38613
+ this.state = 1014;
38478
38614
  this.fieldExpr(0);
38479
- this.state = 1016;
38615
+ this.state = 1015;
38480
38616
  this.match(_MalloyParser.CPAREN);
38481
38617
  }
38482
38618
  break;
@@ -38485,22 +38621,22 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38485
38621
  _localctx = new ExprPathlessAggregateContext(_localctx);
38486
38622
  this._ctx = _localctx;
38487
38623
  _prevctx = _localctx;
38488
- this.state = 1020;
38624
+ this.state = 1019;
38489
38625
  this._errHandler.sync(this);
38490
38626
  _la = this._input.LA(1);
38491
38627
  if (_la === _MalloyParser.SOURCE_KW) {
38492
38628
  {
38493
- this.state = 1018;
38629
+ this.state = 1017;
38494
38630
  this.match(_MalloyParser.SOURCE_KW);
38495
- this.state = 1019;
38631
+ this.state = 1018;
38496
38632
  this.match(_MalloyParser.DOT);
38497
38633
  }
38498
38634
  }
38499
- this.state = 1022;
38635
+ this.state = 1021;
38500
38636
  this.aggregate();
38501
- this.state = 1023;
38637
+ this.state = 1022;
38502
38638
  this.match(_MalloyParser.OPAREN);
38503
- this.state = 1026;
38639
+ this.state = 1025;
38504
38640
  this._errHandler.sync(this);
38505
38641
  switch (this._input.LA(1)) {
38506
38642
  case _MalloyParser.ALL:
@@ -38544,13 +38680,13 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38544
38680
  case _MalloyParser.INTEGER_LITERAL:
38545
38681
  case _MalloyParser.SQL_BEGIN:
38546
38682
  {
38547
- this.state = 1024;
38683
+ this.state = 1023;
38548
38684
  this.fieldExpr(0);
38549
38685
  }
38550
38686
  break;
38551
38687
  case _MalloyParser.STAR:
38552
38688
  {
38553
- this.state = 1025;
38689
+ this.state = 1024;
38554
38690
  this.match(_MalloyParser.STAR);
38555
38691
  }
38556
38692
  break;
@@ -38559,7 +38695,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38559
38695
  default:
38560
38696
  break;
38561
38697
  }
38562
- this.state = 1028;
38698
+ this.state = 1027;
38563
38699
  this.match(_MalloyParser.CPAREN);
38564
38700
  }
38565
38701
  break;
@@ -38568,24 +38704,24 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38568
38704
  _localctx = new ExprAggregateContext(_localctx);
38569
38705
  this._ctx = _localctx;
38570
38706
  _prevctx = _localctx;
38571
- this.state = 1030;
38707
+ this.state = 1029;
38572
38708
  this.fieldPath();
38573
- this.state = 1031;
38709
+ this.state = 1030;
38574
38710
  this.match(_MalloyParser.DOT);
38575
- this.state = 1032;
38711
+ this.state = 1031;
38576
38712
  this.aggregate();
38577
- this.state = 1033;
38713
+ this.state = 1032;
38578
38714
  this.match(_MalloyParser.OPAREN);
38579
- this.state = 1035;
38715
+ this.state = 1034;
38580
38716
  this._errHandler.sync(this);
38581
38717
  _la = this._input.LA(1);
38582
38718
  if ((_la - 34 & ~31) === 0 && (1 << _la - 34 & (1 << _MalloyParser.ALL - 34 | 1 << _MalloyParser.AVG - 34 | 1 << _MalloyParser.CAST - 34 | 1 << _MalloyParser.COUNT - 34 | 1 << _MalloyParser.DAY - 34 | 1 << _MalloyParser.EXCLUDE - 34 | 1 << _MalloyParser.FALSE - 34 | 1 << _MalloyParser.HOUR - 34)) !== 0 || (_la - 66 & ~31) === 0 && (1 << _la - 66 & (1 << _MalloyParser.MAX - 66 | 1 << _MalloyParser.MIN - 66 | 1 << _MalloyParser.MINUTE - 66 | 1 << _MalloyParser.MONTH - 66 | 1 << _MalloyParser.NOT - 66 | 1 << _MalloyParser.NOW - 66 | 1 << _MalloyParser.NULL - 66 | 1 << _MalloyParser.PICK - 66 | 1 << _MalloyParser.QUARTER - 66 | 1 << _MalloyParser.SECOND - 66 | 1 << _MalloyParser.SOURCE_KW - 66 | 1 << _MalloyParser.SUM - 66 | 1 << _MalloyParser.TRUE - 66 | 1 << _MalloyParser.WEEK - 66 | 1 << _MalloyParser.YEAR - 66 | 1 << _MalloyParser.HACKY_REGEX - 66)) !== 0 || (_la - 98 & ~31) === 0 && (1 << _la - 98 & (1 << _MalloyParser.SQ_STRING - 98 | 1 << _MalloyParser.DQ_STRING - 98 | 1 << _MalloyParser.BQ_STRING - 98 | 1 << _MalloyParser.OPAREN - 98 | 1 << _MalloyParser.MINUS - 98)) !== 0 || (_la - 136 & ~31) === 0 && (1 << _la - 136 & (1 << _MalloyParser.LITERAL_TIMESTAMP - 136 | 1 << _MalloyParser.LITERAL_HOUR - 136 | 1 << _MalloyParser.LITERAL_DAY - 136 | 1 << _MalloyParser.LITERAL_QUARTER - 136 | 1 << _MalloyParser.LITERAL_MONTH - 136 | 1 << _MalloyParser.LITERAL_WEEK - 136 | 1 << _MalloyParser.LITERAL_YEAR - 136 | 1 << _MalloyParser.IDENTIFIER - 136 | 1 << _MalloyParser.NUMERIC_LITERAL - 136 | 1 << _MalloyParser.INTEGER_LITERAL - 136 | 1 << _MalloyParser.SQL_BEGIN - 136)) !== 0) {
38583
38719
  {
38584
- this.state = 1034;
38720
+ this.state = 1033;
38585
38721
  this.fieldExpr(0);
38586
38722
  }
38587
38723
  }
38588
- this.state = 1037;
38724
+ this.state = 1036;
38589
38725
  this.match(_MalloyParser.CPAREN);
38590
38726
  }
38591
38727
  break;
@@ -38594,11 +38730,11 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38594
38730
  _localctx = new ExprExprContext(_localctx);
38595
38731
  this._ctx = _localctx;
38596
38732
  _prevctx = _localctx;
38597
- this.state = 1039;
38733
+ this.state = 1038;
38598
38734
  this.match(_MalloyParser.OPAREN);
38599
- this.state = 1040;
38735
+ this.state = 1039;
38600
38736
  this.partialAllowedFieldExpr();
38601
- this.state = 1041;
38737
+ this.state = 1040;
38602
38738
  this.match(_MalloyParser.CPAREN);
38603
38739
  }
38604
38740
  break;
@@ -38607,26 +38743,26 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38607
38743
  _localctx = new ExprAggFuncContext(_localctx);
38608
38744
  this._ctx = _localctx;
38609
38745
  _prevctx = _localctx;
38610
- this.state = 1043;
38746
+ this.state = 1042;
38611
38747
  this.fieldPath();
38612
- this.state = 1044;
38748
+ this.state = 1043;
38613
38749
  this.match(_MalloyParser.DOT);
38614
- this.state = 1045;
38750
+ this.state = 1044;
38615
38751
  this.id();
38616
- this.state = 1046;
38752
+ this.state = 1045;
38617
38753
  this.match(_MalloyParser.OPAREN);
38618
38754
  {
38619
- this.state = 1048;
38755
+ this.state = 1047;
38620
38756
  this._errHandler.sync(this);
38621
38757
  _la = this._input.LA(1);
38622
38758
  if ((_la - 34 & ~31) === 0 && (1 << _la - 34 & (1 << _MalloyParser.ALL - 34 | 1 << _MalloyParser.AVG - 34 | 1 << _MalloyParser.CAST - 34 | 1 << _MalloyParser.COUNT - 34 | 1 << _MalloyParser.DAY - 34 | 1 << _MalloyParser.EXCLUDE - 34 | 1 << _MalloyParser.FALSE - 34 | 1 << _MalloyParser.HOUR - 34)) !== 0 || (_la - 66 & ~31) === 0 && (1 << _la - 66 & (1 << _MalloyParser.MAX - 66 | 1 << _MalloyParser.MIN - 66 | 1 << _MalloyParser.MINUTE - 66 | 1 << _MalloyParser.MONTH - 66 | 1 << _MalloyParser.NOT - 66 | 1 << _MalloyParser.NOW - 66 | 1 << _MalloyParser.NULL - 66 | 1 << _MalloyParser.PICK - 66 | 1 << _MalloyParser.QUARTER - 66 | 1 << _MalloyParser.SECOND - 66 | 1 << _MalloyParser.SOURCE_KW - 66 | 1 << _MalloyParser.SUM - 66 | 1 << _MalloyParser.TRUE - 66 | 1 << _MalloyParser.WEEK - 66 | 1 << _MalloyParser.YEAR - 66 | 1 << _MalloyParser.HACKY_REGEX - 66)) !== 0 || (_la - 98 & ~31) === 0 && (1 << _la - 98 & (1 << _MalloyParser.SQ_STRING - 98 | 1 << _MalloyParser.DQ_STRING - 98 | 1 << _MalloyParser.BQ_STRING - 98 | 1 << _MalloyParser.OPAREN - 98 | 1 << _MalloyParser.MINUS - 98)) !== 0 || (_la - 136 & ~31) === 0 && (1 << _la - 136 & (1 << _MalloyParser.LITERAL_TIMESTAMP - 136 | 1 << _MalloyParser.LITERAL_HOUR - 136 | 1 << _MalloyParser.LITERAL_DAY - 136 | 1 << _MalloyParser.LITERAL_QUARTER - 136 | 1 << _MalloyParser.LITERAL_MONTH - 136 | 1 << _MalloyParser.LITERAL_WEEK - 136 | 1 << _MalloyParser.LITERAL_YEAR - 136 | 1 << _MalloyParser.IDENTIFIER - 136 | 1 << _MalloyParser.NUMERIC_LITERAL - 136 | 1 << _MalloyParser.INTEGER_LITERAL - 136 | 1 << _MalloyParser.SQL_BEGIN - 136)) !== 0) {
38623
38759
  {
38624
- this.state = 1047;
38760
+ this.state = 1046;
38625
38761
  this.argumentList();
38626
38762
  }
38627
38763
  }
38628
38764
  }
38629
- this.state = 1050;
38765
+ this.state = 1049;
38630
38766
  this.match(_MalloyParser.CPAREN);
38631
38767
  }
38632
38768
  break;
@@ -38635,28 +38771,28 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38635
38771
  _localctx = new ExprFuncContext(_localctx);
38636
38772
  this._ctx = _localctx;
38637
38773
  _prevctx = _localctx;
38638
- this.state = 1060;
38774
+ this.state = 1059;
38639
38775
  this._errHandler.sync(this);
38640
38776
  switch (this._input.LA(1)) {
38641
38777
  case _MalloyParser.BQ_STRING:
38642
38778
  case _MalloyParser.IDENTIFIER:
38643
38779
  {
38644
38780
  {
38645
- this.state = 1052;
38781
+ this.state = 1051;
38646
38782
  this.id();
38647
- this.state = 1057;
38783
+ this.state = 1056;
38648
38784
  this._errHandler.sync(this);
38649
38785
  _la = this._input.LA(1);
38650
38786
  if (_la === _MalloyParser.EXCLAM) {
38651
38787
  {
38652
- this.state = 1053;
38788
+ this.state = 1052;
38653
38789
  this.match(_MalloyParser.EXCLAM);
38654
- this.state = 1055;
38790
+ this.state = 1054;
38655
38791
  this._errHandler.sync(this);
38656
38792
  _la = this._input.LA(1);
38657
38793
  if (_la === _MalloyParser.BOOLEAN || _la === _MalloyParser.DATE || (_la - 73 & ~31) === 0 && (1 << _la - 73 & (1 << _MalloyParser.NUMBER - 73 | 1 << _MalloyParser.STRING - 73 | 1 << _MalloyParser.TIMESTAMP - 73)) !== 0) {
38658
38794
  {
38659
- this.state = 1054;
38795
+ this.state = 1053;
38660
38796
  this.malloyType();
38661
38797
  }
38662
38798
  }
@@ -38674,27 +38810,27 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38674
38810
  case _MalloyParser.WEEK:
38675
38811
  case _MalloyParser.YEAR:
38676
38812
  {
38677
- this.state = 1059;
38813
+ this.state = 1058;
38678
38814
  this.timeframe();
38679
38815
  }
38680
38816
  break;
38681
38817
  default:
38682
38818
  throw new NoViableAltException_1.NoViableAltException(this);
38683
38819
  }
38684
- this.state = 1062;
38820
+ this.state = 1061;
38685
38821
  this.match(_MalloyParser.OPAREN);
38686
38822
  {
38687
- this.state = 1064;
38823
+ this.state = 1063;
38688
38824
  this._errHandler.sync(this);
38689
38825
  _la = this._input.LA(1);
38690
38826
  if ((_la - 34 & ~31) === 0 && (1 << _la - 34 & (1 << _MalloyParser.ALL - 34 | 1 << _MalloyParser.AVG - 34 | 1 << _MalloyParser.CAST - 34 | 1 << _MalloyParser.COUNT - 34 | 1 << _MalloyParser.DAY - 34 | 1 << _MalloyParser.EXCLUDE - 34 | 1 << _MalloyParser.FALSE - 34 | 1 << _MalloyParser.HOUR - 34)) !== 0 || (_la - 66 & ~31) === 0 && (1 << _la - 66 & (1 << _MalloyParser.MAX - 66 | 1 << _MalloyParser.MIN - 66 | 1 << _MalloyParser.MINUTE - 66 | 1 << _MalloyParser.MONTH - 66 | 1 << _MalloyParser.NOT - 66 | 1 << _MalloyParser.NOW - 66 | 1 << _MalloyParser.NULL - 66 | 1 << _MalloyParser.PICK - 66 | 1 << _MalloyParser.QUARTER - 66 | 1 << _MalloyParser.SECOND - 66 | 1 << _MalloyParser.SOURCE_KW - 66 | 1 << _MalloyParser.SUM - 66 | 1 << _MalloyParser.TRUE - 66 | 1 << _MalloyParser.WEEK - 66 | 1 << _MalloyParser.YEAR - 66 | 1 << _MalloyParser.HACKY_REGEX - 66)) !== 0 || (_la - 98 & ~31) === 0 && (1 << _la - 98 & (1 << _MalloyParser.SQ_STRING - 98 | 1 << _MalloyParser.DQ_STRING - 98 | 1 << _MalloyParser.BQ_STRING - 98 | 1 << _MalloyParser.OPAREN - 98 | 1 << _MalloyParser.MINUS - 98)) !== 0 || (_la - 136 & ~31) === 0 && (1 << _la - 136 & (1 << _MalloyParser.LITERAL_TIMESTAMP - 136 | 1 << _MalloyParser.LITERAL_HOUR - 136 | 1 << _MalloyParser.LITERAL_DAY - 136 | 1 << _MalloyParser.LITERAL_QUARTER - 136 | 1 << _MalloyParser.LITERAL_MONTH - 136 | 1 << _MalloyParser.LITERAL_WEEK - 136 | 1 << _MalloyParser.LITERAL_YEAR - 136 | 1 << _MalloyParser.IDENTIFIER - 136 | 1 << _MalloyParser.NUMERIC_LITERAL - 136 | 1 << _MalloyParser.INTEGER_LITERAL - 136 | 1 << _MalloyParser.SQL_BEGIN - 136)) !== 0) {
38691
38827
  {
38692
- this.state = 1063;
38828
+ this.state = 1062;
38693
38829
  this.argumentList();
38694
38830
  }
38695
38831
  }
38696
38832
  }
38697
- this.state = 1066;
38833
+ this.state = 1065;
38698
38834
  this.match(_MalloyParser.CPAREN);
38699
38835
  }
38700
38836
  break;
@@ -38703,7 +38839,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38703
38839
  _localctx = new ExprPickContext(_localctx);
38704
38840
  this._ctx = _localctx;
38705
38841
  _prevctx = _localctx;
38706
- this.state = 1068;
38842
+ this.state = 1067;
38707
38843
  this.pickStatement();
38708
38844
  }
38709
38845
  break;
@@ -38712,35 +38848,35 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38712
38848
  _localctx = new ExprUngroupContext(_localctx);
38713
38849
  this._ctx = _localctx;
38714
38850
  _prevctx = _localctx;
38715
- this.state = 1069;
38851
+ this.state = 1068;
38716
38852
  this.ungroup();
38717
- this.state = 1070;
38853
+ this.state = 1069;
38718
38854
  this.match(_MalloyParser.OPAREN);
38719
- this.state = 1071;
38855
+ this.state = 1070;
38720
38856
  this.fieldExpr(0);
38721
- this.state = 1076;
38857
+ this.state = 1075;
38722
38858
  this._errHandler.sync(this);
38723
38859
  _la = this._input.LA(1);
38724
38860
  while (_la === _MalloyParser.COMMA) {
38725
38861
  {
38726
38862
  {
38727
- this.state = 1072;
38863
+ this.state = 1071;
38728
38864
  this.match(_MalloyParser.COMMA);
38729
- this.state = 1073;
38865
+ this.state = 1072;
38730
38866
  this.fieldName();
38731
38867
  }
38732
38868
  }
38733
- this.state = 1078;
38869
+ this.state = 1077;
38734
38870
  this._errHandler.sync(this);
38735
38871
  _la = this._input.LA(1);
38736
38872
  }
38737
- this.state = 1079;
38873
+ this.state = 1078;
38738
38874
  this.match(_MalloyParser.CPAREN);
38739
38875
  }
38740
38876
  break;
38741
38877
  }
38742
38878
  this._ctx._stop = this._input.tryLT(-1);
38743
- this.state = 1134;
38879
+ this.state = 1133;
38744
38880
  this._errHandler.sync(this);
38745
38881
  _alt = this.interpreter.adaptivePredict(this._input, 110, this._ctx);
38746
38882
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
@@ -38750,18 +38886,18 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38750
38886
  }
38751
38887
  _prevctx = _localctx;
38752
38888
  {
38753
- this.state = 1132;
38889
+ this.state = 1131;
38754
38890
  this._errHandler.sync(this);
38755
38891
  switch (this.interpreter.adaptivePredict(this._input, 109, this._ctx)) {
38756
38892
  case 1:
38757
38893
  {
38758
38894
  _localctx = new ExprMulDivContext(new FieldExprContext(_parentctx, _parentState));
38759
38895
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38760
- this.state = 1083;
38896
+ this.state = 1082;
38761
38897
  if (!this.precpred(this._ctx, 21)) {
38762
38898
  throw this.createFailedPredicateException("this.precpred(this._ctx, 21)");
38763
38899
  }
38764
- this.state = 1084;
38900
+ this.state = 1083;
38765
38901
  _la = this._input.LA(1);
38766
38902
  if (!((_la - 126 & ~31) === 0 && (1 << _la - 126 & (1 << _MalloyParser.STAR - 126 | 1 << _MalloyParser.SLASH - 126 | 1 << _MalloyParser.PERCENT - 126)) !== 0)) {
38767
38903
  this._errHandler.recoverInline(this);
@@ -38772,7 +38908,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38772
38908
  this._errHandler.reportMatch(this);
38773
38909
  this.consume();
38774
38910
  }
38775
- this.state = 1085;
38911
+ this.state = 1084;
38776
38912
  this.fieldExpr(22);
38777
38913
  }
38778
38914
  break;
@@ -38780,11 +38916,11 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38780
38916
  {
38781
38917
  _localctx = new ExprAddSubContext(new FieldExprContext(_parentctx, _parentState));
38782
38918
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38783
- this.state = 1086;
38919
+ this.state = 1085;
38784
38920
  if (!this.precpred(this._ctx, 20)) {
38785
38921
  throw this.createFailedPredicateException("this.precpred(this._ctx, 20)");
38786
38922
  }
38787
- this.state = 1087;
38923
+ this.state = 1086;
38788
38924
  _la = this._input.LA(1);
38789
38925
  if (!(_la === _MalloyParser.PLUS || _la === _MalloyParser.MINUS)) {
38790
38926
  this._errHandler.recoverInline(this);
@@ -38795,7 +38931,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38795
38931
  this._errHandler.reportMatch(this);
38796
38932
  this.consume();
38797
38933
  }
38798
- this.state = 1088;
38934
+ this.state = 1087;
38799
38935
  this.fieldExpr(21);
38800
38936
  }
38801
38937
  break;
@@ -38803,13 +38939,13 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38803
38939
  {
38804
38940
  _localctx = new ExprRangeContext(new FieldExprContext(_parentctx, _parentState));
38805
38941
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38806
- this.state = 1089;
38942
+ this.state = 1088;
38807
38943
  if (!this.precpred(this._ctx, 19)) {
38808
38944
  throw this.createFailedPredicateException("this.precpred(this._ctx, 19)");
38809
38945
  }
38810
- this.state = 1090;
38946
+ this.state = 1089;
38811
38947
  this.match(_MalloyParser.TO);
38812
- this.state = 1091;
38948
+ this.state = 1090;
38813
38949
  this.fieldExpr(20);
38814
38950
  }
38815
38951
  break;
@@ -38817,13 +38953,13 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38817
38953
  {
38818
38954
  _localctx = new ExprCompareContext(new FieldExprContext(_parentctx, _parentState));
38819
38955
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38820
- this.state = 1092;
38956
+ this.state = 1091;
38821
38957
  if (!this.precpred(this._ctx, 15)) {
38822
38958
  throw this.createFailedPredicateException("this.precpred(this._ctx, 15)");
38823
38959
  }
38824
- this.state = 1093;
38960
+ this.state = 1092;
38825
38961
  this.compareOp();
38826
- this.state = 1094;
38962
+ this.state = 1093;
38827
38963
  this.fieldExpr(16);
38828
38964
  }
38829
38965
  break;
@@ -38831,13 +38967,13 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38831
38967
  {
38832
38968
  _localctx = new ExprLogicalAndContext(new FieldExprContext(_parentctx, _parentState));
38833
38969
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38834
- this.state = 1096;
38970
+ this.state = 1095;
38835
38971
  if (!this.precpred(this._ctx, 12)) {
38836
38972
  throw this.createFailedPredicateException("this.precpred(this._ctx, 12)");
38837
38973
  }
38838
- this.state = 1097;
38974
+ this.state = 1096;
38839
38975
  this.match(_MalloyParser.AND);
38840
- this.state = 1098;
38976
+ this.state = 1097;
38841
38977
  this.fieldExpr(13);
38842
38978
  }
38843
38979
  break;
@@ -38845,13 +38981,13 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38845
38981
  {
38846
38982
  _localctx = new ExprLogicalOrContext(new FieldExprContext(_parentctx, _parentState));
38847
38983
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38848
- this.state = 1099;
38984
+ this.state = 1098;
38849
38985
  if (!this.precpred(this._ctx, 11)) {
38850
38986
  throw this.createFailedPredicateException("this.precpred(this._ctx, 11)");
38851
38987
  }
38852
- this.state = 1100;
38988
+ this.state = 1099;
38853
38989
  this.match(_MalloyParser.OR);
38854
- this.state = 1101;
38990
+ this.state = 1100;
38855
38991
  this.fieldExpr(12);
38856
38992
  }
38857
38993
  break;
@@ -38859,13 +38995,13 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38859
38995
  {
38860
38996
  _localctx = new ExprCoalesceContext(new FieldExprContext(_parentctx, _parentState));
38861
38997
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38862
- this.state = 1102;
38998
+ this.state = 1101;
38863
38999
  if (!this.precpred(this._ctx, 10)) {
38864
39000
  throw this.createFailedPredicateException("this.precpred(this._ctx, 10)");
38865
39001
  }
38866
- this.state = 1103;
39002
+ this.state = 1102;
38867
39003
  this.match(_MalloyParser.DOUBLE_QMARK);
38868
- this.state = 1104;
39004
+ this.state = 1103;
38869
39005
  this.fieldExpr(11);
38870
39006
  }
38871
39007
  break;
@@ -38873,11 +39009,11 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38873
39009
  {
38874
39010
  _localctx = new ExprFieldPropsContext(new FieldExprContext(_parentctx, _parentState));
38875
39011
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38876
- this.state = 1105;
39012
+ this.state = 1104;
38877
39013
  if (!this.precpred(this._ctx, 28)) {
38878
39014
  throw this.createFailedPredicateException("this.precpred(this._ctx, 28)");
38879
39015
  }
38880
- this.state = 1106;
39016
+ this.state = 1105;
38881
39017
  this.fieldProperties();
38882
39018
  }
38883
39019
  break;
@@ -38885,11 +39021,11 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38885
39021
  {
38886
39022
  _localctx = new ExprDurationContext(new FieldExprContext(_parentctx, _parentState));
38887
39023
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38888
- this.state = 1107;
39024
+ this.state = 1106;
38889
39025
  if (!this.precpred(this._ctx, 26)) {
38890
39026
  throw this.createFailedPredicateException("this.precpred(this._ctx, 26)");
38891
39027
  }
38892
- this.state = 1108;
39028
+ this.state = 1107;
38893
39029
  this.timeframe();
38894
39030
  }
38895
39031
  break;
@@ -38897,13 +39033,13 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38897
39033
  {
38898
39034
  _localctx = new ExprTimeTruncContext(new FieldExprContext(_parentctx, _parentState));
38899
39035
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38900
- this.state = 1109;
39036
+ this.state = 1108;
38901
39037
  if (!this.precpred(this._ctx, 25)) {
38902
39038
  throw this.createFailedPredicateException("this.precpred(this._ctx, 25)");
38903
39039
  }
38904
- this.state = 1110;
39040
+ this.state = 1109;
38905
39041
  this.match(_MalloyParser.DOT);
38906
- this.state = 1111;
39042
+ this.state = 1110;
38907
39043
  this.timeframe();
38908
39044
  }
38909
39045
  break;
@@ -38911,13 +39047,13 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38911
39047
  {
38912
39048
  _localctx = new ExprCastContext(new FieldExprContext(_parentctx, _parentState));
38913
39049
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38914
- this.state = 1112;
39050
+ this.state = 1111;
38915
39051
  if (!this.precpred(this._ctx, 24)) {
38916
39052
  throw this.createFailedPredicateException("this.precpred(this._ctx, 24)");
38917
39053
  }
38918
- this.state = 1113;
39054
+ this.state = 1112;
38919
39055
  this.match(_MalloyParser.DOUBLECOLON);
38920
- this.state = 1114;
39056
+ this.state = 1113;
38921
39057
  this.malloyOrSQLType();
38922
39058
  }
38923
39059
  break;
@@ -38925,13 +39061,13 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38925
39061
  {
38926
39062
  _localctx = new ExprSafeCastContext(new FieldExprContext(_parentctx, _parentState));
38927
39063
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38928
- this.state = 1115;
39064
+ this.state = 1114;
38929
39065
  if (!this.precpred(this._ctx, 23)) {
38930
39066
  throw this.createFailedPredicateException("this.precpred(this._ctx, 23)");
38931
39067
  }
38932
- this.state = 1116;
39068
+ this.state = 1115;
38933
39069
  this.match(_MalloyParser.TRIPLECOLON);
38934
- this.state = 1117;
39070
+ this.state = 1116;
38935
39071
  this.malloyOrSQLType();
38936
39072
  }
38937
39073
  break;
@@ -38940,15 +39076,15 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38940
39076
  _localctx = new ExprForRangeContext(new FieldExprContext(_parentctx, _parentState));
38941
39077
  _localctx._startAt = _prevctx;
38942
39078
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38943
- this.state = 1118;
39079
+ this.state = 1117;
38944
39080
  if (!this.precpred(this._ctx, 18)) {
38945
39081
  throw this.createFailedPredicateException("this.precpred(this._ctx, 18)");
38946
39082
  }
38947
- this.state = 1119;
39083
+ this.state = 1118;
38948
39084
  this.match(_MalloyParser.FOR);
38949
- this.state = 1120;
39085
+ this.state = 1119;
38950
39086
  _localctx._duration = this.fieldExpr(0);
38951
- this.state = 1121;
39087
+ this.state = 1120;
38952
39088
  this.timeframe();
38953
39089
  }
38954
39090
  break;
@@ -38956,13 +39092,13 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38956
39092
  {
38957
39093
  _localctx = new ExprAndTreeContext(new FieldExprContext(_parentctx, _parentState));
38958
39094
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38959
- this.state = 1123;
39095
+ this.state = 1122;
38960
39096
  if (!this.precpred(this._ctx, 17)) {
38961
39097
  throw this.createFailedPredicateException("this.precpred(this._ctx, 17)");
38962
39098
  }
38963
- this.state = 1124;
39099
+ this.state = 1123;
38964
39100
  this.match(_MalloyParser.AMPER);
38965
- this.state = 1125;
39101
+ this.state = 1124;
38966
39102
  this.partialAllowedFieldExpr();
38967
39103
  }
38968
39104
  break;
@@ -38970,13 +39106,13 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38970
39106
  {
38971
39107
  _localctx = new ExprOrTreeContext(new FieldExprContext(_parentctx, _parentState));
38972
39108
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38973
- this.state = 1126;
39109
+ this.state = 1125;
38974
39110
  if (!this.precpred(this._ctx, 16)) {
38975
39111
  throw this.createFailedPredicateException("this.precpred(this._ctx, 16)");
38976
39112
  }
38977
- this.state = 1127;
39113
+ this.state = 1126;
38978
39114
  this.match(_MalloyParser.BAR);
38979
- this.state = 1128;
39115
+ this.state = 1127;
38980
39116
  this.partialAllowedFieldExpr();
38981
39117
  }
38982
39118
  break;
@@ -38984,20 +39120,20 @@ ${struct.dialect.sqlFinalStage("__stage0", [
38984
39120
  {
38985
39121
  _localctx = new ExprApplyContext(new FieldExprContext(_parentctx, _parentState));
38986
39122
  this.pushNewRecursionContext(_localctx, _startState, _MalloyParser.RULE_fieldExpr);
38987
- this.state = 1129;
39123
+ this.state = 1128;
38988
39124
  if (!this.precpred(this._ctx, 14)) {
38989
39125
  throw this.createFailedPredicateException("this.precpred(this._ctx, 14)");
38990
39126
  }
38991
- this.state = 1130;
39127
+ this.state = 1129;
38992
39128
  this.match(_MalloyParser.QMARK);
38993
- this.state = 1131;
39129
+ this.state = 1130;
38994
39130
  this.partialAllowedFieldExpr();
38995
39131
  }
38996
39132
  break;
38997
39133
  }
38998
39134
  }
38999
39135
  }
39000
- this.state = 1136;
39136
+ this.state = 1135;
39001
39137
  this._errHandler.sync(this);
39002
39138
  _alt = this.interpreter.adaptivePredict(this._input, 110, this._ctx);
39003
39139
  }
@@ -39021,42 +39157,42 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39021
39157
  this.enterRule(_localctx, 224, _MalloyParser.RULE_partialAllowedFieldExpr);
39022
39158
  let _la;
39023
39159
  try {
39024
- this.state = 1148;
39160
+ this.state = 1147;
39025
39161
  this._errHandler.sync(this);
39026
39162
  switch (this.interpreter.adaptivePredict(this._input, 113, this._ctx)) {
39027
39163
  case 1:
39028
39164
  this.enterOuterAlt(_localctx, 1);
39029
39165
  {
39030
- this.state = 1137;
39166
+ this.state = 1136;
39031
39167
  this.match(_MalloyParser.OPAREN);
39032
- this.state = 1139;
39168
+ this.state = 1138;
39033
39169
  this._errHandler.sync(this);
39034
39170
  _la = this._input.LA(1);
39035
39171
  if ((_la - 118 & ~31) === 0 && (1 << _la - 118 & (1 << _MalloyParser.LT - 118 | 1 << _MalloyParser.GT - 118 | 1 << _MalloyParser.EQ - 118 | 1 << _MalloyParser.NE - 118 | 1 << _MalloyParser.LTE - 118 | 1 << _MalloyParser.GTE - 118 | 1 << _MalloyParser.NOT_MATCH - 118 | 1 << _MalloyParser.MATCH - 118)) !== 0) {
39036
39172
  {
39037
- this.state = 1138;
39173
+ this.state = 1137;
39038
39174
  this.compareOp();
39039
39175
  }
39040
39176
  }
39041
- this.state = 1141;
39177
+ this.state = 1140;
39042
39178
  this.fieldExpr(0);
39043
- this.state = 1142;
39179
+ this.state = 1141;
39044
39180
  this.match(_MalloyParser.CPAREN);
39045
39181
  }
39046
39182
  break;
39047
39183
  case 2:
39048
39184
  this.enterOuterAlt(_localctx, 2);
39049
39185
  {
39050
- this.state = 1145;
39186
+ this.state = 1144;
39051
39187
  this._errHandler.sync(this);
39052
39188
  _la = this._input.LA(1);
39053
39189
  if ((_la - 118 & ~31) === 0 && (1 << _la - 118 & (1 << _MalloyParser.LT - 118 | 1 << _MalloyParser.GT - 118 | 1 << _MalloyParser.EQ - 118 | 1 << _MalloyParser.NE - 118 | 1 << _MalloyParser.LTE - 118 | 1 << _MalloyParser.GTE - 118 | 1 << _MalloyParser.NOT_MATCH - 118 | 1 << _MalloyParser.MATCH - 118)) !== 0) {
39054
39190
  {
39055
- this.state = 1144;
39191
+ this.state = 1143;
39056
39192
  this.compareOp();
39057
39193
  }
39058
39194
  }
39059
- this.state = 1147;
39195
+ this.state = 1146;
39060
39196
  this.fieldExpr(0);
39061
39197
  }
39062
39198
  break;
@@ -39082,7 +39218,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39082
39218
  let _alt;
39083
39219
  this.enterOuterAlt(_localctx, 1);
39084
39220
  {
39085
- this.state = 1151;
39221
+ this.state = 1150;
39086
39222
  this._errHandler.sync(this);
39087
39223
  _alt = 1;
39088
39224
  do {
@@ -39090,7 +39226,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39090
39226
  case 1:
39091
39227
  {
39092
39228
  {
39093
- this.state = 1150;
39229
+ this.state = 1149;
39094
39230
  this.pick();
39095
39231
  }
39096
39232
  }
@@ -39098,18 +39234,18 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39098
39234
  default:
39099
39235
  throw new NoViableAltException_1.NoViableAltException(this);
39100
39236
  }
39101
- this.state = 1153;
39237
+ this.state = 1152;
39102
39238
  this._errHandler.sync(this);
39103
39239
  _alt = this.interpreter.adaptivePredict(this._input, 114, this._ctx);
39104
39240
  } while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER);
39105
- this.state = 1157;
39241
+ this.state = 1156;
39106
39242
  this._errHandler.sync(this);
39107
39243
  switch (this.interpreter.adaptivePredict(this._input, 115, this._ctx)) {
39108
39244
  case 1:
39109
39245
  {
39110
- this.state = 1155;
39246
+ this.state = 1154;
39111
39247
  this.match(_MalloyParser.ELSE);
39112
- this.state = 1156;
39248
+ this.state = 1155;
39113
39249
  _localctx._pickElse = this.fieldExpr(0);
39114
39250
  }
39115
39251
  break;
@@ -39136,20 +39272,20 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39136
39272
  try {
39137
39273
  this.enterOuterAlt(_localctx, 1);
39138
39274
  {
39139
- this.state = 1159;
39275
+ this.state = 1158;
39140
39276
  this.match(_MalloyParser.PICK);
39141
- this.state = 1161;
39277
+ this.state = 1160;
39142
39278
  this._errHandler.sync(this);
39143
39279
  _la = this._input.LA(1);
39144
39280
  if ((_la - 34 & ~31) === 0 && (1 << _la - 34 & (1 << _MalloyParser.ALL - 34 | 1 << _MalloyParser.AVG - 34 | 1 << _MalloyParser.CAST - 34 | 1 << _MalloyParser.COUNT - 34 | 1 << _MalloyParser.DAY - 34 | 1 << _MalloyParser.EXCLUDE - 34 | 1 << _MalloyParser.FALSE - 34 | 1 << _MalloyParser.HOUR - 34)) !== 0 || (_la - 66 & ~31) === 0 && (1 << _la - 66 & (1 << _MalloyParser.MAX - 66 | 1 << _MalloyParser.MIN - 66 | 1 << _MalloyParser.MINUTE - 66 | 1 << _MalloyParser.MONTH - 66 | 1 << _MalloyParser.NOT - 66 | 1 << _MalloyParser.NOW - 66 | 1 << _MalloyParser.NULL - 66 | 1 << _MalloyParser.PICK - 66 | 1 << _MalloyParser.QUARTER - 66 | 1 << _MalloyParser.SECOND - 66 | 1 << _MalloyParser.SOURCE_KW - 66 | 1 << _MalloyParser.SUM - 66 | 1 << _MalloyParser.TRUE - 66 | 1 << _MalloyParser.WEEK - 66 | 1 << _MalloyParser.YEAR - 66 | 1 << _MalloyParser.HACKY_REGEX - 66)) !== 0 || (_la - 98 & ~31) === 0 && (1 << _la - 98 & (1 << _MalloyParser.SQ_STRING - 98 | 1 << _MalloyParser.DQ_STRING - 98 | 1 << _MalloyParser.BQ_STRING - 98 | 1 << _MalloyParser.OPAREN - 98 | 1 << _MalloyParser.MINUS - 98)) !== 0 || (_la - 136 & ~31) === 0 && (1 << _la - 136 & (1 << _MalloyParser.LITERAL_TIMESTAMP - 136 | 1 << _MalloyParser.LITERAL_HOUR - 136 | 1 << _MalloyParser.LITERAL_DAY - 136 | 1 << _MalloyParser.LITERAL_QUARTER - 136 | 1 << _MalloyParser.LITERAL_MONTH - 136 | 1 << _MalloyParser.LITERAL_WEEK - 136 | 1 << _MalloyParser.LITERAL_YEAR - 136 | 1 << _MalloyParser.IDENTIFIER - 136 | 1 << _MalloyParser.NUMERIC_LITERAL - 136 | 1 << _MalloyParser.INTEGER_LITERAL - 136 | 1 << _MalloyParser.SQL_BEGIN - 136)) !== 0) {
39145
39281
  {
39146
- this.state = 1160;
39282
+ this.state = 1159;
39147
39283
  _localctx._pickValue = this.fieldExpr(0);
39148
39284
  }
39149
39285
  }
39150
- this.state = 1163;
39286
+ this.state = 1162;
39151
39287
  this.match(_MalloyParser.WHEN);
39152
- this.state = 1164;
39288
+ this.state = 1163;
39153
39289
  _localctx._pickWhen = this.partialAllowedFieldExpr();
39154
39290
  }
39155
39291
  } catch (re2) {
@@ -39174,32 +39310,32 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39174
39310
  let _alt;
39175
39311
  this.enterOuterAlt(_localctx, 1);
39176
39312
  {
39177
- this.state = 1166;
39313
+ this.state = 1165;
39178
39314
  this.fieldExpr(0);
39179
- this.state = 1171;
39315
+ this.state = 1170;
39180
39316
  this._errHandler.sync(this);
39181
39317
  _alt = this.interpreter.adaptivePredict(this._input, 117, this._ctx);
39182
39318
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
39183
39319
  if (_alt === 1) {
39184
39320
  {
39185
39321
  {
39186
- this.state = 1167;
39322
+ this.state = 1166;
39187
39323
  this.match(_MalloyParser.COMMA);
39188
- this.state = 1168;
39324
+ this.state = 1167;
39189
39325
  this.fieldExpr(0);
39190
39326
  }
39191
39327
  }
39192
39328
  }
39193
- this.state = 1173;
39329
+ this.state = 1172;
39194
39330
  this._errHandler.sync(this);
39195
39331
  _alt = this.interpreter.adaptivePredict(this._input, 117, this._ctx);
39196
39332
  }
39197
- this.state = 1175;
39333
+ this.state = 1174;
39198
39334
  this._errHandler.sync(this);
39199
39335
  _la = this._input.LA(1);
39200
39336
  if (_la === _MalloyParser.COMMA) {
39201
39337
  {
39202
- this.state = 1174;
39338
+ this.state = 1173;
39203
39339
  this.match(_MalloyParser.COMMA);
39204
39340
  }
39205
39341
  }
@@ -39226,30 +39362,30 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39226
39362
  let _alt;
39227
39363
  this.enterOuterAlt(_localctx, 1);
39228
39364
  {
39229
- this.state = 1177;
39365
+ this.state = 1176;
39230
39366
  this.fieldName();
39231
- this.state = 1184;
39367
+ this.state = 1183;
39232
39368
  this._errHandler.sync(this);
39233
39369
  _alt = this.interpreter.adaptivePredict(this._input, 120, this._ctx);
39234
39370
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
39235
39371
  if (_alt === 1) {
39236
39372
  {
39237
39373
  {
39238
- this.state = 1179;
39374
+ this.state = 1178;
39239
39375
  this._errHandler.sync(this);
39240
39376
  _la = this._input.LA(1);
39241
39377
  if (_la === _MalloyParser.COMMA) {
39242
39378
  {
39243
- this.state = 1178;
39379
+ this.state = 1177;
39244
39380
  this.match(_MalloyParser.COMMA);
39245
39381
  }
39246
39382
  }
39247
- this.state = 1181;
39383
+ this.state = 1180;
39248
39384
  this.fieldName();
39249
39385
  }
39250
39386
  }
39251
39387
  }
39252
- this.state = 1186;
39388
+ this.state = 1185;
39253
39389
  this._errHandler.sync(this);
39254
39390
  _alt = this.interpreter.adaptivePredict(this._input, 120, this._ctx);
39255
39391
  }
@@ -39276,39 +39412,39 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39276
39412
  let _alt;
39277
39413
  this.enterOuterAlt(_localctx, 1);
39278
39414
  {
39279
- this.state = 1187;
39415
+ this.state = 1186;
39280
39416
  this.collectionMember();
39281
- this.state = 1194;
39417
+ this.state = 1193;
39282
39418
  this._errHandler.sync(this);
39283
39419
  _alt = this.interpreter.adaptivePredict(this._input, 122, this._ctx);
39284
39420
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
39285
39421
  if (_alt === 1) {
39286
39422
  {
39287
39423
  {
39288
- this.state = 1189;
39424
+ this.state = 1188;
39289
39425
  this._errHandler.sync(this);
39290
39426
  _la = this._input.LA(1);
39291
39427
  if (_la === _MalloyParser.COMMA) {
39292
39428
  {
39293
- this.state = 1188;
39429
+ this.state = 1187;
39294
39430
  this.match(_MalloyParser.COMMA);
39295
39431
  }
39296
39432
  }
39297
- this.state = 1191;
39433
+ this.state = 1190;
39298
39434
  this.collectionMember();
39299
39435
  }
39300
39436
  }
39301
39437
  }
39302
- this.state = 1196;
39438
+ this.state = 1195;
39303
39439
  this._errHandler.sync(this);
39304
39440
  _alt = this.interpreter.adaptivePredict(this._input, 122, this._ctx);
39305
39441
  }
39306
- this.state = 1198;
39442
+ this.state = 1197;
39307
39443
  this._errHandler.sync(this);
39308
39444
  _la = this._input.LA(1);
39309
39445
  if (_la === _MalloyParser.COMMA) {
39310
39446
  {
39311
- this.state = 1197;
39447
+ this.state = 1196;
39312
39448
  this.match(_MalloyParser.COMMA);
39313
39449
  }
39314
39450
  }
@@ -39334,25 +39470,25 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39334
39470
  try {
39335
39471
  this.enterOuterAlt(_localctx, 1);
39336
39472
  {
39337
- this.state = 1203;
39473
+ this.state = 1202;
39338
39474
  this._errHandler.sync(this);
39339
39475
  _la = this._input.LA(1);
39340
39476
  if (_la === _MalloyParser.BQ_STRING || _la === _MalloyParser.IDENTIFIER) {
39341
39477
  {
39342
- this.state = 1200;
39478
+ this.state = 1199;
39343
39479
  this.fieldPath();
39344
- this.state = 1201;
39480
+ this.state = 1200;
39345
39481
  this.match(_MalloyParser.DOT);
39346
39482
  }
39347
39483
  }
39348
- this.state = 1205;
39484
+ this.state = 1204;
39349
39485
  this.match(_MalloyParser.STAR);
39350
- this.state = 1207;
39486
+ this.state = 1206;
39351
39487
  this._errHandler.sync(this);
39352
39488
  switch (this.interpreter.adaptivePredict(this._input, 125, this._ctx)) {
39353
39489
  case 1:
39354
39490
  {
39355
- this.state = 1206;
39491
+ this.state = 1205;
39356
39492
  this.starQualified();
39357
39493
  }
39358
39494
  break;
@@ -39379,29 +39515,29 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39379
39515
  try {
39380
39516
  this.enterOuterAlt(_localctx, 1);
39381
39517
  {
39382
- this.state = 1209;
39518
+ this.state = 1208;
39383
39519
  this.match(_MalloyParser.OCURLY);
39384
- this.state = 1213;
39520
+ this.state = 1212;
39385
39521
  this._errHandler.sync(this);
39386
39522
  _la = this._input.LA(1);
39387
39523
  do {
39388
39524
  {
39389
- this.state = 1213;
39525
+ this.state = 1212;
39390
39526
  this._errHandler.sync(this);
39391
39527
  switch (this._input.LA(1)) {
39392
39528
  case _MalloyParser.EXCEPT:
39393
39529
  {
39394
39530
  {
39395
- this.state = 1210;
39531
+ this.state = 1209;
39396
39532
  this.match(_MalloyParser.EXCEPT);
39397
- this.state = 1211;
39533
+ this.state = 1210;
39398
39534
  this.fieldNameList();
39399
39535
  }
39400
39536
  }
39401
39537
  break;
39402
39538
  case _MalloyParser.COMMA:
39403
39539
  {
39404
- this.state = 1212;
39540
+ this.state = 1211;
39405
39541
  this.match(_MalloyParser.COMMA);
39406
39542
  }
39407
39543
  break;
@@ -39409,11 +39545,11 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39409
39545
  throw new NoViableAltException_1.NoViableAltException(this);
39410
39546
  }
39411
39547
  }
39412
- this.state = 1215;
39548
+ this.state = 1214;
39413
39549
  this._errHandler.sync(this);
39414
39550
  _la = this._input.LA(1);
39415
39551
  } while (_la === _MalloyParser.EXCEPT || _la === _MalloyParser.COMMA);
39416
- this.state = 1217;
39552
+ this.state = 1216;
39417
39553
  this.match(_MalloyParser.CCURLY);
39418
39554
  }
39419
39555
  } catch (re2) {
@@ -39437,16 +39573,16 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39437
39573
  try {
39438
39574
  this.enterOuterAlt(_localctx, 1);
39439
39575
  {
39440
- this.state = 1219;
39576
+ this.state = 1218;
39441
39577
  this.tags();
39442
- this.state = 1220;
39578
+ this.state = 1219;
39443
39579
  this.fieldPath();
39444
- this.state = 1222;
39580
+ this.state = 1221;
39445
39581
  this._errHandler.sync(this);
39446
39582
  _la = this._input.LA(1);
39447
39583
  if (_la === _MalloyParser.DOT) {
39448
39584
  {
39449
- this.state = 1221;
39585
+ this.state = 1220;
39450
39586
  this.refExpr();
39451
39587
  }
39452
39588
  }
@@ -39469,28 +39605,28 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39469
39605
  let _localctx = new RefExprContext(this._ctx, this.state);
39470
39606
  this.enterRule(_localctx, 242, _MalloyParser.RULE_refExpr);
39471
39607
  try {
39472
- this.state = 1231;
39608
+ this.state = 1230;
39473
39609
  this._errHandler.sync(this);
39474
39610
  switch (this.interpreter.adaptivePredict(this._input, 129, this._ctx)) {
39475
39611
  case 1:
39476
39612
  this.enterOuterAlt(_localctx, 1);
39477
39613
  {
39478
- this.state = 1224;
39614
+ this.state = 1223;
39479
39615
  this.match(_MalloyParser.DOT);
39480
- this.state = 1225;
39616
+ this.state = 1224;
39481
39617
  this.timeframe();
39482
39618
  }
39483
39619
  break;
39484
39620
  case 2:
39485
39621
  this.enterOuterAlt(_localctx, 2);
39486
39622
  {
39487
- this.state = 1226;
39623
+ this.state = 1225;
39488
39624
  this.match(_MalloyParser.DOT);
39489
- this.state = 1227;
39625
+ this.state = 1226;
39490
39626
  this.aggregate();
39491
- this.state = 1228;
39627
+ this.state = 1227;
39492
39628
  this.match(_MalloyParser.OPAREN);
39493
- this.state = 1229;
39629
+ this.state = 1228;
39494
39630
  this.match(_MalloyParser.CPAREN);
39495
39631
  }
39496
39632
  break;
@@ -39513,27 +39649,27 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39513
39649
  let _localctx = new CollectionMemberContext(this._ctx, this.state);
39514
39650
  this.enterRule(_localctx, 244, _MalloyParser.RULE_collectionMember);
39515
39651
  try {
39516
- this.state = 1236;
39652
+ this.state = 1235;
39517
39653
  this._errHandler.sync(this);
39518
39654
  switch (this.interpreter.adaptivePredict(this._input, 130, this._ctx)) {
39519
39655
  case 1:
39520
39656
  this.enterOuterAlt(_localctx, 1);
39521
39657
  {
39522
- this.state = 1233;
39658
+ this.state = 1232;
39523
39659
  this.taggedRef();
39524
39660
  }
39525
39661
  break;
39526
39662
  case 2:
39527
39663
  this.enterOuterAlt(_localctx, 2);
39528
39664
  {
39529
- this.state = 1234;
39665
+ this.state = 1233;
39530
39666
  this.collectionWildCard();
39531
39667
  }
39532
39668
  break;
39533
39669
  case 3:
39534
39670
  this.enterOuterAlt(_localctx, 3);
39535
39671
  {
39536
- this.state = 1235;
39672
+ this.state = 1234;
39537
39673
  this.fieldDef();
39538
39674
  }
39539
39675
  break;
@@ -39559,23 +39695,23 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39559
39695
  let _alt;
39560
39696
  this.enterOuterAlt(_localctx, 1);
39561
39697
  {
39562
- this.state = 1238;
39698
+ this.state = 1237;
39563
39699
  this.fieldName();
39564
- this.state = 1243;
39700
+ this.state = 1242;
39565
39701
  this._errHandler.sync(this);
39566
39702
  _alt = this.interpreter.adaptivePredict(this._input, 131, this._ctx);
39567
39703
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
39568
39704
  if (_alt === 1) {
39569
39705
  {
39570
39706
  {
39571
- this.state = 1239;
39707
+ this.state = 1238;
39572
39708
  this.match(_MalloyParser.DOT);
39573
- this.state = 1240;
39709
+ this.state = 1239;
39574
39710
  this.fieldName();
39575
39711
  }
39576
39712
  }
39577
39713
  }
39578
- this.state = 1245;
39714
+ this.state = 1244;
39579
39715
  this._errHandler.sync(this);
39580
39716
  _alt = this.interpreter.adaptivePredict(this._input, 131, this._ctx);
39581
39717
  }
@@ -39600,7 +39736,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39600
39736
  try {
39601
39737
  this.enterOuterAlt(_localctx, 1);
39602
39738
  {
39603
- this.state = 1246;
39739
+ this.state = 1245;
39604
39740
  this.id();
39605
39741
  }
39606
39742
  } catch (re2) {
@@ -39623,7 +39759,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39623
39759
  try {
39624
39760
  this.enterOuterAlt(_localctx, 1);
39625
39761
  {
39626
- this.state = 1248;
39762
+ this.state = 1247;
39627
39763
  this.id();
39628
39764
  }
39629
39765
  } catch (re2) {
@@ -39646,9 +39782,9 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39646
39782
  try {
39647
39783
  this.enterOuterAlt(_localctx, 1);
39648
39784
  {
39649
- this.state = 1250;
39785
+ this.state = 1249;
39650
39786
  this.fieldExpr(0);
39651
- this.state = 1251;
39787
+ this.state = 1250;
39652
39788
  this.match(_MalloyParser.EOF);
39653
39789
  }
39654
39790
  } catch (re2) {
@@ -39671,7 +39807,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39671
39807
  try {
39672
39808
  this.enterOuterAlt(_localctx, 1);
39673
39809
  {
39674
- this.state = 1253;
39810
+ this.state = 1252;
39675
39811
  this.id();
39676
39812
  }
39677
39813
  } catch (re2) {
@@ -39694,7 +39830,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39694
39830
  try {
39695
39831
  this.enterOuterAlt(_localctx, 1);
39696
39832
  {
39697
- this.state = 1255;
39833
+ this.state = 1254;
39698
39834
  this.id();
39699
39835
  }
39700
39836
  } catch (re2) {
@@ -39717,7 +39853,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39717
39853
  try {
39718
39854
  this.enterOuterAlt(_localctx, 1);
39719
39855
  {
39720
- this.state = 1257;
39856
+ this.state = 1256;
39721
39857
  this.string();
39722
39858
  }
39723
39859
  } catch (re2) {
@@ -39740,15 +39876,15 @@ ${struct.dialect.sqlFinalStage("__stage0", [
39740
39876
  try {
39741
39877
  this.enterOuterAlt(_localctx, 1);
39742
39878
  {
39879
+ this.state = 1258;
39880
+ this.match(_MalloyParser.SEMI);
39743
39881
  this.state = 1259;
39744
39882
  this.match(_MalloyParser.SEMI);
39745
39883
  this.state = 1260;
39746
- this.match(_MalloyParser.SEMI);
39747
- this.state = 1261;
39748
39884
  this.match(_MalloyParser.OBRACK);
39749
- this.state = 1262;
39885
+ this.state = 1261;
39750
39886
  this.string();
39751
- this.state = 1263;
39887
+ this.state = 1262;
39752
39888
  this.match(_MalloyParser.CBRACK);
39753
39889
  }
39754
39890
  } catch (re2) {
@@ -40571,9 +40707,9 @@ ${struct.dialect.sqlFinalStage("__stage0", [
40571
40707
  ];
40572
40708
  MalloyParser.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(MalloyParser._LITERAL_NAMES, MalloyParser._SYMBOLIC_NAMES, []);
40573
40709
  MalloyParser._serializedATNSegments = 3;
40574
- MalloyParser._serializedATNSegment0 = "\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x9D\u04F4     \x07 \x07\b \b \n \n\v \v\f \f\r \r             \x1B \x1B     ! !\" \"# #$ $% %& &' '( () )* *+ +, ,- -. ./ /0 01 12 23 34 45 56 67 78 89 9: :; ;< <= => >? ?@ @A AB BC CD DE EF FG GH HI IJ JK KL LM MN NO OP PQ QR RS ST TU UV VW WX XY YZ Z[ [\\ \\] ]^ ^_ _` `a ab bc cd de ef fg gh hi ij jk kl lm mn no op pq qr rs st tu uv vw wx xy yz z{ {| |} }~ ~\x7F \x7F\x80 \x80\x81 \x81\x82 \x82\x83 \x83\x84 \x84\x07\u010B\n\f\u010E\v\u011A\n\u0125\n\x07\x07\x07\u012B\n\x07\f\x07\x07\u012E\v\x07\b\b\b\b    \n\n\n\n\n\v\v\v\u013F\n\v\r\v\v\u0140\v\v\f\f\f\f\f\u0149\n\f\r\r\x07\r\u014D\n\r\f\r\r\u0150\v\r\r\r\u015A\n\x07\u0162\n\f\u0165\v\u016D\n\u0172\n\r\u0173\u0177\n\r\u0178\u017C\n\r\u017D\u0184\n\x07\u0187\n\f\u018A\v\u018D\n\u019E\n\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\u01AE\n\x1B\x07\u01B6\n\f\u01B9\v\u01BC\n   \u01C7\n  \x07 \u01CA\n \f  \u01CD\v   \u01D0\n !!!!!\"\"##$$%%%\x07%\u01E0\n%\f%%\u01E3\v%%%%\u01E7\n%&&&&&&&&&&&&&&&&&&\u01FA\n&\r&&\u01FB&&\u01FF\n&''''(((()))\u020B\n))\x07)\u020E\n)\f))\u0211\v)))\u0214\n)****+++\u021C\n++\x07+\u021F\n+\f++\u0222\v+++\u0225\n+,,,,,--..///0000000000000\u023F\n01112222\u0247\n2333333333\u0251\n3333333333\x073\u025C\n3\f33\u025F\v344444444\u0268\n4444\x074\u026D\n4\f44\u0270\v4555555\u0277\n56666\u027C\n6777\x077\u0281\n7\f77\u0284\v777888\u028A\n88\x078\u028D\n8\f88\u0290\v888\u0293\n899999::;\x07;\u029D\n;\f;;\u02A0\v;;;;\u02A4\n;;;\u02A7\n;;;;;\x07;\u02AD\n;\f;;\u02B0\v;;;;\u02B4\n;;;\u02B7\n;;;;\u02BB\n;;\u02BD\n;<<===\u02C3\n=>>>\x07>\u02C8\n>\f>>\u02CB\v>>>???\x07?\u02D2\n?\f??\u02D5\v???\u02D8\n?@@@\u02DC\n@AAABBCCCCC\u02E7\nCDDD\x07D\u02EC\nD\fDD\u02EF\vDDD\u02F2\nDEEEFFFGGG\u02FC\nGG\x07G\u02FF\nG\fGG\u0302\vGGG\u0305\nGHHI\x07I\u030A\nI\fII\u030D\vIIIIIJJJJJJJJJJJJJJJJJJJ\u0325\nJKKLLLLMMM\u032F\nMM\x07M\u0332\nM\fMM\u0335\vMMM\u0338\nMNNN\u033C\nNOOOOPPP\u0344\nPP\x07P\u0347\nP\fPP\u034A\vPPP\u034D\nPQQQQQ\u0353\nQQQQQQQ\u035A\nQRRRRSSSSTTTTUUUU\x07U\u036C\nU\fUU\u036F\vUUU\u0372\nUVVVWWW\u0379\nWW\x07W\u037C\nW\fWW\u037F\vWWW\u0382\nWXXX\u0386\nXXX\u0389\nXYYYZZZZZ\u0392\nZ[[[[\u0397\n[\\\\\\\\\u039C\n\\\\\\\u039F\n\\]]]\u03A3\n]]\x07]\u03A6\n]\f]]\u03A9\v]^^^^^\u03AF\n^___```aabbccddeefff\u03C3\nfgghhiiiiiiii\u03D0\nijjjjjjjj\u03D9\njkkllmmnnooppp\u03E7\npqqqqqqqqqqqqqqqqqqqqqqq\u03FF\nqqqqqq\u0405\nqqqqqqqqq\u040E\nqqqqqqqqqqqqq\u041B\nqqqqqqq\u0422\nqq\u0424\nqqq\u0427\nqqqq\u042B\nqqqqqqqqq\x07q\u0435\nq\fqq\u0438\vqqqq\u043C\nqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq\x07q\u046F\nq\fqq\u0472\vqrrr\u0476\nrrrrrr\u047C\nrrr\u047F\nrss\u0482\ns\rss\u0483sss\u0488\nsttt\u048C\nttttuuu\x07u\u0494\nu\fuu\u0497\vuuu\u049A\nuvvv\u049E\nvv\x07v\u04A1\nv\fvv\u04A4\vvwww\u04A8\nww\x07w\u04AB\nw\fww\u04AE\vwww\u04B1\nwxxxx\u04B6\nxxxx\u04BA\nxyyyyy\u04C0\ny\ryy\u04C1yyzzzz\u04C9\nz{{{{{{{{\u04D2\n{||||\u04D7\n|}}}\x07}\u04DC\n}\f}}\u04DF\v}~~\x7F\x7F\x80\x80\x80\x81\x81\x82\x82\x83\x83\x84\x84\x84\x84\x84\x84\x84df\xE0\x85\b\n\f \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\x80\x82\x84\x86\x88\x8A\x8C\x8E\x90\x92\x94\x96\x98\x9A\x9C\x9E\xA0\xA2\xA4\xA6\xA8\xAA\xAC\xAE\xB0\xB2\xB4\xB6\xB8\xBA\xBC\xBE\xC0\xC2\xC4\xC6\xC8\xCA\xCC\xCE\xD0\xD2\xD4\xD6\xD8\xDA\xDC\xDE\xE0\xE2\xE4\xE6\xE8\xEA\xEC\xEE\xF0\xF2\xF4\xF6\xF8\xFA\xFC\xFE\u0100\u0102\u0104\u0106qq\x99\x99\n\n\"\"88??CCPP''1177[[\x92\x92\x94\x94((..DETT\x07))//KKRRYYx}\x85\x86de\x93\x9477[[ff\x91\x91 00==FGOOQQ]]``$$55\x80\x80\x82\x82\x87\x87~\x7F\u0542\u010C\u0119\u011B\b\u0124\n\u0126\f\u012C\u012F\u0133\u0137\u013C\u0148\u014A\u0153\u0157\u015D \u0169\"\u016E$\u0171&\u0176(\u017B*\u017F,\u018E.\u01930\u01952\u01974\u01AD6\u01AF8\u01BB:\u01BD<\u01C2>\u01C4@\u01D1B\u01D6D\u01D8F\u01DAH\u01E6J\u01FEL\u0200N\u0204P\u0208R\u0215T\u0219V\u0226X\u022BZ\u022D\\\u022F^\u023E`\u0240b\u0246d\u0250f\u0267h\u0276j\u027Bl\u027Dn\u0287p\u0294r\u0299t\u02BCv\u02BEx\u02C2z\u02C4|\u02CE~\u02D9\x80\u02DD\x82\u02E0\x84\u02E6\x86\u02E8\x88\u02F3\x8A\u02F6\x8C\u02F9\x8E\u0306\x90\u030B\x92\u0324\x94\u0326\x96\u0328\x98\u032C\x9A\u033B\x9C\u033D\x9E\u0341\xA0\u0359\xA2\u035B\xA4\u035F\xA6\u0363\xA8\u0367\xAA\u0373\xAC\u0376\xAE\u0385\xB0\u038A\xB2\u0391\xB4\u0393\xB6\u039E\xB8\u03A0\xBA\u03AA\xBC\u03B0\xBE\u03B3\xC0\u03B6\xC2\u03B8\xC4\u03BA\xC6\u03BC\xC8\u03BE\xCA\u03C2\xCC\u03C4\xCE\u03C6\xD0\u03CF\xD2\u03D8\xD4\u03DA\xD6\u03DC\xD8\u03DE\xDA\u03E0\xDC\u03E2\xDE\u03E6\xE0\u043B\xE2\u047E\xE4\u0481\xE6\u0489\xE8\u0490\xEA\u049B\xEC\u04A5\xEE\u04B5\xF0\u04BB\xF2\u04C5\xF4\u04D1\xF6\u04D6\xF8\u04D8\xFA\u04E0\xFC\u04E2\xFE\u04E4\u0100\u04E7\u0102\u04E9\u0104\u04EB\u0106\u04ED\u0108\u010B\u0109\u010B\x07\x84\u010A\u0108\u010A\u0109\u010B\u010E\u010C\u010A\u010C\u010D\u010D\u010F\u010E\u010C\u010F\u0110\x07\u0110\u0111\u011A\u0112\u011A\n\u0113\u011A\b\u0114\u011A\u0115\u011A \u0116\u011A$\u0117\u011A&\u0118\u011A\u0106\x84\u0119\u0111\u0119\u0112\u0119\u0113\u0119\u0114\u0119\u0115\u0119\u0116\u0119\u0117\u0119\u0118\u011A\u011B\u011C\f\x07\u011C\u011D\x07\u011D\u011E> \u011E\x07\u011F\u0125*\u0120\u0121\f\x07\u0121\u0122\x07\u0122\u0123\n\u0123\u0125\u0124\u011F\u0124\u0120\u0125 \u0126\u0127\f\x07\u0127\u0128d3\u0128\v\u0129\u012B\x07h\u012A\u0129\u012B\u012E\u012C\u012A\u012C\u012D\u012D\r\u012E\u012C\u012F\u0130\f\x07\u0130\u0131\x07@\u0131\u0132\f\x07\u0132\u0133\u0134\f\x07\u0134\u0135\x07\x1B\u0135\u0136\n\u0136\u0137\u0138\x07\u0138\u0139\u0102\x82\u0139\u013A\b\u013A\u013B\v\u013B\u013C\u013E\x07p\u013D\u013F\f\u013E\u013D\u013F\u0140\u0140\u013E\u0140\u0141\u0141\u0142\u0142\u0143\x07q\u0143\u0144\u0145\x07\x07\u0145\u0149\u0104\x83\u0146\u0147\x07\u0147\u0149\r\u0148\u0144\u0148\u0146\u0149\u014A\u014E\x07\x98\u014B\u014D\u014C\u014B\u014D\u0150\u014E\u014C\u014E\u014F\u014F\u0151\u0150\u014E\u0151\u0152\x07\x9D\u0152\u0153\u0154\x07\x9C\u0154\u0155d3\u0155\u0156 \u0156\x1B\u0157\u0159\x07>\u0158\u015A\u0159\u0158\u0159\u015A\u015A\u015B\u015B\u015C\"\u015C\u015D\u015E\x07p\u015E\u0163 \u015F\u0160\x07v\u0160\u0162 \u0161\u015F\u0162\u0165\u0163\u0161\u0163\u0164\u0164\u0166\u0165\u0163\u0166\u0167\x07q\u0167\u0168\x07:\u0168\u0169\u016C\xD8m\u016A\u016B\x07@\u016B\u016D\xD8m\u016C\u016A\u016C\u016D\u016D!\u016E\u016F\xCAf\u016F#\u0170\u0172\x07g\u0171\u0170\u0172\u0173\u0173\u0171\u0173\u0174\u0174%\u0175\u0177\x07h\u0176\u0175\u0177\u0178\u0178\u0176\u0178\u0179\u0179'\u017A\u017C\x07g\u017B\u017A\u017C\u017D\u017D\u017B\u017D\u017E\u017E)\u017F\u0180\f\x07\u0180\u0181\x07\u0181\u0188,\u0182\u0184\x07v\u0183\u0182\u0183\u0184\u0184\u0185\u0185\u0187,\u0186\u0183\u0187\u018A\u0188\u0186\u0188\u0189\u0189\u018C\u018A\u0188\u018B\u018D\x07v\u018C\u018B\u018C\u018D\u018D+\u018E\u018F\f\x07\u018F\u0190<\u0190\u0191\b\u0191\u0192d3\u0192-\u0193\u0194\x07~\u0194/\u0195\u0196\xD8m\u01961\u0197\u01986\u0198\u0199\x07w\u0199\u019A\x07U\u019A\u019D\x07l\u019B\u019E\r\u019C\u019E\xCCg\u019D\u019B\u019D\u019C\u019E\u019F\u019F\u01A0\x07m\u01A03\u01A1\u01A2\x07V\u01A2\u01A3\x07l\u01A3\u01A4\xD6l\u01A4\u01A5\x07m\u01A5\u01AE\u01A6\u01A76\u01A7\u01A8\x07w";
40575
- MalloyParser._serializedATNSegment1 = "\u01A8\u01A9\x07V\u01A9\u01AA\x07l\u01AA\u01AB\xD4k\u01AB\u01AC\x07m\u01AC\u01AE\u01AD\u01A1\u01AD\u01A6\u01AE5\u01AF\u01B0\xD8m\u01B07\u01B1\u01BC:\u01B2\u01B7\x07p\u01B3\u01B6\x92J\u01B4\u01B6\x07\x84\u01B5\u01B3\u01B5\u01B4\u01B6\u01B9\u01B7\u01B5\u01B7\u01B8\u01B8\u01BA\u01B9\u01B7\u01BA\u01BC\x07q\u01BB\u01B1\u01BB\u01B2\u01BC9\u01BD\u01BE\x07p\u01BE\u01BF\x07\x89\u01BF\u01C0\xE0q\u01C0\u01C1\x07q\u01C1;\u01C2\u01C3\xD8m\u01C3=\u01C4\u01CB@!\u01C5\u01C7\x07v\u01C6\u01C5\u01C6\u01C7\u01C7\u01C8\u01C8\u01CA@!\u01C9\u01C6\u01CA\u01CD\u01CB\u01C9\u01CB\u01CC\u01CC\u01CF\u01CD\u01CB\u01CE\u01D0\x07v\u01CF\u01CE\u01CF\u01D0\u01D0?\u01D1\u01D2\f\x07\u01D2\u01D3D#\u01D3\u01D4\b\u01D4\u01D5B\"\u01D5A\u01D6\u01D7d3\u01D7C\u01D8\u01D9\xD8m\u01D9E\u01DA\u01DB\xD8m\u01DBG\u01DC\u01E1\x07p\u01DD\u01E0J&\u01DE\u01E0\x07\x84\u01DF\u01DD\u01DF\u01DE\u01E0\u01E3\u01E1\u01DF\u01E1\u01E2\u01E2\u01E4\u01E3\u01E1\u01E4\u01E7\x07q\u01E5\u01E7:\u01E6\u01DC\u01E6\u01E5\u01E7I\u01E8\u01FFN(\u01E9\u01FFL'\u01EA\u01FF\\/\u01EB\u01FF^0\u01EC\u01FF\x88E\u01ED\u01EE\x07\u01EE\u01FF\xFC\x7F\u01EF\u01F0\x07\u01F0\u01FFP)\u01F1\u01F2 \u01F2\u01FF\xEAv\u01F3\u01F4\f\x07\u01F4\u01F5 \u01F5\u01F6\x8CG\u01F6\u01FF\u01F7\u01FF\xBE`\u01F8\u01FA\x07h\u01F9\u01F8\u01FA\u01FB\u01FB\u01F9\u01FB\u01FC\u01FC\u01FF\u01FD\u01FF(\u01FE\u01E8\u01FE\u01E9\u01FE\u01EA\u01FE\u01EB\u01FE\u01EC\u01FE\u01ED\u01FE\u01EF\u01FE\u01F1\u01FE\u01F3\u01FE\u01F7\u01FE\u01F9\u01FE\u01FD\u01FFK\u0200\u0201\f\x07\u0201\u0202\x07\u0202\u0203T+\u0203M\u0204\u0205\f\x07\u0205\u0206\x07 \u0206\u0207T+\u0207O\u0208\u020FR*\u0209\u020B\x07v\u020A\u0209\u020A\u020B\u020B\u020C\u020C\u020ER*\u020D\u020A\u020E\u0211\u020F\u020D\u020F\u0210\u0210\u0213\u0211\u020F\u0212\u0214\x07v\u0213\u0212\u0213\u0214\u0214Q\u0215\u0216\xFC\x7F\u0216\u0217\b\u0217\u0218\xFC\x7F\u0218S\u0219\u0220V,\u021A\u021C\x07v\u021B\u021A\u021B\u021C\u021C\u021D\u021D\u021FV,\u021E\u021B\u021F\u0222\u0220\u021E\u0220\u0221\u0221\u0224\u0222\u0220\u0223\u0225\x07v\u0224\u0223\u0224\u0225\u0225U\u0226\u0227\f\x07\u0227\u0228X-\u0228\u0229\b\u0229\u022A\xE0q\u022AW\u022B\u022C\xD8m\u022CY\u022D\u022E\xD8m\u022E[\u022F\u0230\x07\b\u0230\u0231T+\u0231]\u0232\u0233\f\x07\u0233\u0234\x07\u0234\u0235n8\u0235\u023F\u0236\u0237\f\x07\u0237\u0238\x07\u0238\u0239n8\u0239\u023F\u023A\u023B\f\x07\u023B\u023C\x07\u023C\u023Dn8\u023D\u023F\u023E\u0232\u023E\u0236\u023E\u023A\u023F_\u0240\u0241\x07\v\u0241\u0242l7\u0242a\u0243\u0247^0\u0244\u0247\x88E\u0245\u0247\\/\u0246\u0243\u0246\u0244\u0246\u0245\u0247c\u0248\u0249\b3\u0249\u0251\xD8m\u024A\u024B\x07l\u024B\u024Cd3\u024C\u024D\x07m\u024D\u0251\u024E\u02514\x1B\u024F\u02512\u0250\u0248\u0250\u024A\u0250\u024E\u0250\u024F\u0251\u025D\u0252\u0253\f\x07\u0253\u0254\x07~\u0254\u025Cf4\u0255\u0256\f\u0256\u0257\x07j\u0257\u025Cf4\u0258\u0259\f\u0259\u025A\x076\u025A\u025CH%\u025B\u0252\u025B\u0255\u025B\u0258\u025C\u025F\u025D\u025B\u025D\u025E\u025Ee\u025F\u025D\u0260\u0261\b4\u0261\u0268\xF8}\u0262\u02688\u0263\u0264\x07l\u0264\u0265h5\u0265\u0266\x07m\u0266\u0268\u0267\u0260\u0267\u0262\u0267\u0263\u0268\u026E\u0269\u026A\f\u026A\u026B\x07~\u026B\u026Df4\u026C\u0269\u026D\u0270\u026E\u026C\u026E\u026F\u026Fg\u0270\u026E\u0271\u0277f4\u0272\u0273f4\u0273\u0274\x07j\u0274\u0275h5\u0275\u0277\u0276\u0271\u0276\u0272\u0277i\u0278\u027CN(\u0279\u027CL'\u027A\u027C^0\u027B\u0278\u027B\u0279\u027B\u027A\u027Ck\u027D\u0282\x07p\u027E\u0281j6\u027F\u0281\x07\x84\u0280\u027E\u0280\u027F\u0281\u0284\u0282\u0280\u0282\u0283\u0283\u0285\u0284\u0282\u0285\u0286\x07q\u0286m\u0287\u028Et;\u0288\u028A\x07v\u0289\u0288\u0289\u028A\u028A\u028B\u028B\u028Dt;\u028C\u0289\u028D\u0290\u028E\u028C\u028E\u028F\u028F\u0292\u0290\u028E\u0291\u0293\x07v\u0292\u0291\u0292\u0293\u0293o\u0294\u0295\f\x07\u0295\u0296\x07@\u0296\u0297\f\x07\u0297\u0298d3\u0298q\u0299\u029A \u029As\u029B\u029D\x07h\u029C\u029B\u029D\u02A0\u029E\u029C\u029E\u029F\u029F\u02A1\u02A0\u029E\u02A1\u02A3Z.\u02A2\u02A4p9\u02A3\u02A2\u02A3\u02A4\u02A4\u02A6\u02A5\u02A7r:\u02A6\u02A5\u02A6\u02A7\u02A7\u02A8\u02A8\u02A9\x07_\u02A9\u02AA\xE0q\u02AA\u02BD\u02AB\u02AD\x07h\u02AC\u02AB\u02AD\u02B0\u02AE\u02AC\u02AE\u02AF\u02AF\u02B1\u02B0\u02AE\u02B1\u02B3Z.\u02B2\u02B4p9\u02B3\u02B2\u02B3\u02B4\u02B4\u02BA\u02B5\u02B7r:\u02B6\u02B5\u02B6\u02B7\u02B7\u02B8\u02B8\u02B9\x07L\u02B9\u02BBv<\u02BA\u02B6\u02BA\u02BB\u02BB\u02BD\u02BC\u029E\u02BC\u02AE\u02BDu\u02BE\u02BF\xE0q\u02BFw\u02C0\u02C3\x88E\u02C1\u02C3\x8AF\u02C2\u02C0\u02C2\u02C1\u02C3y\u02C4\u02C9\x07p\u02C5\u02C8\x84C\u02C6\u02C8\x07\x84\u02C7\u02C5\u02C7\u02C6\u02C8\u02CB\u02C9\u02C7\u02C9\u02CA\u02CA\u02CC\u02CB\u02C9\u02CC\u02CD\x07q\u02CD{\u02CE\u02D3~@\u02CF\u02D0\x07v\u02D0\u02D2~@\u02D1\u02CF\u02D2\u02D5\u02D3\u02D1\u02D3\u02D4\u02D4\u02D7\u02D5\u02D3\u02D6\u02D8\x07v\u02D7\u02D6\u02D7\u02D8\u02D8}\u02D9\u02DB\xE0q\u02DA\u02DC \u02DB\u02DA\u02DB\u02DC\u02DC\x7F\u02DD\u02DE\x07\u02DE\u02DF|?\u02DF\x81\u02E0\u02E1\xB0Y\u02E1\x83\u02E2\u02E7\x88E\u02E3\u02E7\xA8U\u02E4\u02E7\x80A\u02E5\u02E7\x82B\u02E6\u02E2\u02E6\u02E3\u02E6\u02E4\u02E6\u02E5\u02E7\x85\u02E8\u02ED\xE0q\u02E9\u02EA\x07v\u02EA\u02EC\xE0q\u02EB\u02E9\u02EC\u02EF\u02ED\u02EB\u02ED\u02EE\u02EE\u02F1\u02EF\u02ED\u02F0\u02F2\x07v\u02F1\u02F0\u02F1\u02F2\u02F2\x87\u02F3\u02F4\x07!\u02F4\u02F5\x86D\u02F5\x89\u02F6\u02F7\x07\r\u02F7\u02F8\x86D\u02F8\x8B\u02F9\u0300\x90I\u02FA\u02FC\x07v\u02FB\u02FA\u02FB\u02FC\u02FC\u02FD\u02FD\u02FF\x90I\u02FE\u02FB\u02FF\u0302\u0300\u02FE\u0300\u0301\u0301\u0304\u0302\u0300\u0303\u0305\x07v\u0304\u0303\u0304\u0305\u0305\x8D\u0306\u0307\xD8m\u0307\x8F\u0308\u030A\x07h\u0309\u0308\u030A\u030D\u030B\u0309\u030B\u030C\u030C\u030E\u030D\u030B\u030E\u030F\x8EH\u030F\u0310\b\u0310\u0311h5\u0311\x91\u0312\u0325\x96L\u0313\u0325\\/\u0314\u0325\x94K\u0315\u0325`1\u0316\u0325\xA6T\u0317\u0325\xBA^\u0318\u0325\xA2R\u0319\u0325\xA4S\u031A\u0325\xB4[\u031B\u0325\xB0Y\u031C\u0325\xAAV\u031D\u0325\x88E\u031E\u0325\x8AF\u031F\u0325\x9CO\u0320\u0325\xBC_\u0321\u0325\xBE`\u0322\u0325\xC0a\u0323\u0325(\u0324\u0312\u0324\u0313\u0324\u0314\u0324\u0315\u0324\u0316\u0324\u0317\u0324\u0318\u0324\u0319\u0324\u031A\u0324\u031B\u0324\u031C\u0324\u031D\u0324\u031E\u0324\u031F\u0324\u0320\u0324\u0321\u0324\u0322\u0324\u0323\u0325\x93\u0326\u0327^0\u0327\x95\u0328\u0329\f\x07\u0329\u032A\x07\f\u032A\u032B\x98M\u032B\x97\u032C\u0333\x9AN\u032D\u032F\x07v\u032E\u032D\u032E\u032F\u032F\u0330\u0330\u0332\x9AN\u0331\u032E\u0332\u0335\u0333\u0331\u0333\u0334\u0334\u0337\u0335\u0333\u0336\u0338\x07v\u0337\u0336\u0337\u0338\u0338\x99\u0339\u033C\xF2z\u033A\u033CV,\u033B\u0339\u033B\u033A\u033C\x9B\u033D\u033E\f\x07\u033E\u033F\x07\u033F\u0340\x9EP\u0340\x9D\u0341\u0348\xA0Q\u0342\u0344\x07v\u0343\u0342\u0343\u0344\u0344\u0345\u0345\u0347\xA0Q\u0346\u0343\u0347\u034A\u0348\u0346\u0348\u0349\u0349\u034C\u034A\u0348\u034B\u034D\x07v\u034C\u034B\u034C\u034D\u034D\x9F\u034E\u034F\f\x07\u034F\u0352\xF8}\u0350\u0351\x07~\u0351\u0353h5\u0352\u0350\u0352\u0353\u0353\u035A\u0354\u0355\f\x07\u0355\u0356<\u0356\u0357\b\u0357\u0358h5\u0358\u035A\u0359\u034E\u0359\u0354\u035A\xA1\u035B\u035C\f\x07\u035C\u035D\x07\u035D\u035E\x98M\u035E\xA3\u035F\u0360\f\x07\u0360\u0361\x07\u0361\u0362\x98M\u0362\xA5\u0363\u0364\f\x07\u0364\u0365 \x07\u0365\u0366\xECw\u0366\xA7\u0367\u0368\x07\u0368\u036D\xD8m\u0369\u036A\x07v\u036A\u036C\xD8m\u036B\u0369\u036C\u036F\u036D\u036B\u036D\u036E\u036E\u0371\u036F\u036D\u0370\u0372\x07v\u0371\u0370\u0371\u0372\u0372\xA9\u0373\u0374\x07\u0374\u0375\xACW\u0375\xAB\u0376\u037D\xAEX\u0377\u0379\x07v\u0378\u0377\u0378\u0379\u0379\u037A\u037A\u037C\xAEX\u037B\u0378\u037C\u037F\u037D\u037B\u037D\u037E\u037E\u0381\u037F\u037D\u0380\u0382\x07v\u0381\u0380\u0381\u0382\u0382\xAD\u0383\u0386\x07\x94\u0384\u0386\xFC\x7F\u0385\u0383\u0385\u0384\u0386\u0388\u0387\u0389 \u0388\u0387\u0388\u0389\u0389\xAF\u038A\u038B\x07\u038B\u038C\x07\x94\u038C\xB1\u038D\u038E\x07*\u038E\u0392\xFC\x7F\u038F\u0390\x07*\u0390\u0392\xE0q\u0391\u038D\u0391\u038F\u0392\xB3\u0393\u0394\x07 \u0394\u0396\x07\x94\u0395\u0397\xB2Z\u0396\u0395\u0396\u0397\u0397\xB5\u0398\u039B\xF8}\u0399\u039A\x07w\u039A\u039C\x07\x80\u039B\u0399\u039B\u039C\u039C\u039F\u039D\u039F\x07\x80\u039E\u0398\u039E\u039D\u039F\xB7\u03A0\u03A7\xB6\\\u03A1\u03A3\x07v\u03A2\u03A1\u03A2\u03A3\u03A3\u03A4\u03A4\u03A6\xB6\\\u03A5\u03A2\u03A6\u03A9\u03A7\u03A5\u03A7\u03A8\u03A8\xB9\u03A9\u03A7\u03AA\u03AB\x07\u03AB\u03AE\xB8]\u03AC\u03AD\x07*\u03AD\u03AF\xFC\x7F\u03AE\u03AC\u03AE\u03AF\u03AF\xBB\u03B0\u03B1\x07\u03B1\u03B2\xC2b\u03B2\xBD\u03B3\u03B4\x07#\u03B4\u03B5\xCAf\u03B5\xBF\u03B6\u03B7\x07h\u03B7\xC1\u03B8\u03B9 \b\u03B9\xC3\u03BA\u03BB \u03BB\xC5\u03BC\u03BD \n\u03BD\xC7\u03BE\u03BF \v\u03BF\xC9\u03C0\u03C3\xCCg\u03C1\u03C3\r\u03C2\u03C0\u03C2\u03C1\u03C3\xCB\u03C4\u03C5 \f\u03C5\xCD\u03C6\u03C7 \r\u03C7\xCF\u03C8\u03D0\xCAf\u03C9\u03D0\xCEh\u03CA\u03D0\xD2j\u03CB\u03D0\x07J\u03CC\u03D0 \u03CD\u03D0\x07c\u03CE\u03D0\x07I\u03CF\u03C8\u03CF\u03C9\u03CF\u03CA\u03CF\u03CB\u03CF\u03CC\u03CF\u03CD\u03CF\u03CE\u03D0\xD1\u03D1\u03D9\x07\x8A\u03D2\u03D9\x07\x8B\u03D3\u03D9\x07\x8C\u03D4\u03D9\x07\x8F\u03D5\u03D9\x07\x8E\u03D6\u03D9\x07\x8D\u03D7\u03D9\x07\x90\u03D8\u03D1\u03D8\u03D2\u03D8\u03D3\u03D8\u03D4\u03D8\u03D5\u03D8\u03D6\u03D8\u03D7\u03D9\xD3\u03DA\u03DB\xCAf\u03DB\xD5\u03DC\u03DD\xCAf\u03DD\xD7\u03DE\u03DF \u03DF\xD9\u03E0\u03E1 \u03E1\xDB\u03E2\u03E3 \u03E3\xDD\u03E4\u03E7\xC6d\u03E5\u03E7\xCAf\u03E6\u03E4\u03E6\u03E5\u03E7\xDF\u03E8\u03E9\bq\u03E9\u043C\xF8}\u03EA\u043C\xD0i\u03EB\u03EC\x07\x7F\u03EC\u043C\xE0q\u03ED\u03EE\x07H\u03EE\u043C\xE0q\u03EF\u03F0\x07,\u03F0\u03F1\x07l\u03F1\u03F2\xE0q\u03F2\u03F3\x07&\u03F3\u03F4\xDEp\u03F4\u03F5\x07m\u03F5\u043C\u03F6\u03F7\x07.\u03F7\u03F8\x07l\u03F8\u03F9\x072\u03F9\u03FA\xE0q\u03FA\u03FB\x07m\u03FB\u043C\u03FC\u03FD\x07S\u03FD\u03FF\x07w\u03FE\u03FC\u03FE\u03FF\u03FF\u0400\u0400\u0401\xC4c\u0401\u0404\x07l\u0402\u0405\xE0q\u0403\u0405\x07\x80\u0404\u0402\u0404\u0403\u0404\u0405\u0405\u0406\u0406\u0407\x07m\u0407\u043C\u0408\u0409\xF8}\u0409\u040A\x07w\u040A\u040B\xC4c\u040B\u040D\x07l\u040C\u040E\xE0q\u040D\u040C\u040D\u040E\u040E\u040F\u040F\u0410\x07m\u0410\u043C\u0411\u0412\x07l\u0412\u0413\xE2r\u0413\u0414\x07m\u0414\u043C\u0415\u0416\xF8}\u0416\u0417\x07w\u0417\u0418\xD8m\u0418\u041A\x07l\u0419\u041B\xE8u\u041A\u0419\u041A\u041B\u041B\u041C\u041C\u041D\x07m\u041D\u043C\u041E\u0423\xD8m\u041F\u0421\x07t\u0420\u0422\xC6d\u0421\u0420\u0421\u0422\u0422\u0424\u0423\u041F\u0423\u0424\u0424\u0427\u0425\u0427\xDAn\u0426\u041E\u0426\u0425\u0427\u0428\u0428\u042A\x07l\u0429\u042B\xE8u\u042A\u0429\u042A\u042B\u042B\u042C\u042C\u042D\x07m\u042D\u043C\u042E\u043C\xE4s\u042F\u0430\xDCo\u0430\u0431\x07l\u0431\u0436\xE0q\u0432\u0433\x07v\u0433\u0435\xFC\x7F\u0434\u0432\u0435\u0438\u0436\u0434\u0436\u0437\u0437\u0439\u0438\u0436\u0439\u043A\x07m\u043A\u043C\u043B\u03E8\u043B\u03EA\u043B\u03EB\u043B\u03ED\u043B\u03EF\u043B\u03F6\u043B\u03FE\u043B\u0408\u043B\u0411\u043B\u0415\u043B\u0426\u043B\u042E\u043B\u042F\u043C\u0470\u043D\u043E\f\u043E\u043F \u043F\u046F\xE0q\u0440\u0441\f\u0441\u0442 \u0442\u046F\xE0q\u0443\u0444\f\u0444\u0445\x07Z\u0445\u046F\xE0q\u0446\u0447\f\u0447\u0448\xC8e\u0448\u0449\xE0q\u0449\u046F\u044A\u044B\f\u044B\u044C\x07%\u044C\u046F\xE0q\u044D\u044E\f\r\u044E\u044F\x07M\u044F\u046F\xE0q\u0450\u0451\f\f\u0451\u0452\x07\x88\u0452\u046F\xE0q\r\u0453\u0454\f\u0454\u046Fz>";
40576
- MalloyParser._serializedATNSegment2 = "\u0455\u0456\f\u0456\u046F\xDAn\u0457\u0458\f\x1B\u0458\u0459\x07w\u0459\u046F\xDAn\u045A\u045B\f\u045B\u045C\x07r\u045C\u046F\xDEp\u045D\u045E\f\u045E\u045F\x07s\u045F\u046F\xDEp\u0460\u0461\f\u0461\u0462\x079\u0462\u0463\xE0q\u0463\u0464\xDAn\u0464\u046F\u0465\u0466\f\u0466\u0467\x07i\u0467\u046F\xE2r\u0468\u0469\f\u0469\u046A\x07\x83\u046A\u046F\xE2r\u046B\u046C\f\u046C\u046D\x07\x89\u046D\u046F\xE2r\u046E\u043D\u046E\u0440\u046E\u0443\u046E\u0446\u046E\u044A\u046E\u044D\u046E\u0450\u046E\u0453\u046E\u0455\u046E\u0457\u046E\u045A\u046E\u045D\u046E\u0460\u046E\u0465\u046E\u0468\u046E\u046B\u046F\u0472\u0470\u046E\u0470\u0471\u0471\xE1\u0472\u0470\u0473\u0475\x07l\u0474\u0476\xC8e\u0475\u0474\u0475\u0476\u0476\u0477\u0477\u0478\xE0q\u0478\u0479\x07m\u0479\u047F\u047A\u047C\xC8e\u047B\u047A\u047B\u047C\u047C\u047D\u047D\u047F\xE0q\u047E\u0473\u047E\u047B\u047F\xE3\u0480\u0482\xE6t\u0481\u0480\u0482\u0483\u0483\u0481\u0483\u0484\u0484\u0487\u0485\u0486\x073\u0486\u0488\xE0q\u0487\u0485\u0487\u0488\u0488\xE5\u0489\u048B\x07N\u048A\u048C\xE0q\u048B\u048A\u048B\u048C\u048C\u048D\u048D\u048E\x07^\u048E\u048F\xE2r\u048F\xE7\u0490\u0495\xE0q\u0491\u0492\x07v\u0492\u0494\xE0q\u0493\u0491\u0494\u0497\u0495\u0493\u0495\u0496\u0496\u0499\u0497\u0495\u0498\u049A\x07v\u0499\u0498\u0499\u049A\u049A\xE9\u049B\u04A2\xFC\x7F\u049C\u049E\x07v\u049D\u049C\u049D\u049E\u049E\u049F\u049F\u04A1\xFC\x7F\u04A0\u049D\u04A1\u04A4\u04A2\u04A0\u04A2\u04A3\u04A3\xEB\u04A4\u04A2\u04A5\u04AC\xF6|\u04A6\u04A8\x07v\u04A7\u04A6\u04A7\u04A8\u04A8\u04A9\u04A9\u04AB\xF6|\u04AA\u04A7\u04AB\u04AE\u04AC\u04AA\u04AC\u04AD\u04AD\u04B0\u04AE\u04AC\u04AF\u04B1\x07v\u04B0\u04AF\u04B0\u04B1\u04B1\xED\u04B2\u04B3\xF8}\u04B3\u04B4\x07w\u04B4\u04B6\u04B5\u04B2\u04B5\u04B6\u04B6\u04B7\u04B7\u04B9\x07\x80\u04B8\u04BA\xF0y\u04B9\u04B8\u04B9\u04BA\u04BA\xEF\u04BB\u04BF\x07p\u04BC\u04BD\x07\n\u04BD\u04C0\xEAv\u04BE\u04C0\x07v\u04BF\u04BC\u04BF\u04BE\u04C0\u04C1\u04C1\u04BF\u04C1\u04C2\u04C2\u04C3\u04C3\u04C4\x07q\u04C4\xF1\u04C5\u04C6\f\x07\u04C6\u04C8\xF8}\u04C7\u04C9\xF4{\u04C8\u04C7\u04C8\u04C9\u04C9\xF3\u04CA\u04CB\x07w\u04CB\u04D2\xDAn\u04CC\u04CD\x07w\u04CD\u04CE\xC4c\u04CE\u04CF\x07l\u04CF\u04D0\x07m\u04D0\u04D2\u04D1\u04CA\u04D1\u04CC\u04D2\xF5\u04D3\u04D7\xF2z\u04D4\u04D7\xEEx\u04D5\u04D7V,\u04D6\u04D3\u04D6\u04D4\u04D6\u04D5\u04D7\xF7\u04D8\u04DD\xFC\x7F\u04D9\u04DA\x07w\u04DA\u04DC\xFC\x7F\u04DB\u04D9\u04DC\u04DF\u04DD\u04DB\u04DD\u04DE\u04DE\xF9\u04DF\u04DD\u04E0\u04E1\xD8m\u04E1\xFB\u04E2\u04E3\xD8m\u04E3\xFD\u04E4\u04E5\xE0q\u04E5\u04E6\x07\u04E6\xFF\u04E7\u04E8\xD8m\u04E8\u0101\u04E9\u04EA\xD8m\u04EA\u0103\u04EB\u04EC\xCAf\u04EC\u0105\u04ED\u04EE\x07\x84\u04EE\u04EF\x07\x84\u04EF\u04F0\x07n\u04F0\u04F1\xCAf\u04F1\u04F2\x07o\u04F2\u0107\x86\u010A\u010C\u0119\u0124\u012C\u0140\u0148\u014E\u0159\u0163\u016C\u0173\u0178\u017D\u0183\u0188\u018C\u019D\u01AD\u01B5\u01B7\u01BB\u01C6\u01CB\u01CF\u01DF\u01E1\u01E6\u01FB\u01FE\u020A\u020F\u0213\u021B\u0220\u0224\u023E\u0246\u0250\u025B\u025D\u0267\u026E\u0276\u027B\u0280\u0282\u0289\u028E\u0292\u029E\u02A3\u02A6\u02AE\u02B3\u02B6\u02BA\u02BC\u02C2\u02C7\u02C9\u02D3\u02D7\u02DB\u02E6\u02ED\u02F1\u02FB\u0300\u0304\u030B\u0324\u032E\u0333\u0337\u033B\u0343\u0348\u034C\u0352\u0359\u036D\u0371\u0378\u037D\u0381\u0385\u0388\u0391\u0396\u039B\u039E\u03A2\u03A7\u03AE\u03C2\u03CF\u03D8\u03E6\u03FE\u0404\u040D\u041A\u0421\u0423\u0426\u042A\u0436\u043B\u046E\u0470\u0475\u047B\u047E\u0483\u0487\u048B\u0495\u0499\u049D\u04A2\u04A7\u04AC\u04B0\u04B5\u04B9\u04BF\u04C1\u04C8\u04D1\u04D6\u04DD";
40710
+ MalloyParser._serializedATNSegment0 = "\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x9D\u04F3     \x07 \x07\b \b \n \n\v \v\f \f\r \r             \x1B \x1B     ! !\" \"# #$ $% %& &' '( () )* *+ +, ,- -. ./ /0 01 12 23 34 45 56 67 78 89 9: :; ;< <= => >? ?@ @A AB BC CD DE EF FG GH HI IJ JK KL LM MN NO OP PQ QR RS ST TU UV VW WX XY YZ Z[ [\\ \\] ]^ ^_ _` `a ab bc cd de ef fg gh hi ij jk kl lm mn no op pq qr rs st tu uv vw wx xy yz z{ {| |} }~ ~\x7F \x7F\x80 \x80\x81 \x81\x82 \x82\x83 \x83\x84 \x84\x07\u010B\n\f\u010E\v\u011A\n\u0125\n\x07\x07\x07\u012B\n\x07\f\x07\x07\u012E\v\x07\b\b\b\b    \n\n\n\n\n\v\v\v\u013F\n\v\r\v\v\u0140\v\v\f\f\f\f\f\u0149\n\f\r\r\x07\r\u014D\n\r\f\r\r\u0150\v\r\r\r\u015A\n\x07\u0162\n\f\u0165\v\u016D\n\u0172\n\r\u0173\u0177\n\r\u0178\u017C\n\r\u017D\u0184\n\x07\u0187\n\f\u018A\v\u018D\n\u019E\n\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\u01AE\n\x1B\x07\u01B6\n\f\u01B9\v\u01BC\n   \u01C7\n  \x07 \u01CA\n \f  \u01CD\v   \u01D0\n !!!!!\"\"##$$%%%\x07%\u01E0\n%\f%%\u01E3\v%%%%\u01E7\n%&&&&&&&&&&&&&&&&&&\u01FA\n&\r&&\u01FB&&\u01FF\n&''''(((()))\u020B\n))\x07)\u020E\n)\f))\u0211\v)))\u0214\n)****+++\u021C\n++\x07+\u021F\n+\f++\u0222\v+++\u0225\n+,,,,,--..///0000000000000\u023F\n01112222\u0247\n2333333333\u0251\n3333333333\x073\u025C\n3\f33\u025F\v344444444\u0268\n4444\x074\u026D\n4\f44\u0270\v4555555\u0277\n56666\u027C\n6777\x077\u0281\n7\f77\u0284\v777888\u028A\n88\x078\u028D\n8\f88\u0290\v888\u0293\n899999::;\x07;\u029D\n;\f;;\u02A0\v;;;;\u02A4\n;;;\u02A7\n;;;;;\x07;\u02AD\n;\f;;\u02B0\v;;;;\u02B4\n;;;\u02B7\n;;;;\u02BB\n;;\u02BD\n;<<===\u02C3\n=>>>\x07>\u02C8\n>\f>>\u02CB\v>>>???\x07?\u02D2\n?\f??\u02D5\v???\u02D8\n?@@@\u02DC\n@@@@\u02E0\n@AAABBCCCCC\u02EB\nCDDD\x07D\u02F0\nD\fDD\u02F3\vDDD\u02F6\nDEEEFFFGGG\u0300\nGG\x07G\u0303\nG\fGG\u0306\vGGG\u0309\nGHHI\x07I\u030E\nI\fII\u0311\vIIIIIJJJJJJJJJJJJJJJJJJJ\u0329\nJKKLLLLMMM\u0333\nMM\x07M\u0336\nM\fMM\u0339\vMMM\u033C\nMNNN\u0340\nNOOOOPPP\u0348\nPP\x07P\u034B\nP\fPP\u034E\vPPP\u0351\nPQQQQQ\u0357\nQQQRRRRSSSSTTTTUUUU\x07U\u036B\nU\fUU\u036E\vUUU\u0371\nUVVVWWW\u0378\nWW\x07W\u037B\nW\fWW\u037E\vWWW\u0381\nWXXX\u0385\nXXX\u0388\nXYYYZZZZZ\u0391\nZ[[[[\u0396\n[\\\\\\\\\u039B\n\\\\\\\u039E\n\\]]]\u03A2\n]]\x07]\u03A5\n]\f]]\u03A8\v]^^^^^\u03AE\n^___```aabbccddeefff\u03C2\nfgghhiiiiiiii\u03CF\nijjjjjjjj\u03D8\njkkllmmnnooppp\u03E6\npqqqqqqqqqqqqqqqqqqqqqqq\u03FE\nqqqqqq\u0404\nqqqqqqqqq\u040D\nqqqqqqqqqqqqq\u041A\nqqqqqqq\u0421\nqq\u0423\nqqq\u0426\nqqqq\u042A\nqqqqqqqqq\x07q\u0434\nq\fqq\u0437\vqqqq\u043B\nqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq\x07q\u046E\nq\fqq\u0471\vqrrr\u0475\nrrrrrr\u047B\nrrr\u047E\nrss\u0481\ns\rss\u0482sss\u0487\nsttt\u048B\nttttuuu\x07u\u0493\nu\fuu\u0496\vuuu\u0499\nuvvv\u049D\nvv\x07v\u04A0\nv\fvv\u04A3\vvwww\u04A7\nww\x07w\u04AA\nw\fww\u04AD\vwww\u04B0\nwxxxx\u04B5\nxxxx\u04B9\nxyyyyy\u04BF\ny\ryy\u04C0yyzzzz\u04C8\nz{{{{{{{{\u04D1\n{||||\u04D6\n|}}}\x07}\u04DB\n}\f}}\u04DE\v}~~\x7F\x7F\x80\x80\x80\x81\x81\x82\x82\x83\x83\x84\x84\x84\x84\x84\x84\x84df\xE0\x85\b\n\f \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\x80\x82\x84\x86\x88\x8A\x8C\x8E\x90\x92\x94\x96\x98\x9A\x9C\x9E\xA0\xA2\xA4\xA6\xA8\xAA\xAC\xAE\xB0\xB2\xB4\xB6\xB8\xBA\xBC\xBE\xC0\xC2\xC4\xC6\xC8\xCA\xCC\xCE\xD0\xD2\xD4\xD6\xD8\xDA\xDC\xDE\xE0\xE2\xE4\xE6\xE8\xEA\xEC\xEE\xF0\xF2\xF4\xF6\xF8\xFA\xFC\xFE\u0100\u0102\u0104\u0106qq\x99\x99\n\n\"\"88??CCPP''1177[[\x92\x92\x94\x94((..DETT\x07))//KKRRYYx}\x85\x86de\x93\x9477[[ff\x91\x91 00==FGOOQQ]]``$$55\x80\x80\x82\x82\x87\x87~\x7F\u0542\u010C\u0119\u011B\b\u0124\n\u0126\f\u012C\u012F\u0133\u0137\u013C\u0148\u014A\u0153\u0157\u015D \u0169\"\u016E$\u0171&\u0176(\u017B*\u017F,\u018E.\u01930\u01952\u01974\u01AD6\u01AF8\u01BB:\u01BD<\u01C2>\u01C4@\u01D1B\u01D6D\u01D8F\u01DAH\u01E6J\u01FEL\u0200N\u0204P\u0208R\u0215T\u0219V\u0226X\u022BZ\u022D\\\u022F^\u023E`\u0240b\u0246d\u0250f\u0267h\u0276j\u027Bl\u027Dn\u0287p\u0294r\u0299t\u02BCv\u02BEx\u02C2z\u02C4|\u02CE~\u02DF\x80\u02E1\x82\u02E4\x84\u02EA\x86\u02EC\x88\u02F7\x8A\u02FA\x8C\u02FD\x8E\u030A\x90\u030F\x92\u0328\x94\u032A\x96\u032C\x98\u0330\x9A\u033F\x9C\u0341\x9E\u0345\xA0\u0352\xA2\u035A\xA4\u035E\xA6\u0362\xA8\u0366\xAA\u0372\xAC\u0375\xAE\u0384\xB0\u0389\xB2\u0390\xB4\u0392\xB6\u039D\xB8\u039F\xBA\u03A9\xBC\u03AF\xBE\u03B2\xC0\u03B5\xC2\u03B7\xC4\u03B9\xC6\u03BB\xC8\u03BD\xCA\u03C1\xCC\u03C3\xCE\u03C5\xD0\u03CE\xD2\u03D7\xD4\u03D9\xD6\u03DB\xD8\u03DD\xDA\u03DF\xDC\u03E1\xDE\u03E5\xE0\u043A\xE2\u047D\xE4\u0480\xE6\u0488\xE8\u048F\xEA\u049A\xEC\u04A4\xEE\u04B4\xF0\u04BA\xF2\u04C4\xF4\u04D0\xF6\u04D5\xF8\u04D7\xFA\u04DF\xFC\u04E1\xFE\u04E3\u0100\u04E6\u0102\u04E8\u0104\u04EA\u0106\u04EC\u0108\u010B\u0109\u010B\x07\x84\u010A\u0108\u010A\u0109\u010B\u010E\u010C\u010A\u010C\u010D\u010D\u010F\u010E\u010C\u010F\u0110\x07\u0110\u0111\u011A\u0112\u011A\n\u0113\u011A\b\u0114\u011A\u0115\u011A \u0116\u011A$\u0117\u011A&\u0118\u011A\u0106\x84\u0119\u0111\u0119\u0112\u0119\u0113\u0119\u0114\u0119\u0115\u0119\u0116\u0119\u0117\u0119\u0118\u011A\u011B\u011C\f\x07\u011C\u011D\x07\u011D\u011E> \u011E\x07\u011F\u0125*\u0120\u0121\f\x07\u0121\u0122\x07\u0122\u0123\n\u0123\u0125\u0124\u011F\u0124\u0120\u0125 \u0126\u0127\f\x07\u0127\u0128d3\u0128\v\u0129\u012B\x07h\u012A\u0129\u012B\u012E\u012C\u012A\u012C\u012D\u012D\r\u012E\u012C\u012F\u0130\f\x07\u0130\u0131\x07@\u0131\u0132\f\x07\u0132\u0133\u0134\f\x07\u0134\u0135\x07\x1B\u0135\u0136\n\u0136\u0137\u0138\x07\u0138\u0139\u0102\x82\u0139\u013A\b\u013A\u013B\v\u013B\u013C\u013E\x07p\u013D\u013F\f\u013E\u013D\u013F\u0140\u0140\u013E\u0140\u0141\u0141\u0142\u0142\u0143\x07q\u0143\u0144\u0145\x07\x07\u0145\u0149\u0104\x83\u0146\u0147\x07\u0147\u0149\r\u0148\u0144\u0148\u0146\u0149\u014A\u014E\x07\x98\u014B\u014D\u014C\u014B\u014D\u0150\u014E\u014C\u014E\u014F\u014F\u0151\u0150\u014E\u0151\u0152\x07\x9D\u0152\u0153\u0154\x07\x9C\u0154\u0155d3\u0155\u0156 \u0156\x1B\u0157\u0159\x07>\u0158\u015A\u0159\u0158\u0159\u015A\u015A\u015B\u015B\u015C\"\u015C\u015D\u015E\x07p\u015E\u0163 \u015F\u0160\x07v\u0160\u0162 \u0161\u015F\u0162\u0165\u0163\u0161\u0163\u0164\u0164\u0166\u0165\u0163\u0166\u0167\x07q\u0167\u0168\x07:\u0168\u0169\u016C\xD8m\u016A\u016B\x07@\u016B\u016D\xD8m\u016C\u016A\u016C\u016D\u016D!\u016E\u016F\xCAf\u016F#\u0170\u0172\x07g\u0171\u0170\u0172\u0173\u0173\u0171\u0173\u0174\u0174%\u0175\u0177\x07h\u0176\u0175\u0177\u0178\u0178\u0176\u0178\u0179\u0179'\u017A\u017C\x07g\u017B\u017A\u017C\u017D\u017D\u017B\u017D\u017E\u017E)\u017F\u0180\f\x07\u0180\u0181\x07\u0181\u0188,\u0182\u0184\x07v\u0183\u0182\u0183\u0184\u0184\u0185\u0185\u0187,\u0186\u0183\u0187\u018A\u0188\u0186\u0188\u0189\u0189\u018C\u018A\u0188\u018B\u018D\x07v\u018C\u018B\u018C\u018D\u018D+\u018E\u018F\f\x07\u018F\u0190<\u0190\u0191\b\u0191\u0192d3\u0192-\u0193\u0194\x07~\u0194/\u0195\u0196\xD8m\u01961\u0197\u01986\u0198\u0199\x07w\u0199\u019A\x07U\u019A\u019D\x07l\u019B\u019E\r\u019C\u019E\xCCg\u019D\u019B\u019D\u019C\u019E\u019F\u019F\u01A0\x07m\u01A03\u01A1\u01A2\x07V\u01A2\u01A3\x07l\u01A3\u01A4\xD6l\u01A4\u01A5\x07m\u01A5\u01AE\u01A6\u01A76\u01A7\u01A8\x07w";
40711
+ MalloyParser._serializedATNSegment1 = "\u01A8\u01A9\x07V\u01A9\u01AA\x07l\u01AA\u01AB\xD4k\u01AB\u01AC\x07m\u01AC\u01AE\u01AD\u01A1\u01AD\u01A6\u01AE5\u01AF\u01B0\xD8m\u01B07\u01B1\u01BC:\u01B2\u01B7\x07p\u01B3\u01B6\x92J\u01B4\u01B6\x07\x84\u01B5\u01B3\u01B5\u01B4\u01B6\u01B9\u01B7\u01B5\u01B7\u01B8\u01B8\u01BA\u01B9\u01B7\u01BA\u01BC\x07q\u01BB\u01B1\u01BB\u01B2\u01BC9\u01BD\u01BE\x07p\u01BE\u01BF\x07\x89\u01BF\u01C0\xE0q\u01C0\u01C1\x07q\u01C1;\u01C2\u01C3\xD8m\u01C3=\u01C4\u01CB@!\u01C5\u01C7\x07v\u01C6\u01C5\u01C6\u01C7\u01C7\u01C8\u01C8\u01CA@!\u01C9\u01C6\u01CA\u01CD\u01CB\u01C9\u01CB\u01CC\u01CC\u01CF\u01CD\u01CB\u01CE\u01D0\x07v\u01CF\u01CE\u01CF\u01D0\u01D0?\u01D1\u01D2\f\x07\u01D2\u01D3D#\u01D3\u01D4\b\u01D4\u01D5B\"\u01D5A\u01D6\u01D7d3\u01D7C\u01D8\u01D9\xD8m\u01D9E\u01DA\u01DB\xD8m\u01DBG\u01DC\u01E1\x07p\u01DD\u01E0J&\u01DE\u01E0\x07\x84\u01DF\u01DD\u01DF\u01DE\u01E0\u01E3\u01E1\u01DF\u01E1\u01E2\u01E2\u01E4\u01E3\u01E1\u01E4\u01E7\x07q\u01E5\u01E7:\u01E6\u01DC\u01E6\u01E5\u01E7I\u01E8\u01FFN(\u01E9\u01FFL'\u01EA\u01FF\\/\u01EB\u01FF^0\u01EC\u01FF\x88E\u01ED\u01EE\x07\u01EE\u01FF\xFC\x7F\u01EF\u01F0\x07\u01F0\u01FFP)\u01F1\u01F2 \u01F2\u01FF\xEAv\u01F3\u01F4\f\x07\u01F4\u01F5 \u01F5\u01F6\x8CG\u01F6\u01FF\u01F7\u01FF\xBE`\u01F8\u01FA\x07h\u01F9\u01F8\u01FA\u01FB\u01FB\u01F9\u01FB\u01FC\u01FC\u01FF\u01FD\u01FF(\u01FE\u01E8\u01FE\u01E9\u01FE\u01EA\u01FE\u01EB\u01FE\u01EC\u01FE\u01ED\u01FE\u01EF\u01FE\u01F1\u01FE\u01F3\u01FE\u01F7\u01FE\u01F9\u01FE\u01FD\u01FFK\u0200\u0201\f\x07\u0201\u0202\x07\u0202\u0203T+\u0203M\u0204\u0205\f\x07\u0205\u0206\x07 \u0206\u0207T+\u0207O\u0208\u020FR*\u0209\u020B\x07v\u020A\u0209\u020A\u020B\u020B\u020C\u020C\u020ER*\u020D\u020A\u020E\u0211\u020F\u020D\u020F\u0210\u0210\u0213\u0211\u020F\u0212\u0214\x07v\u0213\u0212\u0213\u0214\u0214Q\u0215\u0216\xFC\x7F\u0216\u0217\b\u0217\u0218\xFC\x7F\u0218S\u0219\u0220V,\u021A\u021C\x07v\u021B\u021A\u021B\u021C\u021C\u021D\u021D\u021FV,\u021E\u021B\u021F\u0222\u0220\u021E\u0220\u0221\u0221\u0224\u0222\u0220\u0223\u0225\x07v\u0224\u0223\u0224\u0225\u0225U\u0226\u0227\f\x07\u0227\u0228X-\u0228\u0229\b\u0229\u022A\xE0q\u022AW\u022B\u022C\xD8m\u022CY\u022D\u022E\xD8m\u022E[\u022F\u0230\x07\b\u0230\u0231T+\u0231]\u0232\u0233\f\x07\u0233\u0234\x07\u0234\u0235n8\u0235\u023F\u0236\u0237\f\x07\u0237\u0238\x07\u0238\u0239n8\u0239\u023F\u023A\u023B\f\x07\u023B\u023C\x07\u023C\u023Dn8\u023D\u023F\u023E\u0232\u023E\u0236\u023E\u023A\u023F_\u0240\u0241\x07\v\u0241\u0242l7\u0242a\u0243\u0247^0\u0244\u0247\x88E\u0245\u0247\\/\u0246\u0243\u0246\u0244\u0246\u0245\u0247c\u0248\u0249\b3\u0249\u0251\xD8m\u024A\u024B\x07l\u024B\u024Cd3\u024C\u024D\x07m\u024D\u0251\u024E\u02514\x1B\u024F\u02512\u0250\u0248\u0250\u024A\u0250\u024E\u0250\u024F\u0251\u025D\u0252\u0253\f\x07\u0253\u0254\x07~\u0254\u025Cf4\u0255\u0256\f\u0256\u0257\x07j\u0257\u025Cf4\u0258\u0259\f\u0259\u025A\x076\u025A\u025CH%\u025B\u0252\u025B\u0255\u025B\u0258\u025C\u025F\u025D\u025B\u025D\u025E\u025Ee\u025F\u025D\u0260\u0261\b4\u0261\u0268\xF8}\u0262\u02688\u0263\u0264\x07l\u0264\u0265h5\u0265\u0266\x07m\u0266\u0268\u0267\u0260\u0267\u0262\u0267\u0263\u0268\u026E\u0269\u026A\f\u026A\u026B\x07~\u026B\u026Df4\u026C\u0269\u026D\u0270\u026E\u026C\u026E\u026F\u026Fg\u0270\u026E\u0271\u0277f4\u0272\u0273f4\u0273\u0274\x07j\u0274\u0275h5\u0275\u0277\u0276\u0271\u0276\u0272\u0277i\u0278\u027CN(\u0279\u027CL'\u027A\u027C^0\u027B\u0278\u027B\u0279\u027B\u027A\u027Ck\u027D\u0282\x07p\u027E\u0281j6\u027F\u0281\x07\x84\u0280\u027E\u0280\u027F\u0281\u0284\u0282\u0280\u0282\u0283\u0283\u0285\u0284\u0282\u0285\u0286\x07q\u0286m\u0287\u028Et;\u0288\u028A\x07v\u0289\u0288\u0289\u028A\u028A\u028B\u028B\u028Dt;\u028C\u0289\u028D\u0290\u028E\u028C\u028E\u028F\u028F\u0292\u0290\u028E\u0291\u0293\x07v\u0292\u0291\u0292\u0293\u0293o\u0294\u0295\f\x07\u0295\u0296\x07@\u0296\u0297\f\x07\u0297\u0298d3\u0298q\u0299\u029A \u029As\u029B\u029D\x07h\u029C\u029B\u029D\u02A0\u029E\u029C\u029E\u029F\u029F\u02A1\u02A0\u029E\u02A1\u02A3Z.\u02A2\u02A4p9\u02A3\u02A2\u02A3\u02A4\u02A4\u02A6\u02A5\u02A7r:\u02A6\u02A5\u02A6\u02A7\u02A7\u02A8\u02A8\u02A9\x07_\u02A9\u02AA\xE0q\u02AA\u02BD\u02AB\u02AD\x07h\u02AC\u02AB\u02AD\u02B0\u02AE\u02AC\u02AE\u02AF\u02AF\u02B1\u02B0\u02AE\u02B1\u02B3Z.\u02B2\u02B4p9\u02B3\u02B2\u02B3\u02B4\u02B4\u02BA\u02B5\u02B7r:\u02B6\u02B5\u02B6\u02B7\u02B7\u02B8\u02B8\u02B9\x07L\u02B9\u02BBv<\u02BA\u02B6\u02BA\u02BB\u02BB\u02BD\u02BC\u029E\u02BC\u02AE\u02BDu\u02BE\u02BF\xE0q\u02BFw\u02C0\u02C3\x88E\u02C1\u02C3\x8AF\u02C2\u02C0\u02C2\u02C1\u02C3y\u02C4\u02C9\x07p\u02C5\u02C8\x84C\u02C6\u02C8\x07\x84\u02C7\u02C5\u02C7\u02C6\u02C8\u02CB\u02C9\u02C7\u02C9\u02CA\u02CA\u02CC\u02CB\u02C9\u02CC\u02CD\x07q\u02CD{\u02CE\u02D3~@\u02CF\u02D0\x07v\u02D0\u02D2~@\u02D1\u02CF\u02D2\u02D5\u02D3\u02D1\u02D3\u02D4\u02D4\u02D7\u02D5\u02D3\u02D6\u02D8\x07v\u02D7\u02D6\u02D7\u02D8\u02D8}\u02D9\u02DB\xE0q\u02DA\u02DC \u02DB\u02DA\u02DB\u02DC\u02DC\u02E0\u02DD\u02E0\x07'\u02DE\u02E0\x071\u02DF\u02D9\u02DF\u02DD\u02DF\u02DE\u02E0\x7F\u02E1\u02E2\x07\u02E2\u02E3|?\u02E3\x81\u02E4\u02E5\xB0Y\u02E5\x83\u02E6\u02EB\x88E\u02E7\u02EB\xA8U\u02E8\u02EB\x80A\u02E9\u02EB\x82B\u02EA\u02E6\u02EA\u02E7\u02EA\u02E8\u02EA\u02E9\u02EB\x85\u02EC\u02F1\xE0q\u02ED\u02EE\x07v\u02EE\u02F0\xE0q\u02EF\u02ED\u02F0\u02F3\u02F1\u02EF\u02F1\u02F2\u02F2\u02F5\u02F3\u02F1\u02F4\u02F6\x07v\u02F5\u02F4\u02F5\u02F6\u02F6\x87\u02F7\u02F8\x07!\u02F8\u02F9\x86D\u02F9\x89\u02FA\u02FB\x07\r\u02FB\u02FC\x86D\u02FC\x8B\u02FD\u0304\x90I\u02FE\u0300\x07v\u02FF\u02FE\u02FF\u0300\u0300\u0301\u0301\u0303\x90I\u0302\u02FF\u0303\u0306\u0304\u0302\u0304\u0305\u0305\u0308\u0306\u0304\u0307\u0309\x07v\u0308\u0307\u0308\u0309\u0309\x8D\u030A\u030B\xD8m\u030B\x8F\u030C\u030E\x07h\u030D\u030C\u030E\u0311\u030F\u030D\u030F\u0310\u0310\u0312\u0311\u030F\u0312\u0313\x8EH\u0313\u0314\b\u0314\u0315h5\u0315\x91\u0316\u0329\x96L\u0317\u0329\\/\u0318\u0329\x94K\u0319\u0329`1\u031A\u0329\xA6T\u031B\u0329\xBA^\u031C\u0329\xA2R\u031D\u0329\xA4S\u031E\u0329\xB4[\u031F\u0329\xB0Y\u0320\u0329\xAAV\u0321\u0329\x88E\u0322\u0329\x8AF\u0323\u0329\x9CO\u0324\u0329\xBC_\u0325\u0329\xBE`\u0326\u0329\xC0a\u0327\u0329(\u0328\u0316\u0328\u0317\u0328\u0318\u0328\u0319\u0328\u031A\u0328\u031B\u0328\u031C\u0328\u031D\u0328\u031E\u0328\u031F\u0328\u0320\u0328\u0321\u0328\u0322\u0328\u0323\u0328\u0324\u0328\u0325\u0328\u0326\u0328\u0327\u0329\x93\u032A\u032B^0\u032B\x95\u032C\u032D\f\x07\u032D\u032E\x07\f\u032E\u032F\x98M\u032F\x97\u0330\u0337\x9AN\u0331\u0333\x07v\u0332\u0331\u0332\u0333\u0333\u0334\u0334\u0336\x9AN\u0335\u0332\u0336\u0339\u0337\u0335\u0337\u0338\u0338\u033B\u0339\u0337\u033A\u033C\x07v\u033B\u033A\u033B\u033C\u033C\x99\u033D\u0340\xF2z\u033E\u0340V,\u033F\u033D\u033F\u033E\u0340\x9B\u0341\u0342\f\x07\u0342\u0343\x07\u0343\u0344\x9EP\u0344\x9D\u0345\u034C\xA0Q\u0346\u0348\x07v\u0347\u0346\u0347\u0348\u0348\u0349\u0349\u034B\xA0Q\u034A\u0347\u034B\u034E\u034C\u034A\u034C\u034D\u034D\u0350\u034E\u034C\u034F\u0351\x07v\u0350\u034F\u0350\u0351\u0351\x9F\u0352\u0356\f\x07\u0353\u0354<\u0354\u0355\b\u0355\u0357\u0356\u0353\u0356\u0357\u0357\u0358\u0358\u0359h5\u0359\xA1\u035A\u035B\f\x07\u035B\u035C\x07\u035C\u035D\x98M\u035D\xA3\u035E\u035F\f\x07\u035F\u0360\x07\u0360\u0361\x98M\u0361\xA5\u0362\u0363\f\x07\u0363\u0364 \x07\u0364\u0365\xECw\u0365\xA7\u0366\u0367\x07\u0367\u036C\xD8m\u0368\u0369\x07v\u0369\u036B\xD8m\u036A\u0368\u036B\u036E\u036C\u036A\u036C\u036D\u036D\u0370\u036E\u036C\u036F\u0371\x07v\u0370\u036F\u0370\u0371\u0371\xA9\u0372\u0373\x07\u0373\u0374\xACW\u0374\xAB\u0375\u037C\xAEX\u0376\u0378\x07v\u0377\u0376\u0377\u0378\u0378\u0379\u0379\u037B\xAEX\u037A\u0377\u037B\u037E\u037C\u037A\u037C\u037D\u037D\u0380\u037E\u037C\u037F\u0381\x07v\u0380\u037F\u0380\u0381\u0381\xAD\u0382\u0385\x07\x94\u0383\u0385\xFC\x7F\u0384\u0382\u0384\u0383\u0385\u0387\u0386\u0388 \u0387\u0386\u0387\u0388\u0388\xAF\u0389\u038A\x07\u038A\u038B\x07\x94\u038B\xB1\u038C\u038D\x07*\u038D\u0391\xFC\x7F\u038E\u038F\x07*\u038F\u0391\xE0q\u0390\u038C\u0390\u038E\u0391\xB3\u0392\u0393\x07 \u0393\u0395\x07\x94\u0394\u0396\xB2Z\u0395\u0394\u0395\u0396\u0396\xB5\u0397\u039A\xF8}\u0398\u0399\x07w\u0399\u039B\x07\x80\u039A\u0398\u039A\u039B\u039B\u039E\u039C\u039E\x07\x80\u039D\u0397\u039D\u039C\u039E\xB7\u039F\u03A6\xB6\\\u03A0\u03A2\x07v\u03A1\u03A0\u03A1\u03A2\u03A2\u03A3\u03A3\u03A5\xB6\\\u03A4\u03A1\u03A5\u03A8\u03A6\u03A4\u03A6\u03A7\u03A7\xB9\u03A8\u03A6\u03A9\u03AA\x07\u03AA\u03AD\xB8]\u03AB\u03AC\x07*\u03AC\u03AE\xFC\x7F\u03AD\u03AB\u03AD\u03AE\u03AE\xBB\u03AF\u03B0\x07\u03B0\u03B1\xC2b\u03B1\xBD\u03B2\u03B3\x07#\u03B3\u03B4\xCAf\u03B4\xBF\u03B5\u03B6\x07h\u03B6\xC1\u03B7\u03B8 \b\u03B8\xC3\u03B9\u03BA \u03BA\xC5\u03BB\u03BC \n\u03BC\xC7\u03BD\u03BE \v\u03BE\xC9\u03BF\u03C2\xCCg\u03C0\u03C2\r\u03C1\u03BF\u03C1\u03C0\u03C2\xCB\u03C3\u03C4 \f\u03C4\xCD\u03C5\u03C6 \r\u03C6\xCF\u03C7\u03CF\xCAf\u03C8\u03CF\xCEh\u03C9\u03CF\xD2j\u03CA\u03CF\x07J\u03CB\u03CF \u03CC\u03CF\x07c\u03CD\u03CF\x07I\u03CE\u03C7\u03CE\u03C8\u03CE\u03C9\u03CE\u03CA\u03CE\u03CB\u03CE\u03CC\u03CE\u03CD\u03CF\xD1\u03D0\u03D8\x07\x8A\u03D1\u03D8\x07\x8B\u03D2\u03D8\x07\x8C\u03D3\u03D8\x07\x8F\u03D4\u03D8\x07\x8E\u03D5\u03D8\x07\x8D\u03D6\u03D8\x07\x90\u03D7\u03D0\u03D7\u03D1\u03D7\u03D2\u03D7\u03D3\u03D7\u03D4\u03D7\u03D5\u03D7\u03D6\u03D8\xD3\u03D9\u03DA\xCAf\u03DA\xD5\u03DB\u03DC\xCAf\u03DC\xD7\u03DD\u03DE \u03DE\xD9\u03DF\u03E0 \u03E0\xDB\u03E1\u03E2 \u03E2\xDD\u03E3\u03E6\xC6d\u03E4\u03E6\xCAf\u03E5\u03E3\u03E5\u03E4\u03E6\xDF\u03E7\u03E8\bq\u03E8\u043B\xF8}\u03E9\u043B\xD0i\u03EA\u03EB\x07\x7F\u03EB\u043B\xE0q\u03EC\u03ED\x07H\u03ED\u043B\xE0q\u03EE\u03EF\x07,\u03EF\u03F0\x07l\u03F0\u03F1\xE0q\u03F1\u03F2\x07&\u03F2\u03F3\xDEp\u03F3\u03F4\x07m\u03F4\u043B\u03F5\u03F6\x07.\u03F6\u03F7\x07l\u03F7\u03F8\x072\u03F8\u03F9\xE0q\u03F9\u03FA\x07m\u03FA\u043B\u03FB\u03FC\x07S\u03FC\u03FE\x07w\u03FD\u03FB\u03FD\u03FE\u03FE\u03FF\u03FF\u0400\xC4c\u0400\u0403\x07l\u0401\u0404\xE0q\u0402\u0404\x07\x80\u0403\u0401\u0403\u0402\u0403\u0404\u0404\u0405\u0405\u0406\x07m\u0406\u043B\u0407\u0408\xF8}\u0408\u0409\x07w\u0409\u040A\xC4c\u040A\u040C\x07l\u040B\u040D\xE0q\u040C\u040B\u040C\u040D\u040D\u040E\u040E\u040F\x07m\u040F\u043B\u0410\u0411\x07l\u0411\u0412\xE2r\u0412\u0413\x07m\u0413\u043B\u0414\u0415\xF8}\u0415\u0416\x07w\u0416\u0417\xD8m\u0417\u0419\x07l\u0418\u041A\xE8u\u0419\u0418\u0419\u041A\u041A\u041B\u041B\u041C\x07m\u041C\u043B\u041D\u0422\xD8m\u041E\u0420\x07t\u041F\u0421\xC6d\u0420\u041F\u0420\u0421\u0421\u0423\u0422\u041E\u0422\u0423\u0423\u0426\u0424\u0426\xDAn\u0425\u041D\u0425\u0424\u0426\u0427\u0427\u0429\x07l\u0428\u042A\xE8u\u0429\u0428\u0429\u042A\u042A\u042B\u042B\u042C\x07m\u042C\u043B\u042D\u043B\xE4s\u042E\u042F\xDCo\u042F\u0430\x07l\u0430\u0435\xE0q\u0431\u0432\x07v\u0432\u0434\xFC\x7F\u0433\u0431\u0434\u0437\u0435\u0433\u0435\u0436\u0436\u0438\u0437\u0435\u0438\u0439\x07m\u0439\u043B\u043A\u03E7\u043A\u03E9\u043A\u03EA\u043A\u03EC\u043A\u03EE\u043A\u03F5\u043A\u03FD\u043A\u0407\u043A\u0410\u043A\u0414\u043A\u0425\u043A\u042D\u043A\u042E\u043B\u046F\u043C\u043D\f\u043D\u043E \u043E\u046E\xE0q\u043F\u0440\f\u0440\u0441 \u0441\u046E\xE0q\u0442\u0443\f\u0443\u0444\x07Z\u0444\u046E\xE0q\u0445\u0446\f\u0446\u0447\xC8e\u0447\u0448\xE0q\u0448\u046E\u0449\u044A\f\u044A\u044B\x07%\u044B\u046E\xE0q\u044C\u044D\f\r\u044D\u044E\x07M\u044E\u046E\xE0q\u044F\u0450\f\f\u0450\u0451\x07\x88\u0451\u046E\xE0q\r\u0452\u0453\f\u0453\u046Ez>\u0454\u0455";
40712
+ MalloyParser._serializedATNSegment2 = "\f\u0455\u046E\xDAn\u0456\u0457\f\x1B\u0457\u0458\x07w\u0458\u046E\xDAn\u0459\u045A\f\u045A\u045B\x07r\u045B\u046E\xDEp\u045C\u045D\f\u045D\u045E\x07s\u045E\u046E\xDEp\u045F\u0460\f\u0460\u0461\x079\u0461\u0462\xE0q\u0462\u0463\xDAn\u0463\u046E\u0464\u0465\f\u0465\u0466\x07i\u0466\u046E\xE2r\u0467\u0468\f\u0468\u0469\x07\x83\u0469\u046E\xE2r\u046A\u046B\f\u046B\u046C\x07\x89\u046C\u046E\xE2r\u046D\u043C\u046D\u043F\u046D\u0442\u046D\u0445\u046D\u0449\u046D\u044C\u046D\u044F\u046D\u0452\u046D\u0454\u046D\u0456\u046D\u0459\u046D\u045C\u046D\u045F\u046D\u0464\u046D\u0467\u046D\u046A\u046E\u0471\u046F\u046D\u046F\u0470\u0470\xE1\u0471\u046F\u0472\u0474\x07l\u0473\u0475\xC8e\u0474\u0473\u0474\u0475\u0475\u0476\u0476\u0477\xE0q\u0477\u0478\x07m\u0478\u047E\u0479\u047B\xC8e\u047A\u0479\u047A\u047B\u047B\u047C\u047C\u047E\xE0q\u047D\u0472\u047D\u047A\u047E\xE3\u047F\u0481\xE6t\u0480\u047F\u0481\u0482\u0482\u0480\u0482\u0483\u0483\u0486\u0484\u0485\x073\u0485\u0487\xE0q\u0486\u0484\u0486\u0487\u0487\xE5\u0488\u048A\x07N\u0489\u048B\xE0q\u048A\u0489\u048A\u048B\u048B\u048C\u048C\u048D\x07^\u048D\u048E\xE2r\u048E\xE7\u048F\u0494\xE0q\u0490\u0491\x07v\u0491\u0493\xE0q\u0492\u0490\u0493\u0496\u0494\u0492\u0494\u0495\u0495\u0498\u0496\u0494\u0497\u0499\x07v\u0498\u0497\u0498\u0499\u0499\xE9\u049A\u04A1\xFC\x7F\u049B\u049D\x07v\u049C\u049B\u049C\u049D\u049D\u049E\u049E\u04A0\xFC\x7F\u049F\u049C\u04A0\u04A3\u04A1\u049F\u04A1\u04A2\u04A2\xEB\u04A3\u04A1\u04A4\u04AB\xF6|\u04A5\u04A7\x07v\u04A6\u04A5\u04A6\u04A7\u04A7\u04A8\u04A8\u04AA\xF6|\u04A9\u04A6\u04AA\u04AD\u04AB\u04A9\u04AB\u04AC\u04AC\u04AF\u04AD\u04AB\u04AE\u04B0\x07v\u04AF\u04AE\u04AF\u04B0\u04B0\xED\u04B1\u04B2\xF8}\u04B2\u04B3\x07w\u04B3\u04B5\u04B4\u04B1\u04B4\u04B5\u04B5\u04B6\u04B6\u04B8\x07\x80\u04B7\u04B9\xF0y\u04B8\u04B7\u04B8\u04B9\u04B9\xEF\u04BA\u04BE\x07p\u04BB\u04BC\x07\n\u04BC\u04BF\xEAv\u04BD\u04BF\x07v\u04BE\u04BB\u04BE\u04BD\u04BF\u04C0\u04C0\u04BE\u04C0\u04C1\u04C1\u04C2\u04C2\u04C3\x07q\u04C3\xF1\u04C4\u04C5\f\x07\u04C5\u04C7\xF8}\u04C6\u04C8\xF4{\u04C7\u04C6\u04C7\u04C8\u04C8\xF3\u04C9\u04CA\x07w\u04CA\u04D1\xDAn\u04CB\u04CC\x07w\u04CC\u04CD\xC4c\u04CD\u04CE\x07l\u04CE\u04CF\x07m\u04CF\u04D1\u04D0\u04C9\u04D0\u04CB\u04D1\xF5\u04D2\u04D6\xF2z\u04D3\u04D6\xEEx\u04D4\u04D6V,\u04D5\u04D2\u04D5\u04D3\u04D5\u04D4\u04D6\xF7\u04D7\u04DC\xFC\x7F\u04D8\u04D9\x07w\u04D9\u04DB\xFC\x7F\u04DA\u04D8\u04DB\u04DE\u04DC\u04DA\u04DC\u04DD\u04DD\xF9\u04DE\u04DC\u04DF\u04E0\xD8m\u04E0\xFB\u04E1\u04E2\xD8m\u04E2\xFD\u04E3\u04E4\xE0q\u04E4\u04E5\x07\u04E5\xFF\u04E6\u04E7\xD8m\u04E7\u0101\u04E8\u04E9\xD8m\u04E9\u0103\u04EA\u04EB\xCAf\u04EB\u0105\u04EC\u04ED\x07\x84\u04ED\u04EE\x07\x84\u04EE\u04EF\x07n\u04EF\u04F0\xCAf\u04F0\u04F1\x07o\u04F1\u0107\x86\u010A\u010C\u0119\u0124\u012C\u0140\u0148\u014E\u0159\u0163\u016C\u0173\u0178\u017D\u0183\u0188\u018C\u019D\u01AD\u01B5\u01B7\u01BB\u01C6\u01CB\u01CF\u01DF\u01E1\u01E6\u01FB\u01FE\u020A\u020F\u0213\u021B\u0220\u0224\u023E\u0246\u0250\u025B\u025D\u0267\u026E\u0276\u027B\u0280\u0282\u0289\u028E\u0292\u029E\u02A3\u02A6\u02AE\u02B3\u02B6\u02BA\u02BC\u02C2\u02C7\u02C9\u02D3\u02D7\u02DB\u02DF\u02EA\u02F1\u02F5\u02FF\u0304\u0308\u030F\u0328\u0332\u0337\u033B\u033F\u0347\u034C\u0350\u0356\u036C\u0370\u0377\u037C\u0380\u0384\u0387\u0390\u0395\u039A\u039D\u03A1\u03A6\u03AD\u03C1\u03CE\u03D7\u03E5\u03FD\u0403\u040C\u0419\u0420\u0422\u0425\u0429\u0435\u043A\u046D\u046F\u0474\u047A\u047D\u0482\u0486\u048A\u0494\u0498\u049C\u04A1\u04A6\u04AB\u04AF\u04B4\u04B8\u04BE\u04C0\u04C7\u04D0\u04D5\u04DC";
40577
40713
  MalloyParser._serializedATN = Utils.join([
40578
40714
  MalloyParser._serializedATNSegment0,
40579
40715
  MalloyParser._serializedATNSegment1,
@@ -44053,7 +44189,7 @@ ${struct.dialect.sqlFinalStage("__stage0", [
44053
44189
  exports.AggregateOrderingContext = AggregateOrderingContext;
44054
44190
  var AggregateOrderBySpecContext = class extends ParserRuleContext_1.ParserRuleContext {
44055
44191
  fieldExpr() {
44056
- return this.getRuleContext(0, FieldExprContext);
44192
+ return this.tryGetRuleContext(0, FieldExprContext);
44057
44193
  }
44058
44194
  ASC() {
44059
44195
  return this.tryGetToken(MalloyParser.ASC, 0);
@@ -44772,57 +44908,18 @@ ${struct.dialect.sqlFinalStage("__stage0", [
44772
44908
  }
44773
44909
  };
44774
44910
  exports.NestEntryContext = NestEntryContext;
44775
- var NestExistingContext = class extends NestEntryContext {
44911
+ var NestDefContext = class extends NestEntryContext {
44776
44912
  tags() {
44777
44913
  return this.getRuleContext(0, TagsContext);
44778
44914
  }
44779
- fieldPath() {
44780
- return this.getRuleContext(0, FieldPathContext);
44781
- }
44782
- PLUS() {
44783
- return this.tryGetToken(MalloyParser.PLUS, 0);
44784
- }
44785
44915
  vExpr() {
44786
- return this.tryGetRuleContext(0, VExprContext);
44787
- }
44788
- constructor(ctx) {
44789
- super(ctx.parent, ctx.invokingState);
44790
- this.copyFrom(ctx);
44791
- }
44792
- // @Override
44793
- enterRule(listener2) {
44794
- if (listener2.enterNestExisting) {
44795
- listener2.enterNestExisting(this);
44796
- }
44797
- }
44798
- // @Override
44799
- exitRule(listener2) {
44800
- if (listener2.exitNestExisting) {
44801
- listener2.exitNestExisting(this);
44802
- }
44803
- }
44804
- // @Override
44805
- accept(visitor) {
44806
- if (visitor.visitNestExisting) {
44807
- return visitor.visitNestExisting(this);
44808
- } else {
44809
- return visitor.visitChildren(this);
44810
- }
44811
- }
44812
- };
44813
- exports.NestExistingContext = NestExistingContext;
44814
- var NestDefContext = class extends NestEntryContext {
44815
- tags() {
44816
- return this.getRuleContext(0, TagsContext);
44916
+ return this.getRuleContext(0, VExprContext);
44817
44917
  }
44818
44918
  queryName() {
44819
- return this.getRuleContext(0, QueryNameContext);
44919
+ return this.tryGetRuleContext(0, QueryNameContext);
44820
44920
  }
44821
44921
  isDefine() {
44822
- return this.getRuleContext(0, IsDefineContext);
44823
- }
44824
- vExpr() {
44825
- return this.getRuleContext(0, VExprContext);
44922
+ return this.tryGetRuleContext(0, IsDefineContext);
44826
44923
  }
44827
44924
  constructor(ctx) {
44828
44925
  super(ctx.parent, ctx.invokingState);
@@ -54672,9 +54769,14 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
54672
54769
  this.field = field3;
54673
54770
  this.dir = dir;
54674
54771
  this.elementType = "orderBy";
54675
- this.has({ field: field3 });
54772
+ if (field3)
54773
+ this.has({ field: field3 });
54676
54774
  }
54677
54775
  getAnalyticOrderBy(fs) {
54776
+ if (!this.field) {
54777
+ this.log("analytic `order_by` must specify an aggregate expression or output field reference");
54778
+ return { e: ["error"], dir: this.dir };
54779
+ }
54678
54780
  const expr2 = this.field.getExpression(fs);
54679
54781
  if ((0, malloy_types_1.expressionIsAggregate)(expr2.expressionType)) {
54680
54782
  } else if ((0, malloy_types_1.expressionIsScalar)(expr2.expressionType)) {
@@ -54686,12 +54788,23 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
54686
54788
  }
54687
54789
  return { e: expr2.value, dir: this.dir };
54688
54790
  }
54689
- getAggregateOrderBy(fs) {
54690
- const expr2 = this.field.getExpression(fs);
54691
- if (!(0, malloy_types_1.expressionIsScalar)(expr2.expressionType)) {
54692
- this.field.log("aggregate `order_by` must be scalar");
54791
+ getAggregateOrderBy(fs, allowExpression) {
54792
+ if (this.field) {
54793
+ const expr2 = this.field.getExpression(fs);
54794
+ if (!(0, malloy_types_1.expressionIsScalar)(expr2.expressionType)) {
54795
+ this.field.log("aggregate `order_by` must be scalar");
54796
+ }
54797
+ if (!allowExpression) {
54798
+ this.field.log("`order_by` must be only `asc` or `desc` with no expression");
54799
+ }
54800
+ return { e: expr2.value, dir: this.dir };
54801
+ } else {
54802
+ if (this.dir === void 0) {
54803
+ this.log("field or order direction must be specified");
54804
+ return { e: void 0, dir: "asc" };
54805
+ }
54806
+ return { e: void 0, dir: this.dir };
54693
54807
  }
54694
- return { e: expr2.value, dir: this.dir };
54695
54808
  }
54696
54809
  };
54697
54810
  exports.FunctionOrderBy = FunctionOrderBy;
@@ -54703,8 +54816,8 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
54703
54816
  getAnalyticOrderBy(fs) {
54704
54817
  return this.list.map((el) => el.getAnalyticOrderBy(fs));
54705
54818
  }
54706
- getAggregateOrderBy(fs) {
54707
- return this.list.map((el) => el.getAggregateOrderBy(fs));
54819
+ getAggregateOrderBy(fs, allowExpression) {
54820
+ return this.list.map((el) => el.getAggregateOrderBy(fs, allowExpression));
54708
54821
  }
54709
54822
  };
54710
54823
  exports.FunctionOrdering = FunctionOrdering;
@@ -55207,7 +55320,7 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
55207
55320
  };
55208
55321
  structPath = this.source.path;
55209
55322
  const joinUsage = this.getJoinUsage(inputFS);
55210
- const allUsagesSame = joinUsage.length === 1 || joinUsage.slice(1).every((p3) => joinPathEq(p3, joinUsage[0]));
55323
+ const allUsagesSame = joinUsage.length === 1 || joinUsage.length > 1 && joinUsage.slice(1).every((p3) => joinPathEq(p3, joinUsage[0]));
55211
55324
  if (allUsagesSame) {
55212
55325
  structPath = joinUsage[0].map((p3) => p3.name);
55213
55326
  sourceRelationship = joinUsage[0];
@@ -55349,6 +55462,13 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
55349
55462
  result.push(def2.relationship);
55350
55463
  }
55351
55464
  }
55465
+ } else if (frag.type === "source-reference") {
55466
+ if (frag.path) {
55467
+ const def2 = lookup6(fs, frag.path);
55468
+ result.push(def2.relationship);
55469
+ } else {
55470
+ result.push([]);
55471
+ }
55352
55472
  }
55353
55473
  }
55354
55474
  });
@@ -55835,6 +55955,7 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
55835
55955
  const frag = {
55836
55956
  type: "function_call",
55837
55957
  overload,
55958
+ name: this.name,
55838
55959
  args: argExprs.map((x6) => x6.value),
55839
55960
  expressionType,
55840
55961
  structPath
@@ -55848,7 +55969,8 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
55848
55969
  if ((props === null || props === void 0 ? void 0 : props.orderBys) && props.orderBys.length > 0) {
55849
55970
  const isAnalytic = (0, malloy_types_1.expressionIsAnalytic)(overload.returnType.expressionType);
55850
55971
  if (dialectOverload.supportsOrderBy || isAnalytic) {
55851
- const allObs = props.orderBys.flatMap((orderBy) => isAnalytic ? orderBy.getAnalyticOrderBy(fs) : orderBy.getAggregateOrderBy(fs));
55972
+ const allowExpression = dialectOverload.supportsOrderBy !== "only_default";
55973
+ const allObs = props.orderBys.flatMap((orderBy) => isAnalytic ? orderBy.getAnalyticOrderBy(fs) : orderBy.getAggregateOrderBy(fs, allowExpression));
55852
55974
  frag.orderBy = allObs;
55853
55975
  } else {
55854
55976
  props.orderBys[0].log(`Function ${this.name} does not support order_by`);
@@ -63698,6 +63820,9 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
63698
63820
  this.log("A multi-segment view cannot be used as a refinement");
63699
63821
  return [];
63700
63822
  }
63823
+ getImplicitName() {
63824
+ return this.operation.getImplicitName();
63825
+ }
63701
63826
  };
63702
63827
  exports.ViewArrow = ViewArrow;
63703
63828
  }
@@ -63810,6 +63935,9 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
63810
63935
  }
63811
63936
  return (0, refine_utils_1.refine)(this, pipeline, refineFrom[0]);
63812
63937
  }
63938
+ getImplicitName() {
63939
+ return this.base.getImplicitName();
63940
+ }
63813
63941
  };
63814
63942
  exports.ViewRefine = ViewRefine;
63815
63943
  }
@@ -63927,6 +64055,9 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
63927
64055
  }
63928
64056
  return pipeline;
63929
64057
  }
64058
+ getImplicitName() {
64059
+ return this.reference.nameString;
64060
+ }
63930
64061
  };
63931
64062
  exports.ReferenceView = ReferenceView;
63932
64063
  }
@@ -64669,6 +64800,9 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
64669
64800
  }
64670
64801
  return pipeline;
64671
64802
  }
64803
+ getImplicitName() {
64804
+ return void 0;
64805
+ }
64672
64806
  };
64673
64807
  exports.QOpDescView = QOpDescView;
64674
64808
  }
@@ -66229,7 +66363,7 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
66229
66363
  if (aggFunc === "sum") {
66230
66364
  expr2 = new ast.ExprSum(void 0, ref3);
66231
66365
  } else {
66232
- this.contextError(agg, "'${aggFunc}' is not legal in a reference-only aggregation");
66366
+ this.contextError(agg, `\`${aggFunc}\` is not legal in a reference-only aggregation`);
66233
66367
  return ref3;
66234
66368
  }
66235
66369
  }
@@ -66314,7 +66448,8 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
66314
66448
  }
66315
66449
  visitAggregateOrderBySpec(pcx) {
66316
66450
  const dir = pcx.ASC() ? "asc" : pcx.DESC() ? "desc" : void 0;
66317
- const f4 = this.getFieldExpr(pcx.fieldExpr());
66451
+ const fCx = pcx.fieldExpr();
66452
+ const f4 = fCx ? this.getFieldExpr(fCx) : void 0;
66318
66453
  return this.astAt(new ast.FunctionOrderBy(f4, dir), pcx);
66319
66454
  }
66320
66455
  visitAggregateOrderByStatement(pcx) {
@@ -66410,27 +66545,23 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
66410
66545
  visitNestedQueryList(pcx) {
66411
66546
  return new ast.Nests(this.only(pcx.nestEntry().map((cx) => this.visit(cx)), (x6) => x6 instanceof ast.NestFieldDeclaration && x6, "query"));
66412
66547
  }
66413
- visitNestExisting(pcx) {
66414
- const nameCx = pcx.fieldPath();
66415
- const name = this.getFieldPath(nameCx, ast.ViewOrScalarFieldReference);
66416
- const referenceView = this.astAt(new ast.ReferenceView(name), nameCx);
66417
- const refineCx = pcx.vExpr();
66418
- const notes = this.getNotes(pcx.tags());
66419
- if (refineCx) {
66420
- const nestRefine = new ast.NestFieldDeclaration(name.nameString, new ast.ViewRefine(referenceView, this.getVExpr(refineCx)));
66421
- nestRefine.extendNote({ notes });
66422
- return this.astAt(nestRefine, pcx);
66423
- }
66424
- const nestReference = new ast.NestFieldDeclaration(name.nameString, referenceView);
66425
- nestReference.extendNote({ notes });
66426
- return this.astAt(nestReference, pcx);
66427
- }
66428
66548
  visitNestDef(pcx) {
66429
- const name = (0, parse_utils_1.getId)(pcx.queryName());
66549
+ const nameCx = pcx.queryName();
66550
+ let name;
66430
66551
  const vExpr = this.getVExpr(pcx.vExpr());
66552
+ if (nameCx) {
66553
+ name = (0, parse_utils_1.getId)(nameCx);
66554
+ } else {
66555
+ const implicitName = vExpr.getImplicitName();
66556
+ if (implicitName === void 0) {
66557
+ this.contextError(pcx, "`nest:` view requires a name (add `nest_name is ...`)");
66558
+ }
66559
+ name = implicitName !== null && implicitName !== void 0 ? implicitName : "__unnamed__";
66560
+ }
66431
66561
  const nestDef = new ast.NestFieldDeclaration(name, vExpr);
66562
+ const isDefineCx = pcx.isDefine();
66432
66563
  nestDef.extendNote({
66433
- notes: this.getNotes(pcx.tags()).concat(this.getIsNotes(pcx.isDefine()))
66564
+ notes: this.getNotes(pcx.tags()).concat(isDefineCx ? this.getIsNotes(isDefineCx) : [])
66434
66565
  });
66435
66566
  return this.astAt(nestDef, pcx);
66436
66567
  }
@@ -67029,42 +67160,9 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
67029
67160
  var require_document_symbol_walker = __commonJS({
67030
67161
  "../malloy/dist/lang/parse-tree-walkers/document-symbol-walker.js"(exports) {
67031
67162
  "use strict";
67032
- var __createBinding = exports && exports.__createBinding || (Object.create ? function(o5, m4, k2, k22) {
67033
- if (k22 === void 0)
67034
- k22 = k2;
67035
- var desc = Object.getOwnPropertyDescriptor(m4, k2);
67036
- if (!desc || ("get" in desc ? !m4.__esModule : desc.writable || desc.configurable)) {
67037
- desc = { enumerable: true, get: function() {
67038
- return m4[k2];
67039
- } };
67040
- }
67041
- Object.defineProperty(o5, k22, desc);
67042
- } : function(o5, m4, k2, k22) {
67043
- if (k22 === void 0)
67044
- k22 = k2;
67045
- o5[k22] = m4[k2];
67046
- });
67047
- var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o5, v6) {
67048
- Object.defineProperty(o5, "default", { enumerable: true, value: v6 });
67049
- } : function(o5, v6) {
67050
- o5["default"] = v6;
67051
- });
67052
- var __importStar = exports && exports.__importStar || function(mod) {
67053
- if (mod && mod.__esModule)
67054
- return mod;
67055
- var result = {};
67056
- if (mod != null) {
67057
- for (var k2 in mod)
67058
- if (k2 !== "default" && Object.prototype.hasOwnProperty.call(mod, k2))
67059
- __createBinding(result, mod, k2);
67060
- }
67061
- __setModuleDefault(result, mod);
67062
- return result;
67063
- };
67064
67163
  Object.defineProperty(exports, "__esModule", { value: true });
67065
67164
  exports.walkForDocumentSymbols = void 0;
67066
67165
  var ParseTreeWalker_1 = require_ParseTreeWalker();
67067
- var parser3 = __importStar(require_MalloyParser());
67068
67166
  var parse_utils_1 = require_parse_utils();
67069
67167
  var DocumentSymbolWalker = class {
67070
67168
  constructor(translator, tokens, scopes, symbols4) {
@@ -67164,10 +67262,48 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
67164
67262
  exitExploreQueryDef(_pcx) {
67165
67263
  this.popScope();
67166
67264
  }
67265
+ getNestDefName(pcx) {
67266
+ const nameCx = pcx.queryName();
67267
+ if (nameCx) {
67268
+ return nameCx.id().text;
67269
+ }
67270
+ let result = void 0;
67271
+ let done = false;
67272
+ const vExprListen = {
67273
+ enterVArrow(pcx2) {
67274
+ pcx2.vExpr().enterRule(vExprListen);
67275
+ },
67276
+ enterVSeg(pcx2) {
67277
+ pcx2.segExpr().enterRule(segExprListen);
67278
+ }
67279
+ };
67280
+ const segExprListen = {
67281
+ enterSegField(pcx2) {
67282
+ const names = pcx2.fieldPath().fieldName();
67283
+ if (!done)
67284
+ result !== null && result !== void 0 ? result : result = names[names.length - 1].id().text;
67285
+ },
67286
+ enterSegParen(pcx2) {
67287
+ pcx2.vExpr().enterRule(vExprListen);
67288
+ },
67289
+ enterSegRefine(pcx2) {
67290
+ pcx2._lhs.enterRule(segExprListen);
67291
+ },
67292
+ enterSegOps() {
67293
+ result = void 0;
67294
+ done = true;
67295
+ }
67296
+ };
67297
+ pcx.vExpr().enterRule(vExprListen);
67298
+ return result;
67299
+ }
67167
67300
  handleNestEntry(pcx) {
67301
+ const name = this.getNestDefName(pcx);
67302
+ if (name === void 0)
67303
+ return;
67168
67304
  const symbol2 = {
67169
67305
  range: this.translator.rangeFromContext(pcx),
67170
- name: pcx instanceof parser3.NestExistingContext ? pcx.fieldPath().text : pcx.queryName().id().text,
67306
+ name,
67171
67307
  type: "query",
67172
67308
  children: []
67173
67309
  };
@@ -67177,12 +67313,11 @@ QUERY: ${(0, util_1.inspect)(opDesc, { breakLength: 72, depth: Infinity })}`);
67177
67313
  }
67178
67314
  return symbol2;
67179
67315
  }
67180
- enterNestExisting(pcx) {
67181
- this.handleNestEntry(pcx);
67182
- }
67183
67316
  enterNestDef(pcx) {
67184
67317
  const symbol2 = this.handleNestEntry(pcx);
67185
- this.scopes.push(symbol2);
67318
+ if (symbol2) {
67319
+ this.scopes.push(symbol2);
67320
+ }
67186
67321
  }
67187
67322
  exitNestDef(_pcx) {
67188
67323
  this.popScope();