@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/index.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 = [
|
|
@@ -3119,7 +3120,7 @@ var mathNormalExpression = {
|
|
|
3119
3120
|
},
|
|
3120
3121
|
};
|
|
3121
3122
|
|
|
3122
|
-
var version = "2.0.
|
|
3123
|
+
var version = "2.0.14";
|
|
3123
3124
|
|
|
3124
3125
|
var uuidTemplate = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
|
|
3125
3126
|
var xyRegexp = /[xy]/g;
|
|
@@ -7150,6 +7151,7 @@ function fromBinaryOperatorToAstNode(operator, left, right, token) {
|
|
|
7150
7151
|
token: getTokenDebugData(token) && token,
|
|
7151
7152
|
};
|
|
7152
7153
|
/* v8 ignore next 8 */
|
|
7154
|
+
case ';':
|
|
7153
7155
|
case '!':
|
|
7154
7156
|
case '~':
|
|
7155
7157
|
case '=':
|
|
@@ -7170,14 +7172,33 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7170
7172
|
this.parseState.position += 1;
|
|
7171
7173
|
};
|
|
7172
7174
|
AlgebraicParser.prototype.parse = function () {
|
|
7173
|
-
|
|
7175
|
+
var nodes = [];
|
|
7176
|
+
while (!this.isAtEnd()) {
|
|
7177
|
+
nodes.push(this.parseExpression());
|
|
7178
|
+
if (!isA_OperatorToken(this.peek(), ';')) {
|
|
7179
|
+
break;
|
|
7180
|
+
}
|
|
7181
|
+
this.advance();
|
|
7182
|
+
}
|
|
7183
|
+
return nodes;
|
|
7174
7184
|
};
|
|
7175
7185
|
AlgebraicParser.prototype.parseExpression = function (precedence) {
|
|
7176
7186
|
var _a;
|
|
7177
7187
|
if (precedence === void 0) { precedence = 0; }
|
|
7188
|
+
var firstToken = this.peek();
|
|
7189
|
+
if (isA_SymbolToken(firstToken) && firstToken[1] === 'def') {
|
|
7190
|
+
return this.parseDef(firstToken);
|
|
7191
|
+
}
|
|
7192
|
+
if (isA_SymbolToken(firstToken) && firstToken[1] === 'defn') {
|
|
7193
|
+
return this.parseDefn(firstToken);
|
|
7194
|
+
}
|
|
7178
7195
|
var left = this.parseOperand();
|
|
7179
|
-
|
|
7180
|
-
|
|
7196
|
+
var operator = this.peek();
|
|
7197
|
+
while (!this.isAtEnd()
|
|
7198
|
+
&& !isA_OperatorToken(operator, ',')
|
|
7199
|
+
&& !isA_OperatorToken(operator, ';')
|
|
7200
|
+
&& !isRBracketToken(operator)
|
|
7201
|
+
&& !isRParenToken(operator)) {
|
|
7181
7202
|
if (isA_BinaryOperatorToken(operator)) {
|
|
7182
7203
|
var name_1 = operator[1];
|
|
7183
7204
|
var newPrecedece = getPrecedence(name_1);
|
|
@@ -7207,6 +7228,7 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7207
7228
|
else {
|
|
7208
7229
|
break;
|
|
7209
7230
|
}
|
|
7231
|
+
operator = this.peek();
|
|
7210
7232
|
}
|
|
7211
7233
|
if (!left) {
|
|
7212
7234
|
throw new LitsError('Expected operand', (_a = getTokenDebugData(this.peek())) === null || _a === void 0 ? void 0 : _a.sourceCodeInfo);
|
|
@@ -7453,13 +7475,11 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7453
7475
|
}
|
|
7454
7476
|
case 'let':
|
|
7455
7477
|
return this.parseLet(symbol, params);
|
|
7456
|
-
case 'def':
|
|
7457
7478
|
case 'defs':
|
|
7458
7479
|
case 'if-let':
|
|
7459
7480
|
case 'when-let':
|
|
7460
7481
|
case 'when-first':
|
|
7461
7482
|
case 'fn':
|
|
7462
|
-
case 'defn':
|
|
7463
7483
|
case 'defns':
|
|
7464
7484
|
case 'try':
|
|
7465
7485
|
case 'recur':
|
|
@@ -7482,8 +7502,32 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7482
7502
|
}
|
|
7483
7503
|
};
|
|
7484
7504
|
AlgebraicParser.prototype.parseLambdaFunction = function () {
|
|
7485
|
-
var _a, _b;
|
|
7486
7505
|
var firstToken = this.peek();
|
|
7506
|
+
try {
|
|
7507
|
+
var _a = this.parseFunctionArguments(), functionArguments = _a.functionArguments, arity = _a.arity;
|
|
7508
|
+
if (!isA_OperatorToken(this.peek(), '=>')) {
|
|
7509
|
+
return null;
|
|
7510
|
+
}
|
|
7511
|
+
this.advance();
|
|
7512
|
+
var body = this.parseExpression();
|
|
7513
|
+
return {
|
|
7514
|
+
t: exports.AstNodeType.SpecialExpression,
|
|
7515
|
+
n: 'fn',
|
|
7516
|
+
p: [],
|
|
7517
|
+
o: [{
|
|
7518
|
+
as: functionArguments,
|
|
7519
|
+
b: [body],
|
|
7520
|
+
a: arity,
|
|
7521
|
+
}],
|
|
7522
|
+
token: getTokenDebugData(firstToken) && firstToken,
|
|
7523
|
+
};
|
|
7524
|
+
}
|
|
7525
|
+
catch (_b) {
|
|
7526
|
+
return null;
|
|
7527
|
+
}
|
|
7528
|
+
};
|
|
7529
|
+
AlgebraicParser.prototype.parseFunctionArguments = function () {
|
|
7530
|
+
var _a, _b, _c, _d, _e;
|
|
7487
7531
|
this.advance();
|
|
7488
7532
|
var rest = false;
|
|
7489
7533
|
var letBindingObject;
|
|
@@ -7506,7 +7550,7 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7506
7550
|
}
|
|
7507
7551
|
var symbolToken = this.peek();
|
|
7508
7552
|
if (!isA_SymbolToken(symbolToken)) {
|
|
7509
|
-
|
|
7553
|
+
throw new LitsError('Expected symbol', (_c = getTokenDebugData(this.peek())) === null || _c === void 0 ? void 0 : _c.sourceCodeInfo);
|
|
7510
7554
|
}
|
|
7511
7555
|
if (rest) {
|
|
7512
7556
|
restArg = symbolToken[1];
|
|
@@ -7517,47 +7561,36 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7517
7561
|
this.advance();
|
|
7518
7562
|
}
|
|
7519
7563
|
if (!isA_OperatorToken(this.peek(), ',') && !isRParenToken(this.peek())) {
|
|
7520
|
-
|
|
7564
|
+
throw new LitsError('Expected comma or closing parenthesis', (_d = getTokenDebugData(this.peek())) === null || _d === void 0 ? void 0 : _d.sourceCodeInfo);
|
|
7521
7565
|
}
|
|
7522
7566
|
if (isA_OperatorToken(this.peek(), ',')) {
|
|
7523
7567
|
this.advance();
|
|
7524
7568
|
}
|
|
7525
7569
|
}
|
|
7570
|
+
var arity = restArg !== undefined ? { min: args.length } : args.length;
|
|
7526
7571
|
if (!isRParenToken(this.peek())) {
|
|
7527
|
-
|
|
7528
|
-
}
|
|
7529
|
-
this.advance();
|
|
7530
|
-
if (!isA_OperatorToken(this.peek(), '=>')) {
|
|
7531
|
-
return null;
|
|
7572
|
+
throw new LitsError('Expected closing parenthesis', (_e = getTokenDebugData(this.peek())) === null || _e === void 0 ? void 0 : _e.sourceCodeInfo);
|
|
7532
7573
|
}
|
|
7533
|
-
this.advance();
|
|
7534
7574
|
var letBindings = letBindingObject ? arrayToPairs(letBindingObject.p) : [];
|
|
7535
|
-
var
|
|
7536
|
-
|
|
7575
|
+
var functionArguments = {
|
|
7576
|
+
m: args,
|
|
7577
|
+
r: restArg,
|
|
7578
|
+
b: letBindings.map(function (pair) {
|
|
7579
|
+
var key = pair[0];
|
|
7580
|
+
var value = pair[1];
|
|
7581
|
+
return {
|
|
7582
|
+
t: exports.AstNodeType.Binding,
|
|
7583
|
+
n: key.v,
|
|
7584
|
+
v: value,
|
|
7585
|
+
p: [],
|
|
7586
|
+
token: getTokenDebugData(key.token) && key.token,
|
|
7587
|
+
};
|
|
7588
|
+
}),
|
|
7589
|
+
};
|
|
7590
|
+
this.advance();
|
|
7537
7591
|
return {
|
|
7538
|
-
|
|
7539
|
-
|
|
7540
|
-
p: [],
|
|
7541
|
-
o: [{
|
|
7542
|
-
as: {
|
|
7543
|
-
m: args,
|
|
7544
|
-
r: restArg,
|
|
7545
|
-
b: letBindings.map(function (pair) {
|
|
7546
|
-
var key = pair[0];
|
|
7547
|
-
var value = pair[1];
|
|
7548
|
-
return {
|
|
7549
|
-
t: exports.AstNodeType.Binding,
|
|
7550
|
-
n: key.v,
|
|
7551
|
-
v: value,
|
|
7552
|
-
p: [],
|
|
7553
|
-
token: getTokenDebugData(key.token) && key.token,
|
|
7554
|
-
};
|
|
7555
|
-
}),
|
|
7556
|
-
},
|
|
7557
|
-
b: [body],
|
|
7558
|
-
a: arity,
|
|
7559
|
-
}],
|
|
7560
|
-
token: getTokenDebugData(firstToken) && firstToken,
|
|
7592
|
+
functionArguments: functionArguments,
|
|
7593
|
+
arity: arity,
|
|
7561
7594
|
};
|
|
7562
7595
|
};
|
|
7563
7596
|
AlgebraicParser.prototype.parseShorthandLamdaFunction = function () {
|
|
@@ -7749,6 +7782,50 @@ var AlgebraicParser = /** @class */ (function () {
|
|
|
7749
7782
|
};
|
|
7750
7783
|
return node;
|
|
7751
7784
|
};
|
|
7785
|
+
AlgebraicParser.prototype.parseDef = function (token) {
|
|
7786
|
+
this.advance();
|
|
7787
|
+
var symbol = parseSymbol(this.tokenStream, this.parseState);
|
|
7788
|
+
assertA_OperatorToken(this.peek(), '=');
|
|
7789
|
+
this.advance();
|
|
7790
|
+
var value = this.parseExpression();
|
|
7791
|
+
return {
|
|
7792
|
+
t: exports.AstNodeType.SpecialExpression,
|
|
7793
|
+
n: 'def',
|
|
7794
|
+
p: [symbol, value],
|
|
7795
|
+
token: getTokenDebugData(token) && token,
|
|
7796
|
+
};
|
|
7797
|
+
};
|
|
7798
|
+
AlgebraicParser.prototype.parseDefn = function (token) {
|
|
7799
|
+
var _a;
|
|
7800
|
+
this.advance();
|
|
7801
|
+
var symbol = parseSymbol(this.tokenStream, this.parseState);
|
|
7802
|
+
var _b = this.parseFunctionArguments(), functionArguments = _b.functionArguments, arity = _b.arity;
|
|
7803
|
+
assertLBraceToken(this.peek());
|
|
7804
|
+
this.advance();
|
|
7805
|
+
var body = [];
|
|
7806
|
+
while (!this.isAtEnd() && !isRBraceToken(this.peek())) {
|
|
7807
|
+
body.push(this.parseExpression());
|
|
7808
|
+
if (isA_OperatorToken(this.peek(), ';')) {
|
|
7809
|
+
this.advance();
|
|
7810
|
+
}
|
|
7811
|
+
}
|
|
7812
|
+
if (!isRBraceToken(this.peek())) {
|
|
7813
|
+
throw new LitsError('Expected closing brace', (_a = getTokenDebugData(this.peek())) === null || _a === void 0 ? void 0 : _a.sourceCodeInfo);
|
|
7814
|
+
}
|
|
7815
|
+
this.advance();
|
|
7816
|
+
return {
|
|
7817
|
+
t: exports.AstNodeType.SpecialExpression,
|
|
7818
|
+
n: 'defn',
|
|
7819
|
+
f: symbol,
|
|
7820
|
+
p: [],
|
|
7821
|
+
o: [{
|
|
7822
|
+
as: functionArguments,
|
|
7823
|
+
b: body,
|
|
7824
|
+
a: arity,
|
|
7825
|
+
}],
|
|
7826
|
+
token: getTokenDebugData(token) && token,
|
|
7827
|
+
};
|
|
7828
|
+
};
|
|
7752
7829
|
AlgebraicParser.prototype.isAtEnd = function () {
|
|
7753
7830
|
return this.parseState.position >= this.tokenStream.tokens.length;
|
|
7754
7831
|
};
|
|
@@ -8038,10 +8115,18 @@ function parsePolishToken(tokenStream, parseState) {
|
|
|
8038
8115
|
parseState.position += 1;
|
|
8039
8116
|
parseState.algebraic = true;
|
|
8040
8117
|
var algebraicParser = new AlgebraicParser(tokenStream, parseState);
|
|
8041
|
-
var
|
|
8118
|
+
var nodes = algebraicParser.parse();
|
|
8042
8119
|
assertEndNotationToken(tokenStream.tokens[parseState.position++]);
|
|
8043
8120
|
parseState.algebraic = false;
|
|
8044
|
-
|
|
8121
|
+
if (nodes.length === 1) {
|
|
8122
|
+
return nodes[0];
|
|
8123
|
+
}
|
|
8124
|
+
return {
|
|
8125
|
+
t: exports.AstNodeType.SpecialExpression,
|
|
8126
|
+
n: 'do',
|
|
8127
|
+
p: nodes,
|
|
8128
|
+
token: nodes[0].token,
|
|
8129
|
+
};
|
|
8045
8130
|
}
|
|
8046
8131
|
case 'PolNotation': {
|
|
8047
8132
|
var astNodes = [];
|
|
@@ -8108,7 +8193,16 @@ function removeUnnecessaryTokens(tokenStream) {
|
|
|
8108
8193
|
function parseToken(tokenStream, parseState) {
|
|
8109
8194
|
if (parseState.algebraic) {
|
|
8110
8195
|
var algebraicParser = new AlgebraicParser(tokenStream, parseState);
|
|
8111
|
-
|
|
8196
|
+
var nodes = algebraicParser.parse();
|
|
8197
|
+
if (nodes.length === 1) {
|
|
8198
|
+
return nodes[0];
|
|
8199
|
+
}
|
|
8200
|
+
return {
|
|
8201
|
+
t: exports.AstNodeType.SpecialExpression,
|
|
8202
|
+
n: 'do',
|
|
8203
|
+
p: nodes,
|
|
8204
|
+
token: nodes[0].token,
|
|
8205
|
+
};
|
|
8112
8206
|
}
|
|
8113
8207
|
return parsePolishToken(tokenStream, parseState);
|
|
8114
8208
|
}
|
|
@@ -8199,13 +8293,10 @@ var algebraicReservedNamesRecord = {
|
|
|
8199
8293
|
'false': { value: false },
|
|
8200
8294
|
'nil': { value: null },
|
|
8201
8295
|
'null': { value: null },
|
|
8202
|
-
'def': { value: null, forbidden: true },
|
|
8203
|
-
'defs': { value: null, forbidden: true },
|
|
8204
8296
|
'if-let': { value: null, forbidden: true },
|
|
8205
8297
|
'when-let': { value: null, forbidden: true },
|
|
8206
8298
|
'when-first': { value: null, forbidden: true },
|
|
8207
8299
|
'fn': { value: null, forbidden: true },
|
|
8208
|
-
'defn': { value: null, forbidden: true },
|
|
8209
8300
|
'defns': { value: null, forbidden: true },
|
|
8210
8301
|
'try': { value: null, forbidden: true },
|
|
8211
8302
|
'recur': { value: null, forbidden: true },
|