@malloydata/malloy 0.0.15-dev221207234955 → 0.0.15-dev221208010845

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.
@@ -1730,21 +1730,10 @@ export declare class ExprUngroupContext extends FieldExprContext {
1730
1730
  accept<Result>(visitor: MalloyParserVisitor<Result>): Result;
1731
1731
  }
1732
1732
  export declare class PartialAllowedFieldExprContext extends ParserRuleContext {
1733
+ fieldExpr(): FieldExprContext;
1734
+ compareOp(): CompareOpContext | undefined;
1733
1735
  constructor(parent: ParserRuleContext | undefined, invokingState: number);
1734
1736
  get ruleIndex(): number;
1735
- copyFrom(ctx: PartialAllowedFieldExprContext): void;
1736
- }
1737
- export declare class ExprPartialCompareContext extends PartialAllowedFieldExprContext {
1738
- compareOp(): CompareOpContext;
1739
- fieldExpr(): FieldExprContext;
1740
- constructor(ctx: PartialAllowedFieldExprContext);
1741
- enterRule(listener: MalloyParserListener): void;
1742
- exitRule(listener: MalloyParserListener): void;
1743
- accept<Result>(visitor: MalloyParserVisitor<Result>): Result;
1744
- }
1745
- export declare class ExprNotPartialContext extends PartialAllowedFieldExprContext {
1746
- fieldExpr(): FieldExprContext;
1747
- constructor(ctx: PartialAllowedFieldExprContext);
1748
1737
  enterRule(listener: MalloyParserListener): void;
1749
1738
  exitRule(listener: MalloyParserListener): void;
1750
1739
  accept<Result>(visitor: MalloyParserVisitor<Result>): Result;
@@ -27,7 +27,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.DefExploreEditFieldContext = exports.DefExploreRenameContext = exports.DefExplorePrimaryKeyContext = exports.DefExploreWhereContext = exports.DefJoin_stubContext = exports.DefDeclare_stubContext = exports.DefExploreMeasureContext = exports.DefExploreDimensionContext = exports.ExploreStatementContext = exports.ExplorePropertiesContext = exports.ExploreNameContext = exports.ExploreNameDefContext = exports.SQLSourceNameContext = exports.QuerySourceContext = exports.TableSourceContext = exports.NamedSourceContext = exports.ExploreSourceContext = exports.ExploreContext = exports.ExploreDefinitionContext = exports.ExploreDefinitionListContext = exports.QueryNameContext = exports.ExploreQueryNameContext = exports.FilterShortcutContext = exports.QueryPropertiesContext = exports.ExploreTableContext = exports.PipeElementContext = exports.FirstSegmentContext = exports.PipelineFromNameContext = exports.ArrowQueryContext = exports.ExploreArrowQueryContext = exports.QueryContext = exports.RefineOperatorContext = exports.TopLevelQueryDefContext = exports.TopLevelQueryDefsContext = exports.ImportURLContext = exports.ImportStatementContext = exports.SqlInterpolationContext = exports.SqlStringContext = exports.BlockSQLDefContext = exports.SqlBlockContext = exports.DefineSQLStatementContext = exports.TopLevelAnonQueryDefContext = exports.AnonymousQueryContext = exports.NamedQueries_stubContext = exports.DefineQueryContext = exports.ExploreKeywordContext = exports.DefineExploreStatementContext = exports.MalloyStatementContext = exports.MalloyDocumentContext = exports.MalloyParser = void 0;
28
28
  exports.IndexElementContext = exports.TopStatementContext = exports.BySpecContext = exports.LimitStatementContext = exports.OrderBySpecContext = exports.OrderingContext = exports.OrderByStatementContext = exports.ProjectStatementContext = exports.AggregateStatementContext = exports.NestDefContext = exports.NestExistingContext = exports.NestEntryContext = exports.NestedQueryListContext = exports.NestStatementContext = exports.QueryFieldDefContext = exports.QueryFieldRefContext = exports.QueryFieldEntryContext = exports.DimensionDefContext = exports.QueryFieldListContext = exports.GroupByStatementContext = exports.QueryStatementContext = exports.ExploreQueryDefContext = exports.ExploreQueryNameDefContext = exports.SubQueryDefListContext = exports.HavingStatementContext = exports.WhereStatementContext = exports.FilterClauseListContext = exports.FilterByWhereContext = exports.FilterByShortcutContext = exports.FilteredByContext = exports.FilterStatementContext = exports.JoinExpressionContext = exports.JoinOnContext = exports.JoinWithContext = exports.JoinDefContext = exports.JoinListContext = exports.DefJoinCrossContext = exports.DefJoinManyContext = exports.DefJoinOneContext = exports.JoinStatementContext = exports.DeclareStatementContext = exports.MeasureDefContext = exports.JoinNameDefContext = exports.FieldNameDefContext = exports.FieldDefContext = exports.MeasureDefListContext = exports.DimensionDefListContext = exports.ExploreRenameDefContext = exports.RenameListContext = exports.DefExploreQueryContext = void 0;
29
29
  exports.ExprUngroupContext = exports.ExprPickContext = exports.ExprFuncContext = exports.ExprExprContext = exports.ExprAggregateContext = exports.ExprCountDisinctContext = exports.ExprCastContext = exports.ExprLogicalContext = exports.ExprNotContext = exports.ExprApplyContext = exports.ExprCompareContext = exports.ExprLogicalTreeContext = exports.ExprForRangeContext = exports.ExprRangeContext = exports.ExprAddSubContext = exports.ExprMulDivContext = exports.ExprSafeCastContext = exports.ExprTimeTruncContext = exports.ExprDurationContext = exports.ExprMinusContext = exports.ExprLiteralContext = exports.ExprFilterContext = exports.ExprFieldPathContext = exports.FieldExprContext = exports.UngroupContext = exports.TimeframeContext = exports.IdContext = exports.TableNameContext = exports.LiteralYearContext = exports.LiteralQuarterContext = exports.LiteralMonthContext = exports.LiteralWeekContext = exports.LiteralDayContext = exports.LiteralTimestampContext = exports.DateLiteralContext = exports.ExprNowContext = exports.ExprRegexContext = exports.ExprBoolContext = exports.ExprNULLContext = exports.ExprTimeContext = exports.ExprNumberContext = exports.ExprStringContext = exports.LiteralContext = exports.CompareOpContext = exports.MalloyTypeContext = exports.AggregateContext = exports.SampleSpecContext = exports.SampleStatementContext = exports.IndexStatementContext = exports.IndexFieldsContext = void 0;
30
- exports.ConnectionNameContext = exports.NameSQLBlockContext = exports.SqlExploreNameRefContext = exports.JsonArrayContext = exports.JsonPropertyContext = exports.JsonObjectContext = exports.JsonValueContext = exports.JsonContext = exports.JustExprContext = exports.FieldNameContext = exports.JoinNameContext = exports.FieldPathContext = exports.NewMemberContext = exports.WildMemberContext = exports.NameMemberContext = exports.CollectionMemberContext = exports.FieldCollectionContext = exports.FieldNameListContext = exports.ArgumentListContext = exports.PickContext = exports.PickStatementContext = exports.ExprNotPartialContext = exports.ExprPartialCompareContext = exports.PartialAllowedFieldExprContext = void 0;
30
+ exports.ConnectionNameContext = exports.NameSQLBlockContext = exports.SqlExploreNameRefContext = exports.JsonArrayContext = exports.JsonPropertyContext = exports.JsonObjectContext = exports.JsonValueContext = exports.JsonContext = exports.JustExprContext = exports.FieldNameContext = exports.JoinNameContext = exports.FieldPathContext = exports.NewMemberContext = exports.WildMemberContext = exports.NameMemberContext = exports.CollectionMemberContext = exports.FieldCollectionContext = exports.FieldNameListContext = exports.ArgumentListContext = exports.PickContext = exports.PickStatementContext = exports.PartialAllowedFieldExprContext = void 0;
31
31
  const ATN_1 = require("antlr4ts/atn/ATN");
32
32
  const ATNDeserializer_1 = require("antlr4ts/atn/ATNDeserializer");
33
33
  const FailedPredicateException_1 = require("antlr4ts/FailedPredicateException");
@@ -4424,72 +4424,21 @@ class MalloyParser extends Parser_1.Parser {
4424
4424
  partialAllowedFieldExpr() {
4425
4425
  let _localctx = new PartialAllowedFieldExprContext(this._ctx, this.state);
4426
4426
  this.enterRule(_localctx, 170, MalloyParser.RULE_partialAllowedFieldExpr);
4427
+ let _la;
4427
4428
  try {
4428
- this.state = 866;
4429
- this._errHandler.sync(this);
4430
- switch (this._input.LA(1)) {
4431
- case MalloyParser.LT:
4432
- case MalloyParser.GT:
4433
- case MalloyParser.EQ:
4434
- case MalloyParser.NE:
4435
- case MalloyParser.LTE:
4436
- case MalloyParser.GTE:
4437
- case MalloyParser.NOT_MATCH:
4438
- case MalloyParser.MATCH:
4439
- _localctx = new ExprPartialCompareContext(_localctx);
4440
- this.enterOuterAlt(_localctx, 1);
4429
+ this.enterOuterAlt(_localctx, 1);
4430
+ {
4431
+ this.state = 863;
4432
+ this._errHandler.sync(this);
4433
+ _la = this._input.LA(1);
4434
+ if (((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & ((1 << (MalloyParser.LT - 102)) | (1 << (MalloyParser.GT - 102)) | (1 << (MalloyParser.EQ - 102)) | (1 << (MalloyParser.NE - 102)) | (1 << (MalloyParser.LTE - 102)) | (1 << (MalloyParser.GTE - 102)) | (1 << (MalloyParser.NOT_MATCH - 102)) | (1 << (MalloyParser.MATCH - 102)))) !== 0)) {
4441
4435
  {
4442
4436
  this.state = 862;
4443
4437
  this.compareOp();
4444
- this.state = 863;
4445
- this.fieldExpr(0);
4446
4438
  }
4447
- break;
4448
- case MalloyParser.ALL:
4449
- case MalloyParser.AVG:
4450
- case MalloyParser.CAST:
4451
- case MalloyParser.COUNT:
4452
- case MalloyParser.DAY:
4453
- case MalloyParser.EXCLUDE:
4454
- case MalloyParser.FALSE:
4455
- case MalloyParser.HOUR:
4456
- case MalloyParser.MAX:
4457
- case MalloyParser.MIN:
4458
- case MalloyParser.MINUTE:
4459
- case MalloyParser.MONTH:
4460
- case MalloyParser.NOT:
4461
- case MalloyParser.NOW:
4462
- case MalloyParser.NULL:
4463
- case MalloyParser.PICK:
4464
- case MalloyParser.QUARTER:
4465
- case MalloyParser.SECOND:
4466
- case MalloyParser.SUM:
4467
- case MalloyParser.TRUE:
4468
- case MalloyParser.WEEK:
4469
- case MalloyParser.YEAR:
4470
- case MalloyParser.HACKY_REGEX:
4471
- case MalloyParser.STRING_LITERAL:
4472
- case MalloyParser.OPAREN:
4473
- case MalloyParser.MINUS:
4474
- case MalloyParser.LITERAL_TIMESTAMP:
4475
- case MalloyParser.LITERAL_DAY:
4476
- case MalloyParser.LITERAL_QUARTER:
4477
- case MalloyParser.LITERAL_MONTH:
4478
- case MalloyParser.LITERAL_WEEK:
4479
- case MalloyParser.LITERAL_YEAR:
4480
- case MalloyParser.IDENTIFIER:
4481
- case MalloyParser.INTEGER_LITERAL:
4482
- case MalloyParser.NUMERIC_LITERAL:
4483
- case MalloyParser.OBJECT_NAME_LITERAL:
4484
- _localctx = new ExprNotPartialContext(_localctx);
4485
- this.enterOuterAlt(_localctx, 2);
4486
- {
4487
- this.state = 865;
4488
- this.fieldExpr(0);
4489
- }
4490
- break;
4491
- default:
4492
- throw new NoViableAltException_1.NoViableAltException(this);
4439
+ }
4440
+ this.state = 865;
4441
+ this.fieldExpr(0);
4493
4442
  }
4494
4443
  }
4495
4444
  catch (re) {
@@ -4515,7 +4464,7 @@ class MalloyParser extends Parser_1.Parser {
4515
4464
  let _alt;
4516
4465
  this.enterOuterAlt(_localctx, 1);
4517
4466
  {
4518
- this.state = 869;
4467
+ this.state = 868;
4519
4468
  this._errHandler.sync(this);
4520
4469
  _alt = 1;
4521
4470
  do {
@@ -4523,7 +4472,7 @@ class MalloyParser extends Parser_1.Parser {
4523
4472
  case 1:
4524
4473
  {
4525
4474
  {
4526
- this.state = 868;
4475
+ this.state = 867;
4527
4476
  this.pick();
4528
4477
  }
4529
4478
  }
@@ -4531,18 +4480,18 @@ class MalloyParser extends Parser_1.Parser {
4531
4480
  default:
4532
4481
  throw new NoViableAltException_1.NoViableAltException(this);
4533
4482
  }
4534
- this.state = 871;
4483
+ this.state = 870;
4535
4484
  this._errHandler.sync(this);
4536
4485
  _alt = this.interpreter.adaptivePredict(this._input, 93, this._ctx);
4537
4486
  } while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER);
4538
- this.state = 875;
4487
+ this.state = 874;
4539
4488
  this._errHandler.sync(this);
4540
4489
  switch (this.interpreter.adaptivePredict(this._input, 94, this._ctx)) {
4541
4490
  case 1:
4542
4491
  {
4543
- this.state = 873;
4492
+ this.state = 872;
4544
4493
  this.match(MalloyParser.ELSE);
4545
- this.state = 874;
4494
+ this.state = 873;
4546
4495
  _localctx._pickElse = this.fieldExpr(0);
4547
4496
  }
4548
4497
  break;
@@ -4572,20 +4521,20 @@ class MalloyParser extends Parser_1.Parser {
4572
4521
  try {
4573
4522
  this.enterOuterAlt(_localctx, 1);
4574
4523
  {
4575
- this.state = 877;
4524
+ this.state = 876;
4576
4525
  this.match(MalloyParser.PICK);
4577
- this.state = 879;
4526
+ this.state = 878;
4578
4527
  this._errHandler.sync(this);
4579
4528
  _la = this._input.LA(1);
4580
4529
  if (((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & ((1 << (MalloyParser.ALL - 30)) | (1 << (MalloyParser.AVG - 30)) | (1 << (MalloyParser.CAST - 30)) | (1 << (MalloyParser.COUNT - 30)) | (1 << (MalloyParser.DAY - 30)) | (1 << (MalloyParser.EXCLUDE - 30)) | (1 << (MalloyParser.FALSE - 30)) | (1 << (MalloyParser.HOUR - 30)) | (1 << (MalloyParser.MAX - 30)) | (1 << (MalloyParser.MIN - 30)) | (1 << (MalloyParser.MINUTE - 30)) | (1 << (MalloyParser.MONTH - 30)))) !== 0) || ((((_la - 62)) & ~0x1F) === 0 && ((1 << (_la - 62)) & ((1 << (MalloyParser.NOT - 62)) | (1 << (MalloyParser.NOW - 62)) | (1 << (MalloyParser.NULL - 62)) | (1 << (MalloyParser.PICK - 62)) | (1 << (MalloyParser.QUARTER - 62)) | (1 << (MalloyParser.SECOND - 62)) | (1 << (MalloyParser.SUM - 62)) | (1 << (MalloyParser.TRUE - 62)) | (1 << (MalloyParser.WEEK - 62)) | (1 << (MalloyParser.YEAR - 62)) | (1 << (MalloyParser.HACKY_REGEX - 62)) | (1 << (MalloyParser.STRING_LITERAL - 62)) | (1 << (MalloyParser.OPAREN - 62)))) !== 0) || ((((_la - 109)) & ~0x1F) === 0 && ((1 << (_la - 109)) & ((1 << (MalloyParser.MINUS - 109)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 109)) | (1 << (MalloyParser.LITERAL_DAY - 109)) | (1 << (MalloyParser.LITERAL_QUARTER - 109)) | (1 << (MalloyParser.LITERAL_MONTH - 109)) | (1 << (MalloyParser.LITERAL_WEEK - 109)) | (1 << (MalloyParser.LITERAL_YEAR - 109)) | (1 << (MalloyParser.IDENTIFIER - 109)) | (1 << (MalloyParser.INTEGER_LITERAL - 109)) | (1 << (MalloyParser.NUMERIC_LITERAL - 109)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 109)))) !== 0)) {
4581
4530
  {
4582
- this.state = 878;
4531
+ this.state = 877;
4583
4532
  _localctx._pickValue = this.fieldExpr(0);
4584
4533
  }
4585
4534
  }
4586
- this.state = 881;
4535
+ this.state = 880;
4587
4536
  this.match(MalloyParser.WHEN);
4588
- this.state = 882;
4537
+ this.state = 881;
4589
4538
  _localctx._pickWhen = this.partialAllowedFieldExpr();
4590
4539
  }
4591
4540
  }
@@ -4613,32 +4562,32 @@ class MalloyParser extends Parser_1.Parser {
4613
4562
  let _alt;
4614
4563
  this.enterOuterAlt(_localctx, 1);
4615
4564
  {
4616
- this.state = 884;
4565
+ this.state = 883;
4617
4566
  this.fieldExpr(0);
4618
- this.state = 889;
4567
+ this.state = 888;
4619
4568
  this._errHandler.sync(this);
4620
4569
  _alt = this.interpreter.adaptivePredict(this._input, 96, this._ctx);
4621
4570
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
4622
4571
  if (_alt === 1) {
4623
4572
  {
4624
4573
  {
4625
- this.state = 885;
4574
+ this.state = 884;
4626
4575
  this.match(MalloyParser.COMMA);
4627
- this.state = 886;
4576
+ this.state = 885;
4628
4577
  this.fieldExpr(0);
4629
4578
  }
4630
4579
  }
4631
4580
  }
4632
- this.state = 891;
4581
+ this.state = 890;
4633
4582
  this._errHandler.sync(this);
4634
4583
  _alt = this.interpreter.adaptivePredict(this._input, 96, this._ctx);
4635
4584
  }
4636
- this.state = 893;
4585
+ this.state = 892;
4637
4586
  this._errHandler.sync(this);
4638
4587
  _la = this._input.LA(1);
4639
4588
  if (_la === MalloyParser.COMMA) {
4640
4589
  {
4641
- this.state = 892;
4590
+ this.state = 891;
4642
4591
  this.match(MalloyParser.COMMA);
4643
4592
  }
4644
4593
  }
@@ -4667,28 +4616,28 @@ class MalloyParser extends Parser_1.Parser {
4667
4616
  try {
4668
4617
  this.enterOuterAlt(_localctx, 1);
4669
4618
  {
4670
- this.state = 895;
4619
+ this.state = 894;
4671
4620
  this.fieldName();
4672
- this.state = 902;
4621
+ this.state = 901;
4673
4622
  this._errHandler.sync(this);
4674
4623
  _la = this._input.LA(1);
4675
4624
  while (((((_la - 100)) & ~0x1F) === 0 && ((1 << (_la - 100)) & ((1 << (MalloyParser.COMMA - 100)) | (1 << (MalloyParser.IDENTIFIER - 100)) | (1 << (MalloyParser.OBJECT_NAME_LITERAL - 100)))) !== 0)) {
4676
4625
  {
4677
4626
  {
4678
- this.state = 897;
4627
+ this.state = 896;
4679
4628
  this._errHandler.sync(this);
4680
4629
  _la = this._input.LA(1);
4681
4630
  if (_la === MalloyParser.COMMA) {
4682
4631
  {
4683
- this.state = 896;
4632
+ this.state = 895;
4684
4633
  this.match(MalloyParser.COMMA);
4685
4634
  }
4686
4635
  }
4687
- this.state = 899;
4636
+ this.state = 898;
4688
4637
  this.fieldName();
4689
4638
  }
4690
4639
  }
4691
- this.state = 904;
4640
+ this.state = 903;
4692
4641
  this._errHandler.sync(this);
4693
4642
  _la = this._input.LA(1);
4694
4643
  }
@@ -4718,39 +4667,39 @@ class MalloyParser extends Parser_1.Parser {
4718
4667
  let _alt;
4719
4668
  this.enterOuterAlt(_localctx, 1);
4720
4669
  {
4721
- this.state = 905;
4670
+ this.state = 904;
4722
4671
  this.collectionMember();
4723
- this.state = 912;
4672
+ this.state = 911;
4724
4673
  this._errHandler.sync(this);
4725
4674
  _alt = this.interpreter.adaptivePredict(this._input, 101, this._ctx);
4726
4675
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
4727
4676
  if (_alt === 1) {
4728
4677
  {
4729
4678
  {
4730
- this.state = 907;
4679
+ this.state = 906;
4731
4680
  this._errHandler.sync(this);
4732
4681
  _la = this._input.LA(1);
4733
4682
  if (_la === MalloyParser.COMMA) {
4734
4683
  {
4735
- this.state = 906;
4684
+ this.state = 905;
4736
4685
  this.match(MalloyParser.COMMA);
4737
4686
  }
4738
4687
  }
4739
- this.state = 909;
4688
+ this.state = 908;
4740
4689
  this.collectionMember();
4741
4690
  }
4742
4691
  }
4743
4692
  }
4744
- this.state = 914;
4693
+ this.state = 913;
4745
4694
  this._errHandler.sync(this);
4746
4695
  _alt = this.interpreter.adaptivePredict(this._input, 101, this._ctx);
4747
4696
  }
4748
- this.state = 916;
4697
+ this.state = 915;
4749
4698
  this._errHandler.sync(this);
4750
4699
  _la = this._input.LA(1);
4751
4700
  if (_la === MalloyParser.COMMA) {
4752
4701
  {
4753
- this.state = 915;
4702
+ this.state = 914;
4754
4703
  this.match(MalloyParser.COMMA);
4755
4704
  }
4756
4705
  }
@@ -4777,14 +4726,14 @@ class MalloyParser extends Parser_1.Parser {
4777
4726
  this.enterRule(_localctx, 182, MalloyParser.RULE_collectionMember);
4778
4727
  let _la;
4779
4728
  try {
4780
- this.state = 926;
4729
+ this.state = 925;
4781
4730
  this._errHandler.sync(this);
4782
4731
  switch (this.interpreter.adaptivePredict(this._input, 104, this._ctx)) {
4783
4732
  case 1:
4784
4733
  _localctx = new NameMemberContext(_localctx);
4785
4734
  this.enterOuterAlt(_localctx, 1);
4786
4735
  {
4787
- this.state = 918;
4736
+ this.state = 917;
4788
4737
  this.fieldPath();
4789
4738
  }
4790
4739
  break;
@@ -4792,18 +4741,18 @@ class MalloyParser extends Parser_1.Parser {
4792
4741
  _localctx = new WildMemberContext(_localctx);
4793
4742
  this.enterOuterAlt(_localctx, 2);
4794
4743
  {
4795
- this.state = 922;
4744
+ this.state = 921;
4796
4745
  this._errHandler.sync(this);
4797
4746
  _la = this._input.LA(1);
4798
4747
  if (_la === MalloyParser.IDENTIFIER || _la === MalloyParser.OBJECT_NAME_LITERAL) {
4799
4748
  {
4800
- this.state = 919;
4749
+ this.state = 918;
4801
4750
  this.fieldPath();
4802
- this.state = 920;
4751
+ this.state = 919;
4803
4752
  this.match(MalloyParser.DOT);
4804
4753
  }
4805
4754
  }
4806
- this.state = 924;
4755
+ this.state = 923;
4807
4756
  _la = this._input.LA(1);
4808
4757
  if (!(_la === MalloyParser.STAR || _la === MalloyParser.STARSTAR)) {
4809
4758
  this._errHandler.recoverInline(this);
@@ -4821,7 +4770,7 @@ class MalloyParser extends Parser_1.Parser {
4821
4770
  _localctx = new NewMemberContext(_localctx);
4822
4771
  this.enterOuterAlt(_localctx, 3);
4823
4772
  {
4824
- this.state = 925;
4773
+ this.state = 924;
4825
4774
  this.fieldDef();
4826
4775
  }
4827
4776
  break;
@@ -4850,23 +4799,23 @@ class MalloyParser extends Parser_1.Parser {
4850
4799
  let _alt;
4851
4800
  this.enterOuterAlt(_localctx, 1);
4852
4801
  {
4853
- this.state = 928;
4802
+ this.state = 927;
4854
4803
  this.fieldName();
4855
- this.state = 933;
4804
+ this.state = 932;
4856
4805
  this._errHandler.sync(this);
4857
4806
  _alt = this.interpreter.adaptivePredict(this._input, 105, this._ctx);
4858
4807
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
4859
4808
  if (_alt === 1) {
4860
4809
  {
4861
4810
  {
4862
- this.state = 929;
4811
+ this.state = 928;
4863
4812
  this.match(MalloyParser.DOT);
4864
- this.state = 930;
4813
+ this.state = 929;
4865
4814
  this.fieldName();
4866
4815
  }
4867
4816
  }
4868
4817
  }
4869
- this.state = 935;
4818
+ this.state = 934;
4870
4819
  this._errHandler.sync(this);
4871
4820
  _alt = this.interpreter.adaptivePredict(this._input, 105, this._ctx);
4872
4821
  }
@@ -4894,7 +4843,7 @@ class MalloyParser extends Parser_1.Parser {
4894
4843
  try {
4895
4844
  this.enterOuterAlt(_localctx, 1);
4896
4845
  {
4897
- this.state = 936;
4846
+ this.state = 935;
4898
4847
  this.id();
4899
4848
  }
4900
4849
  }
@@ -4920,7 +4869,7 @@ class MalloyParser extends Parser_1.Parser {
4920
4869
  try {
4921
4870
  this.enterOuterAlt(_localctx, 1);
4922
4871
  {
4923
- this.state = 938;
4872
+ this.state = 937;
4924
4873
  this.id();
4925
4874
  }
4926
4875
  }
@@ -4946,9 +4895,9 @@ class MalloyParser extends Parser_1.Parser {
4946
4895
  try {
4947
4896
  this.enterOuterAlt(_localctx, 1);
4948
4897
  {
4949
- this.state = 940;
4898
+ this.state = 939;
4950
4899
  this.fieldExpr(0);
4951
- this.state = 941;
4900
+ this.state = 940;
4952
4901
  this.match(MalloyParser.EOF);
4953
4902
  }
4954
4903
  }
@@ -4974,7 +4923,7 @@ class MalloyParser extends Parser_1.Parser {
4974
4923
  try {
4975
4924
  this.enterOuterAlt(_localctx, 1);
4976
4925
  {
4977
- this.state = 943;
4926
+ this.state = 942;
4978
4927
  this.jsonValue();
4979
4928
  }
4980
4929
  }
@@ -4998,62 +4947,62 @@ class MalloyParser extends Parser_1.Parser {
4998
4947
  let _localctx = new JsonValueContext(this._ctx, this.state);
4999
4948
  this.enterRule(_localctx, 194, MalloyParser.RULE_jsonValue);
5000
4949
  try {
5001
- this.state = 953;
4950
+ this.state = 952;
5002
4951
  this._errHandler.sync(this);
5003
4952
  switch (this._input.LA(1)) {
5004
4953
  case MalloyParser.JSON_STRING:
5005
4954
  this.enterOuterAlt(_localctx, 1);
5006
4955
  {
5007
- this.state = 945;
4956
+ this.state = 944;
5008
4957
  this.match(MalloyParser.JSON_STRING);
5009
4958
  }
5010
4959
  break;
5011
4960
  case MalloyParser.INTEGER_LITERAL:
5012
4961
  this.enterOuterAlt(_localctx, 2);
5013
4962
  {
5014
- this.state = 946;
4963
+ this.state = 945;
5015
4964
  this.match(MalloyParser.INTEGER_LITERAL);
5016
4965
  }
5017
4966
  break;
5018
4967
  case MalloyParser.NUMERIC_LITERAL:
5019
4968
  this.enterOuterAlt(_localctx, 3);
5020
4969
  {
5021
- this.state = 947;
4970
+ this.state = 946;
5022
4971
  this.match(MalloyParser.NUMERIC_LITERAL);
5023
4972
  }
5024
4973
  break;
5025
4974
  case MalloyParser.OCURLY:
5026
4975
  this.enterOuterAlt(_localctx, 4);
5027
4976
  {
5028
- this.state = 948;
4977
+ this.state = 947;
5029
4978
  this.jsonObject();
5030
4979
  }
5031
4980
  break;
5032
4981
  case MalloyParser.OBRACK:
5033
4982
  this.enterOuterAlt(_localctx, 5);
5034
4983
  {
5035
- this.state = 949;
4984
+ this.state = 948;
5036
4985
  this.jsonArray();
5037
4986
  }
5038
4987
  break;
5039
4988
  case MalloyParser.TRUE:
5040
4989
  this.enterOuterAlt(_localctx, 6);
5041
4990
  {
5042
- this.state = 950;
4991
+ this.state = 949;
5043
4992
  this.match(MalloyParser.TRUE);
5044
4993
  }
5045
4994
  break;
5046
4995
  case MalloyParser.FALSE:
5047
4996
  this.enterOuterAlt(_localctx, 7);
5048
4997
  {
5049
- this.state = 951;
4998
+ this.state = 950;
5050
4999
  this.match(MalloyParser.FALSE);
5051
5000
  }
5052
5001
  break;
5053
5002
  case MalloyParser.NULL:
5054
5003
  this.enterOuterAlt(_localctx, 8);
5055
5004
  {
5056
- this.state = 952;
5005
+ this.state = 951;
5057
5006
  this.match(MalloyParser.NULL);
5058
5007
  }
5059
5008
  break;
@@ -5082,42 +5031,42 @@ class MalloyParser extends Parser_1.Parser {
5082
5031
  this.enterRule(_localctx, 196, MalloyParser.RULE_jsonObject);
5083
5032
  let _la;
5084
5033
  try {
5085
- this.state = 968;
5034
+ this.state = 967;
5086
5035
  this._errHandler.sync(this);
5087
5036
  switch (this.interpreter.adaptivePredict(this._input, 108, this._ctx)) {
5088
5037
  case 1:
5089
5038
  this.enterOuterAlt(_localctx, 1);
5090
5039
  {
5091
- this.state = 955;
5040
+ this.state = 954;
5092
5041
  this.match(MalloyParser.OCURLY);
5093
- this.state = 956;
5042
+ this.state = 955;
5094
5043
  this.jsonProperty();
5095
- this.state = 961;
5044
+ this.state = 960;
5096
5045
  this._errHandler.sync(this);
5097
5046
  _la = this._input.LA(1);
5098
5047
  while (_la === MalloyParser.COMMA) {
5099
5048
  {
5100
5049
  {
5101
- this.state = 957;
5050
+ this.state = 956;
5102
5051
  this.match(MalloyParser.COMMA);
5103
- this.state = 958;
5052
+ this.state = 957;
5104
5053
  this.jsonProperty();
5105
5054
  }
5106
5055
  }
5107
- this.state = 963;
5056
+ this.state = 962;
5108
5057
  this._errHandler.sync(this);
5109
5058
  _la = this._input.LA(1);
5110
5059
  }
5111
- this.state = 964;
5060
+ this.state = 963;
5112
5061
  this.match(MalloyParser.CCURLY);
5113
5062
  }
5114
5063
  break;
5115
5064
  case 2:
5116
5065
  this.enterOuterAlt(_localctx, 2);
5117
5066
  {
5118
- this.state = 966;
5067
+ this.state = 965;
5119
5068
  this.match(MalloyParser.OCURLY);
5120
- this.state = 967;
5069
+ this.state = 966;
5121
5070
  this.match(MalloyParser.CCURLY);
5122
5071
  }
5123
5072
  break;
@@ -5145,11 +5094,11 @@ class MalloyParser extends Parser_1.Parser {
5145
5094
  try {
5146
5095
  this.enterOuterAlt(_localctx, 1);
5147
5096
  {
5148
- this.state = 970;
5097
+ this.state = 969;
5149
5098
  this.match(MalloyParser.JSON_STRING);
5150
- this.state = 971;
5099
+ this.state = 970;
5151
5100
  this.match(MalloyParser.COLON);
5152
- this.state = 972;
5101
+ this.state = 971;
5153
5102
  this.jsonValue();
5154
5103
  }
5155
5104
  }
@@ -5174,42 +5123,42 @@ class MalloyParser extends Parser_1.Parser {
5174
5123
  this.enterRule(_localctx, 200, MalloyParser.RULE_jsonArray);
5175
5124
  let _la;
5176
5125
  try {
5177
- this.state = 987;
5126
+ this.state = 986;
5178
5127
  this._errHandler.sync(this);
5179
5128
  switch (this.interpreter.adaptivePredict(this._input, 110, this._ctx)) {
5180
5129
  case 1:
5181
5130
  this.enterOuterAlt(_localctx, 1);
5182
5131
  {
5183
- this.state = 974;
5132
+ this.state = 973;
5184
5133
  this.match(MalloyParser.OBRACK);
5185
- this.state = 975;
5134
+ this.state = 974;
5186
5135
  this.jsonValue();
5187
- this.state = 980;
5136
+ this.state = 979;
5188
5137
  this._errHandler.sync(this);
5189
5138
  _la = this._input.LA(1);
5190
5139
  while (_la === MalloyParser.COMMA) {
5191
5140
  {
5192
5141
  {
5193
- this.state = 976;
5142
+ this.state = 975;
5194
5143
  this.match(MalloyParser.COMMA);
5195
- this.state = 977;
5144
+ this.state = 976;
5196
5145
  this.jsonValue();
5197
5146
  }
5198
5147
  }
5199
- this.state = 982;
5148
+ this.state = 981;
5200
5149
  this._errHandler.sync(this);
5201
5150
  _la = this._input.LA(1);
5202
5151
  }
5203
- this.state = 983;
5152
+ this.state = 982;
5204
5153
  this.match(MalloyParser.CBRACK);
5205
5154
  }
5206
5155
  break;
5207
5156
  case 2:
5208
5157
  this.enterOuterAlt(_localctx, 2);
5209
5158
  {
5210
- this.state = 985;
5159
+ this.state = 984;
5211
5160
  this.match(MalloyParser.OBRACK);
5212
- this.state = 986;
5161
+ this.state = 985;
5213
5162
  this.match(MalloyParser.CBRACK);
5214
5163
  }
5215
5164
  break;
@@ -5237,7 +5186,7 @@ class MalloyParser extends Parser_1.Parser {
5237
5186
  try {
5238
5187
  this.enterOuterAlt(_localctx, 1);
5239
5188
  {
5240
- this.state = 989;
5189
+ this.state = 988;
5241
5190
  this.id();
5242
5191
  }
5243
5192
  }
@@ -5263,7 +5212,7 @@ class MalloyParser extends Parser_1.Parser {
5263
5212
  try {
5264
5213
  this.enterOuterAlt(_localctx, 1);
5265
5214
  {
5266
- this.state = 991;
5215
+ this.state = 990;
5267
5216
  this.id();
5268
5217
  }
5269
5218
  }
@@ -5289,7 +5238,7 @@ class MalloyParser extends Parser_1.Parser {
5289
5238
  try {
5290
5239
  this.enterOuterAlt(_localctx, 1);
5291
5240
  {
5292
- this.state = 993;
5241
+ this.state = 992;
5293
5242
  this.match(MalloyParser.JSON_STRING);
5294
5243
  }
5295
5244
  }
@@ -5661,7 +5610,7 @@ MalloyParser._SYMBOLIC_NAMES = [
5661
5610
  ];
5662
5611
  MalloyParser.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(MalloyParser._LITERAL_NAMES, MalloyParser._SYMBOLIC_NAMES, []);
5663
5612
  MalloyParser._serializedATNSegments = 2;
5664
- MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\x8B\u03E6\x04" +
5613
+ MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\x8B\u03E5\x04" +
5665
5614
  "\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04" +
5666
5615
  "\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r" +
5667
5616
  "\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12" +
@@ -5735,17 +5684,17 @@ MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\
5735
5684
  "V\u0332\nV\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03" +
5736
5685
  "V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03" +
5737
5686
  "V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03V\x03" +
5738
- "V\x07V\u035C\nV\fV\x0EV\u035F\vV\x03W\x03W\x03W\x03W\x05W\u0365\nW\x03" +
5739
- "X\x06X\u0368\nX\rX\x0EX\u0369\x03X\x03X\x05X\u036E\nX\x03Y\x03Y\x05Y\u0372" +
5740
- "\nY\x03Y\x03Y\x03Y\x03Z\x03Z\x03Z\x07Z\u037A\nZ\fZ\x0EZ\u037D\vZ\x03Z" +
5741
- "\x05Z\u0380\nZ\x03[\x03[\x05[\u0384\n[\x03[\x07[\u0387\n[\f[\x0E[\u038A" +
5742
- "\v[\x03\\\x03\\\x05\\\u038E\n\\\x03\\\x07\\\u0391\n\\\f\\\x0E\\\u0394" +
5743
- "\v\\\x03\\\x05\\\u0397\n\\\x03]\x03]\x03]\x03]\x05]\u039D\n]\x03]\x03" +
5744
- "]\x05]\u03A1\n]\x03^\x03^\x03^\x07^\u03A6\n^\f^\x0E^\u03A9\v^\x03_\x03" +
5687
+ "V\x07V\u035C\nV\fV\x0EV\u035F\vV\x03W\x05W\u0362\nW\x03W\x03W\x03X\x06" +
5688
+ "X\u0367\nX\rX\x0EX\u0368\x03X\x03X\x05X\u036D\nX\x03Y\x03Y\x05Y\u0371" +
5689
+ "\nY\x03Y\x03Y\x03Y\x03Z\x03Z\x03Z\x07Z\u0379\nZ\fZ\x0EZ\u037C\vZ\x03Z" +
5690
+ "\x05Z\u037F\nZ\x03[\x03[\x05[\u0383\n[\x03[\x07[\u0386\n[\f[\x0E[\u0389" +
5691
+ "\v[\x03\\\x03\\\x05\\\u038D\n\\\x03\\\x07\\\u0390\n\\\f\\\x0E\\\u0393" +
5692
+ "\v\\\x03\\\x05\\\u0396\n\\\x03]\x03]\x03]\x03]\x05]\u039C\n]\x03]\x03" +
5693
+ "]\x05]\u03A0\n]\x03^\x03^\x03^\x07^\u03A5\n^\f^\x0E^\u03A8\v^\x03_\x03" +
5745
5694
  "_\x03`\x03`\x03a\x03a\x03a\x03b\x03b\x03c\x03c\x03c\x03c\x03c\x03c\x03" +
5746
- "c\x03c\x05c\u03BC\nc\x03d\x03d\x03d\x03d\x07d\u03C2\nd\fd\x0Ed\u03C5\v" +
5747
- "d\x03d\x03d\x03d\x03d\x05d\u03CB\nd\x03e\x03e\x03e\x03e\x03f\x03f\x03" +
5748
- "f\x03f\x07f\u03D5\nf\ff\x0Ef\u03D8\vf\x03f\x03f\x03f\x03f\x05f\u03DE\n" +
5695
+ "c\x03c\x05c\u03BB\nc\x03d\x03d\x03d\x03d\x07d\u03C1\nd\fd\x0Ed\u03C4\v" +
5696
+ "d\x03d\x03d\x03d\x03d\x05d\u03CA\nd\x03e\x03e\x03e\x03e\x03f\x03f\x03" +
5697
+ "f\x03f\x07f\u03D4\nf\ff\x0Ef\u03D7\vf\x03f\x03f\x03f\x03f\x05f\u03DD\n" +
5749
5698
  "f\x03g\x03g\x03h\x03h\x03i\x03i\x03i\x02\x02\x03\xAAj\x02\x02\x04\x02" +
5750
5699
  "\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10\x02\x12\x02\x14\x02\x16\x02\x18" +
5751
5700
  "\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02$\x02&\x02(\x02*\x02,\x02.\x02" +
@@ -5760,7 +5709,7 @@ MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\
5760
5709
  "\t\t\x04\x02##--\x05\x0222QQ\x7F\x80\x06\x02$$**<=KK\x07\x02%%++CCJJO" +
5761
5710
  "O\x04\x02hmuv\x03\x02\x80\x81\x04\x0222QQ\x04\x02~~\x82\x82\b\x02,,77" +
5762
5711
  ">?HISSVV\x04\x02 11\x05\x02pprrww\x03\x02no\x04\x02!!EE\x04\x02[[ss\x04" +
5763
- "\x02GGee\x03\x02pq\x02\u0427\x02\xD6\x03\x02\x02\x02\x04\xDF\x03\x02\x02" +
5712
+ "\x02GGee\x03\x02pq\x02\u0426\x02\xD6\x03\x02\x02\x02\x04\xDF\x03\x02\x02" +
5764
5713
  "\x02\x06\xE1\x03\x02\x02\x02\b\xE4\x03\x02\x02\x02\n\xEA\x03\x02\x02\x02" +
5765
5714
  "\f\xEC\x03\x02\x02\x02\x0E\xEE\x03\x02\x02\x02\x10\xF6\x03\x02\x02\x02" +
5766
5715
  "\x12\u0102\x03\x02\x02\x02\x14\u0104\x03\x02\x02\x02\x16\u010D\x03\x02" +
@@ -5789,14 +5738,14 @@ MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\
5789
5738
  "\u02D6\x03\x02\x02\x02\x9A\u02D8\x03\x02\x02\x02\x9C\u02DA\x03\x02\x02" +
5790
5739
  "\x02\x9E\u02E3\x03\x02\x02\x02\xA0\u02EB\x03\x02\x02\x02\xA2\u02ED\x03" +
5791
5740
  "\x02\x02\x02\xA4\u02EF\x03\x02\x02\x02\xA6\u02F1\x03\x02\x02\x02\xA8\u02F3" +
5792
- "\x03\x02\x02\x02\xAA\u0331\x03\x02\x02\x02\xAC\u0364\x03\x02\x02\x02\xAE" +
5793
- "\u0367\x03\x02\x02\x02\xB0\u036F\x03\x02\x02\x02\xB2\u0376\x03\x02\x02" +
5794
- "\x02\xB4\u0381\x03\x02\x02\x02\xB6\u038B\x03\x02\x02\x02\xB8\u03A0\x03" +
5795
- "\x02\x02\x02\xBA\u03A2\x03\x02\x02\x02\xBC\u03AA\x03\x02\x02\x02\xBE\u03AC" +
5796
- "\x03\x02\x02\x02\xC0\u03AE\x03\x02\x02\x02\xC2\u03B1\x03\x02\x02\x02\xC4" +
5797
- "\u03BB\x03\x02\x02\x02\xC6\u03CA\x03\x02\x02\x02\xC8\u03CC\x03\x02\x02" +
5798
- "\x02\xCA\u03DD\x03\x02\x02\x02\xCC\u03DF\x03\x02\x02\x02\xCE\u03E1\x03" +
5799
- "\x02\x02\x02\xD0\u03E3\x03\x02\x02\x02\xD2\xD5\x05\x04\x03\x02\xD3\xD5" +
5741
+ "\x03\x02\x02\x02\xAA\u0331\x03\x02\x02\x02\xAC\u0361\x03\x02\x02\x02\xAE" +
5742
+ "\u0366\x03\x02\x02\x02\xB0\u036E\x03\x02\x02\x02\xB2\u0375\x03\x02\x02" +
5743
+ "\x02\xB4\u0380\x03\x02\x02\x02\xB6\u038A\x03\x02\x02\x02\xB8\u039F\x03" +
5744
+ "\x02\x02\x02\xBA\u03A1\x03\x02\x02\x02\xBC\u03A9\x03\x02\x02\x02\xBE\u03AB" +
5745
+ "\x03\x02\x02\x02\xC0\u03AD\x03\x02\x02\x02\xC2\u03B0\x03\x02\x02\x02\xC4" +
5746
+ "\u03BA\x03\x02\x02\x02\xC6\u03C9\x03\x02\x02\x02\xC8\u03CB\x03\x02\x02" +
5747
+ "\x02\xCA\u03DC\x03\x02\x02\x02\xCC\u03DE\x03\x02\x02\x02\xCE\u03E0\x03" +
5748
+ "\x02\x02\x02\xD0\u03E2\x03\x02\x02\x02\xD2\xD5\x05\x04\x03\x02\xD3\xD5" +
5800
5749
  "\x07t\x02\x02\xD4\xD2\x03\x02\x02\x02\xD4\xD3\x03\x02\x02\x02\xD5\xD8" +
5801
5750
  "\x03\x02\x02\x02\xD6\xD4\x03\x02\x02\x02\xD6\xD7\x03\x02\x02\x02\xD7\xD9" +
5802
5751
  "\x03\x02\x02\x02\xD8\xD6\x03\x02\x02\x02\xD9\xDA\x07\x02\x02\x03\xDA\x03" +
@@ -5910,12 +5859,13 @@ MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\
5910
5859
  "\x03\x02\x02\x02\u01D2\u01D3\x03\x02\x02\x02\u01D3\u01D4\x03\x02\x02\x02" +
5911
5860
  "\u01D4\u01D6\x05R*\x02\u01D5\u01D2\x03\x02\x02\x02\u01D6\u01D9\x03\x02" +
5912
5861
  "\x02\x02\u01D7\u01D5\x03\x02\x02\x02\u01D7\u01D8\x03\x02\x02\x02\u01D8" +
5913
- "\u01DB\x03\x02\x02\x02\u01D9\u01D7\x03\x02\x02\x02\u01DA\u01DC\x07f\x02";
5914
- MalloyParser._serializedATNSegment1 = "\x02\u01DB\u01DA\x03\x02\x02\x02\u01DB\u01DC\x03\x02\x02\x02\u01DCK\x03" +
5915
- "\x02\x02\x02\u01DD\u01DE\x05N(\x02\u01DE\u01DF\x079\x02\x02\u01DF\u01E0" +
5916
- "\x05\xAAV\x02\u01E0M\x03\x02\x02\x02\u01E1\u01E2\x05\xA4S\x02\u01E2O\x03" +
5917
- "\x02\x02\x02\u01E3\u01E4\x05\xA4S\x02\u01E4Q\x03\x02\x02\x02\u01E5\u01E6" +
5918
- "\x05L\'\x02\u01E6S\x03\x02\x02\x02\u01E7\u01E8\x07\x07\x02\x02\u01E8\u01EF" +
5862
+ "\u01DB\x03\x02\x02\x02\u01D9\u01D7\x03\x02\x02\x02\u01DA\u01DC\x07f\x02" +
5863
+ "\x02\u01DB";
5864
+ MalloyParser._serializedATNSegment1 = "\u01DA\x03\x02\x02\x02\u01DB\u01DC\x03\x02\x02\x02\u01DCK\x03\x02\x02" +
5865
+ "\x02\u01DD\u01DE\x05N(\x02\u01DE\u01DF\x079\x02\x02\u01DF\u01E0\x05\xAA" +
5866
+ "V\x02\u01E0M\x03\x02\x02\x02\u01E1\u01E2\x05\xA4S\x02\u01E2O\x03\x02\x02" +
5867
+ "\x02\u01E3\u01E4\x05\xA4S\x02\u01E4Q\x03\x02\x02\x02\u01E5\u01E6\x05L" +
5868
+ "\'\x02\u01E6S\x03\x02\x02\x02\u01E7\u01E8\x07\x07\x02\x02\u01E8\u01EF" +
5919
5869
  "\x05L\'\x02\u01E9\u01EB\x07f\x02\x02\u01EA\u01E9\x03\x02\x02\x02\u01EA" +
5920
5870
  "\u01EB\x03\x02\x02\x02\u01EB\u01EC\x03\x02\x02\x02\u01EC\u01EE\x05L\'" +
5921
5871
  "\x02\u01ED\u01EA\x03\x02\x02\x02\u01EE\u01F1\x03\x02\x02\x02\u01EF\u01ED" +
@@ -6088,76 +6038,76 @@ MalloyParser._serializedATNSegment1 = "\x02\u01DB\u01DA\x03\x02\x02\x02\u01DB\u0
6088
6038
  "\u034A\x03\x02\x02\x02\u035B\u034D\x03\x02\x02\x02\u035B\u0350\x03\x02" +
6089
6039
  "\x02\x02\u035B\u0355\x03\x02\x02\x02\u035B\u0358\x03\x02\x02\x02\u035C" +
6090
6040
  "\u035F\x03\x02\x02\x02\u035D\u035B\x03\x02\x02\x02\u035D\u035E\x03\x02" +
6091
- "\x02\x02\u035E\xAB\x03\x02\x02\x02\u035F\u035D\x03\x02\x02\x02\u0360\u0361" +
6092
- "\x05\x9CO\x02\u0361\u0362\x05\xAAV\x02\u0362\u0365\x03\x02\x02\x02\u0363" +
6093
- "\u0365\x05\xAAV\x02\u0364\u0360\x03\x02\x02\x02\u0364\u0363\x03\x02\x02" +
6094
- "\x02\u0365\xAD\x03\x02\x02\x02\u0366\u0368\x05\xB0Y\x02\u0367\u0366\x03" +
6095
- "\x02\x02\x02\u0368\u0369\x03\x02\x02\x02\u0369\u0367\x03\x02\x02\x02\u0369" +
6096
- "\u036A\x03\x02\x02\x02\u036A\u036D\x03\x02\x02\x02\u036B\u036C\x07/\x02" +
6097
- "\x02\u036C\u036E\x05\xAAV\x02\u036D\u036B\x03\x02\x02\x02\u036D\u036E" +
6098
- "\x03\x02\x02\x02\u036E\xAF\x03\x02\x02\x02\u036F\u0371\x07F\x02\x02\u0370" +
6099
- "\u0372\x05\xAAV\x02\u0371\u0370\x03\x02\x02\x02\u0371\u0372\x03\x02\x02" +
6100
- "\x02\u0372\u0373\x03\x02\x02\x02\u0373\u0374\x07T\x02\x02\u0374\u0375" +
6101
- "\x05\xACW\x02\u0375\xB1\x03\x02\x02\x02\u0376\u037B\x05\xAAV\x02\u0377" +
6102
- "\u0378\x07f\x02\x02\u0378\u037A\x05\xAAV\x02\u0379\u0377\x03\x02\x02\x02" +
6103
- "\u037A\u037D\x03\x02\x02\x02\u037B\u0379\x03\x02\x02\x02\u037B\u037C\x03" +
6104
- "\x02\x02\x02\u037C\u037F\x03\x02\x02\x02\u037D\u037B\x03\x02\x02\x02\u037E" +
6105
- "\u0380\x07f\x02\x02\u037F\u037E\x03\x02\x02\x02\u037F\u0380\x03\x02\x02" +
6106
- "\x02\u0380\xB3\x03\x02\x02\x02\u0381\u0388\x05\xBE`\x02\u0382\u0384\x07" +
6107
- "f\x02\x02\u0383\u0382\x03\x02\x02\x02\u0383\u0384\x03\x02\x02\x02\u0384" +
6108
- "\u0385\x03\x02\x02\x02\u0385\u0387\x05\xBE`\x02\u0386\u0383\x03\x02\x02" +
6109
- "\x02\u0387\u038A\x03\x02\x02\x02\u0388\u0386\x03\x02\x02\x02\u0388\u0389" +
6110
- "\x03\x02\x02\x02\u0389\xB5\x03\x02\x02\x02\u038A\u0388\x03\x02\x02\x02" +
6111
- "\u038B\u0392\x05\xB8]\x02\u038C\u038E\x07f\x02\x02\u038D\u038C\x03\x02" +
6112
- "\x02\x02\u038D\u038E\x03\x02\x02\x02\u038E\u038F\x03\x02\x02\x02\u038F" +
6113
- "\u0391\x05\xB8]\x02\u0390\u038D\x03\x02\x02\x02\u0391\u0394\x03\x02\x02" +
6114
- "\x02\u0392\u0390\x03\x02\x02\x02\u0392\u0393\x03\x02\x02\x02\u0393\u0396" +
6115
- "\x03\x02\x02\x02\u0394\u0392\x03\x02\x02\x02\u0395\u0397\x07f\x02\x02" +
6116
- "\u0396\u0395\x03\x02\x02\x02\u0396\u0397\x03\x02\x02\x02\u0397\xB7\x03" +
6117
- "\x02\x02\x02\u0398\u03A1\x05\xBA^\x02\u0399\u039A\x05\xBA^\x02\u039A\u039B" +
6118
- "\x07g\x02\x02\u039B\u039D\x03\x02\x02\x02\u039C\u0399\x03\x02\x02\x02" +
6119
- "\u039C\u039D\x03\x02\x02\x02\u039D\u039E\x03\x02\x02\x02\u039E\u03A1\t" +
6120
- "\x13\x02\x02\u039F\u03A1\x05L\'\x02\u03A0\u0398\x03\x02\x02\x02\u03A0" +
6121
- "\u039C\x03\x02\x02\x02\u03A0\u039F\x03\x02\x02\x02\u03A1\xB9\x03\x02\x02" +
6122
- "\x02\u03A2\u03A7\x05\xBE`\x02\u03A3\u03A4\x07g\x02\x02\u03A4\u03A6\x05" +
6123
- "\xBE`\x02\u03A5\u03A3\x03\x02\x02\x02\u03A6\u03A9\x03\x02\x02\x02\u03A7" +
6124
- "\u03A5\x03\x02\x02\x02\u03A7\u03A8\x03\x02\x02\x02\u03A8\xBB\x03\x02\x02" +
6125
- "\x02\u03A9\u03A7\x03\x02\x02\x02\u03AA\u03AB\x05\xA4S\x02\u03AB\xBD\x03" +
6126
- "\x02\x02\x02\u03AC\u03AD\x05\xA4S\x02\u03AD\xBF\x03\x02\x02\x02\u03AE" +
6127
- "\u03AF\x05\xAAV\x02\u03AF\u03B0\x07\x02\x02\x03\u03B0\xC1\x03\x02\x02" +
6128
- "\x02\u03B1\u03B2\x05\xC4c\x02\u03B2\xC3\x03\x02\x02\x02\u03B3\u03BC\x07" +
6129
- "\x03\x02\x02\u03B4\u03BC\x07\x80\x02\x02\u03B5\u03BC\x07\x81\x02\x02\u03B6" +
6130
- "\u03BC\x05\xC6d\x02\u03B7\u03BC\x05\xCAf\x02\u03B8\u03BC\x07Q\x02\x02" +
6131
- "\u03B9\u03BC\x072\x02\x02\u03BA\u03BC\x07B\x02\x02\u03BB\u03B3\x03\x02" +
6132
- "\x02\x02\u03BB\u03B4\x03\x02\x02\x02\u03BB\u03B5\x03\x02\x02\x02\u03BB" +
6133
- "\u03B6\x03\x02\x02\x02\u03BB\u03B7\x03\x02\x02\x02\u03BB\u03B8\x03\x02" +
6134
- "\x02\x02\u03BB\u03B9\x03\x02\x02\x02\u03BB\u03BA\x03\x02\x02\x02\u03BC" +
6135
- "\xC5\x03\x02\x02\x02\u03BD\u03BE\x07b\x02\x02\u03BE\u03C3\x05\xC8e\x02" +
6136
- "\u03BF\u03C0\x07f\x02\x02\u03C0\u03C2\x05\xC8e\x02\u03C1\u03BF\x03\x02" +
6137
- "\x02\x02\u03C2\u03C5\x03\x02\x02\x02\u03C3\u03C1\x03\x02\x02\x02\u03C3" +
6138
- "\u03C4\x03\x02\x02\x02\u03C4\u03C6\x03\x02\x02\x02\u03C5\u03C3\x03\x02" +
6139
- "\x02\x02\u03C6\u03C7\x07c\x02\x02\u03C7\u03CB\x03\x02\x02\x02\u03C8\u03C9" +
6140
- "\x07b\x02\x02\u03C9\u03CB\x07c\x02\x02\u03CA\u03BD\x03\x02\x02\x02\u03CA" +
6141
- "\u03C8\x03\x02\x02\x02\u03CB\xC7\x03\x02\x02\x02\u03CC\u03CD\x07\x03\x02" +
6142
- "\x02\u03CD\u03CE\x07e\x02\x02\u03CE\u03CF\x05\xC4c\x02\u03CF\xC9\x03\x02" +
6143
- "\x02\x02\u03D0\u03D1\x07`\x02\x02\u03D1\u03D6\x05\xC4c\x02\u03D2\u03D3" +
6144
- "\x07f\x02\x02\u03D3\u03D5\x05\xC4c\x02\u03D4\u03D2\x03\x02\x02\x02\u03D5" +
6145
- "\u03D8\x03\x02\x02\x02\u03D6\u03D4\x03\x02\x02\x02\u03D6\u03D7\x03\x02" +
6146
- "\x02\x02\u03D7\u03D9\x03\x02\x02\x02\u03D8\u03D6\x03\x02\x02\x02\u03D9" +
6147
- "\u03DA\x07a\x02\x02\u03DA\u03DE\x03\x02\x02\x02\u03DB\u03DC\x07`\x02\x02" +
6148
- "\u03DC\u03DE\x07a\x02\x02\u03DD\u03D0\x03\x02\x02\x02\u03DD\u03DB\x03" +
6149
- "\x02\x02\x02\u03DE\xCB\x03\x02\x02\x02\u03DF\u03E0\x05\xA4S\x02\u03E0" +
6150
- "\xCD\x03\x02\x02\x02\u03E1\u03E2\x05\xA4S\x02\u03E2\xCF\x03\x02\x02\x02" +
6151
- "\u03E3\u03E4\x07\x03\x02\x02\u03E4\xD1\x03\x02\x02\x02q\xD4\xD6\xDF\xEA" +
6152
- "\xF2\xFA\u0102\u0108\u0118\u011D\u0121\u0130\u0133\u0138\u013B\u0141\u0147" +
6153
- "\u014A\u014C\u015A\u015C\u0160\u016D\u0172\u0176\u017E\u0181\u018F\u0198" +
6154
- "\u019A\u019F\u01B0\u01B4\u01B9\u01BD\u01C5\u01CA\u01CE\u01D2\u01D7\u01DB" +
6155
- "\u01EA\u01EF\u01F3\u01FB\u01FF\u0204\u0208\u020D\u0215\u0219\u021B\u0221" +
6156
- "\u0226\u022D\u0231\u023B\u0240\u0244\u0259\u0260\u0265\u0269\u026F\u0276" +
6157
- "\u027B\u027F\u0283\u0286\u028C\u0299\u029E\u02A2\u02A6\u02A9\u02B2\u02B7" +
6158
- "\u02BC\u02BF\u02C3\u02C8\u02CF\u02E3\u02EB\u030C\u0312\u031C\u0320\u032C" +
6159
- "\u0331\u035B\u035D\u0364\u0369\u036D\u0371\u037B\u037F\u0383\u0388\u038D" +
6160
- "\u0392\u0396\u039C\u03A0\u03A7\u03BB\u03C3\u03CA\u03D6\u03DD";
6041
+ "\x02\x02\u035E\xAB\x03\x02\x02\x02\u035F\u035D\x03\x02\x02\x02\u0360\u0362" +
6042
+ "\x05\x9CO\x02\u0361\u0360\x03\x02\x02\x02\u0361\u0362\x03\x02\x02\x02" +
6043
+ "\u0362\u0363\x03\x02\x02\x02\u0363\u0364\x05\xAAV\x02\u0364\xAD\x03\x02" +
6044
+ "\x02\x02\u0365\u0367\x05\xB0Y\x02\u0366\u0365\x03\x02\x02\x02\u0367\u0368" +
6045
+ "\x03\x02\x02\x02\u0368\u0366\x03\x02\x02\x02\u0368\u0369\x03\x02\x02\x02" +
6046
+ "\u0369\u036C\x03\x02\x02\x02\u036A\u036B\x07/\x02\x02\u036B\u036D\x05" +
6047
+ "\xAAV\x02\u036C\u036A\x03\x02\x02\x02\u036C\u036D\x03\x02\x02\x02\u036D" +
6048
+ "\xAF\x03\x02\x02\x02\u036E\u0370\x07F\x02\x02\u036F\u0371\x05\xAAV\x02" +
6049
+ "\u0370\u036F\x03\x02\x02\x02\u0370\u0371\x03\x02\x02\x02\u0371\u0372\x03" +
6050
+ "\x02\x02\x02\u0372\u0373\x07T\x02\x02\u0373\u0374\x05\xACW\x02\u0374\xB1" +
6051
+ "\x03\x02\x02\x02\u0375\u037A\x05\xAAV\x02\u0376\u0377\x07f\x02\x02\u0377" +
6052
+ "\u0379\x05\xAAV\x02\u0378\u0376\x03\x02\x02\x02\u0379\u037C\x03\x02\x02" +
6053
+ "\x02\u037A\u0378\x03\x02\x02\x02\u037A\u037B\x03\x02\x02\x02\u037B\u037E" +
6054
+ "\x03\x02\x02\x02\u037C\u037A\x03\x02\x02\x02\u037D\u037F\x07f\x02\x02" +
6055
+ "\u037E\u037D\x03\x02\x02\x02\u037E\u037F\x03\x02\x02\x02\u037F\xB3\x03" +
6056
+ "\x02\x02\x02\u0380\u0387\x05\xBE`\x02\u0381\u0383\x07f\x02\x02\u0382\u0381" +
6057
+ "\x03\x02\x02\x02\u0382\u0383\x03\x02\x02\x02\u0383\u0384\x03\x02\x02\x02" +
6058
+ "\u0384\u0386\x05\xBE`\x02\u0385\u0382\x03\x02\x02\x02\u0386\u0389\x03" +
6059
+ "\x02\x02\x02\u0387\u0385\x03\x02\x02\x02\u0387\u0388\x03\x02\x02\x02\u0388" +
6060
+ "\xB5\x03\x02\x02\x02\u0389\u0387\x03\x02\x02\x02\u038A\u0391\x05\xB8]" +
6061
+ "\x02\u038B\u038D\x07f\x02\x02\u038C\u038B\x03\x02\x02\x02\u038C\u038D" +
6062
+ "\x03\x02\x02\x02\u038D\u038E\x03\x02\x02\x02\u038E\u0390\x05\xB8]\x02" +
6063
+ "\u038F\u038C\x03\x02\x02\x02\u0390\u0393\x03\x02\x02\x02\u0391\u038F\x03" +
6064
+ "\x02\x02\x02\u0391\u0392\x03\x02\x02\x02\u0392\u0395\x03\x02\x02\x02\u0393" +
6065
+ "\u0391\x03\x02\x02\x02\u0394\u0396\x07f\x02\x02\u0395\u0394\x03\x02\x02" +
6066
+ "\x02\u0395\u0396\x03\x02\x02\x02\u0396\xB7\x03\x02\x02\x02\u0397\u03A0" +
6067
+ "\x05\xBA^\x02\u0398\u0399\x05\xBA^\x02\u0399\u039A\x07g\x02\x02\u039A" +
6068
+ "\u039C\x03\x02\x02\x02\u039B\u0398\x03\x02\x02\x02\u039B\u039C\x03\x02" +
6069
+ "\x02\x02\u039C\u039D\x03\x02\x02\x02\u039D\u03A0\t\x13\x02\x02\u039E\u03A0" +
6070
+ "\x05L\'\x02\u039F\u0397\x03\x02\x02\x02\u039F\u039B\x03\x02\x02\x02\u039F" +
6071
+ "\u039E\x03\x02\x02\x02\u03A0\xB9\x03\x02\x02\x02\u03A1\u03A6\x05\xBE`" +
6072
+ "\x02\u03A2\u03A3\x07g\x02\x02\u03A3\u03A5\x05\xBE`\x02\u03A4\u03A2\x03" +
6073
+ "\x02\x02\x02\u03A5\u03A8\x03\x02\x02\x02\u03A6\u03A4\x03\x02\x02\x02\u03A6" +
6074
+ "\u03A7\x03\x02\x02\x02\u03A7\xBB\x03\x02\x02\x02\u03A8\u03A6\x03\x02\x02" +
6075
+ "\x02\u03A9\u03AA\x05\xA4S\x02\u03AA\xBD\x03\x02\x02\x02\u03AB\u03AC\x05" +
6076
+ "\xA4S\x02\u03AC\xBF\x03\x02\x02\x02\u03AD\u03AE\x05\xAAV\x02\u03AE\u03AF" +
6077
+ "\x07\x02\x02\x03\u03AF\xC1\x03\x02\x02\x02\u03B0\u03B1\x05\xC4c\x02\u03B1" +
6078
+ "\xC3\x03\x02\x02\x02\u03B2\u03BB\x07\x03\x02\x02\u03B3\u03BB\x07\x80\x02" +
6079
+ "\x02\u03B4\u03BB\x07\x81\x02\x02\u03B5\u03BB\x05\xC6d\x02\u03B6\u03BB" +
6080
+ "\x05\xCAf\x02\u03B7\u03BB\x07Q\x02\x02\u03B8\u03BB\x072\x02\x02\u03B9" +
6081
+ "\u03BB\x07B\x02\x02\u03BA\u03B2\x03\x02\x02\x02\u03BA\u03B3\x03\x02\x02" +
6082
+ "\x02\u03BA\u03B4\x03\x02\x02\x02\u03BA\u03B5\x03\x02\x02\x02\u03BA\u03B6" +
6083
+ "\x03\x02\x02\x02\u03BA\u03B7\x03\x02\x02\x02\u03BA\u03B8\x03\x02\x02\x02" +
6084
+ "\u03BA\u03B9\x03\x02\x02\x02\u03BB\xC5\x03\x02\x02\x02\u03BC\u03BD\x07" +
6085
+ "b\x02\x02\u03BD\u03C2\x05\xC8e\x02\u03BE\u03BF\x07f\x02\x02\u03BF\u03C1" +
6086
+ "\x05\xC8e\x02\u03C0\u03BE\x03\x02\x02\x02\u03C1\u03C4\x03\x02\x02\x02" +
6087
+ "\u03C2\u03C0\x03\x02\x02\x02\u03C2\u03C3\x03\x02\x02\x02\u03C3\u03C5\x03" +
6088
+ "\x02\x02\x02\u03C4\u03C2\x03\x02\x02\x02\u03C5\u03C6\x07c\x02\x02\u03C6" +
6089
+ "\u03CA\x03\x02\x02\x02\u03C7\u03C8\x07b\x02\x02\u03C8\u03CA\x07c\x02\x02" +
6090
+ "\u03C9\u03BC\x03\x02\x02\x02\u03C9\u03C7\x03\x02\x02\x02\u03CA\xC7\x03" +
6091
+ "\x02\x02\x02\u03CB\u03CC\x07\x03\x02\x02\u03CC\u03CD\x07e\x02\x02\u03CD" +
6092
+ "\u03CE\x05\xC4c\x02\u03CE\xC9\x03\x02\x02\x02\u03CF\u03D0\x07`\x02\x02" +
6093
+ "\u03D0\u03D5\x05\xC4c\x02\u03D1\u03D2\x07f\x02\x02\u03D2\u03D4\x05\xC4" +
6094
+ "c\x02\u03D3\u03D1\x03\x02\x02\x02\u03D4\u03D7\x03\x02\x02\x02\u03D5\u03D3" +
6095
+ "\x03\x02\x02\x02\u03D5\u03D6\x03\x02\x02\x02\u03D6\u03D8\x03\x02\x02\x02" +
6096
+ "\u03D7\u03D5\x03\x02\x02\x02\u03D8\u03D9\x07a\x02\x02\u03D9\u03DD\x03" +
6097
+ "\x02\x02\x02\u03DA\u03DB\x07`\x02\x02\u03DB\u03DD\x07a\x02\x02\u03DC\u03CF" +
6098
+ "\x03\x02\x02\x02\u03DC\u03DA\x03\x02\x02\x02\u03DD\xCB\x03\x02\x02\x02" +
6099
+ "\u03DE\u03DF\x05\xA4S\x02\u03DF\xCD\x03\x02\x02\x02\u03E0\u03E1\x05\xA4" +
6100
+ "S\x02\u03E1\xCF\x03\x02\x02\x02\u03E2\u03E3\x07\x03\x02\x02\u03E3\xD1" +
6101
+ "\x03\x02\x02\x02q\xD4\xD6\xDF\xEA\xF2\xFA\u0102\u0108\u0118\u011D\u0121" +
6102
+ "\u0130\u0133\u0138\u013B\u0141\u0147\u014A\u014C\u015A\u015C\u0160\u016D" +
6103
+ "\u0172\u0176\u017E\u0181\u018F\u0198\u019A\u019F\u01B0\u01B4\u01B9\u01BD" +
6104
+ "\u01C5\u01CA\u01CE\u01D2\u01D7\u01DB\u01EA\u01EF\u01F3\u01FB\u01FF\u0204" +
6105
+ "\u0208\u020D\u0215\u0219\u021B\u0221\u0226\u022D\u0231\u023B\u0240\u0244" +
6106
+ "\u0259\u0260\u0265\u0269\u026F\u0276\u027B\u027F\u0283\u0286\u028C\u0299" +
6107
+ "\u029E\u02A2\u02A6\u02A9\u02B2\u02B7\u02BC\u02BF\u02C3\u02C8\u02CF\u02E3" +
6108
+ "\u02EB\u030C\u0312\u031C\u0320\u032C\u0331\u035B\u035D\u0361\u0368\u036C" +
6109
+ "\u0370\u037A\u037E\u0382\u0387\u038C\u0391\u0395\u039B\u039F\u03A6\u03BA" +
6110
+ "\u03C2\u03C9\u03D5\u03DC";
6161
6111
  MalloyParser._serializedATN = Utils.join([
6162
6112
  MalloyParser._serializedATNSegment0,
6163
6113
  MalloyParser._serializedATNSegment1,
@@ -11158,81 +11108,40 @@ class ExprUngroupContext extends FieldExprContext {
11158
11108
  }
11159
11109
  exports.ExprUngroupContext = ExprUngroupContext;
11160
11110
  class PartialAllowedFieldExprContext extends ParserRuleContext_1.ParserRuleContext {
11161
- constructor(parent, invokingState) {
11162
- super(parent, invokingState);
11163
- }
11164
- // @Override
11165
- get ruleIndex() { return MalloyParser.RULE_partialAllowedFieldExpr; }
11166
- copyFrom(ctx) {
11167
- super.copyFrom(ctx);
11168
- }
11169
- }
11170
- exports.PartialAllowedFieldExprContext = PartialAllowedFieldExprContext;
11171
- class ExprPartialCompareContext extends PartialAllowedFieldExprContext {
11172
- compareOp() {
11173
- return this.getRuleContext(0, CompareOpContext);
11174
- }
11175
11111
  fieldExpr() {
11176
11112
  return this.getRuleContext(0, FieldExprContext);
11177
11113
  }
11178
- constructor(ctx) {
11179
- super(ctx.parent, ctx.invokingState);
11180
- this.copyFrom(ctx);
11181
- }
11182
- // @Override
11183
- enterRule(listener) {
11184
- if (listener.enterExprPartialCompare) {
11185
- listener.enterExprPartialCompare(this);
11186
- }
11114
+ compareOp() {
11115
+ return this.tryGetRuleContext(0, CompareOpContext);
11187
11116
  }
11188
- // @Override
11189
- exitRule(listener) {
11190
- if (listener.exitExprPartialCompare) {
11191
- listener.exitExprPartialCompare(this);
11192
- }
11117
+ constructor(parent, invokingState) {
11118
+ super(parent, invokingState);
11193
11119
  }
11194
11120
  // @Override
11195
- accept(visitor) {
11196
- if (visitor.visitExprPartialCompare) {
11197
- return visitor.visitExprPartialCompare(this);
11198
- }
11199
- else {
11200
- return visitor.visitChildren(this);
11201
- }
11202
- }
11203
- }
11204
- exports.ExprPartialCompareContext = ExprPartialCompareContext;
11205
- class ExprNotPartialContext extends PartialAllowedFieldExprContext {
11206
- fieldExpr() {
11207
- return this.getRuleContext(0, FieldExprContext);
11208
- }
11209
- constructor(ctx) {
11210
- super(ctx.parent, ctx.invokingState);
11211
- this.copyFrom(ctx);
11212
- }
11121
+ get ruleIndex() { return MalloyParser.RULE_partialAllowedFieldExpr; }
11213
11122
  // @Override
11214
11123
  enterRule(listener) {
11215
- if (listener.enterExprNotPartial) {
11216
- listener.enterExprNotPartial(this);
11124
+ if (listener.enterPartialAllowedFieldExpr) {
11125
+ listener.enterPartialAllowedFieldExpr(this);
11217
11126
  }
11218
11127
  }
11219
11128
  // @Override
11220
11129
  exitRule(listener) {
11221
- if (listener.exitExprNotPartial) {
11222
- listener.exitExprNotPartial(this);
11130
+ if (listener.exitPartialAllowedFieldExpr) {
11131
+ listener.exitPartialAllowedFieldExpr(this);
11223
11132
  }
11224
11133
  }
11225
11134
  // @Override
11226
11135
  accept(visitor) {
11227
- if (visitor.visitExprNotPartial) {
11228
- return visitor.visitExprNotPartial(this);
11136
+ if (visitor.visitPartialAllowedFieldExpr) {
11137
+ return visitor.visitPartialAllowedFieldExpr(this);
11229
11138
  }
11230
11139
  else {
11231
11140
  return visitor.visitChildren(this);
11232
11141
  }
11233
11142
  }
11234
11143
  }
11235
- exports.ExprNotPartialContext = ExprNotPartialContext;
11144
+ exports.PartialAllowedFieldExprContext = PartialAllowedFieldExprContext;
11236
11145
  class PickStatementContext extends ParserRuleContext_1.ParserRuleContext {
11237
11146
  constructor(parent, invokingState) {
11238
11147
  super(parent, invokingState);
@@ -1,6 +1,4 @@
1
1
  import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener";
2
- import { ExprPartialCompareContext } from "./MalloyParser";
3
- import { ExprNotPartialContext } from "./MalloyParser";
4
2
  import { NameMemberContext } from "./MalloyParser";
5
3
  import { WildMemberContext } from "./MalloyParser";
6
4
  import { NewMemberContext } from "./MalloyParser";
@@ -177,30 +175,6 @@ import { ConnectionNameContext } from "./MalloyParser";
177
175
  * `MalloyParser`.
178
176
  */
179
177
  export interface MalloyParserListener extends ParseTreeListener {
180
- /**
181
- * Enter a parse tree produced by the `exprPartialCompare`
182
- * labeled alternative in `MalloyParser.partialAllowedFieldExpr`.
183
- * @param ctx the parse tree
184
- */
185
- enterExprPartialCompare?: (ctx: ExprPartialCompareContext) => void;
186
- /**
187
- * Exit a parse tree produced by the `exprPartialCompare`
188
- * labeled alternative in `MalloyParser.partialAllowedFieldExpr`.
189
- * @param ctx the parse tree
190
- */
191
- exitExprPartialCompare?: (ctx: ExprPartialCompareContext) => void;
192
- /**
193
- * Enter a parse tree produced by the `exprNotPartial`
194
- * labeled alternative in `MalloyParser.partialAllowedFieldExpr`.
195
- * @param ctx the parse tree
196
- */
197
- enterExprNotPartial?: (ctx: ExprNotPartialContext) => void;
198
- /**
199
- * Exit a parse tree produced by the `exprNotPartial`
200
- * labeled alternative in `MalloyParser.partialAllowedFieldExpr`.
201
- * @param ctx the parse tree
202
- */
203
- exitExprNotPartial?: (ctx: ExprNotPartialContext) => void;
204
178
  /**
205
179
  * Enter a parse tree produced by the `nameMember`
206
180
  * labeled alternative in `MalloyParser.collectionMember`.
@@ -1,6 +1,4 @@
1
1
  import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor";
2
- import { ExprPartialCompareContext } from "./MalloyParser";
3
- import { ExprNotPartialContext } from "./MalloyParser";
4
2
  import { NameMemberContext } from "./MalloyParser";
5
3
  import { WildMemberContext } from "./MalloyParser";
6
4
  import { NewMemberContext } from "./MalloyParser";
@@ -180,20 +178,6 @@ import { ConnectionNameContext } from "./MalloyParser";
180
178
  * operations with no return type.
181
179
  */
182
180
  export interface MalloyParserVisitor<Result> extends ParseTreeVisitor<Result> {
183
- /**
184
- * Visit a parse tree produced by the `exprPartialCompare`
185
- * labeled alternative in `MalloyParser.partialAllowedFieldExpr`.
186
- * @param ctx the parse tree
187
- * @return the visitor result
188
- */
189
- visitExprPartialCompare?: (ctx: ExprPartialCompareContext) => Result;
190
- /**
191
- * Visit a parse tree produced by the `exprNotPartial`
192
- * labeled alternative in `MalloyParser.partialAllowedFieldExpr`.
193
- * @param ctx the parse tree
194
- * @return the visitor result
195
- */
196
- visitExprNotPartial?: (ctx: ExprNotPartialContext) => Result;
197
181
  /**
198
182
  * Visit a parse tree produced by the `nameMember`
199
183
  * labeled alternative in `MalloyParser.collectionMember`.
@@ -114,8 +114,7 @@ export declare class MalloyToAST extends AbstractParseTreeVisitor<ast.MalloyElem
114
114
  allFieldExpressions(exprList: parse.FieldExprContext[]): ast.ExpressionDef[];
115
115
  visitExprLogical(pcx: parse.ExprLogicalContext): ast.ExprLogicalOp;
116
116
  visitExprLogicalTree(pcx: parse.ExprLogicalTreeContext): ast.ExprAlternationTree;
117
- visitExprNotPartial(pcx: parse.ExprNotPartialContext): ast.ExpressionDef;
118
- visitExprPartialCompare(pcx: parse.ExprPartialCompareContext): ast.MalloyElement;
117
+ visitPartialAllowedFieldExpr(pcx: parse.PartialAllowedFieldExprContext): ast.ExpressionDef;
119
118
  visitExprString(pcx: parse.ExprStringContext): ast.ExprString;
120
119
  visitExprRegex(pcx: parse.ExprRegexContext): ast.ExprRegEx;
121
120
  visitExprNow(_pcx: parse.ExprNowContext): ast.ExprNow;
@@ -686,15 +686,17 @@ class MalloyToAST extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor {
686
686
  const right = this.getFieldExpr(pcx.partialAllowedFieldExpr());
687
687
  return new ast.ExprAlternationTree(left, pcx.AMPER() ? "&" : "|", right);
688
688
  }
689
- visitExprNotPartial(pcx) {
690
- return this.getFieldExpr(pcx.fieldExpr());
691
- }
692
- visitExprPartialCompare(pcx) {
693
- const op = pcx.compareOp().text;
694
- if (ast.isComparison(op)) {
695
- return new ast.PartialCompare(op, this.getFieldExpr(pcx.fieldExpr()));
689
+ visitPartialAllowedFieldExpr(pcx) {
690
+ var _a;
691
+ const fieldExpr = this.getFieldExpr(pcx.fieldExpr());
692
+ const partialOp = (_a = pcx.compareOp()) === null || _a === void 0 ? void 0 : _a.text;
693
+ if (partialOp) {
694
+ if (ast.isComparison(partialOp)) {
695
+ return this.astAt(new ast.PartialCompare(partialOp, fieldExpr), pcx);
696
+ }
697
+ throw this.internalError(pcx, `partial comparison '${partialOp}' not recognized`);
696
698
  }
697
- throw this.internalError(pcx, `partial comparison '${op}' not recognized`);
699
+ return fieldExpr;
698
700
  }
699
701
  visitExprString(pcx) {
700
702
  return new ast.ExprString(pcx.STRING_LITERAL().text);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@malloydata/malloy",
3
- "version": "0.0.15-dev221207234955",
3
+ "version": "0.0.15-dev221208010845",
4
4
  "license": "GPL-2.0",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",