occam-languages 2.2.17 → 2.2.20

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.
@@ -1,88 +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 EquivalencePass;
9
- }
10
- });
11
- const _pass = require("../utilities/pass");
12
- class EquivalencePass {
13
- run(leftNode, rightNode, ...remainingArguments) {
14
- let success;
15
- const visited = this.visitNode(leftNode, rightNode, ...remainingArguments);
16
- success = visited; ///
17
- return success;
18
- }
19
- descend(leftChildNodes, rightChildNodes, ...remainingArguments) {
20
- let descended = false;
21
- const childNodesCongruent = (0, _pass.areChildNodesCongruent)(leftChildNodes, rightChildNodes);
22
- if (childNodesCongruent) {
23
- const visited = leftChildNodes.every((leftChildNode, index)=>{
24
- const rightChildNode = rightChildNodes[index], leftNode = leftChildNode, rightNode = rightChildNode, visited = this.visitNode(leftNode, rightNode, ...remainingArguments);
25
- if (visited) {
26
- return true;
27
- }
28
- });
29
- if (visited) {
30
- descended = true;
31
- }
32
- }
33
- return descended;
34
- }
35
- visitNode(leftNode, rightNode, ...remainingArguments) {
36
- let visited = false;
37
- const leftNodeTerminalNode = leftNode.isTerminalNode(), rightNodeTerminalNode = rightNode.isTerminalNode(), leftNodeNonTerminalNode = leftNode.isNonTerminalNode(), rightNodeNonTerminalNode = rightNode.isNonTerminalNode();
38
- if (false) {
39
- ///
40
- } else if (leftNodeTerminalNode && rightNodeTerminalNode) {
41
- const leftTerminalNode = leftNode, rightTerminalNode = rightNode; ///
42
- visited = this.visitTerminalNode(leftTerminalNode, rightTerminalNode, ...remainingArguments);
43
- } else if (leftNodeNonTerminalNode && rightNodeNonTerminalNode) {
44
- const leftNonTerminalNode = leftNode, rightNonTerminalNode = rightNode; ///
45
- visited = this.visitNonTerminalNode(leftNonTerminalNode, rightNonTerminalNode, ...remainingArguments);
46
- }
47
- return visited;
48
- }
49
- visitTerminalNode(leftTerminalNode, rightTerminalNode, ...remainingArguments) {
50
- let visited;
51
- visited = true;
52
- return visited;
53
- }
54
- visitNonTerminalNode(leftNonTerminalNode, rightNonTerminalNode, ...remainingArguments) {
55
- let visited = false;
56
- let { maps } = this.constructor;
57
- maps = [
58
- ...maps,
59
- {
60
- leftNodeQuery: _pass.nonTerminalNodeQuery,
61
- rightNodeQuery: _pass.nonTerminalNodeQuery,
62
- run: (leftNode, rightNode, ...remainingArguments)=>{
63
- let visited = false;
64
- const leftNonTerminalNodeRuleName = leftNonTerminalNode.getRuleName(), rightNonTerminalNodeRuleName = rightNonTerminalNode.getRuleName(); ///
65
- if (leftNonTerminalNodeRuleName === rightNonTerminalNodeRuleName) {
66
- const leftNonTerminalNodeChildNodes = leftNonTerminalNode.getChildNodes(), rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(), leftChildNodes = leftNonTerminalNodeChildNodes, rightChildNodes = rightNonTerminalNodeChildNodes, descended = this.descend(leftChildNodes, rightChildNodes, ...remainingArguments);
67
- if (descended) {
68
- visited = true;
69
- }
70
- }
71
- return visited;
72
- }
73
- }
74
- ];
75
- maps.some((map)=>{
76
- const { leftNodeQuery, rightNodeQuery, run } = map;
77
- const leftNode = leftNodeQuery(leftNonTerminalNode), rightNode = rightNodeQuery(rightNonTerminalNode); ///
78
- if (leftNode !== null && rightNode !== null) {
79
- const success = run(leftNode, rightNode, ...remainingArguments);
80
- visited = success; ///
81
- return true;
82
- }
83
- });
84
- return visited;
85
- }
86
- }
87
-
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXNzL2VxdWl2YWxlbmNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBub25UZXJtaW5hbE5vZGVRdWVyeSwgYXJlQ2hpbGROb2Rlc0NvbmdydWVudCB9IGZyb20gXCIuLi91dGlsaXRpZXMvcGFzc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFcXVpdmFsZW5jZVBhc3Mge1xuICBydW4obGVmdE5vZGUsIHJpZ2h0Tm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBjb25zdCB2aXNpdGVkID0gdGhpcy52aXNpdE5vZGUobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIHN1Y2Nlc3MgPSB2aXNpdGVkOyAgLy8vXG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIGRlc2NlbmQobGVmdENoaWxkTm9kZXMsIHJpZ2h0Q2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IGRlc2NlbmRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgY2hpbGROb2Rlc0NvbmdydWVudCA9IGFyZUNoaWxkTm9kZXNDb25ncnVlbnQobGVmdENoaWxkTm9kZXMsIHJpZ2h0Q2hpbGROb2Rlcyk7XG5cbiAgICBpZiAoY2hpbGROb2Rlc0NvbmdydWVudCkge1xuICAgICAgY29uc3QgdmlzaXRlZCA9IGxlZnRDaGlsZE5vZGVzLmV2ZXJ5KChsZWZ0Q2hpbGROb2RlLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCByaWdodENoaWxkTm9kZSA9IHJpZ2h0Q2hpbGROb2Rlc1tpbmRleF0sXG4gICAgICAgICAgICAgIGxlZnROb2RlID0gbGVmdENoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHJpZ2h0Tm9kZSA9IHJpZ2h0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKGxlZnROb2RlLCByaWdodE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgaWYgKHZpc2l0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh2aXNpdGVkKSB7XG4gICAgICAgIGRlc2NlbmRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc2NlbmRlZDtcbiAgfVxuXG4gIHZpc2l0Tm9kZShsZWZ0Tm9kZSwgcmlnaHROb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgbGVmdE5vZGVUZXJtaW5hbE5vZGUgPSBsZWZ0Tm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHJpZ2h0Tm9kZVRlcm1pbmFsTm9kZSA9IHJpZ2h0Tm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIGxlZnROb2RlTm9uVGVybWluYWxOb2RlID0gbGVmdE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgICByaWdodE5vZGVOb25UZXJtaW5hbE5vZGUgPSByaWdodE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmIChsZWZ0Tm9kZVRlcm1pbmFsTm9kZSAmJiByaWdodE5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IGxlZnRUZXJtaW5hbE5vZGUgPSBsZWZ0Tm9kZSwgIC8vL1xuICAgICAgICAgICAgcmlnaHRUZXJtaW5hbE5vZGUgPSByaWdodE5vZGU7ICAvLy9cblxuICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXRUZXJtaW5hbE5vZGUobGVmdFRlcm1pbmFsTm9kZSwgcmlnaHRUZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gICAgfSBlbHNlIGlmIChsZWZ0Tm9kZU5vblRlcm1pbmFsTm9kZSAmJiByaWdodE5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IGxlZnROb25UZXJtaW5hbE5vZGUgPSBsZWZ0Tm9kZSwgIC8vL1xuICAgICAgICAgICAgcmlnaHROb25UZXJtaW5hbE5vZGUgPSByaWdodE5vZGU7IC8vL1xuXG4gICAgICB2aXNpdGVkID0gdGhpcy52aXNpdE5vblRlcm1pbmFsTm9kZShsZWZ0Tm9uVGVybWluYWxOb2RlLCByaWdodE5vblRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxuXG4gIHZpc2l0VGVybWluYWxOb2RlKGxlZnRUZXJtaW5hbE5vZGUsIHJpZ2h0VGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHsgLy8vXG4gICAgbGV0IHZpc2l0ZWQ7XG5cbiAgICB2aXNpdGVkID0gdHJ1ZTtcblxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG5cbiAgdmlzaXROb25UZXJtaW5hbE5vZGUobGVmdE5vblRlcm1pbmFsTm9kZSwgcmlnaHROb25UZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICBsZXQgeyBtYXBzIH0gPSB0aGlzLmNvbnN0cnVjdG9yO1xuXG4gICAgbWFwcyA9IFsgLy8vXG4gICAgICAuLi5tYXBzLFxuICAgICAge1xuICAgICAgICBsZWZ0Tm9kZVF1ZXJ5OiBub25UZXJtaW5hbE5vZGVRdWVyeSxcbiAgICAgICAgcmlnaHROb2RlUXVlcnk6IG5vblRlcm1pbmFsTm9kZVF1ZXJ5LFxuICAgICAgICBydW46IChsZWZ0Tm9kZSwgcmlnaHROb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpID0+IHtcbiAgICAgICAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgY29uc3QgbGVmdE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gbGVmdE5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLCAvLy9cbiAgICAgICAgICAgICAgICByaWdodE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gcmlnaHROb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTsgLy8vXG5cbiAgICAgICAgICBpZiAobGVmdE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID09PSByaWdodE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGxlZnROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICAgICAgcmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gcmlnaHROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICAgICAgbGVmdENoaWxkTm9kZXMgPSBsZWZ0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgICAgICByaWdodENoaWxkTm9kZXMgPSByaWdodE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICAgICAgZGVzY2VuZGVkID0gdGhpcy5kZXNjZW5kKGxlZnRDaGlsZE5vZGVzLCByaWdodENoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgICAgIGlmIChkZXNjZW5kZWQpIHtcbiAgICAgICAgICAgICAgdmlzaXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZpc2l0ZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG5cbiAgICBtYXBzLnNvbWUoKG1hcCkgPT4ge1xuICAgICAgY29uc3QgeyBsZWZ0Tm9kZVF1ZXJ5LCByaWdodE5vZGVRdWVyeSwgcnVuIH0gPSBtYXA7XG5cbiAgICAgIGNvbnN0IGxlZnROb2RlID0gbGVmdE5vZGVRdWVyeShsZWZ0Tm9uVGVybWluYWxOb2RlKSwgIC8vL1xuICAgICAgICAgICAgcmlnaHROb2RlID0gcmlnaHROb2RlUXVlcnkocmlnaHROb25UZXJtaW5hbE5vZGUpOyAgLy8vXG5cbiAgICAgIGlmICgobGVmdE5vZGUgIT09IG51bGwpICYmIChyaWdodE5vZGUgIT09IG51bGwpKSB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBydW4obGVmdE5vZGUsIHJpZ2h0Tm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICB2aXNpdGVkID0gc3VjY2VzczsgIC8vL1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJFcXVpdmFsZW5jZVBhc3MiLCJydW4iLCJsZWZ0Tm9kZSIsInJpZ2h0Tm9kZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsInN1Y2Nlc3MiLCJ2aXNpdGVkIiwidmlzaXROb2RlIiwiZGVzY2VuZCIsImxlZnRDaGlsZE5vZGVzIiwicmlnaHRDaGlsZE5vZGVzIiwiZGVzY2VuZGVkIiwiY2hpbGROb2Rlc0NvbmdydWVudCIsImFyZUNoaWxkTm9kZXNDb25ncnVlbnQiLCJldmVyeSIsImxlZnRDaGlsZE5vZGUiLCJpbmRleCIsInJpZ2h0Q2hpbGROb2RlIiwibGVmdE5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInJpZ2h0Tm9kZVRlcm1pbmFsTm9kZSIsImxlZnROb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJyaWdodE5vZGVOb25UZXJtaW5hbE5vZGUiLCJsZWZ0VGVybWluYWxOb2RlIiwicmlnaHRUZXJtaW5hbE5vZGUiLCJ2aXNpdFRlcm1pbmFsTm9kZSIsImxlZnROb25UZXJtaW5hbE5vZGUiLCJyaWdodE5vblRlcm1pbmFsTm9kZSIsInZpc2l0Tm9uVGVybWluYWxOb2RlIiwibWFwcyIsImxlZnROb2RlUXVlcnkiLCJub25UZXJtaW5hbE5vZGVRdWVyeSIsInJpZ2h0Tm9kZVF1ZXJ5IiwibGVmdE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJyaWdodE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwibGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwicmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwic29tZSIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSUE7OztlQUFxQkE7OztzQkFGd0M7QUFFOUMsTUFBTUE7SUFDbkJDLElBQUlDLFFBQVEsRUFBRUMsU0FBUyxFQUFFLEdBQUdDLGtCQUFrQixFQUFFO1FBQzlDLElBQUlDO1FBRUosTUFBTUMsVUFBVSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0wsVUFBVUMsY0FBY0M7UUFFdkRDLFVBQVVDLFNBQVUsR0FBRztRQUV2QixPQUFPRDtJQUNUO0lBRUFHLFFBQVFDLGNBQWMsRUFBRUMsZUFBZSxFQUFFLEdBQUdOLGtCQUFrQixFQUFFO1FBQzlELElBQUlPLFlBQVk7UUFFaEIsTUFBTUMsc0JBQXNCQyxJQUFBQSw0QkFBc0IsRUFBQ0osZ0JBQWdCQztRQUVuRSxJQUFJRSxxQkFBcUI7WUFDdkIsTUFBTU4sVUFBVUcsZUFBZUssS0FBSyxDQUFDLENBQUNDLGVBQWVDO2dCQUNuRCxNQUFNQyxpQkFBaUJQLGVBQWUsQ0FBQ00sTUFBTSxFQUN2Q2QsV0FBV2EsZUFDWFosWUFBWWMsZ0JBQ1pYLFVBQVUsSUFBSSxDQUFDQyxTQUFTLENBQUNMLFVBQVVDLGNBQWNDO2dCQUV2RCxJQUFJRSxTQUFTO29CQUNYLE9BQU87Z0JBQ1Q7WUFDRjtZQUVBLElBQUlBLFNBQVM7Z0JBQ1hLLFlBQVk7WUFDZDtRQUNGO1FBRUEsT0FBT0E7SUFDVDtJQUVBSixVQUFVTCxRQUFRLEVBQUVDLFNBQVMsRUFBRSxHQUFHQyxrQkFBa0IsRUFBRTtRQUNwRCxJQUFJRSxVQUFVO1FBRWQsTUFBTVksdUJBQXVCaEIsU0FBU2lCLGNBQWMsSUFDOUNDLHdCQUF3QmpCLFVBQVVnQixjQUFjLElBQ2hERSwwQkFBMEJuQixTQUFTb0IsaUJBQWlCLElBQ3BEQywyQkFBMkJwQixVQUFVbUIsaUJBQWlCO1FBRTVELElBQUksT0FBTztRQUNULEdBQUc7UUFDTCxPQUFPLElBQUlKLHdCQUF3QkUsdUJBQXVCO1lBQ3hELE1BQU1JLG1CQUFtQnRCLFVBQ25CdUIsb0JBQW9CdEIsV0FBWSxHQUFHO1lBRXpDRyxVQUFVLElBQUksQ0FBQ29CLGlCQUFpQixDQUFDRixrQkFBa0JDLHNCQUFzQnJCO1FBQzNFLE9BQU8sSUFBSWlCLDJCQUEyQkUsMEJBQTBCO1lBQzlELE1BQU1JLHNCQUFzQnpCLFVBQ3RCMEIsdUJBQXVCekIsV0FBVyxHQUFHO1lBRTNDRyxVQUFVLElBQUksQ0FBQ3VCLG9CQUFvQixDQUFDRixxQkFBcUJDLHlCQUF5QnhCO1FBQ3BGO1FBRUEsT0FBT0U7SUFDVDtJQUVBb0Isa0JBQWtCRixnQkFBZ0IsRUFBRUMsaUJBQWlCLEVBQUUsR0FBR3JCLGtCQUFrQixFQUFFO1FBQzVFLElBQUlFO1FBRUpBLFVBQVU7UUFFVixPQUFPQTtJQUNUO0lBRUF1QixxQkFBcUJGLG1CQUFtQixFQUFFQyxvQkFBb0IsRUFBRSxHQUFHeEIsa0JBQWtCLEVBQUU7UUFDckYsSUFBSUUsVUFBVTtRQUVkLElBQUksRUFBRXdCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXO1FBRS9CQSxPQUFPO2VBQ0ZBO1lBQ0g7Z0JBQ0VDLGVBQWVDLDBCQUFvQjtnQkFDbkNDLGdCQUFnQkQsMEJBQW9CO2dCQUNwQy9CLEtBQUssQ0FBQ0MsVUFBVUMsV0FBVyxHQUFHQztvQkFDNUIsSUFBSUUsVUFBVTtvQkFFZCxNQUFNNEIsOEJBQThCUCxvQkFBb0JRLFdBQVcsSUFDN0RDLCtCQUErQlIscUJBQXFCTyxXQUFXLElBQUksR0FBRztvQkFFNUUsSUFBSUQsZ0NBQWdDRSw4QkFBOEI7d0JBQ2hFLE1BQU1DLGdDQUFnQ1Ysb0JBQW9CVyxhQUFhLElBQ2pFQyxpQ0FBaUNYLHFCQUFxQlUsYUFBYSxJQUNuRTdCLGlCQUFpQjRCLCtCQUNqQjNCLGtCQUFrQjZCLGdDQUNsQjVCLFlBQVksSUFBSSxDQUFDSCxPQUFPLENBQUNDLGdCQUFnQkMsb0JBQW9CTjt3QkFFbkUsSUFBSU8sV0FBVzs0QkFDYkwsVUFBVTt3QkFDWjtvQkFDRjtvQkFFQSxPQUFPQTtnQkFDVDtZQUNGO1NBQ0Q7UUFFRHdCLEtBQUtVLElBQUksQ0FBQyxDQUFDQztZQUNULE1BQU0sRUFBRVYsYUFBYSxFQUFFRSxjQUFjLEVBQUVoQyxHQUFHLEVBQUUsR0FBR3dDO1lBRS9DLE1BQU12QyxXQUFXNkIsY0FBY0osc0JBQ3pCeEIsWUFBWThCLGVBQWVMLHVCQUF3QixHQUFHO1lBRTVELElBQUksQUFBQzFCLGFBQWEsUUFBVUMsY0FBYyxNQUFPO2dCQUMvQyxNQUFNRSxVQUFVSixJQUFJQyxVQUFVQyxjQUFjQztnQkFFNUNFLFVBQVVELFNBQVUsR0FBRztnQkFFdkIsT0FBTztZQUNUO1FBQ0Y7UUFFQSxPQUFPQztJQUNUO0FBQ0YifQ==
@@ -1,124 +0,0 @@
1
- "use strict";
2
-
3
- import { nonTerminalNodeQuery, areChildNodesCongruent } from "../utilities/pass";
4
-
5
- export default class EquivalencePass {
6
- run(leftNode, rightNode, ...remainingArguments) {
7
- let success;
8
-
9
- const visited = this.visitNode(leftNode, rightNode, ...remainingArguments);
10
-
11
- success = visited; ///
12
-
13
- return success;
14
- }
15
-
16
- descend(leftChildNodes, rightChildNodes, ...remainingArguments) {
17
- let descended = false;
18
-
19
- const childNodesCongruent = areChildNodesCongruent(leftChildNodes, rightChildNodes);
20
-
21
- if (childNodesCongruent) {
22
- const visited = leftChildNodes.every((leftChildNode, index) => {
23
- const rightChildNode = rightChildNodes[index],
24
- leftNode = leftChildNode, ///
25
- rightNode = rightChildNode, ///
26
- visited = this.visitNode(leftNode, rightNode, ...remainingArguments);
27
-
28
- if (visited) {
29
- return true;
30
- }
31
- });
32
-
33
- if (visited) {
34
- descended = true;
35
- }
36
- }
37
-
38
- return descended;
39
- }
40
-
41
- visitNode(leftNode, rightNode, ...remainingArguments) {
42
- let visited = false;
43
-
44
- const leftNodeTerminalNode = leftNode.isTerminalNode(),
45
- rightNodeTerminalNode = rightNode.isTerminalNode(),
46
- leftNodeNonTerminalNode = leftNode.isNonTerminalNode(),
47
- rightNodeNonTerminalNode = rightNode.isNonTerminalNode();
48
-
49
- if (false) {
50
- ///
51
- } else if (leftNodeTerminalNode && rightNodeTerminalNode) {
52
- const leftTerminalNode = leftNode, ///
53
- rightTerminalNode = rightNode; ///
54
-
55
- visited = this.visitTerminalNode(leftTerminalNode, rightTerminalNode, ...remainingArguments);
56
- } else if (leftNodeNonTerminalNode && rightNodeNonTerminalNode) {
57
- const leftNonTerminalNode = leftNode, ///
58
- rightNonTerminalNode = rightNode; ///
59
-
60
- visited = this.visitNonTerminalNode(leftNonTerminalNode, rightNonTerminalNode, ...remainingArguments);
61
- }
62
-
63
- return visited;
64
- }
65
-
66
- visitTerminalNode(leftTerminalNode, rightTerminalNode, ...remainingArguments) { ///
67
- let visited;
68
-
69
- visited = true;
70
-
71
- return visited;
72
- }
73
-
74
- visitNonTerminalNode(leftNonTerminalNode, rightNonTerminalNode, ...remainingArguments) {
75
- let visited = false;
76
-
77
- let { maps } = this.constructor;
78
-
79
- maps = [ ///
80
- ...maps,
81
- {
82
- leftNodeQuery: nonTerminalNodeQuery,
83
- rightNodeQuery: nonTerminalNodeQuery,
84
- run: (leftNode, rightNode, ...remainingArguments) => {
85
- let visited = false;
86
-
87
- const leftNonTerminalNodeRuleName = leftNonTerminalNode.getRuleName(), ///
88
- rightNonTerminalNodeRuleName = rightNonTerminalNode.getRuleName(); ///
89
-
90
- if (leftNonTerminalNodeRuleName === rightNonTerminalNodeRuleName) {
91
- const leftNonTerminalNodeChildNodes = leftNonTerminalNode.getChildNodes(),
92
- rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(),
93
- leftChildNodes = leftNonTerminalNodeChildNodes, ///
94
- rightChildNodes = rightNonTerminalNodeChildNodes, ///
95
- descended = this.descend(leftChildNodes, rightChildNodes, ...remainingArguments);
96
-
97
- if (descended) {
98
- visited = true;
99
- }
100
- }
101
-
102
- return visited;
103
- }
104
- }
105
- ]
106
-
107
- maps.some((map) => {
108
- const { leftNodeQuery, rightNodeQuery, run } = map;
109
-
110
- const leftNode = leftNodeQuery(leftNonTerminalNode), ///
111
- rightNode = rightNodeQuery(rightNonTerminalNode); ///
112
-
113
- if ((leftNode !== null) && (rightNode !== null)) {
114
- const success = run(leftNode, rightNode, ...remainingArguments);
115
-
116
- visited = success; ///
117
-
118
- return true;
119
- }
120
- });
121
-
122
- return visited;
123
- }
124
- }