@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/testFramework.js
CHANGED
|
@@ -392,6 +392,7 @@ var AlgebraicOperators = [
|
|
|
392
392
|
'<<', // left shift
|
|
393
393
|
'>>', // signed right shift
|
|
394
394
|
'>>>', // unsigned right shift
|
|
395
|
+
'++', // string concatenation
|
|
395
396
|
'<', // less than
|
|
396
397
|
'<=', // less than or equal
|
|
397
398
|
'>', // greater than
|
|
@@ -3125,7 +3126,7 @@ var mathNormalExpression = {
|
|
|
3125
3126
|
},
|
|
3126
3127
|
};
|
|
3127
3128
|
|
|
3128
|
-
var version = "2.0.
|
|
3129
|
+
var version = "2.0.9";
|
|
3129
3130
|
|
|
3130
3131
|
var uuidTemplate = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
|
|
3131
3132
|
var xyRegexp = /[xy]/g;
|
|
@@ -7075,24 +7076,27 @@ function parseString(tokenStream, parseState) {
|
|
|
7075
7076
|
};
|
|
7076
7077
|
}
|
|
7077
7078
|
|
|
7078
|
-
var exponentiationPrecedence =
|
|
7079
|
+
var exponentiationPrecedence = 9;
|
|
7080
|
+
var placeholderRegexp$1 = /^\$([1-9]\d?)?$/;
|
|
7079
7081
|
function getPrecedence(operator) {
|
|
7080
7082
|
var operatorSign = operator[1];
|
|
7081
7083
|
switch (operatorSign) {
|
|
7082
7084
|
case '.': // accessor
|
|
7083
|
-
return
|
|
7085
|
+
return 10;
|
|
7084
7086
|
case '**': // exponentiation
|
|
7085
7087
|
return exponentiationPrecedence;
|
|
7086
7088
|
case '*': // multiplication
|
|
7087
7089
|
case '/': // division
|
|
7088
7090
|
case '%': // remainder
|
|
7089
|
-
return
|
|
7091
|
+
return 8;
|
|
7090
7092
|
case '+': // addition
|
|
7091
7093
|
case '-': // subtraction
|
|
7092
|
-
return
|
|
7094
|
+
return 7;
|
|
7093
7095
|
case '<<': // left shift
|
|
7094
7096
|
case '>>': // signed right shift
|
|
7095
7097
|
case '>>>': // unsigned right shift
|
|
7098
|
+
return 6;
|
|
7099
|
+
case '++': // string concatenation
|
|
7096
7100
|
return 5;
|
|
7097
7101
|
case '<': // less than
|
|
7098
7102
|
case '<=': // less than or equal
|
|
@@ -7190,6 +7194,11 @@ function fromBinaryAlgebraicToAstNode(operator, left, right) {
|
|
|
7190
7194
|
return createNamedNormalExpressionNode('bit-shift-right', [left, right], token);
|
|
7191
7195
|
case '>>>':
|
|
7192
7196
|
return createNamedNormalExpressionNode('unsigned-bit-shift-right', [left, right], token);
|
|
7197
|
+
case '++': {
|
|
7198
|
+
var leftString = createNamedNormalExpressionNode('str', [left], token);
|
|
7199
|
+
var rightString = createNamedNormalExpressionNode('str', [right], token);
|
|
7200
|
+
return createNamedNormalExpressionNode('str', [leftString, rightString], token);
|
|
7201
|
+
}
|
|
7193
7202
|
case '<':
|
|
7194
7203
|
return createNamedNormalExpressionNode('<', [left, right], token);
|
|
7195
7204
|
case '<=':
|
|
@@ -7301,7 +7310,7 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7301
7310
|
// Parentheses
|
|
7302
7311
|
if (isLParenToken(token)) {
|
|
7303
7312
|
var positionBefore = this.parseState.position;
|
|
7304
|
-
var lamdaFunction = this.
|
|
7313
|
+
var lamdaFunction = this.parseLambdaFunction();
|
|
7305
7314
|
if (lamdaFunction) {
|
|
7306
7315
|
return lamdaFunction;
|
|
7307
7316
|
}
|
|
@@ -7322,6 +7331,9 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7322
7331
|
var operand = this.parseOperand();
|
|
7323
7332
|
return fromUnaryAlgebraicToAstNode(token, operand);
|
|
7324
7333
|
}
|
|
7334
|
+
else if (operatorName === '=>') {
|
|
7335
|
+
return this.parseShorthandLamdaFunction();
|
|
7336
|
+
}
|
|
7325
7337
|
else {
|
|
7326
7338
|
throw new Error("Unknown unary operator: ".concat(operatorName));
|
|
7327
7339
|
}
|
|
@@ -7468,6 +7480,8 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7468
7480
|
case 'or':
|
|
7469
7481
|
case 'when':
|
|
7470
7482
|
case 'when-not':
|
|
7483
|
+
case 'do':
|
|
7484
|
+
case 'throw':
|
|
7471
7485
|
return {
|
|
7472
7486
|
t: AstNodeType.SpecialExpression,
|
|
7473
7487
|
n: name_1,
|
|
@@ -7484,13 +7498,11 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7484
7498
|
case 'defn':
|
|
7485
7499
|
case 'defns':
|
|
7486
7500
|
case 'try':
|
|
7487
|
-
case 'throw':
|
|
7488
7501
|
case 'recur':
|
|
7489
7502
|
case 'loop':
|
|
7490
7503
|
case 'time!':
|
|
7491
7504
|
case 'doseq':
|
|
7492
7505
|
case 'for':
|
|
7493
|
-
case 'do':
|
|
7494
7506
|
throw new Error("Special expression ".concat(name_1, " is not available in algebraic notation"));
|
|
7495
7507
|
default:
|
|
7496
7508
|
throw new Error("Unknown special expression: ".concat(name_1));
|
|
@@ -7507,7 +7519,7 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7507
7519
|
};
|
|
7508
7520
|
}
|
|
7509
7521
|
};
|
|
7510
|
-
AlgebraicParser.prototype.
|
|
7522
|
+
AlgebraicParser.prototype.parseLambdaFunction = function () {
|
|
7511
7523
|
var _a;
|
|
7512
7524
|
var firstToken = this.peek();
|
|
7513
7525
|
this.advance();
|
|
@@ -7566,6 +7578,62 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7566
7578
|
token: getTokenDebugData(firstToken) && firstToken,
|
|
7567
7579
|
};
|
|
7568
7580
|
};
|
|
7581
|
+
AlgebraicParser.prototype.parseShorthandLamdaFunction = function () {
|
|
7582
|
+
var _a, _b, _c, _d;
|
|
7583
|
+
var firstToken = this.peek();
|
|
7584
|
+
this.advance();
|
|
7585
|
+
var startPos = this.parseState.position;
|
|
7586
|
+
var exprNode = this.parseExpression();
|
|
7587
|
+
var endPos = this.parseState.position - 1;
|
|
7588
|
+
var arity = 0;
|
|
7589
|
+
var percent1 = 'NOT_SET'; // referring to argument bindings. % = NAKED, %1, %2, %3, etc = WITH_1
|
|
7590
|
+
for (var pos = startPos; pos <= endPos; pos += 1) {
|
|
7591
|
+
var tkn = this.tokenStream.tokens[pos];
|
|
7592
|
+
if (isA_SymbolToken(tkn)) {
|
|
7593
|
+
var match = placeholderRegexp$1.exec(tkn[1]);
|
|
7594
|
+
if (match) {
|
|
7595
|
+
var number = (_a = match[1]) !== null && _a !== void 0 ? _a : '1';
|
|
7596
|
+
if (number === '1') {
|
|
7597
|
+
var mixedPercent1 = (!match[1] && percent1 === 'WITH_1') || (match[1] && percent1 === 'NAKED');
|
|
7598
|
+
if (mixedPercent1)
|
|
7599
|
+
throw new LitsError('Please make up your mind, either use $ or $1', (_b = getTokenDebugData(firstToken)) === null || _b === void 0 ? void 0 : _b.sourceCodeInfo);
|
|
7600
|
+
percent1 = match[1] ? 'WITH_1' : 'NAKED';
|
|
7601
|
+
}
|
|
7602
|
+
arity = Math.max(arity, Number(number));
|
|
7603
|
+
if (arity > 20)
|
|
7604
|
+
throw new LitsError('Can\'t specify more than 20 arguments', (_c = getTokenDebugData(firstToken)) === null || _c === void 0 ? void 0 : _c.sourceCodeInfo);
|
|
7605
|
+
}
|
|
7606
|
+
}
|
|
7607
|
+
if (isA_OperatorToken(tkn, '=>')) {
|
|
7608
|
+
throw new LitsError('Nested shortcut functions are not allowed', (_d = getTokenDebugData(firstToken)) === null || _d === void 0 ? void 0 : _d.sourceCodeInfo);
|
|
7609
|
+
}
|
|
7610
|
+
}
|
|
7611
|
+
var mandatoryArguments = [];
|
|
7612
|
+
for (var i = 1; i <= arity; i += 1) {
|
|
7613
|
+
if (i === 1 && percent1 === 'NAKED')
|
|
7614
|
+
mandatoryArguments.push('$');
|
|
7615
|
+
else
|
|
7616
|
+
mandatoryArguments.push("$".concat(i));
|
|
7617
|
+
}
|
|
7618
|
+
var args = {
|
|
7619
|
+
b: [],
|
|
7620
|
+
m: mandatoryArguments,
|
|
7621
|
+
};
|
|
7622
|
+
var node = {
|
|
7623
|
+
t: AstNodeType.SpecialExpression,
|
|
7624
|
+
n: 'fn',
|
|
7625
|
+
p: [],
|
|
7626
|
+
o: [
|
|
7627
|
+
{
|
|
7628
|
+
as: args,
|
|
7629
|
+
b: [exprNode],
|
|
7630
|
+
a: args.m.length,
|
|
7631
|
+
},
|
|
7632
|
+
],
|
|
7633
|
+
token: getTokenDebugData(firstToken) && firstToken,
|
|
7634
|
+
};
|
|
7635
|
+
return node;
|
|
7636
|
+
};
|
|
7569
7637
|
AlgebraicParser.prototype.isAtEnd = function () {
|
|
7570
7638
|
return this.parseState.position >= this.tokenStream.tokens.length;
|
|
7571
7639
|
};
|
|
@@ -7923,7 +7991,7 @@ function parseToken(tokenStream, parseState) {
|
|
|
7923
7991
|
}
|
|
7924
7992
|
|
|
7925
7993
|
var polishIdentifierCharacterClass = '[\\w@%^?=!$<>+*/:-]';
|
|
7926
|
-
var algebraicIdentifierCharacterClass = '[\\w
|
|
7994
|
+
var algebraicIdentifierCharacterClass = '[\\w$:!?]';
|
|
7927
7995
|
var algebraicIdentifierFirstCharacterClass = '[a-zA-Z_$]';
|
|
7928
7996
|
|
|
7929
7997
|
var NO_MATCH = [0];
|
|
@@ -8230,13 +8298,11 @@ var algebraicReservedNamesRecord = {
|
|
|
8230
8298
|
'defn': { value: null, forbidden: true },
|
|
8231
8299
|
'defns': { value: null, forbidden: true },
|
|
8232
8300
|
'try': { value: null, forbidden: true },
|
|
8233
|
-
'throw': { value: null, forbidden: true },
|
|
8234
8301
|
'recur': { value: null, forbidden: true },
|
|
8235
8302
|
'loop': { value: null, forbidden: true },
|
|
8236
8303
|
'time!': { value: null, forbidden: true },
|
|
8237
8304
|
'doseq': { value: null, forbidden: true },
|
|
8238
8305
|
'for': { value: null, forbidden: true },
|
|
8239
|
-
'do': { value: null, forbidden: true },
|
|
8240
8306
|
};
|
|
8241
8307
|
|
|
8242
8308
|
var identifierRegExp = new RegExp(algebraicIdentifierCharacterClass);
|