occam-verify-cli 0.0.932 → 0.0.934

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.
Files changed (115) hide show
  1. package/lib/conclusion.js +4 -4
  2. package/lib/consequent.js +4 -4
  3. package/lib/context/local.js +188 -9
  4. package/lib/declaration.js +2 -2
  5. package/lib/equality.js +4 -4
  6. package/lib/equivalence.js +16 -1
  7. package/lib/metaLemma.js +4 -4
  8. package/lib/metatheorem.js +4 -4
  9. package/lib/premise.js +6 -6
  10. package/lib/proofStep.js +43 -6
  11. package/lib/shim.js +14 -0
  12. package/lib/substitution/statementForMetavariable.js +46 -2
  13. package/lib/substitution/termForVariable.js +15 -1
  14. package/lib/supposition.js +6 -6
  15. package/lib/unifier/equality.js +216 -0
  16. package/lib/unifier/metaLevel.js +235 -0
  17. package/lib/unifier/statementAgainstCombinator.js +232 -0
  18. package/lib/unifier/termAgainstConstructor.js +212 -0
  19. package/lib/unifier.js +201 -0
  20. package/lib/unify/argumentAgainstArgument.js +24 -0
  21. package/lib/unify/metavariableAgainstStatement.js +66 -0
  22. package/lib/unify/statementAgainstMetaType.js +28 -0
  23. package/lib/unify/statementAtainstStatement.js +52 -0
  24. package/lib/unify/termAgainstTerm.js +22 -0
  25. package/lib/unify/termAgainstType.js +26 -0
  26. package/lib/unify/variableAgainstTerm.js +70 -0
  27. package/lib/verifier/metaLevel.js +236 -0
  28. package/lib/verifier/statementAsCombinator.js +236 -0
  29. package/lib/verifier/termAsConstructor.js +219 -0
  30. package/lib/verifier.js +182 -0
  31. package/lib/verify/assertion/contained.js +2 -2
  32. package/lib/verify/assertion/defined.js +2 -2
  33. package/lib/verify/declaration.js +18 -18
  34. package/lib/verify/frame.js +9 -12
  35. package/lib/verify/proofStep.js +3 -3
  36. package/lib/verify/statement/qualified.js +61 -10
  37. package/lib/verify/statement/unqualified.js +62 -50
  38. package/lib/verify/statement.js +36 -41
  39. package/lib/verify/statementAsCombinator.js +2 -2
  40. package/lib/verify/subDerivation.js +8 -2
  41. package/lib/verify/term.js +8 -7
  42. package/lib/verify/termAsConstructor.js +2 -2
  43. package/package.json +2 -2
  44. package/src/conclusion.js +3 -3
  45. package/src/consequent.js +3 -3
  46. package/src/context/local.js +68 -8
  47. package/src/declaration.js +2 -2
  48. package/src/equality.js +3 -3
  49. package/src/equivalence.js +19 -0
  50. package/src/metaLemma.js +1 -1
  51. package/src/metatheorem.js +1 -1
  52. package/src/premise.js +5 -5
  53. package/src/proofStep.js +57 -4
  54. package/src/shim.js +5 -0
  55. package/src/substitution/statementForMetavariable.js +33 -2
  56. package/src/substitution/termForVariable.js +16 -0
  57. package/src/supposition.js +5 -5
  58. package/src/unifier/equality.js +84 -0
  59. package/src/unifier/metaLevel.js +114 -0
  60. package/src/unifier/statementAgainstCombinator.js +105 -0
  61. package/src/unifier/termAgainstConstructor.js +77 -0
  62. package/src/unifier.js +133 -0
  63. package/src/unify/argumentAgainstArgument.js +15 -0
  64. package/src/{verify → unify}/metavariableAgainstStatement.js +18 -18
  65. package/src/{verify → unify}/statementAgainstMetaType.js +4 -4
  66. package/src/{verify → unify}/statementAtainstStatement.js +7 -7
  67. package/src/{verify → unify}/termAgainstTerm.js +5 -5
  68. package/src/{verify → unify}/termAgainstType.js +7 -7
  69. package/src/{verify → unify}/variableAgainstTerm.js +6 -6
  70. package/src/verifier/{node/metaLevel.js → metaLevel.js} +14 -14
  71. package/src/verifier/{node/statementAsCombinator.js → statementAsCombinator.js} +14 -14
  72. package/src/verifier/{node/termAsConstructor.js → termAsConstructor.js} +12 -12
  73. package/src/{verifier/node.js → verifier.js} +19 -1
  74. package/src/verify/assertion/contained.js +2 -2
  75. package/src/verify/assertion/defined.js +2 -2
  76. package/src/verify/declaration.js +20 -23
  77. package/src/verify/frame.js +10 -13
  78. package/src/verify/proofStep.js +2 -2
  79. package/src/verify/statement/qualified.js +95 -10
  80. package/src/verify/statement/unqualified.js +85 -11
  81. package/src/verify/statement.js +47 -45
  82. package/src/verify/statementAsCombinator.js +2 -2
  83. package/src/verify/subDerivation.js +3 -1
  84. package/src/verify/term.js +7 -6
  85. package/src/verify/termAsConstructor.js +2 -2
  86. package/lib/mixins/context.js +0 -135
  87. package/lib/mixins/nodesVerifier/intrinsiclevel.js +0 -59
  88. package/lib/mixins/nodesVerifier/metaLevel.js +0 -40
  89. package/lib/utilities/verifier.js +0 -80
  90. package/lib/verifier/node/metaLevel.js +0 -201
  91. package/lib/verifier/node/statementAsCombinator.js +0 -201
  92. package/lib/verifier/node/termAsConstructor.js +0 -184
  93. package/lib/verifier/node.js +0 -157
  94. package/lib/verifier/nodes/equality.js +0 -176
  95. package/lib/verifier/nodes/metaLevel.js +0 -191
  96. package/lib/verifier/nodes/statementAgainstCombinator.js +0 -191
  97. package/lib/verifier/nodes/termAgainstConstructor.js +0 -171
  98. package/lib/verifier/nodes.js +0 -175
  99. package/lib/verify/argumentAgainstArgument.js +0 -24
  100. package/lib/verify/metavariableAgainstStatement.js +0 -66
  101. package/lib/verify/statementAgainstMetaType.js +0 -28
  102. package/lib/verify/statementAtainstStatement.js +0 -52
  103. package/lib/verify/termAgainstTerm.js +0 -22
  104. package/lib/verify/termAgainstType.js +0 -26
  105. package/lib/verify/variableAgainstTerm.js +0 -70
  106. package/src/mixins/context.js +0 -96
  107. package/src/mixins/nodesVerifier/intrinsiclevel.js +0 -73
  108. package/src/mixins/nodesVerifier/metaLevel.js +0 -39
  109. package/src/utilities/verifier.js +0 -38
  110. package/src/verifier/nodes/equality.js +0 -84
  111. package/src/verifier/nodes/metaLevel.js +0 -109
  112. package/src/verifier/nodes/statementAgainstCombinator.js +0 -105
  113. package/src/verifier/nodes/termAgainstConstructor.js +0 -76
  114. package/src/verifier/nodes.js +0 -114
  115. package/src/verify/argumentAgainstArgument.js +0 -15
@@ -1,109 +0,0 @@
1
- "use strict";
2
-
3
- import NodesVerifier from "../../verifier/nodes";
4
- import verifyVariableAgainstTerm from "../../verify/variableAgainstTerm";
5
- import verifyMetavariableAgainstStatement from "../../verify/metavariableAgainstStatement";
6
-
7
- import { nodeQuery } from "../../utilities/query";
8
- import { verifyNodes } from "../../utilities/verifier";
9
-
10
- const termNodeQuery = nodeQuery("/term!"),
11
- statementNodeQuery = nodeQuery("/statement!"),
12
- nonTerminalNodeQuery = nodeQuery("/*"),
13
- termVariableNodeQuery = nodeQuery("/term/variable!"),
14
- statementSubstitutionNodeQuery = nodeQuery("/statement/substitution!"),
15
- statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!");
16
-
17
- class MetaLevelNodesVerifier extends NodesVerifier {
18
- verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, verifyAhead) {
19
- let nonTerminalNodeVerified;
20
-
21
- const nodeQueryMaps = [
22
- {
23
- nodeQueryA: statementMetavariableNodeQuery,
24
- nodeQueryB: statementNodeQuery,
25
- verifyNodes: (nodeA, nodeB, substitutions, localContextA, localContextB, verifyAhead) => {
26
- let nonTerminalNodeVerified;
27
-
28
- const statementNodeA = nonTerminalNodeA, ///
29
- statementNodeB = nodeB, ///
30
- statementMetavariableNodeA = nodeA, ///
31
- statementSubstitutionNodeA = statementSubstitutionNodeQuery(statementNodeA),
32
- metavariableNodeVerifiedAgainstStatementNode =
33
-
34
- this.verifyStatementMetavariableNodeAgainstStatementNode(statementMetavariableNodeA, statementSubstitutionNodeA, statementNodeB, substitutions, localContextA, localContextB, verifyAhead);
35
-
36
- nonTerminalNodeVerified = metavariableNodeVerifiedAgainstStatementNode; ///
37
-
38
- return nonTerminalNodeVerified;
39
- }
40
- },
41
- {
42
- nodeQueryA: termVariableNodeQuery,
43
- nodeQueryB: termNodeQuery,
44
- verifyNodes: (nodeA, nodeB, substitutions, localContextA, localContextB, verifyAhead) => {
45
- let nonTerminalNodeVerified;
46
-
47
- const termNodeB = nodeB, ///
48
- termVariableNodeA = nodeA, ///
49
- termVariableNodeVerifiedAgainstTermNode =
50
-
51
- this.verifyTermVariableNodeAgainstTermNode(termVariableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead);
52
-
53
- nonTerminalNodeVerified = termVariableNodeVerifiedAgainstTermNode; ///
54
-
55
- return nonTerminalNodeVerified;
56
- }
57
- },
58
- {
59
- nodeQueryA: nonTerminalNodeQuery,
60
- nodeQueryB: nonTerminalNodeQuery,
61
- verifyNodes: (nodeA, nodeB, substitutions, localContextA, localContextB, verifyAhead) => {
62
- let nonTerminalNodeVerified;
63
-
64
- const nonTerminalNodeA = nodeA, ///
65
- nonTerminalNodeB = nodeB; ///
66
-
67
- nonTerminalNodeVerified =
68
-
69
- super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, verifyAhead);
70
-
71
- return nonTerminalNodeVerified;
72
- }
73
- }
74
- ];
75
-
76
- const nodesVerified = verifyNodes(nodeQueryMaps, nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, verifyAhead);
77
-
78
- nonTerminalNodeVerified = nodesVerified; ///
79
-
80
- return nonTerminalNodeVerified;
81
- }
82
-
83
- verifyStatementMetavariableNodeAgainstStatementNode(statementMetavariableNodeA, statementSubstitutionNodeA, statementNodeB, substitutions, localContextA, localContextB, verifyAhead) {
84
- let metavariableNodeVerifiedAgainstStatementNode;
85
-
86
- const substitutionNode = statementSubstitutionNodeA, ///
87
- metavariableNodeA = statementMetavariableNodeA, ///
88
- metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead);
89
-
90
- metavariableNodeVerifiedAgainstStatementNode = metavariableVerifiedAgainstStatement; ///
91
-
92
- return metavariableNodeVerifiedAgainstStatementNode;
93
- }
94
-
95
- verifyTermVariableNodeAgainstTermNode(termVariableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
96
- let termVariableNodeVerifiedAgainstTermNode;
97
-
98
- const variableNodeA = termVariableNodeA, ///
99
- termVerifiedAgainstVariable = verifyVariableAgainstTerm(variableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead);
100
-
101
- termVariableNodeVerifiedAgainstTermNode = termVerifiedAgainstVariable; ///
102
-
103
- return termVariableNodeVerifiedAgainstTermNode;
104
- }
105
- }
106
-
107
- const metaLevelNodesVerifier = new MetaLevelNodesVerifier();
108
-
109
- export default metaLevelNodesVerifier;
@@ -1,105 +0,0 @@
1
- "use strict";
2
-
3
- import NodesVerifier from "../../verifier/nodes";
4
- import verifyArgumentAgainstArgument from "../../verify/argumentAgainstArgument";
5
- import verifyStatementAgainstMetaType from "../../verify/statementAgainstMetaType";
6
-
7
- import { nodeQuery } from "../../utilities/query";
8
- import { verifyNodes } from "../../utilities/verifier";
9
-
10
- const argumentNodeQuery = nodeQuery("/argument!"),
11
- nonTerminalNodeQuery = nodeQuery("/*"),
12
- metaArgumentMetaTypeNodeQuery = nodeQuery("/metaArgument/metaType!"),
13
- metaArgumentStatementNodeQuery = nodeQuery("/metaArgument/statement!");
14
-
15
- class StatementAgainstCombinatorNodesVerifier extends NodesVerifier {
16
- verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, verifyAhead) {
17
- let nonTerminalNodeVerified;
18
-
19
- const nodeQueryMaps = [
20
- {
21
- nodeQueryA: metaArgumentStatementNodeQuery,
22
- nodeQueryB: metaArgumentMetaTypeNodeQuery,
23
- verifyNodes: (nodeA, nodeB, localContext, verifyAhead) => {
24
- let nonTerminalNodeVerified;
25
-
26
- const metaArgumentMetaTypeNodeB = nodeB, ///
27
- metaArgumentStatementNodeA = nodeA, ///
28
- metaArgumentStatementVerifiedAgainstMetaArgumentMetaType =
29
-
30
- this.verifyMetaArgumentStatementAgainstMetaArgumentMetaType(metaArgumentStatementNodeA, metaArgumentMetaTypeNodeB, localContext, verifyAhead);
31
-
32
- nonTerminalNodeVerified = metaArgumentStatementVerifiedAgainstMetaArgumentMetaType; ///
33
-
34
- return nonTerminalNodeVerified;
35
- }
36
- },
37
- {
38
- nodeQueryA: argumentNodeQuery,
39
- nodeQueryB: argumentNodeQuery,
40
- verifyNodes: (nodeA, nodeB, localContext, verifyAhead) => {
41
- let nonTerminalNodeVerified;
42
-
43
- const argumentNodeA = nodeA, ///
44
- argumentNodeB = nodeB, ///
45
- argumentNodeVerifiedAgainstArgumentNode =
46
-
47
- this.verifyArgumentNodeAgainstArgumentNode(argumentNodeA, argumentNodeB, localContext, verifyAhead);
48
-
49
- nonTerminalNodeVerified = argumentNodeVerifiedAgainstArgumentNode; ///
50
-
51
- return nonTerminalNodeVerified;
52
- }
53
- },
54
- {
55
- nodeQueryA: nonTerminalNodeQuery,
56
- nodeQueryB: nonTerminalNodeQuery,
57
- verifyNodes: (nodeA, nodeB, localContext, verifyAhead) => {
58
- let nonTerminalNodeVerified;
59
-
60
- const nonTerminalNodeA = nodeA, ///
61
- nonTerminalNodeB = nodeB; ///
62
-
63
- nonTerminalNodeVerified =
64
-
65
- super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, verifyAhead);
66
-
67
- return nonTerminalNodeVerified;
68
- }
69
- }
70
- ];
71
-
72
- const nodesVerified = verifyNodes(nodeQueryMaps, nonTerminalNodeA, nonTerminalNodeB, localContext, verifyAhead);
73
-
74
- nonTerminalNodeVerified = nodesVerified; ///
75
-
76
- return nonTerminalNodeVerified;
77
- }
78
-
79
- verifyMetaArgumentStatementAgainstMetaArgumentMetaType(metaArgumentStatementNodeA, metaArgumentMetaTypeNodeB, localContext, verifyAhead) {
80
- let metaArgumentStatementVerifiedAgainstMetaArgumentMetaType;
81
-
82
- const { verifyStatement } = this,
83
- metaTypeNode = metaArgumentMetaTypeNodeB, ///
84
- statementNode = metaArgumentStatementNodeA, ///
85
- statementVerifiedAgainstMetaType = verifyStatementAgainstMetaType(statementNode, metaTypeNode, localContext, verifyAhead, verifyStatement);
86
-
87
- metaArgumentStatementVerifiedAgainstMetaArgumentMetaType = statementVerifiedAgainstMetaType; ///
88
-
89
- return metaArgumentStatementVerifiedAgainstMetaArgumentMetaType;
90
- }
91
-
92
- verifyArgumentNodeAgainstArgumentNode(argumentNodeA, argumentNodeB, localContext, verifyAhead) {
93
- let argumentNodeVerifiedAgainstArgumentNode;
94
-
95
- const argumentVerifiedAgainstArgument = verifyArgumentAgainstArgument(argumentNodeA, argumentNodeB, localContext, verifyAhead);
96
-
97
- argumentNodeVerifiedAgainstArgumentNode = argumentVerifiedAgainstArgument; ///
98
-
99
- return argumentNodeVerifiedAgainstArgumentNode;
100
- }
101
- }
102
-
103
- const statementAgainstCombinatorNodesVerifier = new StatementAgainstCombinatorNodesVerifier();
104
-
105
- export default statementAgainstCombinatorNodesVerifier;
@@ -1,76 +0,0 @@
1
- "use strict";
2
-
3
- import NodesVerifier from "../../verifier/nodes";
4
- import verifyTermAgainstType from "../../verify/termAgainstType";
5
-
6
- import { nodeQuery } from "../../utilities/query";
7
- import { verifyNodes } from "../../utilities/verifier";
8
-
9
- const termNodeQuery = nodeQuery("/argument/term!"),
10
- typeNodeQuery = nodeQuery("/argument/type!"),
11
- nonTerminalNodeQuery = nodeQuery("/*");
12
-
13
- class TermAgainstConstructorNodesVerifier extends NodesVerifier {
14
- verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, verifyAhead) {
15
- let nonTerminalNodeVerified;
16
-
17
- const nodeQueryMaps = [
18
- {
19
- nodeQueryA: termNodeQuery,
20
- nodeQueryB: typeNodeQuery,
21
- verifyNodes: (nodeA, nodeB, localContext, verifyAhead) => {
22
- let nonTerminalNodeVerified;
23
-
24
- const termNodeA = nodeA, ///
25
- typeNodeB = nodeB, ///
26
- termNodeVerifiedAgainstTypeNode =
27
-
28
- this.verifyTermNodeAgainstTypeNode(termNodeA, typeNodeB, localContext, verifyAhead);
29
-
30
- nonTerminalNodeVerified = termNodeVerifiedAgainstTypeNode; ///
31
-
32
- return nonTerminalNodeVerified;
33
- }
34
- },
35
- {
36
- nodeQueryA: nonTerminalNodeQuery,
37
- nodeQueryB: nonTerminalNodeQuery,
38
- verifyNodes: (nodeA, nodeB, localContext, verifyAhead) => {
39
- let nonTerminalNodeVerified;
40
-
41
- const nonTerminalNodeA = nodeA, ///
42
- nonTerminalNodeB = nodeB; ///
43
-
44
- nonTerminalNodeVerified =
45
-
46
- super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, verifyAhead);
47
-
48
- return nonTerminalNodeVerified;
49
- }
50
- }
51
- ];
52
-
53
- const nodesVerified = verifyNodes(nodeQueryMaps, nonTerminalNodeA, nonTerminalNodeB, localContext, verifyAhead);
54
-
55
- nonTerminalNodeVerified = nodesVerified; ///
56
-
57
- return nonTerminalNodeVerified;
58
- }
59
-
60
- verifyTermNodeAgainstTypeNode(termNodeA, typeNodeB, localContext, verifyAhead) {
61
- let termNodeVerifiedAgainstTypeNode;
62
-
63
- const { verifyTerm } = this,
64
- termNode = termNodeA, ///
65
- typeNode = typeNodeB, ///
66
- typeVerifiedAgainstTerm = verifyTermAgainstType(termNode, typeNode, localContext, verifyAhead, verifyTerm);
67
-
68
- termNodeVerifiedAgainstTypeNode = typeVerifiedAgainstTerm; ///
69
-
70
- return termNodeVerifiedAgainstTypeNode;
71
- }
72
- }
73
-
74
- const termAgainstConstructorNodesVerifier = new TermAgainstConstructorNodesVerifier();
75
-
76
- export default termAgainstConstructorNodesVerifier;
@@ -1,114 +0,0 @@
1
- "use strict";
2
-
3
- import { terminalNodeMapFromNodes, areTerminalNodeMapsEqual } from "../utilities/terminalNodes";
4
-
5
- export default class NodesVerifier {
6
- verifyNode(nodeA, nodeB, ...remainingArguments) {
7
- let nodeVerified = false;
8
-
9
- const nodeATerminalNode = nodeA.isTerminalNode(),
10
- nodeBTerminalNode = nodeB.isTerminalNode(),
11
- nodeANonTerminalNode = nodeA.isNonTerminalNode(),
12
- nodeBNonTerminalNode = nodeB.isNonTerminalNode();
13
-
14
- if (false) {
15
- ///
16
- } else if (nodeATerminalNode && nodeBTerminalNode) {
17
- const terminalNodeA = nodeA, ///
18
- terminalNodeB = nodeB, ///
19
- terminalNodeVerified = this.verifyTerminalNode(terminalNodeA, terminalNodeB, ...remainingArguments);
20
-
21
- nodeVerified = terminalNodeVerified; ///
22
- } else if (nodeANonTerminalNode && nodeBNonTerminalNode) {
23
- const nonTerminalNodeA = nodeA, ///
24
- nonTerminalNodeB = nodeB, ///
25
- nonTerminalNodeVerified = this.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, ...remainingArguments);
26
-
27
- nodeVerified = nonTerminalNodeVerified; ///
28
- }
29
-
30
- return nodeVerified;
31
- }
32
-
33
- verifyChildNodes(childNodesA, childNodesB, ...remainingArguments) {
34
- let childNodesVerified = false;
35
-
36
- const childNodesALength = childNodesA.length,
37
- childNodesBLength = childNodesB.length;
38
-
39
- if (childNodesALength === childNodesBLength) {
40
- const childTerminalNodeMapA = terminalNodeMapFromNodes(childNodesA),
41
- childTerminalNodeMapB = terminalNodeMapFromNodes(childNodesB),
42
- terminalNodeMapsEqual = areTerminalNodeMapsEqual(childTerminalNodeMapA, childTerminalNodeMapB);
43
-
44
- if (terminalNodeMapsEqual) {
45
- const index = 0,
46
- childNodesVerifyAhead = this.verifyChildNodesAhead(index, childNodesA, childNodesB, ...remainingArguments);
47
-
48
- childNodesVerified = childNodesVerifyAhead; ///
49
- }
50
- }
51
-
52
- return childNodesVerified;
53
- }
54
-
55
- verifyTerminalNode(terminalNodeA, terminalNodeB, ...remainingArguments) { ///
56
- let terminalNodeVerified;
57
-
58
- const verifyAhead = remainingArguments.pop(),
59
- verifiedAhead = verifyAhead();
60
-
61
- terminalNodeVerified = verifiedAhead; ///
62
-
63
- return terminalNodeVerified;
64
- }
65
-
66
- verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, ...remainingArguments) {
67
- let nonTerminalNodeVerified = false;
68
-
69
- const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(), ///
70
- nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(); ///
71
-
72
- if (nonTerminalNodeARuleName === nonTerminalNodeBRuleName) {
73
- const nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
74
- nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
75
- childNodesA = nonTerminalNodeAChildNodes, ///
76
- childNodesB = nonTerminalNodeBChildNodes, ///
77
- childNodesVerified = this.verifyChildNodes(childNodesA, childNodesB, ...remainingArguments);
78
-
79
- nonTerminalNodeVerified = childNodesVerified; ///
80
- }
81
-
82
- return nonTerminalNodeVerified;
83
- }
84
-
85
- verifyChildNodesAhead(index, childNodesA, childNodesB, ...remainingArguments) {
86
- let childNodesVerified;
87
-
88
- const verifyAhead = remainingArguments.pop(), ///
89
- childNodesALength = childNodesA.length;
90
-
91
- if (index === childNodesALength) {
92
- const verifiedAhead = verifyAhead();
93
-
94
- childNodesVerified = verifiedAhead; ///
95
- } else {
96
- const childNodeA = childNodesA[index],
97
- childNodeB = childNodesB[index],
98
- nodeA = childNodeA, ///
99
- nodeB = childNodeB, ///
100
- nodeVerified = this.verifyNode(nodeA, nodeB, ...remainingArguments, () => {
101
- remainingArguments.push(verifyAhead); ///
102
-
103
- const aheadIndex = index + 1,
104
- childNodesVerifyAhead = this.verifyChildNodesAhead(aheadIndex, childNodesA, childNodesB, ...remainingArguments);
105
-
106
- return childNodesVerifyAhead;
107
- });
108
-
109
- childNodesVerified = nodeVerified; ///
110
- }
111
-
112
- return childNodesVerified;
113
- }
114
- }
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- import termAgainstConstructorNodesVerifier from "../verifier/nodes/termAgainstConstructor";
4
-
5
- export default function verifyArgumentAgainstArgument(argumentNodeA, argumentNodeB, localContext, verifyAhead) {
6
- let argumentVerifiedAgainstArgument;
7
-
8
- const nonTerminalNodeA = argumentNodeA, ///
9
- nonTerminalNodeB = argumentNodeB, ///
10
- nonTerminalNodeVerified = termAgainstConstructorNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, verifyAhead);
11
-
12
- argumentVerifiedAgainstArgument = nonTerminalNodeVerified; ///
13
-
14
- return argumentVerifiedAgainstArgument;
15
- }