occam-verify-cli 0.0.470 → 0.0.471
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/context/file.js +9 -9
- package/lib/context/metaproof.js +30 -31
- package/lib/context/proof.js +27 -28
- package/lib/metaSubstitution.js +4 -4
- package/lib/rule.js +15 -19
- package/lib/step/metaproof.js +114 -0
- package/lib/step/proof.js +68 -0
- package/lib/utilities/array.js +2 -5
- package/lib/utilities/metaAssertion.js +117 -0
- package/lib/utilities/node.js +52 -0
- package/lib/verify/antecedent.js +4 -4
- package/lib/verify/derivation.js +13 -13
- package/lib/verify/equality.js +18 -5
- package/lib/verify/metaDerivation.js +13 -13
- package/lib/verify/metaproof.js +13 -51
- package/lib/verify/metastatement/unqualified.js +2 -3
- package/lib/verify/premiseOrPremises.js +4 -4
- package/lib/verify/proof.js +14 -52
- package/lib/verify/statement/unqualified.js +2 -3
- package/package.json +1 -1
- package/src/context/file.js +6 -6
- package/src/context/metaproof.js +28 -31
- package/src/context/proof.js +25 -28
- package/src/metaSubstitution.js +1 -1
- package/src/rule.js +19 -26
- package/src/step/metaproof.js +100 -0
- package/src/step/proof.js +30 -0
- package/src/utilities/array.js +1 -1
- package/src/utilities/metaAssertion.js +176 -0
- package/src/utilities/node.js +72 -0
- package/src/verify/antecedent.js +3 -3
- package/src/verify/derivation.js +14 -10
- package/src/verify/equality.js +29 -11
- package/src/verify/metaDerivation.js +14 -10
- package/src/verify/metaproof.js +26 -91
- package/src/verify/metastatement/unqualified.js +1 -3
- package/src/verify/premiseOrPremises.js +3 -3
- package/src/verify/proof.js +27 -92
- package/src/verify/statement/unqualified.js +1 -4
- package/lib/assertion.js +0 -147
- package/lib/metaAssertion.js +0 -200
- package/lib/utilities/metastatement.js +0 -45
- package/src/assertion.js +0 -150
- package/src/metaAssertion.js +0 -245
- package/src/utilities/metastatement.js +0 -50
package/src/assertion.js
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { nodeQuery } from "./utilities/query";
|
|
4
|
-
|
|
5
|
-
const statementNodeQuery = nodeQuery("/*/statement!");
|
|
6
|
-
|
|
7
|
-
export default class Assertion {
|
|
8
|
-
constructor(subproofNode, statementNode) {
|
|
9
|
-
this.subproofNode = subproofNode;
|
|
10
|
-
this.statementNode = statementNode;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
getNonTerminalNode() {
|
|
14
|
-
const nonTerminalNode = (this.statementNode !== null) ?
|
|
15
|
-
this.statementNode :
|
|
16
|
-
null;
|
|
17
|
-
|
|
18
|
-
return nonTerminalNode;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
getSubproofNode() {
|
|
22
|
-
return this.subproofNode;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
getStatementNode() {
|
|
26
|
-
return this.statementNode;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
match(assertion) {
|
|
30
|
-
let matches = false;
|
|
31
|
-
|
|
32
|
-
const statementNode = assertion.getstatementNode();
|
|
33
|
-
|
|
34
|
-
if ((statementNode !== null) && (this.statementNode !== null)) {
|
|
35
|
-
const nonTerminalNode = this.statementNode, ///
|
|
36
|
-
assertionNonTerminalNode = statementNode, ///
|
|
37
|
-
assertionNonTerminalNodeMatches = matchAssertionNonTerminalNode(assertionNonTerminalNode, nonTerminalNode);
|
|
38
|
-
|
|
39
|
-
matches = assertionNonTerminalNodeMatches; ///
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return matches;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
static fromSubproofNode(subproofNode) {
|
|
46
|
-
const statementNode = null,
|
|
47
|
-
assertion = new Assertion(subproofNode, statementNode);
|
|
48
|
-
|
|
49
|
-
return assertion;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
static fromStatementNode(statementNode) {
|
|
53
|
-
const subproofNode = null,
|
|
54
|
-
assertion = new Assertion(subproofNode, statementNode);
|
|
55
|
-
|
|
56
|
-
return assertion;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
static fromQualifiedStatementNode(qualifiedStatementNode) {
|
|
60
|
-
const subproofNode = null,
|
|
61
|
-
statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
62
|
-
assertion = new Assertion(subproofNode, statementNode);
|
|
63
|
-
|
|
64
|
-
return assertion;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
static fromUnqualifiedStatementNode(unqualifiedStatementNode) {
|
|
68
|
-
const subproofNode = null,
|
|
69
|
-
statementNode = statementNodeQuery(unqualifiedStatementNode),
|
|
70
|
-
assertion = new Assertion(subproofNode, statementNode);
|
|
71
|
-
|
|
72
|
-
return assertion;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
function matchAssertionNode(assertionNode, node) {
|
|
77
|
-
let assertionNodeMatches = false;
|
|
78
|
-
|
|
79
|
-
const nodeTerminalNode = node.isTerminalNode(),
|
|
80
|
-
ruleNodeTerminalNode = assertionNode.isTerminalNode();
|
|
81
|
-
|
|
82
|
-
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
83
|
-
if (nodeTerminalNode) {
|
|
84
|
-
const terminalNode = node, ///
|
|
85
|
-
assertionTerminalNode = assertionNode, ///
|
|
86
|
-
assertionTerminalNodeMatches = matchAssertionTerminalNode(assertionTerminalNode, terminalNode);
|
|
87
|
-
|
|
88
|
-
assertionNodeMatches = assertionTerminalNodeMatches; ///
|
|
89
|
-
} else {
|
|
90
|
-
const nonTerminalNode = node, ///
|
|
91
|
-
assertionNonTerminalNode = assertionNode, ///
|
|
92
|
-
assertionNonTerminalNodeMatches = matchAssertionNonTerminalNode(assertionNonTerminalNode, nonTerminalNode);
|
|
93
|
-
|
|
94
|
-
assertionNodeMatches = assertionNonTerminalNodeMatches; ///
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
return assertionNodeMatches;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
function matchAssertionChildNodes(assertionChildNodes, childNodes) {
|
|
102
|
-
let assertionChildNodesMatches = false;
|
|
103
|
-
|
|
104
|
-
const childNodesLength = childNodes.length,
|
|
105
|
-
assertionChildNodesLength = assertionChildNodes.length;
|
|
106
|
-
|
|
107
|
-
if (childNodesLength === assertionChildNodesLength) {
|
|
108
|
-
assertionChildNodesMatches = childNodes.every((childNode, index) => {
|
|
109
|
-
const assertionChildNode = assertionChildNodes[index],
|
|
110
|
-
assertionNode = assertionChildNode, ///
|
|
111
|
-
node = childNode, ///
|
|
112
|
-
assertionNodeMatches = matchAssertionNode(assertionNode, node);
|
|
113
|
-
|
|
114
|
-
if (assertionNodeMatches) {
|
|
115
|
-
return true;
|
|
116
|
-
}
|
|
117
|
-
})
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return assertionChildNodesMatches;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
function matchAssertionTerminalNode(assertionTerminalNode, terminalNode) {
|
|
124
|
-
let assertionTerminalNodeMatches = false;
|
|
125
|
-
|
|
126
|
-
const matches = assertionTerminalNode.match(terminalNode);
|
|
127
|
-
|
|
128
|
-
if (matches) {
|
|
129
|
-
assertionTerminalNodeMatches = true;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
return assertionTerminalNodeMatches;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
function matchAssertionNonTerminalNode(assertionNonTerminalNode, nonTerminalNode) {
|
|
136
|
-
let assertionNonTerminalNodeMatches = false;
|
|
137
|
-
|
|
138
|
-
const ruleName = nonTerminalNode.getRuleName(),
|
|
139
|
-
assertionRuleName = assertionNonTerminalNode.getRuleName(); ///
|
|
140
|
-
|
|
141
|
-
if (ruleName === assertionRuleName) {
|
|
142
|
-
const childNodes = nonTerminalNode.getChildNodes(),
|
|
143
|
-
assertionChildNodes = assertionNonTerminalNode.getChildNodes(),
|
|
144
|
-
assertionChildNodesMatches = matchAssertionChildNodes(assertionChildNodes, childNodes);
|
|
145
|
-
|
|
146
|
-
assertionNonTerminalNodeMatches = assertionChildNodesMatches; ///
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
return assertionNonTerminalNodeMatches;
|
|
150
|
-
}
|
package/src/metaAssertion.js
DELETED
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { first, second } from "./utilities/array";
|
|
4
|
-
import { nodeQuery, nodesQuery } from "./utilities/query";
|
|
5
|
-
import { matchBracketedMetastatementChildNode } from "./utilities/metastatement";
|
|
6
|
-
|
|
7
|
-
const metastatementNodeQuery = nodeQuery("/*/metastatement!"),
|
|
8
|
-
metastatementNodesQuery = nodesQuery("/metaSubproofAssertion/metastatement"),
|
|
9
|
-
metaSubproofAssertionNodeQuery = nodeQuery("/metastatement/metaSubproofAssertion"),
|
|
10
|
-
qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery = nodesQuery("/metaSubproof/qualifiedMetastatement|unqualifiedMetastatement/metastatement!");
|
|
11
|
-
|
|
12
|
-
export default class MetaAssertion {
|
|
13
|
-
constructor(metaSubproofNode, metastatementNode) {
|
|
14
|
-
this.metaSubproofNode = metaSubproofNode;
|
|
15
|
-
this.metastatementNode = metastatementNode;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
getMetaSubproofNode() {
|
|
19
|
-
return this.metaSubproofNode;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
getMetastatementNode() {
|
|
23
|
-
return this.metastatementNode;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
match(metaAssertion) {
|
|
27
|
-
let matches = false;
|
|
28
|
-
|
|
29
|
-
const metastatementNode = metaAssertion.getMetastatementNode();
|
|
30
|
-
|
|
31
|
-
if (metastatementNode !== null) {
|
|
32
|
-
const metaSubproofAssertionNode = metaSubproofAssertionNodeQuery(metastatementNode);
|
|
33
|
-
|
|
34
|
-
if (metaSubproofAssertionNode === null) {
|
|
35
|
-
const metastatementNodeMatches = this.matchMetastatementNode(metastatementNode);
|
|
36
|
-
|
|
37
|
-
matches = metastatementNodeMatches; ///
|
|
38
|
-
} else {
|
|
39
|
-
const metaSubproofAssertionNodeMatches = this.matchMetaSubproofAssertionNode(metaSubproofAssertionNode);
|
|
40
|
-
|
|
41
|
-
matches = metaSubproofAssertionNodeMatches; ///
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return matches;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
matchMetastatementNode(metastatementNode) {
|
|
49
|
-
let metastatementNodeMatches = false;
|
|
50
|
-
|
|
51
|
-
if (this.metastatementNode !== null) {
|
|
52
|
-
const topmostMetastatementNode = metastatementNode, ///
|
|
53
|
-
topmostMetaAssertionMetastatementNode = this.metastatementNode, ///
|
|
54
|
-
topmostMetaAssertionMetastatementNodeMatches = matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode);
|
|
55
|
-
|
|
56
|
-
metastatementNodeMatches = topmostMetaAssertionMetastatementNodeMatches; ///
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return metastatementNodeMatches;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
matchMetaSubproofAssertionNode(metaSubproofAssertionNode) {
|
|
63
|
-
let metaSubproofAssertionNodeMatches = false;
|
|
64
|
-
|
|
65
|
-
if (this.metaSubproofNode !== null) {
|
|
66
|
-
const metaSubproofAssertionMetastatementNodes = metastatementNodesQuery(metaSubproofAssertionNode),
|
|
67
|
-
firstMetaSubproofAssertionMetastatementNode = first(metaSubproofAssertionMetastatementNodes),
|
|
68
|
-
qualifiedOrUnqualifiedMetastatementMetastatementNodes = qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery(this.metaSubproofNode),
|
|
69
|
-
firstQualifiedOrUnqualifiedMetastatementMetastatementNode = first(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
|
|
70
|
-
|
|
71
|
-
const topmostMetastatementNode = firstMetaSubproofAssertionMetastatementNode, ///
|
|
72
|
-
topmostMetaAssertionMetastatementNode = firstQualifiedOrUnqualifiedMetastatementMetastatementNode, ///
|
|
73
|
-
topmostMetaAssertionMetastatementNodeMatches = matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode);
|
|
74
|
-
|
|
75
|
-
if (topmostMetaAssertionMetastatementNodeMatches) {
|
|
76
|
-
const secondMetaSubproofAssertionMetastatementNode = second(metaSubproofAssertionMetastatementNodes),
|
|
77
|
-
secondQualifiedOrUnqualifiedMetastatementMetastatementNode = second(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
|
|
78
|
-
|
|
79
|
-
const topmostMetastatementNode = secondMetaSubproofAssertionMetastatementNode, ///
|
|
80
|
-
topmostMetaAssertionMetastatementNode = secondQualifiedOrUnqualifiedMetastatementMetastatementNode, ///
|
|
81
|
-
topmostMetaAssertionMetastatementNodeMatches = matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode);
|
|
82
|
-
|
|
83
|
-
metaSubproofAssertionNodeMatches = topmostMetaAssertionMetastatementNodeMatches; ///
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return metaSubproofAssertionNodeMatches;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
static fromMetaSubproofNode(metaSubproofNode) {
|
|
91
|
-
const metastatementNode = null,
|
|
92
|
-
metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
|
|
93
|
-
|
|
94
|
-
return metaAssertion;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
static fromMetastatementNode(metastatementNode) {
|
|
98
|
-
const metaSubproofNode = null,
|
|
99
|
-
metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
|
|
100
|
-
|
|
101
|
-
return metaAssertion;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
static fromQualifiedMetastatementNode(qualifiedMetastatementNode) {
|
|
105
|
-
const metaSubproofNode = null,
|
|
106
|
-
metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
|
|
107
|
-
metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
|
|
108
|
-
|
|
109
|
-
return metaAssertion;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
static fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode) {
|
|
113
|
-
const metaSubproofNode = null,
|
|
114
|
-
metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
|
|
115
|
-
metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
|
|
116
|
-
|
|
117
|
-
return metaAssertion;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
function matchMetaAssertionNode(metaAssertionNode, node) {
|
|
122
|
-
let metaAssertionNodeMatches = false;
|
|
123
|
-
|
|
124
|
-
const nodeTerminalNode = node.isTerminalNode(),
|
|
125
|
-
ruleNodeTerminalNode = metaAssertionNode.isTerminalNode();
|
|
126
|
-
|
|
127
|
-
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
128
|
-
if (nodeTerminalNode) {
|
|
129
|
-
const terminalNode = node, ///
|
|
130
|
-
metaAssertionTerminalNode = metaAssertionNode, ///
|
|
131
|
-
metaAssertionTerminalNodeMatches = matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode);
|
|
132
|
-
|
|
133
|
-
metaAssertionNodeMatches = metaAssertionTerminalNodeMatches; ///
|
|
134
|
-
} else {
|
|
135
|
-
const nonTerminalNode = node, ///
|
|
136
|
-
metaAssertionNonTerminalNode = metaAssertionNode, ///
|
|
137
|
-
metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
|
|
138
|
-
|
|
139
|
-
metaAssertionNodeMatches = metaAssertionNonTerminalNodeMatches; ///
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
return metaAssertionNodeMatches;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
function matchMetaAssertionNodes(metaAssertionNodes, nodes) {
|
|
147
|
-
let metaAssertionNodesMatches = false;
|
|
148
|
-
|
|
149
|
-
const nodesLength = nodes.length,
|
|
150
|
-
metaAssertionNodesLength = metaAssertionNodes.length;
|
|
151
|
-
|
|
152
|
-
if (nodesLength === metaAssertionNodesLength) {
|
|
153
|
-
metaAssertionNodesMatches = nodes.every((node, index) => {
|
|
154
|
-
const metaAssertionNode = metaAssertionNodes[index],
|
|
155
|
-
metaAssertionNodeMatches = matchMetaAssertionNode(metaAssertionNode, node);
|
|
156
|
-
|
|
157
|
-
if (metaAssertionNodeMatches) {
|
|
158
|
-
return true;
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
return metaAssertionNodesMatches;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
function matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode) {
|
|
167
|
-
let metaAssertionTerminalNodeMatches = false;
|
|
168
|
-
|
|
169
|
-
const matches = metaAssertionTerminalNode.match(terminalNode);
|
|
170
|
-
|
|
171
|
-
if (matches) {
|
|
172
|
-
metaAssertionTerminalNodeMatches = true;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
return metaAssertionTerminalNodeMatches;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
function matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode) {
|
|
179
|
-
let metaAssertionNonTerminalNodeMatches = false;
|
|
180
|
-
|
|
181
|
-
const ruleName = nonTerminalNode.getRuleName(),
|
|
182
|
-
metaAssertionRuleName = metaAssertionNonTerminalNode.getRuleName(); ///
|
|
183
|
-
|
|
184
|
-
if (ruleName === metaAssertionRuleName) {
|
|
185
|
-
const childNodes = nonTerminalNode.getChildNodes(),
|
|
186
|
-
nodes = childNodes, ///
|
|
187
|
-
metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(),
|
|
188
|
-
metaAssertionNodes = metaAssertionChildNodes, ///
|
|
189
|
-
metaAssertionNodesMatches = matchMetaAssertionNodes(metaAssertionNodes, nodes);
|
|
190
|
-
|
|
191
|
-
metaAssertionNonTerminalNodeMatches = metaAssertionNodesMatches; ///
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
return metaAssertionNonTerminalNodeMatches;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
function matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode) {
|
|
198
|
-
const nonTerminalNode = metastatementNode, ///
|
|
199
|
-
metaAssertionNonTerminalNode = metaAssertionMetastatementNode, ///
|
|
200
|
-
metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode),
|
|
201
|
-
metaAssertionMetastatementNodeNatches = metaAssertionNonTerminalNodeMatches; ///
|
|
202
|
-
|
|
203
|
-
return metaAssertionMetastatementNodeNatches;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
function matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode) {
|
|
207
|
-
let metaAssertionMetastatementNodeMatches;
|
|
208
|
-
|
|
209
|
-
const metastatementNode = topmostMetastatementNode, ///
|
|
210
|
-
metaAssertionMetastatementNode = topmostMetaAssertionMetastatementNode; ///
|
|
211
|
-
|
|
212
|
-
metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode);
|
|
213
|
-
|
|
214
|
-
if (!metaAssertionMetastatementNodeMatches) {
|
|
215
|
-
const nonTerminalNode = metastatementNode, ///
|
|
216
|
-
childNodes = nonTerminalNode, ///
|
|
217
|
-
bracketedMetastatementChildNodeMatches = matchBracketedMetastatementChildNode(childNodes, (bracketedMetastatementChildNode) => {
|
|
218
|
-
const metastatementNode = bracketedMetastatementChildNode, ///
|
|
219
|
-
metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode),
|
|
220
|
-
bracketedMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
|
|
221
|
-
|
|
222
|
-
return bracketedMetastatementChildNodeMatches;
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
metaAssertionMetastatementNodeMatches = bracketedMetastatementChildNodeMatches; ///
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
if (!metaAssertionMetastatementNodeMatches) {
|
|
229
|
-
const metaAssertionNonTerminalNode = metaAssertionMetastatementNode, ///
|
|
230
|
-
metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(),
|
|
231
|
-
bracketedMetaAssertionMetastatementChildNodeMatches = matchBracketedMetastatementChildNode(metaAssertionChildNodes, (bracketedMetaAssertionMetastatementChildNode) => {
|
|
232
|
-
const metaAssertionMetastatementNode = bracketedMetaAssertionMetastatementChildNode, ///
|
|
233
|
-
metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode),
|
|
234
|
-
bracketedMetaAssertionMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
|
|
235
|
-
|
|
236
|
-
return bracketedMetaAssertionMetastatementChildNodeMatches;
|
|
237
|
-
});
|
|
238
|
-
|
|
239
|
-
metaAssertionMetastatementNodeMatches = bracketedMetaAssertionMetastatementChildNodeMatches; ///
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
const topmostMetaAssertionMetastatementNodeMatches = metaAssertionMetastatementNodeMatches; ///
|
|
243
|
-
|
|
244
|
-
return topmostMetaAssertionMetastatementNodeMatches;
|
|
245
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { first, second, third } from "../utilities/array";
|
|
4
|
-
import { METASTATEMENT_RULE_NAME } from "../ruleNames";
|
|
5
|
-
import { LEFT_BRACKET, RIGHT_BRACKET, BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH } from "../constants";
|
|
6
|
-
|
|
7
|
-
export function bracketedMetastatementChildNodeFromChildNodes(childNodes) {
|
|
8
|
-
let bracketedMetastatementChildNode = null;
|
|
9
|
-
|
|
10
|
-
const childNodesLength = childNodes.length;
|
|
11
|
-
|
|
12
|
-
if (childNodesLength === BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH) {
|
|
13
|
-
const firstChildNode = first(childNodes),
|
|
14
|
-
thirdChildNode = third(childNodes),
|
|
15
|
-
secondChildNode = second(childNodes),
|
|
16
|
-
firstChildNodeTerminalNode = firstChildNode.isTerminalNode(),
|
|
17
|
-
thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(),
|
|
18
|
-
secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
|
|
19
|
-
|
|
20
|
-
if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
|
|
21
|
-
const nonTerminalNode = secondChildNode, ///
|
|
22
|
-
firstTerminalNode = firstChildNode, ///
|
|
23
|
-
secondTerminalNode = thirdChildNode, ///
|
|
24
|
-
nonTerminalNodeRuleName = nonTerminalNode.getRuleName(),
|
|
25
|
-
firstTerminalNodeContent = firstTerminalNode.getContent(),
|
|
26
|
-
secondTerminalNodeContent = secondTerminalNode.getContent(),
|
|
27
|
-
firstTerminalNodeContentLeftBracket = (firstTerminalNodeContent === LEFT_BRACKET),
|
|
28
|
-
secondTerminalNodeContentRightBracket = (secondTerminalNodeContent === RIGHT_BRACKET),
|
|
29
|
-
nonTerminalNodeRuleNameMetastatementRuleName = (nonTerminalNodeRuleName === METASTATEMENT_RULE_NAME);
|
|
30
|
-
|
|
31
|
-
if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameMetastatementRuleName && secondTerminalNodeContentRightBracket) {
|
|
32
|
-
bracketedMetastatementChildNode = nonTerminalNode; ///
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return bracketedMetastatementChildNode;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export function matchBracketedMetastatementChildNode(childNodes, callback) {
|
|
41
|
-
let bracketedMetastatementChildNodeMatches = false;
|
|
42
|
-
|
|
43
|
-
const bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromChildNodes(childNodes);
|
|
44
|
-
|
|
45
|
-
if (bracketedMetastatementChildNode !== null) {
|
|
46
|
-
bracketedMetastatementChildNodeMatches = callback(bracketedMetastatementChildNode);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return bracketedMetastatementChildNodeMatches;
|
|
50
|
-
}
|