simple-graph-query 1.2.0 → 1.2.2

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.
@@ -93,8 +93,8 @@ export declare class ForgeLexer extends Lexer {
93
93
  static readonly EVAL_TOK = 88;
94
94
  static readonly EXAMPLE_TOK = 89;
95
95
  static readonly ARROW_TOK = 90;
96
- static readonly EQ_TOK = 91;
97
- static readonly LABEL_EQ_TOK = 92;
96
+ static readonly GET_LABEL_TOK = 91;
97
+ static readonly EQ_TOK = 92;
98
98
  static readonly LT_TOK = 93;
99
99
  static readonly GT_TOK = 94;
100
100
  static readonly LEQ_TOK = 95;
@@ -99,8 +99,8 @@ export declare class ForgeParser extends Parser {
99
99
  static readonly EVAL_TOK = 88;
100
100
  static readonly EXAMPLE_TOK = 89;
101
101
  static readonly ARROW_TOK = 90;
102
- static readonly EQ_TOK = 91;
103
- static readonly LABEL_EQ_TOK = 92;
102
+ static readonly GET_LABEL_TOK = 91;
103
+ static readonly EQ_TOK = 92;
104
104
  static readonly LT_TOK = 93;
105
105
  static readonly GT_TOK = 94;
106
106
  static readonly LEQ_TOK = 95;
@@ -770,7 +770,6 @@ export declare class ArrowOpContext extends ParserRuleContext {
770
770
  export declare class CompareOpContext extends ParserRuleContext {
771
771
  IN_TOK(): TerminalNode | undefined;
772
772
  EQ_TOK(): TerminalNode | undefined;
773
- LABEL_EQ_TOK(): TerminalNode | undefined;
774
773
  LT_TOK(): TerminalNode | undefined;
775
774
  GT_TOK(): TerminalNode | undefined;
776
775
  LEQ_TOK(): TerminalNode | undefined;
@@ -1166,6 +1165,7 @@ export declare class Expr17Context extends ParserRuleContext {
1166
1165
  TILDE_TOK(): TerminalNode | undefined;
1167
1166
  EXP_TOK(): TerminalNode | undefined;
1168
1167
  STAR_TOK(): TerminalNode | undefined;
1168
+ GET_LABEL_TOK(): TerminalNode | undefined;
1169
1169
  constructor(parent: ParserRuleContext | undefined, invokingState: number);
1170
1170
  get ruleIndex(): number;
1171
1171
  enterRule(listener: ForgeListener): void;
@@ -48630,7 +48630,7 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
48630
48630
  keys.sort(); // sort the keys to ensure consistent ordering
48631
48631
  return keys.map((key) => `${key}=${freeVarValues[key]}`).join("|");
48632
48632
  }
48633
- // helper function to get the label for a value (used for == comparison)
48633
+ // helper function to get the label for a value (used for @: operator)
48634
48634
  getLabelForValue(value) {
48635
48635
  // For primitive values (numbers, booleans), the label is the value itself
48636
48636
  if (typeof value === "number" || typeof value === "boolean") {
@@ -49211,59 +49211,6 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
49211
49211
  throw new Error("unexpected error: equality operand is not a well defined forge value!");
49212
49212
  }
49213
49213
  break;
49214
- case "==":
49215
- // Label comparison - works similarly to ID comparison but compares labels instead
49216
- if (isSingleValue(leftChildValue) && isSingleValue(rightChildValue)) {
49217
- const leftLabel = this.getLabelForValue(leftChildValue);
49218
- const rightLabel = this.getLabelForValue(rightChildValue);
49219
- results = leftLabel === rightLabel;
49220
- }
49221
- else if (isSingleValue(leftChildValue) && isTupleArray(rightChildValue)) {
49222
- if (rightChildValue.length === 1 &&
49223
- rightChildValue[0].length === 1) {
49224
- const leftLabel = this.getLabelForValue(leftChildValue);
49225
- const rightLabel = this.getLabelForValue(rightChildValue[0][0]);
49226
- results = leftLabel === rightLabel;
49227
- }
49228
- else {
49229
- results = false;
49230
- }
49231
- }
49232
- else if (isTupleArray(leftChildValue) && isSingleValue(rightChildValue)) {
49233
- if (leftChildValue.length === 1 && leftChildValue[0].length === 1) {
49234
- const leftLabel = this.getLabelForValue(leftChildValue[0][0]);
49235
- const rightLabel = this.getLabelForValue(rightChildValue);
49236
- results = leftLabel === rightLabel;
49237
- }
49238
- else {
49239
- results = false;
49240
- }
49241
- }
49242
- else if (isTupleArray(leftChildValue) && isTupleArray(rightChildValue)) {
49243
- // Compare labels for tuple arrays
49244
- if (leftChildValue.length !== rightChildValue.length) {
49245
- results = false;
49246
- }
49247
- else {
49248
- results = leftChildValue.every((leftTuple, i) => {
49249
- const rightTuple = rightChildValue[i];
49250
- if (leftTuple.length !== rightTuple.length) {
49251
- return false;
49252
- }
49253
- return leftTuple.every((leftVal, j) => {
49254
- const rightVal = rightTuple[j];
49255
- const leftLabel = this.getLabelForValue(leftVal);
49256
- const rightLabel = this.getLabelForValue(rightVal);
49257
- return leftLabel === rightLabel;
49258
- });
49259
- });
49260
- }
49261
- }
49262
- else {
49263
- // NOTE: we should never actually get here
49264
- throw new Error("unexpected error: label equality operand is not a well defined forge value!");
49265
- }
49266
- break;
49267
49214
  case "<":
49268
49215
  if (leftNum === undefined || rightNum === undefined) {
49269
49216
  throw new Error(`Expected the < operator to have 2 number operands (number or [[number]]), got ${typeof leftChildValue} and ${typeof rightChildValue}!`);
@@ -49636,7 +49583,49 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
49636
49583
  visitExpr17(ctx) {
49637
49584
  //console.log('visiting expr17:', ctx.text);
49638
49585
  let results = [];
49586
+ // Handle @: operator FIRST, before visitChildren
49587
+ if (ctx.GET_LABEL_TOK()) {
49588
+ // @: operator - get label for value
49589
+ // For @: operator, we need to handle unknown identifiers specially
49590
+ const innerExpr = ctx.expr17();
49591
+ if (!innerExpr) {
49592
+ throw new Error("@: operator requires an expression");
49593
+ }
49594
+ try {
49595
+ const innerResult = this.visit(innerExpr);
49596
+ // Special case: if result is empty array, it means unknown identifier, so use the text
49597
+ if (isTupleArray(innerResult) && innerResult.length === 0) {
49598
+ return innerExpr.text;
49599
+ }
49600
+ if (isSingleValue(innerResult)) {
49601
+ return this.getLabelForValue(innerResult);
49602
+ }
49603
+ else if (isTupleArray(innerResult)) {
49604
+ // For single-element tuple arrays, return the label of the element
49605
+ if (innerResult.length === 1 && innerResult[0].length === 1) {
49606
+ return this.getLabelForValue(innerResult[0][0]);
49607
+ }
49608
+ // For multi-element cases, apply getLabelForValue to each tuple element
49609
+ return innerResult.map((tuple) => tuple.map((value) => this.getLabelForValue(value)));
49610
+ }
49611
+ throw new Error("@: operator can only be applied to single values or tuple arrays");
49612
+ }
49613
+ catch (error) {
49614
+ // If evaluation fails due to unknown identifier, use the text as the label
49615
+ if (error instanceof NameNotFoundError) {
49616
+ // Extract the identifier from the inner expression
49617
+ // The inner expression might be "(black)" so we need to get the actual identifier
49618
+ let identifierText = innerExpr.text;
49619
+ if (identifierText.startsWith('(') && identifierText.endsWith(')')) {
49620
+ identifierText = identifierText.slice(1, -1);
49621
+ }
49622
+ return identifierText;
49623
+ }
49624
+ throw error;
49625
+ }
49626
+ }
49639
49627
  const childrenResults = this.visitChildren(ctx);
49628
+ //console.log('visitChildren result for', ctx.text, ':', childrenResults);
49640
49629
  if (ctx.TILDE_TOK()) {
49641
49630
  // this flips the order of the elements in the tuples of a relation if
49642
49631
  // the relation has arity 2
@@ -49729,6 +49718,13 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
49729
49718
  // }
49730
49719
  return value;
49731
49720
  }
49721
+ // Handle boolean constants
49722
+ if (constant.text === 'true') {
49723
+ return true;
49724
+ }
49725
+ if (constant.text === 'false') {
49726
+ return false;
49727
+ }
49732
49728
  return `${constant.text}`;
49733
49729
  }
49734
49730
  if (ctx.qualName()) {
@@ -49965,6 +49961,14 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
49965
49961
  if (exports.SUPPORTED_BUILTINS.includes(identifier)) {
49966
49962
  return identifier;
49967
49963
  }
49964
+ // Check if this looks like a simple label identifier (for label comparison)
49965
+ // Heuristic: simple lowercase words that look like color/state names
49966
+ const labelLikePattern = /^[a-z]{3,10}$/; // 3-10 lowercase letters only
49967
+ if (labelLikePattern.test(identifier)) {
49968
+ // This looks like a simple label (e.g., "black", "red", "blue", etc.)
49969
+ // Return it as a string literal to enable label comparison syntax
49970
+ return identifier;
49971
+ }
49968
49972
  throw new NameNotFoundError(`bad name ${identifier} referenced!`);
49969
49973
  }
49970
49974
  visitQualName(ctx) {
@@ -50620,8 +50624,8 @@ ForgeLexer.INST_TOK = 87;
50620
50624
  ForgeLexer.EVAL_TOK = 88;
50621
50625
  ForgeLexer.EXAMPLE_TOK = 89;
50622
50626
  ForgeLexer.ARROW_TOK = 90;
50623
- ForgeLexer.EQ_TOK = 91;
50624
- ForgeLexer.LABEL_EQ_TOK = 92;
50627
+ ForgeLexer.GET_LABEL_TOK = 91;
50628
+ ForgeLexer.EQ_TOK = 92;
50625
50629
  ForgeLexer.LT_TOK = 93;
50626
50630
  ForgeLexer.GT_TOK = 94;
50627
50631
  ForgeLexer.LEQ_TOK = 95;
@@ -50664,8 +50668,8 @@ ForgeLexer.ruleNames = [
50664
50668
  "EVENTUALLY_TOK", "AFTER_TOK", "BEFORE_TOK", "ONCE_TOK", "HISTORICALLY_TOK",
50665
50669
  "CARD_TOK", "PPLUS_TOK", "AMP_TOK", "SUBT_TOK", "SUPT_TOK", "PRIME_TOK",
50666
50670
  "TILDE_TOK", "EXP_TOK", "STAR_TOK", "AT_TOK", "BACKQUOTE_TOK", "THIS_TOK",
50667
- "SEXPR_TOK", "INST_TOK", "EVAL_TOK", "EXAMPLE_TOK", "ARROW_TOK", "EQ_TOK",
50668
- "LABEL_EQ_TOK", "LT_TOK", "GT_TOK", "LEQ_TOK", "GEQ_TOK", "NI_TOK", "NO_TOK",
50671
+ "SEXPR_TOK", "INST_TOK", "EVAL_TOK", "EXAMPLE_TOK", "ARROW_TOK", "GET_LABEL_TOK",
50672
+ "EQ_TOK", "LT_TOK", "GT_TOK", "LEQ_TOK", "GEQ_TOK", "NI_TOK", "NO_TOK",
50669
50673
  "SUM_TOK", "INT_TOK", "OPTION_TOK", "COMMA_TOK", "SLASH_TOK", "NUM_CONST_TOK",
50670
50674
  "IDENTIFIER_TOK", "WS", "CCOMMENT", "COMMENT", "MULTCOMMENT", "LANG_DECL",
50671
50675
  ];
@@ -50682,7 +50686,7 @@ ForgeLexer._LITERAL_NAMES = [
50682
50686
  "'since'", "'triggered'", undefined, "'always'", "'eventually'", "'after'",
50683
50687
  "'before'", "'once'", "'historically'", "'#'", "'++'", "'&'", "'<:'",
50684
50688
  "':>'", "'''", "'~'", "'^'", "'*'", "'@'", "'`'", "'this'", "'sexpr'",
50685
- "'inst'", "'eval'", "'example'", "'->'", "'='", "'=='", "'<'", "'>'",
50689
+ "'inst'", "'eval'", "'example'", "'->'", "'@:'", "'='", "'<'", "'>'",
50686
50690
  undefined, "'>='", "'ni'", "'no'", "'sum'", "'Int'", "'option'", "','",
50687
50691
  "'/'",
50688
50692
  ];
@@ -50702,8 +50706,8 @@ ForgeLexer._SYMBOLIC_NAMES = [
50702
50706
  "EVENTUALLY_TOK", "AFTER_TOK", "BEFORE_TOK", "ONCE_TOK", "HISTORICALLY_TOK",
50703
50707
  "CARD_TOK", "PPLUS_TOK", "AMP_TOK", "SUBT_TOK", "SUPT_TOK", "PRIME_TOK",
50704
50708
  "TILDE_TOK", "EXP_TOK", "STAR_TOK", "AT_TOK", "BACKQUOTE_TOK", "THIS_TOK",
50705
- "SEXPR_TOK", "INST_TOK", "EVAL_TOK", "EXAMPLE_TOK", "ARROW_TOK", "EQ_TOK",
50706
- "LABEL_EQ_TOK", "LT_TOK", "GT_TOK", "LEQ_TOK", "GEQ_TOK", "NI_TOK", "NO_TOK",
50709
+ "SEXPR_TOK", "INST_TOK", "EVAL_TOK", "EXAMPLE_TOK", "ARROW_TOK", "GET_LABEL_TOK",
50710
+ "EQ_TOK", "LT_TOK", "GT_TOK", "LEQ_TOK", "GEQ_TOK", "NI_TOK", "NO_TOK",
50707
50711
  "SUM_TOK", "INT_TOK", "OPTION_TOK", "COMMA_TOK", "SLASH_TOK", "NUM_CONST_TOK",
50708
50712
  "IDENTIFIER_TOK", "WS", "CCOMMENT", "COMMENT", "MULTCOMMENT", "LANG_DECL",
50709
50713
  ];
@@ -50763,30 +50767,30 @@ ForgeLexer._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uE
50763
50767
  "N\x03N\x03N\x03O\x03O\x03O\x03P\x03P\x03Q\x03Q\x03R\x03R\x03S\x03S\x03" +
50764
50768
  "T\x03T\x03U\x03U\x03V\x03V\x03V\x03V\x03V\x03W\x03W\x03W\x03W\x03W\x03" +
50765
50769
  "W\x03X\x03X\x03X\x03X\x03X\x03Y\x03Y\x03Y\x03Y\x03Y\x03Z\x03Z\x03Z\x03" +
50766
- "Z\x03Z\x03Z\x03Z\x03Z\x03[\x03[\x03[\x03\\\x03\\\x03]\x03]\x03]\x03^\x03" +
50767
- "^\x03_\x03_\x03`\x03`\x03`\x03`\x05`\u02C8\n`\x03a\x03a\x03a\x03b\x03" +
50768
- "b\x03b\x03c\x03c\x03c\x03d\x03d\x03d\x03d\x03e\x03e\x03e\x03e\x03f\x03" +
50769
- "f\x03f\x03f\x03f\x03f\x03f\x03g\x03g\x03h\x03h\x03i\x06i\u02E7\ni\ri\x0E" +
50770
- "i\u02E8\x03j\x03j\x07j\u02ED\nj\fj\x0Ej\u02F0\vj\x03k\x06k\u02F3\nk\r" +
50771
- "k\x0Ek\u02F4\x03k\x03k\x03l\x03l\x03l\x03l\x07l\u02FD\nl\fl\x0El\u0300" +
50772
- "\vl\x03l\x03l\x03m\x03m\x03m\x03m\x07m\u0308\nm\fm\x0Em\u030B\vm\x03m" +
50773
- "\x03m\x03n\x03n\x03n\x03n\x07n\u0313\nn\fn\x0En\u0316\vn\x03n\x03n\x03" +
50774
- "n\x03n\x03n\x03o\x03o\x03o\x03o\x03o\x03o\x03o\x07o\u0324\no\fo\x0Eo\u0327" +
50775
- "\vo\x03o\x03o\x03\u0314\x02\x02p\x03\x02\x03\x05\x02\x04\x07\x02\x05\t" +
50776
- "\x02\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11\x02\n\x13\x02\v\x15\x02\f\x17" +
50777
- "\x02\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x10\x1F\x02\x11!\x02\x12#\x02\x13" +
50778
- "%\x02\x14\'\x02\x15)\x02\x16+\x02\x17-\x02\x18/\x02\x191\x02\x1A3\x02" +
50779
- "\x1B5\x02\x1C7\x02\x1D9\x02\x1E;\x02\x1F=\x02 ?\x02!A\x02\"C\x02#E\x02" +
50780
- "$G\x02%I\x02&K\x02\'M\x02(O\x02)Q\x02*S\x02+U\x02,W\x02-Y\x02.[\x02/]" +
50781
- "\x020_\x021a\x022c\x023e\x024g\x025i\x026k\x027m\x028o\x029q\x02:s\x02" +
50782
- ";u\x02<w\x02=y\x02>{\x02?}\x02@\x7F\x02A\x81\x02B\x83\x02C\x85\x02D\x87" +
50783
- "\x02E\x89\x02F\x8B\x02G\x8D\x02H\x8F\x02I\x91\x02J\x93\x02K\x95\x02L\x97" +
50784
- "\x02M\x99\x02N\x9B\x02O\x9D\x02P\x9F\x02Q\xA1\x02R\xA3\x02S\xA5\x02T\xA7" +
50785
- "\x02U\xA9\x02V\xAB\x02W\xAD\x02X\xAF\x02Y\xB1\x02Z\xB3\x02[\xB5\x02\\" +
50786
- "\xB7\x02]\xB9\x02^\xBB\x02_\xBD\x02`\xBF\x02a\xC1\x02b\xC3\x02c\xC5\x02" +
50787
- "d\xC7\x02e\xC9\x02f\xCB\x02g\xCD\x02h\xCF\x02i\xD1\x02j\xD3\x02k\xD5\x02" +
50788
- "l\xD7\x02m\xD9\x02n\xDB\x02o\xDD\x02p\x03\x02\b\x04\x02$$^^\x03\x022;" +
50789
- "\x07\x02&&11C\\aac|\x07\x02&&1;C\\aac|\x05\x02\v\f\x0F\x0F\"\"\x04\x02" +
50770
+ "Z\x03Z\x03Z\x03Z\x03Z\x03[\x03[\x03[\x03\\\x03\\\x03\\\x03]\x03]\x03^" +
50771
+ "\x03^\x03_\x03_\x03`\x03`\x03`\x03`\x05`\u02C8\n`\x03a\x03a\x03a\x03b" +
50772
+ "\x03b\x03b\x03c\x03c\x03c\x03d\x03d\x03d\x03d\x03e\x03e\x03e\x03e\x03" +
50773
+ "f\x03f\x03f\x03f\x03f\x03f\x03f\x03g\x03g\x03h\x03h\x03i\x06i\u02E7\n" +
50774
+ "i\ri\x0Ei\u02E8\x03j\x03j\x07j\u02ED\nj\fj\x0Ej\u02F0\vj\x03k\x06k\u02F3" +
50775
+ "\nk\rk\x0Ek\u02F4\x03k\x03k\x03l\x03l\x03l\x03l\x07l\u02FD\nl\fl\x0El" +
50776
+ "\u0300\vl\x03l\x03l\x03m\x03m\x03m\x03m\x07m\u0308\nm\fm\x0Em\u030B\v" +
50777
+ "m\x03m\x03m\x03n\x03n\x03n\x03n\x07n\u0313\nn\fn\x0En\u0316\vn\x03n\x03" +
50778
+ "n\x03n\x03n\x03n\x03o\x03o\x03o\x03o\x03o\x03o\x03o\x07o\u0324\no\fo\x0E" +
50779
+ "o\u0327\vo\x03o\x03o\x03\u0314\x02\x02p\x03\x02\x03\x05\x02\x04\x07\x02" +
50780
+ "\x05\t\x02\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11\x02\n\x13\x02\v\x15\x02" +
50781
+ "\f\x17\x02\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x10\x1F\x02\x11!\x02\x12" +
50782
+ "#\x02\x13%\x02\x14\'\x02\x15)\x02\x16+\x02\x17-\x02\x18/\x02\x191\x02" +
50783
+ "\x1A3\x02\x1B5\x02\x1C7\x02\x1D9\x02\x1E;\x02\x1F=\x02 ?\x02!A\x02\"C" +
50784
+ "\x02#E\x02$G\x02%I\x02&K\x02\'M\x02(O\x02)Q\x02*S\x02+U\x02,W\x02-Y\x02" +
50785
+ ".[\x02/]\x020_\x021a\x022c\x023e\x024g\x025i\x026k\x027m\x028o\x029q\x02" +
50786
+ ":s\x02;u\x02<w\x02=y\x02>{\x02?}\x02@\x7F\x02A\x81\x02B\x83\x02C\x85\x02" +
50787
+ "D\x87\x02E\x89\x02F\x8B\x02G\x8D\x02H\x8F\x02I\x91\x02J\x93\x02K\x95\x02" +
50788
+ "L\x97\x02M\x99\x02N\x9B\x02O\x9D\x02P\x9F\x02Q\xA1\x02R\xA3\x02S\xA5\x02" +
50789
+ "T\xA7\x02U\xA9\x02V\xAB\x02W\xAD\x02X\xAF\x02Y\xB1\x02Z\xB3\x02[\xB5\x02" +
50790
+ "\\\xB7\x02]\xB9\x02^\xBB\x02_\xBD\x02`\xBF\x02a\xC1\x02b\xC3\x02c\xC5" +
50791
+ "\x02d\xC7\x02e\xC9\x02f\xCB\x02g\xCD\x02h\xCF\x02i\xD1\x02j\xD3\x02k\xD5" +
50792
+ "\x02l\xD7\x02m\xD9\x02n\xDB\x02o\xDD\x02p\x03\x02\b\x04\x02$$^^\x03\x02" +
50793
+ "2;\x07\x02&&11C\\aac|\x07\x02&&1;C\\aac|\x05\x02\v\f\x0F\x0F\"\"\x04\x02" +
50790
50794
  "\f\f\x0F\x0F\x02\u0338\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02" +
50791
50795
  "\x02\x07\x03\x02\x02\x02\x02\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02\x02" +
50792
50796
  "\r\x03\x02\x02\x02\x02\x0F\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x02" +
@@ -50853,7 +50857,7 @@ ForgeLexer._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uE
50853
50857
  "\u0294\x03\x02\x02\x02\xA7\u0296\x03\x02\x02\x02\xA9\u0298\x03\x02\x02" +
50854
50858
  "\x02\xAB\u029A\x03\x02\x02\x02\xAD\u029F\x03\x02\x02\x02\xAF\u02A5\x03" +
50855
50859
  "\x02\x02\x02\xB1\u02AA\x03\x02\x02\x02\xB3\u02AF\x03\x02\x02\x02\xB5\u02B7" +
50856
- "\x03\x02\x02\x02\xB7\u02BA\x03\x02\x02\x02\xB9\u02BC\x03\x02\x02\x02\xBB" +
50860
+ "\x03\x02\x02\x02\xB7\u02BA\x03\x02\x02\x02\xB9\u02BD\x03\x02\x02\x02\xBB" +
50857
50861
  "\u02BF\x03\x02\x02\x02\xBD\u02C1\x03\x02\x02\x02\xBF\u02C7\x03\x02\x02" +
50858
50862
  "\x02\xC1\u02C9\x03\x02\x02\x02\xC3\u02CC\x03\x02\x02\x02\xC5\u02CF\x03" +
50859
50863
  "\x02\x02\x02\xC7\u02D2\x03\x02\x02\x02\xC9\u02D6\x03\x02\x02\x02\xCB\u02DA" +
@@ -51030,8 +51034,8 @@ ForgeLexer._serializedATNSegment1 = "\x02\x02\u01EF\u01F0\x07u\x02\x02\u01F0\u01
51030
51034
  "\u02B0\u02B1\x07z\x02\x02\u02B1\u02B2\x07c\x02\x02\u02B2\u02B3\x07o\x02" +
51031
51035
  "\x02\u02B3\u02B4\x07r\x02\x02\u02B4\u02B5\x07n\x02\x02\u02B5\u02B6\x07" +
51032
51036
  "g\x02\x02\u02B6\xB4\x03\x02\x02\x02\u02B7\u02B8\x07/\x02\x02\u02B8\u02B9" +
51033
- "\x07@\x02\x02\u02B9\xB6\x03\x02\x02\x02\u02BA\u02BB\x07?\x02\x02\u02BB" +
51034
- "\xB8\x03\x02\x02\x02\u02BC\u02BD\x07?\x02\x02\u02BD\u02BE\x07?\x02\x02" +
51037
+ "\x07@\x02\x02\u02B9\xB6\x03\x02\x02\x02\u02BA\u02BB\x07B\x02\x02\u02BB" +
51038
+ "\u02BC\x07<\x02\x02\u02BC\xB8\x03\x02\x02\x02\u02BD\u02BE\x07?\x02\x02" +
51035
51039
  "\u02BE\xBA\x03\x02\x02\x02\u02BF\u02C0\x07>\x02\x02\u02C0\xBC\x03\x02" +
51036
51040
  "\x02\x02\u02C1\u02C2\x07@\x02\x02\u02C2\xBE\x03\x02\x02\x02\u02C3\u02C4" +
51037
51041
  "\x07>\x02\x02\u02C4\u02C8\x07?\x02\x02\u02C5\u02C6\x07?\x02\x02\u02C6" +
@@ -53356,6 +53360,7 @@ class ForgeParser extends Parser_1.Parser {
53356
53360
  case ForgeParser.BACKQUOTE_TOK:
53357
53361
  case ForgeParser.THIS_TOK:
53358
53362
  case ForgeParser.SEXPR_TOK:
53363
+ case ForgeParser.GET_LABEL_TOK:
53359
53364
  case ForgeParser.SUM_TOK:
53360
53365
  case ForgeParser.INT_TOK:
53361
53366
  case ForgeParser.NUM_CONST_TOK:
@@ -53391,7 +53396,7 @@ class ForgeParser extends Parser_1.Parser {
53391
53396
  {
53392
53397
  this.state = 526;
53393
53398
  _la = this._input.LA(1);
53394
- if (!(_la === ForgeParser.IN_TOK || _la === ForgeParser.IS_TOK || ((((_la - 91)) & ~0x1F) === 0 && ((1 << (_la - 91)) & ((1 << (ForgeParser.EQ_TOK - 91)) | (1 << (ForgeParser.LABEL_EQ_TOK - 91)) | (1 << (ForgeParser.LT_TOK - 91)) | (1 << (ForgeParser.GT_TOK - 91)) | (1 << (ForgeParser.LEQ_TOK - 91)) | (1 << (ForgeParser.GEQ_TOK - 91)) | (1 << (ForgeParser.NI_TOK - 91)))) !== 0))) {
53399
+ if (!(_la === ForgeParser.IN_TOK || _la === ForgeParser.IS_TOK || ((((_la - 92)) & ~0x1F) === 0 && ((1 << (_la - 92)) & ((1 << (ForgeParser.EQ_TOK - 92)) | (1 << (ForgeParser.LT_TOK - 92)) | (1 << (ForgeParser.GT_TOK - 92)) | (1 << (ForgeParser.LEQ_TOK - 92)) | (1 << (ForgeParser.GEQ_TOK - 92)) | (1 << (ForgeParser.NI_TOK - 92)))) !== 0))) {
53395
53400
  this._errHandler.recoverInline(this);
53396
53401
  }
53397
53402
  else {
@@ -53461,7 +53466,7 @@ class ForgeParser extends Parser_1.Parser {
53461
53466
  this.state = 536;
53462
53467
  this._errHandler.sync(this);
53463
53468
  _la = this._input.LA(1);
53464
- while (((((_la - 9)) & ~0x1F) === 0 && ((1 << (_la - 9)) & ((1 << (ForgeParser.LEFT_CURLY_TOK - 9)) | (1 << (ForgeParser.LONE_TOK - 9)) | (1 << (ForgeParser.SOME_TOK - 9)) | (1 << (ForgeParser.ONE_TOK - 9)) | (1 << (ForgeParser.TWO_TOK - 9)) | (1 << (ForgeParser.SET_TOK - 9)) | (1 << (ForgeParser.LEFT_PAREN_TOK - 9)) | (1 << (ForgeParser.NONE_TOK - 9)) | (1 << (ForgeParser.UNIV_TOK - 9)) | (1 << (ForgeParser.IDEN_TOK - 9)) | (1 << (ForgeParser.MINUS_TOK - 9)))) !== 0) || ((((_la - 49)) & ~0x1F) === 0 && ((1 << (_la - 49)) & ((1 << (ForgeParser.ALL_TOK - 49)) | (1 << (ForgeParser.LET_TOK - 49)) | (1 << (ForgeParser.BIND_TOK - 49)) | (1 << (ForgeParser.NEG_TOK - 49)) | (1 << (ForgeParser.ALWAYS_TOK - 49)) | (1 << (ForgeParser.EVENTUALLY_TOK - 49)) | (1 << (ForgeParser.AFTER_TOK - 49)) | (1 << (ForgeParser.BEFORE_TOK - 49)) | (1 << (ForgeParser.ONCE_TOK - 49)) | (1 << (ForgeParser.HISTORICALLY_TOK - 49)) | (1 << (ForgeParser.CARD_TOK - 49)) | (1 << (ForgeParser.TILDE_TOK - 49)))) !== 0) || ((((_la - 81)) & ~0x1F) === 0 && ((1 << (_la - 81)) & ((1 << (ForgeParser.EXP_TOK - 81)) | (1 << (ForgeParser.STAR_TOK - 81)) | (1 << (ForgeParser.AT_TOK - 81)) | (1 << (ForgeParser.BACKQUOTE_TOK - 81)) | (1 << (ForgeParser.THIS_TOK - 81)) | (1 << (ForgeParser.SEXPR_TOK - 81)) | (1 << (ForgeParser.NO_TOK - 81)) | (1 << (ForgeParser.SUM_TOK - 81)) | (1 << (ForgeParser.INT_TOK - 81)) | (1 << (ForgeParser.NUM_CONST_TOK - 81)) | (1 << (ForgeParser.IDENTIFIER_TOK - 81)))) !== 0)) {
53469
+ while (((((_la - 9)) & ~0x1F) === 0 && ((1 << (_la - 9)) & ((1 << (ForgeParser.LEFT_CURLY_TOK - 9)) | (1 << (ForgeParser.LONE_TOK - 9)) | (1 << (ForgeParser.SOME_TOK - 9)) | (1 << (ForgeParser.ONE_TOK - 9)) | (1 << (ForgeParser.TWO_TOK - 9)) | (1 << (ForgeParser.SET_TOK - 9)) | (1 << (ForgeParser.LEFT_PAREN_TOK - 9)) | (1 << (ForgeParser.NONE_TOK - 9)) | (1 << (ForgeParser.UNIV_TOK - 9)) | (1 << (ForgeParser.IDEN_TOK - 9)) | (1 << (ForgeParser.MINUS_TOK - 9)))) !== 0) || ((((_la - 49)) & ~0x1F) === 0 && ((1 << (_la - 49)) & ((1 << (ForgeParser.ALL_TOK - 49)) | (1 << (ForgeParser.LET_TOK - 49)) | (1 << (ForgeParser.BIND_TOK - 49)) | (1 << (ForgeParser.NEG_TOK - 49)) | (1 << (ForgeParser.ALWAYS_TOK - 49)) | (1 << (ForgeParser.EVENTUALLY_TOK - 49)) | (1 << (ForgeParser.AFTER_TOK - 49)) | (1 << (ForgeParser.BEFORE_TOK - 49)) | (1 << (ForgeParser.ONCE_TOK - 49)) | (1 << (ForgeParser.HISTORICALLY_TOK - 49)) | (1 << (ForgeParser.CARD_TOK - 49)) | (1 << (ForgeParser.TILDE_TOK - 49)))) !== 0) || ((((_la - 81)) & ~0x1F) === 0 && ((1 << (_la - 81)) & ((1 << (ForgeParser.EXP_TOK - 81)) | (1 << (ForgeParser.STAR_TOK - 81)) | (1 << (ForgeParser.AT_TOK - 81)) | (1 << (ForgeParser.BACKQUOTE_TOK - 81)) | (1 << (ForgeParser.THIS_TOK - 81)) | (1 << (ForgeParser.SEXPR_TOK - 81)) | (1 << (ForgeParser.GET_LABEL_TOK - 81)) | (1 << (ForgeParser.NO_TOK - 81)) | (1 << (ForgeParser.SUM_TOK - 81)) | (1 << (ForgeParser.INT_TOK - 81)) | (1 << (ForgeParser.NUM_CONST_TOK - 81)) | (1 << (ForgeParser.IDENTIFIER_TOK - 81)))) !== 0)) {
53465
53470
  {
53466
53471
  {
53467
53472
  this.state = 533;
@@ -54601,6 +54606,7 @@ class ForgeParser extends Parser_1.Parser {
54601
54606
  case ForgeParser.BACKQUOTE_TOK:
54602
54607
  case ForgeParser.THIS_TOK:
54603
54608
  case ForgeParser.SEXPR_TOK:
54609
+ case ForgeParser.GET_LABEL_TOK:
54604
54610
  case ForgeParser.NO_TOK:
54605
54611
  case ForgeParser.SUM_TOK:
54606
54612
  case ForgeParser.INT_TOK:
@@ -54792,6 +54798,7 @@ class ForgeParser extends Parser_1.Parser {
54792
54798
  case ForgeParser.BACKQUOTE_TOK:
54793
54799
  case ForgeParser.THIS_TOK:
54794
54800
  case ForgeParser.SEXPR_TOK:
54801
+ case ForgeParser.GET_LABEL_TOK:
54795
54802
  case ForgeParser.SUM_TOK:
54796
54803
  case ForgeParser.INT_TOK:
54797
54804
  case ForgeParser.NUM_CONST_TOK:
@@ -54942,6 +54949,7 @@ class ForgeParser extends Parser_1.Parser {
54942
54949
  case ForgeParser.BACKQUOTE_TOK:
54943
54950
  case ForgeParser.THIS_TOK:
54944
54951
  case ForgeParser.SEXPR_TOK:
54952
+ case ForgeParser.GET_LABEL_TOK:
54945
54953
  case ForgeParser.SUM_TOK:
54946
54954
  case ForgeParser.INT_TOK:
54947
54955
  case ForgeParser.NUM_CONST_TOK:
@@ -55496,11 +55504,12 @@ class ForgeParser extends Parser_1.Parser {
55496
55504
  case ForgeParser.TILDE_TOK:
55497
55505
  case ForgeParser.EXP_TOK:
55498
55506
  case ForgeParser.STAR_TOK:
55507
+ case ForgeParser.GET_LABEL_TOK:
55499
55508
  this.enterOuterAlt(_localctx, 2);
55500
55509
  {
55501
55510
  this.state = 867;
55502
55511
  _la = this._input.LA(1);
55503
- if (!(((((_la - 80)) & ~0x1F) === 0 && ((1 << (_la - 80)) & ((1 << (ForgeParser.TILDE_TOK - 80)) | (1 << (ForgeParser.EXP_TOK - 80)) | (1 << (ForgeParser.STAR_TOK - 80)))) !== 0))) {
55512
+ if (!(((((_la - 80)) & ~0x1F) === 0 && ((1 << (_la - 80)) & ((1 << (ForgeParser.TILDE_TOK - 80)) | (1 << (ForgeParser.EXP_TOK - 80)) | (1 << (ForgeParser.STAR_TOK - 80)) | (1 << (ForgeParser.GET_LABEL_TOK - 80)))) !== 0))) {
55504
55513
  this._errHandler.recoverInline(this);
55505
55514
  }
55506
55515
  else {
@@ -56678,8 +56687,8 @@ ForgeParser.INST_TOK = 87;
56678
56687
  ForgeParser.EVAL_TOK = 88;
56679
56688
  ForgeParser.EXAMPLE_TOK = 89;
56680
56689
  ForgeParser.ARROW_TOK = 90;
56681
- ForgeParser.EQ_TOK = 91;
56682
- ForgeParser.LABEL_EQ_TOK = 92;
56690
+ ForgeParser.GET_LABEL_TOK = 91;
56691
+ ForgeParser.EQ_TOK = 92;
56683
56692
  ForgeParser.LT_TOK = 93;
56684
56693
  ForgeParser.GT_TOK = 94;
56685
56694
  ForgeParser.LEQ_TOK = 95;
@@ -56813,7 +56822,7 @@ ForgeParser._LITERAL_NAMES = [
56813
56822
  "'since'", "'triggered'", undefined, "'always'", "'eventually'", "'after'",
56814
56823
  "'before'", "'once'", "'historically'", "'#'", "'++'", "'&'", "'<:'",
56815
56824
  "':>'", "'''", "'~'", "'^'", "'*'", "'@'", "'`'", "'this'", "'sexpr'",
56816
- "'inst'", "'eval'", "'example'", "'->'", "'='", "'=='", "'<'", "'>'",
56825
+ "'inst'", "'eval'", "'example'", "'->'", "'@:'", "'='", "'<'", "'>'",
56817
56826
  undefined, "'>='", "'ni'", "'no'", "'sum'", "'Int'", "'option'", "','",
56818
56827
  "'/'",
56819
56828
  ];
@@ -56833,8 +56842,8 @@ ForgeParser._SYMBOLIC_NAMES = [
56833
56842
  "EVENTUALLY_TOK", "AFTER_TOK", "BEFORE_TOK", "ONCE_TOK", "HISTORICALLY_TOK",
56834
56843
  "CARD_TOK", "PPLUS_TOK", "AMP_TOK", "SUBT_TOK", "SUPT_TOK", "PRIME_TOK",
56835
56844
  "TILDE_TOK", "EXP_TOK", "STAR_TOK", "AT_TOK", "BACKQUOTE_TOK", "THIS_TOK",
56836
- "SEXPR_TOK", "INST_TOK", "EVAL_TOK", "EXAMPLE_TOK", "ARROW_TOK", "EQ_TOK",
56837
- "LABEL_EQ_TOK", "LT_TOK", "GT_TOK", "LEQ_TOK", "GEQ_TOK", "NI_TOK", "NO_TOK",
56845
+ "SEXPR_TOK", "INST_TOK", "EVAL_TOK", "EXAMPLE_TOK", "ARROW_TOK", "GET_LABEL_TOK",
56846
+ "EQ_TOK", "LT_TOK", "GT_TOK", "LEQ_TOK", "GEQ_TOK", "NI_TOK", "NO_TOK",
56838
56847
  "SUM_TOK", "INT_TOK", "OPTION_TOK", "COMMA_TOK", "SLASH_TOK", "NUM_CONST_TOK",
56839
56848
  "IDENTIFIER_TOK", "WS", "CCOMMENT", "COMMENT", "MULTCOMMENT", "LANG_DECL",
56840
56849
  ];
@@ -56943,42 +56952,42 @@ ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\u
56943
56952
  "\x8E\x02\x90\x02\x92\x02\x94\x02\x96\x02\x98\x02\x9A\x02\x9C\x02\x9E\x02" +
56944
56953
  "\xA0\x02\xA2\x02\xA4\x02\xA6\x02\xA8\x02\xAA\x02\x02\x10\x03\x02\x10\x13" +
56945
56954
  "\x04\x02\x10\x10\x12\x16\x05\x02\x10\x10\x12\x12\x14\x16\x03\x02 !\x03" +
56946
- "\x02*.\x04\x02*+--\x03\x0245\x03\x0267\x05\x02\x0E\x0E))]c\x04\x02\x10" +
56947
- "\x14dd\x04\x02\x0F\x0F((\x03\x02OP\x03\x02RT\x04\x02\\\\hh\x02\u044E\x02" +
56948
- "\xAC\x03\x02\x02\x02\x04\xBB\x03\x02\x02\x02\x06\xD0\x03\x02\x02\x02\b" +
56949
- "\xE4\x03\x02\x02\x02\n\xF7\x03\x02\x02\x02\f\xFA\x03\x02\x02\x02\x0E\u011A" +
56950
- "\x03\x02\x02\x02\x10\u011C\x03\x02\x02\x02\x12\u011E\x03\x02\x02\x02\x14" +
56951
- "\u0120\x03\x02\x02\x02\x16\u0123\x03\x02\x02\x02\x18\u012D\x03\x02\x02" +
56952
- "\x02\x1A\u0137\x03\x02\x02\x02\x1C\u013E\x03\x02\x02\x02\x1E\u0140\x03" +
56953
- "\x02\x02\x02 \u015D\x03\x02\x02\x02\"\u015F\x03\x02\x02\x02$\u0168\x03" +
56954
- "\x02\x02\x02&\u0179\x03\x02\x02\x02(\u018A\x03\x02\x02\x02*\u0192\x03" +
56955
- "\x02\x02\x02,\u01A3\x03\x02\x02\x02.\u01A6\x03\x02\x02\x020\u01B2\x03" +
56956
- "\x02\x02\x022\u01B4\x03\x02\x02\x024\u01BF\x03\x02\x02\x026\u01D8\x03" +
56957
- "\x02\x02\x028\u01E5\x03\x02\x02\x02:\u01F2\x03\x02\x02\x02<\u0205\x03" +
56958
- "\x02\x02\x02>\u0209\x03\x02\x02\x02@\u0210\x03\x02\x02\x02B\u0212\x03" +
56959
- "\x02\x02\x02D\u0216\x03\x02\x02\x02F\u0222\x03\x02\x02\x02H\u0228\x03" +
56960
- "\x02\x02\x02J\u0239\x03\x02\x02\x02L\u023B\x03\x02\x02\x02N\u0245\x03" +
56961
- "\x02\x02\x02P\u024C\x03\x02\x02\x02R\u0253\x03\x02\x02\x02T\u025A\x03" +
56962
- "\x02\x02\x02V\u0261\x03\x02\x02\x02X\u0268\x03\x02\x02\x02Z\u026F\x03" +
56963
- "\x02\x02\x02\\\u0276\x03\x02\x02\x02^\u027D\x03\x02\x02\x02`\u028F\x03" +
56964
- "\x02\x02\x02b\u0291\x03\x02\x02\x02d\u029C\x03\x02\x02\x02f\u02A7\x03" +
56965
- "\x02\x02\x02h\u02BA\x03\x02\x02\x02j\u02BC\x03\x02\x02\x02l\u02D8\x03" +
56966
- "\x02\x02\x02n\u02E9\x03\x02\x02\x02p\u02EB\x03\x02\x02\x02r\u02FD\x03" +
56967
- "\x02\x02\x02t\u02FF\x03\x02\x02\x02v\u030D\x03\x02\x02\x02x\u030F\x03" +
56968
- "\x02\x02\x02z\u031A\x03\x02\x02\x02|\u0325\x03\x02\x02\x02~\u0331\x03" +
56969
- "\x02\x02\x02\x80\u033C\x03\x02\x02\x02\x82\u0350\x03\x02\x02\x02\x84\u035A" +
56970
- "\x03\x02\x02\x02\x86\u0367\x03\x02\x02\x02\x88\u037B\x03\x02\x02\x02\x8A" +
56971
- "\u0382\x03\x02\x02\x02\x8C\u0384\x03\x02\x02\x02\x8E\u0386\x03\x02\x02" +
56972
- "\x02\x90\u0388\x03\x02\x02\x02\x92\u038E\x03\x02\x02\x02\x94\u0390\x03" +
56973
- "\x02\x02\x02\x96\u0393\x03\x02\x02\x02\x98\u039A\x03\x02\x02\x02\x9A\u03A5" +
56974
- "\x03\x02\x02\x02\x9C\u03A7\x03\x02\x02\x02\x9E\u03B5\x03\x02\x02\x02\xA0" +
56975
- "\u03BC\x03\x02\x02\x02\xA2\u03C5\x03\x02\x02\x02\xA4\u03D1\x03\x02\x02" +
56976
- "\x02\xA6\u03D9\x03\x02\x02\x02\xA8\u03E9\x03\x02\x02\x02\xAA\u03F9\x03" +
56977
- "\x02\x02\x02\xAC\xAE\x07\x1A\x02\x02\xAD\xAF\x05\x1C\x0F\x02\xAE\xAD\x03" +
56978
- "\x02\x02\x02\xAE\xAF\x03\x02\x02\x02\xAF\xB3\x03\x02\x02\x02\xB0\xB1\x05" +
56979
- "J&\x02\xB1\xB2\x07\x1B\x02\x02\xB2\xB4\x03\x02\x02\x02\xB3\xB0\x03\x02" +
56980
- "\x02\x02\xB3\xB4\x03\x02\x02\x02\xB4\xB5\x03\x02\x02\x02\xB5\xB7\x05N" +
56981
- "(\x02\xB6\xB8\x05 \x11\x02\xB7\xB6\x03\x02\x02\x02\xB7\xB8\x03\x02\x02" +
56955
+ "\x02*.\x04\x02*+--\x03\x0245\x03\x0267\x05\x02\x0E\x0E))^c\x04\x02\x10" +
56956
+ "\x14dd\x04\x02\x0F\x0F((\x03\x02OP\x04\x02RT]]\x04\x02\\\\hh\x02\u044E" +
56957
+ "\x02\xAC\x03\x02\x02\x02\x04\xBB\x03\x02\x02\x02\x06\xD0\x03\x02\x02\x02" +
56958
+ "\b\xE4\x03\x02\x02\x02\n\xF7\x03\x02\x02\x02\f\xFA\x03\x02\x02\x02\x0E" +
56959
+ "\u011A\x03\x02\x02\x02\x10\u011C\x03\x02\x02\x02\x12\u011E\x03\x02\x02" +
56960
+ "\x02\x14\u0120\x03\x02\x02\x02\x16\u0123\x03\x02\x02\x02\x18\u012D\x03" +
56961
+ "\x02\x02\x02\x1A\u0137\x03\x02\x02\x02\x1C\u013E\x03\x02\x02\x02\x1E\u0140" +
56962
+ "\x03\x02\x02\x02 \u015D\x03\x02\x02\x02\"\u015F\x03\x02\x02\x02$\u0168" +
56963
+ "\x03\x02\x02\x02&\u0179\x03\x02\x02\x02(\u018A\x03\x02\x02\x02*\u0192" +
56964
+ "\x03\x02\x02\x02,\u01A3\x03\x02\x02\x02.\u01A6\x03\x02\x02\x020\u01B2" +
56965
+ "\x03\x02\x02\x022\u01B4\x03\x02\x02\x024\u01BF\x03\x02\x02\x026\u01D8" +
56966
+ "\x03\x02\x02\x028\u01E5\x03\x02\x02\x02:\u01F2\x03\x02\x02\x02<\u0205" +
56967
+ "\x03\x02\x02\x02>\u0209\x03\x02\x02\x02@\u0210\x03\x02\x02\x02B\u0212" +
56968
+ "\x03\x02\x02\x02D\u0216\x03\x02\x02\x02F\u0222\x03\x02\x02\x02H\u0228" +
56969
+ "\x03\x02\x02\x02J\u0239\x03\x02\x02\x02L\u023B\x03\x02\x02\x02N\u0245" +
56970
+ "\x03\x02\x02\x02P\u024C\x03\x02\x02\x02R\u0253\x03\x02\x02\x02T\u025A" +
56971
+ "\x03\x02\x02\x02V\u0261\x03\x02\x02\x02X\u0268\x03\x02\x02\x02Z\u026F" +
56972
+ "\x03\x02\x02\x02\\\u0276\x03\x02\x02\x02^\u027D\x03\x02\x02\x02`\u028F" +
56973
+ "\x03\x02\x02\x02b\u0291\x03\x02\x02\x02d\u029C\x03\x02\x02\x02f\u02A7" +
56974
+ "\x03\x02\x02\x02h\u02BA\x03\x02\x02\x02j\u02BC\x03\x02\x02\x02l\u02D8" +
56975
+ "\x03\x02\x02\x02n\u02E9\x03\x02\x02\x02p\u02EB\x03\x02\x02\x02r\u02FD" +
56976
+ "\x03\x02\x02\x02t\u02FF\x03\x02\x02\x02v\u030D\x03\x02\x02\x02x\u030F" +
56977
+ "\x03\x02\x02\x02z\u031A\x03\x02\x02\x02|\u0325\x03\x02\x02\x02~\u0331" +
56978
+ "\x03\x02\x02\x02\x80\u033C\x03\x02\x02\x02\x82\u0350\x03\x02\x02\x02\x84" +
56979
+ "\u035A\x03\x02\x02\x02\x86\u0367\x03\x02\x02\x02\x88\u037B\x03\x02\x02" +
56980
+ "\x02\x8A\u0382\x03\x02\x02\x02\x8C\u0384\x03\x02\x02\x02\x8E\u0386\x03" +
56981
+ "\x02\x02\x02\x90\u0388\x03\x02\x02\x02\x92\u038E\x03\x02\x02\x02\x94\u0390" +
56982
+ "\x03\x02\x02\x02\x96\u0393\x03\x02\x02\x02\x98\u039A\x03\x02\x02\x02\x9A" +
56983
+ "\u03A5\x03\x02\x02\x02\x9C\u03A7\x03\x02\x02\x02\x9E\u03B5\x03\x02\x02" +
56984
+ "\x02\xA0\u03BC\x03\x02\x02\x02\xA2\u03C5\x03\x02\x02\x02\xA4\u03D1\x03" +
56985
+ "\x02\x02\x02\xA6\u03D9\x03\x02\x02\x02\xA8\u03E9\x03\x02\x02\x02\xAA\u03F9" +
56986
+ "\x03\x02\x02\x02\xAC\xAE\x07\x1A\x02\x02\xAD\xAF\x05\x1C\x0F\x02\xAE\xAD" +
56987
+ "\x03\x02\x02\x02\xAE\xAF\x03\x02\x02\x02\xAF\xB3\x03\x02\x02\x02\xB0\xB1" +
56988
+ "\x05J&\x02\xB1\xB2\x07\x1B\x02\x02\xB2\xB4\x03\x02\x02\x02\xB3\xB0\x03" +
56989
+ "\x02\x02\x02\xB3\xB4\x03\x02\x02\x02\xB4\xB5\x03\x02\x02\x02\xB5\xB7\x05" +
56990
+ "N(\x02\xB6\xB8\x05 \x11\x02\xB7\xB6\x03\x02\x02\x02\xB7\xB8\x03\x02\x02" +
56982
56991
  "\x02\xB8\xB9\x03\x02\x02\x02\xB9\xBA\x05D#\x02\xBA\x03\x03\x02\x02\x02" +
56983
56992
  "\xBB\xBC\x05`1\x02\xBC\xBD\x07\x02\x02\x03\xBD\x05\x03\x02\x02\x02\xBE" +
56984
56993
  "\xC0\x05\b\x05\x02\xBF\xBE\x03\x02\x02\x02\xC0\xC3\x03\x02\x02\x02\xC1" +
@@ -57094,21 +57103,21 @@ ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\u
57094
57103
  "\u01AF\x03\x02\x02\x02\u01B31\x03\x02\x02\x02\u01B4\u01B5\x07\x1F\x02" +
57095
57104
  "\x02\u01B5\u01B6\x05`1\x02\u01B6\u01B7\x07)\x02\x02\u01B7\u01B9\t\x07" +
57096
57105
  "\x02\x02\u01B8\u01BA\x05,\x17\x02\u01B9\u01B8\x03\x02\x02\x02\u01B9\u01BA" +
57097
- "\x03\x02\x02\x02\u01BA\u01BD\x03\x02\x02\x02\u01BB\u01BC\x07\"";
57098
- ForgeParser._serializedATNSegment1 = "\x02\x02\u01BC\u01BE\x05\x9EP\x02\u01BD\u01BB\x03\x02\x02\x02\u01BD\u01BE" +
57099
- "\x03\x02\x02\x02\u01BE3\x03\x02\x02\x02\u01BF\u01C0\x07\x1F\x02\x02\u01C0" +
57100
- "\u01C2\x073\x02\x02\u01C1\u01C3\x07\x17\x02\x02\u01C2\u01C1\x03\x02\x02" +
57101
- "\x02\u01C2\u01C3\x03\x02\x02\x02\u01C3\u01C4\x03\x02\x02\x02\u01C4\u01C5" +
57102
- "\x05V,\x02\u01C5\u01C6\x072\x02\x02\u01C6\u01C7\x05`1\x02\u01C7\u01C8" +
57103
- "\x07)\x02\x02\u01C8\u01C9\t\b\x02\x02\u01C9\u01CA\x07\"\x02\x02\u01CA" +
57104
- "\u01CF\x05N(\x02\u01CB\u01CC\x07\x04\x02\x02\u01CC\u01CD\x05^0\x02\u01CD" +
57105
- "\u01CE\x07\x05\x02\x02\u01CE\u01D0\x03\x02\x02\x02\u01CF\u01CB\x03\x02" +
57106
- "\x02\x02\u01CF\u01D0\x03\x02\x02\x02\u01D0\u01D2\x03\x02\x02\x02\u01D1" +
57107
- "\u01D3\x05,\x17\x02\u01D2\u01D1\x03\x02\x02\x02\u01D2\u01D3\x03\x02\x02" +
57108
- "\x02\u01D3\u01D6\x03\x02\x02\x02\u01D4\u01D5\x07\"\x02\x02\u01D5\u01D7" +
57109
- "\x05\x9EP\x02\u01D6\u01D4\x03\x02\x02\x02\u01D6\u01D7\x03\x02\x02\x02" +
57110
- "\u01D75\x03\x02\x02\x02\u01D8\u01D9\x07\x1F\x02\x02\u01D9\u01DA\x05`1" +
57111
- "\x02\u01DA\u01DB\x07)\x02\x02\u01DB\u01DC\t\b\x02\x02\u01DC\u01DD\x07" +
57106
+ "\x03\x02\x02\x02\u01BA\u01BD\x03\x02\x02\x02\u01BB\u01BC";
57107
+ ForgeParser._serializedATNSegment1 = "\x07\"\x02\x02\u01BC\u01BE\x05\x9EP\x02\u01BD\u01BB\x03\x02\x02\x02\u01BD" +
57108
+ "\u01BE\x03\x02\x02\x02\u01BE3\x03\x02\x02\x02\u01BF\u01C0\x07\x1F\x02" +
57109
+ "\x02\u01C0\u01C2\x073\x02\x02\u01C1\u01C3\x07\x17\x02\x02\u01C2\u01C1" +
57110
+ "\x03\x02\x02\x02\u01C2\u01C3\x03\x02\x02\x02\u01C3\u01C4\x03\x02\x02\x02" +
57111
+ "\u01C4\u01C5\x05V,\x02\u01C5\u01C6\x072\x02\x02\u01C6\u01C7\x05`1\x02" +
57112
+ "\u01C7\u01C8\x07)\x02\x02\u01C8\u01C9\t\b\x02\x02\u01C9\u01CA\x07\"\x02" +
57113
+ "\x02\u01CA\u01CF\x05N(\x02\u01CB\u01CC\x07\x04\x02\x02\u01CC\u01CD\x05" +
57114
+ "^0\x02\u01CD\u01CE\x07\x05\x02\x02\u01CE\u01D0\x03\x02\x02\x02\u01CF\u01CB" +
57115
+ "\x03\x02\x02\x02\u01CF\u01D0\x03\x02\x02\x02\u01D0\u01D2\x03\x02\x02\x02" +
57116
+ "\u01D1\u01D3\x05,\x17\x02\u01D2\u01D1\x03\x02\x02\x02\u01D2\u01D3\x03" +
57117
+ "\x02\x02\x02\u01D3\u01D6\x03\x02\x02\x02\u01D4\u01D5\x07\"\x02\x02\u01D5" +
57118
+ "\u01D7\x05\x9EP\x02\u01D6\u01D4\x03\x02\x02\x02\u01D6\u01D7\x03\x02\x02" +
57119
+ "\x02\u01D75\x03\x02\x02\x02\u01D8\u01D9\x07\x1F\x02\x02\u01D9\u01DA\x05" +
57120
+ "`1\x02\u01DA\u01DB\x07)\x02\x02\u01DB\u01DC\t\b\x02\x02\u01DC\u01DD\x07" +
57112
57121
  "\"\x02\x02\u01DD\u01DF\x05N(\x02\u01DE\u01E0\x05,\x17\x02\u01DF\u01DE" +
57113
57122
  "\x03\x02\x02\x02\u01DF\u01E0\x03\x02\x02\x02\u01E0\u01E3\x03\x02\x02\x02" +
57114
57123
  "\u01E1\u01E2\x07\"\x02\x02\u01E2\u01E4\x05\x9EP\x02\u01E3\u01E1\x03\x02" +
@@ -57134,7 +57143,7 @@ ForgeParser._serializedATNSegment1 = "\x02\x02\u01BC\u01BE\x05\x9EP\x02\u01BD\u0
57134
57143
  "\u020F\x05\x10\t\x02\u020D\u020F\x07\x14\x02\x02\u020E\u020C\x03\x02\x02" +
57135
57144
  "\x02\u020E\u020D\x03\x02\x02\x02\u020E\u020F\x03\x02\x02\x02\u020F?\x03" +
57136
57145
  "\x02\x02\x02\u0210\u0211\t\n\x02\x02\u0211A\x03\x02\x02\x02\u0212\u0213" +
57137
- "\x05N(\x02\u0213\u0214\x07]\x02\x02\u0214\u0215\x05`1\x02\u0215C\x03\x02" +
57146
+ "\x05N(\x02\u0213\u0214\x07^\x02\x02\u0214\u0215\x05`1\x02\u0215C\x03\x02" +
57138
57147
  "\x02\x02\u0216\u021A\x07\v\x02\x02\u0217\u0219\x05`1\x02\u0218\u0217\x03" +
57139
57148
  "\x02\x02\x02\u0219\u021C\x03\x02\x02\x02\u021A\u0218\x03\x02\x02\x02\u021A" +
57140
57149
  "\u021B\x03\x02\x02\x02\u021B\u021D\x03\x02\x02\x02\u021C\u021A\x03\x02" +
@@ -57300,7 +57309,7 @@ ForgeParser._serializedATNSegment1 = "\x02\x02\u01BC\u01BE\x05\x9EP\x02\u01BD\u0
57300
57309
  "\u0395\x05N(\x02\u0395\u0396\x07)\x02\x02\u0396\u0397\x05`1\x02\u0397" +
57301
57310
  "\u0398\x07\"\x02\x02\u0398\u0399\x05\x9EP\x02\u0399\x97\x03\x02\x02\x02" +
57302
57311
  "\u039A\u039B\x05N(\x02\u039B\u039C\x07\x18\x02\x02\u039C\u039D\x05\x8A" +
57303
- "F\x02\u039D\u039E\x07]\x02\x02\u039E\u039F\x05`1\x02\u039F\x99\x03\x02" +
57312
+ "F\x02\u039D\u039E\x07^\x02\x02\u039E\u039F\x05`1\x02\u039F\x99\x03\x02" +
57304
57313
  "\x02\x02\u03A0\u03A6\x05\x9CO\x02\u03A1\u03A2\x05\x9CO\x02\u03A2\u03A3" +
57305
57314
  "\x07h\x02\x02\u03A3\u03A4\x05\x9AN\x02\u03A4\u03A6\x03\x02\x02\x02\u03A5" +
57306
57315
  "\u03A0\x03\x02\x02\x02\u03A5\u03A1\x03\x02\x02\x02\u03A6\x9B\x03\x02\x02" +
@@ -58716,7 +58725,6 @@ exports.ArrowOpContext = ArrowOpContext;
58716
58725
  class CompareOpContext extends ParserRuleContext_1.ParserRuleContext {
58717
58726
  IN_TOK() { return this.tryGetToken(ForgeParser.IN_TOK, 0); }
58718
58727
  EQ_TOK() { return this.tryGetToken(ForgeParser.EQ_TOK, 0); }
58719
- LABEL_EQ_TOK() { return this.tryGetToken(ForgeParser.LABEL_EQ_TOK, 0); }
58720
58728
  LT_TOK() { return this.tryGetToken(ForgeParser.LT_TOK, 0); }
58721
58729
  GT_TOK() { return this.tryGetToken(ForgeParser.GT_TOK, 0); }
58722
58730
  LEQ_TOK() { return this.tryGetToken(ForgeParser.LEQ_TOK, 0); }
@@ -60052,6 +60060,7 @@ class Expr17Context extends ParserRuleContext_1.ParserRuleContext {
60052
60060
  TILDE_TOK() { return this.tryGetToken(ForgeParser.TILDE_TOK, 0); }
60053
60061
  EXP_TOK() { return this.tryGetToken(ForgeParser.EXP_TOK, 0); }
60054
60062
  STAR_TOK() { return this.tryGetToken(ForgeParser.STAR_TOK, 0); }
60063
+ GET_LABEL_TOK() { return this.tryGetToken(ForgeParser.GET_LABEL_TOK, 0); }
60055
60064
  constructor(parent, invokingState) {
60056
60065
  super(parent, invokingState);
60057
60066
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "simple-graph-query",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "TypeScript evaluator for Forge expressions with browser-compatible UMD bundle",
5
5
  "main": "dist/simple-graph-query.bundle.js",
6
6
  "types": "dist/index.d.ts",