@pie-framework/math-validation 1.4.3 → 2.0.0-next.20261110063142
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/LICENSE +233 -0
- package/README.md +41 -110
- package/dist/conversion/ast-to-mathjs.d.ts +3 -0
- package/dist/conversion/error.d.ts +4 -0
- package/dist/conversion/flatten.d.ts +1 -0
- package/{lib → dist}/conversion/latex-to-ast.d.ts +13 -12
- package/{lib → dist}/conversion/lexer.d.ts +5 -5
- package/dist/difference.d.ts +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1594 -0
- package/dist/latex-equal.d.ts +2 -0
- package/dist/literal/index.d.ts +3 -0
- package/dist/log.d.ts +1 -0
- package/dist/mathjs.d.ts +11 -0
- package/{lib → dist}/node-sort.d.ts +1 -1
- package/dist/options.d.ts +13 -0
- package/{lib → dist}/symbolic/compare-compound-inequations.d.ts +2 -2
- package/{lib → dist}/symbolic/compare-equations.d.ts +1 -1
- package/dist/symbolic/index.d.ts +1 -0
- package/dist/symbolic/simplify.d.ts +2 -0
- package/{lib → dist}/symbolic/utils.d.ts +3 -3
- package/dist/value.d.ts +6 -0
- package/package.json +28 -56
- package/lib/conversion/ast-to-mathjs.d.ts +0 -12
- package/lib/conversion/ast-to-mathjs.js +0 -329
- package/lib/conversion/ast-to-mathjs.js.map +0 -1
- package/lib/conversion/error.d.ts +0 -5
- package/lib/conversion/error.js +0 -13
- package/lib/conversion/error.js.map +0 -1
- package/lib/conversion/flatten.d.ts +0 -12
- package/lib/conversion/flatten.js +0 -103
- package/lib/conversion/flatten.js.map +0 -1
- package/lib/conversion/latex-to-ast.js +0 -1479
- package/lib/conversion/latex-to-ast.js.map +0 -1
- package/lib/conversion/lexer.js +0 -135
- package/lib/conversion/lexer.js.map +0 -1
- package/lib/conversion/util.d.ts +0 -3
- package/lib/conversion/util.js +0 -36
- package/lib/conversion/util.js.map +0 -1
- package/lib/demo.d.ts +0 -4
- package/lib/demo.js +0 -173
- package/lib/demo.js.map +0 -1
- package/lib/difference.d.ts +0 -2
- package/lib/difference.js +0 -24
- package/lib/difference.js.map +0 -1
- package/lib/index.d.ts +0 -5
- package/lib/index.js +0 -9
- package/lib/index.js.map +0 -1
- package/lib/latex-equal.d.ts +0 -10
- package/lib/latex-equal.js +0 -41
- package/lib/latex-equal.js.map +0 -1
- package/lib/literal/index.d.ts +0 -10
- package/lib/literal/index.js +0 -22
- package/lib/literal/index.js.map +0 -1
- package/lib/log.d.ts +0 -1
- package/lib/log.js +0 -14
- package/lib/log.js.map +0 -1
- package/lib/mathjs.d.ts +0 -3
- package/lib/mathjs.js +0 -9
- package/lib/mathjs.js.map +0 -1
- package/lib/node-sort.js +0 -236
- package/lib/node-sort.js.map +0 -1
- package/lib/symbolic/compare-compound-inequations.js +0 -68
- package/lib/symbolic/compare-compound-inequations.js.map +0 -1
- package/lib/symbolic/compare-equations.js +0 -106
- package/lib/symbolic/compare-equations.js.map +0 -1
- package/lib/symbolic/index.d.ts +0 -4
- package/lib/symbolic/index.js +0 -340
- package/lib/symbolic/index.js.map +0 -1
- package/lib/symbolic/utils.js +0 -323
- package/lib/symbolic/utils.js.map +0 -1
package/dist/log.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const logger: (name: string) => ((...args: unknown[]) => void);
|
package/dist/mathjs.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type MathJsStatic } from 'mathjs';
|
|
2
|
+
export declare const mathjs: MathJsStatic & {
|
|
3
|
+
replacer: (key: string, value: unknown) => unknown;
|
|
4
|
+
};
|
|
5
|
+
export declare const parse: import("mathjs").ParseFunction;
|
|
6
|
+
export declare const replacer: (key: string, value: unknown) => unknown;
|
|
7
|
+
export declare const numeric: MathJsStatic;
|
|
8
|
+
export declare const TRAILING_ZEROS_RULE: Readonly<{
|
|
9
|
+
l: "tzn(n1, n2)";
|
|
10
|
+
r: "n1";
|
|
11
|
+
}>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type Latex = string;
|
|
2
|
+
export type Mode = 'symbolic' | 'literal';
|
|
3
|
+
export type LiteralOpts = {
|
|
4
|
+
allowTrailingZeros?: boolean;
|
|
5
|
+
ignoreOrder?: boolean;
|
|
6
|
+
/** A single number matches only a single number of equal value, so `4/6` matches `2/3` and `3+3` doesn't match `6`. */
|
|
7
|
+
compareNumbersByValue?: boolean;
|
|
8
|
+
};
|
|
9
|
+
/** Symbolic mode takes no options. */
|
|
10
|
+
export type Opts = {
|
|
11
|
+
mode?: Mode;
|
|
12
|
+
literal?: LiteralOpts;
|
|
13
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MathNode } from
|
|
1
|
+
import type { MathNode } from 'mathjs';
|
|
2
2
|
export type NodePair = {
|
|
3
3
|
left: MathNode;
|
|
4
4
|
right: MathNode;
|
|
@@ -8,5 +8,5 @@ export type Range = {
|
|
|
8
8
|
max: number;
|
|
9
9
|
};
|
|
10
10
|
export declare const splitInequality: (compoundInequality: any) => NodePair;
|
|
11
|
-
export declare const
|
|
11
|
+
export declare const getInterval: ({ left, right }: NodePair) => Range;
|
|
12
12
|
export declare const compareCompoundInequations: (firstInequation: any, secondInequation: any) => boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { MathNode } from
|
|
1
|
+
import type { MathNode } from 'mathjs';
|
|
2
2
|
export declare const compareEquations: (firstEquation: MathNode, secondEquation: MathNode, isInequality: boolean) => any;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isMathEqual: (a: any, b: any) => any;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MathNode } from
|
|
1
|
+
import type { MathNode } from 'mathjs';
|
|
2
2
|
export declare const expressionsCanBeCompared: (firstEquation: MathNode, secondEquation: MathNode) => boolean;
|
|
3
3
|
export declare const hasSymbolicExponent: (node: MathNode) => boolean;
|
|
4
4
|
export declare const getSamplePoints: (variables: string[], count?: number) => Record<string, number>[];
|
|
@@ -14,5 +14,5 @@ export declare const solveQuadraticEquation: (coefficients: number[]) => {
|
|
|
14
14
|
re: any;
|
|
15
15
|
im: number;
|
|
16
16
|
}[];
|
|
17
|
-
export declare const solveLinearEquation: (coefficients: number[]) => number;
|
|
18
|
-
export declare const
|
|
17
|
+
export declare const solveLinearEquation: (coefficients: number[]) => number | undefined;
|
|
18
|
+
export declare const haveSameElements: <T>(first: T[], second: T[]) => boolean;
|
package/dist/value.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Latex } from './options.js';
|
|
2
|
+
/**
|
|
3
|
+
* Compares by value when either side is a single number: equal when both are and their values are
|
|
4
|
+
* equal, unequal when only one is. Undefined when neither is, which leaves the comparison to the mode.
|
|
5
|
+
*/
|
|
6
|
+
export declare const compareNumbers: (a: Latex, b: Latex) => boolean | undefined;
|
package/package.json
CHANGED
|
@@ -1,71 +1,43 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-framework/math-validation",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
5
|
-
"
|
|
6
|
-
"main": "
|
|
7
|
-
"types": "
|
|
8
|
-
"
|
|
3
|
+
"version": "2.0.0-next.20261110063142",
|
|
4
|
+
"description": "Decides whether two LaTeX math expressions are equal, literally or symbolically",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
9
14
|
"files": [
|
|
10
|
-
"
|
|
15
|
+
"dist"
|
|
11
16
|
],
|
|
17
|
+
"sideEffects": false,
|
|
12
18
|
"scripts": {
|
|
13
|
-
"build": "
|
|
14
|
-
"
|
|
15
|
-
"test": "
|
|
16
|
-
"
|
|
17
|
-
"build:demo": "tsc &&
|
|
18
|
-
"
|
|
19
|
-
"semantic-release": "yarn tsc && semantic-release"
|
|
19
|
+
"build": "rm -rf dist tsconfig.tsbuildinfo && vite build && tsc --emitDeclarationOnly",
|
|
20
|
+
"dev": "vite build --watch",
|
|
21
|
+
"test": "vitest",
|
|
22
|
+
"demo": "vite --config vite.demo.config.ts",
|
|
23
|
+
"build:demo": "tsc -p demo && vite build --config vite.demo.config.ts",
|
|
24
|
+
"clean": "rm -rf dist demo/dist"
|
|
20
25
|
},
|
|
21
|
-
"license": "ISC",
|
|
22
26
|
"dependencies": {
|
|
23
|
-
"
|
|
27
|
+
"debug": "^4.4.3",
|
|
24
28
|
"mathjs": "^9.4.2"
|
|
25
29
|
},
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"@rollup/plugin-commonjs": "^15.0.0",
|
|
29
|
-
"@rollup/plugin-node-resolve": "^9.0.0",
|
|
30
|
-
"@rollup/plugin-strip": "^2.1.0",
|
|
31
|
-
"@rollup/plugin-sucrase": "^3.1.0",
|
|
32
|
-
"@semantic-release/changelog": "^6.0.3",
|
|
33
|
-
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
34
|
-
"@semantic-release/exec": "^7.1.0",
|
|
35
|
-
"@semantic-release/git": "^10.0.1",
|
|
36
|
-
"@semantic-release/github": "^12.0.6",
|
|
37
|
-
"@semantic-release/npm": "^13.1.5",
|
|
38
|
-
"@semantic-release/release-notes-generator": "^14.1.0",
|
|
39
|
-
"@types/fs-extra": "^9.0.1",
|
|
40
|
-
"@types/glob": "^7.1.3",
|
|
41
|
-
"@types/jest": "^26.0.14",
|
|
42
|
-
"@types/jest-diff": "^24.3.0",
|
|
43
|
-
"@types/mathjs": "^6.0.11",
|
|
44
|
-
"@types/minimist": "^1.2.0",
|
|
45
|
-
"debug": "^4.3.1",
|
|
46
|
-
"fs-extra": "^9.0.1",
|
|
47
|
-
"glob": "^7.1.6",
|
|
48
|
-
"jest": "^26.4.2",
|
|
49
|
-
"jest-diff": "^26.4.2",
|
|
50
|
-
"jest-silent-reporter": "^0.2.1",
|
|
51
|
-
"jest-stare": "^2.2.1",
|
|
52
|
-
"latex-utensils": "^2.0.3",
|
|
53
|
-
"latex.js": "^0.12.4",
|
|
54
|
-
"minimist": "^1.2.5",
|
|
55
|
-
"prettier": "^2.3.2",
|
|
56
|
-
"rollup": "^2.50.2",
|
|
57
|
-
"rollup-plugin-cleanup": "^3.2.1",
|
|
58
|
-
"semantic-release": "^25.0.3",
|
|
59
|
-
"serve": "^11.3.2",
|
|
60
|
-
"ts-jest": "^26.3.0",
|
|
61
|
-
"ts-node": "^9.0.0",
|
|
62
|
-
"typescript": "^4.9.5"
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
63
32
|
},
|
|
33
|
+
"license": "MIT",
|
|
64
34
|
"repository": {
|
|
65
35
|
"type": "git",
|
|
66
|
-
"url": "git
|
|
36
|
+
"url": "git+https://github.com/pie-framework/pie-elements-ng.git",
|
|
37
|
+
"directory": "packages/shared/math-validation"
|
|
67
38
|
},
|
|
68
|
-
"
|
|
69
|
-
|
|
39
|
+
"homepage": "https://github.com/pie-framework/pie-elements-ng/tree/develop/packages/shared/math-validation#readme",
|
|
40
|
+
"bugs": {
|
|
41
|
+
"url": "https://github.com/pie-framework/pie-elements-ng/issues"
|
|
70
42
|
}
|
|
71
43
|
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export type AstToMathJsOpts = {
|
|
2
|
-
number?: string;
|
|
3
|
-
};
|
|
4
|
-
export declare class AstToMathJs {
|
|
5
|
-
private opts;
|
|
6
|
-
/**
|
|
7
|
-
* Note: we use fractions as the default number format.
|
|
8
|
-
* So by default AstToMathJs will generate fractions too.
|
|
9
|
-
*/
|
|
10
|
-
constructor(opts?: AstToMathJsOpts);
|
|
11
|
-
convert(tree: any): any;
|
|
12
|
-
}
|
|
@@ -1,329 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* convert AST to a expression tree from math.js
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2014-2017 by
|
|
6
|
-
* Jim Fowler <kisonecat@gmail.com>
|
|
7
|
-
* Duane Nykamp <nykamp@umn.edu>
|
|
8
|
-
*
|
|
9
|
-
* This file is part of a math-expressions library
|
|
10
|
-
*
|
|
11
|
-
* math-expressions is free software: you can redistribute
|
|
12
|
-
* it and/or modify it under the terms of the GNU General Public
|
|
13
|
-
* License as published by the Free Software Foundation, either
|
|
14
|
-
* version 3 of the License, or at your option any later version.
|
|
15
|
-
*
|
|
16
|
-
* math-expressions is distributed in the hope that it
|
|
17
|
-
* will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
18
|
-
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
19
|
-
* See the GNU General Public License for more details.
|
|
20
|
-
*
|
|
21
|
-
*/
|
|
22
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.AstToMathJs = void 0;
|
|
24
|
-
const mathjs_1 = require("../mathjs");
|
|
25
|
-
const log_1 = require("../log");
|
|
26
|
-
const log = (0, log_1.logger)("mv:ast-to-math");
|
|
27
|
-
const m = mathjs_1.mathjs;
|
|
28
|
-
const operators = {
|
|
29
|
-
"+": function (operands) {
|
|
30
|
-
return new m.OperatorNode("+", "add", operands);
|
|
31
|
-
},
|
|
32
|
-
"*": function (operands) {
|
|
33
|
-
const [left, right] = operands;
|
|
34
|
-
if ((left === null || left === void 0 ? void 0 : left.type) === "ConstantNode" &&
|
|
35
|
-
(right === null || right === void 0 ? void 0 : right.isUnit) &&
|
|
36
|
-
typeof left.value === "object") {
|
|
37
|
-
const leftVal = left.value.valueOf();
|
|
38
|
-
const unitResult = m.multiply(leftVal, right);
|
|
39
|
-
return unitResult;
|
|
40
|
-
}
|
|
41
|
-
return new m.OperatorNode("*", "multiply", operands);
|
|
42
|
-
},
|
|
43
|
-
"/": function (operands) {
|
|
44
|
-
return new m.OperatorNode("/", "divide", operands);
|
|
45
|
-
},
|
|
46
|
-
"-": function (operands) {
|
|
47
|
-
return new m.OperatorNode("-", "unaryMinus", [operands[0]]);
|
|
48
|
-
},
|
|
49
|
-
"^": function (operands) {
|
|
50
|
-
return new m.OperatorNode("^", "pow", operands);
|
|
51
|
-
},
|
|
52
|
-
//"prime": function(operands) { return operands[0] + "'"; },
|
|
53
|
-
// tuple: function (operands) {
|
|
54
|
-
// return new m.ArrayNode(operands);
|
|
55
|
-
// },
|
|
56
|
-
list: function (operands) {
|
|
57
|
-
return new m.ArrayNode(operands);
|
|
58
|
-
},
|
|
59
|
-
//"array": function(operands) { return '\\left[ ' + operands.join( ', ' ) + ' \\right]';},
|
|
60
|
-
//"set": function(operands) { return '\\left\\{ ' + operands.join( ', ' ) + ' \\right\\}';},
|
|
61
|
-
vector: function (operands) {
|
|
62
|
-
return new m.ArrayNode(operands);
|
|
63
|
-
},
|
|
64
|
-
//"interval": function(operands) { return '\\left( ' + operands.join( ', ' ) + ' \\right)';},
|
|
65
|
-
and: function (operands) {
|
|
66
|
-
return new m.OperatorNode("and", "and", operands);
|
|
67
|
-
},
|
|
68
|
-
or: function (operands) {
|
|
69
|
-
return new m.OperatorNode("or", "or", operands);
|
|
70
|
-
},
|
|
71
|
-
not: function (operands) {
|
|
72
|
-
return new m.OperatorNode("not", "not", [operands[0]]);
|
|
73
|
-
},
|
|
74
|
-
"<": function (operands) {
|
|
75
|
-
return new m.OperatorNode("<", "smaller", operands);
|
|
76
|
-
},
|
|
77
|
-
">": function (operands) {
|
|
78
|
-
return new m.OperatorNode(">", "larger", operands);
|
|
79
|
-
},
|
|
80
|
-
le: function (operands) {
|
|
81
|
-
return new m.OperatorNode("<=", "smallerEq", operands);
|
|
82
|
-
},
|
|
83
|
-
ge: function (operands) {
|
|
84
|
-
return new m.OperatorNode(">=", "largerEq", operands);
|
|
85
|
-
},
|
|
86
|
-
_: function (operands) {
|
|
87
|
-
const [arrayName, ...position] = operands;
|
|
88
|
-
const result = new m.SymbolNode(`${arrayName}[${position}]`);
|
|
89
|
-
return result;
|
|
90
|
-
},
|
|
91
|
-
ne: function (operands) {
|
|
92
|
-
return new m.OperatorNode("!=", "unequal", operands);
|
|
93
|
-
},
|
|
94
|
-
//"union": function (operands) { return operands.join(' \\cup '); },
|
|
95
|
-
//"intersect": function (operands) { return operands.join(' \\cap '); },
|
|
96
|
-
tzn: function (operands) {
|
|
97
|
-
return new m.FunctionNode("tzn", operands);
|
|
98
|
-
},
|
|
99
|
-
"≈": function (operands) {
|
|
100
|
-
return new m.FunctionNode("≈", operands);
|
|
101
|
-
},
|
|
102
|
-
"≉": function (operands) {
|
|
103
|
-
return new m.FunctionNode("≉", operands);
|
|
104
|
-
},
|
|
105
|
-
"~": function (operands) {
|
|
106
|
-
return new m.FunctionNode("~", operands);
|
|
107
|
-
},
|
|
108
|
-
"≃": function (operands) {
|
|
109
|
-
return new m.FunctionNode("≃", operands);
|
|
110
|
-
},
|
|
111
|
-
"≁": function (operands) {
|
|
112
|
-
return new m.FunctionNode("≁", operands);
|
|
113
|
-
},
|
|
114
|
-
"≅": function (operands) {
|
|
115
|
-
return new m.FunctionNode("≅", operands);
|
|
116
|
-
},
|
|
117
|
-
"≆": function (operands) {
|
|
118
|
-
return new m.FunctionNode("≆", operands);
|
|
119
|
-
},
|
|
120
|
-
};
|
|
121
|
-
class AstToMathJs {
|
|
122
|
-
/**
|
|
123
|
-
* Note: we use fractions as the default number format.
|
|
124
|
-
* So by default AstToMathJs will generate fractions too.
|
|
125
|
-
*/
|
|
126
|
-
constructor(opts = { number: "Fraction" }) {
|
|
127
|
-
this.opts = opts;
|
|
128
|
-
}
|
|
129
|
-
convert(tree) {
|
|
130
|
-
if (typeof tree === "number") {
|
|
131
|
-
if (Number.isFinite(tree)) {
|
|
132
|
-
if (this.opts.number === "Fraction") {
|
|
133
|
-
const f = new m.Fraction([
|
|
134
|
-
new m.ConstantNode(tree),
|
|
135
|
-
new m.ConstantNode(1),
|
|
136
|
-
]);
|
|
137
|
-
return new m.ConstantNode(f);
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
return new m.ConstantNode(tree);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
if (Number.isNaN(tree))
|
|
144
|
-
return new m.SymbolNode("NaN");
|
|
145
|
-
if (tree < 0)
|
|
146
|
-
return operators["-"]([new m.SymbolNode("Infinity")]);
|
|
147
|
-
return new m.SymbolNode("Infinity");
|
|
148
|
-
}
|
|
149
|
-
if (typeof tree === "string") {
|
|
150
|
-
return new m.SymbolNode(tree);
|
|
151
|
-
}
|
|
152
|
-
if (typeof tree === "boolean")
|
|
153
|
-
throw Error("no support for boolean");
|
|
154
|
-
if (!Array.isArray(tree))
|
|
155
|
-
throw Error("Invalid ast");
|
|
156
|
-
const operator = tree[0];
|
|
157
|
-
const operands = tree.slice(1);
|
|
158
|
-
if (operator === "apply") {
|
|
159
|
-
log("operands:", operands);
|
|
160
|
-
log("0", operands[0]);
|
|
161
|
-
if (typeof operands[0] !== "string")
|
|
162
|
-
throw Error("Non string functions not implemented for conversion to mathjs");
|
|
163
|
-
if (operands[0] === "factorial")
|
|
164
|
-
return new m.OperatorNode("!", "factorial", [
|
|
165
|
-
this.convert(operands[1]),
|
|
166
|
-
]);
|
|
167
|
-
const f = operands[0];
|
|
168
|
-
const args = operands[1];
|
|
169
|
-
let f_args;
|
|
170
|
-
if (args[0] === "tuple")
|
|
171
|
-
f_args = args.slice(1).map(function (v, i) {
|
|
172
|
-
return this.convert(v);
|
|
173
|
-
}.bind(this));
|
|
174
|
-
else
|
|
175
|
-
f_args = [this.convert(args)];
|
|
176
|
-
return new m.FunctionNode(f, f_args);
|
|
177
|
-
}
|
|
178
|
-
if (operator === "unit") {
|
|
179
|
-
const unit = new m.Unit(1, operands[0]);
|
|
180
|
-
return unit;
|
|
181
|
-
}
|
|
182
|
-
if (operator === "relational") {
|
|
183
|
-
// if we have more than one comparison operators return a Relational Node
|
|
184
|
-
const params = operands[0];
|
|
185
|
-
const strict = operands[1];
|
|
186
|
-
if (params[0] !== "tuple" || strict[0] !== "tuple")
|
|
187
|
-
// something wrong if args or strict are not tuples
|
|
188
|
-
throw new Error("Badly formed ast");
|
|
189
|
-
params.splice(0, 1);
|
|
190
|
-
strict.splice(0, 1);
|
|
191
|
-
const arg_nodes = params.map(function (v, i) {
|
|
192
|
-
return this.convert(v);
|
|
193
|
-
}.bind(this));
|
|
194
|
-
let comparisons = [];
|
|
195
|
-
for (let i = 0; i < params.length - 1; i++) {
|
|
196
|
-
comparisons.push(strict[i]);
|
|
197
|
-
}
|
|
198
|
-
let result = new m.RelationalNode(comparisons, arg_nodes);
|
|
199
|
-
return result;
|
|
200
|
-
}
|
|
201
|
-
// if we have more than one equality operators return a Relational Node
|
|
202
|
-
if (operator === "=") {
|
|
203
|
-
let arg_nodes = operands.map(function (v, i) {
|
|
204
|
-
return this.convert(v);
|
|
205
|
-
}.bind(this));
|
|
206
|
-
let comparisons = [];
|
|
207
|
-
for (let i = 0; i < arg_nodes.length - 1; i++) {
|
|
208
|
-
comparisons.push("equal");
|
|
209
|
-
}
|
|
210
|
-
if (comparisons.length === 1)
|
|
211
|
-
return new m.OperatorNode("==", "equal", arg_nodes);
|
|
212
|
-
let result = new m.RelationalNode(comparisons, arg_nodes);
|
|
213
|
-
return result;
|
|
214
|
-
}
|
|
215
|
-
if (operator === "in" ||
|
|
216
|
-
operator === "notin" ||
|
|
217
|
-
operator === "ni" ||
|
|
218
|
-
operator === "notni") {
|
|
219
|
-
let x, interval;
|
|
220
|
-
if (operator === "in" || operator === "notin") {
|
|
221
|
-
x = operands[0];
|
|
222
|
-
interval = operands[1];
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
x = operands[1];
|
|
226
|
-
interval = operands[0];
|
|
227
|
-
}
|
|
228
|
-
if (typeof x !== "number" && typeof x !== "string")
|
|
229
|
-
throw Error("Set membership non-string variables not implemented for conversion to mathjs");
|
|
230
|
-
x = this.convert(x);
|
|
231
|
-
if (interval[0] !== "interval")
|
|
232
|
-
throw Error("Set membership in non-intervals not implemented for conversion to mathjs");
|
|
233
|
-
let args = interval[1];
|
|
234
|
-
let closed = interval[2];
|
|
235
|
-
if (args[0] !== "tuple" || closed[0] !== "tuple")
|
|
236
|
-
throw new Error("Badly formed ast");
|
|
237
|
-
let a = this.convert(args[1]);
|
|
238
|
-
let b = this.convert(args[2]);
|
|
239
|
-
let comparisons = [];
|
|
240
|
-
if (closed[1])
|
|
241
|
-
comparisons.push(new m.OperatorNode(">=", "largerEq", [x, a]));
|
|
242
|
-
else
|
|
243
|
-
comparisons.push(new m.OperatorNode(">", "larger", [x, a]));
|
|
244
|
-
if (closed[2])
|
|
245
|
-
comparisons.push(new m.OperatorNode("<=", "smallerEq", [x, b]));
|
|
246
|
-
else
|
|
247
|
-
comparisons.push(new m.OperatorNode("<", "smaller", [x, b]));
|
|
248
|
-
let result = new m.OperatorNode("and", "and", comparisons);
|
|
249
|
-
if (operator === "notin" || operator === "notni")
|
|
250
|
-
result = new m.OperatorNode("not", "not", [result]);
|
|
251
|
-
return result;
|
|
252
|
-
}
|
|
253
|
-
if (operator === "subset" ||
|
|
254
|
-
operator === "notsubset" ||
|
|
255
|
-
operator === "superset" ||
|
|
256
|
-
operator === "notsuperset") {
|
|
257
|
-
let big, small;
|
|
258
|
-
if (operator === "subset" || operator === "notsubset") {
|
|
259
|
-
small = operands[0];
|
|
260
|
-
big = operands[1];
|
|
261
|
-
}
|
|
262
|
-
else {
|
|
263
|
-
small = operands[1];
|
|
264
|
-
big = operands[0];
|
|
265
|
-
}
|
|
266
|
-
if (small[0] !== "interval" || big[0] !== "interval")
|
|
267
|
-
throw Error("Set containment of non-intervals not implemented for conversion to mathjs");
|
|
268
|
-
let small_args = small[1];
|
|
269
|
-
let small_closed = small[2];
|
|
270
|
-
let big_args = big[1];
|
|
271
|
-
let big_closed = big[2];
|
|
272
|
-
if (small_args[0] !== "tuple" ||
|
|
273
|
-
small_closed[0] !== "tuple" ||
|
|
274
|
-
big_args[0] !== "tuple" ||
|
|
275
|
-
big_closed[0] !== "tuple")
|
|
276
|
-
throw Error("Badly formed ast");
|
|
277
|
-
let small_a = this.convert(small_args[1]);
|
|
278
|
-
let small_b = this.convert(small_args[2]);
|
|
279
|
-
let big_a = this.convert(big_args[1]);
|
|
280
|
-
let big_b = this.convert(big_args[2]);
|
|
281
|
-
let comparisons = [];
|
|
282
|
-
if (small_closed[1] && !big_closed[1])
|
|
283
|
-
comparisons.push(new m.OperatorNode(">", "larger", [small_a, big_a]));
|
|
284
|
-
else
|
|
285
|
-
comparisons.push(new m.OperatorNode(">=", "largerEq", [small_a, big_a]));
|
|
286
|
-
if (small_closed[2] && !big_closed[2])
|
|
287
|
-
comparisons.push(new m.OperatorNode("<", "smaller", [small_b, big_b]));
|
|
288
|
-
else
|
|
289
|
-
comparisons.push(new m.OperatorNode("<=", "smallerEq", [small_b, big_b]));
|
|
290
|
-
let result = new m.OperatorNode("and", "and", comparisons);
|
|
291
|
-
if (operator === "notsubset" || operator === "notsuperset")
|
|
292
|
-
result = new m.OperatorNode("not", "not", [result]);
|
|
293
|
-
return result;
|
|
294
|
-
}
|
|
295
|
-
if (operator === "matrix") {
|
|
296
|
-
// Convert matrices into nested array nodes
|
|
297
|
-
// Will become matrix on eval
|
|
298
|
-
let size = operands[0];
|
|
299
|
-
let nrows = size[1];
|
|
300
|
-
let ncols = size[2];
|
|
301
|
-
let entries = operands[1];
|
|
302
|
-
if (!Number.isInteger(nrows) || !Number.isInteger(ncols))
|
|
303
|
-
throw Error("Matrix must have integer dimensions");
|
|
304
|
-
let result = [];
|
|
305
|
-
for (let i = 1; i <= nrows; i++) {
|
|
306
|
-
let row = [];
|
|
307
|
-
for (let j = 1; j <= ncols; j++) {
|
|
308
|
-
row.push(this.convert(entries[i][j]));
|
|
309
|
-
}
|
|
310
|
-
result.push(new m.ArrayNode(row));
|
|
311
|
-
}
|
|
312
|
-
return new m.ArrayNode(result);
|
|
313
|
-
}
|
|
314
|
-
if (operator == "%") {
|
|
315
|
-
const dividend = this.convert(operands[0]);
|
|
316
|
-
const divisor = new m.ConstantNode(100);
|
|
317
|
-
const result = new m.OperatorNode("/", "divide", [dividend, divisor]);
|
|
318
|
-
return result;
|
|
319
|
-
}
|
|
320
|
-
if (operator in operators) {
|
|
321
|
-
return operators[operator](operands.map(function (v, i) {
|
|
322
|
-
return this.convert(v);
|
|
323
|
-
}.bind(this)));
|
|
324
|
-
}
|
|
325
|
-
throw Error("Operator " + operator + " not implemented for conversion to mathjs");
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
exports.AstToMathJs = AstToMathJs;
|
|
329
|
-
//# sourceMappingURL=ast-to-mathjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ast-to-mathjs.js","sourceRoot":"","sources":["../../src/conversion/ast-to-mathjs.ts"],"names":[],"mappings":"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"}
|
package/lib/conversion/error.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ParseError = void 0;
|
|
4
|
-
function ParseError(message, location) {
|
|
5
|
-
this.name = "ParseError";
|
|
6
|
-
this.message = message || "Error parsing input";
|
|
7
|
-
this.stack = new Error().stack;
|
|
8
|
-
this.location = location;
|
|
9
|
-
}
|
|
10
|
-
exports.ParseError = ParseError;
|
|
11
|
-
ParseError.prototype = Object.create(Error.prototype);
|
|
12
|
-
ParseError.prototype.constructor = ParseError;
|
|
13
|
-
//# sourceMappingURL=error.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/conversion/error.ts"],"names":[],"mappings":";;;AAAA,SAAS,UAAU,CAAC,OAAe,EAAE,QAAiB;IACpD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IACzB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,qBAAqB,CAAC;IAChD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;IAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC3B,CAAC;AAIQ,gCAAU;AAHnB,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACtD,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare var is_associative: {
|
|
2
|
-
"+": boolean;
|
|
3
|
-
"*": boolean;
|
|
4
|
-
and: boolean;
|
|
5
|
-
or: boolean;
|
|
6
|
-
union: boolean;
|
|
7
|
-
intersect: boolean;
|
|
8
|
-
};
|
|
9
|
-
export declare function flatten(expr: any): any;
|
|
10
|
-
export declare const unflattenRight: (expr: any) => any;
|
|
11
|
-
export declare const unflattenLeft: (expr: any) => any;
|
|
12
|
-
export declare const allChildren: (tree: any) => any;
|