occam-furtle 2.0.340 → 3.0.1
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/example.js +6319 -2036
- package/lib/context/block.js +81 -41
- package/lib/context/file/furtle.js +260 -0
- package/lib/context/file/nominal.js +956 -0
- package/lib/context/file.js +146 -271
- package/lib/context/release.js +675 -0
- package/lib/context.js +210 -0
- package/lib/element/assignment/array.js +117 -15
- package/lib/element/assignment/object.js +119 -17
- package/lib/element/assignment/variable.js +121 -14
- package/lib/element/assignments/variable.js +120 -13
- package/lib/element/declaration/procedure.js +120 -12
- package/lib/element/error.js +118 -13
- package/lib/element/every.js +116 -13
- package/lib/element/expression.js +134 -68
- package/lib/element/label.js +119 -12
- package/lib/element/nodeQuery.js +120 -18
- package/lib/element/nodesQuery.js +120 -18
- package/lib/element/parameter/named.js +117 -15
- package/lib/element/parameter.js +116 -14
- package/lib/element/parameters/named.js +116 -14
- package/lib/element/parameters.js +115 -13
- package/lib/element/primitive.js +115 -63
- package/lib/element/procedure/anonymous.js +118 -16
- package/lib/element/procedure.js +118 -16
- package/lib/element/procedureCall.js +116 -14
- package/lib/element/reduce.js +116 -14
- package/lib/element/reference.js +119 -12
- package/lib/element/returnBlock.js +116 -14
- package/lib/element/some.js +117 -15
- package/lib/element/statement/return.js +120 -13
- package/lib/element/step.js +121 -14
- package/lib/element/term/bracketed.js +120 -13
- package/lib/element/term/comparison.js +117 -15
- package/lib/element/term/logical.js +119 -17
- package/lib/element/term/negated.js +119 -15
- package/lib/element/term.js +131 -45
- package/lib/element/terms.js +125 -14
- package/lib/element/ternary.js +118 -16
- package/lib/element/variable.js +127 -19
- package/lib/element.js +1 -8
- package/lib/index.js +9 -1
- package/lib/log.js +13 -12
- package/lib/metaTypeNames.js +26 -0
- package/lib/metaTypes.js +66 -0
- package/lib/node/expression.js +8 -15
- package/lib/nodeProperties.js +17 -21
- package/lib/nodeProperty.js +4 -7
- package/lib/utilities/context.js +8 -37
- package/lib/utilities/customGrammar.js +49 -0
- package/lib/utilities/element.js +110 -60
- package/lib/utilities/lineIndex.js +26 -0
- package/lib/utilities/primitive.js +14 -5
- package/lib/utilities/string.js +41 -37
- package/lib/utilities/term.js +14 -5
- package/lib/utilities/terms.js +7 -3
- package/package.json +2 -2
- package/src/context/block.js +20 -32
- package/src/context/file/furtle.js +141 -0
- package/src/context/file/nominal.js +946 -0
- package/src/context/file.js +32 -209
- package/src/context/release.js +653 -0
- package/src/context.js +74 -0
- package/src/element/assignment/array.js +8 -9
- package/src/element/assignment/object.js +12 -11
- package/src/element/assignment/variable.js +7 -8
- package/src/element/assignments/variable.js +7 -8
- package/src/element/declaration/procedure.js +6 -6
- package/src/element/error.js +4 -6
- package/src/element/every.js +5 -6
- package/src/element/expression.js +13 -33
- package/src/element/label.js +6 -7
- package/src/element/nodeQuery.js +12 -14
- package/src/element/nodesQuery.js +12 -14
- package/src/element/parameter/named.js +7 -8
- package/src/element/parameter.js +6 -8
- package/src/element/parameters/named.js +8 -9
- package/src/element/parameters.js +6 -8
- package/src/element/primitive.js +5 -57
- package/src/element/procedure/anonymous.js +7 -9
- package/src/element/procedure.js +6 -8
- package/src/element/procedureCall.js +6 -8
- package/src/element/reduce.js +5 -7
- package/src/element/reference.js +6 -7
- package/src/element/returnBlock.js +5 -7
- package/src/element/some.js +9 -9
- package/src/element/statement/return.js +7 -8
- package/src/element/step.js +6 -7
- package/src/element/term/bracketed.js +7 -8
- package/src/element/term/comparison.js +6 -8
- package/src/element/term/logical.js +12 -12
- package/src/element/term/negated.js +11 -9
- package/src/element/term.js +16 -17
- package/src/element/terms.js +16 -9
- package/src/element/ternary.js +8 -9
- package/src/element/variable.js +24 -14
- package/src/element.js +0 -8
- package/src/index.js +2 -0
- package/src/log.js +11 -11
- package/src/metaTypeNames.js +5 -0
- package/src/metaTypes.js +71 -0
- package/src/node/expression.js +9 -17
- package/src/nodeProperties.js +23 -32
- package/src/nodeProperty.js +5 -10
- package/src/utilities/context.js +7 -45
- package/src/utilities/customGrammar.js +40 -0
- package/src/utilities/element.js +181 -94
- package/src/utilities/lineIndex.js +21 -0
- package/src/utilities/primitive.js +22 -5
- package/src/utilities/string.js +42 -36
- package/src/utilities/term.js +22 -5
- package/src/utilities/terms.js +12 -4
- package/test/helpers/furtle.js +1 -1
- package/test/helpers/nominal.js +2 -3
- package/test/main.js +4 -3
- package/test/context/file.js +0 -127
- package/test/context/release.js +0 -151
- package/test/helpers/constants.js +0 -17
package/src/element/primitive.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
4
|
|
|
5
|
+
import Element from "../element";
|
|
5
6
|
import elements from "../elements";
|
|
6
7
|
import nullNode from "../nullNode";
|
|
7
8
|
|
|
@@ -10,17 +11,14 @@ import { NODE_TYPE, NODES_TYPE, STRING_TYPE, NUMBER_TYPE, BOOLEAN_TYPE } from "
|
|
|
10
11
|
|
|
11
12
|
const { match } = arrayUtilities;
|
|
12
13
|
|
|
13
|
-
export default define(class Primitive {
|
|
14
|
-
constructor(string, type, value) {
|
|
15
|
-
|
|
14
|
+
export default define(class Primitive extends Element {
|
|
15
|
+
constructor(context, string, node, type, value) {
|
|
16
|
+
super(context, string, node)
|
|
17
|
+
|
|
16
18
|
this.type = type;
|
|
17
19
|
this.value = value;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
|
-
getString() {
|
|
21
|
-
return this.string;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
22
|
getType() {
|
|
25
23
|
return this.type;
|
|
26
24
|
}
|
|
@@ -29,56 +27,6 @@ export default define(class Primitive {
|
|
|
29
27
|
return this.value;
|
|
30
28
|
}
|
|
31
29
|
|
|
32
|
-
getNode() {
|
|
33
|
-
let node = null;
|
|
34
|
-
|
|
35
|
-
if (this.type === NODE_TYPE) {
|
|
36
|
-
node = this.value; ///
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
return node;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
getNodes() {
|
|
43
|
-
let nodes = null;
|
|
44
|
-
|
|
45
|
-
if (this.type === NODES_TYPE) {
|
|
46
|
-
nodes = this.value; ///
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return nodes;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
getNumber() {
|
|
53
|
-
let number = null;
|
|
54
|
-
|
|
55
|
-
if (this.type === NUMBER_TYPE) {
|
|
56
|
-
number = this.value; ///
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return number;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
getBoolean() {
|
|
63
|
-
let boolean = null;
|
|
64
|
-
|
|
65
|
-
if (this.type === BOOLEAN_TYPE) {
|
|
66
|
-
boolean = this.value; ///
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return boolean;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
getStringLiteral() {
|
|
73
|
-
let stringLiteral = null;
|
|
74
|
-
|
|
75
|
-
if (this.type === STRING_TYPE) {
|
|
76
|
-
stringLiteral = this.value; ///
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return stringLiteral;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
30
|
evaluate(context) {
|
|
83
31
|
const { Term } = elements,
|
|
84
32
|
primitive = this,
|
|
@@ -1,28 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../../element";
|
|
3
4
|
import Exception from "../../exception";
|
|
4
5
|
|
|
5
6
|
import { define } from "../../elements";
|
|
6
7
|
import { variablesFromTermsAndParameters } from "../procedure";
|
|
7
8
|
|
|
8
|
-
export default define(class AnonymousProcedure {
|
|
9
|
-
constructor(string, type, parameters, returnBlock) {
|
|
10
|
-
|
|
9
|
+
export default define(class AnonymousProcedure extends Element {
|
|
10
|
+
constructor(context, string, node, type, parameters, returnBlock) {
|
|
11
|
+
super(context, string, node)
|
|
12
|
+
|
|
11
13
|
this.type = type;
|
|
12
14
|
this.parameters = parameters;
|
|
13
15
|
this.returnBlock = returnBlock;
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
getString() {
|
|
17
|
-
return this.string;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
18
|
getType() {
|
|
21
19
|
return this.type;
|
|
22
20
|
}
|
|
23
21
|
|
|
24
22
|
getParameters() {
|
|
25
|
-
return this.
|
|
23
|
+
return this.parameters;
|
|
26
24
|
}
|
|
27
25
|
|
|
28
26
|
getReturnBlock() {
|
|
@@ -30,7 +28,7 @@ export default define(class AnonymousProcedure {
|
|
|
30
28
|
}
|
|
31
29
|
|
|
32
30
|
call(terms, context) {
|
|
33
|
-
const anonymousProcedureString = this.
|
|
31
|
+
const anonymousProcedureString = this.getString(); ///
|
|
34
32
|
|
|
35
33
|
context.trace(`Calling the '${anonymousProcedureString}' anonymous procedure...`);
|
|
36
34
|
|
package/src/element/procedure.js
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../element";
|
|
3
4
|
import elements from "../elements";
|
|
4
5
|
import Exception from "../exception";
|
|
5
6
|
|
|
6
7
|
import { define } from "../elements";
|
|
7
8
|
import { BOOLEAN_TYPE } from "../types";
|
|
8
9
|
|
|
9
|
-
export default define(class Procedure {
|
|
10
|
-
constructor(string, type, label, parameters, returnBlock) {
|
|
11
|
-
|
|
10
|
+
export default define(class Procedure extends Element {
|
|
11
|
+
constructor(context, string, node, type, label, parameters, returnBlock) {
|
|
12
|
+
super(context, string, node)
|
|
13
|
+
|
|
12
14
|
this.type = type;
|
|
13
15
|
this.label = label;
|
|
14
16
|
this.parameters = parameters;
|
|
15
17
|
this.returnBlock = returnBlock;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
getString() {
|
|
19
|
-
return this.string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
20
|
getType() {
|
|
23
21
|
return this.type;
|
|
24
22
|
}
|
|
@@ -49,7 +47,7 @@ export default define(class Procedure {
|
|
|
49
47
|
matchName(name) { return this.label.matchName(name); }
|
|
50
48
|
|
|
51
49
|
call(terms, context) {
|
|
52
|
-
const procedureString = this.
|
|
50
|
+
const procedureString = this.getString(); ///
|
|
53
51
|
|
|
54
52
|
context.trace(`Calling the '${procedureString}' procedure...`);
|
|
55
53
|
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../element";
|
|
3
4
|
import Exception from "../exception";
|
|
4
5
|
|
|
5
6
|
import { define } from "../elements";
|
|
6
7
|
|
|
7
|
-
export default define(class ProcedureCall {
|
|
8
|
-
constructor(string, reference, terms) {
|
|
9
|
-
|
|
8
|
+
export default define(class ProcedureCall extends Element {
|
|
9
|
+
constructor(context, string, node, reference, terms) {
|
|
10
|
+
super(context, string, node)
|
|
11
|
+
|
|
10
12
|
this.reference = reference;
|
|
11
13
|
this.terms = terms;
|
|
12
14
|
}
|
|
13
15
|
|
|
14
|
-
getString() {
|
|
15
|
-
return this.string;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
16
|
getReference() {
|
|
19
17
|
return this.reference;
|
|
20
18
|
}
|
|
@@ -26,7 +24,7 @@ export default define(class ProcedureCall {
|
|
|
26
24
|
getName() { return this.reference.getName(); }
|
|
27
25
|
|
|
28
26
|
evaluate(context) {
|
|
29
|
-
const procedureCallString = this.
|
|
27
|
+
const procedureCallString = this.getString(); ///
|
|
30
28
|
|
|
31
29
|
context.trace(`Evaluating the '${procedureCallString}' procedure call...`);
|
|
32
30
|
|
package/src/element/reduce.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../element";
|
|
3
4
|
import elements from "../elements";
|
|
4
5
|
import Exception from "../exception";
|
|
5
6
|
|
|
@@ -7,18 +8,15 @@ import { define } from "../elements";
|
|
|
7
8
|
import { NODES_TYPE } from "../types";
|
|
8
9
|
import { termFromNode } from "../utilities/term";
|
|
9
10
|
|
|
10
|
-
export default define(class Reduce {
|
|
11
|
-
constructor(string, variable, initialExpression, anonymousProcedure) {
|
|
12
|
-
|
|
11
|
+
export default define(class Reduce extends Element {
|
|
12
|
+
constructor(context, string, node, variable, initialExpression, anonymousProcedure) {
|
|
13
|
+
super(context, string, node)
|
|
14
|
+
|
|
13
15
|
this.variable = variable;
|
|
14
16
|
this.initialExpression = initialExpression;
|
|
15
17
|
this.anonymousProcedure = anonymousProcedure;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
getString() {
|
|
19
|
-
return this.string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
20
|
getVariable() {
|
|
23
21
|
return this.variable;
|
|
24
22
|
}
|
package/src/element/reference.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../element";
|
|
4
|
+
|
|
3
5
|
import { define } from "../elements";
|
|
4
6
|
|
|
5
|
-
export default define(class Reference {
|
|
6
|
-
constructor(string, name) {
|
|
7
|
-
|
|
8
|
-
this.name = name;
|
|
9
|
-
}
|
|
7
|
+
export default define(class Reference extends Element {
|
|
8
|
+
constructor(context, string, node, name) {
|
|
9
|
+
super(context, string, node)
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
return this.string;
|
|
11
|
+
this.name = name;
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
getName() {
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../element";
|
|
3
4
|
import Exception from "../exception";
|
|
4
5
|
import BlockContext from "../context/block";
|
|
5
6
|
|
|
6
7
|
import { define } from "../elements";
|
|
7
8
|
|
|
8
|
-
export default define(class ReturnBlock {
|
|
9
|
-
constructor(string, steps, nonsensical, returnStatement) {
|
|
10
|
-
|
|
9
|
+
export default define(class ReturnBlock extends Element {
|
|
10
|
+
constructor(context, string, node, steps, nonsensical, returnStatement) {
|
|
11
|
+
super(context, string, node)
|
|
12
|
+
|
|
11
13
|
this.steps = steps;
|
|
12
14
|
this.nonsensical = nonsensical;
|
|
13
15
|
this.returnStatement = returnStatement;
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
getString() {
|
|
17
|
-
return this.string;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
18
|
getSteps() {
|
|
21
19
|
return this.steps;
|
|
22
20
|
}
|
package/src/element/some.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../element";
|
|
3
4
|
import elements from "../elements";
|
|
4
5
|
import Exception from "../exception";
|
|
5
6
|
|
|
@@ -7,17 +8,14 @@ import { define } from "../elements";
|
|
|
7
8
|
import { NODES_TYPE, BOOLEAN_TYPE } from "../types";
|
|
8
9
|
import { termFromNode, termFromBoolean } from "../utilities/term";
|
|
9
10
|
|
|
10
|
-
export default define(class Some {
|
|
11
|
-
constructor(string, variable, anonymousProcedure) {
|
|
12
|
-
|
|
11
|
+
export default define(class Some extends Element {
|
|
12
|
+
constructor(context, string, node, variable, anonymousProcedure) {
|
|
13
|
+
super(context, string, node)
|
|
14
|
+
|
|
13
15
|
this.variable = variable;
|
|
14
16
|
this.anonymousProcedure = anonymousProcedure;
|
|
15
17
|
}
|
|
16
18
|
|
|
17
|
-
getString() {
|
|
18
|
-
return this.string;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
19
|
getVariable() {
|
|
22
20
|
return this.variable;
|
|
23
21
|
}
|
|
@@ -45,7 +43,8 @@ export default define(class Some {
|
|
|
45
43
|
throw exception;
|
|
46
44
|
}
|
|
47
45
|
|
|
48
|
-
const
|
|
46
|
+
const primitiveValue = term.getPrimitiveValue(),
|
|
47
|
+
nodes = primitiveValue, ///
|
|
49
48
|
boolean = nodes.some((node) => {
|
|
50
49
|
let term;
|
|
51
50
|
|
|
@@ -66,7 +65,8 @@ export default define(class Some {
|
|
|
66
65
|
throw exception;
|
|
67
66
|
}
|
|
68
67
|
|
|
69
|
-
const
|
|
68
|
+
const primitiveValue = term.getPrimitiveValue(),
|
|
69
|
+
boolean = primitiveValue; ///
|
|
70
70
|
|
|
71
71
|
return boolean;
|
|
72
72
|
});
|
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
import { define } from "../../elements";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
constructor(string, term) {
|
|
7
|
-
this.string = string;
|
|
8
|
-
this.term = term;
|
|
9
|
-
}
|
|
5
|
+
import Element from "../../element";
|
|
10
6
|
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
export default define(class ReturnStatement extends Element {
|
|
8
|
+
constructor(context, string, node, term) {
|
|
9
|
+
super(context, string, node)
|
|
10
|
+
|
|
11
|
+
this.term = term;
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
getExpression() {
|
|
@@ -19,7 +18,7 @@ export default define(class ReturnStatement {
|
|
|
19
18
|
evaluate(context) {
|
|
20
19
|
let term;
|
|
21
20
|
|
|
22
|
-
const returnStatementString = this.
|
|
21
|
+
const returnStatementString = this.getString(); ///
|
|
23
22
|
|
|
24
23
|
context.trace(`Evaluating the '${returnStatementString}' return statement...`);
|
|
25
24
|
|
package/src/element/step.js
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../element";
|
|
4
|
+
|
|
3
5
|
import { define } from "../elements";
|
|
4
6
|
|
|
5
|
-
export default define(class Step {
|
|
6
|
-
constructor(string, arrayAssignment, objectAssigment, variablessAssignment) {
|
|
7
|
-
|
|
7
|
+
export default define(class Step extends Element {
|
|
8
|
+
constructor(context, string, node, arrayAssignment, objectAssigment, variablessAssignment) {
|
|
9
|
+
super(context, string, node)
|
|
10
|
+
|
|
8
11
|
this.arrayAssignment = arrayAssignment;
|
|
9
12
|
this.objectAssigment = objectAssigment;
|
|
10
13
|
this.variablessAssignment = variablessAssignment;
|
|
11
14
|
}
|
|
12
15
|
|
|
13
|
-
getString() {
|
|
14
|
-
return this.string;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
16
|
getArrayAssignment() {
|
|
18
17
|
return this.arrayAssignment;
|
|
19
18
|
}
|
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
import { define } from "../../elements";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
constructor(string, term) {
|
|
7
|
-
this.string = string;
|
|
8
|
-
this.term = term;
|
|
9
|
-
}
|
|
5
|
+
import Element from "../../element";
|
|
10
6
|
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
export default define(class BracketedTerm extends Element {
|
|
8
|
+
constructor(context, string, node, term) {
|
|
9
|
+
super(context, string, node)
|
|
10
|
+
|
|
11
|
+
this.term = term;
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
getTerm() {
|
|
@@ -21,7 +20,7 @@ export default define(class BracketedTerm {
|
|
|
21
20
|
evaluate(context) {
|
|
22
21
|
let term;
|
|
23
22
|
|
|
24
|
-
const bracketedTermString = this.
|
|
23
|
+
const bracketedTermString = this.getString(); ///
|
|
25
24
|
|
|
26
25
|
context.trace(`Evaluating the '${bracketedTermString}' bracketed term...`);
|
|
27
26
|
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../../element";
|
|
3
4
|
import Exception from "../../exception";
|
|
4
5
|
|
|
5
6
|
import { define } from "../../elements";
|
|
6
7
|
import { termFromBoolean } from "../../utilities/term";
|
|
7
8
|
|
|
8
|
-
export default define(class ComparisonTerm {
|
|
9
|
-
constructor(string, negated, leftTerm, rightTerm) {
|
|
10
|
-
|
|
9
|
+
export default define(class ComparisonTerm extends Element {
|
|
10
|
+
constructor(context, string, node, negated, leftTerm, rightTerm) {
|
|
11
|
+
super(context, string, node)
|
|
12
|
+
|
|
11
13
|
this.negated = negated;
|
|
12
14
|
this.leftTerm = leftTerm;
|
|
13
15
|
this.rightTerm = rightTerm;
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
getString() {
|
|
17
|
-
return this.string;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
18
|
isNegated() {
|
|
21
19
|
return this.negated;
|
|
22
20
|
}
|
|
@@ -32,7 +30,7 @@ export default define(class ComparisonTerm {
|
|
|
32
30
|
evaluate(context) {
|
|
33
31
|
let term;
|
|
34
32
|
|
|
35
|
-
const comparisonTermString = this.
|
|
33
|
+
const comparisonTermString = this.getString(); ///
|
|
36
34
|
|
|
37
35
|
context.trace(`Evaluating the '${comparisonTermString}' comparison term...`);
|
|
38
36
|
|
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../../element";
|
|
3
4
|
import Exception from "../../exception";
|
|
4
5
|
|
|
5
6
|
import { define } from "../../elements";
|
|
6
7
|
import { BOOLEAN_TYPE } from "../../types";
|
|
7
8
|
import { termFromBoolean } from "../../utilities/term";
|
|
8
9
|
|
|
9
|
-
export default define(class LogicalTerm {
|
|
10
|
-
constructor(string, type, disjunction, leftTerm, rightTerm) {
|
|
11
|
-
|
|
10
|
+
export default define(class LogicalTerm extends Element {
|
|
11
|
+
constructor(context, string, node, type, disjunction, leftTerm, rightTerm) {
|
|
12
|
+
super(context, string, node)
|
|
13
|
+
|
|
12
14
|
this.type = type;
|
|
13
15
|
this.disjunction = disjunction;
|
|
14
16
|
this.leftTerm = leftTerm;
|
|
15
17
|
this.rightTerm = rightTerm;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
getString() {
|
|
19
|
-
return this.string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
20
|
getType() {
|
|
23
21
|
return this.type;
|
|
24
22
|
}
|
|
@@ -38,7 +36,7 @@ export default define(class LogicalTerm {
|
|
|
38
36
|
evaluate(context) {
|
|
39
37
|
let term;
|
|
40
38
|
|
|
41
|
-
const logicalTermString = this.
|
|
39
|
+
const logicalTermString = this.getString(); ///
|
|
42
40
|
|
|
43
41
|
context.trace(`Evaluating the '${logicalTermString}' logical term...`);
|
|
44
42
|
|
|
@@ -63,11 +61,13 @@ export default define(class LogicalTerm {
|
|
|
63
61
|
throw exception;
|
|
64
62
|
}
|
|
65
63
|
|
|
66
|
-
const
|
|
67
|
-
|
|
64
|
+
const leftTermPrimitiveValue = leftTerm.getPrimitiveValue(),
|
|
65
|
+
rightTermPrimitiveValue = rightTerm.getPrimitiveValue(),
|
|
66
|
+
leftBoolean =leftTermPrimitiveValue, ///
|
|
67
|
+
rightBoolean = rightTermPrimitiveValue, ///
|
|
68
68
|
boolean = this.disjunction ?
|
|
69
|
-
(
|
|
70
|
-
(
|
|
69
|
+
(leftBoolean || rightBoolean) :
|
|
70
|
+
(leftBoolean && rightBoolean);
|
|
71
71
|
|
|
72
72
|
term = termFromBoolean(boolean, context);
|
|
73
73
|
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../../element";
|
|
3
4
|
import Exception from "../../exception";
|
|
4
5
|
|
|
5
6
|
import { define } from "../../elements";
|
|
6
7
|
import { BOOLEAN_TYPE } from "../../types";
|
|
7
8
|
import { termFromBoolean } from "../../utilities/term";
|
|
8
9
|
|
|
9
|
-
export default define(class NegatedTerm {
|
|
10
|
-
constructor(string, type, term) {
|
|
11
|
-
|
|
10
|
+
export default define(class NegatedTerm extends Element {
|
|
11
|
+
constructor(context, string, node, type, term) {
|
|
12
|
+
super(context, string, node)
|
|
13
|
+
|
|
12
14
|
this.type = type;
|
|
13
15
|
this.term = term;
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
getString() {
|
|
17
|
-
return this.string;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
18
|
getType() {
|
|
21
19
|
return this.type;
|
|
22
20
|
}
|
|
@@ -28,7 +26,7 @@ export default define(class NegatedTerm {
|
|
|
28
26
|
evaluate(context) {
|
|
29
27
|
let term;
|
|
30
28
|
|
|
31
|
-
const negatedTermString = this.
|
|
29
|
+
const negatedTermString = this.getString(); ///
|
|
32
30
|
|
|
33
31
|
context.trace(`Evaluating the '${negatedTermString}' negated term...`);
|
|
34
32
|
|
|
@@ -44,7 +42,11 @@ export default define(class NegatedTerm {
|
|
|
44
42
|
throw exception;
|
|
45
43
|
}
|
|
46
44
|
|
|
47
|
-
let boolean
|
|
45
|
+
let boolean;
|
|
46
|
+
|
|
47
|
+
const primitiveValue = term.getPrimitiveValue();
|
|
48
|
+
|
|
49
|
+
boolean = primitiveValue; ///
|
|
48
50
|
|
|
49
51
|
boolean = !boolean;
|
|
50
52
|
|
package/src/element/term.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../element";
|
|
4
|
+
|
|
3
5
|
import { define } from "../elements";
|
|
4
6
|
|
|
5
|
-
export default define(class Term {
|
|
6
|
-
constructor(string, variable, primitive, negatedTerm, logicalTerm, bracketedTerm, comparisonTerm) {
|
|
7
|
-
|
|
7
|
+
export default define(class Term extends Element {
|
|
8
|
+
constructor(context, string, node, variable, primitive, negatedTerm, logicalTerm, bracketedTerm, comparisonTerm) {
|
|
9
|
+
super(context, string, node)
|
|
10
|
+
|
|
8
11
|
this.variable = variable;
|
|
9
12
|
this.primitive = primitive;
|
|
10
13
|
this.negatedTerm = negatedTerm;
|
|
@@ -13,10 +16,6 @@ export default define(class Term {
|
|
|
13
16
|
this.comparisonTerm = comparisonTerm;
|
|
14
17
|
}
|
|
15
18
|
|
|
16
|
-
getString() {
|
|
17
|
-
return this.string;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
19
|
getVariable() {
|
|
21
20
|
return this.variable;
|
|
22
21
|
}
|
|
@@ -41,15 +40,11 @@ export default define(class Term {
|
|
|
41
40
|
return this.comparisonTerm;
|
|
42
41
|
}
|
|
43
42
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
getNodes() { return this.primitive.getNodes(); }
|
|
43
|
+
getPrimitiveValue() {
|
|
44
|
+
const primitiveValue = this.primitive.getValue();
|
|
47
45
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
getBoolean() { return this.primitive.getBoolean(); }
|
|
51
|
-
|
|
52
|
-
getStringLiteral() { return this.primitive.getStringLiteral(); }
|
|
46
|
+
return primitiveValue;
|
|
47
|
+
}
|
|
53
48
|
|
|
54
49
|
getType() {
|
|
55
50
|
let type;
|
|
@@ -122,12 +117,16 @@ export default define(class Term {
|
|
|
122
117
|
static fromPrimitive(primitive, context) {
|
|
123
118
|
const primitiveString = primitive.getString(),
|
|
124
119
|
string = primitiveString, ///
|
|
120
|
+
node = null,
|
|
125
121
|
variable = null,
|
|
126
122
|
negatedTerm = null,
|
|
127
123
|
logicalTerm = null,
|
|
128
124
|
bracketedTerm = null,
|
|
129
|
-
comparisonTerm = null
|
|
130
|
-
|
|
125
|
+
comparisonTerm = null;
|
|
126
|
+
|
|
127
|
+
context = null;
|
|
128
|
+
|
|
129
|
+
const term = new Term(context, string, node, variable, primitive, negatedTerm, logicalTerm, bracketedTerm, comparisonTerm);
|
|
131
130
|
|
|
132
131
|
return term;
|
|
133
132
|
}
|
package/src/element/terms.js
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Element from "../element";
|
|
4
|
+
|
|
3
5
|
import { define } from "../elements";
|
|
4
6
|
import { termsStringFromTermsArray } from "../utilities/string";
|
|
5
7
|
|
|
6
|
-
export default define(class Terms {
|
|
7
|
-
constructor(string, array) {
|
|
8
|
-
|
|
9
|
-
this.array = array;
|
|
10
|
-
}
|
|
8
|
+
export default define(class Terms extends Element {
|
|
9
|
+
constructor(context, string, node, array) {
|
|
10
|
+
super(context, string, node)
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
return this.string;
|
|
12
|
+
this.array = array;
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
getArray() {
|
|
@@ -46,7 +45,11 @@ export default define(class Terms {
|
|
|
46
45
|
termsString = termsStringFromTermsArray(termsArray, context),
|
|
47
46
|
string = termsString, ///
|
|
48
47
|
array = termsArray, ///
|
|
49
|
-
|
|
48
|
+
node = null;
|
|
49
|
+
|
|
50
|
+
context = null;
|
|
51
|
+
|
|
52
|
+
const terms = new Terms(context, string, node, array);
|
|
50
53
|
|
|
51
54
|
return terms;
|
|
52
55
|
}
|
|
@@ -60,7 +63,11 @@ export default define(class Terms {
|
|
|
60
63
|
termsString = termsStringFromTermsArray(termsArray, context),
|
|
61
64
|
string = termsString, ///
|
|
62
65
|
array = termsArray, ///
|
|
63
|
-
|
|
66
|
+
node = null;
|
|
67
|
+
|
|
68
|
+
context = null;
|
|
69
|
+
|
|
70
|
+
const terms = new Terms(context, string, node, array);
|
|
64
71
|
|
|
65
72
|
return terms;
|
|
66
73
|
}
|