occam-verify-cli 0.0.471 → 0.0.472
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/constants.js +4 -8
- package/lib/context/metaproof.js +9 -2
- package/lib/context/proof.js +9 -2
- package/lib/equality.js +22 -0
- package/lib/metaSubstitution.js +12 -52
- package/lib/step/metaproof.js +7 -7
- package/lib/substitution.js +16 -56
- package/lib/utilities/node.js +57 -4
- package/lib/verify/derivation.js +4 -6
- package/lib/verify/metaDerivation.js +4 -6
- package/lib/verify/metaproof.js +3 -6
- package/lib/verify/metastatement/qualified.js +1 -7
- package/lib/verify/metastatement/unqualified.js +1 -7
- package/lib/verify/proof.js +3 -6
- package/lib/verify/statement/qualified.js +1 -7
- package/lib/verify/statement/unqualified.js +1 -7
- package/package.json +1 -1
- package/src/constants.js +1 -2
- package/src/context/metaproof.js +5 -1
- package/src/context/proof.js +5 -1
- package/src/equality.js +8 -0
- package/src/metaSubstitution.js +16 -87
- package/src/step/metaproof.js +13 -14
- package/src/substitution.js +19 -90
- package/src/utilities/node.js +78 -1
- package/src/verify/derivation.js +3 -8
- package/src/verify/metaDerivation.js +3 -8
- package/src/verify/metaproof.js +2 -8
- package/src/verify/metastatement/qualified.js +0 -9
- package/src/verify/metastatement/unqualified.js +0 -9
- package/src/verify/proof.js +2 -8
- package/src/verify/statement/qualified.js +0 -9
- package/src/verify/statement/unqualified.js +0 -9
- package/lib/utilities/metaAssertion.js +0 -117
- package/lib/utilities/statement.js +0 -45
- package/src/utilities/metaAssertion.js +0 -176
- package/src/utilities/statement.js +0 -50
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
matchBracketedMetastatementChildNode: function() {
|
|
13
|
-
return matchBracketedMetastatementChildNode;
|
|
14
|
-
},
|
|
15
|
-
matchTopmostMetaAssertionMetastatementNode: function() {
|
|
16
|
-
return matchTopmostMetaAssertionMetastatementNode;
|
|
17
|
-
},
|
|
18
|
-
bracketedMetastatementChildNodeFromChildNodes: function() {
|
|
19
|
-
return bracketedMetastatementChildNodeFromChildNodes;
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
var _array = require("../utilities/array");
|
|
23
|
-
var _ruleNames = require("../ruleNames");
|
|
24
|
-
var _constants = require("../constants");
|
|
25
|
-
function matchBracketedMetastatementChildNode(childNodes, callback) {
|
|
26
|
-
var bracketedMetastatementChildNodeMatches = false;
|
|
27
|
-
var bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromChildNodes(childNodes);
|
|
28
|
-
if (bracketedMetastatementChildNode !== null) {
|
|
29
|
-
bracketedMetastatementChildNodeMatches = callback(bracketedMetastatementChildNode);
|
|
30
|
-
}
|
|
31
|
-
return bracketedMetastatementChildNodeMatches;
|
|
32
|
-
}
|
|
33
|
-
function matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode) {
|
|
34
|
-
var metaAssertionMetastatementNodeMatches;
|
|
35
|
-
var metastatementNode = topmostMetastatementNode, metaAssertionMetastatementNode = topmostMetaAssertionMetastatementNode; ///
|
|
36
|
-
metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode);
|
|
37
|
-
if (!metaAssertionMetastatementNodeMatches) {
|
|
38
|
-
var nonTerminalNode = metastatementNode, childNodes = nonTerminalNode, bracketedMetastatementChildNodeMatches = matchBracketedMetastatementChildNode(childNodes, function(bracketedMetastatementChildNode) {
|
|
39
|
-
var metastatementNode = bracketedMetastatementChildNode, metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode), bracketedMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
|
|
40
|
-
return bracketedMetastatementChildNodeMatches;
|
|
41
|
-
});
|
|
42
|
-
metaAssertionMetastatementNodeMatches = bracketedMetastatementChildNodeMatches; ///
|
|
43
|
-
}
|
|
44
|
-
if (!metaAssertionMetastatementNodeMatches) {
|
|
45
|
-
var metaAssertionNonTerminalNode = metaAssertionMetastatementNode, metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(), bracketedMetaAssertionMetastatementChildNodeMatches = matchBracketedMetastatementChildNode(metaAssertionChildNodes, function(bracketedMetaAssertionMetastatementChildNode) {
|
|
46
|
-
var metaAssertionMetastatementNode = bracketedMetaAssertionMetastatementChildNode, metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode), bracketedMetaAssertionMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
|
|
47
|
-
return bracketedMetaAssertionMetastatementChildNodeMatches;
|
|
48
|
-
});
|
|
49
|
-
metaAssertionMetastatementNodeMatches = bracketedMetaAssertionMetastatementChildNodeMatches; ///
|
|
50
|
-
}
|
|
51
|
-
var topmostMetaAssertionMetastatementNodeMatches = metaAssertionMetastatementNodeMatches; ///
|
|
52
|
-
return topmostMetaAssertionMetastatementNodeMatches;
|
|
53
|
-
}
|
|
54
|
-
function bracketedMetastatementChildNodeFromChildNodes(childNodes) {
|
|
55
|
-
var bracketedMetastatementChildNode = null;
|
|
56
|
-
var childNodesLength = childNodes.length;
|
|
57
|
-
if (childNodesLength === _constants.BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH) {
|
|
58
|
-
var firstChildNode = (0, _array.first)(childNodes), thirdChildNode = (0, _array.third)(childNodes), secondChildNode = (0, _array.second)(childNodes), firstChildNodeTerminalNode = firstChildNode.isTerminalNode(), thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(), secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
|
|
59
|
-
if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
|
|
60
|
-
var nonTerminalNode = secondChildNode, firstTerminalNode = firstChildNode, secondTerminalNode = thirdChildNode, nonTerminalNodeRuleName = nonTerminalNode.getRuleName(), firstTerminalNodeContent = firstTerminalNode.getContent(), secondTerminalNodeContent = secondTerminalNode.getContent(), firstTerminalNodeContentLeftBracket = firstTerminalNodeContent === _constants.LEFT_BRACKET, secondTerminalNodeContentRightBracket = secondTerminalNodeContent === _constants.RIGHT_BRACKET, nonTerminalNodeRuleNameMetastatementRuleName = nonTerminalNodeRuleName === _ruleNames.METASTATEMENT_RULE_NAME;
|
|
61
|
-
if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameMetastatementRuleName && secondTerminalNodeContentRightBracket) {
|
|
62
|
-
bracketedMetastatementChildNode = nonTerminalNode; ///
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return bracketedMetastatementChildNode;
|
|
67
|
-
}
|
|
68
|
-
function matchMetaAssertionNode(metaAssertionNode, node) {
|
|
69
|
-
var metaAssertionNodeMatches = false;
|
|
70
|
-
var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = metaAssertionNode.isTerminalNode();
|
|
71
|
-
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
72
|
-
if (nodeTerminalNode) {
|
|
73
|
-
var terminalNode = node, metaAssertionTerminalNode = metaAssertionNode, metaAssertionTerminalNodeMatches = matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode);
|
|
74
|
-
metaAssertionNodeMatches = metaAssertionTerminalNodeMatches; ///
|
|
75
|
-
} else {
|
|
76
|
-
var nonTerminalNode = node, metaAssertionNonTerminalNode = metaAssertionNode, metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
|
|
77
|
-
metaAssertionNodeMatches = metaAssertionNonTerminalNodeMatches; ///
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return metaAssertionNodeMatches;
|
|
81
|
-
}
|
|
82
|
-
function matchMetaAssertionNodes(metaAssertionNodes, nodes) {
|
|
83
|
-
var metaAssertionNodesMatches = false;
|
|
84
|
-
var nodesLength = nodes.length, metaAssertionNodesLength = metaAssertionNodes.length;
|
|
85
|
-
if (nodesLength === metaAssertionNodesLength) {
|
|
86
|
-
metaAssertionNodesMatches = nodes.every(function(node, index) {
|
|
87
|
-
var metaAssertionNode = metaAssertionNodes[index], metaAssertionNodeMatches = matchMetaAssertionNode(metaAssertionNode, node);
|
|
88
|
-
if (metaAssertionNodeMatches) {
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
return metaAssertionNodesMatches;
|
|
94
|
-
}
|
|
95
|
-
function matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode) {
|
|
96
|
-
var metaAssertionTerminalNodeMatches = false;
|
|
97
|
-
var matches = metaAssertionTerminalNode.match(terminalNode);
|
|
98
|
-
if (matches) {
|
|
99
|
-
metaAssertionTerminalNodeMatches = true;
|
|
100
|
-
}
|
|
101
|
-
return metaAssertionTerminalNodeMatches;
|
|
102
|
-
}
|
|
103
|
-
function matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode) {
|
|
104
|
-
var metaAssertionNonTerminalNodeMatches = false;
|
|
105
|
-
var ruleName = nonTerminalNode.getRuleName(), metaAssertionRuleName = metaAssertionNonTerminalNode.getRuleName(); ///
|
|
106
|
-
if (ruleName === metaAssertionRuleName) {
|
|
107
|
-
var childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes, metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(), metaAssertionNodes = metaAssertionChildNodes, metaAssertionNodesMatches = matchMetaAssertionNodes(metaAssertionNodes, nodes);
|
|
108
|
-
metaAssertionNonTerminalNodeMatches = metaAssertionNodesMatches; ///
|
|
109
|
-
}
|
|
110
|
-
return metaAssertionNonTerminalNodeMatches;
|
|
111
|
-
}
|
|
112
|
-
function matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode) {
|
|
113
|
-
var nonTerminalNode = metastatementNode, metaAssertionNonTerminalNode = metaAssertionMetastatementNode, metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode), metaAssertionMetastatementNodeNatches = metaAssertionNonTerminalNodeMatches; ///
|
|
114
|
-
return metaAssertionMetastatementNodeNatches;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbWV0YUFzc2VydGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZmlyc3QsIHNlY29uZCwgdGhpcmQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcbmltcG9ydCB7IExFRlRfQlJBQ0tFVCwgUklHSFRfQlJBQ0tFVCwgQlJBQ0tFVEVEX01FVEFTVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hCcmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlKGNoaWxkTm9kZXMsIGNhbGxiYWNrKSB7XG4gIGxldCBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUgPSBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlRnJvbUNoaWxkTm9kZXMoY2hpbGROb2Rlcyk7XG5cbiAgaWYgKGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyA9IGNhbGxiYWNrKGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hUb3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlKHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUsIHRvcG1vc3RNZXRhc3RhdGVtZW50Tm9kZSkge1xuICBsZXQgbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcblxuICBjb25zdCBtZXRhc3RhdGVtZW50Tm9kZSA9IHRvcG1vc3RNZXRhc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgIG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSA9IHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGU7ICAvLy9cblxuICBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbWF0Y2hNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUobWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKCFtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyA9IG1hdGNoQnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZShjaGlsZE5vZGVzLCAoYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgICBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbWF0Y2hNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUobWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgICAgICAgICBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyA9IG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG5cbiAgICAgICAgICAgIHJldHVybiBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcztcbiAgICAgICAgICB9KTtcblxuICAgIG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlczsgIC8vL1xuICB9XG5cbiAgaWYgKCFtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzKSB7XG4gICAgY29uc3QgbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSA9IG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIG1ldGFBc3NlcnRpb25DaGlsZE5vZGVzID0gbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzID0gbWF0Y2hCcmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlKG1ldGFBc3NlcnRpb25DaGlsZE5vZGVzLCAoYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSA9IGJyYWNrZXRlZE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Q2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgICBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbWF0Y2hNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUobWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgICAgICAgICBicmFja2V0ZWRNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXMgPSBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzO1xuXG4gICAgICAgICAgICByZXR1cm4gYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzO1xuICAgICAgICAgIH0pO1xuXG4gICAgbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGJyYWNrZXRlZE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlczsgIC8vL1xuICB9XG5cbiAgY29uc3QgdG9wbW9zdE1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgcmV0dXJuIHRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZUZyb21DaGlsZE5vZGVzKGNoaWxkTm9kZXMpIHtcbiAgbGV0IGJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSBjaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAoY2hpbGROb2Rlc0xlbmd0aCA9PT0gQlJBQ0tFVEVEX01FVEFTVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIKSB7XG4gICAgY29uc3QgZmlyc3RDaGlsZE5vZGUgPSBmaXJzdChjaGlsZE5vZGVzKSxcbiAgICAgICAgICB0aGlyZENoaWxkTm9kZSA9IHRoaXJkKGNoaWxkTm9kZXMpLFxuICAgICAgICAgIHNlY29uZENoaWxkTm9kZSA9IHNlY29uZChjaGlsZE5vZGVzKSxcbiAgICAgICAgICBmaXJzdENoaWxkTm9kZVRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgdGhpcmRDaGlsZE5vZGVUZXJtaW5hbE5vZGUgPSB0aGlyZENoaWxkTm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSA9IHNlY29uZENoaWxkTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGZpcnN0Q2hpbGROb2RlVGVybWluYWxOb2RlICYmIHNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSAmJiB0aGlyZENoaWxkTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc2Vjb25kQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBmaXJzdFRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHNlY29uZFRlcm1pbmFsTm9kZSA9IHRoaXJkQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50ID0gZmlyc3RUZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpLFxuICAgICAgICAgICAgc2Vjb25kVGVybWluYWxOb2RlQ29udGVudCA9IHNlY29uZFRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCksXG4gICAgICAgICAgICBmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnRMZWZ0QnJhY2tldCA9IChmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnQgPT09IExFRlRfQlJBQ0tFVCksXG4gICAgICAgICAgICBzZWNvbmRUZXJtaW5hbE5vZGVDb250ZW50UmlnaHRCcmFja2V0ID0gKHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnQgPT09IFJJR0hUX0JSQUNLRVQpLFxuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUgPSAobm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPT09IE1FVEFTVEFURU1FTlRfUlVMRV9OQU1FKTtcblxuICAgICAgaWYgKGZpcnN0VGVybWluYWxOb2RlQ29udGVudExlZnRCcmFja2V0ICYmIG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lICYmIHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnRSaWdodEJyYWNrZXQpIHtcbiAgICAgICAgYnJhY2tldGVkTWV0YXN0YXRlbWVudENoaWxkTm9kZSA9IG5vblRlcm1pbmFsTm9kZTsgIC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlO1xufVxuXG5mdW5jdGlvbiBtYXRjaE1ldGFBc3NlcnRpb25Ob2RlKG1ldGFBc3NlcnRpb25Ob2RlLCBub2RlKSB7XG4gIGxldCBtZXRhQXNzZXJ0aW9uTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgIHJ1bGVOb2RlVGVybWluYWxOb2RlID0gbWV0YUFzc2VydGlvbk5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICBpZiAobm9kZVRlcm1pbmFsTm9kZSA9PT0gcnVsZU5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gbm9kZSwgIC8vL1xuICAgICAgICBtZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlID0gbWV0YUFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgbWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaE1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGUobWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZSwgdGVybWluYWxOb2RlKTtcblxuICAgICAgbWV0YUFzc2VydGlvbk5vZGVNYXRjaGVzID0gbWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXM7ICAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgIG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUgPSBtZXRhQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICBtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoTWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZShtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUpO1xuXG4gICAgICBtZXRhQXNzZXJ0aW9uTm9kZU1hdGNoZXMgPSBtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1ldGFBc3NlcnRpb25Ob2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hNZXRhQXNzZXJ0aW9uTm9kZXMobWV0YUFzc2VydGlvbk5vZGVzLCBub2Rlcykge1xuICBsZXQgbWV0YUFzc2VydGlvbk5vZGVzTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoLFxuICAgIG1ldGFBc3NlcnRpb25Ob2Rlc0xlbmd0aCA9IG1ldGFBc3NlcnRpb25Ob2Rlcy5sZW5ndGg7XG5cbiAgaWYgKG5vZGVzTGVuZ3RoID09PSBtZXRhQXNzZXJ0aW9uTm9kZXNMZW5ndGgpIHtcbiAgICBtZXRhQXNzZXJ0aW9uTm9kZXNNYXRjaGVzID0gbm9kZXMuZXZlcnkoKG5vZGUsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBtZXRhQXNzZXJ0aW9uTm9kZSA9IG1ldGFBc3NlcnRpb25Ob2Rlc1tpbmRleF0sXG4gICAgICAgIG1ldGFBc3NlcnRpb25Ob2RlTWF0Y2hlcyA9IG1hdGNoTWV0YUFzc2VydGlvbk5vZGUobWV0YUFzc2VydGlvbk5vZGUsIG5vZGUpO1xuXG4gICAgICBpZiAobWV0YUFzc2VydGlvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG1ldGFBc3NlcnRpb25Ob2Rlc01hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoTWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZShtZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUpIHtcbiAgbGV0IG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3QgbWF0Y2hlcyA9IG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGUubWF0Y2godGVybWluYWxOb2RlKTtcblxuICBpZiAobWF0Y2hlcykge1xuICAgIG1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBtZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hNZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlKG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSkge1xuICBsZXQgbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgIG1ldGFBc3NlcnRpb25SdWxlTmFtZSA9IG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTsgLy8vXG5cbiAgaWYgKHJ1bGVOYW1lID09PSBtZXRhQXNzZXJ0aW9uUnVsZU5hbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICBtZXRhQXNzZXJ0aW9uQ2hpbGROb2RlcyA9IG1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgbWV0YUFzc2VydGlvbk5vZGVzID0gbWV0YUFzc2VydGlvbkNoaWxkTm9kZXMsIC8vL1xuICAgICAgbWV0YUFzc2VydGlvbk5vZGVzTWF0Y2hlcyA9IG1hdGNoTWV0YUFzc2VydGlvbk5vZGVzKG1ldGFBc3NlcnRpb25Ob2Rlcywgbm9kZXMpO1xuXG4gICAgbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtZXRhQXNzZXJ0aW9uTm9kZXNNYXRjaGVzOyAgLy8vXG4gIH1cblxuICByZXR1cm4gbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlKG1ldGFBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICBtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlID0gbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaE1ldGFBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUobWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlKSxcbiAgICBtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVOYXRjaGVzID0gbWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7ICAvLy9cblxuICByZXR1cm4gbWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTmF0Y2hlcztcbn1cbiJdLCJuYW1lcyI6WyJtYXRjaEJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUiLCJtYXRjaFRvcG1vc3RNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUiLCJicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlRnJvbUNoaWxkTm9kZXMiLCJjaGlsZE5vZGVzIiwiY2FsbGJhY2siLCJicmFja2V0ZWRNZXRhc3RhdGVtZW50Q2hpbGROb2RlTWF0Y2hlcyIsImJyYWNrZXRlZE1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUiLCJ0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlIiwidG9wbW9zdE1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlIiwibWF0Y2hNZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlIiwibWV0YUFzc2VydGlvbkNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzIiwiYnJhY2tldGVkTWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnRDaGlsZE5vZGUiLCJ0b3Btb3N0TWV0YUFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsImNoaWxkTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJCUkFDS0VURURfTUVUQVNUQVRFTUVOVF9DSElMRF9OT0RFU19MRU5HVEgiLCJmaXJzdENoaWxkTm9kZSIsImZpcnN0IiwidGhpcmRDaGlsZE5vZGUiLCJ0aGlyZCIsInNlY29uZENoaWxkTm9kZSIsInNlY29uZCIsImZpcnN0Q2hpbGROb2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJ0aGlyZENoaWxkTm9kZVRlcm1pbmFsTm9kZSIsInNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwiZmlyc3RUZXJtaW5hbE5vZGUiLCJzZWNvbmRUZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50IiwiZ2V0Q29udGVudCIsInNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnQiLCJmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnRMZWZ0QnJhY2tldCIsIkxFRlRfQlJBQ0tFVCIsInNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnRSaWdodEJyYWNrZXQiLCJSSUdIVF9CUkFDS0VUIiwibm9uVGVybWluYWxOb2RlUnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUiLCJNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSIsIm1hdGNoTWV0YUFzc2VydGlvbk5vZGUiLCJtZXRhQXNzZXJ0aW9uTm9kZSIsIm5vZGUiLCJtZXRhQXNzZXJ0aW9uTm9kZU1hdGNoZXMiLCJub2RlVGVybWluYWxOb2RlIiwicnVsZU5vZGVUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJtZXRhQXNzZXJ0aW9uVGVybWluYWxOb2RlIiwibWV0YUFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXMiLCJtYXRjaE1ldGFBc3NlcnRpb25UZXJtaW5hbE5vZGUiLCJtZXRhQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YUFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSIsIm1hdGNoTWV0YUFzc2VydGlvbk5vZGVzIiwibWV0YUFzc2VydGlvbk5vZGVzIiwibm9kZXMiLCJtZXRhQXNzZXJ0aW9uTm9kZXNNYXRjaGVzIiwibm9kZXNMZW5ndGgiLCJtZXRhQXNzZXJ0aW9uTm9kZXNMZW5ndGgiLCJldmVyeSIsImluZGV4IiwibWF0Y2hlcyIsIm1hdGNoIiwicnVsZU5hbWUiLCJtZXRhQXNzZXJ0aW9uUnVsZU5hbWUiLCJtZXRhQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVOYXRjaGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFNZ0JBLG9DQUFvQztlQUFwQ0E7O0lBWUFDLDBDQUEwQztlQUExQ0E7O0lBeUNBQyw2Q0FBNkM7ZUFBN0NBOzs7cUJBekRxQjt5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
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
bracketedStatementChildNodeFromChildNodes: function() {
|
|
13
|
-
return bracketedStatementChildNodeFromChildNodes;
|
|
14
|
-
},
|
|
15
|
-
matchBracketedStatementChildNode: function() {
|
|
16
|
-
return matchBracketedStatementChildNode;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
var _array = require("../utilities/array");
|
|
20
|
-
var _ruleNames = require("../ruleNames");
|
|
21
|
-
var _constants = require("../constants");
|
|
22
|
-
function bracketedStatementChildNodeFromChildNodes(childNodes) {
|
|
23
|
-
var bracketedStatementChildNode = null;
|
|
24
|
-
var childNodesLength = childNodes.length;
|
|
25
|
-
if (childNodesLength === _constants.BRACKETED_STATEMENT_CHILD_NODES_LENGTH) {
|
|
26
|
-
var firstChildNode = (0, _array.first)(childNodes), thirdChildNode = (0, _array.third)(childNodes), secondChildNode = (0, _array.second)(childNodes), firstChildNodeTerminalNode = firstChildNode.isTerminalNode(), thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(), secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
|
|
27
|
-
if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
|
|
28
|
-
var nonTerminalNode = secondChildNode, firstTerminalNode = firstChildNode, secondTerminalNode = thirdChildNode, nonTerminalNodeRuleName = nonTerminalNode.getRuleName(), firstTerminalNodeContent = firstTerminalNode.getContent(), secondTerminalNodeContent = secondTerminalNode.getContent(), firstTerminalNodeContentLeftBracket = firstTerminalNodeContent === _constants.LEFT_BRACKET, secondTerminalNodeContentRightBracket = secondTerminalNodeContent === _constants.RIGHT_BRACKET, nonTerminalNodeRuleNameStatementRuleName = nonTerminalNodeRuleName === _ruleNames.STATEMENT_RULE_NAME;
|
|
29
|
-
if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameStatementRuleName && secondTerminalNodeContentRightBracket) {
|
|
30
|
-
bracketedStatementChildNode = nonTerminalNode; ///
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return bracketedStatementChildNode;
|
|
35
|
-
}
|
|
36
|
-
function matchBracketedStatementChildNode(childNodes, callback) {
|
|
37
|
-
var bracketedStatementChildNodeMatches = false;
|
|
38
|
-
var bracketedStatementChildNode = bracketedStatementChildNodeFromChildNodes(childNodes);
|
|
39
|
-
if (bracketedStatementChildNode !== null) {
|
|
40
|
-
bracketedStatementChildNodeMatches = callback(bracketedStatementChildNode);
|
|
41
|
-
}
|
|
42
|
-
return bracketedStatementChildNodeMatches;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBmaXJzdCwgc2Vjb25kLCB0aGlyZCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IFNUQVRFTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5pbXBvcnQgeyBMRUZUX0JSQUNLRVQsIFJJR0hUX0JSQUNLRVQsIEJSQUNLRVRFRF9TVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbUNoaWxkTm9kZXMoY2hpbGROb2Rlcykge1xuICBsZXQgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gbnVsbDtcblxuICBjb25zdCBjaGlsZE5vZGVzTGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKGNoaWxkTm9kZXNMZW5ndGggPT09IEJSQUNLRVRFRF9TVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIKSB7XG4gICAgY29uc3QgZmlyc3RDaGlsZE5vZGUgPSBmaXJzdChjaGlsZE5vZGVzKSxcbiAgICAgICAgICB0aGlyZENoaWxkTm9kZSA9IHRoaXJkKGNoaWxkTm9kZXMpLFxuICAgICAgICAgIHNlY29uZENoaWxkTm9kZSA9IHNlY29uZChjaGlsZE5vZGVzKSxcbiAgICAgICAgICBmaXJzdENoaWxkTm9kZVRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgICAgdGhpcmRDaGlsZE5vZGVUZXJtaW5hbE5vZGUgPSB0aGlyZENoaWxkTm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICAgIHNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSA9IHNlY29uZENoaWxkTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGZpcnN0Q2hpbGROb2RlVGVybWluYWxOb2RlICYmIHNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSAmJiB0aGlyZENoaWxkTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc2Vjb25kQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBmaXJzdFRlcm1pbmFsTm9kZSA9IGZpcnN0Q2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIHNlY29uZFRlcm1pbmFsTm9kZSA9IHRoaXJkQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50ID0gZmlyc3RUZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpLFxuICAgICAgICAgICAgc2Vjb25kVGVybWluYWxOb2RlQ29udGVudCA9IHNlY29uZFRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCksXG4gICAgICAgICAgICBmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnRMZWZ0QnJhY2tldCA9IChmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnQgPT09IExFRlRfQlJBQ0tFVCksXG4gICAgICAgICAgICBzZWNvbmRUZXJtaW5hbE5vZGVDb250ZW50UmlnaHRCcmFja2V0ID0gKHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnQgPT09IFJJR0hUX0JSQUNLRVQpLFxuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWVTdGF0ZW1lbnRSdWxlTmFtZSA9IChub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gU1RBVEVNRU5UX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnRMZWZ0QnJhY2tldCAmJiBub25UZXJtaW5hbE5vZGVSdWxlTmFtZVN0YXRlbWVudFJ1bGVOYW1lICYmIHNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnRSaWdodEJyYWNrZXQpIHtcbiAgICAgICAgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gbm9uVGVybWluYWxOb2RlOyAgLy8vXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoQnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlKGNoaWxkTm9kZXMsIGNhbGxiYWNrKSB7XG4gIGxldCBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3QgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbUNoaWxkTm9kZXMoY2hpbGROb2Rlcyk7XG5cbiAgaWYgKGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSAhPT0gbnVsbCkge1xuICAgIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXMgPSBjYWxsYmFjayhicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXM7XG59XG4iXSwibmFtZXMiOlsiYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbUNoaWxkTm9kZXMiLCJtYXRjaEJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSIsImNoaWxkTm9kZXMiLCJicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwiQlJBQ0tFVEVEX1NUQVRFTUVOVF9DSElMRF9OT0RFU19MRU5HVEgiLCJmaXJzdENoaWxkTm9kZSIsImZpcnN0IiwidGhpcmRDaGlsZE5vZGUiLCJ0aGlyZCIsInNlY29uZENoaWxkTm9kZSIsInNlY29uZCIsImZpcnN0Q2hpbGROb2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJ0aGlyZENoaWxkTm9kZVRlcm1pbmFsTm9kZSIsInNlY29uZENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiZmlyc3RUZXJtaW5hbE5vZGUiLCJzZWNvbmRUZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiZmlyc3RUZXJtaW5hbE5vZGVDb250ZW50IiwiZ2V0Q29udGVudCIsInNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnQiLCJmaXJzdFRlcm1pbmFsTm9kZUNvbnRlbnRMZWZ0QnJhY2tldCIsIkxFRlRfQlJBQ0tFVCIsInNlY29uZFRlcm1pbmFsTm9kZUNvbnRlbnRSaWdodEJyYWNrZXQiLCJSSUdIVF9CUkFDS0VUIiwibm9uVGVybWluYWxOb2RlUnVsZU5hbWVTdGF0ZW1lbnRSdWxlTmFtZSIsIlNUQVRFTUVOVF9SVUxFX05BTUUiLCJjYWxsYmFjayIsImJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZU1hdGNoZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQU1nQkEseUNBQXlDO2VBQXpDQTs7SUFpQ0FDLGdDQUFnQztlQUFoQ0E7OztxQkFyQ3FCO3lCQUNEO3lCQUNnRDtBQUU3RSxTQUFTRCwwQ0FBMENFLFVBQVUsRUFBRTtJQUNwRSxJQUFJQyw4QkFBOEIsSUFBSTtJQUV0QyxJQUFNQyxtQkFBbUJGLFdBQVdHLE1BQU07SUFFMUMsSUFBSUQscUJBQXFCRSxpREFBc0MsRUFBRTtRQUMvRCxJQUFNQyxpQkFBaUJDLElBQUFBLFlBQUssRUFBQ04sYUFDdkJPLGlCQUFpQkMsSUFBQUEsWUFBSyxFQUFDUixhQUN2QlMsa0JBQWtCQyxJQUFBQSxhQUFNLEVBQUNWLGFBQ3pCVyw2QkFBNkJOLGVBQWVPLGNBQWMsSUFDMURDLDZCQUE2Qk4sZUFBZUssY0FBYyxJQUMxREUsaUNBQWlDTCxnQkFBZ0JNLGlCQUFpQjtRQUV4RSxJQUFJSiw4QkFBOEJHLGtDQUFrQ0QsNEJBQTRCO1lBQzlGLElBQU1HLGtCQUFrQlAsaUJBQ2xCUSxvQkFBb0JaLGdCQUNwQmEscUJBQXFCWCxnQkFDckJZLDBCQUEwQkgsZ0JBQWdCSSxXQUFXLElBQ3JEQywyQkFBMkJKLGtCQUFrQkssVUFBVSxJQUN2REMsNEJBQTRCTCxtQkFBbUJJLFVBQVUsSUFDekRFLHNDQUF1Q0gsNkJBQTZCSSx1QkFBWSxFQUNoRkMsd0NBQXlDSCw4QkFBOEJJLHdCQUFhLEVBQ3BGQywyQ0FBNENULDRCQUE0QlUsOEJBQW1CO1lBRWpHLElBQUlMLHVDQUF1Q0ksNENBQTRDRix1Q0FBdUM7Z0JBQzVIekIsOEJBQThCZSxpQkFBa0IsR0FBRztZQUNyRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPZjtBQUNUO0FBRU8sU0FBU0YsaUNBQWlDQyxVQUFVLEVBQUU4QixRQUFRLEVBQUU7SUFDckUsSUFBSUMscUNBQXFDLEtBQUs7SUFFOUMsSUFBTTlCLDhCQUE4QkgsMENBQTBDRTtJQUU5RSxJQUFJQyxnQ0FBZ0MsSUFBSSxFQUFFO1FBQ3hDOEIscUNBQXFDRCxTQUFTN0I7SUFDaEQsQ0FBQztJQUVELE9BQU84QjtBQUNUIn0=
|
|
@@ -1,176 +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 matchBracketedMetastatementChildNode(childNodes, callback) {
|
|
8
|
-
let bracketedMetastatementChildNodeMatches = false;
|
|
9
|
-
|
|
10
|
-
const bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromChildNodes(childNodes);
|
|
11
|
-
|
|
12
|
-
if (bracketedMetastatementChildNode !== null) {
|
|
13
|
-
bracketedMetastatementChildNodeMatches = callback(bracketedMetastatementChildNode);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return bracketedMetastatementChildNodeMatches;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode) {
|
|
20
|
-
let metaAssertionMetastatementNodeMatches;
|
|
21
|
-
|
|
22
|
-
const metastatementNode = topmostMetastatementNode, ///
|
|
23
|
-
metaAssertionMetastatementNode = topmostMetaAssertionMetastatementNode; ///
|
|
24
|
-
|
|
25
|
-
metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode);
|
|
26
|
-
|
|
27
|
-
if (!metaAssertionMetastatementNodeMatches) {
|
|
28
|
-
const nonTerminalNode = metastatementNode, ///
|
|
29
|
-
childNodes = nonTerminalNode, ///
|
|
30
|
-
bracketedMetastatementChildNodeMatches = matchBracketedMetastatementChildNode(childNodes, (bracketedMetastatementChildNode) => {
|
|
31
|
-
const metastatementNode = bracketedMetastatementChildNode, ///
|
|
32
|
-
metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode),
|
|
33
|
-
bracketedMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
|
|
34
|
-
|
|
35
|
-
return bracketedMetastatementChildNodeMatches;
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
metaAssertionMetastatementNodeMatches = bracketedMetastatementChildNodeMatches; ///
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (!metaAssertionMetastatementNodeMatches) {
|
|
42
|
-
const metaAssertionNonTerminalNode = metaAssertionMetastatementNode, ///
|
|
43
|
-
metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(),
|
|
44
|
-
bracketedMetaAssertionMetastatementChildNodeMatches = matchBracketedMetastatementChildNode(metaAssertionChildNodes, (bracketedMetaAssertionMetastatementChildNode) => {
|
|
45
|
-
const metaAssertionMetastatementNode = bracketedMetaAssertionMetastatementChildNode, ///
|
|
46
|
-
metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode),
|
|
47
|
-
bracketedMetaAssertionMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
|
|
48
|
-
|
|
49
|
-
return bracketedMetaAssertionMetastatementChildNodeMatches;
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
metaAssertionMetastatementNodeMatches = bracketedMetaAssertionMetastatementChildNodeMatches; ///
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const topmostMetaAssertionMetastatementNodeMatches = metaAssertionMetastatementNodeMatches; ///
|
|
56
|
-
|
|
57
|
-
return topmostMetaAssertionMetastatementNodeMatches;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export function bracketedMetastatementChildNodeFromChildNodes(childNodes) {
|
|
61
|
-
let bracketedMetastatementChildNode = null;
|
|
62
|
-
|
|
63
|
-
const childNodesLength = childNodes.length;
|
|
64
|
-
|
|
65
|
-
if (childNodesLength === BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH) {
|
|
66
|
-
const firstChildNode = first(childNodes),
|
|
67
|
-
thirdChildNode = third(childNodes),
|
|
68
|
-
secondChildNode = second(childNodes),
|
|
69
|
-
firstChildNodeTerminalNode = firstChildNode.isTerminalNode(),
|
|
70
|
-
thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(),
|
|
71
|
-
secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
|
|
72
|
-
|
|
73
|
-
if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
|
|
74
|
-
const nonTerminalNode = secondChildNode, ///
|
|
75
|
-
firstTerminalNode = firstChildNode, ///
|
|
76
|
-
secondTerminalNode = thirdChildNode, ///
|
|
77
|
-
nonTerminalNodeRuleName = nonTerminalNode.getRuleName(),
|
|
78
|
-
firstTerminalNodeContent = firstTerminalNode.getContent(),
|
|
79
|
-
secondTerminalNodeContent = secondTerminalNode.getContent(),
|
|
80
|
-
firstTerminalNodeContentLeftBracket = (firstTerminalNodeContent === LEFT_BRACKET),
|
|
81
|
-
secondTerminalNodeContentRightBracket = (secondTerminalNodeContent === RIGHT_BRACKET),
|
|
82
|
-
nonTerminalNodeRuleNameMetastatementRuleName = (nonTerminalNodeRuleName === METASTATEMENT_RULE_NAME);
|
|
83
|
-
|
|
84
|
-
if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameMetastatementRuleName && secondTerminalNodeContentRightBracket) {
|
|
85
|
-
bracketedMetastatementChildNode = nonTerminalNode; ///
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return bracketedMetastatementChildNode;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
function matchMetaAssertionNode(metaAssertionNode, node) {
|
|
94
|
-
let metaAssertionNodeMatches = false;
|
|
95
|
-
|
|
96
|
-
const nodeTerminalNode = node.isTerminalNode(),
|
|
97
|
-
ruleNodeTerminalNode = metaAssertionNode.isTerminalNode();
|
|
98
|
-
|
|
99
|
-
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
100
|
-
if (nodeTerminalNode) {
|
|
101
|
-
const terminalNode = node, ///
|
|
102
|
-
metaAssertionTerminalNode = metaAssertionNode, ///
|
|
103
|
-
metaAssertionTerminalNodeMatches = matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode);
|
|
104
|
-
|
|
105
|
-
metaAssertionNodeMatches = metaAssertionTerminalNodeMatches; ///
|
|
106
|
-
} else {
|
|
107
|
-
const nonTerminalNode = node, ///
|
|
108
|
-
metaAssertionNonTerminalNode = metaAssertionNode, ///
|
|
109
|
-
metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
|
|
110
|
-
|
|
111
|
-
metaAssertionNodeMatches = metaAssertionNonTerminalNodeMatches; ///
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return metaAssertionNodeMatches;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
function matchMetaAssertionNodes(metaAssertionNodes, nodes) {
|
|
119
|
-
let metaAssertionNodesMatches = false;
|
|
120
|
-
|
|
121
|
-
const nodesLength = nodes.length,
|
|
122
|
-
metaAssertionNodesLength = metaAssertionNodes.length;
|
|
123
|
-
|
|
124
|
-
if (nodesLength === metaAssertionNodesLength) {
|
|
125
|
-
metaAssertionNodesMatches = nodes.every((node, index) => {
|
|
126
|
-
const metaAssertionNode = metaAssertionNodes[index],
|
|
127
|
-
metaAssertionNodeMatches = matchMetaAssertionNode(metaAssertionNode, node);
|
|
128
|
-
|
|
129
|
-
if (metaAssertionNodeMatches) {
|
|
130
|
-
return true;
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
return metaAssertionNodesMatches;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
function matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode) {
|
|
139
|
-
let metaAssertionTerminalNodeMatches = false;
|
|
140
|
-
|
|
141
|
-
const matches = metaAssertionTerminalNode.match(terminalNode);
|
|
142
|
-
|
|
143
|
-
if (matches) {
|
|
144
|
-
metaAssertionTerminalNodeMatches = true;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
return metaAssertionTerminalNodeMatches;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
function matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode) {
|
|
151
|
-
let metaAssertionNonTerminalNodeMatches = false;
|
|
152
|
-
|
|
153
|
-
const ruleName = nonTerminalNode.getRuleName(),
|
|
154
|
-
metaAssertionRuleName = metaAssertionNonTerminalNode.getRuleName(); ///
|
|
155
|
-
|
|
156
|
-
if (ruleName === metaAssertionRuleName) {
|
|
157
|
-
const childNodes = nonTerminalNode.getChildNodes(),
|
|
158
|
-
nodes = childNodes, ///
|
|
159
|
-
metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(),
|
|
160
|
-
metaAssertionNodes = metaAssertionChildNodes, ///
|
|
161
|
-
metaAssertionNodesMatches = matchMetaAssertionNodes(metaAssertionNodes, nodes);
|
|
162
|
-
|
|
163
|
-
metaAssertionNonTerminalNodeMatches = metaAssertionNodesMatches; ///
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
return metaAssertionNonTerminalNodeMatches;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
function matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode) {
|
|
170
|
-
const nonTerminalNode = metastatementNode, ///
|
|
171
|
-
metaAssertionNonTerminalNode = metaAssertionMetastatementNode, ///
|
|
172
|
-
metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode),
|
|
173
|
-
metaAssertionMetastatementNodeNatches = metaAssertionNonTerminalNodeMatches; ///
|
|
174
|
-
|
|
175
|
-
return metaAssertionMetastatementNodeNatches;
|
|
176
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { first, second, third } from "../utilities/array";
|
|
4
|
-
import { STATEMENT_RULE_NAME } from "../ruleNames";
|
|
5
|
-
import { LEFT_BRACKET, RIGHT_BRACKET, BRACKETED_STATEMENT_CHILD_NODES_LENGTH } from "../constants";
|
|
6
|
-
|
|
7
|
-
export function bracketedStatementChildNodeFromChildNodes(childNodes) {
|
|
8
|
-
let bracketedStatementChildNode = null;
|
|
9
|
-
|
|
10
|
-
const childNodesLength = childNodes.length;
|
|
11
|
-
|
|
12
|
-
if (childNodesLength === BRACKETED_STATEMENT_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
|
-
nonTerminalNodeRuleNameStatementRuleName = (nonTerminalNodeRuleName === STATEMENT_RULE_NAME);
|
|
30
|
-
|
|
31
|
-
if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameStatementRuleName && secondTerminalNodeContentRightBracket) {
|
|
32
|
-
bracketedStatementChildNode = nonTerminalNode; ///
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return bracketedStatementChildNode;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export function matchBracketedStatementChildNode(childNodes, callback) {
|
|
41
|
-
let bracketedStatementChildNodeMatches = false;
|
|
42
|
-
|
|
43
|
-
const bracketedStatementChildNode = bracketedStatementChildNodeFromChildNodes(childNodes);
|
|
44
|
-
|
|
45
|
-
if (bracketedStatementChildNode !== null) {
|
|
46
|
-
bracketedStatementChildNodeMatches = callback(bracketedStatementChildNode);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return bracketedStatementChildNodeMatches;
|
|
50
|
-
}
|