@mojir/lits 2.0.8 → 2.0.10
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 +130 -177
- package/dist/cli/src/builtin/index.d.ts +3 -0
- package/dist/cli/src/builtin/interface.d.ts +4 -2
- package/dist/cli/src/builtin/specialExpressions/commonParser.d.ts +4 -0
- package/dist/cli/src/parser/AlgebraicParser.d.ts +2 -1
- package/dist/index.esm.js +130 -177
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +130 -177
- package/dist/index.js.map +1 -1
- package/dist/lits.iife.js +130 -177
- package/dist/lits.iife.js.map +1 -1
- package/dist/src/builtin/index.d.ts +3 -0
- package/dist/src/builtin/interface.d.ts +4 -2
- package/dist/src/builtin/specialExpressions/commonParser.d.ts +4 -0
- package/dist/src/parser/AlgebraicParser.d.ts +2 -1
- package/dist/testFramework.esm.js +130 -177
- package/dist/testFramework.esm.js.map +1 -1
- package/dist/testFramework.js +130 -177
- package/dist/testFramework.js.map +1 -1
- package/package.json +1 -1
package/dist/lits.iife.js
CHANGED
|
@@ -3164,7 +3164,7 @@ var Lits = (function (exports) {
|
|
|
3164
3164
|
},
|
|
3165
3165
|
};
|
|
3166
3166
|
|
|
3167
|
-
var version = "2.0.
|
|
3167
|
+
var version = "2.0.10";
|
|
3168
3168
|
|
|
3169
3169
|
var uuidTemplate = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
|
|
3170
3170
|
var xyRegexp = /[xy]/g;
|
|
@@ -4379,6 +4379,7 @@ var Lits = (function (exports) {
|
|
|
4379
4379
|
};
|
|
4380
4380
|
return node;
|
|
4381
4381
|
},
|
|
4382
|
+
validateParameterCount: function () { return undefined; },
|
|
4382
4383
|
evaluate: function (node, contextStack, _a) {
|
|
4383
4384
|
var e_1, _b;
|
|
4384
4385
|
var evaluateAstNode = _a.evaluateAstNode;
|
|
@@ -4406,42 +4407,30 @@ var Lits = (function (exports) {
|
|
|
4406
4407
|
},
|
|
4407
4408
|
};
|
|
4408
4409
|
|
|
4409
|
-
|
|
4410
|
-
|
|
4411
|
-
var parseToken = _a.parseToken;
|
|
4412
|
-
var node = {
|
|
4413
|
-
t: exports.AstNodeType.SpecialExpression,
|
|
4414
|
-
n: 'comment',
|
|
4415
|
-
p: [],
|
|
4416
|
-
token: undefined,
|
|
4417
|
-
};
|
|
4418
|
-
var tkn = asToken(tokenStream.tokens[parseState.position]);
|
|
4419
|
-
while (!isRParenToken(tkn)) {
|
|
4420
|
-
node.p.push(parseToken(tokenStream, parseState));
|
|
4421
|
-
tkn = asToken(tokenStream.tokens[parseState.position]);
|
|
4422
|
-
}
|
|
4423
|
-
parseState.position += 1;
|
|
4424
|
-
node.token = getTokenDebugData(firstToken) && firstToken;
|
|
4425
|
-
return node;
|
|
4426
|
-
},
|
|
4427
|
-
evaluate: function () { return null; },
|
|
4428
|
-
findUnresolvedIdentifiers: function () { return new Set(); },
|
|
4429
|
-
};
|
|
4430
|
-
|
|
4431
|
-
var condSpecialExpression = {
|
|
4432
|
-
parse: function (tokenStream, parseState, firstToken, _a) {
|
|
4410
|
+
function getCommonParser(name) {
|
|
4411
|
+
return function (tokenStream, parseState, firstToken, _a) {
|
|
4433
4412
|
var parseTokensUntilClosingBracket = _a.parseTokensUntilClosingBracket;
|
|
4434
4413
|
var params = parseTokensUntilClosingBracket(tokenStream, parseState);
|
|
4435
4414
|
assertRParenToken(tokenStream.tokens[parseState.position++]);
|
|
4436
|
-
|
|
4415
|
+
return {
|
|
4437
4416
|
t: exports.AstNodeType.SpecialExpression,
|
|
4438
|
-
n:
|
|
4417
|
+
n: name,
|
|
4439
4418
|
p: params,
|
|
4440
4419
|
token: getTokenDebugData(firstToken) && firstToken,
|
|
4441
4420
|
};
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4421
|
+
};
|
|
4422
|
+
}
|
|
4423
|
+
|
|
4424
|
+
var commentSpecialExpression = {
|
|
4425
|
+
parse: getCommonParser('comment'),
|
|
4426
|
+
validateParameterCount: function () { return undefined; },
|
|
4427
|
+
evaluate: function () { return null; },
|
|
4428
|
+
findUnresolvedIdentifiers: function () { return new Set(); },
|
|
4429
|
+
};
|
|
4430
|
+
|
|
4431
|
+
var condSpecialExpression = {
|
|
4432
|
+
parse: getCommonParser('cond'),
|
|
4433
|
+
validateParameterCount: function (node) { return assertEvenNumberOfParams(node); },
|
|
4445
4434
|
evaluate: function (node, contextStack, _a) {
|
|
4446
4435
|
var e_1, _b;
|
|
4447
4436
|
var evaluateAstNode = _a.evaluateAstNode;
|
|
@@ -4470,19 +4459,8 @@ var Lits = (function (exports) {
|
|
|
4470
4459
|
};
|
|
4471
4460
|
|
|
4472
4461
|
var declaredSpecialExpression = {
|
|
4473
|
-
parse:
|
|
4474
|
-
|
|
4475
|
-
var params = parseTokensUntilClosingBracket(tokenStream, parseState);
|
|
4476
|
-
assertRParenToken(tokenStream.tokens[parseState.position++]);
|
|
4477
|
-
var node = {
|
|
4478
|
-
t: exports.AstNodeType.SpecialExpression,
|
|
4479
|
-
n: 'declared?',
|
|
4480
|
-
p: params,
|
|
4481
|
-
token: getTokenDebugData(firstToken) && firstToken,
|
|
4482
|
-
};
|
|
4483
|
-
assertNumberOfParams(1, node);
|
|
4484
|
-
return node;
|
|
4485
|
-
},
|
|
4462
|
+
parse: getCommonParser('declared?'),
|
|
4463
|
+
validateParameterCount: function (node) { return assertNumberOfParams(1, node); },
|
|
4486
4464
|
evaluate: function (node, contextStack) {
|
|
4487
4465
|
var lookUpResult = contextStack.lookUp(node.p[0]);
|
|
4488
4466
|
return lookUpResult !== null;
|
|
@@ -4528,9 +4506,9 @@ var Lits = (function (exports) {
|
|
|
4528
4506
|
token: getTokenDebugData(firstToken) && firstToken,
|
|
4529
4507
|
};
|
|
4530
4508
|
assertSymbolNode(node.p[0], (_b = getTokenDebugData(node.token)) === null || _b === void 0 ? void 0 : _b.sourceCodeInfo);
|
|
4531
|
-
assertNumberOfParams(2, node);
|
|
4532
4509
|
return node;
|
|
4533
4510
|
},
|
|
4511
|
+
validateParameterCount: function (node) { return assertNumberOfParams(2, node); },
|
|
4534
4512
|
evaluate: function (node, contextStack, _a) {
|
|
4535
4513
|
var _b;
|
|
4536
4514
|
var evaluateAstNode = _a.evaluateAstNode, builtin = _a.builtin;
|
|
@@ -4566,9 +4544,9 @@ var Lits = (function (exports) {
|
|
|
4566
4544
|
p: params,
|
|
4567
4545
|
token: getTokenDebugData(firstToken) && firstToken,
|
|
4568
4546
|
};
|
|
4569
|
-
assertNumberOfParams(2, node);
|
|
4570
4547
|
return node;
|
|
4571
4548
|
},
|
|
4549
|
+
validateParameterCount: function (node) { return assertNumberOfParams(2, node); },
|
|
4572
4550
|
evaluate: function (node, contextStack, _a) {
|
|
4573
4551
|
var _b, _c;
|
|
4574
4552
|
var evaluateAstNode = _a.evaluateAstNode, builtin = _a.builtin;
|
|
@@ -4596,23 +4574,8 @@ var Lits = (function (exports) {
|
|
|
4596
4574
|
};
|
|
4597
4575
|
|
|
4598
4576
|
var doSpecialExpression = {
|
|
4599
|
-
parse:
|
|
4600
|
-
|
|
4601
|
-
var node = {
|
|
4602
|
-
t: exports.AstNodeType.SpecialExpression,
|
|
4603
|
-
n: 'do',
|
|
4604
|
-
p: [],
|
|
4605
|
-
token: undefined,
|
|
4606
|
-
};
|
|
4607
|
-
var tkn = asToken(tokenStream.tokens[parseState.position]);
|
|
4608
|
-
while (!isRParenToken(tkn)) {
|
|
4609
|
-
node.p.push(parseToken(tokenStream, parseState));
|
|
4610
|
-
tkn = asToken(tokenStream.tokens[parseState.position]);
|
|
4611
|
-
}
|
|
4612
|
-
parseState.position += 1;
|
|
4613
|
-
node.token = getTokenDebugData(firstToken) && firstToken;
|
|
4614
|
-
return node;
|
|
4615
|
-
},
|
|
4577
|
+
parse: getCommonParser('do'),
|
|
4578
|
+
validateParameterCount: function () { return undefined; },
|
|
4616
4579
|
evaluate: function (node, contextStack, _a) {
|
|
4617
4580
|
var e_1, _b;
|
|
4618
4581
|
var evaluateAstNode = _a.evaluateAstNode;
|
|
@@ -4689,6 +4652,7 @@ var Lits = (function (exports) {
|
|
|
4689
4652
|
};
|
|
4690
4653
|
return node;
|
|
4691
4654
|
},
|
|
4655
|
+
validateParameterCount: function () { return undefined; },
|
|
4692
4656
|
evaluate: function (node, contextStack, _a) {
|
|
4693
4657
|
var _b;
|
|
4694
4658
|
var _c, _d;
|
|
@@ -4730,6 +4694,7 @@ var Lits = (function (exports) {
|
|
|
4730
4694
|
};
|
|
4731
4695
|
return node;
|
|
4732
4696
|
},
|
|
4697
|
+
validateParameterCount: function () { return undefined; },
|
|
4733
4698
|
evaluate: function (node, contextStack, _a) {
|
|
4734
4699
|
var _b;
|
|
4735
4700
|
var _c, _d;
|
|
@@ -4773,6 +4738,7 @@ var Lits = (function (exports) {
|
|
|
4773
4738
|
};
|
|
4774
4739
|
return node;
|
|
4775
4740
|
},
|
|
4741
|
+
validateParameterCount: function () { return undefined; },
|
|
4776
4742
|
evaluate: function (node, contextStack, _a) {
|
|
4777
4743
|
var _b;
|
|
4778
4744
|
var _c;
|
|
@@ -5004,19 +4970,8 @@ var Lits = (function (exports) {
|
|
|
5004
4970
|
}
|
|
5005
4971
|
|
|
5006
4972
|
var ifSpecialExpression = {
|
|
5007
|
-
parse:
|
|
5008
|
-
|
|
5009
|
-
var params = parseTokensUntilClosingBracket(tokenStream, parseState);
|
|
5010
|
-
assertRParenToken(tokenStream.tokens[parseState.position++]);
|
|
5011
|
-
var node = {
|
|
5012
|
-
t: exports.AstNodeType.SpecialExpression,
|
|
5013
|
-
n: 'if',
|
|
5014
|
-
p: params,
|
|
5015
|
-
token: getTokenDebugData(firstToken) && firstToken,
|
|
5016
|
-
};
|
|
5017
|
-
assertNumberOfParams({ min: 2, max: 3 }, node);
|
|
5018
|
-
return node;
|
|
5019
|
-
},
|
|
4973
|
+
parse: getCommonParser('if'),
|
|
4974
|
+
validateParameterCount: function (node) { return assertNumberOfParams({ min: 2, max: 3 }, node); },
|
|
5020
4975
|
evaluate: function (node, contextStack, _a) {
|
|
5021
4976
|
var _b;
|
|
5022
4977
|
var evaluateAstNode = _a.evaluateAstNode;
|
|
@@ -5055,9 +5010,9 @@ var Lits = (function (exports) {
|
|
|
5055
5010
|
p: params,
|
|
5056
5011
|
token: getTokenDebugData(firstToken) && firstToken,
|
|
5057
5012
|
};
|
|
5058
|
-
assertNumberOfParams({ min: 1, max: 2 }, node);
|
|
5059
5013
|
return node;
|
|
5060
5014
|
},
|
|
5015
|
+
validateParameterCount: function (node) { return assertNumberOfParams({ min: 1, max: 2 }, node); },
|
|
5061
5016
|
evaluate: function (node, contextStack, _a) {
|
|
5062
5017
|
var _b;
|
|
5063
5018
|
var evaluateAstNode = _a.evaluateAstNode;
|
|
@@ -5087,19 +5042,8 @@ var Lits = (function (exports) {
|
|
|
5087
5042
|
};
|
|
5088
5043
|
|
|
5089
5044
|
var ifNotSpecialExpression = {
|
|
5090
|
-
parse:
|
|
5091
|
-
|
|
5092
|
-
var params = parseTokensUntilClosingBracket(tokenStream, parseState);
|
|
5093
|
-
assertRParenToken(tokenStream.tokens[parseState.position++]);
|
|
5094
|
-
var node = {
|
|
5095
|
-
t: exports.AstNodeType.SpecialExpression,
|
|
5096
|
-
n: 'if-not',
|
|
5097
|
-
p: params,
|
|
5098
|
-
token: getTokenDebugData(firstToken) && firstToken,
|
|
5099
|
-
};
|
|
5100
|
-
assertNumberOfParams({ min: 2, max: 3 }, node);
|
|
5101
|
-
return node;
|
|
5102
|
-
},
|
|
5045
|
+
parse: getCommonParser('if-not'),
|
|
5046
|
+
validateParameterCount: function (node) { return assertNumberOfParams({ min: 2, max: 3 }, node); },
|
|
5103
5047
|
evaluate: function (node, contextStack, _a) {
|
|
5104
5048
|
var _b;
|
|
5105
5049
|
var evaluateAstNode = _a.evaluateAstNode;
|
|
@@ -5136,6 +5080,7 @@ var Lits = (function (exports) {
|
|
|
5136
5080
|
};
|
|
5137
5081
|
return node;
|
|
5138
5082
|
},
|
|
5083
|
+
validateParameterCount: function () { return undefined; },
|
|
5139
5084
|
evaluate: function (node, contextStack, _a) {
|
|
5140
5085
|
var e_1, _b, e_2, _c;
|
|
5141
5086
|
var evaluateAstNode = _a.evaluateAstNode;
|
|
@@ -5207,6 +5152,7 @@ var Lits = (function (exports) {
|
|
|
5207
5152
|
};
|
|
5208
5153
|
return node;
|
|
5209
5154
|
},
|
|
5155
|
+
validateParameterCount: function () { return undefined; },
|
|
5210
5156
|
evaluate: function (node, contextStack, _a) {
|
|
5211
5157
|
var _b;
|
|
5212
5158
|
var evaluateAstNode = _a.evaluateAstNode;
|
|
@@ -5470,9 +5416,9 @@ var Lits = (function (exports) {
|
|
|
5470
5416
|
p: params,
|
|
5471
5417
|
token: getTokenDebugData(firstToken) && firstToken,
|
|
5472
5418
|
};
|
|
5473
|
-
assertNumberOfParams(1, node);
|
|
5474
5419
|
return node;
|
|
5475
5420
|
},
|
|
5421
|
+
validateParameterCount: function (node) { return assertNumberOfParams(1, node); },
|
|
5476
5422
|
evaluate: function (node, contextStack, helpers) { return evaluateLoop(true, node, contextStack, helpers.evaluateAstNode); },
|
|
5477
5423
|
findUnresolvedIdentifiers: function (node, contextStack, _a) {
|
|
5478
5424
|
var findUnresolvedIdentifiers = _a.findUnresolvedIdentifiers, builtin = _a.builtin;
|
|
@@ -5492,9 +5438,9 @@ var Lits = (function (exports) {
|
|
|
5492
5438
|
p: params,
|
|
5493
5439
|
token: getTokenDebugData(firstToken) && firstToken,
|
|
5494
5440
|
};
|
|
5495
|
-
assertNumberOfParams(1, node);
|
|
5496
5441
|
return node;
|
|
5497
5442
|
},
|
|
5443
|
+
validateParameterCount: function (node) { return assertNumberOfParams(1, node); },
|
|
5498
5444
|
evaluate: function (node, contextStack, helpers) {
|
|
5499
5445
|
evaluateLoop(false, node, contextStack, helpers.evaluateAstNode);
|
|
5500
5446
|
return null;
|
|
@@ -5506,18 +5452,8 @@ var Lits = (function (exports) {
|
|
|
5506
5452
|
};
|
|
5507
5453
|
|
|
5508
5454
|
var orSpecialExpression = {
|
|
5509
|
-
parse:
|
|
5510
|
-
|
|
5511
|
-
var params = parseTokensUntilClosingBracket(tokenStream, parseState);
|
|
5512
|
-
assertRParenToken(tokenStream.tokens[parseState.position++]);
|
|
5513
|
-
var node = {
|
|
5514
|
-
t: exports.AstNodeType.SpecialExpression,
|
|
5515
|
-
n: 'or',
|
|
5516
|
-
p: params,
|
|
5517
|
-
token: getTokenDebugData(firstToken) && firstToken,
|
|
5518
|
-
};
|
|
5519
|
-
return node;
|
|
5520
|
-
},
|
|
5455
|
+
parse: getCommonParser('or'),
|
|
5456
|
+
validateParameterCount: function () { return undefined; },
|
|
5521
5457
|
evaluate: function (node, contextStack, _a) {
|
|
5522
5458
|
var e_1, _b;
|
|
5523
5459
|
var evaluateAstNode = _a.evaluateAstNode;
|
|
@@ -5546,19 +5482,8 @@ var Lits = (function (exports) {
|
|
|
5546
5482
|
};
|
|
5547
5483
|
|
|
5548
5484
|
var qqSpecialExpression = {
|
|
5549
|
-
parse:
|
|
5550
|
-
|
|
5551
|
-
var params = parseTokensUntilClosingBracket(tokenStream, parseState);
|
|
5552
|
-
assertRParenToken(tokenStream.tokens[parseState.position++]);
|
|
5553
|
-
var node = {
|
|
5554
|
-
t: exports.AstNodeType.SpecialExpression,
|
|
5555
|
-
n: '??',
|
|
5556
|
-
p: params,
|
|
5557
|
-
token: getTokenDebugData(firstToken) && firstToken,
|
|
5558
|
-
};
|
|
5559
|
-
assertNumberOfParams({ min: 1, max: 2 }, node);
|
|
5560
|
-
return node;
|
|
5561
|
-
},
|
|
5485
|
+
parse: getCommonParser('??'),
|
|
5486
|
+
validateParameterCount: function (node) { return assertNumberOfParams({ min: 1, max: 2 }, node); },
|
|
5562
5487
|
evaluate: function (node, contextStack, _a) {
|
|
5563
5488
|
var _b;
|
|
5564
5489
|
var evaluateAstNode = _a.evaluateAstNode;
|
|
@@ -5590,6 +5515,7 @@ var Lits = (function (exports) {
|
|
|
5590
5515
|
};
|
|
5591
5516
|
return node;
|
|
5592
5517
|
},
|
|
5518
|
+
validateParameterCount: function () { return undefined; },
|
|
5593
5519
|
evaluate: function (node, contextStack, _a) {
|
|
5594
5520
|
var evaluateAstNode = _a.evaluateAstNode;
|
|
5595
5521
|
var params = node.p.map(function (paramNode) { return evaluateAstNode(paramNode, contextStack); });
|
|
@@ -5602,19 +5528,8 @@ var Lits = (function (exports) {
|
|
|
5602
5528
|
};
|
|
5603
5529
|
|
|
5604
5530
|
var throwSpecialExpression = {
|
|
5605
|
-
parse:
|
|
5606
|
-
|
|
5607
|
-
var params = parseTokensUntilClosingBracket(tokenStream, parseState);
|
|
5608
|
-
assertRParenToken(tokenStream.tokens[parseState.position++]);
|
|
5609
|
-
var node = {
|
|
5610
|
-
t: exports.AstNodeType.SpecialExpression,
|
|
5611
|
-
n: 'throw',
|
|
5612
|
-
p: params,
|
|
5613
|
-
token: getTokenDebugData(firstToken) && firstToken,
|
|
5614
|
-
};
|
|
5615
|
-
assertNumberOfParams(1, node);
|
|
5616
|
-
return node;
|
|
5617
|
-
},
|
|
5531
|
+
parse: getCommonParser('throw'),
|
|
5532
|
+
validateParameterCount: function (node) { return assertNumberOfParams(1, node); },
|
|
5618
5533
|
evaluate: function (node, contextStack, _a) {
|
|
5619
5534
|
var _b, _c;
|
|
5620
5535
|
var evaluateAstNode = _a.evaluateAstNode;
|
|
@@ -5630,19 +5545,8 @@ var Lits = (function (exports) {
|
|
|
5630
5545
|
};
|
|
5631
5546
|
|
|
5632
5547
|
var timeSpecialExpression = {
|
|
5633
|
-
parse:
|
|
5634
|
-
|
|
5635
|
-
var params = parseTokensUntilClosingBracket(tokenStream, parseState);
|
|
5636
|
-
assertRParenToken(tokenStream.tokens[parseState.position++]);
|
|
5637
|
-
var node = {
|
|
5638
|
-
t: exports.AstNodeType.SpecialExpression,
|
|
5639
|
-
n: 'time!',
|
|
5640
|
-
p: params,
|
|
5641
|
-
token: getTokenDebugData(firstToken) && firstToken,
|
|
5642
|
-
};
|
|
5643
|
-
assertNumberOfParams(1, node);
|
|
5644
|
-
return node;
|
|
5645
|
-
},
|
|
5548
|
+
parse: getCommonParser('time!'),
|
|
5549
|
+
validateParameterCount: function (node) { return assertNumberOfParams(1, node); },
|
|
5646
5550
|
evaluate: function (node, contextStack, _a) {
|
|
5647
5551
|
var evaluateAstNode = _a.evaluateAstNode;
|
|
5648
5552
|
var param = node.p[0];
|
|
@@ -5683,9 +5587,9 @@ var Lits = (function (exports) {
|
|
|
5683
5587
|
e: error,
|
|
5684
5588
|
token: getTokenDebugData(firstToken) && firstToken,
|
|
5685
5589
|
};
|
|
5686
|
-
assertNumberOfParams(1, node);
|
|
5687
5590
|
return node;
|
|
5688
5591
|
},
|
|
5592
|
+
validateParameterCount: function (node) { return assertNumberOfParams(1, node); },
|
|
5689
5593
|
evaluate: function (node, contextStack, _a) {
|
|
5690
5594
|
var _b;
|
|
5691
5595
|
var _c;
|
|
@@ -5715,19 +5619,8 @@ var Lits = (function (exports) {
|
|
|
5715
5619
|
};
|
|
5716
5620
|
|
|
5717
5621
|
var whenSpecialExpression = {
|
|
5718
|
-
parse:
|
|
5719
|
-
|
|
5720
|
-
var params = parseTokensUntilClosingBracket(tokenStream, parseState);
|
|
5721
|
-
assertRParenToken(tokenStream.tokens[parseState.position++]);
|
|
5722
|
-
var node = {
|
|
5723
|
-
t: exports.AstNodeType.SpecialExpression,
|
|
5724
|
-
n: 'when',
|
|
5725
|
-
p: params,
|
|
5726
|
-
token: getTokenDebugData(firstToken) && firstToken,
|
|
5727
|
-
};
|
|
5728
|
-
assertNumberOfParams({ min: 1 }, node);
|
|
5729
|
-
return node;
|
|
5730
|
-
},
|
|
5622
|
+
parse: getCommonParser('when'),
|
|
5623
|
+
validateParameterCount: function (node) { return assertNumberOfParams({ min: 1 }, node); },
|
|
5731
5624
|
evaluate: function (node, contextStack, _a) {
|
|
5732
5625
|
var e_1, _b;
|
|
5733
5626
|
var _c;
|
|
@@ -5777,6 +5670,7 @@ var Lits = (function (exports) {
|
|
|
5777
5670
|
};
|
|
5778
5671
|
return node;
|
|
5779
5672
|
},
|
|
5673
|
+
validateParameterCount: function () { return undefined; },
|
|
5780
5674
|
evaluate: function (node, contextStack, _a) {
|
|
5781
5675
|
var e_1, _b;
|
|
5782
5676
|
var _c;
|
|
@@ -5838,6 +5732,7 @@ var Lits = (function (exports) {
|
|
|
5838
5732
|
};
|
|
5839
5733
|
return node;
|
|
5840
5734
|
},
|
|
5735
|
+
validateParameterCount: function () { return undefined; },
|
|
5841
5736
|
evaluate: function (node, contextStack, _a) {
|
|
5842
5737
|
var e_1, _b;
|
|
5843
5738
|
var evaluateAstNode = _a.evaluateAstNode;
|
|
@@ -5876,19 +5771,8 @@ var Lits = (function (exports) {
|
|
|
5876
5771
|
};
|
|
5877
5772
|
|
|
5878
5773
|
var whenNotSpecialExpression = {
|
|
5879
|
-
parse:
|
|
5880
|
-
|
|
5881
|
-
var params = parseTokensUntilClosingBracket(tokenStream, parseState);
|
|
5882
|
-
assertRParenToken(tokenStream.tokens[parseState.position++]);
|
|
5883
|
-
var node = {
|
|
5884
|
-
t: exports.AstNodeType.SpecialExpression,
|
|
5885
|
-
n: 'when-not',
|
|
5886
|
-
p: params,
|
|
5887
|
-
token: getTokenDebugData(firstToken) && firstToken,
|
|
5888
|
-
};
|
|
5889
|
-
assertNumberOfParams({ min: 1 }, node);
|
|
5890
|
-
return node;
|
|
5891
|
-
},
|
|
5774
|
+
parse: getCommonParser('when-not'),
|
|
5775
|
+
validateParameterCount: function (node) { return assertNumberOfParams({ min: 1 }, node); },
|
|
5892
5776
|
evaluate: function (node, contextStack, _a) {
|
|
5893
5777
|
var e_1, _b;
|
|
5894
5778
|
var _c;
|
|
@@ -7116,6 +7000,7 @@ var Lits = (function (exports) {
|
|
|
7116
7000
|
}
|
|
7117
7001
|
|
|
7118
7002
|
var exponentiationPrecedence = 9;
|
|
7003
|
+
var placeholderRegexp$1 = /^\$([1-9]\d?)?$/;
|
|
7119
7004
|
function getPrecedence(operator) {
|
|
7120
7005
|
var operatorSign = operator[1];
|
|
7121
7006
|
switch (operatorSign) {
|
|
@@ -7348,7 +7233,7 @@ var Lits = (function (exports) {
|
|
|
7348
7233
|
// Parentheses
|
|
7349
7234
|
if (isLParenToken(token)) {
|
|
7350
7235
|
var positionBefore = this.parseState.position;
|
|
7351
|
-
var lamdaFunction = this.
|
|
7236
|
+
var lamdaFunction = this.parseLambdaFunction();
|
|
7352
7237
|
if (lamdaFunction) {
|
|
7353
7238
|
return lamdaFunction;
|
|
7354
7239
|
}
|
|
@@ -7369,6 +7254,9 @@ var Lits = (function (exports) {
|
|
|
7369
7254
|
var operand = this.parseOperand();
|
|
7370
7255
|
return fromUnaryAlgebraicToAstNode(token, operand);
|
|
7371
7256
|
}
|
|
7257
|
+
else if (operatorName === '=>') {
|
|
7258
|
+
return this.parseShorthandLamdaFunction();
|
|
7259
|
+
}
|
|
7372
7260
|
else {
|
|
7373
7261
|
throw new Error("Unknown unary operator: ".concat(operatorName));
|
|
7374
7262
|
}
|
|
@@ -7484,7 +7372,7 @@ var Lits = (function (exports) {
|
|
|
7484
7372
|
};
|
|
7485
7373
|
};
|
|
7486
7374
|
AlgebraicParser.prototype.parseFunctionCall = function (symbol) {
|
|
7487
|
-
var _a, _b;
|
|
7375
|
+
var _a, _b, _c;
|
|
7488
7376
|
var params = [];
|
|
7489
7377
|
this.advance();
|
|
7490
7378
|
while (!this.isAtEnd() && !isRParenToken(this.peek())) {
|
|
@@ -7516,13 +7404,17 @@ var Lits = (function (exports) {
|
|
|
7516
7404
|
case 'when':
|
|
7517
7405
|
case 'when-not':
|
|
7518
7406
|
case 'do':
|
|
7519
|
-
case '
|
|
7520
|
-
|
|
7407
|
+
case 'time!':
|
|
7408
|
+
case 'throw': {
|
|
7409
|
+
var node_1 = {
|
|
7521
7410
|
t: exports.AstNodeType.SpecialExpression,
|
|
7522
7411
|
n: name_1,
|
|
7523
7412
|
p: params,
|
|
7524
7413
|
token: getTokenDebugData(symbol.token) && symbol.token,
|
|
7525
7414
|
};
|
|
7415
|
+
builtin.specialExpressions[node_1.n].validateParameterCount(node_1);
|
|
7416
|
+
return node_1;
|
|
7417
|
+
}
|
|
7526
7418
|
case 'def':
|
|
7527
7419
|
case 'defs':
|
|
7528
7420
|
case 'let':
|
|
@@ -7535,7 +7427,6 @@ var Lits = (function (exports) {
|
|
|
7535
7427
|
case 'try':
|
|
7536
7428
|
case 'recur':
|
|
7537
7429
|
case 'loop':
|
|
7538
|
-
case 'time!':
|
|
7539
7430
|
case 'doseq':
|
|
7540
7431
|
case 'for':
|
|
7541
7432
|
throw new Error("Special expression ".concat(name_1, " is not available in algebraic notation"));
|
|
@@ -7543,7 +7434,12 @@ var Lits = (function (exports) {
|
|
|
7543
7434
|
throw new Error("Unknown special expression: ".concat(name_1));
|
|
7544
7435
|
}
|
|
7545
7436
|
}
|
|
7546
|
-
|
|
7437
|
+
var node = createNamedNormalExpressionNode(symbol.v, params, symbol.token);
|
|
7438
|
+
var builtinExpression = builtin.normalExpressions[node.n];
|
|
7439
|
+
if (builtinExpression) {
|
|
7440
|
+
(_c = builtinExpression.validate) === null || _c === void 0 ? void 0 : _c.call(builtinExpression, __assign(__assign({}, node), { p: withoutCommentNodes(node.p) }));
|
|
7441
|
+
}
|
|
7442
|
+
return node;
|
|
7547
7443
|
}
|
|
7548
7444
|
else {
|
|
7549
7445
|
return {
|
|
@@ -7554,7 +7450,7 @@ var Lits = (function (exports) {
|
|
|
7554
7450
|
};
|
|
7555
7451
|
}
|
|
7556
7452
|
};
|
|
7557
|
-
AlgebraicParser.prototype.
|
|
7453
|
+
AlgebraicParser.prototype.parseLambdaFunction = function () {
|
|
7558
7454
|
var _a;
|
|
7559
7455
|
var firstToken = this.peek();
|
|
7560
7456
|
this.advance();
|
|
@@ -7613,6 +7509,62 @@ var Lits = (function (exports) {
|
|
|
7613
7509
|
token: getTokenDebugData(firstToken) && firstToken,
|
|
7614
7510
|
};
|
|
7615
7511
|
};
|
|
7512
|
+
AlgebraicParser.prototype.parseShorthandLamdaFunction = function () {
|
|
7513
|
+
var _a, _b, _c, _d;
|
|
7514
|
+
var firstToken = this.peek();
|
|
7515
|
+
this.advance();
|
|
7516
|
+
var startPos = this.parseState.position;
|
|
7517
|
+
var exprNode = this.parseExpression();
|
|
7518
|
+
var endPos = this.parseState.position - 1;
|
|
7519
|
+
var arity = 0;
|
|
7520
|
+
var percent1 = 'NOT_SET'; // referring to argument bindings. % = NAKED, %1, %2, %3, etc = WITH_1
|
|
7521
|
+
for (var pos = startPos; pos <= endPos; pos += 1) {
|
|
7522
|
+
var tkn = this.tokenStream.tokens[pos];
|
|
7523
|
+
if (isA_SymbolToken(tkn)) {
|
|
7524
|
+
var match = placeholderRegexp$1.exec(tkn[1]);
|
|
7525
|
+
if (match) {
|
|
7526
|
+
var number = (_a = match[1]) !== null && _a !== void 0 ? _a : '1';
|
|
7527
|
+
if (number === '1') {
|
|
7528
|
+
var mixedPercent1 = (!match[1] && percent1 === 'WITH_1') || (match[1] && percent1 === 'NAKED');
|
|
7529
|
+
if (mixedPercent1)
|
|
7530
|
+
throw new LitsError('Please make up your mind, either use $ or $1', (_b = getTokenDebugData(firstToken)) === null || _b === void 0 ? void 0 : _b.sourceCodeInfo);
|
|
7531
|
+
percent1 = match[1] ? 'WITH_1' : 'NAKED';
|
|
7532
|
+
}
|
|
7533
|
+
arity = Math.max(arity, Number(number));
|
|
7534
|
+
if (arity > 20)
|
|
7535
|
+
throw new LitsError('Can\'t specify more than 20 arguments', (_c = getTokenDebugData(firstToken)) === null || _c === void 0 ? void 0 : _c.sourceCodeInfo);
|
|
7536
|
+
}
|
|
7537
|
+
}
|
|
7538
|
+
if (isA_OperatorToken(tkn, '=>')) {
|
|
7539
|
+
throw new LitsError('Nested shortcut functions are not allowed', (_d = getTokenDebugData(firstToken)) === null || _d === void 0 ? void 0 : _d.sourceCodeInfo);
|
|
7540
|
+
}
|
|
7541
|
+
}
|
|
7542
|
+
var mandatoryArguments = [];
|
|
7543
|
+
for (var i = 1; i <= arity; i += 1) {
|
|
7544
|
+
if (i === 1 && percent1 === 'NAKED')
|
|
7545
|
+
mandatoryArguments.push('$');
|
|
7546
|
+
else
|
|
7547
|
+
mandatoryArguments.push("$".concat(i));
|
|
7548
|
+
}
|
|
7549
|
+
var args = {
|
|
7550
|
+
b: [],
|
|
7551
|
+
m: mandatoryArguments,
|
|
7552
|
+
};
|
|
7553
|
+
var node = {
|
|
7554
|
+
t: exports.AstNodeType.SpecialExpression,
|
|
7555
|
+
n: 'fn',
|
|
7556
|
+
p: [],
|
|
7557
|
+
o: [
|
|
7558
|
+
{
|
|
7559
|
+
as: args,
|
|
7560
|
+
b: [exprNode],
|
|
7561
|
+
a: args.m.length,
|
|
7562
|
+
},
|
|
7563
|
+
],
|
|
7564
|
+
token: getTokenDebugData(firstToken) && firstToken,
|
|
7565
|
+
};
|
|
7566
|
+
return node;
|
|
7567
|
+
};
|
|
7616
7568
|
AlgebraicParser.prototype.isAtEnd = function () {
|
|
7617
7569
|
return this.parseState.position >= this.tokenStream.tokens.length;
|
|
7618
7570
|
};
|
|
@@ -7856,7 +7808,7 @@ var Lits = (function (exports) {
|
|
|
7856
7808
|
var firstToken = asLParenToken(tokenStream.tokens[parseState.position++]);
|
|
7857
7809
|
var nameToken = asP_SymbolToken(tokenStream.tokens[parseState.position++]);
|
|
7858
7810
|
var expressionName = nameToken[1];
|
|
7859
|
-
var
|
|
7811
|
+
var _b = asNonUndefined(builtin.specialExpressions[expressionName], (_a = getTokenDebugData(nameToken)) === null || _a === void 0 ? void 0 : _a.sourceCodeInfo), parse = _b.parse, validateParameterCount = _b.validateParameterCount;
|
|
7860
7812
|
var node = parse(tokenStream, parseState, firstToken, {
|
|
7861
7813
|
parseExpression: parseExpression,
|
|
7862
7814
|
parseTokensUntilClosingBracket: parseTokensUntilClosingBracket,
|
|
@@ -7865,6 +7817,7 @@ var Lits = (function (exports) {
|
|
|
7865
7817
|
parseBindings: parseBindings,
|
|
7866
7818
|
parseArgument: parseArgument,
|
|
7867
7819
|
});
|
|
7820
|
+
validateParameterCount(node);
|
|
7868
7821
|
return node;
|
|
7869
7822
|
}
|
|
7870
7823
|
function parsePolishToken(tokenStream, parseState) {
|