occam-furtle 2.0.280 → 2.0.283
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/README.md +0 -11
- package/lib/constants.js +29 -1
- package/lib/context/block.js +15 -1
- package/lib/context/file.js +129 -52
- package/lib/element/assignment/array.js +186 -0
- package/lib/element/assignment/object.js +244 -0
- package/lib/element/assignment/variable.js +144 -0
- package/lib/element/assignments/variable.js +158 -0
- package/lib/element/block/return.js +198 -0
- package/lib/element/comparison.js +179 -0
- package/lib/element/declaration/procedure.js +139 -0
- package/lib/{dom → element}/error.js +12 -4
- package/lib/element/every.js +179 -0
- package/lib/element/expression/bitwise.js +186 -0
- package/lib/element/expression/bracketed.js +149 -0
- package/lib/element/expression/negated.js +166 -0
- package/lib/element/expression.js +578 -0
- package/lib/element/expressions.js +210 -0
- package/lib/{dom → element}/label.js +4 -4
- package/lib/element/parameter/named.js +198 -0
- package/lib/element/parameter.js +165 -0
- package/lib/element/parameters/named.js +220 -0
- package/lib/element/parameters.js +198 -0
- package/lib/element/procedure/anonymous.js +181 -0
- package/lib/element/procedure.js +212 -0
- package/lib/element/procedureCall.js +166 -0
- package/lib/element/query/node.js +186 -0
- package/lib/element/query/nodes.js +179 -0
- package/lib/element/reduce.js +181 -0
- package/lib/element/reference.js +138 -0
- package/lib/element/some.js +179 -0
- package/lib/element/statement/return.js +138 -0
- package/lib/element/step.js +154 -0
- package/lib/element/ternary.js +171 -0
- package/lib/element/variable.js +279 -0
- package/lib/elements.js +27 -0
- package/lib/index.js +13 -5
- package/lib/log.js +202 -0
- package/lib/preamble.js +32 -32
- package/lib/process/verify.js +289 -0
- package/lib/utilities/context.js +46 -5
- package/lib/utilities/element.js +3 -0
- package/lib/utilities/node.js +71 -0
- package/package.json +3 -1
- package/src/constants.js +16 -0
- package/src/context/block.js +10 -0
- package/src/context/file.js +97 -55
- package/src/{dom → element}/assignment/array.js +6 -6
- package/src/{dom → element}/assignment/object.js +8 -8
- package/src/{dom → element}/assignment/variable.js +4 -4
- package/src/{dom → element}/assignments/variable.js +5 -5
- package/src/{dom → element}/block/return.js +5 -5
- package/src/{dom → element}/comparison.js +5 -5
- package/src/{dom → element}/declaration/procedure.js +22 -4
- package/src/{dom → element}/error.js +13 -4
- package/src/{dom → element}/every.js +6 -6
- package/src/{dom → element}/expression/bitwise.js +5 -5
- package/src/{dom → element}/expression/bracketed.js +4 -4
- package/src/{dom → element}/expression/negated.js +5 -5
- package/src/{dom → element}/expression.js +4 -4
- package/src/{dom → element}/expressions.js +6 -6
- package/src/{dom → element}/label.js +4 -4
- package/src/{dom → element}/parameter/named.js +4 -4
- package/src/{dom → element}/parameter.js +4 -4
- package/src/{dom → element}/parameters/named.js +5 -5
- package/src/{dom → element}/parameters.js +5 -5
- package/src/{dom → element}/procedure/anonymous.js +4 -4
- package/src/{dom → element}/procedure.js +5 -5
- package/src/{dom → element}/procedureCall.js +4 -4
- package/src/{dom → element}/query/node.js +5 -5
- package/src/{dom → element}/query/nodes.js +5 -5
- package/src/{dom → element}/reduce.js +5 -5
- package/src/{dom → element}/reference.js +4 -4
- package/src/{dom → element}/some.js +6 -6
- package/src/{dom → element}/statement/return.js +4 -4
- package/src/{dom → element}/step.js +4 -4
- package/src/{dom → element}/ternary.js +4 -4
- package/src/{dom → element}/variable.js +5 -5
- package/src/elements.js +13 -0
- package/src/index.js +6 -2
- package/src/log.js +139 -0
- package/src/preamble.js +31 -31
- package/src/process/verify.js +157 -0
- package/src/utilities/context.js +45 -2
- package/src/utilities/element.js +0 -0
- package/src/utilities/{string.js → node.js} +9 -14
- package/test/Free and bound variables.ftl +112 -0
- package/test/context/file.js +127 -0
- package/{src/example → test}/context/release.js +60 -12
- package/test/helpers/constants.js +17 -0
- package/{src/example/utilities → test/helpers}/expressions.js +8 -4
- package/{src/example/utilities → test/helpers}/furtle.js +8 -4
- package/{src/example/utilities → test/helpers}/grammar.js +8 -4
- package/{src/example/utilities → test/helpers}/nominal.js +10 -5
- package/{src/example/utilities → test/helpers}/procedure.js +6 -2
- package/test/main.js +55 -0
- package/example/Free and bound variables.ftl +0 -75
- package/lib/dom/assignment/array.js +0 -186
- package/lib/dom/assignment/object.js +0 -244
- package/lib/dom/assignment/variable.js +0 -144
- package/lib/dom/assignments/variable.js +0 -158
- package/lib/dom/block/return.js +0 -198
- package/lib/dom/comparison.js +0 -179
- package/lib/dom/declaration/procedure.js +0 -125
- package/lib/dom/every.js +0 -179
- package/lib/dom/expression/bitwise.js +0 -186
- package/lib/dom/expression/bracketed.js +0 -149
- package/lib/dom/expression/negated.js +0 -166
- package/lib/dom/expression.js +0 -578
- package/lib/dom/expressions.js +0 -210
- package/lib/dom/parameter/named.js +0 -198
- package/lib/dom/parameter.js +0 -165
- package/lib/dom/parameters/named.js +0 -220
- package/lib/dom/parameters.js +0 -198
- package/lib/dom/procedure/anonymous.js +0 -181
- package/lib/dom/procedure.js +0 -212
- package/lib/dom/procedureCall.js +0 -166
- package/lib/dom/query/node.js +0 -186
- package/lib/dom/query/nodes.js +0 -179
- package/lib/dom/reduce.js +0 -181
- package/lib/dom/reference.js +0 -138
- package/lib/dom/some.js +0 -179
- package/lib/dom/statement/return.js +0 -138
- package/lib/dom/step.js +0 -154
- package/lib/dom/ternary.js +0 -171
- package/lib/dom/variable.js +0 -279
- package/lib/dom.js +0 -27
- package/lib/example/context/file.js +0 -130
- package/lib/example/context/release.js +0 -160
- package/lib/example/utilities/expressions.js +0 -29
- package/lib/example/utilities/furtle.js +0 -19
- package/lib/example/utilities/grammar.js +0 -26
- package/lib/example/utilities/nominal.js +0 -25
- package/lib/example/utilities/procedure.js +0 -18
- package/lib/utilities/string.js +0 -78
- package/src/dom.js +0 -13
- package/src/example/context/file.js +0 -69
- /package/{example → test}/customGrammars.json +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
const { fileSystemUtilities } = require("necessary"),
|
|
4
|
+
{ CustomGrammar, CombinedCustomGrammar } = require("occam-custom-grammars");
|
|
5
5
|
|
|
6
6
|
const { readFile } = fileSystemUtilities;
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
const filePath = "
|
|
8
|
+
function combinedCustomGrammarFromNothing() {
|
|
9
|
+
const filePath = "test/customGrammars.json",
|
|
10
10
|
fileContent = readFile(filePath),
|
|
11
11
|
json = JSON.parse(fileContent),
|
|
12
12
|
customGrammars = customGrammarsFromJSON(json),
|
|
@@ -16,6 +16,10 @@ export function combinedCustomGrammarFromNothing() {
|
|
|
16
16
|
return combinedCustomGrammar;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
module.exports = {
|
|
20
|
+
combinedCustomGrammarFromNothing
|
|
21
|
+
};
|
|
22
|
+
|
|
19
23
|
function customGrammarsFromJSON(json) {
|
|
20
24
|
const customGrammarsJSON = json, ///
|
|
21
25
|
customGrammars = customGrammarsJSON.map((customGrammarsJSON) => {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const { lexersUtilities, parsersUtilities } = require("occam-custom-grammars");
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
const FileContext = require("../context/file");
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
const { combinedCustomGrammarFromNothing } = require("../helpers/grammar");
|
|
8
8
|
|
|
9
9
|
const { nominalLexerFromCombinedCustomGrammar } = lexersUtilities,
|
|
10
10
|
{ nominalParserFromStartRuleNameAndCombinedCustomGrammar } = parsersUtilities;
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
function nominalFileContextFromReleaseContext(releaseContext) {
|
|
13
13
|
const content = `∀n m = m`,
|
|
14
14
|
startRuleName = "statement",
|
|
15
15
|
combinedCustomGrammar = combinedCustomGrammarFromNothing(),
|
|
@@ -20,8 +20,13 @@ export function nominalFileContextFromReleaseContext(releaseContext) {
|
|
|
20
20
|
tokens = lexer.tokenise(content),
|
|
21
21
|
node = parser.parse(tokens),
|
|
22
22
|
context = releaseContext, ///
|
|
23
|
-
|
|
23
|
+
filePath = "lemmas.nml",
|
|
24
|
+
fileContext = FileContext.fromNodeTokensAndFilePath(node, tokens, filePath, context),
|
|
24
25
|
nominalFileContext = fileContext; ///
|
|
25
26
|
|
|
26
27
|
return nominalFileContext;
|
|
27
28
|
}
|
|
29
|
+
|
|
30
|
+
module.exports = {
|
|
31
|
+
nominalFileContextFromReleaseContext
|
|
32
|
+
};
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const { arrayUtilities } = require("necessary");
|
|
4
4
|
|
|
5
5
|
const { first } = arrayUtilities;
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
function procedureFromReleaseContext(releaseContext) {
|
|
8
8
|
const procedures = releaseContext.getProcedures(),
|
|
9
9
|
firstProcedure = first(procedures),
|
|
10
10
|
procedure = firstProcedure; ///
|
|
11
11
|
|
|
12
12
|
return procedure;
|
|
13
13
|
}
|
|
14
|
+
|
|
15
|
+
module.exports = {
|
|
16
|
+
procedureFromReleaseContext
|
|
17
|
+
};
|
package/test/main.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const { assert } = require("chai");
|
|
4
|
+
|
|
5
|
+
const ReleaseContext = require("./context/release");
|
|
6
|
+
|
|
7
|
+
const { furtleFileFromNothing } = require("./helpers/furtle"),
|
|
8
|
+
{ expressionsFromFileContext } = require("./helpers/expressions"),
|
|
9
|
+
{ procedureFromReleaseContext } = require("./helpers/procedure"),
|
|
10
|
+
{ nominalFileContextFromReleaseContext } = require("./helpers/nominal");
|
|
11
|
+
|
|
12
|
+
describe("src/eliminateLeftRecursion", () => {
|
|
13
|
+
let fileContext,
|
|
14
|
+
releaseContext;
|
|
15
|
+
|
|
16
|
+
before(() => {
|
|
17
|
+
releaseContext = ReleaseContext.fromNothing();
|
|
18
|
+
|
|
19
|
+
const furtleFile = furtleFileFromNothing(),
|
|
20
|
+
file = furtleFile; ///
|
|
21
|
+
|
|
22
|
+
releaseContext.addFile(file);
|
|
23
|
+
|
|
24
|
+
releaseContext.verify();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
before(() => {
|
|
28
|
+
const nominalFileContext = nominalFileContextFromReleaseContext(releaseContext);
|
|
29
|
+
|
|
30
|
+
fileContext = nominalFileContext; ///
|
|
31
|
+
|
|
32
|
+
releaseContext.addFileContext(fileContext);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it("returns true", () => {
|
|
36
|
+
const free = true,
|
|
37
|
+
procedure = procedureFromReleaseContext(releaseContext),
|
|
38
|
+
expressions = expressionsFromFileContext(fileContext, free);
|
|
39
|
+
|
|
40
|
+
// try {
|
|
41
|
+
const context = fileContext, ///
|
|
42
|
+
expression = procedure.call(expressions, context),
|
|
43
|
+
boolean = expression.getBoolean();
|
|
44
|
+
|
|
45
|
+
assert.isTrue(boolean);
|
|
46
|
+
|
|
47
|
+
console.log(boolean);
|
|
48
|
+
// } catch (exception) {
|
|
49
|
+
// const message = exception.getMessage();
|
|
50
|
+
//
|
|
51
|
+
// console.log(message);
|
|
52
|
+
// }
|
|
53
|
+
|
|
54
|
+
});
|
|
55
|
+
});
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
Boolean isVariableFree(Node termNode, Node statementNode) {
|
|
2
|
-
Boolean variableFree = true;
|
|
3
|
-
|
|
4
|
-
Boolean variableBound = isVariableBound(termNode, statementNode);
|
|
5
|
-
|
|
6
|
-
If (variableBound) {
|
|
7
|
-
variableFree = false;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
Return variableFree;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
Boolean isVariableBound(Node termNode, Node statementNode) {
|
|
14
|
-
Boolean variableBound = false;
|
|
15
|
-
|
|
16
|
-
String variableName = variableNameFromTermNode(termNode);
|
|
17
|
-
|
|
18
|
-
If (variableName != "") {
|
|
19
|
-
Nodes statementNodes = nodesQuery(statementNode, //statement);
|
|
20
|
-
|
|
21
|
-
ForEach(statementNodes, (Node statementNode) {
|
|
22
|
-
If (!variableBound) {
|
|
23
|
-
String boundVariableName = boundVariableNameFromStatementNode(statementNode);
|
|
24
|
-
|
|
25
|
-
If (boundVariableName == variableName) {
|
|
26
|
-
variableBound = true;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
Return variableBound;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
String variableNameFromTermNode(Node termNode) {
|
|
36
|
-
String variableName = "";
|
|
37
|
-
|
|
38
|
-
Node variableIdentifierTerminalNode = nodeQuery(termNode, /term/variable/@identifier);
|
|
39
|
-
|
|
40
|
-
If (variableIdentifierTerminalNode != null) {
|
|
41
|
-
{ String content } = variableIdentifierTerminalNode;
|
|
42
|
-
|
|
43
|
-
variableName = content;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
Return variableName;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
String boundVariableNameFromStatementNode(Node statementNode) {
|
|
50
|
-
String boundVariableName = "";
|
|
51
|
-
|
|
52
|
-
{ Nodes childNodes } = statementNode;
|
|
53
|
-
|
|
54
|
-
[ Node firstChildNode ] = childNodes;
|
|
55
|
-
|
|
56
|
-
{ Boolean terminal } = firstChildNode;
|
|
57
|
-
|
|
58
|
-
If (terminal) {
|
|
59
|
-
{ String content } = firstChildNode;
|
|
60
|
-
|
|
61
|
-
If ((content == "∀") || (content == "∃")) {
|
|
62
|
-
[ _, Node argumentNode ] = childNodes;
|
|
63
|
-
|
|
64
|
-
Node boundVariableIdentifierTerminalNode = nodeQuery(argumentNode, /argument/term/variable!/@identifier);
|
|
65
|
-
|
|
66
|
-
If (boundVariableIdentifierTerminalNode != null) {
|
|
67
|
-
{ String content } = boundVariableIdentifierTerminalNode;
|
|
68
|
-
|
|
69
|
-
boundVariableName = content;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
Return boundVariableName;
|
|
75
|
-
}
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _dom = /*#__PURE__*/ _interop_require_wildcard(require("../../dom"));
|
|
12
|
-
var _exception = /*#__PURE__*/ _interop_require_default(require("../../exception"));
|
|
13
|
-
var _query = require("../../utilities/query");
|
|
14
|
-
var _types = require("../../types");
|
|
15
|
-
function _class_call_check(instance, Constructor) {
|
|
16
|
-
if (!(instance instanceof Constructor)) {
|
|
17
|
-
throw new TypeError("Cannot call a class as a function");
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
function _defineProperties(target, props) {
|
|
21
|
-
for(var i = 0; i < props.length; i++){
|
|
22
|
-
var descriptor = props[i];
|
|
23
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
24
|
-
descriptor.configurable = true;
|
|
25
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
26
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
30
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
31
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
32
|
-
return Constructor;
|
|
33
|
-
}
|
|
34
|
-
function _define_property(obj, key, value) {
|
|
35
|
-
if (key in obj) {
|
|
36
|
-
Object.defineProperty(obj, key, {
|
|
37
|
-
value: value,
|
|
38
|
-
enumerable: true,
|
|
39
|
-
configurable: true,
|
|
40
|
-
writable: true
|
|
41
|
-
});
|
|
42
|
-
} else {
|
|
43
|
-
obj[key] = value;
|
|
44
|
-
}
|
|
45
|
-
return obj;
|
|
46
|
-
}
|
|
47
|
-
function _interop_require_default(obj) {
|
|
48
|
-
return obj && obj.__esModule ? obj : {
|
|
49
|
-
default: obj
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
function _getRequireWildcardCache(nodeInterop) {
|
|
53
|
-
if (typeof WeakMap !== "function") return null;
|
|
54
|
-
var cacheBabelInterop = new WeakMap();
|
|
55
|
-
var cacheNodeInterop = new WeakMap();
|
|
56
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
57
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
58
|
-
})(nodeInterop);
|
|
59
|
-
}
|
|
60
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
|
61
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
|
62
|
-
return obj;
|
|
63
|
-
}
|
|
64
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
65
|
-
return {
|
|
66
|
-
default: obj
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
|
70
|
-
if (cache && cache.has(obj)) {
|
|
71
|
-
return cache.get(obj);
|
|
72
|
-
}
|
|
73
|
-
var newObj = {
|
|
74
|
-
__proto__: null
|
|
75
|
-
};
|
|
76
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
77
|
-
for(var key in obj){
|
|
78
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
79
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
80
|
-
if (desc && (desc.get || desc.set)) {
|
|
81
|
-
Object.defineProperty(newObj, key, desc);
|
|
82
|
-
} else {
|
|
83
|
-
newObj[key] = obj[key];
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
newObj.default = obj;
|
|
88
|
-
if (cache) {
|
|
89
|
-
cache.set(obj, newObj);
|
|
90
|
-
}
|
|
91
|
-
return newObj;
|
|
92
|
-
}
|
|
93
|
-
var _ArrayAssigment;
|
|
94
|
-
var stepArrayAssignmentNodeQuery = (0, _query.nodeQuery)("/step/arrayAssignment");
|
|
95
|
-
var _default = (0, _dom.domAssigned)((_ArrayAssigment = /*#__PURE__*/ function() {
|
|
96
|
-
function ArrayAssigment(string, variable, parameters) {
|
|
97
|
-
_class_call_check(this, ArrayAssigment);
|
|
98
|
-
this.string = string;
|
|
99
|
-
this.variable = variable;
|
|
100
|
-
this.parameters = parameters;
|
|
101
|
-
}
|
|
102
|
-
_create_class(ArrayAssigment, [
|
|
103
|
-
{
|
|
104
|
-
key: "getString",
|
|
105
|
-
value: function getString() {
|
|
106
|
-
return this.string;
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
key: "getVariable",
|
|
111
|
-
value: function getVariable() {
|
|
112
|
-
return this.variable;
|
|
113
|
-
}
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
key: "getVariables",
|
|
117
|
-
value: function getVariables() {
|
|
118
|
-
return this.parameters;
|
|
119
|
-
}
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
key: "evaluate",
|
|
123
|
-
value: function evaluate(context) {
|
|
124
|
-
var _this = this;
|
|
125
|
-
var arrayAssignmentString = this.string; ///
|
|
126
|
-
context.trace("Evaluating the '".concat(arrayAssignmentString, "' array assignment..."));
|
|
127
|
-
var expression = this.variable.evaluate(context), expressionType = expression.getType();
|
|
128
|
-
if (expressionType !== _types.NODES_TYPE) {
|
|
129
|
-
var expressionString = expression.asString(context), message = "The ".concat(expressionString, " expression's '").concat(expressionType, "' type should be '").concat(_types.NODES_TYPE, "'."), exception = _exception.default.fromMessage(message);
|
|
130
|
-
throw exception;
|
|
131
|
-
}
|
|
132
|
-
var nodes = expression.getNodes(), nodesLength = nodes.length, parametersLength = this.parameters.getLength();
|
|
133
|
-
if (parametersLength > nodesLength) {
|
|
134
|
-
var parametersString = this.parameters.getString(), nodesString = context.nodesAsString(nodex), message1 = "The length of the '".concat(parametersString, "' parameters is greater than the length of the '").concat(nodesString, "' nodes."), exception1 = _exception.default.fromMessage(message1);
|
|
135
|
-
throw exception1;
|
|
136
|
-
}
|
|
137
|
-
this.parameters.forEachParameter(function(parameter, index) {
|
|
138
|
-
if (parameter !== null) {
|
|
139
|
-
var Expression = _dom.default.Expression, node = nodes[index], expression = Expression.fromNode(node, context);
|
|
140
|
-
_this.evaluateParameter(parameter, expression, context);
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
context.debug("...evaluated the '".concat(arrayAssignmentString, "' array assignment."));
|
|
144
|
-
}
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
key: "evaluateParameter",
|
|
148
|
-
value: function evaluateParameter(parameter, expression, context) {
|
|
149
|
-
var expressionString = expression.asString(context), parameterString = parameter.getString();
|
|
150
|
-
context.trace("Evaluating the '".concat(parameterString, "' parameter against the ").concat(expressionString, " expression..."));
|
|
151
|
-
var parameterType = parameter.getType();
|
|
152
|
-
if (parameterType !== _types.NODE_TYPE) {
|
|
153
|
-
var message = "The type of the '".concat(parameterString, "' parameter should be '").concat(_types.NODE_TYPE, "'."), exception = _exception.default.fromMessage(message);
|
|
154
|
-
throw exception;
|
|
155
|
-
}
|
|
156
|
-
var Variable = _dom.default.Variable, variable = Variable.fromParameter(parameter, context);
|
|
157
|
-
variable.assign(expression, context);
|
|
158
|
-
context.debug("...evaluated the '".concat(parameterString, "' parameter against the ").concat(expressionString, " expression."));
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
], [
|
|
162
|
-
{
|
|
163
|
-
key: "fromStepNode",
|
|
164
|
-
value: function fromStepNode(stepNode, context) {
|
|
165
|
-
var arrayAssignment = null;
|
|
166
|
-
var stepArrayAssignmentNode = stepArrayAssignmentNodeQuery(stepNode);
|
|
167
|
-
if (stepArrayAssignmentNode !== null) {
|
|
168
|
-
var arrayAssignmentNode = stepArrayAssignmentNode; ///
|
|
169
|
-
arrayAssignment = arrayAssignmentFromArrayAssignmentNode(arrayAssignmentNode, context);
|
|
170
|
-
}
|
|
171
|
-
return arrayAssignment;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
]);
|
|
175
|
-
return ArrayAssigment;
|
|
176
|
-
}(), _define_property(_ArrayAssigment, "name", "ArrayAssignment"), _ArrayAssigment));
|
|
177
|
-
function arrayAssignmentFromArrayAssignmentNode(arrayAssignmentNode, context) {
|
|
178
|
-
var Variable = _dom.default.Variable, Parameters = _dom.default.Parameters, ArrayAssignment = _dom.default.ArrayAssignment, parameters = Parameters.fromArrayAssignmentNode(arrayAssignmentNode, context), variable = Variable.fromArrayAssignmentNode(arrayAssignmentNode, context), string = stringFromVariableAndParameters(variable, parameters, context), arrayAssignment = new ArrayAssignment(string, variable, parameters);
|
|
179
|
-
return arrayAssignment;
|
|
180
|
-
}
|
|
181
|
-
function stringFromVariableAndParameters(variable, parameters, context) {
|
|
182
|
-
var variableString = variable.getString(), parametersString = parameters.getString(), string = "[ ".concat(parametersString, " ] = ").concat(variableString, ";");
|
|
183
|
-
return string;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kb20vYXNzaWdubWVudC9hcnJheS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vLi4vZG9tXCI7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gXCIuLi8uLi9leGNlcHRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgZG9tQXNzaWduZWQgfSBmcm9tIFwiLi4vLi4vZG9tXCI7XG5pbXBvcnQgeyBOT0RFX1RZUEUsIE5PREVTX1RZUEUgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuY29uc3Qgc3RlcEFycmF5QXNzaWdubWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGVwL2FycmF5QXNzaWdubWVudFwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZG9tQXNzaWduZWQoY2xhc3MgQXJyYXlBc3NpZ21lbnQge1xuICBjb25zdHJ1Y3RvcihzdHJpbmcsIHZhcmlhYmxlLCBwYXJhbWV0ZXJzKSB7XG4gICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG4gICAgdGhpcy52YXJpYWJsZSA9IHZhcmlhYmxlO1xuICAgIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gIH1cblxuICBnZXRTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nO1xuICB9XG5cbiAgZ2V0VmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGU7XG4gIH1cblxuICBnZXRWYXJpYWJsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycztcbiAgfVxuXG4gIGV2YWx1YXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBhcnJheUFzc2lnbm1lbnRTdHJpbmcgPSB0aGlzLnN0cmluZzsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBFdmFsdWF0aW5nIHRoZSAnJHthcnJheUFzc2lnbm1lbnRTdHJpbmd9JyBhcnJheSBhc3NpZ25tZW50Li4uYCk7XG5cbiAgICBjb25zdCBleHByZXNzaW9uID0gdGhpcy52YXJpYWJsZS5ldmFsdWF0ZShjb250ZXh0KSxcbiAgICAgICAgICBleHByZXNzaW9uVHlwZSA9IGV4cHJlc3Npb24uZ2V0VHlwZSgpO1xuXG4gICAgaWYgKGV4cHJlc3Npb25UeXBlICE9PSBOT0RFU19UWVBFKSB7XG4gICAgICBjb25zdCBleHByZXNzaW9uU3RyaW5nID0gZXhwcmVzc2lvbi5hc1N0cmluZyhjb250ZXh0KSxcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgVGhlICR7ZXhwcmVzc2lvblN0cmluZ30gZXhwcmVzc2lvbidzICcke2V4cHJlc3Npb25UeXBlfScgdHlwZSBzaG91bGQgYmUgJyR7Tk9ERVNfVFlQRX0nLmAsXG4gICAgICAgICAgICBleGNlcHRpb24gPSBFeGNlcHRpb24uZnJvbU1lc3NhZ2UobWVzc2FnZSk7XG5cbiAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlcyA9IGV4cHJlc3Npb24uZ2V0Tm9kZXMoKSxcbiAgICAgICAgICBub2Rlc0xlbmd0aCA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgICBwYXJhbWV0ZXJzTGVuZ3RoID0gdGhpcy5wYXJhbWV0ZXJzLmdldExlbmd0aCgpO1xuXG4gICAgaWYgKHBhcmFtZXRlcnNMZW5ndGggPiBub2Rlc0xlbmd0aCkge1xuICAgICAgY29uc3QgcGFyYW1ldGVyc1N0cmluZyA9IHRoaXMucGFyYW1ldGVycy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIG5vZGVzU3RyaW5nID0gY29udGV4dC5ub2Rlc0FzU3RyaW5nKG5vZGV4KSxcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgVGhlIGxlbmd0aCBvZiB0aGUgJyR7cGFyYW1ldGVyc1N0cmluZ30nIHBhcmFtZXRlcnMgaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlICcke25vZGVzU3RyaW5nfScgbm9kZXMuYCxcbiAgICAgICAgICAgIGV4Y2VwdGlvbiA9IEV4Y2VwdGlvbi5mcm9tTWVzc2FnZShtZXNzYWdlKTtcblxuICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgIH1cblxuICAgIHRoaXMucGFyYW1ldGVycy5mb3JFYWNoUGFyYW1ldGVyKChwYXJhbWV0ZXIsIGluZGV4KSA9PiB7XG4gICAgICBpZiAocGFyYW1ldGVyICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHsgRXhwcmVzc2lvbiB9ID0gZG9tLFxuICAgICAgICAgICAgICBub2RlID0gbm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgICBleHByZXNzaW9uID0gRXhwcmVzc2lvbi5mcm9tTm9kZShub2RlLCBjb250ZXh0KTtcblxuICAgICAgICB0aGlzLmV2YWx1YXRlUGFyYW1ldGVyKHBhcmFtZXRlciwgZXhwcmVzc2lvbiwgY29udGV4dCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5ldmFsdWF0ZWQgdGhlICcke2FycmF5QXNzaWdubWVudFN0cmluZ30nIGFycmF5IGFzc2lnbm1lbnQuYCk7XG4gIH1cblxuICBldmFsdWF0ZVBhcmFtZXRlcihwYXJhbWV0ZXIsIGV4cHJlc3Npb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCBleHByZXNzaW9uU3RyaW5nID0gZXhwcmVzc2lvbi5hc1N0cmluZyhjb250ZXh0KSxcbiAgICAgICAgICBwYXJhbWV0ZXJTdHJpbmcgPSBwYXJhbWV0ZXIuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBFdmFsdWF0aW5nIHRoZSAnJHtwYXJhbWV0ZXJTdHJpbmd9JyBwYXJhbWV0ZXIgYWdhaW5zdCB0aGUgJHtleHByZXNzaW9uU3RyaW5nfSBleHByZXNzaW9uLi4uYCk7XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJUeXBlID0gcGFyYW1ldGVyLmdldFR5cGUoKTtcblxuICAgIGlmIChwYXJhbWV0ZXJUeXBlICE9PSBOT0RFX1RZUEUpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgVGhlIHR5cGUgb2YgdGhlICcke3BhcmFtZXRlclN0cmluZ30nIHBhcmFtZXRlciBzaG91bGQgYmUgJyR7Tk9ERV9UWVBFfScuYCxcbiAgICAgICAgICAgIGV4Y2VwdGlvbiA9IEV4Y2VwdGlvbi5mcm9tTWVzc2FnZShtZXNzYWdlKTtcblxuICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IHsgVmFyaWFibGUgfSA9IGRvbSxcbiAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21QYXJhbWV0ZXIocGFyYW1ldGVyLCBjb250ZXh0KTtcblxuICAgIHZhcmlhYmxlLmFzc2lnbihleHByZXNzaW9uLCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmV2YWx1YXRlZCB0aGUgJyR7cGFyYW1ldGVyU3RyaW5nfScgcGFyYW1ldGVyIGFnYWluc3QgdGhlICR7ZXhwcmVzc2lvblN0cmluZ30gZXhwcmVzc2lvbi5gKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJBcnJheUFzc2lnbm1lbnRcIjtcblxuICBzdGF0aWMgZnJvbVN0ZXBOb2RlKHN0ZXBOb2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IGFycmF5QXNzaWdubWVudCA9IG51bGw7XG5cbiAgICBjb25zdCBzdGVwQXJyYXlBc3NpZ25tZW50Tm9kZSA9IHN0ZXBBcnJheUFzc2lnbm1lbnROb2RlUXVlcnkoc3RlcE5vZGUpO1xuXG4gICAgaWYgKHN0ZXBBcnJheUFzc2lnbm1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBhcnJheUFzc2lnbm1lbnROb2RlID0gc3RlcEFycmF5QXNzaWdubWVudE5vZGU7ICAvLy9cblxuICAgICAgYXJyYXlBc3NpZ25tZW50ID0gYXJyYXlBc3NpZ25tZW50RnJvbUFycmF5QXNzaWdubWVudE5vZGUoYXJyYXlBc3NpZ25tZW50Tm9kZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycmF5QXNzaWdubWVudDtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGFycmF5QXNzaWdubWVudEZyb21BcnJheUFzc2lnbm1lbnROb2RlKGFycmF5QXNzaWdubWVudE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBWYXJpYWJsZSwgUGFyYW1ldGVycywgQXJyYXlBc3NpZ25tZW50IH0gPSBkb20sXG4gICAgICAgIHBhcmFtZXRlcnMgPSBQYXJhbWV0ZXJzLmZyb21BcnJheUFzc2lnbm1lbnROb2RlKGFycmF5QXNzaWdubWVudE5vZGUsIGNvbnRleHQpLFxuICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21BcnJheUFzc2lnbm1lbnROb2RlKGFycmF5QXNzaWdubWVudE5vZGUsIGNvbnRleHQpLFxuICAgICAgICBzdHJpbmcgPSBzdHJpbmdGcm9tVmFyaWFibGVBbmRQYXJhbWV0ZXJzKHZhcmlhYmxlLCBwYXJhbWV0ZXJzLCBjb250ZXh0KSxcbiAgICAgICAgYXJyYXlBc3NpZ25tZW50ID0gbmV3IEFycmF5QXNzaWdubWVudChzdHJpbmcsIHZhcmlhYmxlLCBwYXJhbWV0ZXJzKTtcblxuICByZXR1cm4gYXJyYXlBc3NpZ25tZW50O1xufVxuXG5mdW5jdGlvbiBzdHJpbmdGcm9tVmFyaWFibGVBbmRQYXJhbWV0ZXJzKHZhcmlhYmxlLCBwYXJhbWV0ZXJzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzLmdldFN0cmluZygpLFxuICAgICAgICBzdHJpbmcgPSBgWyAke3BhcmFtZXRlcnNTdHJpbmd9IF0gPSAke3ZhcmlhYmxlU3RyaW5nfTtgO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG4iXSwibmFtZXMiOlsic3RlcEFycmF5QXNzaWdubWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImRvbUFzc2lnbmVkIiwiQXJyYXlBc3NpZ21lbnQiLCJzdHJpbmciLCJ2YXJpYWJsZSIsInBhcmFtZXRlcnMiLCJnZXRTdHJpbmciLCJnZXRWYXJpYWJsZSIsImdldFZhcmlhYmxlcyIsImV2YWx1YXRlIiwiY29udGV4dCIsImFycmF5QXNzaWdubWVudFN0cmluZyIsInRyYWNlIiwiZXhwcmVzc2lvbiIsImV4cHJlc3Npb25UeXBlIiwiZ2V0VHlwZSIsIk5PREVTX1RZUEUiLCJleHByZXNzaW9uU3RyaW5nIiwiYXNTdHJpbmciLCJtZXNzYWdlIiwiZXhjZXB0aW9uIiwiRXhjZXB0aW9uIiwiZnJvbU1lc3NhZ2UiLCJub2RlcyIsImdldE5vZGVzIiwibm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJwYXJhbWV0ZXJzTGVuZ3RoIiwiZ2V0TGVuZ3RoIiwicGFyYW1ldGVyc1N0cmluZyIsIm5vZGVzU3RyaW5nIiwibm9kZXNBc1N0cmluZyIsIm5vZGV4IiwiZm9yRWFjaFBhcmFtZXRlciIsInBhcmFtZXRlciIsImluZGV4IiwiRXhwcmVzc2lvbiIsImRvbSIsIm5vZGUiLCJmcm9tTm9kZSIsImV2YWx1YXRlUGFyYW1ldGVyIiwiZGVidWciLCJwYXJhbWV0ZXJTdHJpbmciLCJwYXJhbWV0ZXJUeXBlIiwiTk9ERV9UWVBFIiwiVmFyaWFibGUiLCJmcm9tUGFyYW1ldGVyIiwiYXNzaWduIiwiZnJvbVN0ZXBOb2RlIiwic3RlcE5vZGUiLCJhcnJheUFzc2lnbm1lbnQiLCJzdGVwQXJyYXlBc3NpZ25tZW50Tm9kZSIsImFycmF5QXNzaWdubWVudE5vZGUiLCJhcnJheUFzc2lnbm1lbnRGcm9tQXJyYXlBc3NpZ25tZW50Tm9kZSIsIm5hbWUiLCJQYXJhbWV0ZXJzIiwiQXJyYXlBc3NpZ25tZW50IiwiZnJvbUFycmF5QXNzaWdubWVudE5vZGUiLCJzdHJpbmdGcm9tVmFyaWFibGVBbmRQYXJhbWV0ZXJzIiwidmFyaWFibGVTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVdBOzs7ZUFBQTs7OzJEQVRnQjtnRUFDTTtxQkFFSTtxQkFFWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|