@mojir/lits 2.0.7 → 2.0.9
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 +78 -12
- package/dist/cli/src/identifier.d.ts +1 -1
- package/dist/cli/src/parser/AlgebraicParser.d.ts +2 -1
- package/dist/cli/src/tokenizer/algebraic/algebraicTokens.d.ts +1 -1
- package/dist/index.esm.js +78 -12
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +78 -12
- package/dist/index.js.map +1 -1
- package/dist/lits.iife.js +78 -12
- package/dist/lits.iife.js.map +1 -1
- package/dist/src/identifier.d.ts +1 -1
- package/dist/src/parser/AlgebraicParser.d.ts +2 -1
- package/dist/src/tokenizer/algebraic/algebraicTokens.d.ts +1 -1
- package/dist/testFramework.esm.js +78 -12
- package/dist/testFramework.esm.js.map +1 -1
- package/dist/testFramework.js +78 -12
- package/dist/testFramework.js.map +1 -1
- package/package.json +1 -1
package/dist/lits.iife.js
CHANGED
|
@@ -393,6 +393,7 @@ var Lits = (function (exports) {
|
|
|
393
393
|
'<<', // left shift
|
|
394
394
|
'>>', // signed right shift
|
|
395
395
|
'>>>', // unsigned right shift
|
|
396
|
+
'++', // string concatenation
|
|
396
397
|
'<', // less than
|
|
397
398
|
'<=', // less than or equal
|
|
398
399
|
'>', // greater than
|
|
@@ -3163,7 +3164,7 @@ var Lits = (function (exports) {
|
|
|
3163
3164
|
},
|
|
3164
3165
|
};
|
|
3165
3166
|
|
|
3166
|
-
var version = "2.0.
|
|
3167
|
+
var version = "2.0.9";
|
|
3167
3168
|
|
|
3168
3169
|
var uuidTemplate = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
|
|
3169
3170
|
var xyRegexp = /[xy]/g;
|
|
@@ -7114,24 +7115,27 @@ var Lits = (function (exports) {
|
|
|
7114
7115
|
};
|
|
7115
7116
|
}
|
|
7116
7117
|
|
|
7117
|
-
var exponentiationPrecedence =
|
|
7118
|
+
var exponentiationPrecedence = 9;
|
|
7119
|
+
var placeholderRegexp$1 = /^\$([1-9]\d?)?$/;
|
|
7118
7120
|
function getPrecedence(operator) {
|
|
7119
7121
|
var operatorSign = operator[1];
|
|
7120
7122
|
switch (operatorSign) {
|
|
7121
7123
|
case '.': // accessor
|
|
7122
|
-
return
|
|
7124
|
+
return 10;
|
|
7123
7125
|
case '**': // exponentiation
|
|
7124
7126
|
return exponentiationPrecedence;
|
|
7125
7127
|
case '*': // multiplication
|
|
7126
7128
|
case '/': // division
|
|
7127
7129
|
case '%': // remainder
|
|
7128
|
-
return
|
|
7130
|
+
return 8;
|
|
7129
7131
|
case '+': // addition
|
|
7130
7132
|
case '-': // subtraction
|
|
7131
|
-
return
|
|
7133
|
+
return 7;
|
|
7132
7134
|
case '<<': // left shift
|
|
7133
7135
|
case '>>': // signed right shift
|
|
7134
7136
|
case '>>>': // unsigned right shift
|
|
7137
|
+
return 6;
|
|
7138
|
+
case '++': // string concatenation
|
|
7135
7139
|
return 5;
|
|
7136
7140
|
case '<': // less than
|
|
7137
7141
|
case '<=': // less than or equal
|
|
@@ -7229,6 +7233,11 @@ var Lits = (function (exports) {
|
|
|
7229
7233
|
return createNamedNormalExpressionNode('bit-shift-right', [left, right], token);
|
|
7230
7234
|
case '>>>':
|
|
7231
7235
|
return createNamedNormalExpressionNode('unsigned-bit-shift-right', [left, right], token);
|
|
7236
|
+
case '++': {
|
|
7237
|
+
var leftString = createNamedNormalExpressionNode('str', [left], token);
|
|
7238
|
+
var rightString = createNamedNormalExpressionNode('str', [right], token);
|
|
7239
|
+
return createNamedNormalExpressionNode('str', [leftString, rightString], token);
|
|
7240
|
+
}
|
|
7232
7241
|
case '<':
|
|
7233
7242
|
return createNamedNormalExpressionNode('<', [left, right], token);
|
|
7234
7243
|
case '<=':
|
|
@@ -7340,7 +7349,7 @@ var Lits = (function (exports) {
|
|
|
7340
7349
|
// Parentheses
|
|
7341
7350
|
if (isLParenToken(token)) {
|
|
7342
7351
|
var positionBefore = this.parseState.position;
|
|
7343
|
-
var lamdaFunction = this.
|
|
7352
|
+
var lamdaFunction = this.parseLambdaFunction();
|
|
7344
7353
|
if (lamdaFunction) {
|
|
7345
7354
|
return lamdaFunction;
|
|
7346
7355
|
}
|
|
@@ -7361,6 +7370,9 @@ var Lits = (function (exports) {
|
|
|
7361
7370
|
var operand = this.parseOperand();
|
|
7362
7371
|
return fromUnaryAlgebraicToAstNode(token, operand);
|
|
7363
7372
|
}
|
|
7373
|
+
else if (operatorName === '=>') {
|
|
7374
|
+
return this.parseShorthandLamdaFunction();
|
|
7375
|
+
}
|
|
7364
7376
|
else {
|
|
7365
7377
|
throw new Error("Unknown unary operator: ".concat(operatorName));
|
|
7366
7378
|
}
|
|
@@ -7507,6 +7519,8 @@ var Lits = (function (exports) {
|
|
|
7507
7519
|
case 'or':
|
|
7508
7520
|
case 'when':
|
|
7509
7521
|
case 'when-not':
|
|
7522
|
+
case 'do':
|
|
7523
|
+
case 'throw':
|
|
7510
7524
|
return {
|
|
7511
7525
|
t: exports.AstNodeType.SpecialExpression,
|
|
7512
7526
|
n: name_1,
|
|
@@ -7523,13 +7537,11 @@ var Lits = (function (exports) {
|
|
|
7523
7537
|
case 'defn':
|
|
7524
7538
|
case 'defns':
|
|
7525
7539
|
case 'try':
|
|
7526
|
-
case 'throw':
|
|
7527
7540
|
case 'recur':
|
|
7528
7541
|
case 'loop':
|
|
7529
7542
|
case 'time!':
|
|
7530
7543
|
case 'doseq':
|
|
7531
7544
|
case 'for':
|
|
7532
|
-
case 'do':
|
|
7533
7545
|
throw new Error("Special expression ".concat(name_1, " is not available in algebraic notation"));
|
|
7534
7546
|
default:
|
|
7535
7547
|
throw new Error("Unknown special expression: ".concat(name_1));
|
|
@@ -7546,7 +7558,7 @@ var Lits = (function (exports) {
|
|
|
7546
7558
|
};
|
|
7547
7559
|
}
|
|
7548
7560
|
};
|
|
7549
|
-
AlgebraicParser.prototype.
|
|
7561
|
+
AlgebraicParser.prototype.parseLambdaFunction = function () {
|
|
7550
7562
|
var _a;
|
|
7551
7563
|
var firstToken = this.peek();
|
|
7552
7564
|
this.advance();
|
|
@@ -7605,6 +7617,62 @@ var Lits = (function (exports) {
|
|
|
7605
7617
|
token: getTokenDebugData(firstToken) && firstToken,
|
|
7606
7618
|
};
|
|
7607
7619
|
};
|
|
7620
|
+
AlgebraicParser.prototype.parseShorthandLamdaFunction = function () {
|
|
7621
|
+
var _a, _b, _c, _d;
|
|
7622
|
+
var firstToken = this.peek();
|
|
7623
|
+
this.advance();
|
|
7624
|
+
var startPos = this.parseState.position;
|
|
7625
|
+
var exprNode = this.parseExpression();
|
|
7626
|
+
var endPos = this.parseState.position - 1;
|
|
7627
|
+
var arity = 0;
|
|
7628
|
+
var percent1 = 'NOT_SET'; // referring to argument bindings. % = NAKED, %1, %2, %3, etc = WITH_1
|
|
7629
|
+
for (var pos = startPos; pos <= endPos; pos += 1) {
|
|
7630
|
+
var tkn = this.tokenStream.tokens[pos];
|
|
7631
|
+
if (isA_SymbolToken(tkn)) {
|
|
7632
|
+
var match = placeholderRegexp$1.exec(tkn[1]);
|
|
7633
|
+
if (match) {
|
|
7634
|
+
var number = (_a = match[1]) !== null && _a !== void 0 ? _a : '1';
|
|
7635
|
+
if (number === '1') {
|
|
7636
|
+
var mixedPercent1 = (!match[1] && percent1 === 'WITH_1') || (match[1] && percent1 === 'NAKED');
|
|
7637
|
+
if (mixedPercent1)
|
|
7638
|
+
throw new LitsError('Please make up your mind, either use $ or $1', (_b = getTokenDebugData(firstToken)) === null || _b === void 0 ? void 0 : _b.sourceCodeInfo);
|
|
7639
|
+
percent1 = match[1] ? 'WITH_1' : 'NAKED';
|
|
7640
|
+
}
|
|
7641
|
+
arity = Math.max(arity, Number(number));
|
|
7642
|
+
if (arity > 20)
|
|
7643
|
+
throw new LitsError('Can\'t specify more than 20 arguments', (_c = getTokenDebugData(firstToken)) === null || _c === void 0 ? void 0 : _c.sourceCodeInfo);
|
|
7644
|
+
}
|
|
7645
|
+
}
|
|
7646
|
+
if (isA_OperatorToken(tkn, '=>')) {
|
|
7647
|
+
throw new LitsError('Nested shortcut functions are not allowed', (_d = getTokenDebugData(firstToken)) === null || _d === void 0 ? void 0 : _d.sourceCodeInfo);
|
|
7648
|
+
}
|
|
7649
|
+
}
|
|
7650
|
+
var mandatoryArguments = [];
|
|
7651
|
+
for (var i = 1; i <= arity; i += 1) {
|
|
7652
|
+
if (i === 1 && percent1 === 'NAKED')
|
|
7653
|
+
mandatoryArguments.push('$');
|
|
7654
|
+
else
|
|
7655
|
+
mandatoryArguments.push("$".concat(i));
|
|
7656
|
+
}
|
|
7657
|
+
var args = {
|
|
7658
|
+
b: [],
|
|
7659
|
+
m: mandatoryArguments,
|
|
7660
|
+
};
|
|
7661
|
+
var node = {
|
|
7662
|
+
t: exports.AstNodeType.SpecialExpression,
|
|
7663
|
+
n: 'fn',
|
|
7664
|
+
p: [],
|
|
7665
|
+
o: [
|
|
7666
|
+
{
|
|
7667
|
+
as: args,
|
|
7668
|
+
b: [exprNode],
|
|
7669
|
+
a: args.m.length,
|
|
7670
|
+
},
|
|
7671
|
+
],
|
|
7672
|
+
token: getTokenDebugData(firstToken) && firstToken,
|
|
7673
|
+
};
|
|
7674
|
+
return node;
|
|
7675
|
+
};
|
|
7608
7676
|
AlgebraicParser.prototype.isAtEnd = function () {
|
|
7609
7677
|
return this.parseState.position >= this.tokenStream.tokens.length;
|
|
7610
7678
|
};
|
|
@@ -7963,7 +8031,7 @@ var Lits = (function (exports) {
|
|
|
7963
8031
|
|
|
7964
8032
|
var polishIdentifierCharacterClass = '[\\w@%^?=!$<>+*/:-]';
|
|
7965
8033
|
var polishIdentifierFirstCharacterClass = '[a-zA-Z_@%^?=!$<>+*/-]';
|
|
7966
|
-
var algebraicIdentifierCharacterClass = '[\\w
|
|
8034
|
+
var algebraicIdentifierCharacterClass = '[\\w$:!?]';
|
|
7967
8035
|
var algebraicIdentifierFirstCharacterClass = '[a-zA-Z_$]';
|
|
7968
8036
|
|
|
7969
8037
|
var NO_MATCH = [0];
|
|
@@ -8270,13 +8338,11 @@ var Lits = (function (exports) {
|
|
|
8270
8338
|
'defn': { value: null, forbidden: true },
|
|
8271
8339
|
'defns': { value: null, forbidden: true },
|
|
8272
8340
|
'try': { value: null, forbidden: true },
|
|
8273
|
-
'throw': { value: null, forbidden: true },
|
|
8274
8341
|
'recur': { value: null, forbidden: true },
|
|
8275
8342
|
'loop': { value: null, forbidden: true },
|
|
8276
8343
|
'time!': { value: null, forbidden: true },
|
|
8277
8344
|
'doseq': { value: null, forbidden: true },
|
|
8278
8345
|
'for': { value: null, forbidden: true },
|
|
8279
|
-
'do': { value: null, forbidden: true },
|
|
8280
8346
|
};
|
|
8281
8347
|
|
|
8282
8348
|
var identifierRegExp = new RegExp(algebraicIdentifierCharacterClass);
|