occam-languages 1.0.33 → 1.0.35

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 CHANGED
@@ -12,6 +12,9 @@ _export(exports, {
12
12
  get AsyncPass () {
13
13
  return _async.default;
14
14
  },
15
+ get AsyncZipPass () {
16
+ return _asyncZip.default;
17
+ },
15
18
  get BreakPoint () {
16
19
  return _breakPoint.default;
17
20
  },
@@ -101,6 +104,7 @@ const _zip = /*#__PURE__*/ _interop_require_default(require("./pass/zip"));
101
104
  const _async = /*#__PURE__*/ _interop_require_default(require("./pass/async"));
102
105
  const _simple = /*#__PURE__*/ _interop_require_default(require("./pass/simple"));
103
106
  const _forward = /*#__PURE__*/ _interop_require_default(require("./pass/forward"));
107
+ const _asyncZip = /*#__PURE__*/ _interop_require_default(require("./pass/asyncZip"));
104
108
  const _forwardZip = /*#__PURE__*/ _interop_require_default(require("./pass/forwardZip"));
105
109
  const _equivalence = /*#__PURE__*/ _interop_require_default(require("./pass/equivalence"));
106
110
  const _lexer = /*#__PURE__*/ _interop_require_default(require("./furtle/lexer"));
@@ -124,4 +128,4 @@ function _interop_require_default(obj) {
124
128
  };
125
129
  }
126
130
 
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQnJlYWtQb2ludCB9IGZyb20gXCIuL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L2ZpbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L3JlbGVhc2VcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBaaXBQYXNzIH0gZnJvbSBcIi4vcGFzcy96aXBcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQXN5bmNQYXNzIH0gZnJvbSBcIi4vcGFzcy9hc3luY1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTaW1wbGVQYXNzIH0gZnJvbSBcIi4vcGFzcy9zaW1wbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRm9yd2FyZFBhc3MgfSBmcm9tIFwiLi9wYXNzL2ZvcndhcmRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRm9yd2FyZFppcFBhc3MgfSBmcm9tIFwiLi9wYXNzL2ZvcndhcmRaaXBcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRXF1aXZhbGVuY2VQYXNzIH0gZnJvbSBcIi4vcGFzcy9lcXVpdmFsZW5jZVwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIEZ1cnRsZUxleGVyIH0gZnJvbSBcIi4vZnVydGxlL2xleGVyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZ1cnRsZVBhcnNlciB9IGZyb20gXCIuL2Z1cnRsZS9wYXJzZXJcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTm9taW5hbExleGVyIH0gZnJvbSBcIi4vbm9taW5hbC9sZXhlclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb21pbmFsUGFyc2VyIH0gZnJvbSBcIi4vbm9taW5hbC9wYXJzZXJcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb25UZXJtaW5hbE5vZGUgfSBmcm9tIFwiLi9ub25UZXJtaW5hbE5vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlTWl4aW5zIH0gZnJvbSBcIi4vbWl4aW5zL25vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBibmZVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYm5mXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vZGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvbm9kZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmdXJ0bGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZnVydGxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vbWluYWxVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvbm9taW5hbFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsZUNvbnRleHRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZUNvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmVyaWZpY2F0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3ZlcmlmaWNhdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhc3luY2hyb25vdXNVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXN5bmNocm9ub3VzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VDb250ZXh0XCI7XG4iXSwibmFtZXMiOlsiQXN5bmNQYXNzIiwiQnJlYWtQb2ludCIsIkNvbnRleHQiLCJFbGVtZW50IiwiRXF1aXZhbGVuY2VQYXNzIiwiRmlsZUNvbnRleHQiLCJGb3J3YXJkUGFzcyIsIkZvcndhcmRaaXBQYXNzIiwiRnVydGxlTGV4ZXIiLCJGdXJ0bGVQYXJzZXIiLCJMb2ciLCJOb21pbmFsTGV4ZXIiLCJOb21pbmFsUGFyc2VyIiwiTm9uVGVybWluYWxOb2RlIiwiUmVsZWFzZUNvbnRleHQiLCJTaW1wbGVQYXNzIiwiWmlwUGFzcyIsImFzeW5jaHJvbm91c1V0aWxpdGllcyIsImJuZlV0aWxpdGllcyIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJmaWxlQ29udGV4dFV0aWxpdGllcyIsImZ1cnRsZVV0aWxpdGllcyIsIm5vZGVNaXhpbnMiLCJub2RlVXRpbGl0aWVzIiwibm9taW5hbFV0aWxpdGllcyIsInJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIiwidmVyaWZpY2F0aW9uVXRpbGl0aWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFVb0JBO2VBQUFBLGNBQVM7O1FBTFRDO2VBQUFBLG1CQUFVOztRQURWQztlQUFBQSxnQkFBTzs7UUFEUEM7ZUFBQUEsZ0JBQU87O1FBV1BDO2VBQUFBLG9CQUFlOztRQVJmQztlQUFBQSxhQUFXOztRQU1YQztlQUFBQSxnQkFBVzs7UUFDWEM7ZUFBQUEsbUJBQWM7O1FBR2RDO2VBQUFBLGNBQVc7O1FBQ1hDO2VBQUFBLGVBQVk7O1FBZlpDO2VBQUFBLFlBQUc7O1FBZ0JIQztlQUFBQSxlQUFZOztRQUNaQztlQUFBQSxnQkFBYTs7UUFFYkM7ZUFBQUEsd0JBQWU7O1FBZGZDO2VBQUFBLGdCQUFjOztRQUlkQztlQUFBQSxlQUFVOztRQUZWQztlQUFBQSxZQUFPOztRQXVCUEM7ZUFBQUEscUJBQXFCOztRQVByQkM7ZUFBQUEsWUFBWTs7UUFJWkM7ZUFBQUEsb0JBQW1COztRQUNuQkM7ZUFBQUEsb0JBQW9COztRQUhwQkM7ZUFBQUEsZUFBZTs7UUFKZkM7ZUFBQUEsYUFBVTs7UUFHVkM7ZUFBQUEsY0FBYTs7UUFFYkM7ZUFBQUEsZ0JBQWdCOztRQUtoQkM7ZUFBQUEsdUJBQXVCOztRQUZ2QkM7ZUFBQUEscUJBQXFCOzs7NERBN0JWO2dFQUNJO2dFQUNBO21FQUNHOzZEQUNDO2dFQUNHOzREQUVQOzhEQUNFOytEQUNDO2dFQUNDO21FQUNHO29FQUNDOzhEQUVKOytEQUNDOytEQUNBO2dFQUNDO3dFQUVFOzZEQUVMOzREQUVFOzhEQUNDOytEQUNFO2dFQUNDO29FQUNHO29FQUNDO3FFQUNDO3FFQUNBO3VFQUNFIn0=
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQnJlYWtQb2ludCB9IGZyb20gXCIuL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L2ZpbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L3JlbGVhc2VcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBaaXBQYXNzIH0gZnJvbSBcIi4vcGFzcy96aXBcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQXN5bmNQYXNzIH0gZnJvbSBcIi4vcGFzcy9hc3luY1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTaW1wbGVQYXNzIH0gZnJvbSBcIi4vcGFzcy9zaW1wbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRm9yd2FyZFBhc3MgfSBmcm9tIFwiLi9wYXNzL2ZvcndhcmRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQXN5bmNaaXBQYXNzIH0gZnJvbSBcIi4vcGFzcy9hc3luY1ppcFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBGb3J3YXJkWmlwUGFzcyB9IGZyb20gXCIuL3Bhc3MvZm9yd2FyZFppcFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBFcXVpdmFsZW5jZVBhc3MgfSBmcm9tIFwiLi9wYXNzL2VxdWl2YWxlbmNlXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgRnVydGxlTGV4ZXIgfSBmcm9tIFwiLi9mdXJ0bGUvbGV4ZXJcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRnVydGxlUGFyc2VyIH0gZnJvbSBcIi4vZnVydGxlL3BhcnNlclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb21pbmFsTGV4ZXIgfSBmcm9tIFwiLi9ub21pbmFsL2xleGVyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE5vbWluYWxQYXJzZXIgfSBmcm9tIFwiLi9ub21pbmFsL3BhcnNlclwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIE5vblRlcm1pbmFsTm9kZSB9IGZyb20gXCIuL25vblRlcm1pbmFsTm9kZVwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vZGVNaXhpbnMgfSBmcm9tIFwiLi9taXhpbnMvbm9kZVwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIGJuZlV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9ibmZcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbm9kZVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9ub2RlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZ1cnRsZVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9mdXJ0bGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbm9taW5hbFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9ub21pbmFsXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYnJlYWtQb2ludFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmaWxlQ29udGV4dFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9maWxlQ29udGV4dFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB2ZXJpZmljYXRpb25VdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvdmVyaWZpY2F0aW9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFzeW5jaHJvbm91c1V0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9hc3luY2hyb25vdXNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcmVsZWFzZUNvbnRleHRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHRcIjtcbiJdLCJuYW1lcyI6WyJBc3luY1Bhc3MiLCJBc3luY1ppcFBhc3MiLCJCcmVha1BvaW50IiwiQ29udGV4dCIsIkVsZW1lbnQiLCJFcXVpdmFsZW5jZVBhc3MiLCJGaWxlQ29udGV4dCIsIkZvcndhcmRQYXNzIiwiRm9yd2FyZFppcFBhc3MiLCJGdXJ0bGVMZXhlciIsIkZ1cnRsZVBhcnNlciIsIkxvZyIsIk5vbWluYWxMZXhlciIsIk5vbWluYWxQYXJzZXIiLCJOb25UZXJtaW5hbE5vZGUiLCJSZWxlYXNlQ29udGV4dCIsIlNpbXBsZVBhc3MiLCJaaXBQYXNzIiwiYXN5bmNocm9ub3VzVXRpbGl0aWVzIiwiYm5mVXRpbGl0aWVzIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImZpbGVDb250ZXh0VXRpbGl0aWVzIiwiZnVydGxlVXRpbGl0aWVzIiwibm9kZU1peGlucyIsIm5vZGVVdGlsaXRpZXMiLCJub21pbmFsVXRpbGl0aWVzIiwicmVsZWFzZUNvbnRleHRVdGlsaXRpZXMiLCJ2ZXJpZmljYXRpb25VdGlsaXRpZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVVvQkE7ZUFBQUEsY0FBUzs7UUFHVEM7ZUFBQUEsaUJBQVk7O1FBUlpDO2VBQUFBLG1CQUFVOztRQURWQztlQUFBQSxnQkFBTzs7UUFEUEM7ZUFBQUEsZ0JBQU87O1FBWVBDO2VBQUFBLG9CQUFlOztRQVRmQztlQUFBQSxhQUFXOztRQU1YQztlQUFBQSxnQkFBVzs7UUFFWEM7ZUFBQUEsbUJBQWM7O1FBR2RDO2VBQUFBLGNBQVc7O1FBQ1hDO2VBQUFBLGVBQVk7O1FBaEJaQztlQUFBQSxZQUFHOztRQWlCSEM7ZUFBQUEsZUFBWTs7UUFDWkM7ZUFBQUEsZ0JBQWE7O1FBRWJDO2VBQUFBLHdCQUFlOztRQWZmQztlQUFBQSxnQkFBYzs7UUFJZEM7ZUFBQUEsZUFBVTs7UUFGVkM7ZUFBQUEsWUFBTzs7UUF3QlBDO2VBQUFBLHFCQUFxQjs7UUFQckJDO2VBQUFBLFlBQVk7O1FBSVpDO2VBQUFBLG9CQUFtQjs7UUFDbkJDO2VBQUFBLG9CQUFvQjs7UUFIcEJDO2VBQUFBLGVBQWU7O1FBSmZDO2VBQUFBLGFBQVU7O1FBR1ZDO2VBQUFBLGNBQWE7O1FBRWJDO2VBQUFBLGdCQUFnQjs7UUFLaEJDO2VBQUFBLHVCQUF1Qjs7UUFGdkJDO2VBQUFBLHFCQUFxQjs7OzREQTlCVjtnRUFDSTtnRUFDQTttRUFDRzs2REFDQztnRUFDRzs0REFFUDs4REFDRTsrREFDQztnRUFDQztpRUFDQzttRUFDRTtvRUFDQzs4REFFSjsrREFDQzsrREFDQTtnRUFDQzt3RUFFRTs2REFFTDs0REFFRTs4REFDQzsrREFDRTtnRUFDQztvRUFDRztvRUFDQztxRUFDQztxRUFDQTt1RUFDRSJ9
@@ -0,0 +1,89 @@
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 AsyncZipPass;
9
+ }
10
+ });
11
+ const _asynchronous = require("../utilities/asynchronous");
12
+ const _pass = require("../utilities/pass");
13
+ class AsyncZipPass {
14
+ async run(generalNode, specificNode, ...remainingArguments) {
15
+ let success;
16
+ const visited = await this.visitNode(generalNode, specificNode, ...remainingArguments);
17
+ success = visited; ///
18
+ return success;
19
+ }
20
+ async descend(generalChildNodes, specificChildNodes, ...remainingArguments) {
21
+ let descended = false;
22
+ const childNodesCongruent = (0, _pass.areChildNodesCongruent)(generalChildNodes, specificChildNodes);
23
+ if (childNodesCongruent) {
24
+ const visited = await (0, _asynchronous.asyncEvery)(generalChildNodes, async (generalChildNode, index)=>{
25
+ const specificChildNode = specificChildNodes[index], specificNode = specificChildNode, generalNode = generalChildNode, visited = await this.visitNode(generalNode, specificNode, ...remainingArguments);
26
+ if (visited) {
27
+ return true;
28
+ }
29
+ });
30
+ if (visited) {
31
+ descended = true;
32
+ }
33
+ }
34
+ return descended;
35
+ }
36
+ async visitNode(generalNode, specificNode, ...remainingArguments) {
37
+ let visited = false;
38
+ const generalNodeTerminalNode = generalNode.isTerminalNode(), specificNodeTerminalNode = specificNode.isTerminalNode(), generalNodeNonTerminalNode = generalNode.isNonTerminalNode(), specificNodeNonTerminalNode = specificNode.isNonTerminalNode();
39
+ if (false) {
40
+ ///
41
+ } else if (generalNodeTerminalNode && specificNodeTerminalNode) {
42
+ const generalTerminalNode = generalNode, specificTerminalNode = specificNode; ///
43
+ visited = await this.visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments);
44
+ } else if (generalNodeNonTerminalNode && specificNodeNonTerminalNode) {
45
+ const generalNonTerminalNode = generalNode, specificNonTerminalNode = specificNode; ///
46
+ visited = await this.visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments);
47
+ }
48
+ return visited;
49
+ }
50
+ async visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments) {
51
+ let visited;
52
+ visited = true;
53
+ return visited;
54
+ }
55
+ async visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments) {
56
+ let visited = false;
57
+ let { maps } = this.constructor;
58
+ maps = [
59
+ ...maps,
60
+ {
61
+ generalNodeQuery: _pass.nonTerminalNodeQuery,
62
+ specificNodeQuery: _pass.nonTerminalNodeQuery,
63
+ run: async (generalNode, specificNode, ...remainingArguments)=>{
64
+ let visited = false;
65
+ const generalNonTerminalNodeRuleName = generalNonTerminalNode.getRuleName(), specificNonTerminalNodeRuleName = specificNonTerminalNode.getRuleName(); ///
66
+ if (generalNonTerminalNodeRuleName === specificNonTerminalNodeRuleName) {
67
+ const generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(), specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(), generalChildNodes = generalNonTerminalNodeChildNodes, specificChildNodes = specificNonTerminalNodeChildNodes, descended = await this.descend(generalChildNodes, specificChildNodes, ...remainingArguments);
68
+ if (descended) {
69
+ visited = true;
70
+ }
71
+ }
72
+ return visited;
73
+ }
74
+ }
75
+ ];
76
+ await (0, _asynchronous.asyncSome)(maps, async (map)=>{
77
+ const { generalNodeQuery, specificNodeQuery, run } = map;
78
+ const generalNode = generalNodeQuery(generalNonTerminalNode), specificNode = specificNodeQuery(specificNonTerminalNode); ///
79
+ if (generalNode !== null && specificNode !== null) {
80
+ const success = await run(generalNode, specificNode, ...remainingArguments);
81
+ visited = success; ///
82
+ return true;
83
+ }
84
+ });
85
+ return visited;
86
+ }
87
+ }
88
+
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL2FzeW5jWmlwLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhc3luY1NvbWUsIGFzeW5jRXZlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FzeW5jaHJvbm91c1wiO1xuaW1wb3J0IHsgbm9uVGVybWluYWxOb2RlUXVlcnksIGFyZUNoaWxkTm9kZXNDb25ncnVlbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3Bhc3NcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXN5bmNaaXBQYXNzIHtcbiAgYXN5bmMgcnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgY29uc3QgdmlzaXRlZCA9IGF3YWl0IHRoaXMudmlzaXROb2RlKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBzdWNjZXNzID0gdmlzaXRlZDsgIC8vL1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICBhc3luYyBkZXNjZW5kKGdlbmVyYWxDaGlsZE5vZGVzLCBzcGVjaWZpY0NoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBkZXNjZW5kZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNoaWxkTm9kZXNDb25ncnVlbnQgPSBhcmVDaGlsZE5vZGVzQ29uZ3J1ZW50KGdlbmVyYWxDaGlsZE5vZGVzLCBzcGVjaWZpY0NoaWxkTm9kZXMpO1xuXG4gICAgaWYgKGNoaWxkTm9kZXNDb25ncnVlbnQpIHtcbiAgICAgIGNvbnN0IHZpc2l0ZWQgPSBhd2FpdCBhc3luY0V2ZXJ5KGdlbmVyYWxDaGlsZE5vZGVzLCBhc3luYyAoZ2VuZXJhbENoaWxkTm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3Qgc3BlY2lmaWNDaGlsZE5vZGUgPSBzcGVjaWZpY0NoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY0NoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGdlbmVyYWxOb2RlID0gZ2VuZXJhbENoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZpc2l0ZWQgPSBhd2FpdCB0aGlzLnZpc2l0Tm9kZShnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgIGlmICh2aXNpdGVkKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodmlzaXRlZCkge1xuICAgICAgICBkZXNjZW5kZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkZXNjZW5kZWQ7XG4gIH1cblxuICBhc3luYyB2aXNpdE5vZGUoZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGdlbmVyYWxOb2RlVGVybWluYWxOb2RlID0gZ2VuZXJhbE5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICBzcGVjaWZpY05vZGVUZXJtaW5hbE5vZGUgPSBzcGVjaWZpY05vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICBnZW5lcmFsTm9kZU5vblRlcm1pbmFsTm9kZSA9IGdlbmVyYWxOb2RlLmlzTm9uVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgc3BlY2lmaWNOb2RlTm9uVGVybWluYWxOb2RlID0gc3BlY2lmaWNOb2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAoZ2VuZXJhbE5vZGVUZXJtaW5hbE5vZGUgJiYgc3BlY2lmaWNOb2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBnZW5lcmFsVGVybWluYWxOb2RlID0gZ2VuZXJhbE5vZGUsICAvLy9cbiAgICAgICAgICAgIHNwZWNpZmljVGVybWluYWxOb2RlID0gc3BlY2lmaWNOb2RlOyAgLy8vXG5cbiAgICAgIHZpc2l0ZWQgPSBhd2FpdCB0aGlzLnZpc2l0VGVybWluYWxOb2RlKGdlbmVyYWxUZXJtaW5hbE5vZGUsIHNwZWNpZmljVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgIH0gZWxzZSBpZiAoZ2VuZXJhbE5vZGVOb25UZXJtaW5hbE5vZGUgJiYgc3BlY2lmaWNOb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBnZW5lcmFsTm9uVGVybWluYWxOb2RlID0gZ2VuZXJhbE5vZGUsICAvLy9cbiAgICAgICAgICAgIHNwZWNpZmljTm9uVGVybWluYWxOb2RlID0gc3BlY2lmaWNOb2RlOyAvLy9cblxuICAgICAgdmlzaXRlZCA9IGF3YWl0IHRoaXMudmlzaXROb25UZXJtaW5hbE5vZGUoZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSwgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cblxuICBhc3luYyB2aXNpdFRlcm1pbmFsTm9kZShnZW5lcmFsVGVybWluYWxOb2RlLCBzcGVjaWZpY1Rlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7IC8vL1xuICAgIGxldCB2aXNpdGVkO1xuXG4gICAgdmlzaXRlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxuXG4gIGFzeW5jIHZpc2l0Tm9uVGVybWluYWxOb2RlKGdlbmVyYWxOb25UZXJtaW5hbE5vZGUsIHNwZWNpZmljTm9uVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgbGV0IHsgbWFwcyB9ID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICAgIG1hcHMgPSBbIC8vL1xuICAgICAgLi4ubWFwcyxcbiAgICAgIHtcbiAgICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogbm9uVGVybWluYWxOb2RlUXVlcnksXG4gICAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBub25UZXJtaW5hbE5vZGVRdWVyeSxcbiAgICAgICAgcnVuOiBhc3luYyAoZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSA9PiB7XG4gICAgICAgICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIGNvbnN0IGdlbmVyYWxOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IGdlbmVyYWxOb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSwgLy8vXG4gICAgICAgICAgICAgICAgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IHNwZWNpZmljTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7IC8vL1xuXG4gICAgICAgICAgaWYgKGdlbmVyYWxOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gc3BlY2lmaWNOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhbE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBnZW5lcmFsTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIHNwZWNpZmljTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IHNwZWNpZmljTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIGdlbmVyYWxDaGlsZE5vZGVzID0gZ2VuZXJhbE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNDaGlsZE5vZGVzID0gc3BlY2lmaWNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICAgIGRlc2NlbmRlZCA9IGF3YWl0IHRoaXMuZGVzY2VuZChnZW5lcmFsQ2hpbGROb2Rlcywgc3BlY2lmaWNDaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgICAgICBpZiAoZGVzY2VuZGVkKSB7XG4gICAgICAgICAgICAgIHZpc2l0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2aXNpdGVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuXG4gICAgYXdhaXQgYXN5bmNTb21lKG1hcHMsIGFzeW5jIChtYXApID0+IHtcbiAgICAgIGNvbnN0IHsgZ2VuZXJhbE5vZGVRdWVyeSwgc3BlY2lmaWNOb2RlUXVlcnksIHJ1biB9ID0gbWFwO1xuXG4gICAgICBjb25zdCBnZW5lcmFsTm9kZSA9IGdlbmVyYWxOb2RlUXVlcnkoZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSksICAvLy9cbiAgICAgICAgICAgIHNwZWNpZmljTm9kZSA9IHNwZWNpZmljTm9kZVF1ZXJ5KHNwZWNpZmljTm9uVGVybWluYWxOb2RlKTsgIC8vL1xuXG4gICAgICBpZiAoKGdlbmVyYWxOb2RlICE9PSBudWxsKSAmJiAoc3BlY2lmaWNOb2RlICE9PSBudWxsKSkge1xuICAgICAgICBjb25zdCBzdWNjZXNzICA9IGF3YWl0IHJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgIHZpc2l0ZWQgPSBzdWNjZXNzOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkFzeW5jWmlwUGFzcyIsInJ1biIsImdlbmVyYWxOb2RlIiwic3BlY2lmaWNOb2RlIiwicmVtYWluaW5nQXJndW1lbnRzIiwic3VjY2VzcyIsInZpc2l0ZWQiLCJ2aXNpdE5vZGUiLCJkZXNjZW5kIiwiZ2VuZXJhbENoaWxkTm9kZXMiLCJzcGVjaWZpY0NoaWxkTm9kZXMiLCJkZXNjZW5kZWQiLCJjaGlsZE5vZGVzQ29uZ3J1ZW50IiwiYXJlQ2hpbGROb2Rlc0NvbmdydWVudCIsImFzeW5jRXZlcnkiLCJnZW5lcmFsQ2hpbGROb2RlIiwiaW5kZXgiLCJzcGVjaWZpY0NoaWxkTm9kZSIsImdlbmVyYWxOb2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vZGVUZXJtaW5hbE5vZGUiLCJnZW5lcmFsTm9kZU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwic3BlY2lmaWNOb2RlTm9uVGVybWluYWxOb2RlIiwiZ2VuZXJhbFRlcm1pbmFsTm9kZSIsInNwZWNpZmljVGVybWluYWxOb2RlIiwidmlzaXRUZXJtaW5hbE5vZGUiLCJnZW5lcmFsTm9uVGVybWluYWxOb2RlIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGUiLCJ2aXNpdE5vblRlcm1pbmFsTm9kZSIsIm1hcHMiLCJnZW5lcmFsTm9kZVF1ZXJ5Iiwibm9uVGVybWluYWxOb2RlUXVlcnkiLCJzcGVjaWZpY05vZGVRdWVyeSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdldFJ1bGVOYW1lIiwic3BlY2lmaWNOb25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsInNwZWNpZmljTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsImFzeW5jU29tZSIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBS0E7OztlQUFxQkE7Ozs4QkFIaUI7c0JBQ3VCO0FBRTlDLE1BQU1BO0lBQ25CLE1BQU1DLElBQUlDLFdBQVcsRUFBRUMsWUFBWSxFQUFFLEdBQUdDLGtCQUFrQixFQUFFO1FBQzFELElBQUlDO1FBRUosTUFBTUMsVUFBVSxNQUFNLElBQUksQ0FBQ0MsU0FBUyxDQUFDTCxhQUFhQyxpQkFBaUJDO1FBRW5FQyxVQUFVQyxTQUFVLEdBQUc7UUFFdkIs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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-languages",
3
3
  "author": "James Smith",
4
- "version": "1.0.33",
4
+ "version": "1.0.35",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-languages",
7
7
  "description": "Occam's common language functionality.",
@@ -11,11 +11,11 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "necessary": "^17.5.2",
14
- "occam-custom-grammars": "^6.0.126",
14
+ "occam-custom-grammars": "^6.0.127",
15
15
  "occam-grammar-utilities": "^8.1.17",
16
- "occam-grammars": "^1.3.630",
16
+ "occam-grammars": "^1.3.632",
17
17
  "occam-lexers": "^23.2.4",
18
- "occam-model": "^1.0.560",
18
+ "occam-model": "^1.0.561",
19
19
  "occam-parsers": "^23.2.7",
20
20
  "occam-query": "^4.1.198"
21
21
  },
package/src/index.js CHANGED
@@ -11,6 +11,7 @@ export { default as ZipPass } from "./pass/zip";
11
11
  export { default as AsyncPass } from "./pass/async";
12
12
  export { default as SimplePass } from "./pass/simple";
13
13
  export { default as ForwardPass } from "./pass/forward";
14
+ export { default as AsyncZipPass } from "./pass/asyncZip";
14
15
  export { default as ForwardZipPass } from "./pass/forwardZip";
15
16
  export { default as EquivalencePass } from "./pass/equivalence";
16
17
 
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+
3
+ import { asyncSome, asyncEvery } from "../utilities/asynchronous";
4
+ import { nonTerminalNodeQuery, areChildNodesCongruent } from "../utilities/pass";
5
+
6
+ export default class AsyncZipPass {
7
+ async run(generalNode, specificNode, ...remainingArguments) {
8
+ let success;
9
+
10
+ const visited = await this.visitNode(generalNode, specificNode, ...remainingArguments);
11
+
12
+ success = visited; ///
13
+
14
+ return success;
15
+ }
16
+
17
+ async descend(generalChildNodes, specificChildNodes, ...remainingArguments) {
18
+ let descended = false;
19
+
20
+ const childNodesCongruent = areChildNodesCongruent(generalChildNodes, specificChildNodes);
21
+
22
+ if (childNodesCongruent) {
23
+ const visited = await asyncEvery(generalChildNodes, async (generalChildNode, index) => {
24
+ const specificChildNode = specificChildNodes[index],
25
+ specificNode = specificChildNode, ///
26
+ generalNode = generalChildNode, ///
27
+ visited = await this.visitNode(generalNode, specificNode, ...remainingArguments);
28
+
29
+ if (visited) {
30
+ return true;
31
+ }
32
+ });
33
+
34
+ if (visited) {
35
+ descended = true;
36
+ }
37
+ }
38
+
39
+ return descended;
40
+ }
41
+
42
+ async visitNode(generalNode, specificNode, ...remainingArguments) {
43
+ let visited = false;
44
+
45
+ const generalNodeTerminalNode = generalNode.isTerminalNode(),
46
+ specificNodeTerminalNode = specificNode.isTerminalNode(),
47
+ generalNodeNonTerminalNode = generalNode.isNonTerminalNode(),
48
+ specificNodeNonTerminalNode = specificNode.isNonTerminalNode();
49
+
50
+ if (false) {
51
+ ///
52
+ } else if (generalNodeTerminalNode && specificNodeTerminalNode) {
53
+ const generalTerminalNode = generalNode, ///
54
+ specificTerminalNode = specificNode; ///
55
+
56
+ visited = await this.visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments);
57
+ } else if (generalNodeNonTerminalNode && specificNodeNonTerminalNode) {
58
+ const generalNonTerminalNode = generalNode, ///
59
+ specificNonTerminalNode = specificNode; ///
60
+
61
+ visited = await this.visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments);
62
+ }
63
+
64
+ return visited;
65
+ }
66
+
67
+ async visitTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments) { ///
68
+ let visited;
69
+
70
+ visited = true;
71
+
72
+ return visited;
73
+ }
74
+
75
+ async visitNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments) {
76
+ let visited = false;
77
+
78
+ let { maps } = this.constructor;
79
+
80
+ maps = [ ///
81
+ ...maps,
82
+ {
83
+ generalNodeQuery: nonTerminalNodeQuery,
84
+ specificNodeQuery: nonTerminalNodeQuery,
85
+ run: async (generalNode, specificNode, ...remainingArguments) => {
86
+ let visited = false;
87
+
88
+ const generalNonTerminalNodeRuleName = generalNonTerminalNode.getRuleName(), ///
89
+ specificNonTerminalNodeRuleName = specificNonTerminalNode.getRuleName(); ///
90
+
91
+ if (generalNonTerminalNodeRuleName === specificNonTerminalNodeRuleName) {
92
+ const generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(),
93
+ specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(),
94
+ generalChildNodes = generalNonTerminalNodeChildNodes, ///
95
+ specificChildNodes = specificNonTerminalNodeChildNodes, ///
96
+ descended = await this.descend(generalChildNodes, specificChildNodes, ...remainingArguments);
97
+
98
+ if (descended) {
99
+ visited = true;
100
+ }
101
+ }
102
+
103
+ return visited;
104
+ }
105
+ }
106
+ ]
107
+
108
+ await asyncSome(maps, async (map) => {
109
+ const { generalNodeQuery, specificNodeQuery, run } = map;
110
+
111
+ const generalNode = generalNodeQuery(generalNonTerminalNode), ///
112
+ specificNode = specificNodeQuery(specificNonTerminalNode); ///
113
+
114
+ if ((generalNode !== null) && (specificNode !== null)) {
115
+ const success = await run(generalNode, specificNode, ...remainingArguments);
116
+
117
+ visited = success; ///
118
+
119
+ return true;
120
+ }
121
+ });
122
+
123
+ return visited;
124
+ }
125
+ }