occam-languages 2.2.16 → 2.2.19

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,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
- }