@mojir/lits 2.0.13 → 2.0.14
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 +137 -46
- package/dist/cli/src/parser/AlgebraicParser.d.ts +11 -1
- package/dist/cli/src/tokenizer/algebraic/algebraicTokens.d.ts +1 -1
- package/dist/index.esm.js +137 -46
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +137 -46
- package/dist/index.js.map +1 -1
- package/dist/lits.iife.js +137 -46
- package/dist/lits.iife.js.map +1 -1
- package/dist/src/parser/AlgebraicParser.d.ts +11 -1
- package/dist/src/tokenizer/algebraic/algebraicTokens.d.ts +1 -1
- package/dist/testFramework.esm.js +137 -46
- package/dist/testFramework.esm.js.map +1 -1
- package/dist/testFramework.js +137 -46
- package/dist/testFramework.js.map +1 -1
- package/package.json +1 -1
package/dist/testFramework.js
CHANGED
|
@@ -410,6 +410,7 @@ var otherSymbolicOperators = [
|
|
|
410
410
|
'.', // property accessor
|
|
411
411
|
',', // item separator
|
|
412
412
|
'=', // property assignment
|
|
413
|
+
';', // statement terminator
|
|
413
414
|
];
|
|
414
415
|
var symbolicOperators = __spreadArray(__spreadArray(__spreadArray([], __read(symbolicUnaryOperators), false), __read(symbolicBinaryOperators), false), __read(otherSymbolicOperators), false);
|
|
415
416
|
var nonFunctionOperators = [
|
|
@@ -3082,7 +3083,7 @@ var mathNormalExpression = {
|
|
|
3082
3083
|
},
|
|
3083
3084
|
};
|
|
3084
3085
|
|
|
3085
|
-
var version = "2.0.
|
|
3086
|
+
var version = "2.0.14";
|
|
3086
3087
|
|
|
3087
3088
|
var uuidTemplate = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
|
|
3088
3089
|
var xyRegexp = /[xy]/g;
|
|
@@ -7112,6 +7113,7 @@ function fromBinaryOperatorToAstNode(operator, left, right, token) {
|
|
|
7112
7113
|
token: getTokenDebugData(token) && token,
|
|
7113
7114
|
};
|
|
7114
7115
|
/* v8 ignore next 8 */
|
|
7116
|
+
case ';':
|
|
7115
7117
|
case '!':
|
|
7116
7118
|
case '~':
|
|
7117
7119
|
case '=':
|
|
@@ -7132,14 +7134,33 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7132
7134
|
this.parseState.position += 1;
|
|
7133
7135
|
};
|
|
7134
7136
|
AlgebraicParser.prototype.parse = function () {
|
|
7135
|
-
|
|
7137
|
+
var nodes = [];
|
|
7138
|
+
while (!this.isAtEnd()) {
|
|
7139
|
+
nodes.push(this.parseExpression());
|
|
7140
|
+
if (!isA_OperatorToken(this.peek(), ';')) {
|
|
7141
|
+
break;
|
|
7142
|
+
}
|
|
7143
|
+
this.advance();
|
|
7144
|
+
}
|
|
7145
|
+
return nodes;
|
|
7136
7146
|
};
|
|
7137
7147
|
AlgebraicParser.prototype.parseExpression = function (precedence) {
|
|
7138
7148
|
var _a;
|
|
7139
7149
|
if (precedence === void 0) { precedence = 0; }
|
|
7150
|
+
var firstToken = this.peek();
|
|
7151
|
+
if (isA_SymbolToken(firstToken) && firstToken[1] === 'def') {
|
|
7152
|
+
return this.parseDef(firstToken);
|
|
7153
|
+
}
|
|
7154
|
+
if (isA_SymbolToken(firstToken) && firstToken[1] === 'defn') {
|
|
7155
|
+
return this.parseDefn(firstToken);
|
|
7156
|
+
}
|
|
7140
7157
|
var left = this.parseOperand();
|
|
7141
|
-
|
|
7142
|
-
|
|
7158
|
+
var operator = this.peek();
|
|
7159
|
+
while (!this.isAtEnd()
|
|
7160
|
+
&& !isA_OperatorToken(operator, ',')
|
|
7161
|
+
&& !isA_OperatorToken(operator, ';')
|
|
7162
|
+
&& !isRBracketToken(operator)
|
|
7163
|
+
&& !isRParenToken(operator)) {
|
|
7143
7164
|
if (isA_BinaryOperatorToken(operator)) {
|
|
7144
7165
|
var name_1 = operator[1];
|
|
7145
7166
|
var newPrecedece = getPrecedence(name_1);
|
|
@@ -7169,6 +7190,7 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7169
7190
|
else {
|
|
7170
7191
|
break;
|
|
7171
7192
|
}
|
|
7193
|
+
operator = this.peek();
|
|
7172
7194
|
}
|
|
7173
7195
|
if (!left) {
|
|
7174
7196
|
throw new LitsError('Expected operand', (_a = getTokenDebugData(this.peek())) === null || _a === void 0 ? void 0 : _a.sourceCodeInfo);
|
|
@@ -7415,13 +7437,11 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7415
7437
|
}
|
|
7416
7438
|
case 'let':
|
|
7417
7439
|
return this.parseLet(symbol, params);
|
|
7418
|
-
case 'def':
|
|
7419
7440
|
case 'defs':
|
|
7420
7441
|
case 'if-let':
|
|
7421
7442
|
case 'when-let':
|
|
7422
7443
|
case 'when-first':
|
|
7423
7444
|
case 'fn':
|
|
7424
|
-
case 'defn':
|
|
7425
7445
|
case 'defns':
|
|
7426
7446
|
case 'try':
|
|
7427
7447
|
case 'recur':
|
|
@@ -7444,8 +7464,32 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7444
7464
|
}
|
|
7445
7465
|
};
|
|
7446
7466
|
AlgebraicParser.prototype.parseLambdaFunction = function () {
|
|
7447
|
-
var _a, _b;
|
|
7448
7467
|
var firstToken = this.peek();
|
|
7468
|
+
try {
|
|
7469
|
+
var _a = this.parseFunctionArguments(), functionArguments = _a.functionArguments, arity = _a.arity;
|
|
7470
|
+
if (!isA_OperatorToken(this.peek(), '=>')) {
|
|
7471
|
+
return null;
|
|
7472
|
+
}
|
|
7473
|
+
this.advance();
|
|
7474
|
+
var body = this.parseExpression();
|
|
7475
|
+
return {
|
|
7476
|
+
t: AstNodeType.SpecialExpression,
|
|
7477
|
+
n: 'fn',
|
|
7478
|
+
p: [],
|
|
7479
|
+
o: [{
|
|
7480
|
+
as: functionArguments,
|
|
7481
|
+
b: [body],
|
|
7482
|
+
a: arity,
|
|
7483
|
+
}],
|
|
7484
|
+
token: getTokenDebugData(firstToken) && firstToken,
|
|
7485
|
+
};
|
|
7486
|
+
}
|
|
7487
|
+
catch (_b) {
|
|
7488
|
+
return null;
|
|
7489
|
+
}
|
|
7490
|
+
};
|
|
7491
|
+
AlgebraicParser.prototype.parseFunctionArguments = function () {
|
|
7492
|
+
var _a, _b, _c, _d, _e;
|
|
7449
7493
|
this.advance();
|
|
7450
7494
|
var rest = false;
|
|
7451
7495
|
var letBindingObject;
|
|
@@ -7468,7 +7512,7 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7468
7512
|
}
|
|
7469
7513
|
var symbolToken = this.peek();
|
|
7470
7514
|
if (!isA_SymbolToken(symbolToken)) {
|
|
7471
|
-
|
|
7515
|
+
throw new LitsError('Expected symbol', (_c = getTokenDebugData(this.peek())) === null || _c === void 0 ? void 0 : _c.sourceCodeInfo);
|
|
7472
7516
|
}
|
|
7473
7517
|
if (rest) {
|
|
7474
7518
|
restArg = symbolToken[1];
|
|
@@ -7479,47 +7523,36 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7479
7523
|
this.advance();
|
|
7480
7524
|
}
|
|
7481
7525
|
if (!isA_OperatorToken(this.peek(), ',') && !isRParenToken(this.peek())) {
|
|
7482
|
-
|
|
7526
|
+
throw new LitsError('Expected comma or closing parenthesis', (_d = getTokenDebugData(this.peek())) === null || _d === void 0 ? void 0 : _d.sourceCodeInfo);
|
|
7483
7527
|
}
|
|
7484
7528
|
if (isA_OperatorToken(this.peek(), ',')) {
|
|
7485
7529
|
this.advance();
|
|
7486
7530
|
}
|
|
7487
7531
|
}
|
|
7532
|
+
var arity = restArg !== undefined ? { min: args.length } : args.length;
|
|
7488
7533
|
if (!isRParenToken(this.peek())) {
|
|
7489
|
-
|
|
7490
|
-
}
|
|
7491
|
-
this.advance();
|
|
7492
|
-
if (!isA_OperatorToken(this.peek(), '=>')) {
|
|
7493
|
-
return null;
|
|
7534
|
+
throw new LitsError('Expected closing parenthesis', (_e = getTokenDebugData(this.peek())) === null || _e === void 0 ? void 0 : _e.sourceCodeInfo);
|
|
7494
7535
|
}
|
|
7495
|
-
this.advance();
|
|
7496
7536
|
var letBindings = letBindingObject ? arrayToPairs(letBindingObject.p) : [];
|
|
7497
|
-
var
|
|
7498
|
-
|
|
7537
|
+
var functionArguments = {
|
|
7538
|
+
m: args,
|
|
7539
|
+
r: restArg,
|
|
7540
|
+
b: letBindings.map(function (pair) {
|
|
7541
|
+
var key = pair[0];
|
|
7542
|
+
var value = pair[1];
|
|
7543
|
+
return {
|
|
7544
|
+
t: AstNodeType.Binding,
|
|
7545
|
+
n: key.v,
|
|
7546
|
+
v: value,
|
|
7547
|
+
p: [],
|
|
7548
|
+
token: getTokenDebugData(key.token) && key.token,
|
|
7549
|
+
};
|
|
7550
|
+
}),
|
|
7551
|
+
};
|
|
7552
|
+
this.advance();
|
|
7499
7553
|
return {
|
|
7500
|
-
|
|
7501
|
-
|
|
7502
|
-
p: [],
|
|
7503
|
-
o: [{
|
|
7504
|
-
as: {
|
|
7505
|
-
m: args,
|
|
7506
|
-
r: restArg,
|
|
7507
|
-
b: letBindings.map(function (pair) {
|
|
7508
|
-
var key = pair[0];
|
|
7509
|
-
var value = pair[1];
|
|
7510
|
-
return {
|
|
7511
|
-
t: AstNodeType.Binding,
|
|
7512
|
-
n: key.v,
|
|
7513
|
-
v: value,
|
|
7514
|
-
p: [],
|
|
7515
|
-
token: getTokenDebugData(key.token) && key.token,
|
|
7516
|
-
};
|
|
7517
|
-
}),
|
|
7518
|
-
},
|
|
7519
|
-
b: [body],
|
|
7520
|
-
a: arity,
|
|
7521
|
-
}],
|
|
7522
|
-
token: getTokenDebugData(firstToken) && firstToken,
|
|
7554
|
+
functionArguments: functionArguments,
|
|
7555
|
+
arity: arity,
|
|
7523
7556
|
};
|
|
7524
7557
|
};
|
|
7525
7558
|
AlgebraicParser.prototype.parseShorthandLamdaFunction = function () {
|
|
@@ -7711,6 +7744,50 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7711
7744
|
};
|
|
7712
7745
|
return node;
|
|
7713
7746
|
};
|
|
7747
|
+
AlgebraicParser.prototype.parseDef = function (token) {
|
|
7748
|
+
this.advance();
|
|
7749
|
+
var symbol = parseSymbol(this.tokenStream, this.parseState);
|
|
7750
|
+
assertA_OperatorToken(this.peek(), '=');
|
|
7751
|
+
this.advance();
|
|
7752
|
+
var value = this.parseExpression();
|
|
7753
|
+
return {
|
|
7754
|
+
t: AstNodeType.SpecialExpression,
|
|
7755
|
+
n: 'def',
|
|
7756
|
+
p: [symbol, value],
|
|
7757
|
+
token: getTokenDebugData(token) && token,
|
|
7758
|
+
};
|
|
7759
|
+
};
|
|
7760
|
+
AlgebraicParser.prototype.parseDefn = function (token) {
|
|
7761
|
+
var _a;
|
|
7762
|
+
this.advance();
|
|
7763
|
+
var symbol = parseSymbol(this.tokenStream, this.parseState);
|
|
7764
|
+
var _b = this.parseFunctionArguments(), functionArguments = _b.functionArguments, arity = _b.arity;
|
|
7765
|
+
assertLBraceToken(this.peek());
|
|
7766
|
+
this.advance();
|
|
7767
|
+
var body = [];
|
|
7768
|
+
while (!this.isAtEnd() && !isRBraceToken(this.peek())) {
|
|
7769
|
+
body.push(this.parseExpression());
|
|
7770
|
+
if (isA_OperatorToken(this.peek(), ';')) {
|
|
7771
|
+
this.advance();
|
|
7772
|
+
}
|
|
7773
|
+
}
|
|
7774
|
+
if (!isRBraceToken(this.peek())) {
|
|
7775
|
+
throw new LitsError('Expected closing brace', (_a = getTokenDebugData(this.peek())) === null || _a === void 0 ? void 0 : _a.sourceCodeInfo);
|
|
7776
|
+
}
|
|
7777
|
+
this.advance();
|
|
7778
|
+
return {
|
|
7779
|
+
t: AstNodeType.SpecialExpression,
|
|
7780
|
+
n: 'defn',
|
|
7781
|
+
f: symbol,
|
|
7782
|
+
p: [],
|
|
7783
|
+
o: [{
|
|
7784
|
+
as: functionArguments,
|
|
7785
|
+
b: body,
|
|
7786
|
+
a: arity,
|
|
7787
|
+
}],
|
|
7788
|
+
token: getTokenDebugData(token) && token,
|
|
7789
|
+
};
|
|
7790
|
+
};
|
|
7714
7791
|
AlgebraicParser.prototype.isAtEnd = function () {
|
|
7715
7792
|
return this.parseState.position >= this.tokenStream.tokens.length;
|
|
7716
7793
|
};
|
|
@@ -8000,10 +8077,18 @@ function parsePolishToken(tokenStream, parseState) {
|
|
|
8000
8077
|
parseState.position += 1;
|
|
8001
8078
|
parseState.algebraic = true;
|
|
8002
8079
|
var algebraicParser = new AlgebraicParser(tokenStream, parseState);
|
|
8003
|
-
var
|
|
8080
|
+
var nodes = algebraicParser.parse();
|
|
8004
8081
|
assertEndNotationToken(tokenStream.tokens[parseState.position++]);
|
|
8005
8082
|
parseState.algebraic = false;
|
|
8006
|
-
|
|
8083
|
+
if (nodes.length === 1) {
|
|
8084
|
+
return nodes[0];
|
|
8085
|
+
}
|
|
8086
|
+
return {
|
|
8087
|
+
t: AstNodeType.SpecialExpression,
|
|
8088
|
+
n: 'do',
|
|
8089
|
+
p: nodes,
|
|
8090
|
+
token: nodes[0].token,
|
|
8091
|
+
};
|
|
8007
8092
|
}
|
|
8008
8093
|
case 'PolNotation': {
|
|
8009
8094
|
var astNodes = [];
|
|
@@ -8070,7 +8155,16 @@ function removeUnnecessaryTokens(tokenStream) {
|
|
|
8070
8155
|
function parseToken(tokenStream, parseState) {
|
|
8071
8156
|
if (parseState.algebraic) {
|
|
8072
8157
|
var algebraicParser = new AlgebraicParser(tokenStream, parseState);
|
|
8073
|
-
|
|
8158
|
+
var nodes = algebraicParser.parse();
|
|
8159
|
+
if (nodes.length === 1) {
|
|
8160
|
+
return nodes[0];
|
|
8161
|
+
}
|
|
8162
|
+
return {
|
|
8163
|
+
t: AstNodeType.SpecialExpression,
|
|
8164
|
+
n: 'do',
|
|
8165
|
+
p: nodes,
|
|
8166
|
+
token: nodes[0].token,
|
|
8167
|
+
};
|
|
8074
8168
|
}
|
|
8075
8169
|
return parsePolishToken(tokenStream, parseState);
|
|
8076
8170
|
}
|
|
@@ -8160,13 +8254,10 @@ var algebraicReservedNamesRecord = {
|
|
|
8160
8254
|
'false': { value: false },
|
|
8161
8255
|
'nil': { value: null },
|
|
8162
8256
|
'null': { value: null },
|
|
8163
|
-
'def': { value: null, forbidden: true },
|
|
8164
|
-
'defs': { value: null, forbidden: true },
|
|
8165
8257
|
'if-let': { value: null, forbidden: true },
|
|
8166
8258
|
'when-let': { value: null, forbidden: true },
|
|
8167
8259
|
'when-first': { value: null, forbidden: true },
|
|
8168
8260
|
'fn': { value: null, forbidden: true },
|
|
8169
|
-
'defn': { value: null, forbidden: true },
|
|
8170
8261
|
'defns': { value: null, forbidden: true },
|
|
8171
8262
|
'try': { value: null, forbidden: true },
|
|
8172
8263
|
'recur': { value: null, forbidden: true },
|