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