@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/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.0.
|
|
95
|
+
var version = "2.0.9";
|
|
96
96
|
|
|
97
97
|
var AstNodeType;
|
|
98
98
|
(function (AstNodeType) {
|
|
@@ -397,6 +397,7 @@ var AlgebraicOperators = [
|
|
|
397
397
|
'<<', // left shift
|
|
398
398
|
'>>', // signed right shift
|
|
399
399
|
'>>>', // unsigned right shift
|
|
400
|
+
'++', // string concatenation
|
|
400
401
|
'<', // less than
|
|
401
402
|
'<=', // less than or equal
|
|
402
403
|
'>', // greater than
|
|
@@ -7079,24 +7080,27 @@ function parseString(tokenStream, parseState) {
|
|
|
7079
7080
|
};
|
|
7080
7081
|
}
|
|
7081
7082
|
|
|
7082
|
-
var exponentiationPrecedence =
|
|
7083
|
+
var exponentiationPrecedence = 9;
|
|
7084
|
+
var placeholderRegexp$1 = /^\$([1-9]\d?)?$/;
|
|
7083
7085
|
function getPrecedence(operator) {
|
|
7084
7086
|
var operatorSign = operator[1];
|
|
7085
7087
|
switch (operatorSign) {
|
|
7086
7088
|
case '.': // accessor
|
|
7087
|
-
return
|
|
7089
|
+
return 10;
|
|
7088
7090
|
case '**': // exponentiation
|
|
7089
7091
|
return exponentiationPrecedence;
|
|
7090
7092
|
case '*': // multiplication
|
|
7091
7093
|
case '/': // division
|
|
7092
7094
|
case '%': // remainder
|
|
7093
|
-
return
|
|
7095
|
+
return 8;
|
|
7094
7096
|
case '+': // addition
|
|
7095
7097
|
case '-': // subtraction
|
|
7096
|
-
return
|
|
7098
|
+
return 7;
|
|
7097
7099
|
case '<<': // left shift
|
|
7098
7100
|
case '>>': // signed right shift
|
|
7099
7101
|
case '>>>': // unsigned right shift
|
|
7102
|
+
return 6;
|
|
7103
|
+
case '++': // string concatenation
|
|
7100
7104
|
return 5;
|
|
7101
7105
|
case '<': // less than
|
|
7102
7106
|
case '<=': // less than or equal
|
|
@@ -7194,6 +7198,11 @@ function fromBinaryAlgebraicToAstNode(operator, left, right) {
|
|
|
7194
7198
|
return createNamedNormalExpressionNode('bit-shift-right', [left, right], token);
|
|
7195
7199
|
case '>>>':
|
|
7196
7200
|
return createNamedNormalExpressionNode('unsigned-bit-shift-right', [left, right], token);
|
|
7201
|
+
case '++': {
|
|
7202
|
+
var leftString = createNamedNormalExpressionNode('str', [left], token);
|
|
7203
|
+
var rightString = createNamedNormalExpressionNode('str', [right], token);
|
|
7204
|
+
return createNamedNormalExpressionNode('str', [leftString, rightString], token);
|
|
7205
|
+
}
|
|
7197
7206
|
case '<':
|
|
7198
7207
|
return createNamedNormalExpressionNode('<', [left, right], token);
|
|
7199
7208
|
case '<=':
|
|
@@ -7305,7 +7314,7 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7305
7314
|
// Parentheses
|
|
7306
7315
|
if (isLParenToken(token)) {
|
|
7307
7316
|
var positionBefore = this.parseState.position;
|
|
7308
|
-
var lamdaFunction = this.
|
|
7317
|
+
var lamdaFunction = this.parseLambdaFunction();
|
|
7309
7318
|
if (lamdaFunction) {
|
|
7310
7319
|
return lamdaFunction;
|
|
7311
7320
|
}
|
|
@@ -7326,6 +7335,9 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7326
7335
|
var operand = this.parseOperand();
|
|
7327
7336
|
return fromUnaryAlgebraicToAstNode(token, operand);
|
|
7328
7337
|
}
|
|
7338
|
+
else if (operatorName === '=>') {
|
|
7339
|
+
return this.parseShorthandLamdaFunction();
|
|
7340
|
+
}
|
|
7329
7341
|
else {
|
|
7330
7342
|
throw new Error("Unknown unary operator: ".concat(operatorName));
|
|
7331
7343
|
}
|
|
@@ -7472,6 +7484,8 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7472
7484
|
case 'or':
|
|
7473
7485
|
case 'when':
|
|
7474
7486
|
case 'when-not':
|
|
7487
|
+
case 'do':
|
|
7488
|
+
case 'throw':
|
|
7475
7489
|
return {
|
|
7476
7490
|
t: AstNodeType.SpecialExpression,
|
|
7477
7491
|
n: name_1,
|
|
@@ -7488,13 +7502,11 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7488
7502
|
case 'defn':
|
|
7489
7503
|
case 'defns':
|
|
7490
7504
|
case 'try':
|
|
7491
|
-
case 'throw':
|
|
7492
7505
|
case 'recur':
|
|
7493
7506
|
case 'loop':
|
|
7494
7507
|
case 'time!':
|
|
7495
7508
|
case 'doseq':
|
|
7496
7509
|
case 'for':
|
|
7497
|
-
case 'do':
|
|
7498
7510
|
throw new Error("Special expression ".concat(name_1, " is not available in algebraic notation"));
|
|
7499
7511
|
default:
|
|
7500
7512
|
throw new Error("Unknown special expression: ".concat(name_1));
|
|
@@ -7511,7 +7523,7 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7511
7523
|
};
|
|
7512
7524
|
}
|
|
7513
7525
|
};
|
|
7514
|
-
AlgebraicParser.prototype.
|
|
7526
|
+
AlgebraicParser.prototype.parseLambdaFunction = function () {
|
|
7515
7527
|
var _a;
|
|
7516
7528
|
var firstToken = this.peek();
|
|
7517
7529
|
this.advance();
|
|
@@ -7570,6 +7582,62 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7570
7582
|
token: getTokenDebugData(firstToken) && firstToken,
|
|
7571
7583
|
};
|
|
7572
7584
|
};
|
|
7585
|
+
AlgebraicParser.prototype.parseShorthandLamdaFunction = function () {
|
|
7586
|
+
var _a, _b, _c, _d;
|
|
7587
|
+
var firstToken = this.peek();
|
|
7588
|
+
this.advance();
|
|
7589
|
+
var startPos = this.parseState.position;
|
|
7590
|
+
var exprNode = this.parseExpression();
|
|
7591
|
+
var endPos = this.parseState.position - 1;
|
|
7592
|
+
var arity = 0;
|
|
7593
|
+
var percent1 = 'NOT_SET'; // referring to argument bindings. % = NAKED, %1, %2, %3, etc = WITH_1
|
|
7594
|
+
for (var pos = startPos; pos <= endPos; pos += 1) {
|
|
7595
|
+
var tkn = this.tokenStream.tokens[pos];
|
|
7596
|
+
if (isA_SymbolToken(tkn)) {
|
|
7597
|
+
var match = placeholderRegexp$1.exec(tkn[1]);
|
|
7598
|
+
if (match) {
|
|
7599
|
+
var number = (_a = match[1]) !== null && _a !== void 0 ? _a : '1';
|
|
7600
|
+
if (number === '1') {
|
|
7601
|
+
var mixedPercent1 = (!match[1] && percent1 === 'WITH_1') || (match[1] && percent1 === 'NAKED');
|
|
7602
|
+
if (mixedPercent1)
|
|
7603
|
+
throw new LitsError('Please make up your mind, either use $ or $1', (_b = getTokenDebugData(firstToken)) === null || _b === void 0 ? void 0 : _b.sourceCodeInfo);
|
|
7604
|
+
percent1 = match[1] ? 'WITH_1' : 'NAKED';
|
|
7605
|
+
}
|
|
7606
|
+
arity = Math.max(arity, Number(number));
|
|
7607
|
+
if (arity > 20)
|
|
7608
|
+
throw new LitsError('Can\'t specify more than 20 arguments', (_c = getTokenDebugData(firstToken)) === null || _c === void 0 ? void 0 : _c.sourceCodeInfo);
|
|
7609
|
+
}
|
|
7610
|
+
}
|
|
7611
|
+
if (isA_OperatorToken(tkn, '=>')) {
|
|
7612
|
+
throw new LitsError('Nested shortcut functions are not allowed', (_d = getTokenDebugData(firstToken)) === null || _d === void 0 ? void 0 : _d.sourceCodeInfo);
|
|
7613
|
+
}
|
|
7614
|
+
}
|
|
7615
|
+
var mandatoryArguments = [];
|
|
7616
|
+
for (var i = 1; i <= arity; i += 1) {
|
|
7617
|
+
if (i === 1 && percent1 === 'NAKED')
|
|
7618
|
+
mandatoryArguments.push('$');
|
|
7619
|
+
else
|
|
7620
|
+
mandatoryArguments.push("$".concat(i));
|
|
7621
|
+
}
|
|
7622
|
+
var args = {
|
|
7623
|
+
b: [],
|
|
7624
|
+
m: mandatoryArguments,
|
|
7625
|
+
};
|
|
7626
|
+
var node = {
|
|
7627
|
+
t: AstNodeType.SpecialExpression,
|
|
7628
|
+
n: 'fn',
|
|
7629
|
+
p: [],
|
|
7630
|
+
o: [
|
|
7631
|
+
{
|
|
7632
|
+
as: args,
|
|
7633
|
+
b: [exprNode],
|
|
7634
|
+
a: args.m.length,
|
|
7635
|
+
},
|
|
7636
|
+
],
|
|
7637
|
+
token: getTokenDebugData(firstToken) && firstToken,
|
|
7638
|
+
};
|
|
7639
|
+
return node;
|
|
7640
|
+
};
|
|
7573
7641
|
AlgebraicParser.prototype.isAtEnd = function () {
|
|
7574
7642
|
return this.parseState.position >= this.tokenStream.tokens.length;
|
|
7575
7643
|
};
|
|
@@ -7928,7 +7996,7 @@ function parseToken(tokenStream, parseState) {
|
|
|
7928
7996
|
|
|
7929
7997
|
var polishIdentifierCharacterClass = '[\\w@%^?=!$<>+*/:-]';
|
|
7930
7998
|
var polishIdentifierFirstCharacterClass = '[a-zA-Z_@%^?=!$<>+*/-]';
|
|
7931
|
-
var algebraicIdentifierCharacterClass = '[\\w
|
|
7999
|
+
var algebraicIdentifierCharacterClass = '[\\w$:!?]';
|
|
7932
8000
|
var algebraicIdentifierFirstCharacterClass = '[a-zA-Z_$]';
|
|
7933
8001
|
|
|
7934
8002
|
var NO_MATCH = [0];
|
|
@@ -8235,13 +8303,11 @@ var algebraicReservedNamesRecord = {
|
|
|
8235
8303
|
'defn': { value: null, forbidden: true },
|
|
8236
8304
|
'defns': { value: null, forbidden: true },
|
|
8237
8305
|
'try': { value: null, forbidden: true },
|
|
8238
|
-
'throw': { value: null, forbidden: true },
|
|
8239
8306
|
'recur': { value: null, forbidden: true },
|
|
8240
8307
|
'loop': { value: null, forbidden: true },
|
|
8241
8308
|
'time!': { value: null, forbidden: true },
|
|
8242
8309
|
'doseq': { value: null, forbidden: true },
|
|
8243
8310
|
'for': { value: null, forbidden: true },
|
|
8244
|
-
'do': { value: null, forbidden: true },
|
|
8245
8311
|
};
|
|
8246
8312
|
|
|
8247
8313
|
var identifierRegExp = new RegExp(algebraicIdentifierCharacterClass);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const polishIdentifierCharacterClass = "[\\w@%^?=!$<>+*/:-]";
|
|
2
2
|
export declare const polishIdentifierFirstCharacterClass = "[a-zA-Z_@%^?=!$<>+*/-]";
|
|
3
|
-
export declare const algebraicIdentifierCharacterClass = "[\\w
|
|
3
|
+
export declare const algebraicIdentifierCharacterClass = "[\\w$:!?]";
|
|
4
4
|
export declare const algebraicIdentifierFirstCharacterClass = "[a-zA-Z_$]";
|
|
@@ -11,7 +11,8 @@ export declare class AlgebraicParser {
|
|
|
11
11
|
private parseObject;
|
|
12
12
|
private parseArray;
|
|
13
13
|
private parseFunctionCall;
|
|
14
|
-
|
|
14
|
+
parseLambdaFunction(): AstNode | null;
|
|
15
|
+
private parseShorthandLamdaFunction;
|
|
15
16
|
private isAtEnd;
|
|
16
17
|
private peek;
|
|
17
18
|
}
|
|
@@ -5,7 +5,7 @@ export declare const algebraicSimpleTokenTypes: readonly ["LBrace", "LBracket",
|
|
|
5
5
|
export declare const algebraicOnlyValueTokenTypes: ["A_Whitespace", "A_Operator", "A_Symbol", "A_ReservedSymbol", "A_SingleLineComment", "A_MultiLineComment", "A_Number"];
|
|
6
6
|
export declare const algebraicValueTokenTypes: readonly ["String", "A_Whitespace", "A_Operator", "A_Symbol", "A_ReservedSymbol", "A_SingleLineComment", "A_MultiLineComment", "A_Number"];
|
|
7
7
|
export declare const algebraicTokenTypes: readonly ["LBrace", "LBracket", "LParen", "RBrace", "RBracket", "RParen", "AlgNotation", "PolNotation", "EndNotation", "String", "A_Whitespace", "A_Operator", "A_Symbol", "A_ReservedSymbol", "A_SingleLineComment", "A_MultiLineComment", "A_Number"];
|
|
8
|
-
export declare const AlgebraicOperators: readonly ["!", "~", "=", ",", "=>", "...", ".", "**", "*", "/", "%", "+", "-", "<<", ">>", ">>>", "<", "<=", ">", ">=", "==", "!=", "&", "^", "|", "&&", "||", "??"];
|
|
8
|
+
export declare const AlgebraicOperators: readonly ["!", "~", "=", ",", "=>", "...", ".", "**", "*", "/", "%", "+", "-", "<<", ">>", ">>>", "++", "<", "<=", ">", ">=", "==", "!=", "&", "^", "|", "&&", "||", "??"];
|
|
9
9
|
export type AlgebraicOperator = typeof AlgebraicOperators[number];
|
|
10
10
|
export declare function isAlgebraicOperator(operator: string): operator is AlgebraicOperator;
|
|
11
11
|
export declare function assertAlgebraicOperator(operator: string): asserts operator is AlgebraicOperator;
|
package/dist/index.esm.js
CHANGED
|
@@ -390,6 +390,7 @@ var AlgebraicOperators = [
|
|
|
390
390
|
'<<', // left shift
|
|
391
391
|
'>>', // signed right shift
|
|
392
392
|
'>>>', // unsigned right shift
|
|
393
|
+
'++', // string concatenation
|
|
393
394
|
'<', // less than
|
|
394
395
|
'<=', // less than or equal
|
|
395
396
|
'>', // greater than
|
|
@@ -3160,7 +3161,7 @@ var mathNormalExpression = {
|
|
|
3160
3161
|
},
|
|
3161
3162
|
};
|
|
3162
3163
|
|
|
3163
|
-
var version = "2.0.
|
|
3164
|
+
var version = "2.0.9";
|
|
3164
3165
|
|
|
3165
3166
|
var uuidTemplate = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
|
|
3166
3167
|
var xyRegexp = /[xy]/g;
|
|
@@ -7111,24 +7112,27 @@ function parseString(tokenStream, parseState) {
|
|
|
7111
7112
|
};
|
|
7112
7113
|
}
|
|
7113
7114
|
|
|
7114
|
-
var exponentiationPrecedence =
|
|
7115
|
+
var exponentiationPrecedence = 9;
|
|
7116
|
+
var placeholderRegexp$1 = /^\$([1-9]\d?)?$/;
|
|
7115
7117
|
function getPrecedence(operator) {
|
|
7116
7118
|
var operatorSign = operator[1];
|
|
7117
7119
|
switch (operatorSign) {
|
|
7118
7120
|
case '.': // accessor
|
|
7119
|
-
return
|
|
7121
|
+
return 10;
|
|
7120
7122
|
case '**': // exponentiation
|
|
7121
7123
|
return exponentiationPrecedence;
|
|
7122
7124
|
case '*': // multiplication
|
|
7123
7125
|
case '/': // division
|
|
7124
7126
|
case '%': // remainder
|
|
7125
|
-
return
|
|
7127
|
+
return 8;
|
|
7126
7128
|
case '+': // addition
|
|
7127
7129
|
case '-': // subtraction
|
|
7128
|
-
return
|
|
7130
|
+
return 7;
|
|
7129
7131
|
case '<<': // left shift
|
|
7130
7132
|
case '>>': // signed right shift
|
|
7131
7133
|
case '>>>': // unsigned right shift
|
|
7134
|
+
return 6;
|
|
7135
|
+
case '++': // string concatenation
|
|
7132
7136
|
return 5;
|
|
7133
7137
|
case '<': // less than
|
|
7134
7138
|
case '<=': // less than or equal
|
|
@@ -7226,6 +7230,11 @@ function fromBinaryAlgebraicToAstNode(operator, left, right) {
|
|
|
7226
7230
|
return createNamedNormalExpressionNode('bit-shift-right', [left, right], token);
|
|
7227
7231
|
case '>>>':
|
|
7228
7232
|
return createNamedNormalExpressionNode('unsigned-bit-shift-right', [left, right], token);
|
|
7233
|
+
case '++': {
|
|
7234
|
+
var leftString = createNamedNormalExpressionNode('str', [left], token);
|
|
7235
|
+
var rightString = createNamedNormalExpressionNode('str', [right], token);
|
|
7236
|
+
return createNamedNormalExpressionNode('str', [leftString, rightString], token);
|
|
7237
|
+
}
|
|
7229
7238
|
case '<':
|
|
7230
7239
|
return createNamedNormalExpressionNode('<', [left, right], token);
|
|
7231
7240
|
case '<=':
|
|
@@ -7337,7 +7346,7 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7337
7346
|
// Parentheses
|
|
7338
7347
|
if (isLParenToken(token)) {
|
|
7339
7348
|
var positionBefore = this.parseState.position;
|
|
7340
|
-
var lamdaFunction = this.
|
|
7349
|
+
var lamdaFunction = this.parseLambdaFunction();
|
|
7341
7350
|
if (lamdaFunction) {
|
|
7342
7351
|
return lamdaFunction;
|
|
7343
7352
|
}
|
|
@@ -7358,6 +7367,9 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7358
7367
|
var operand = this.parseOperand();
|
|
7359
7368
|
return fromUnaryAlgebraicToAstNode(token, operand);
|
|
7360
7369
|
}
|
|
7370
|
+
else if (operatorName === '=>') {
|
|
7371
|
+
return this.parseShorthandLamdaFunction();
|
|
7372
|
+
}
|
|
7361
7373
|
else {
|
|
7362
7374
|
throw new Error("Unknown unary operator: ".concat(operatorName));
|
|
7363
7375
|
}
|
|
@@ -7504,6 +7516,8 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7504
7516
|
case 'or':
|
|
7505
7517
|
case 'when':
|
|
7506
7518
|
case 'when-not':
|
|
7519
|
+
case 'do':
|
|
7520
|
+
case 'throw':
|
|
7507
7521
|
return {
|
|
7508
7522
|
t: AstNodeType.SpecialExpression,
|
|
7509
7523
|
n: name_1,
|
|
@@ -7520,13 +7534,11 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7520
7534
|
case 'defn':
|
|
7521
7535
|
case 'defns':
|
|
7522
7536
|
case 'try':
|
|
7523
|
-
case 'throw':
|
|
7524
7537
|
case 'recur':
|
|
7525
7538
|
case 'loop':
|
|
7526
7539
|
case 'time!':
|
|
7527
7540
|
case 'doseq':
|
|
7528
7541
|
case 'for':
|
|
7529
|
-
case 'do':
|
|
7530
7542
|
throw new Error("Special expression ".concat(name_1, " is not available in algebraic notation"));
|
|
7531
7543
|
default:
|
|
7532
7544
|
throw new Error("Unknown special expression: ".concat(name_1));
|
|
@@ -7543,7 +7555,7 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7543
7555
|
};
|
|
7544
7556
|
}
|
|
7545
7557
|
};
|
|
7546
|
-
AlgebraicParser.prototype.
|
|
7558
|
+
AlgebraicParser.prototype.parseLambdaFunction = function () {
|
|
7547
7559
|
var _a;
|
|
7548
7560
|
var firstToken = this.peek();
|
|
7549
7561
|
this.advance();
|
|
@@ -7602,6 +7614,62 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7602
7614
|
token: getTokenDebugData(firstToken) && firstToken,
|
|
7603
7615
|
};
|
|
7604
7616
|
};
|
|
7617
|
+
AlgebraicParser.prototype.parseShorthandLamdaFunction = function () {
|
|
7618
|
+
var _a, _b, _c, _d;
|
|
7619
|
+
var firstToken = this.peek();
|
|
7620
|
+
this.advance();
|
|
7621
|
+
var startPos = this.parseState.position;
|
|
7622
|
+
var exprNode = this.parseExpression();
|
|
7623
|
+
var endPos = this.parseState.position - 1;
|
|
7624
|
+
var arity = 0;
|
|
7625
|
+
var percent1 = 'NOT_SET'; // referring to argument bindings. % = NAKED, %1, %2, %3, etc = WITH_1
|
|
7626
|
+
for (var pos = startPos; pos <= endPos; pos += 1) {
|
|
7627
|
+
var tkn = this.tokenStream.tokens[pos];
|
|
7628
|
+
if (isA_SymbolToken(tkn)) {
|
|
7629
|
+
var match = placeholderRegexp$1.exec(tkn[1]);
|
|
7630
|
+
if (match) {
|
|
7631
|
+
var number = (_a = match[1]) !== null && _a !== void 0 ? _a : '1';
|
|
7632
|
+
if (number === '1') {
|
|
7633
|
+
var mixedPercent1 = (!match[1] && percent1 === 'WITH_1') || (match[1] && percent1 === 'NAKED');
|
|
7634
|
+
if (mixedPercent1)
|
|
7635
|
+
throw new LitsError('Please make up your mind, either use $ or $1', (_b = getTokenDebugData(firstToken)) === null || _b === void 0 ? void 0 : _b.sourceCodeInfo);
|
|
7636
|
+
percent1 = match[1] ? 'WITH_1' : 'NAKED';
|
|
7637
|
+
}
|
|
7638
|
+
arity = Math.max(arity, Number(number));
|
|
7639
|
+
if (arity > 20)
|
|
7640
|
+
throw new LitsError('Can\'t specify more than 20 arguments', (_c = getTokenDebugData(firstToken)) === null || _c === void 0 ? void 0 : _c.sourceCodeInfo);
|
|
7641
|
+
}
|
|
7642
|
+
}
|
|
7643
|
+
if (isA_OperatorToken(tkn, '=>')) {
|
|
7644
|
+
throw new LitsError('Nested shortcut functions are not allowed', (_d = getTokenDebugData(firstToken)) === null || _d === void 0 ? void 0 : _d.sourceCodeInfo);
|
|
7645
|
+
}
|
|
7646
|
+
}
|
|
7647
|
+
var mandatoryArguments = [];
|
|
7648
|
+
for (var i = 1; i <= arity; i += 1) {
|
|
7649
|
+
if (i === 1 && percent1 === 'NAKED')
|
|
7650
|
+
mandatoryArguments.push('$');
|
|
7651
|
+
else
|
|
7652
|
+
mandatoryArguments.push("$".concat(i));
|
|
7653
|
+
}
|
|
7654
|
+
var args = {
|
|
7655
|
+
b: [],
|
|
7656
|
+
m: mandatoryArguments,
|
|
7657
|
+
};
|
|
7658
|
+
var node = {
|
|
7659
|
+
t: AstNodeType.SpecialExpression,
|
|
7660
|
+
n: 'fn',
|
|
7661
|
+
p: [],
|
|
7662
|
+
o: [
|
|
7663
|
+
{
|
|
7664
|
+
as: args,
|
|
7665
|
+
b: [exprNode],
|
|
7666
|
+
a: args.m.length,
|
|
7667
|
+
},
|
|
7668
|
+
],
|
|
7669
|
+
token: getTokenDebugData(firstToken) && firstToken,
|
|
7670
|
+
};
|
|
7671
|
+
return node;
|
|
7672
|
+
};
|
|
7605
7673
|
AlgebraicParser.prototype.isAtEnd = function () {
|
|
7606
7674
|
return this.parseState.position >= this.tokenStream.tokens.length;
|
|
7607
7675
|
};
|
|
@@ -7960,7 +8028,7 @@ function parseToken(tokenStream, parseState) {
|
|
|
7960
8028
|
|
|
7961
8029
|
var polishIdentifierCharacterClass = '[\\w@%^?=!$<>+*/:-]';
|
|
7962
8030
|
var polishIdentifierFirstCharacterClass = '[a-zA-Z_@%^?=!$<>+*/-]';
|
|
7963
|
-
var algebraicIdentifierCharacterClass = '[\\w
|
|
8031
|
+
var algebraicIdentifierCharacterClass = '[\\w$:!?]';
|
|
7964
8032
|
var algebraicIdentifierFirstCharacterClass = '[a-zA-Z_$]';
|
|
7965
8033
|
|
|
7966
8034
|
var NO_MATCH = [0];
|
|
@@ -8267,13 +8335,11 @@ var algebraicReservedNamesRecord = {
|
|
|
8267
8335
|
'defn': { value: null, forbidden: true },
|
|
8268
8336
|
'defns': { value: null, forbidden: true },
|
|
8269
8337
|
'try': { value: null, forbidden: true },
|
|
8270
|
-
'throw': { value: null, forbidden: true },
|
|
8271
8338
|
'recur': { value: null, forbidden: true },
|
|
8272
8339
|
'loop': { value: null, forbidden: true },
|
|
8273
8340
|
'time!': { value: null, forbidden: true },
|
|
8274
8341
|
'doseq': { value: null, forbidden: true },
|
|
8275
8342
|
'for': { value: null, forbidden: true },
|
|
8276
|
-
'do': { value: null, forbidden: true },
|
|
8277
8343
|
};
|
|
8278
8344
|
|
|
8279
8345
|
var identifierRegExp = new RegExp(algebraicIdentifierCharacterClass);
|