occam-languages 2.1.10 → 2.1.12
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/lib/index.js +1 -9
- package/package.json +1 -1
- package/src/index.js +0 -2
- package/lib/pass/forward.js +0 -87
- package/lib/pass/forwardZip.js +0 -96
- package/src/pass/forward.js +0 -118
- package/src/pass/forwardZip.js +0 -141
package/lib/index.js
CHANGED
|
@@ -30,12 +30,6 @@ _export(exports, {
|
|
|
30
30
|
get FileContext () {
|
|
31
31
|
return _file.default;
|
|
32
32
|
},
|
|
33
|
-
get ForwardPass () {
|
|
34
|
-
return _forward.default;
|
|
35
|
-
},
|
|
36
|
-
get ForwardZipPass () {
|
|
37
|
-
return _forwardZip.default;
|
|
38
|
-
},
|
|
39
33
|
get FurtleLexer () {
|
|
40
34
|
return _lexer.default;
|
|
41
35
|
},
|
|
@@ -102,8 +96,6 @@ const _file = /*#__PURE__*/ _interop_require_default(require("./context/file"));
|
|
|
102
96
|
const _release = /*#__PURE__*/ _interop_require_default(require("./context/release"));
|
|
103
97
|
const _zip = /*#__PURE__*/ _interop_require_default(require("./pass/zip"));
|
|
104
98
|
const _simple = /*#__PURE__*/ _interop_require_default(require("./pass/simple"));
|
|
105
|
-
const _forward = /*#__PURE__*/ _interop_require_default(require("./pass/forward"));
|
|
106
|
-
const _forwardZip = /*#__PURE__*/ _interop_require_default(require("./pass/forwardZip"));
|
|
107
99
|
const _equivalence = /*#__PURE__*/ _interop_require_default(require("./pass/equivalence"));
|
|
108
100
|
const _continuation = /*#__PURE__*/ _interop_require_default(require("./pass/continuation"));
|
|
109
101
|
const _continuationZip = /*#__PURE__*/ _interop_require_default(require("./pass/continuationZip"));
|
|
@@ -128,4 +120,4 @@ function _interop_require_default(obj) {
|
|
|
128
120
|
};
|
|
129
121
|
}
|
|
130
122
|
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQnJlYWtQb2ludCB9IGZyb20gXCIuL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L2ZpbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L3JlbGVhc2VcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBaaXBQYXNzIH0gZnJvbSBcIi4vcGFzcy96aXBcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU2ltcGxlUGFzcyB9IGZyb20gXCIuL3Bhc3Mvc2ltcGxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVxdWl2YWxlbmNlUGFzcyB9IGZyb20gXCIuL3Bhc3MvZXF1aXZhbGVuY2VcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGludWF0aW9uUGFzcyB9IGZyb20gXCIuL3Bhc3MvY29udGludWF0aW9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENvbnRpbnVhdGlvblppcFBhc3MgfSBmcm9tIFwiLi9wYXNzL2NvbnRpbnVhdGlvblppcFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIEZ1cnRsZUxleGVyIH0gZnJvbSBcIi4vZnVydGxlL2xleGVyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZ1cnRsZVBhcnNlciB9IGZyb20gXCIuL2Z1cnRsZS9wYXJzZXJcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTm9taW5hbExleGVyIH0gZnJvbSBcIi4vbm9taW5hbC9sZXhlclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb21pbmFsUGFyc2VyIH0gZnJvbSBcIi4vbm9taW5hbC9wYXJzZXJcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb25UZXJtaW5hbE5vZGUgfSBmcm9tIFwiLi9ub25UZXJtaW5hbE5vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlTWl4aW5zIH0gZnJvbSBcIi4vbWl4aW5zL25vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBibmZVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYm5mXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vZGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvbm9kZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmdXJ0bGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZnVydGxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vbWluYWxVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvbm9taW5hbFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsZUNvbnRleHRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZUNvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB2ZXJpZmljYXRpb25VdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvdmVyaWZpY2F0aW9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VDb250ZXh0XCI7XG4iXSwibmFtZXMiOlsiQnJlYWtQb2ludCIsIkNvbnRleHQiLCJDb250aW51YXRpb25QYXNzIiwiQ29udGludWF0aW9uWmlwUGFzcyIsIkVsZW1lbnQiLCJFcXVpdmFsZW5jZVBhc3MiLCJGaWxlQ29udGV4dCIsIkZ1cnRsZUxleGVyIiwiRnVydGxlUGFyc2VyIiwiTG9nIiwiTm9taW5hbExleGVyIiwiTm9taW5hbFBhcnNlciIsIk5vblRlcm1pbmFsTm9kZSIsIlJlbGVhc2VDb250ZXh0IiwiU2ltcGxlUGFzcyIsIlppcFBhc3MiLCJibmZVdGlsaXRpZXMiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZmlsZUNvbnRleHRVdGlsaXRpZXMiLCJmdXJ0bGVVdGlsaXRpZXMiLCJub2RlTWl4aW5zIiwibm9kZVV0aWxpdGllcyIsIm5vbWluYWxVdGlsaXRpZXMiLCJyZWxlYXNlQ29udGV4dFV0aWxpdGllcyIsInZlcmlmaWNhdGlvblV0aWxpdGllcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBS29CQTtlQUFBQSxtQkFBVTs7UUFEVkM7ZUFBQUEsZ0JBQU87O1FBUVBDO2VBQUFBLHFCQUFnQjs7UUFDaEJDO2VBQUFBLHdCQUFtQjs7UUFWbkJDO2VBQUFBLGdCQUFPOztRQVFQQztlQUFBQSxvQkFBZTs7UUFMZkM7ZUFBQUEsYUFBVzs7UUFTWEM7ZUFBQUEsY0FBVzs7UUFDWEM7ZUFBQUEsZUFBWTs7UUFkWkM7ZUFBQUEsWUFBRzs7UUFlSEM7ZUFBQUEsZUFBWTs7UUFDWkM7ZUFBQUEsZ0JBQWE7O1FBRWJDO2VBQUFBLHdCQUFlOztRQWJmQztlQUFBQSxnQkFBYzs7UUFHZEM7ZUFBQUEsZUFBVTs7UUFEVkM7ZUFBQUEsWUFBTzs7UUFlUEM7ZUFBQUEsWUFBWTs7UUFJWkM7ZUFBQUEsb0JBQW1COztRQUVuQkM7ZUFBQUEsc0JBQXFCOztRQURyQkM7ZUFBQUEsb0JBQW9COztRQUhwQkM7ZUFBQUEsZUFBZTs7UUFKZkM7ZUFBQUEsYUFBVTs7UUFHVkM7ZUFBQUEsY0FBYTs7UUFFYkM7ZUFBQUEsZ0JBQWdCOztRQUtoQkM7ZUFBQUEsdUJBQXVCOztRQUR2QkM7ZUFBQUEscUJBQXFCOzs7NERBN0JWO2dFQUNJO2dFQUNBO21FQUNHOzZEQUNDO2dFQUNHOzREQUVQOytEQUNHO29FQUNLO3FFQUNDO3dFQUNHOzhEQUVSOytEQUNDOytEQUNBO2dFQUNDO3dFQUVFOzZEQUVMOzREQUVFOzhEQUNDOytEQUNFO2dFQUNDO29FQUNHO29FQUNDO3NFQUNDO3FFQUNBO3VFQUNFIn0=
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -9,8 +9,6 @@ export { default as ReleaseContext } from "./context/release";
|
|
|
9
9
|
|
|
10
10
|
export { default as ZipPass } from "./pass/zip";
|
|
11
11
|
export { default as SimplePass } from "./pass/simple";
|
|
12
|
-
export { default as ForwardPass } from "./pass/forward";
|
|
13
|
-
export { default as ForwardZipPass } from "./pass/forwardZip";
|
|
14
12
|
export { default as EquivalencePass } from "./pass/equivalence";
|
|
15
13
|
export { default as ContinuationPass } from "./pass/continuation";
|
|
16
14
|
export { default as ContinuationZipPass } from "./pass/continuationZip";
|
package/lib/pass/forward.js
DELETED
|
@@ -1,87 +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 ForwardPass;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _pass = require("../utilities/pass");
|
|
12
|
-
class ForwardPass {
|
|
13
|
-
run(node, ...remainingArguments) {
|
|
14
|
-
let success;
|
|
15
|
-
const visited = this.visitNode(node, ...remainingArguments);
|
|
16
|
-
success = visited; ///
|
|
17
|
-
return success;
|
|
18
|
-
}
|
|
19
|
-
descend(index, childNodes, ...remainingArguments) {
|
|
20
|
-
let descendedForward = false;
|
|
21
|
-
const descendForward = remainingArguments.pop(), childNodesLength = childNodes.length;
|
|
22
|
-
if (index === childNodesLength) {
|
|
23
|
-
descendedForward = descendForward();
|
|
24
|
-
} else {
|
|
25
|
-
const childNode = childNodes[index], node = childNode, visited = this.visitNode(node, ...remainingArguments, ()=>{
|
|
26
|
-
remainingArguments.push(descendForward);
|
|
27
|
-
const aheadIndex = index + 1, descendedForward = this.descend(aheadIndex, childNodes, ...remainingArguments);
|
|
28
|
-
return descendedForward;
|
|
29
|
-
});
|
|
30
|
-
if (visited) {
|
|
31
|
-
descendedForward = true;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return descendedForward;
|
|
35
|
-
}
|
|
36
|
-
visitNode(node, ...remainingArguments) {
|
|
37
|
-
let visited;
|
|
38
|
-
const nodeTerminalNode = node.isTerminalNode();
|
|
39
|
-
if (nodeTerminalNode) {
|
|
40
|
-
const terminalNode = node; ///
|
|
41
|
-
visited = this.visitTerminalNode(terminalNode, ...remainingArguments);
|
|
42
|
-
} else {
|
|
43
|
-
const nonTerminalNode = node; ///
|
|
44
|
-
visited = this.visitNonTerminalNode(nonTerminalNode, ...remainingArguments);
|
|
45
|
-
}
|
|
46
|
-
return visited;
|
|
47
|
-
}
|
|
48
|
-
visitTerminalNode(terminalNode, ...remainingArguments) {
|
|
49
|
-
let visited = false;
|
|
50
|
-
const descendForward = remainingArguments.pop(), descendedForward = descendForward();
|
|
51
|
-
if (descendedForward) {
|
|
52
|
-
visited = true;
|
|
53
|
-
}
|
|
54
|
-
remainingArguments.push(descendForward);
|
|
55
|
-
return visited;
|
|
56
|
-
}
|
|
57
|
-
visitNonTerminalNode(nonTerminalNode, ...remainingArguments) {
|
|
58
|
-
let visited = false;
|
|
59
|
-
let { maps } = this.constructor;
|
|
60
|
-
maps = [
|
|
61
|
-
...maps,
|
|
62
|
-
{
|
|
63
|
-
nodeQuery: _pass.nonTerminalNodeQuery,
|
|
64
|
-
run: (node, ...remainingArguments)=>{
|
|
65
|
-
let visited = false;
|
|
66
|
-
const index = 0, childNodes = nonTerminalNode.getChildNodes(), descended = this.descend(index, childNodes, ...remainingArguments);
|
|
67
|
-
if (descended) {
|
|
68
|
-
visited = true;
|
|
69
|
-
}
|
|
70
|
-
return visited;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
];
|
|
74
|
-
maps.some((map)=>{
|
|
75
|
-
const { nodeQuery, run } = map;
|
|
76
|
-
const node = nodeQuery(nonTerminalNode);
|
|
77
|
-
if (node !== null) {
|
|
78
|
-
const success = run(node, ...remainingArguments);
|
|
79
|
-
visited = success;
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
return visited;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL2ZvcndhcmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vblRlcm1pbmFsTm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9wYXNzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvcndhcmRQYXNzIHtcbiAgcnVuKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgY29uc3QgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBzdWNjZXNzID0gdmlzaXRlZDsgIC8vL1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICBkZXNjZW5kKGluZGV4LCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgZGVzY2VuZGVkRm9yd2FyZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZGVzY2VuZEZvcndhcmQgPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXNMZW5ndGggPSBjaGlsZE5vZGVzLmxlbmd0aDtcblxuICAgIGlmIChpbmRleCA9PT0gY2hpbGROb2Rlc0xlbmd0aCkge1xuICAgICAgZGVzY2VuZGVkRm9yd2FyZCA9IGRlc2NlbmRGb3J3YXJkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IGNoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbm9kZSA9IGNoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICB2aXNpdGVkID0gdGhpcy52aXNpdE5vZGUobm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAoKSA9PiB7XG4gICAgICAgICAgICAgIHJlbWFpbmluZ0FyZ3VtZW50cy5wdXNoKGRlc2NlbmRGb3J3YXJkKTtcblxuICAgICAgICAgICAgICBjb25zdCBhaGVhZEluZGV4ID0gaW5kZXggKyAxLFxuICAgICAgICAgICAgICAgICAgICBkZXNjZW5kZWRGb3J3YXJkID0gdGhpcy5kZXNjZW5kKGFoZWFkSW5kZXgsIGNoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGRlc2NlbmRlZEZvcndhcmQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgaWYgKHZpc2l0ZWQpIHtcbiAgICAgICAgZGVzY2VuZGVkRm9yd2FyZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc2NlbmRlZEZvcndhcmQ7XG4gIH1cblxuICB2aXNpdE5vZGUobm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQ7XG5cbiAgICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXRUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxuXG4gIHZpc2l0VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlc2NlbmRGb3J3YXJkID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpLCAvLy9cbiAgICAgICAgICBkZXNjZW5kZWRGb3J3YXJkID0gZGVzY2VuZEZvcndhcmQoKTtcblxuICAgIGlmIChkZXNjZW5kZWRGb3J3YXJkKSB7XG4gICAgICB2aXNpdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZW1haW5pbmdBcmd1bWVudHMucHVzaChkZXNjZW5kRm9yd2FyZCk7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxuXG4gIHZpc2l0Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGxldCB7IG1hcHMgfSA9IHRoaXMuY29uc3RydWN0b3I7XG5cbiAgICBtYXBzID0gWyAvLy9cbiAgICAgIC4uLm1hcHMsXG4gICAgICB7XG4gICAgICAgIG5vZGVRdWVyeTogbm9uVGVybWluYWxOb2RlUXVlcnksXG4gICAgICAgIHJ1bjogKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykgPT4ge1xuICAgICAgICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICAgICAgICBjb25zdCBpbmRleCA9IDAsXG4gICAgICAgICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksIC8vL1xuICAgICAgICAgICAgICAgIGRlc2NlbmRlZCA9IHRoaXMuZGVzY2VuZChpbmRleCwgY2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgIGlmIChkZXNjZW5kZWQpIHtcbiAgICAgICAgICAgIHZpc2l0ZWQgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2aXNpdGVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuXG4gICAgbWFwcy5zb21lKChtYXApID0+IHtcbiAgICAgIGNvbnN0IHsgbm9kZVF1ZXJ5LCBydW4gfSA9IG1hcDtcblxuICAgICAgY29uc3Qgbm9kZSA9IG5vZGVRdWVyeShub25UZXJtaW5hbE5vZGUpO1xuXG4gICAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBzdWNjZXNzID0gcnVuKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgdmlzaXRlZCA9IHN1Y2Nlc3M7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkZvcndhcmRQYXNzIiwicnVuIiwibm9kZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsInN1Y2Nlc3MiLCJ2aXNpdGVkIiwidmlzaXROb2RlIiwiZGVzY2VuZCIsImluZGV4IiwiY2hpbGROb2RlcyIsImRlc2NlbmRlZEZvcndhcmQiLCJkZXNjZW5kRm9yd2FyZCIsInBvcCIsImNoaWxkTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJjaGlsZE5vZGUiLCJwdXNoIiwiYWhlYWRJbmRleCIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsInZpc2l0VGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwidmlzaXROb25UZXJtaW5hbE5vZGUiLCJtYXBzIiwibm9kZVF1ZXJ5Iiwibm9uVGVybWluYWxOb2RlUXVlcnkiLCJnZXRDaGlsZE5vZGVzIiwiZGVzY2VuZGVkIiwic29tZSIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSUE7OztlQUFxQkE7OztzQkFGZ0I7QUFFdEIsTUFBTUE7SUFDbkJDLElBQUlDLElBQUksRUFBRSxHQUFHQyxrQkFBa0IsRUFBRTtRQUMvQixJQUFJQztRQUVKLE1BQU1DLFVBQVUsSUFBSSxDQUFDQyxTQUFTLENBQUNKLFNBQVNDO1FBRXhDQyxVQUFVQyxTQUFVLEdBQUc7UUFFdkIsT0FBT0Q7SUFDVDtJQUVBRyxRQUFRQyxLQUFLLEVBQUVDLFVBQVUsRUFBRSxHQUFHTixrQkFBa0IsRUFBRTtRQUNoRCxJQUFJTyxtQkFBbUI7UUFFdkIsTUFBTUMsaUJBQWlCUixtQkFBbUJTLEdBQUcsSUFDdkNDLG1CQUFtQkosV0FBV0ssTUFBTTtRQUUxQyxJQUFJTixVQUFVSyxrQkFBa0I7WUFDOUJILG1CQUFtQkM7UUFDckIsT0FBTztZQUNMLE1BQU1JLFlBQVlOLFVBQVUsQ0FBQ0QsTUFBTSxFQUM3Qk4sT0FBT2EsV0FDUFYsVUFBVSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0osU0FBU0Msb0JBQW9CO2dCQUNwREEsbUJBQW1CYSxJQUFJLENBQUNMO2dCQUV4QixNQUFNTSxhQUFhVCxRQUFRLEdBQ3JCRSxtQkFBbUIsSUFBSSxDQUFDSCxPQUFPLENBQUNVLFlBQVlSLGVBQWVOO2dCQUVqRSxPQUFPTztZQUNUO1lBRU4sSUFBSUwsU0FBUztnQkFDWEssbUJBQW1CO1lBQ3JCO1FBQ0Y7UUFFQSxPQUFPQTtJQUNUO0lBRUFKLFVBQVVKLElBQUksRUFBRSxHQUFHQyxrQkFBa0IsRUFBRTtRQUNyQyxJQUFJRTtRQUVKLE1BQU1hLG1CQUFtQmhCLEtBQUtpQixjQUFjO1FBRTVDLElBQUlELGtCQUFrQjtZQUNwQixNQUFNRSxlQUFlbEIsTUFBTyxHQUFHO1lBRS9CRyxVQUFVLElBQUksQ0FBQ2dCLGlCQUFpQixDQUFDRCxpQkFBaUJqQjtRQUNwRCxPQUFPO1lBQ0wsTUFBTW1CLGtCQUFrQnBCLE1BQU8sR0FBRztZQUVsQ0csVUFBVSxJQUFJLENBQUNrQixvQkFBb0IsQ0FBQ0Qsb0JBQW9CbkI7UUFDMUQ7UUFFQSxPQUFPRTtJQUNUO0lBRUFnQixrQkFBa0JELFlBQVksRUFBRSxHQUFHakIsa0JBQWtCLEVBQUU7UUFDckQsSUFBSUUsVUFBVTtRQUVkLE1BQU1NLGlCQUFpQlIsbUJBQW1CUyxHQUFHLElBQ3ZDRixtQkFBbUJDO1FBRXpCLElBQUlELGtCQUFrQjtZQUNwQkwsVUFBVTtRQUNaO1FBRUFGLG1CQUFtQmEsSUFBSSxDQUFDTDtRQUV4QixPQUFPTjtJQUNUO0lBRUFrQixxQkFBcUJELGVBQWUsRUFBRSxHQUFHbkIsa0JBQWtCLEVBQUU7UUFDM0QsSUFBSUUsVUFBVTtRQUVkLElBQUksRUFBRW1CLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXO1FBRS9CQSxPQUFPO2VBQ0ZBO1lBQ0g7Z0JBQ0VDLFdBQVdDLDBCQUFvQjtnQkFDL0J6QixLQUFLLENBQUNDLE1BQU0sR0FBR0M7b0JBQ2IsSUFBSUUsVUFBVTtvQkFFZCxNQUFNRyxRQUFRLEdBQ1JDLGFBQWFhLGdCQUFnQkssYUFBYSxJQUMxQ0MsWUFBWSxJQUFJLENBQUNyQixPQUFPLENBQUNDLE9BQU9DLGVBQWVOO29CQUVyRCxJQUFJeUIsV0FBVzt3QkFDYnZCLFVBQVU7b0JBQ1o7b0JBRUEsT0FBT0E7Z0JBQ1Q7WUFDRjtTQUNEO1FBRURtQixLQUFLSyxJQUFJLENBQUMsQ0FBQ0M7WUFDVCxNQUFNLEVBQUVMLFNBQVMsRUFBRXhCLEdBQUcsRUFBRSxHQUFHNkI7WUFFM0IsTUFBTTVCLE9BQU91QixVQUFVSDtZQUV2QixJQUFJcEIsU0FBUyxNQUFNO2dCQUNqQixNQUFNRSxVQUFVSCxJQUFJQyxTQUFTQztnQkFFN0JFLFVBQVVEO2dCQUVWLE9BQU87WUFDVDtRQUNGO1FBRUEsT0FBT0M7SUFDVDtBQUNGIn0=
|
package/lib/pass/forwardZip.js
DELETED
|
@@ -1,96 +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 ForwardZipPass;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _pass = require("../utilities/pass");
|
|
12
|
-
class ForwardZipPass {
|
|
13
|
-
run(generalNode, specificNode, ...remainingArguments) {
|
|
14
|
-
let success;
|
|
15
|
-
const visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
|
|
16
|
-
success = visited; ///
|
|
17
|
-
return success;
|
|
18
|
-
}
|
|
19
|
-
descend(index, generalChildNodes, specificChildNodes, ...remainingArguments) {
|
|
20
|
-
let descendedForward = false;
|
|
21
|
-
const childNodesCongruent = (0, _pass.areChildNodesCongruent)(generalChildNodes, specificChildNodes);
|
|
22
|
-
if (childNodesCongruent) {
|
|
23
|
-
const descendForward = remainingArguments.pop(), generalChildNodesLength = generalChildNodes.length;
|
|
24
|
-
if (index === generalChildNodesLength) {
|
|
25
|
-
descendedForward = descendForward();
|
|
26
|
-
} else {
|
|
27
|
-
const generalChildNode = generalChildNodes[index], specificChildNode = specificChildNodes[index], generalNode = generalChildNode, specificNode = specificChildNode, visited = this.visitNode(generalNode, specificNode, ...remainingArguments, ()=>{
|
|
28
|
-
remainingArguments.push(descendForward);
|
|
29
|
-
const aheadIndex = index + 1, descendedForward = this.descend(aheadIndex, generalChildNodes, specificChildNodes, ...remainingArguments);
|
|
30
|
-
return descendedForward;
|
|
31
|
-
});
|
|
32
|
-
if (visited) {
|
|
33
|
-
descendedForward = true;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return descendedForward;
|
|
38
|
-
}
|
|
39
|
-
visitNode(generalNode, specificNode, ...remainingArguments) {
|
|
40
|
-
let visited = false;
|
|
41
|
-
const generalNodeTerminalNode = generalNode.isTerminalNode(), specificNodeTerminalNode = specificNode.isTerminalNode(), generalNodeNonTerminalNode = generalNode.isNonTerminalNode(), specificNodeNonTerminalNode = specificNode.isNonTerminalNode();
|
|
42
|
-
if (false) {
|
|
43
|
-
///
|
|
44
|
-
} else if (generalNodeTerminalNode && specificNodeTerminalNode) {
|
|
45
|
-
const generalTerminalNode = generalNode, specificTerminalNode = specificNode; ///
|
|
46
|
-
visited = this.visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments);
|
|
47
|
-
} else if (generalNodeNonTerminalNode && specificNodeNonTerminalNode) {
|
|
48
|
-
const generalNonTerminalNode = generalNode, specificNonTerminalNode = specificNode; ///
|
|
49
|
-
visited = this.visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments);
|
|
50
|
-
}
|
|
51
|
-
return visited;
|
|
52
|
-
}
|
|
53
|
-
visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments) {
|
|
54
|
-
let visited = false;
|
|
55
|
-
const descendForward = remainingArguments.pop(), descendedForward = descendForward();
|
|
56
|
-
if (descendedForward) {
|
|
57
|
-
visited = true;
|
|
58
|
-
}
|
|
59
|
-
remainingArguments.push(descendForward);
|
|
60
|
-
return visited;
|
|
61
|
-
}
|
|
62
|
-
visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments) {
|
|
63
|
-
let visited = false;
|
|
64
|
-
let { maps } = this.constructor;
|
|
65
|
-
maps = [
|
|
66
|
-
...maps,
|
|
67
|
-
{
|
|
68
|
-
generalNodeQuery: _pass.nonTerminalNodeQuery,
|
|
69
|
-
specificNodeQuery: _pass.nonTerminalNodeQuery,
|
|
70
|
-
run: (generalNode, specificNode, ...remainingArguments)=>{
|
|
71
|
-
let visited = false;
|
|
72
|
-
const generalNonTerminalNodeRuleName = generalNonTerminalNode.getRuleName(), specificNonTerminalNodeRuleName = specificNonTerminalNode.getRuleName(); ///
|
|
73
|
-
if (generalNonTerminalNodeRuleName === specificNonTerminalNodeRuleName) {
|
|
74
|
-
const index = 0, generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(), specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(), generalChildNodes = generalNonTerminalNodeChildNodes, specificChildNodes = specificNonTerminalNodeChildNodes, descended = this.descend(index, generalChildNodes, specificChildNodes, ...remainingArguments);
|
|
75
|
-
if (descended) {
|
|
76
|
-
visited = true;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return visited;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
];
|
|
83
|
-
maps.some((map)=>{
|
|
84
|
-
const { generalNodeQuery, specificNodeQuery, run } = map;
|
|
85
|
-
const generalNode = generalNodeQuery(generalNonTerminalNode), specificNode = specificNodeQuery(specificNonTerminalNode); ///
|
|
86
|
-
if (generalNode !== null && specificNode !== null) {
|
|
87
|
-
const success = run(generalNode, specificNode, ...remainingArguments);
|
|
88
|
-
visited = success; ///
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
return visited;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL2ZvcndhcmRaaXAuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vblRlcm1pbmFsTm9kZVF1ZXJ5LCBhcmVDaGlsZE5vZGVzQ29uZ3J1ZW50IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9wYXNzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvcndhcmRaaXBQYXNzIHtcbiAgcnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgY29uc3QgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBzdWNjZXNzID0gdmlzaXRlZDsgIC8vL1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICBkZXNjZW5kKGluZGV4LCBnZW5lcmFsQ2hpbGROb2Rlcywgc3BlY2lmaWNDaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgZGVzY2VuZGVkRm9yd2FyZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgY2hpbGROb2Rlc0NvbmdydWVudCA9IGFyZUNoaWxkTm9kZXNDb25ncnVlbnQoZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2Rlcyk7XG5cbiAgICBpZiAoY2hpbGROb2Rlc0NvbmdydWVudCkge1xuICAgICAgY29uc3QgZGVzY2VuZEZvcndhcmQgPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksICAvLy9cbiAgICAgICAgICAgIGdlbmVyYWxDaGlsZE5vZGVzTGVuZ3RoID0gZ2VuZXJhbENoaWxkTm9kZXMubGVuZ3RoO1xuXG4gICAgICBpZiAoaW5kZXggPT09IGdlbmVyYWxDaGlsZE5vZGVzTGVuZ3RoKSB7XG4gICAgICAgIGRlc2NlbmRlZEZvcndhcmQgPSBkZXNjZW5kRm9yd2FyZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZ2VuZXJhbENoaWxkTm9kZSA9IGdlbmVyYWxDaGlsZE5vZGVzW2luZGV4XSxcbiAgICAgICAgICAgICAgc3BlY2lmaWNDaGlsZE5vZGUgPSBzcGVjaWZpY0NoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgICBnZW5lcmFsTm9kZSA9IGdlbmVyYWxDaGlsZE5vZGUsIC8vL1xuICAgICAgICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY0NoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9kZShnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMsICgpID0+IHtcbiAgICAgICAgICAgICAgICByZW1haW5pbmdBcmd1bWVudHMucHVzaChkZXNjZW5kRm9yd2FyZCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBhaGVhZEluZGV4ID0gaW5kZXggKyAxLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NlbmRlZEZvcndhcmQgPSB0aGlzLmRlc2NlbmQoYWhlYWRJbmRleCwgZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBkZXNjZW5kZWRGb3J3YXJkO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAodmlzaXRlZCkge1xuICAgICAgICAgIGRlc2NlbmRlZEZvcndhcmQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc2NlbmRlZEZvcndhcmQ7XG4gIH1cblxuICB2aXNpdE5vZGUoZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGdlbmVyYWxOb2RlVGVybWluYWxOb2RlID0gZ2VuZXJhbE5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICBzcGVjaWZpY05vZGVUZXJtaW5hbE5vZGUgPSBzcGVjaWZpY05vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICBnZW5lcmFsTm9kZU5vblRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLmlzTm9uVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgc3BlY2lmaWNOb2RlTm9uVGVybWluYWxOb2RlID0gc3BlY2lmaWNOb2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAoZ2VuZXJhbE5vZGVUZXJtaW5hbE5vZGUgJiYgc3BlY2lmaWNOb2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBnZW5lcmFsVGVybWluYWxOb2RlID0gZ2VuZXJhbE5vZGUsICAvLy9cbiAgICAgICAgICAgIHNwZWNpZmljVGVybWluYWxOb2RlID0gc3BlY2lmaWNOb2RlOyAgLy8vXG5cbiAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0VGVybWluYWxOb2RlKGdlbmVyYWxUZXJtaW5hbE5vZGUsIHNwZWNpZmljVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgIH0gZWxzZSBpZiAoZ2VuZXJhbE5vZGVOb25UZXJtaW5hbE5vZGUgJiYgc3BlY2lmaWNOb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBnZW5lcmFsTm9uVGVybWluYWxOb2RlID0gZ2VuZXJhbE5vZGUsICAvLy9cbiAgICAgICAgICAgIHNwZWNpZmljTm9uVGVybWluYWxOb2RlID0gc3BlY2lmaWNOb2RlOyAvLy9cblxuICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXROb25UZXJtaW5hbE5vZGUoZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSwgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cblxuICB2aXNpdFRlcm1pbmFsTm9kZShnZW5lcmFsVGVybWluYWxOb2RlLCBzcGVjaWZpY1Rlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlc2NlbmRGb3J3YXJkID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpLCAvLy9cbiAgICAgICAgICBkZXNjZW5kZWRGb3J3YXJkID0gZGVzY2VuZEZvcndhcmQoKTtcblxuICAgIGlmIChkZXNjZW5kZWRGb3J3YXJkKSB7XG4gICAgICB2aXNpdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZW1haW5pbmdBcmd1bWVudHMucHVzaChkZXNjZW5kRm9yd2FyZCk7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxuXG4gIHZpc2l0Tm9uVGVybWluYWxOb2RlKGdlbmVyYWxOb25UZXJtaW5hbE5vZGUsIHNwZWNpZmljTm9uVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgbGV0IHsgbWFwcyB9ID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICAgIG1hcHMgPSBbIC8vL1xuICAgICAgLi4ubWFwcyxcbiAgICAgIHtcbiAgICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogbm9uVGVybWluYWxOb2RlUXVlcnksXG4gICAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBub25UZXJtaW5hbE5vZGVRdWVyeSxcbiAgICAgICAgcnVuOiAoZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSA9PiB7XG4gICAgICAgICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIGNvbnN0IGdlbmVyYWxOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IGdlbmVyYWxOb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSwgLy8vXG4gICAgICAgICAgICAgICAgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IHNwZWNpZmljTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7IC8vL1xuXG4gICAgICAgICAgaWYgKGdlbmVyYWxOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gc3BlY2lmaWNOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSAwLFxuICAgICAgICAgICAgICAgICAgZ2VuZXJhbE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBnZW5lcmFsTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIHNwZWNpZmljTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IHNwZWNpZmljTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIGdlbmVyYWxDaGlsZE5vZGVzID0gZ2VuZXJhbE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNDaGlsZE5vZGVzID0gc3BlY2lmaWNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICAgIGRlc2NlbmRlZCA9IHRoaXMuZGVzY2VuZChpbmRleCwgZ2VuZXJhbENoaWxkTm9kZXMsIHNwZWNpZmljQ2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgICAgaWYgKGRlc2NlbmRlZCkge1xuICAgICAgICAgICAgICB2aXNpdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmlzaXRlZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cblxuICAgIG1hcHMuc29tZSgobWFwKSA9PiB7XG4gICAgICBjb25zdCB7IGdlbmVyYWxOb2RlUXVlcnksIHNwZWNpZmljTm9kZVF1ZXJ5LCBydW4gfSA9IG1hcDtcblxuICAgICAgY29uc3QgZ2VuZXJhbE5vZGUgPSBnZW5lcmFsTm9kZVF1ZXJ5KGdlbmVyYWxOb25UZXJtaW5hbE5vZGUpLCAgLy8vXG4gICAgICAgIHNwZWNpZmljTm9kZSA9IHNwZWNpZmljTm9kZVF1ZXJ5KHNwZWNpZmljTm9uVGVybWluYWxOb2RlKTsgIC8vL1xuXG4gICAgICBpZiAoKGdlbmVyYWxOb2RlICE9PSBudWxsKSAmJiAoc3BlY2lmaWNOb2RlICE9PSBudWxsKSkge1xuICAgICAgICBjb25zdCBzdWNjZXNzICA9IHJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgIHZpc2l0ZWQgPSBzdWNjZXNzOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkZvcndhcmRaaXBQYXNzIiwicnVuIiwiZ2VuZXJhbE5vZGUiLCJzcGVjaWZpY05vZGUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJzdWNjZXNzIiwidmlzaXRlZCIsInZpc2l0Tm9kZSIsImRlc2NlbmQiLCJpbmRleCIsImdlbmVyYWxDaGlsZE5vZGVzIiwic3BlY2lmaWNDaGlsZE5vZGVzIiwiZGVzY2VuZGVkRm9yd2FyZCIsImNoaWxkTm9kZXNDb25ncnVlbnQiLCJhcmVDaGlsZE5vZGVzQ29uZ3J1ZW50IiwiZGVzY2VuZEZvcndhcmQiLCJwb3AiLCJnZW5lcmFsQ2hpbGROb2Rlc0xlbmd0aCIsImxlbmd0aCIsImdlbmVyYWxDaGlsZE5vZGUiLCJzcGVjaWZpY0NoaWxkTm9kZSIsInB1c2giLCJhaGVhZEluZGV4IiwiZ2VuZXJhbE5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInNwZWNpZmljTm9kZVRlcm1pbmFsTm9kZSIsImdlbmVyYWxOb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vZGVOb25UZXJtaW5hbE5vZGUiLCJnZW5lcmFsVGVybWluYWxOb2RlIiwic3BlY2lmaWNUZXJtaW5hbE5vZGUiLCJ2aXNpdFRlcm1pbmFsTm9kZSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vblRlcm1pbmFsTm9kZSIsInZpc2l0Tm9uVGVybWluYWxOb2RlIiwibWFwcyIsImdlbmVyYWxOb2RlUXVlcnkiLCJub25UZXJtaW5hbE5vZGVRdWVyeSIsInNwZWNpZmljTm9kZVF1ZXJ5IiwiZ2VuZXJhbE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJzcGVjaWZpY05vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2VuZXJhbE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiZGVzY2VuZGVkIiwic29tZSIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSUE7OztlQUFxQkE7OztzQkFGd0M7QUFFOUMsTUFBTUE7SUFDbkJDLElBQUlDLFdBQVcsRUFBRUMsWUFBWSxFQUFFLEdBQUdDLGtCQUFrQixFQUFFO1FBQ3BELElBQUlDO1FBRUosTUFBTUMsVUFBVSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0wsYUFBYUMsaUJBQWlCQztRQUU3REMsVUFBVUMsU0FBVSxHQUFHO1FBRXZCLE9BQU9EO0lBQ1Q7SUFFQUcsUUFBUUMsS0FBSyxFQUFFQyxpQkFBaUIsRUFBRUMsa0JBQWtCLEVBQUUsR0FBR1Asa0JBQWtCLEVBQUU7UUFDM0UsSUFBSVEsbUJBQW1CO1FBRXZCLE1BQU1DLHNCQUFzQkMsSUFBQUEsNEJBQXNCLEVBQUNKLG1CQUFtQkM7UUFFdEUsSUFBSUUscUJBQXFCO1lBQ3ZCLE1BQU1FLGlCQUFpQlgsbUJBQW1CWSxHQUFHLElBQ3ZDQywwQkFBMEJQLGtCQUFrQlEsTUFBTTtZQUV4RCxJQUFJVCxVQUFVUSx5QkFBeUI7Z0JBQ3JDTCxtQkFBbUJHO1lBQ3JCLE9BQU87Z0JBQ0ws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
|
package/src/pass/forward.js
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { nonTerminalNodeQuery } from "../utilities/pass";
|
|
4
|
-
|
|
5
|
-
export default class ForwardPass {
|
|
6
|
-
run(node, ...remainingArguments) {
|
|
7
|
-
let success;
|
|
8
|
-
|
|
9
|
-
const visited = this.visitNode(node, ...remainingArguments);
|
|
10
|
-
|
|
11
|
-
success = visited; ///
|
|
12
|
-
|
|
13
|
-
return success;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
descend(index, childNodes, ...remainingArguments) {
|
|
17
|
-
let descendedForward = false;
|
|
18
|
-
|
|
19
|
-
const descendForward = remainingArguments.pop(), ///
|
|
20
|
-
childNodesLength = childNodes.length;
|
|
21
|
-
|
|
22
|
-
if (index === childNodesLength) {
|
|
23
|
-
descendedForward = descendForward();
|
|
24
|
-
} else {
|
|
25
|
-
const childNode = childNodes[index],
|
|
26
|
-
node = childNode, ///
|
|
27
|
-
visited = this.visitNode(node, ...remainingArguments, () => {
|
|
28
|
-
remainingArguments.push(descendForward);
|
|
29
|
-
|
|
30
|
-
const aheadIndex = index + 1,
|
|
31
|
-
descendedForward = this.descend(aheadIndex, childNodes, ...remainingArguments);
|
|
32
|
-
|
|
33
|
-
return descendedForward;
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
if (visited) {
|
|
37
|
-
descendedForward = true;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return descendedForward;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
visitNode(node, ...remainingArguments) {
|
|
45
|
-
let visited;
|
|
46
|
-
|
|
47
|
-
const nodeTerminalNode = node.isTerminalNode();
|
|
48
|
-
|
|
49
|
-
if (nodeTerminalNode) {
|
|
50
|
-
const terminalNode = node; ///
|
|
51
|
-
|
|
52
|
-
visited = this.visitTerminalNode(terminalNode, ...remainingArguments);
|
|
53
|
-
} else {
|
|
54
|
-
const nonTerminalNode = node; ///
|
|
55
|
-
|
|
56
|
-
visited = this.visitNonTerminalNode(nonTerminalNode, ...remainingArguments);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return visited;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
visitTerminalNode(terminalNode, ...remainingArguments) {
|
|
63
|
-
let visited = false;
|
|
64
|
-
|
|
65
|
-
const descendForward = remainingArguments.pop(), ///
|
|
66
|
-
descendedForward = descendForward();
|
|
67
|
-
|
|
68
|
-
if (descendedForward) {
|
|
69
|
-
visited = true;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
remainingArguments.push(descendForward);
|
|
73
|
-
|
|
74
|
-
return visited;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
visitNonTerminalNode(nonTerminalNode, ...remainingArguments) {
|
|
78
|
-
let visited = false;
|
|
79
|
-
|
|
80
|
-
let { maps } = this.constructor;
|
|
81
|
-
|
|
82
|
-
maps = [ ///
|
|
83
|
-
...maps,
|
|
84
|
-
{
|
|
85
|
-
nodeQuery: nonTerminalNodeQuery,
|
|
86
|
-
run: (node, ...remainingArguments) => {
|
|
87
|
-
let visited = false;
|
|
88
|
-
|
|
89
|
-
const index = 0,
|
|
90
|
-
childNodes = nonTerminalNode.getChildNodes(), ///
|
|
91
|
-
descended = this.descend(index, childNodes, ...remainingArguments);
|
|
92
|
-
|
|
93
|
-
if (descended) {
|
|
94
|
-
visited = true;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return visited;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
]
|
|
101
|
-
|
|
102
|
-
maps.some((map) => {
|
|
103
|
-
const { nodeQuery, run } = map;
|
|
104
|
-
|
|
105
|
-
const node = nodeQuery(nonTerminalNode);
|
|
106
|
-
|
|
107
|
-
if (node !== null) {
|
|
108
|
-
const success = run(node, ...remainingArguments);
|
|
109
|
-
|
|
110
|
-
visited = success;
|
|
111
|
-
|
|
112
|
-
return true;
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
return visited;
|
|
117
|
-
}
|
|
118
|
-
}
|
package/src/pass/forwardZip.js
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { nonTerminalNodeQuery, areChildNodesCongruent } from "../utilities/pass";
|
|
4
|
-
|
|
5
|
-
export default class ForwardZipPass {
|
|
6
|
-
run(generalNode, specificNode, ...remainingArguments) {
|
|
7
|
-
let success;
|
|
8
|
-
|
|
9
|
-
const visited = this.visitNode(generalNode, specificNode, ...remainingArguments);
|
|
10
|
-
|
|
11
|
-
success = visited; ///
|
|
12
|
-
|
|
13
|
-
return success;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
descend(index, generalChildNodes, specificChildNodes, ...remainingArguments) {
|
|
17
|
-
let descendedForward = false;
|
|
18
|
-
|
|
19
|
-
const childNodesCongruent = areChildNodesCongruent(generalChildNodes, specificChildNodes);
|
|
20
|
-
|
|
21
|
-
if (childNodesCongruent) {
|
|
22
|
-
const descendForward = remainingArguments.pop(), ///
|
|
23
|
-
generalChildNodesLength = generalChildNodes.length;
|
|
24
|
-
|
|
25
|
-
if (index === generalChildNodesLength) {
|
|
26
|
-
descendedForward = descendForward();
|
|
27
|
-
} else {
|
|
28
|
-
const generalChildNode = generalChildNodes[index],
|
|
29
|
-
specificChildNode = specificChildNodes[index],
|
|
30
|
-
generalNode = generalChildNode, ///
|
|
31
|
-
specificNode = specificChildNode, ///
|
|
32
|
-
visited = this.visitNode(generalNode, specificNode, ...remainingArguments, () => {
|
|
33
|
-
remainingArguments.push(descendForward);
|
|
34
|
-
|
|
35
|
-
const aheadIndex = index + 1,
|
|
36
|
-
descendedForward = this.descend(aheadIndex, generalChildNodes, specificChildNodes, ...remainingArguments);
|
|
37
|
-
|
|
38
|
-
return descendedForward;
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
if (visited) {
|
|
42
|
-
descendedForward = true;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return descendedForward;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
visitNode(generalNode, specificNode, ...remainingArguments) {
|
|
51
|
-
let visited = false;
|
|
52
|
-
|
|
53
|
-
const generalNodeTerminalNode = generalNode.isTerminalNode(),
|
|
54
|
-
specificNodeTerminalNode = specificNode.isTerminalNode(),
|
|
55
|
-
generalNodeNonTerminalNode = generalNode.isNonTerminalNode(),
|
|
56
|
-
specificNodeNonTerminalNode = specificNode.isNonTerminalNode();
|
|
57
|
-
|
|
58
|
-
if (false) {
|
|
59
|
-
///
|
|
60
|
-
} else if (generalNodeTerminalNode && specificNodeTerminalNode) {
|
|
61
|
-
const generalTerminalNode = generalNode, ///
|
|
62
|
-
specificTerminalNode = specificNode; ///
|
|
63
|
-
|
|
64
|
-
visited = this.visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments);
|
|
65
|
-
} else if (generalNodeNonTerminalNode && specificNodeNonTerminalNode) {
|
|
66
|
-
const generalNonTerminalNode = generalNode, ///
|
|
67
|
-
specificNonTerminalNode = specificNode; ///
|
|
68
|
-
|
|
69
|
-
visited = this.visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
return visited;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments) {
|
|
76
|
-
let visited = false;
|
|
77
|
-
|
|
78
|
-
const descendForward = remainingArguments.pop(), ///
|
|
79
|
-
descendedForward = descendForward();
|
|
80
|
-
|
|
81
|
-
if (descendedForward) {
|
|
82
|
-
visited = true;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
remainingArguments.push(descendForward);
|
|
86
|
-
|
|
87
|
-
return visited;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments) {
|
|
91
|
-
let visited = false;
|
|
92
|
-
|
|
93
|
-
let { maps } = this.constructor;
|
|
94
|
-
|
|
95
|
-
maps = [ ///
|
|
96
|
-
...maps,
|
|
97
|
-
{
|
|
98
|
-
generalNodeQuery: nonTerminalNodeQuery,
|
|
99
|
-
specificNodeQuery: nonTerminalNodeQuery,
|
|
100
|
-
run: (generalNode, specificNode, ...remainingArguments) => {
|
|
101
|
-
let visited = false;
|
|
102
|
-
|
|
103
|
-
const generalNonTerminalNodeRuleName = generalNonTerminalNode.getRuleName(), ///
|
|
104
|
-
specificNonTerminalNodeRuleName = specificNonTerminalNode.getRuleName(); ///
|
|
105
|
-
|
|
106
|
-
if (generalNonTerminalNodeRuleName === specificNonTerminalNodeRuleName) {
|
|
107
|
-
const index = 0,
|
|
108
|
-
generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(),
|
|
109
|
-
specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(),
|
|
110
|
-
generalChildNodes = generalNonTerminalNodeChildNodes, ///
|
|
111
|
-
specificChildNodes = specificNonTerminalNodeChildNodes, ///
|
|
112
|
-
descended = this.descend(index, generalChildNodes, specificChildNodes, ...remainingArguments);
|
|
113
|
-
|
|
114
|
-
if (descended) {
|
|
115
|
-
visited = true;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
return visited;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
]
|
|
123
|
-
|
|
124
|
-
maps.some((map) => {
|
|
125
|
-
const { generalNodeQuery, specificNodeQuery, run } = map;
|
|
126
|
-
|
|
127
|
-
const generalNode = generalNodeQuery(generalNonTerminalNode), ///
|
|
128
|
-
specificNode = specificNodeQuery(specificNonTerminalNode); ///
|
|
129
|
-
|
|
130
|
-
if ((generalNode !== null) && (specificNode !== null)) {
|
|
131
|
-
const success = run(generalNode, specificNode, ...remainingArguments);
|
|
132
|
-
|
|
133
|
-
visited = success; ///
|
|
134
|
-
|
|
135
|
-
return true;
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
return visited;
|
|
140
|
-
}
|
|
141
|
-
}
|