@mojir/lits 2.1.11 → 2.1.12

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.
package/dist/cli/cli.js CHANGED
@@ -92,7 +92,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
92
92
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
93
93
  };
94
94
 
95
- var version = "2.1.11";
95
+ var version = "2.1.12";
96
96
 
97
97
  function getCodeMarker(sourceCodeInfo) {
98
98
  if (!sourceCodeInfo.position || !sourceCodeInfo.code)
@@ -12899,6 +12899,8 @@ var binaryOperators = [
12899
12899
  '|>', // pipe
12900
12900
  ];
12901
12901
  var otherOperators = [
12902
+ '?', // conditional operator
12903
+ ':', // conditional operator
12902
12904
  '->', // lambda
12903
12905
  '...', // rest
12904
12906
  '.', // property accessor
@@ -12908,17 +12910,12 @@ var otherOperators = [
12908
12910
  ];
12909
12911
  var symbolicOperators = __spreadArray(__spreadArray([], __read(binaryOperators), false), __read(otherOperators), false);
12910
12912
  var nonFunctionOperators = [
12911
- '??',
12912
- '&&',
12913
- '||',
12914
12913
  'comment',
12915
12914
  'cond',
12916
12915
  'def',
12917
12916
  'defined?',
12918
- // 'defn',
12919
12917
  'do',
12920
12918
  'doseq',
12921
- // 'fn',
12922
12919
  'if',
12923
12920
  'let',
12924
12921
  'loop',
@@ -13496,8 +13493,9 @@ function untokenize(tokenStream) {
13496
13493
  }, '');
13497
13494
  }
13498
13495
 
13499
- var exponentiationPrecedence = 11;
13500
- var binaryFunctionalOperatorPrecedence = 2;
13496
+ var exponentiationPrecedence = 12;
13497
+ var binaryFunctionalOperatorPrecedence = 3;
13498
+ var conditionalOperatorPrecedence = 1;
13501
13499
  var placeholderRegexp = /^\$([1-9]\d?)?$/;
13502
13500
  function withSourceCodeInfo(node, sourceCodeInfo) {
13503
13501
  if (sourceCodeInfo) {
@@ -13512,38 +13510,39 @@ function getPrecedence(operatorSign, sourceCodeInfo) {
13512
13510
  case '*': // multiplication
13513
13511
  case '/': // division
13514
13512
  case '%': // remainder
13515
- return 10;
13513
+ return 11;
13516
13514
  case '+': // addition
13517
13515
  case '-': // subtraction
13518
- return 9;
13516
+ return 10;
13519
13517
  case '<<': // left shift
13520
13518
  case '>>': // signed right shift
13521
13519
  case '>>>': // unsigned right shift
13522
- return 8;
13520
+ return 9;
13523
13521
  case '++': // string concatenation
13524
- return 7;
13522
+ return 8;
13525
13523
  case '<': // less than
13526
13524
  case '<=': // less than or equal
13527
13525
  case '≤': // less than or equal
13528
13526
  case '>': // greater than
13529
13527
  case '>=': // greater than or equal
13530
13528
  case '≥': // greater than or equal
13531
- return 6;
13529
+ return 7;
13532
13530
  case '=': // equal
13533
13531
  case '!=': // not equal
13534
13532
  case '≠': // not equal
13535
- return 5;
13533
+ return 6;
13536
13534
  case '&': // bitwise AND
13537
13535
  case 'xor': // bitwise XOR
13538
13536
  case '|': // bitwise OR
13539
- return 4;
13537
+ return 5;
13540
13538
  case '&&': // logical AND
13541
13539
  case '||': // logical OR
13542
13540
  case '??': // nullish coalescing
13543
- return 3;
13541
+ return 4;
13542
+ // leave room for binaryFunctionalOperatorPrecedence = 3
13544
13543
  case '|>': // pipe
13545
- return 1;
13546
- // leave room for binaryFunctionalOperatorPrecedence = 2
13544
+ return 2;
13545
+ // leave room for conditionalOperatorPrecedence = 1
13547
13546
  /* v8 ignore next 2 */
13548
13547
  default:
13549
13548
  throw new LitsError("Unknown binary operator: ".concat(operatorSign), sourceCodeInfo);
@@ -13591,13 +13590,15 @@ function fromBinaryOperatorToNode(operator, symbolNode, left, right, sourceCodeI
13591
13590
  case '||':
13592
13591
  case '??':
13593
13592
  return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes[operatorName], [left, right]]], sourceCodeInfo);
13594
- /* v8 ignore next 10 */
13593
+ /* v8 ignore next 11 */
13595
13594
  case '.':
13596
13595
  case ';':
13597
13596
  case ':=':
13598
13597
  case ',':
13599
13598
  case '->':
13600
13599
  case '...':
13600
+ case '?':
13601
+ case ':':
13601
13602
  throw new LitsError("Unknown binary operator: ".concat(operatorName), sourceCodeInfo);
13602
13603
  default:
13603
13604
  throw new LitsError("Unknown binary operator: ".concat(operatorName), sourceCodeInfo);
@@ -13713,6 +13714,19 @@ var Parser = /** @class */ (function () {
13713
13714
  }
13714
13715
  left = createNamedNormalExpressionNode(operatorSymbol, [left, right], operator[2]);
13715
13716
  }
13717
+ else if ((operator === null || operator === void 0 ? void 0 : operator[1]) === '?') {
13718
+ if (conditionalOperatorPrecedence <= precedence) {
13719
+ break;
13720
+ }
13721
+ this.advance();
13722
+ var trueNode = this.parseExpression();
13723
+ if (!isOperatorToken(this.peek(), ':')) {
13724
+ throw new LitsError('Expected :', this.peekSourceCodeInfo());
13725
+ }
13726
+ this.advance();
13727
+ var falseNode = this.parseExpression();
13728
+ left = withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.if, [left, trueNode, falseNode]]], left[2]);
13729
+ }
13716
13730
  else {
13717
13731
  break;
13718
13732
  }
@@ -1,5 +1,5 @@
1
1
  declare const binaryOperators: readonly ["^", "*", "/", "%", "+", "-", "<<", ">>", ">>>", "++", "<", "<=", "≤", ">", ">=", "≥", "=", "!=", "≠", "&", "xor", "|", "&&", "||", "??", "|>"];
2
- declare const symbolicOperators: readonly ["^", "*", "/", "%", "+", "-", "<<", ">>", ">>>", "++", "<", "<=", "≤", ">", ">=", "≥", "=", "!=", "≠", "&", "xor", "|", "&&", "||", "??", "|>", "->", "...", ".", ",", ":=", ";"];
2
+ declare const symbolicOperators: readonly ["^", "*", "/", "%", "+", "-", "<<", ">>", ">>>", "++", "<", "<=", "≤", ">", ">=", "≥", "=", "!=", "≠", "&", "xor", "|", "&&", "||", "??", "|>", "?", ":", "->", "...", ".", ",", ":=", ";"];
3
3
  export declare function isFunctionOperator(operator: string): boolean;
4
4
  export type SymbolicBinaryOperator = typeof binaryOperators[number];
5
5
  export type SymbolicOperator = typeof symbolicOperators[number];
package/dist/index.esm.js CHANGED
@@ -12936,6 +12936,8 @@ var binaryOperators = [
12936
12936
  '|>', // pipe
12937
12937
  ];
12938
12938
  var otherOperators = [
12939
+ '?', // conditional operator
12940
+ ':', // conditional operator
12939
12941
  '->', // lambda
12940
12942
  '...', // rest
12941
12943
  '.', // property accessor
@@ -12945,17 +12947,12 @@ var otherOperators = [
12945
12947
  ];
12946
12948
  var symbolicOperators = __spreadArray(__spreadArray([], __read(binaryOperators), false), __read(otherOperators), false);
12947
12949
  var nonFunctionOperators = [
12948
- '??',
12949
- '&&',
12950
- '||',
12951
12950
  'comment',
12952
12951
  'cond',
12953
12952
  'def',
12954
12953
  'defined?',
12955
- // 'defn',
12956
12954
  'do',
12957
12955
  'doseq',
12958
- // 'fn',
12959
12956
  'if',
12960
12957
  'let',
12961
12958
  'loop',
@@ -13533,8 +13530,9 @@ function untokenize(tokenStream) {
13533
13530
  }, '');
13534
13531
  }
13535
13532
 
13536
- var exponentiationPrecedence = 11;
13537
- var binaryFunctionalOperatorPrecedence = 2;
13533
+ var exponentiationPrecedence = 12;
13534
+ var binaryFunctionalOperatorPrecedence = 3;
13535
+ var conditionalOperatorPrecedence = 1;
13538
13536
  var placeholderRegexp = /^\$([1-9]\d?)?$/;
13539
13537
  function withSourceCodeInfo(node, sourceCodeInfo) {
13540
13538
  if (sourceCodeInfo) {
@@ -13549,38 +13547,39 @@ function getPrecedence(operatorSign, sourceCodeInfo) {
13549
13547
  case '*': // multiplication
13550
13548
  case '/': // division
13551
13549
  case '%': // remainder
13552
- return 10;
13550
+ return 11;
13553
13551
  case '+': // addition
13554
13552
  case '-': // subtraction
13555
- return 9;
13553
+ return 10;
13556
13554
  case '<<': // left shift
13557
13555
  case '>>': // signed right shift
13558
13556
  case '>>>': // unsigned right shift
13559
- return 8;
13557
+ return 9;
13560
13558
  case '++': // string concatenation
13561
- return 7;
13559
+ return 8;
13562
13560
  case '<': // less than
13563
13561
  case '<=': // less than or equal
13564
13562
  case '≤': // less than or equal
13565
13563
  case '>': // greater than
13566
13564
  case '>=': // greater than or equal
13567
13565
  case '≥': // greater than or equal
13568
- return 6;
13566
+ return 7;
13569
13567
  case '=': // equal
13570
13568
  case '!=': // not equal
13571
13569
  case '≠': // not equal
13572
- return 5;
13570
+ return 6;
13573
13571
  case '&': // bitwise AND
13574
13572
  case 'xor': // bitwise XOR
13575
13573
  case '|': // bitwise OR
13576
- return 4;
13574
+ return 5;
13577
13575
  case '&&': // logical AND
13578
13576
  case '||': // logical OR
13579
13577
  case '??': // nullish coalescing
13580
- return 3;
13578
+ return 4;
13579
+ // leave room for binaryFunctionalOperatorPrecedence = 3
13581
13580
  case '|>': // pipe
13582
- return 1;
13583
- // leave room for binaryFunctionalOperatorPrecedence = 2
13581
+ return 2;
13582
+ // leave room for conditionalOperatorPrecedence = 1
13584
13583
  /* v8 ignore next 2 */
13585
13584
  default:
13586
13585
  throw new LitsError("Unknown binary operator: ".concat(operatorSign), sourceCodeInfo);
@@ -13628,13 +13627,15 @@ function fromBinaryOperatorToNode(operator, symbolNode, left, right, sourceCodeI
13628
13627
  case '||':
13629
13628
  case '??':
13630
13629
  return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes[operatorName], [left, right]]], sourceCodeInfo);
13631
- /* v8 ignore next 10 */
13630
+ /* v8 ignore next 11 */
13632
13631
  case '.':
13633
13632
  case ';':
13634
13633
  case ':=':
13635
13634
  case ',':
13636
13635
  case '->':
13637
13636
  case '...':
13637
+ case '?':
13638
+ case ':':
13638
13639
  throw new LitsError("Unknown binary operator: ".concat(operatorName), sourceCodeInfo);
13639
13640
  default:
13640
13641
  throw new LitsError("Unknown binary operator: ".concat(operatorName), sourceCodeInfo);
@@ -13750,6 +13751,19 @@ var Parser = /** @class */ (function () {
13750
13751
  }
13751
13752
  left = createNamedNormalExpressionNode(operatorSymbol, [left, right], operator[2]);
13752
13753
  }
13754
+ else if ((operator === null || operator === void 0 ? void 0 : operator[1]) === '?') {
13755
+ if (conditionalOperatorPrecedence <= precedence) {
13756
+ break;
13757
+ }
13758
+ this.advance();
13759
+ var trueNode = this.parseExpression();
13760
+ if (!isOperatorToken(this.peek(), ':')) {
13761
+ throw new LitsError('Expected :', this.peekSourceCodeInfo());
13762
+ }
13763
+ this.advance();
13764
+ var falseNode = this.parseExpression();
13765
+ left = withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.if, [left, trueNode, falseNode]]], left[2]);
13766
+ }
13753
13767
  else {
13754
13768
  break;
13755
13769
  }