occam-languages 1.0.38 → 1.0.40
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 +7 -3
- package/lib/pass/continuation.js +65 -0
- package/lib/utilities/breakPoint.js +11 -15
- package/lib/utilities/continuation.js +36 -14
- package/package.json +1 -1
- package/src/index.js +1 -0
- package/src/pass/continuation.js +79 -0
- package/src/utilities/breakPoint.js +13 -15
- package/src/utilities/continuation.js +40 -13
package/lib/index.js
CHANGED
|
@@ -21,6 +21,9 @@ _export(exports, {
|
|
|
21
21
|
get Context () {
|
|
22
22
|
return _context.default;
|
|
23
23
|
},
|
|
24
|
+
get ContinuationPass () {
|
|
25
|
+
return _continuation.default;
|
|
26
|
+
},
|
|
24
27
|
get Element () {
|
|
25
28
|
return _element.default;
|
|
26
29
|
},
|
|
@@ -73,7 +76,7 @@ _export(exports, {
|
|
|
73
76
|
return _breakPoint1.default;
|
|
74
77
|
},
|
|
75
78
|
get continuationUtilities () {
|
|
76
|
-
return
|
|
79
|
+
return _continuation1.default;
|
|
77
80
|
},
|
|
78
81
|
get fileContextUtilities () {
|
|
79
82
|
return _fileContext.default;
|
|
@@ -110,6 +113,7 @@ const _forward = /*#__PURE__*/ _interop_require_default(require("./pass/forward"
|
|
|
110
113
|
const _asyncZip = /*#__PURE__*/ _interop_require_default(require("./pass/asyncZip"));
|
|
111
114
|
const _forwardZip = /*#__PURE__*/ _interop_require_default(require("./pass/forwardZip"));
|
|
112
115
|
const _equivalence = /*#__PURE__*/ _interop_require_default(require("./pass/equivalence"));
|
|
116
|
+
const _continuation = /*#__PURE__*/ _interop_require_default(require("./pass/continuation"));
|
|
113
117
|
const _lexer = /*#__PURE__*/ _interop_require_default(require("./furtle/lexer"));
|
|
114
118
|
const _parser = /*#__PURE__*/ _interop_require_default(require("./furtle/parser"));
|
|
115
119
|
const _lexer1 = /*#__PURE__*/ _interop_require_default(require("./nominal/lexer"));
|
|
@@ -122,7 +126,7 @@ const _furtle = /*#__PURE__*/ _interop_require_default(require("./utilities/furt
|
|
|
122
126
|
const _nominal = /*#__PURE__*/ _interop_require_default(require("./utilities/nominal"));
|
|
123
127
|
const _breakPoint1 = /*#__PURE__*/ _interop_require_default(require("./utilities/breakPoint"));
|
|
124
128
|
const _fileContext = /*#__PURE__*/ _interop_require_default(require("./utilities/fileContext"));
|
|
125
|
-
const
|
|
129
|
+
const _continuation1 = /*#__PURE__*/ _interop_require_default(require("./utilities/continuation"));
|
|
126
130
|
const _verification = /*#__PURE__*/ _interop_require_default(require("./utilities/verification"));
|
|
127
131
|
const _asynchronous = /*#__PURE__*/ _interop_require_default(require("./utilities/asynchronous"));
|
|
128
132
|
const _releaseContext = /*#__PURE__*/ _interop_require_default(require("./utilities/releaseContext"));
|
|
@@ -132,4 +136,4 @@ function _interop_require_default(obj) {
|
|
|
132
136
|
};
|
|
133
137
|
}
|
|
134
138
|
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQnJlYWtQb2ludCB9IGZyb20gXCIuL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L2ZpbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L3JlbGVhc2VcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBaaXBQYXNzIH0gZnJvbSBcIi4vcGFzcy96aXBcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQXN5bmNQYXNzIH0gZnJvbSBcIi4vcGFzcy9hc3luY1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTaW1wbGVQYXNzIH0gZnJvbSBcIi4vcGFzcy9zaW1wbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRm9yd2FyZFBhc3MgfSBmcm9tIFwiLi9wYXNzL2ZvcndhcmRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQXN5bmNaaXBQYXNzIH0gZnJvbSBcIi4vcGFzcy9hc3luY1ppcFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBGb3J3YXJkWmlwUGFzcyB9IGZyb20gXCIuL3Bhc3MvZm9yd2FyZFppcFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBFcXVpdmFsZW5jZVBhc3MgfSBmcm9tIFwiLi9wYXNzL2VxdWl2YWxlbmNlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENvbnRpbnVhdGlvblBhc3MgfSBmcm9tIFwiLi9wYXNzL2NvbnRpbnVhdGlvblwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIEZ1cnRsZUxleGVyIH0gZnJvbSBcIi4vZnVydGxlL2xleGVyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZ1cnRsZVBhcnNlciB9IGZyb20gXCIuL2Z1cnRsZS9wYXJzZXJcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTm9taW5hbExleGVyIH0gZnJvbSBcIi4vbm9taW5hbC9sZXhlclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb21pbmFsUGFyc2VyIH0gZnJvbSBcIi4vbm9taW5hbC9wYXJzZXJcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb25UZXJtaW5hbE5vZGUgfSBmcm9tIFwiLi9ub25UZXJtaW5hbE5vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlTWl4aW5zIH0gZnJvbSBcIi4vbWl4aW5zL25vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBibmZVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYm5mXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vZGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvbm9kZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmdXJ0bGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZnVydGxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vbWluYWxVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvbm9taW5hbFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsZUNvbnRleHRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZUNvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB2ZXJpZmljYXRpb25VdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvdmVyaWZpY2F0aW9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFzeW5jaHJvbm91c1V0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9hc3luY2hyb25vdXNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcmVsZWFzZUNvbnRleHRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHRcIjtcbiJdLCJuYW1lcyI6WyJBc3luY1Bhc3MiLCJBc3luY1ppcFBhc3MiLCJCcmVha1BvaW50IiwiQ29udGV4dCIsIkNvbnRpbnVhdGlvblBhc3MiLCJFbGVtZW50IiwiRXF1aXZhbGVuY2VQYXNzIiwiRmlsZUNvbnRleHQiLCJGb3J3YXJkUGFzcyIsIkZvcndhcmRaaXBQYXNzIiwiRnVydGxlTGV4ZXIiLCJGdXJ0bGVQYXJzZXIiLCJMb2ciLCJOb21pbmFsTGV4ZXIiLCJOb21pbmFsUGFyc2VyIiwiTm9uVGVybWluYWxOb2RlIiwiUmVsZWFzZUNvbnRleHQiLCJTaW1wbGVQYXNzIiwiWmlwUGFzcyIsImFzeW5jaHJvbm91c1V0aWxpdGllcyIsImJuZlV0aWxpdGllcyIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJmaWxlQ29udGV4dFV0aWxpdGllcyIsImZ1cnRsZVV0aWxpdGllcyIsIm5vZGVNaXhpbnMiLCJub2RlVXRpbGl0aWVzIiwibm9taW5hbFV0aWxpdGllcyIsInJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIiwidmVyaWZpY2F0aW9uVXRpbGl0aWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFVb0JBO2VBQUFBLGNBQVM7O1FBR1RDO2VBQUFBLGlCQUFZOztRQVJaQztlQUFBQSxtQkFBVTs7UUFEVkM7ZUFBQUEsZ0JBQU87O1FBWVBDO2VBQUFBLHFCQUFnQjs7UUFiaEJDO2VBQUFBLGdCQUFPOztRQVlQQztlQUFBQSxvQkFBZTs7UUFUZkM7ZUFBQUEsYUFBVzs7UUFNWEM7ZUFBQUEsZ0JBQVc7O1FBRVhDO2VBQUFBLG1CQUFjOztRQUlkQztlQUFBQSxjQUFXOztRQUNYQztlQUFBQSxlQUFZOztRQWpCWkM7ZUFBQUEsWUFBRzs7UUFrQkhDO2VBQUFBLGVBQVk7O1FBQ1pDO2VBQUFBLGdCQUFhOztRQUViQztlQUFBQSx3QkFBZTs7UUFoQmZDO2VBQUFBLGdCQUFjOztRQUlkQztlQUFBQSxlQUFVOztRQUZWQztlQUFBQSxZQUFPOztRQTBCUEM7ZUFBQUEscUJBQXFCOztRQVJyQkM7ZUFBQUEsWUFBWTs7UUFJWkM7ZUFBQUEsb0JBQW1COztRQUVuQkM7ZUFBQUEsc0JBQXFCOztRQURyQkM7ZUFBQUEsb0JBQW9COztRQUhwQkM7ZUFBQUEsZUFBZTs7UUFKZkM7ZUFBQUEsYUFBVTs7UUFHVkM7ZUFBQUEsY0FBYTs7UUFFYkM7ZUFBQUEsZ0JBQWdCOztRQU1oQkM7ZUFBQUEsdUJBQXVCOztRQUZ2QkM7ZUFBQUEscUJBQXFCOzs7NERBaENWO2dFQUNJO2dFQUNBO21FQUNHOzZEQUNDO2dFQUNHOzREQUVQOzhEQUNFOytEQUNDO2dFQUNDO2lFQUNDO21FQUNFO29FQUNDO3FFQUNDOzhEQUVMOytEQUNDOytEQUNBO2dFQUNDO3dFQUVFOzZEQUVMOzREQUVFOzhEQUNDOytEQUNFO2dFQUNDO29FQUNHO29FQUNDO3NFQUNDO3FFQUNBO3FFQUNBO3VFQUNFIn0=
|
|
@@ -0,0 +1,65 @@
|
|
|
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 ContinuationPass;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _continuation = require("../utilities/continuation");
|
|
12
|
+
const _pass = require("../utilities/pass");
|
|
13
|
+
class ContinuationPass {
|
|
14
|
+
run(node, ...remainingArguments) {
|
|
15
|
+
const continuation = remainingArguments.pop();
|
|
16
|
+
this.visitNode(node, ...remainingArguments, continuation);
|
|
17
|
+
}
|
|
18
|
+
descend(childNodes, ...remainingArguments) {
|
|
19
|
+
const continuation = remainingArguments.pop();
|
|
20
|
+
(0, _continuation.every)(childNodes, (childNode, continuation)=>{
|
|
21
|
+
const node = childNode; ///
|
|
22
|
+
this.visitNode(node, ...remainingArguments, continuation);
|
|
23
|
+
}, continuation);
|
|
24
|
+
}
|
|
25
|
+
visitNode(node, ...remainingArguments) {
|
|
26
|
+
const continuation = remainingArguments.pop(), nodeTerminalNode = node.isTerminalNode();
|
|
27
|
+
if (nodeTerminalNode) {
|
|
28
|
+
const terminalNode = node; ///
|
|
29
|
+
this.visitTerminalNode(terminalNode, ...remainingArguments, continuation);
|
|
30
|
+
} else {
|
|
31
|
+
const nonTerminalNode = node; ///
|
|
32
|
+
this.visitNonTerminalNode(nonTerminalNode, ...remainingArguments, continuation);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
visitTerminalNode(terminalNode, ...remainingArguments) {
|
|
36
|
+
const visited = true, continuation = remainingArguments.pop();
|
|
37
|
+
continuation(visited);
|
|
38
|
+
}
|
|
39
|
+
visitNonTerminalNode(nonTerminalNode, ...remainingArguments) {
|
|
40
|
+
const continuation = remainingArguments.pop();
|
|
41
|
+
let { maps } = this.constructor;
|
|
42
|
+
maps = [
|
|
43
|
+
...maps,
|
|
44
|
+
{
|
|
45
|
+
nodeQuery: _pass.nonTerminalNodeQuery,
|
|
46
|
+
run: (node, ...remainingArguments)=>{
|
|
47
|
+
const continuation = remainingArguments.pop(), childNodes = nonTerminalNode.getChildNodes();
|
|
48
|
+
this.descend(childNodes, ...remainingArguments, continuation);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
];
|
|
52
|
+
(0, _continuation.some)(maps, (map, continuation)=>{
|
|
53
|
+
const { nodeQuery, run } = map;
|
|
54
|
+
const node = nodeQuery(nonTerminalNode);
|
|
55
|
+
if (node === null) {
|
|
56
|
+
const visited = false;
|
|
57
|
+
continuation(visited);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
run(node, ...remainingArguments, continuation);
|
|
61
|
+
}, continuation);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL2NvbnRpbnVhdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgc29tZSwgZXZlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgbm9uVGVybWluYWxOb2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3Bhc3NcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGludWF0aW9uUGFzcyB7XG4gIHJ1bihub2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG4gIH1cblxuICBkZXNjZW5kKGNoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICAgIGV2ZXJ5KGNoaWxkTm9kZXMsIChjaGlsZE5vZGUsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IGNoaWxkTm9kZTsgLy8vXG5cbiAgICAgIHRoaXMudmlzaXROb2RlKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgY29udGludWF0aW9uKTtcbiAgICB9LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgdmlzaXROb2RlKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgICBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgICAgdGhpcy52aXNpdFRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgY29udGludWF0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgICB0aGlzLnZpc2l0Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCBjb250aW51YXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgY29uc3QgdmlzaXRlZCA9IHRydWUsXG4gICAgICAgICAgY29udGludWF0aW9uID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpO1xuXG4gICAgY29udGludWF0aW9uKHZpc2l0ZWQpO1xuICB9XG5cbiAgdmlzaXROb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgICBsZXQgeyBtYXBzIH0gPSB0aGlzLmNvbnN0cnVjdG9yO1xuXG4gICAgbWFwcyA9IFsgLy8vXG4gICAgICAuLi5tYXBzLFxuICAgICAge1xuICAgICAgICBub2RlUXVlcnk6IG5vblRlcm1pbmFsTm9kZVF1ZXJ5LFxuICAgICAgICBydW46IChub2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpID0+IHtcbiAgICAgICAgICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksXG4gICAgICAgICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICAgICAgICB0aGlzLmRlc2NlbmQoY2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzLCBjb250aW51YXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXTtcblxuICAgIHNvbWUobWFwcywgKG1hcCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICBjb25zdCB7IG5vZGVRdWVyeSwgcnVuIH0gPSBtYXA7XG5cbiAgICAgIGNvbnN0IG5vZGUgPSBub2RlUXVlcnkobm9uVGVybWluYWxOb2RlKTtcblxuICAgICAgaWYgKG5vZGUgPT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnRpbnVhdGlvbih2aXNpdGVkKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJ1bihub2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkNvbnRpbnVhdGlvblBhc3MiLCJydW4iLCJub2RlIiwicmVtYWluaW5nQXJndW1lbnRzIiwiY29udGludWF0aW9uIiwicG9wIiwidmlzaXROb2RlIiwiZGVzY2VuZCIsImNoaWxkTm9kZXMiLCJldmVyeSIsImNoaWxkTm9kZSIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsInZpc2l0VGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwidmlzaXROb25UZXJtaW5hbE5vZGUiLCJ2aXNpdGVkIiwibWFwcyIsIm5vZGVRdWVyeSIsIm5vblRlcm1pbmFsTm9kZVF1ZXJ5IiwiZ2V0Q2hpbGROb2RlcyIsInNvbWUiLCJtYXAiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUtBOzs7ZUFBcUJBOzs7OEJBSE87c0JBQ1M7QUFFdEIsTUFBTUE7SUFDbkJDLElBQUlDLElBQUksRUFBRSxHQUFHQyxrQkFBa0IsRUFBRTtRQUMvQixNQUFNQyxlQUFlRCxtQkFBbUJFLEdBQUc7UUFFM0MsSUFBSSxDQUFDQyxTQUFTLENBQUNKLFNBQVNDLG9CQUFvQkM7SUFDOUM7SUFFQUcsUUFBUUMsVUFBVSxFQUFFLEdBQUdMLGtCQUFrQixFQUFFO1FBQ3pDLE1BQU1DLGVBQWVELG1CQUFtQkUsR0FBRztRQUUzQ0ksSUFBQUEsbUJBQUssRUFBQ0QsWUFBWSxDQUFDRSxXQUFXTjtZQUM1QixNQUFNRixPQUFPUSxXQUFXLEdBQUc7WUFFM0IsSUFBSSxDQUFDSixTQUFTLENBQUNKLFNBQVNDLG9CQUFvQkM7UUFDOUMsR0FBR0E7SUFDTDtJQUVBRSxVQUFVSixJQUFJLEVBQUUsR0FBR0Msa0JBQWtCLEVBQUU7UUFDckMsTUFBTUMsZUFBZUQsbUJBQW1CRSxHQUFHLElBQ3JDTSxtQkFBbUJULEtBQUtVLGNBQWM7UUFFNUMsSUFBSUQsa0JBQWtCO1lBQ3BCLE1BQU1FLGVBQWVYLE1BQU8sR0FBRztZQUUvQixJQUFJLENBQUNZLGlCQUFpQixDQUFDRCxpQkFBaUJWLG9CQUFvQkM7UUFDOUQsT0FBTztZQUNMLE1BQU1XLGtCQUFrQmIsTUFBTyxHQUFHO1lBRWxDLElBQUksQ0FBQ2Msb0JBQW9CLENBQUNELG9CQUFvQlosb0JBQW9CQztRQUNwRTtJQUNGO0lBRUFVLGtCQUFrQkQsWUFBWSxFQUFFLEdBQUdWLGtCQUFrQixFQUFFO1FBQ3JELE1BQU1jLFVBQVUsTUFDVmIsZUFBZUQsbUJBQW1CRSxHQUFHO1FBRTNDRCxhQUFhYTtJQUNmO0lBRUFELHFCQUFxQkQsZUFBZSxFQUFFLEdBQUdaLGtCQUFrQixFQUFFO1FBQzNELE1BQU1DLGVBQWVELG1CQUFtQkUsR0FBRztRQUUzQyxJQUFJLEVBQUVhLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXO1FBRS9CQSxPQUFPO2VBQ0ZBO1lBQ0g7Z0JBQ0VDLFdBQVdDLDBCQUFvQjtnQkFDL0JuQixLQUFLLENBQUNDLE1BQU0sR0FBR0M7b0JBQ2IsTUFBTUMsZUFBZUQsbUJBQW1CRSxHQUFHLElBQ3JDRyxhQUFhTyxnQkFBZ0JNLGFBQWE7b0JBRWhELElBQUksQ0FBQ2QsT0FBTyxDQUFDQyxlQUFlTCxvQkFBb0JDO2dCQUNsRDtZQUNGO1NBQ0Q7UUFFRGtCLElBQUFBLGtCQUFJLEVBQUNKLE1BQU0sQ0FBQ0ssS0FBS25CO1lBQ2YsTUFBTSxFQUFFZSxTQUFTLEVBQUVsQixHQUFHLEVBQUUsR0FBR3NCO1lBRTNCLE1BQU1yQixPQUFPaUIsVUFBVUo7WUFFdkIsSUFBSWIsU0FBUyxNQUFNO2dCQUNqQixNQUFNZSxVQUFVO2dCQUVoQmIsYUFBYWE7Z0JBRWI7WUFDRjtZQUVBaEIsSUFBSUMsU0FBU0Msb0JBQW9CQztRQUNuQyxHQUFHQTtJQUNMO0FBQ0YifQ==
|
|
@@ -47,20 +47,16 @@ function breakPointToBreakPointJSON(breakPoint) {
|
|
|
47
47
|
}
|
|
48
48
|
function lineIndexFromNodeAndTokens(node, tokens) {
|
|
49
49
|
let lineIndex = 0;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// return true;
|
|
61
|
-
// }
|
|
62
|
-
// });
|
|
63
|
-
lineIndex = 123;
|
|
50
|
+
const firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens);
|
|
51
|
+
tokens.some((token, tokenIndex)=>{
|
|
52
|
+
const tokenEndOfLineToken = token.isEndOfLineToken();
|
|
53
|
+
if (tokenEndOfLineToken) {
|
|
54
|
+
lineIndex += 1;
|
|
55
|
+
}
|
|
56
|
+
if (tokenIndex === firstSignificantTokenIndex) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
64
60
|
return lineIndex;
|
|
65
61
|
}
|
|
66
62
|
const _default = {
|
|
@@ -69,4 +65,4 @@ const _default = {
|
|
|
69
65
|
lineIndexFromNodeAndTokens
|
|
70
66
|
};
|
|
71
67
|
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYnJlYWtQb2ludC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEJyZWFrUG9pbnQgZnJvbSBcIi4uL2JyZWFrUG9pbnRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSB7XG4gIGxldCBicmVha1BvaW50O1xuXG4gICh7IGJyZWFrUG9pbnQgfSA9IGpzb24pO1xuXG4gIGlmIChicmVha1BvaW50ICE9PSBudWxsKSB7XG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50OyAgLy8vXG5cbiAgICBqc29uID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgIGJyZWFrUG9pbnQgPSBCcmVha1BvaW50LmZyb21KU09OKGpzb24pOyAgLy8vXG4gIH1cblxuICByZXR1cm4gYnJlYWtQb2ludDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpIHtcbiAgbGV0IGJyZWFrUG9pbnRKU09OID0gbnVsbDtcblxuICBpZiAoYnJlYWtQb2ludCAhPT0gbnVsbCkge1xuICAgIGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludC50b0pTT04oKTtcbiAgfVxuXG4gIHJldHVybiBicmVha1BvaW50SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmVJbmRleEZyb21Ob2RlQW5kVG9rZW5zKG5vZGUsIHRva2Vucykge1xuICBsZXQgbGluZUluZGV4ID0gMDtcblxuICBjb25zdCBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKTtcblxuICB0b2tlbnMuc29tZSgodG9rZW4sIHRva2VuSW5kZXgpID0+IHtcbiAgICBjb25zdCB0b2tlbkVuZE9mTGluZVRva2VuID0gdG9rZW4uaXNFbmRPZkxpbmVUb2tlbigpO1xuXG4gICAgaWYgKHRva2VuRW5kT2ZMaW5lVG9rZW4pIHtcbiAgICAgIGxpbmVJbmRleCArPSAxO1xuICAgIH1cblxuICAgIGlmICh0b2tlbkluZGV4ID09PSBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbGluZUluZGV4O1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGJyZWFrUG9pbnRGcm9tSlNPTixcbiAgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04sXG4gIGxpbmVJbmRleEZyb21Ob2RlQW5kVG9rZW5zXG59O1xuIl0sIm5hbWVzIjpbImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwibGluZUluZGV4RnJvbU5vZGVBbmRUb2tlbnMiLCJqc29uIiwiYnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwiQnJlYWtQb2ludCIsImZyb21KU09OIiwidG9KU09OIiwibm9kZSIsInRva2VucyIsImxpbmVJbmRleCIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJzb21lIiwidG9rZW4iLCJ0b2tlbkluZGV4IiwidG9rZW5FbmRPZkxpbmVUb2tlbiIsImlzRW5kT2ZMaW5lVG9rZW4iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQUlnQkE7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7UUE4QmhCO2VBQUE7O1FBcEJnQkM7ZUFBQUE7OzttRUE1Qk87Ozs7OztBQUVoQixTQUFTRixtQkFBbUJHLElBQUk7SUFDckMsSUFBSUM7SUFFSCxDQUFBLEVBQUVBLFVBQVUsRUFBRSxHQUFHRCxJQUFHO0lBRXJCLElBQUlDLGVBQWUsTUFBTTtRQUN2QixNQUFNQyxpQkFBaUJELFlBQWEsR0FBRztRQUV2Q0QsT0FBT0UsZ0JBQWlCLEdBQUc7UUFFM0JELGFBQWFFLG1CQUFVLENBQUNDLFFBQVEsQ0FBQ0osT0FBUSxHQUFHO0lBQzlDO0lBRUEsT0FBT0M7QUFDVDtBQUVPLFNBQVNILDJCQUEyQkcsVUFBVTtJQUNuRCxJQUFJQyxpQkFBaUI7SUFFckIsSUFBSUQsZUFBZSxNQUFNO1FBQ3ZCQyxpQkFBaUJELFdBQVdJLE1BQU07SUFDcEM7SUFFQSxPQUFPSDtBQUNUO0FBRU8sU0FBU0gsMkJBQTJCTyxJQUFJLEVBQUVDLE1BQU07SUFDckQsSUFBSUMsWUFBWTtJQUVoQixNQUFNQyw2QkFBNkJILEtBQUtJLDZCQUE2QixDQUFDSDtJQUV0RUEsT0FBT0ksSUFBSSxDQUFDLENBQUNDLE9BQU9DO1FBQ2xCLE1BQU1DLHNCQUFzQkYsTUFBTUcsZ0JBQWdCO1FBRWxELElBQUlELHFCQUFxQjtZQUN2Qk4sYUFBYTtRQUNmO1FBRUEsSUFBSUssZUFBZUosNEJBQTRCO1lBQzdDLE9BQU87UUFDVDtJQUNGO0lBRUEsT0FBT0Q7QUFDVDtNQUVBLFdBQWU7SUFDYlg7SUFDQUM7SUFDQUM7QUFDRiJ9
|
|
@@ -21,16 +21,36 @@ _export(exports, {
|
|
|
21
21
|
get resolve () {
|
|
22
22
|
return resolve;
|
|
23
23
|
},
|
|
24
|
+
get some () {
|
|
25
|
+
return some;
|
|
26
|
+
},
|
|
24
27
|
get unbreakable () {
|
|
25
28
|
return unbreakable;
|
|
26
29
|
}
|
|
27
30
|
});
|
|
28
31
|
const _necessary = require("necessary");
|
|
29
32
|
const { filter } = _necessary.arrayUtilities, { forEach } = _necessary.asynchronousUtilities;
|
|
30
|
-
function
|
|
33
|
+
function some(array, callback, ...remainingArguments) {
|
|
34
|
+
let success = false;
|
|
35
|
+
const continuation = remainingArguments.pop();
|
|
36
|
+
forEach(array, (element, next, done)=>{
|
|
37
|
+
callback(element, ...remainingArguments, (passed)=>{
|
|
38
|
+
if (passed) {
|
|
39
|
+
success = true;
|
|
40
|
+
done();
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
next();
|
|
44
|
+
});
|
|
45
|
+
}, ()=>{
|
|
46
|
+
continuation(success);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function every(array, callback, ...remainingArguments) {
|
|
31
50
|
let success = true;
|
|
32
|
-
|
|
33
|
-
|
|
51
|
+
const continuation = remainingArguments.pop();
|
|
52
|
+
forEach(array, (element, next, done)=>{
|
|
53
|
+
callback(element, ...remainingArguments, (passed)=>{
|
|
34
54
|
if (!passed) {
|
|
35
55
|
success = false;
|
|
36
56
|
done();
|
|
@@ -39,29 +59,30 @@ function every(array, callback, context, contiunation) {
|
|
|
39
59
|
next();
|
|
40
60
|
});
|
|
41
61
|
}, ()=>{
|
|
42
|
-
|
|
62
|
+
continuation(success);
|
|
43
63
|
});
|
|
44
64
|
}
|
|
45
|
-
function resolve(arrayA, arrayB, callback,
|
|
65
|
+
function resolve(arrayA, arrayB, callback, ...remainingArguments) {
|
|
46
66
|
arrayA = [
|
|
47
67
|
...arrayA
|
|
48
68
|
];
|
|
69
|
+
const continuation = remainingArguments.pop();
|
|
49
70
|
function nextPass() {
|
|
50
71
|
const arrayALength = arrayA.length;
|
|
51
72
|
if (arrayALength === 0) {
|
|
52
|
-
const
|
|
53
|
-
continuation(
|
|
73
|
+
const success = true; ///
|
|
74
|
+
continuation(success);
|
|
54
75
|
return;
|
|
55
76
|
}
|
|
56
|
-
let
|
|
77
|
+
let success = false;
|
|
57
78
|
let count = -1;
|
|
58
79
|
function nextElement() {
|
|
59
80
|
count++;
|
|
60
81
|
const terminate = count === arrayALength;
|
|
61
82
|
if (terminate) {
|
|
62
|
-
if (!
|
|
63
|
-
const
|
|
64
|
-
continuation(
|
|
83
|
+
if (!success) {
|
|
84
|
+
const success = false; ///
|
|
85
|
+
continuation(success);
|
|
65
86
|
return;
|
|
66
87
|
}
|
|
67
88
|
filter(arrayA, (elementA)=>{
|
|
@@ -73,11 +94,11 @@ function resolve(arrayA, arrayB, callback, continuation) {
|
|
|
73
94
|
nextPass();
|
|
74
95
|
} else {
|
|
75
96
|
const index = count, elementA = arrayA[index];
|
|
76
|
-
callback(elementA, (passed)=>{
|
|
97
|
+
callback(elementA, ...remainingArguments, (passed)=>{
|
|
77
98
|
if (passed) {
|
|
78
99
|
const elementB = elementA; ///
|
|
79
100
|
arrayB.push(elementB);
|
|
80
|
-
|
|
101
|
+
success = true;
|
|
81
102
|
}
|
|
82
103
|
nextElement();
|
|
83
104
|
});
|
|
@@ -112,10 +133,11 @@ function unbreakable(innerFunction) {
|
|
|
112
133
|
};
|
|
113
134
|
}
|
|
114
135
|
const _default = {
|
|
136
|
+
some,
|
|
115
137
|
every,
|
|
116
138
|
resolve,
|
|
117
139
|
breakable,
|
|
118
140
|
unbreakable
|
|
119
141
|
};
|
|
120
142
|
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcywgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGZpbHRlciB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGZvckVhY2ggfSA9IGFzeW5jaHJvbm91c1V0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWUoYXJyYXksIGNhbGxiYWNrLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgZm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICBjYWxsYmFjayhlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIChwYXNzZWQpID0+IHtcbiAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgc3VjY2VzcyA9IHRydWU7XG5cbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgY29udGludWF0aW9uKHN1Y2Nlc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gdHJ1ZTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgZm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIG5leHQsIGRvbmUpID0+IHtcbiAgICBjYWxsYmFjayhlbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMsIChwYXNzZWQpID0+IHtcbiAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sICgpID0+IHtcbiAgICBjb250aW51YXRpb24oc3VjY2Vzcyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZShhcnJheUEsIGFycmF5QiwgY2FsbGJhY2ssIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICBhcnJheUEgPSBbICAvLy9cbiAgICAuLi5hcnJheUFcbiAgXTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCk7XG5cbiAgZnVuY3Rpb24gbmV4dFBhc3MoKSB7XG4gICAgY29uc3QgYXJyYXlBTGVuZ3RoID0gYXJyYXlBLmxlbmd0aDtcblxuICAgIGlmIChhcnJheUFMZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlOyAgLy8vXG5cbiAgICAgIGNvbnRpbnVhdGlvbihzdWNjZXNzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICBsZXQgY291bnQgPSAtMTtcblxuICAgIGZ1bmN0aW9uIG5leHRFbGVtZW50KCkge1xuICAgICAgY291bnQrKztcblxuICAgICAgY29uc3QgdGVybWluYXRlID0gKGNvdW50ID09PSBhcnJheUFMZW5ndGgpO1xuXG4gICAgICBpZiAodGVybWluYXRlKSB7XG4gICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBmYWxzZTsgLy8vXG5cbiAgICAgICAgICBjb250aW51YXRpb24oc3VjY2Vzcyk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmaWx0ZXIoYXJyYXlBLCAoZWxlbWVudEEpID0+IHtcbiAgICAgICAgICBjb25zdCBhcnJheUJJbmNsdWRlc0VsZW1lbnRBID0gYXJyYXlCLmluY2x1ZGVzKGVsZW1lbnRBKTtcblxuICAgICAgICAgIGlmICghYXJyYXlCSW5jbHVkZXNFbGVtZW50QSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBuZXh0UGFzcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBjb3VudCwgIC8vL1xuICAgICAgICAgICAgICBlbGVtZW50QSA9IGFycmF5QVtpbmRleF07XG5cbiAgICAgICAgY2FsbGJhY2soZWxlbWVudEEsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKHBhc3NlZCkgPT4ge1xuICAgICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRCID0gZWxlbWVudEE7ICAvLy9cblxuICAgICAgICAgICAgYXJyYXlCLnB1c2goZWxlbWVudEIpO1xuXG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0RWxlbWVudCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuZXh0RWxlbWVudCgpO1xuICB9XG5cbiAgbmV4dFBhc3MoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyZWFrYWJsZShpbm5lckZ1bmN0aW9uKSB7XG4gIHJldHVybiBmdW5jdGlvbiguLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCByZW1haW5pbmdBcmd1bWVudHNMZW5ndGggPSByZW1haW5pbmdBcmd1bWVudHMubGVuZ3RoLFxuICAgICAgICAgIGlubmVyRnVuY3Rpb25MZW5ndGggPSBpbm5lckZ1bmN0aW9uLmxlbmd0aCxcbiAgICAgICAgICBjb250aW51YXRpb24gPSByZW1haW5pbmdBcmd1bWVudHMucG9wKCksXG4gICAgICAgICAgY29udGV4dCA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKTtcblxuICAgIHRoaXMuYnJlYWsoY29udGV4dCwgKCkgPT4ge1xuICAgICAgaWYgKGlubmVyRnVuY3Rpb25MZW5ndGggPT09IHJlbWFpbmluZ0FyZ3VtZW50c0xlbmd0aCkge1xuICAgICAgICBpbm5lckZ1bmN0aW9uLmNhbGwodGhpcywgLi4ucmVtYWluaW5nQXJndW1lbnRzLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gaW5uZXJGdW5jdGlvbi5jYWxsKHRoaXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgY29udGV4dCk7XG5cbiAgICAgIGNvbnRpbnVhdGlvbihyZXN1bHQpO1xuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5icmVha2FibGUoaW5uZXJGdW5jdGlvbikge1xuICByZXR1cm4gZnVuY3Rpb24oLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgY29uc3QgaW5uZXJGdW5jdGlvbkxlbmd0aCA9IGlubmVyRnVuY3Rpb24ubGVuZ3RoLFxuICAgICAgICAgIHJlbWFpbmluZ0FyZ3VtZW50c0xlbmd0aCA9IHJlbWFpbmluZ0FyZ3VtZW50cy5sZW5ndGg7XG5cbiAgICBpZiAoaW5uZXJGdW5jdGlvbkxlbmd0aCA9PT0gcmVtYWluaW5nQXJndW1lbnRzTGVuZ3RoKSB7XG4gICAgICBpbm5lckZ1bmN0aW9uLmNhbGwodGhpcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRpbnVhdGlvbiA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgICByZXN1bHQgPSBpbm5lckZ1bmN0aW9uLmNhbGwodGhpcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIGNvbnRpbnVhdGlvbihyZXN1bHQpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNvbWUsXG4gIGV2ZXJ5LFxuICByZXNvbHZlLFxuICBicmVha2FibGUsXG4gIHVuYnJlYWthYmxlXG59XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiZXZlcnkiLCJyZXNvbHZlIiwic29tZSIsInVuYnJlYWthYmxlIiwiZmlsdGVyIiwiYXJyYXlVdGlsaXRpZXMiLCJmb3JFYWNoIiwiYXN5bmNocm9ub3VzVXRpbGl0aWVzIiwiYXJyYXkiLCJjYWxsYmFjayIsInJlbWFpbmluZ0FyZ3VtZW50cyIsInN1Y2Nlc3MiLCJjb250aW51YXRpb24iLCJwb3AiLCJlbGVtZW50IiwibmV4dCIsImRvbmUiLCJwYXNzZWQiLCJhcnJheUEiLCJhcnJheUIiLCJuZXh0UGFzcyIsImFycmF5QUxlbmd0aCIsImxlbmd0aCIsImNvdW50IiwibmV4dEVsZW1lbnQiLCJ0ZXJtaW5hdGUiLCJlbGVtZW50QSIsImFycmF5QkluY2x1ZGVzRWxlbWVudEEiLCJpbmNsdWRlcyIsImluZGV4IiwiZWxlbWVudEIiLCJwdXNoIiwiaW5uZXJGdW5jdGlvbiIsInJlbWFpbmluZ0FyZ3VtZW50c0xlbmd0aCIsImlubmVyRnVuY3Rpb25MZW5ndGgiLCJjb250ZXh0IiwiYnJlYWsiLCJjYWxsIiwicmVzdWx0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUF3SGdCQTtlQUFBQTs7UUF1Q2hCO2VBQUE7O1FBbElnQkM7ZUFBQUE7O1FBc0JBQztlQUFBQTs7UUE1Q0FDO2VBQUFBOztRQXNJQUM7ZUFBQUE7OzsyQkEzSXNDO0FBRXRELE1BQU0sRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHlCQUFjLEVBQzNCLEVBQUVDLE9BQU8sRUFBRSxHQUFHQyxnQ0FBcUI7QUFFbEMsU0FBU0wsS0FBS00sS0FBSyxFQUFFQyxRQUFRLEVBQUUsR0FBR0Msa0JBQWtCO0lBQ3pELElBQUlDLFVBQVU7SUFFZCxNQUFNQyxlQUFlRixtQkFBbUJHLEdBQUc7SUFFM0NQLFFBQVFFLE9BQU8sQ0FBQ00sU0FBU0MsTUFBTUM7UUFDN0JQLFNBQVNLLFlBQVlKLG9CQUFvQixD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
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -14,6 +14,7 @@ export { default as ForwardPass } from "./pass/forward";
|
|
|
14
14
|
export { default as AsyncZipPass } from "./pass/asyncZip";
|
|
15
15
|
export { default as ForwardZipPass } from "./pass/forwardZip";
|
|
16
16
|
export { default as EquivalencePass } from "./pass/equivalence";
|
|
17
|
+
export { default as ContinuationPass } from "./pass/continuation";
|
|
17
18
|
|
|
18
19
|
export { default as FurtleLexer } from "./furtle/lexer";
|
|
19
20
|
export { default as FurtleParser } from "./furtle/parser";
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { some, every } from "../utilities/continuation";
|
|
4
|
+
import { nonTerminalNodeQuery } from "../utilities/pass";
|
|
5
|
+
|
|
6
|
+
export default class ContinuationPass {
|
|
7
|
+
run(node, ...remainingArguments) {
|
|
8
|
+
const continuation = remainingArguments.pop();
|
|
9
|
+
|
|
10
|
+
this.visitNode(node, ...remainingArguments, continuation);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
descend(childNodes, ...remainingArguments) {
|
|
14
|
+
const continuation = remainingArguments.pop();
|
|
15
|
+
|
|
16
|
+
every(childNodes, (childNode, continuation) => {
|
|
17
|
+
const node = childNode; ///
|
|
18
|
+
|
|
19
|
+
this.visitNode(node, ...remainingArguments, continuation);
|
|
20
|
+
}, continuation);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
visitNode(node, ...remainingArguments) {
|
|
24
|
+
const continuation = remainingArguments.pop(),
|
|
25
|
+
nodeTerminalNode = node.isTerminalNode();
|
|
26
|
+
|
|
27
|
+
if (nodeTerminalNode) {
|
|
28
|
+
const terminalNode = node; ///
|
|
29
|
+
|
|
30
|
+
this.visitTerminalNode(terminalNode, ...remainingArguments, continuation);
|
|
31
|
+
} else {
|
|
32
|
+
const nonTerminalNode = node; ///
|
|
33
|
+
|
|
34
|
+
this.visitNonTerminalNode(nonTerminalNode, ...remainingArguments, continuation);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
visitTerminalNode(terminalNode, ...remainingArguments) {
|
|
39
|
+
const visited = true,
|
|
40
|
+
continuation = remainingArguments.pop();
|
|
41
|
+
|
|
42
|
+
continuation(visited);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
visitNonTerminalNode(nonTerminalNode, ...remainingArguments) {
|
|
46
|
+
const continuation = remainingArguments.pop();
|
|
47
|
+
|
|
48
|
+
let { maps } = this.constructor;
|
|
49
|
+
|
|
50
|
+
maps = [ ///
|
|
51
|
+
...maps,
|
|
52
|
+
{
|
|
53
|
+
nodeQuery: nonTerminalNodeQuery,
|
|
54
|
+
run: (node, ...remainingArguments) => {
|
|
55
|
+
const continuation = remainingArguments.pop(),
|
|
56
|
+
childNodes = nonTerminalNode.getChildNodes();
|
|
57
|
+
|
|
58
|
+
this.descend(childNodes, ...remainingArguments, continuation);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
some(maps, (map, continuation) => {
|
|
64
|
+
const { nodeQuery, run } = map;
|
|
65
|
+
|
|
66
|
+
const node = nodeQuery(nonTerminalNode);
|
|
67
|
+
|
|
68
|
+
if (node === null) {
|
|
69
|
+
const visited = false;
|
|
70
|
+
|
|
71
|
+
continuation(visited);
|
|
72
|
+
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
run(node, ...remainingArguments, continuation);
|
|
77
|
+
}, continuation);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -31,21 +31,19 @@ export function breakPointToBreakPointJSON(breakPoint) {
|
|
|
31
31
|
export function lineIndexFromNodeAndTokens(node, tokens) {
|
|
32
32
|
let lineIndex = 0;
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
lineIndex = 123;
|
|
34
|
+
const firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens);
|
|
35
|
+
|
|
36
|
+
tokens.some((token, tokenIndex) => {
|
|
37
|
+
const tokenEndOfLineToken = token.isEndOfLineToken();
|
|
38
|
+
|
|
39
|
+
if (tokenEndOfLineToken) {
|
|
40
|
+
lineIndex += 1;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (tokenIndex === firstSignificantTokenIndex) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
49
47
|
|
|
50
48
|
return lineIndex;
|
|
51
49
|
}
|
|
@@ -5,11 +5,35 @@ import { arrayUtilities, asynchronousUtilities } from "necessary";
|
|
|
5
5
|
const { filter } = arrayUtilities,
|
|
6
6
|
{ forEach } = asynchronousUtilities;
|
|
7
7
|
|
|
8
|
-
export function
|
|
8
|
+
export function some(array, callback, ...remainingArguments) {
|
|
9
|
+
let success = false;
|
|
10
|
+
|
|
11
|
+
const continuation = remainingArguments.pop();
|
|
12
|
+
|
|
13
|
+
forEach(array, (element, next, done) => {
|
|
14
|
+
callback(element, ...remainingArguments, (passed) => {
|
|
15
|
+
if (passed) {
|
|
16
|
+
success = true;
|
|
17
|
+
|
|
18
|
+
done();
|
|
19
|
+
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
next();
|
|
24
|
+
});
|
|
25
|
+
}, () => {
|
|
26
|
+
continuation(success);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function every(array, callback, ...remainingArguments) {
|
|
9
31
|
let success = true;
|
|
10
32
|
|
|
11
|
-
|
|
12
|
-
|
|
33
|
+
const continuation = remainingArguments.pop();
|
|
34
|
+
|
|
35
|
+
forEach(array, (element, next, done) => {
|
|
36
|
+
callback(element, ...remainingArguments, (passed) => {
|
|
13
37
|
if (!passed) {
|
|
14
38
|
success = false;
|
|
15
39
|
|
|
@@ -21,27 +45,29 @@ export function every(array, callback, context, contiunation) {
|
|
|
21
45
|
next();
|
|
22
46
|
});
|
|
23
47
|
}, () => {
|
|
24
|
-
|
|
48
|
+
continuation(success);
|
|
25
49
|
});
|
|
26
50
|
}
|
|
27
51
|
|
|
28
|
-
export function resolve(arrayA, arrayB, callback,
|
|
52
|
+
export function resolve(arrayA, arrayB, callback, ...remainingArguments) {
|
|
29
53
|
arrayA = [ ///
|
|
30
54
|
...arrayA
|
|
31
55
|
];
|
|
32
56
|
|
|
57
|
+
const continuation = remainingArguments.pop();
|
|
58
|
+
|
|
33
59
|
function nextPass() {
|
|
34
60
|
const arrayALength = arrayA.length;
|
|
35
61
|
|
|
36
62
|
if (arrayALength === 0) {
|
|
37
|
-
const
|
|
63
|
+
const success = true; ///
|
|
38
64
|
|
|
39
|
-
continuation(
|
|
65
|
+
continuation(success);
|
|
40
66
|
|
|
41
67
|
return;
|
|
42
68
|
}
|
|
43
69
|
|
|
44
|
-
let
|
|
70
|
+
let success = false;
|
|
45
71
|
|
|
46
72
|
let count = -1;
|
|
47
73
|
|
|
@@ -51,10 +77,10 @@ export function resolve(arrayA, arrayB, callback, continuation) {
|
|
|
51
77
|
const terminate = (count === arrayALength);
|
|
52
78
|
|
|
53
79
|
if (terminate) {
|
|
54
|
-
if (!
|
|
55
|
-
const
|
|
80
|
+
if (!success) {
|
|
81
|
+
const success = false; ///
|
|
56
82
|
|
|
57
|
-
continuation(
|
|
83
|
+
continuation(success);
|
|
58
84
|
|
|
59
85
|
return;
|
|
60
86
|
}
|
|
@@ -72,13 +98,13 @@ export function resolve(arrayA, arrayB, callback, continuation) {
|
|
|
72
98
|
const index = count, ///
|
|
73
99
|
elementA = arrayA[index];
|
|
74
100
|
|
|
75
|
-
callback(elementA, (passed) => {
|
|
101
|
+
callback(elementA, ...remainingArguments, (passed) => {
|
|
76
102
|
if (passed) {
|
|
77
103
|
const elementB = elementA; ///
|
|
78
104
|
|
|
79
105
|
arrayB.push(elementB);
|
|
80
106
|
|
|
81
|
-
|
|
107
|
+
success = true;
|
|
82
108
|
}
|
|
83
109
|
|
|
84
110
|
nextElement();
|
|
@@ -132,6 +158,7 @@ export function unbreakable(innerFunction) {
|
|
|
132
158
|
}
|
|
133
159
|
|
|
134
160
|
export default {
|
|
161
|
+
some,
|
|
135
162
|
every,
|
|
136
163
|
resolve,
|
|
137
164
|
breakable,
|