occam-verify-cli 0.0.1092 → 0.0.1094

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 (66) hide show
  1. package/lib/assertion/contained.js +18 -16
  2. package/lib/combinator/bracketed.js +12 -5
  3. package/lib/constructor/bracketed.js +12 -5
  4. package/lib/index.js +2 -2
  5. package/lib/metavariable.js +9 -9
  6. package/lib/mixins/statement/qualified/unify.js +4 -4
  7. package/lib/mixins/statement/resolve.js +3 -3
  8. package/lib/nodeAndTokens/metavariable.js +193 -0
  9. package/lib/nodeAndTokens/statement.js +193 -0
  10. package/lib/nodeAndTokens/substitution/frame.js +159 -0
  11. package/lib/nodeAndTokens/substitution/statement.js +159 -0
  12. package/lib/nodeAndTokens/substitution/term.js +159 -0
  13. package/lib/nodeAndTokens/term.js +193 -0
  14. package/lib/nodeAndTokens/variable.js +193 -0
  15. package/lib/nodeAndTokens.js +93 -0
  16. package/lib/statement/unqualified.js +4 -4
  17. package/lib/statement.js +3 -4
  18. package/lib/substitution/frame.js +208 -0
  19. package/lib/substitution/statement.js +318 -0
  20. package/lib/substitution/term.js +202 -0
  21. package/lib/substitution.js +1 -8
  22. package/lib/substitutions.js +1 -13
  23. package/lib/term.js +3 -3
  24. package/lib/unifier/metaLevel.js +4 -4
  25. package/lib/unifier/termWithConstructor.js +6 -6
  26. package/lib/utilities/json.js +2 -2
  27. package/lib/utilities/substitutions.js +6 -21
  28. package/lib/variable.js +5 -5
  29. package/package.json +3 -1
  30. package/src/assertion/contained.js +17 -15
  31. package/src/combinator/bracketed.js +18 -13
  32. package/src/constructor/bracketed.js +19 -14
  33. package/src/index.js +1 -1
  34. package/src/metavariable.js +10 -11
  35. package/src/mixins/statement/qualified/unify.js +5 -5
  36. package/src/mixins/statement/resolve.js +4 -4
  37. package/src/nodeAndTokens/metavariable.js +49 -0
  38. package/src/nodeAndTokens/statement.js +49 -0
  39. package/src/nodeAndTokens/substitution/frame.js +23 -0
  40. package/src/nodeAndTokens/substitution/statement.js +23 -0
  41. package/src/nodeAndTokens/substitution/term.js +23 -0
  42. package/src/nodeAndTokens/term.js +49 -0
  43. package/src/nodeAndTokens/variable.js +49 -0
  44. package/src/nodeAndTokens.js +78 -0
  45. package/src/statement/unqualified.js +6 -3
  46. package/src/statement.js +5 -13
  47. package/src/substitution/{frameForMetavariable.js → frame.js} +21 -31
  48. package/src/substitution/{statementForMetavariable.js → statement.js} +59 -65
  49. package/src/substitution/{termForVariable.js → term.js} +21 -31
  50. package/src/substitution.js +0 -6
  51. package/src/substitutions.js +0 -12
  52. package/src/term.js +3 -4
  53. package/src/unifier/metaLevel.js +5 -5
  54. package/src/unifier/termWithConstructor.js +5 -5
  55. package/src/utilities/json.js +3 -2
  56. package/src/utilities/substitutions.js +7 -23
  57. package/src/variable.js +7 -8
  58. package/lib/ruleNames.js +0 -30
  59. package/lib/substitution/frameForMetavariable.js +0 -209
  60. package/lib/substitution/statementForMetavariable.js +0 -314
  61. package/lib/substitution/termForVariable.js +0 -203
  62. package/lib/utilities/node.js +0 -113
  63. package/lib/utilities/tokens.js +0 -69
  64. package/src/ruleNames.js +0 -6
  65. package/src/utilities/node.js +0 -114
  66. package/src/utilities/tokens.js +0 -63
@@ -4,15 +4,12 @@ import shim from "../shim";
4
4
  import Substitution from "../substitution";
5
5
  import LocalContext from "../context/local";
6
6
  import metaLevelUnifier from "../unifier/metaLevel";
7
+ import StatementSubstitutionNodeAndTokens from "../nodeAndTokens/substitution/statement";
7
8
 
8
9
  import { stripBracketsFromStatementNode } from "../utilities/brackets";
9
10
  import { statementFromJSON, statementToStatementJSON, metavariableFromJSON, metavariableToMetavariableJSON } from "../utilities/json";
10
- import { unqualifiedStatementTokensFromUnqualifiedStatementString, substitutionTokensFromUnqualifiedStatementTokensAndSubstitutionNode } from "../utilities/tokens";
11
- import { substitutionNodeFromUnqualifiedStatementNode,
12
- unqualifiedStatementStringFromSubstitutionString,
13
- unqualifiedStatementNodeFromUnqualifiedStatementTokens } from "../utilities/node";
14
11
 
15
- class StatementForMetavariableSubstitution extends Substitution {
12
+ class StatementSubstitution extends Substitution {
16
13
  constructor(string, node, tokens, resolved, statement, metavariable, substitution) {
17
14
  super(string, node, tokens);
18
15
 
@@ -93,8 +90,13 @@ class StatementForMetavariableSubstitution extends Substitution {
93
90
  if (simpleSubstitution !== null) {
94
91
  specificContext.trace(`Resolving the ${substitutionString} substitution...`);
95
92
 
93
+ const context = generalContext, ///
94
+ localContext = LocalContext.fromContextAndTokens(context, this.tokens);
95
+
96
+ generalContext = localContext; ///
97
+
96
98
  const substitution = simpleSubstitution, ///
97
- substitutionResolved = substitution.resolveSubstitution(this.substitution, this.statement, substitutions, generalContext, specificContext);
99
+ substitutionResolved = substitution.resolveSubstitution(this.substitution, this.statement, substitutions, generalContext, specificContext);
98
100
 
99
101
  this.resolved = substitutionResolved; ///
100
102
 
@@ -115,21 +117,40 @@ class StatementForMetavariableSubstitution extends Substitution {
115
117
  specificSubstitution = this.unifyStatement(statement, specificContext, specificContext); ///
116
118
 
117
119
  if (specificSubstitution !== null) {
118
- generalContext = contextFromLocalContextAndSubstitution(generalContext, generalSubstitution); ///
119
-
120
- specificContext = contextFromLocalContextAndSubstitution(specificContext, specificSubstitution); ///
121
-
122
120
  substitutions.snapshot();
123
121
 
124
- const generalSubstitutionNode = generalSubstitution.getSubstitutionNode(), ///
125
- specificSubstitutionNode = specificSubstitution.getSubstitutionNode(), ///
126
- generalSubstitutionString = generalContext.nodeAsString(generalSubstitutionNode),
127
- specificSubstitutionString = specificContext.nodeAsString(specificSubstitutionNode);
122
+ const generalSubstitutionString = generalSubstitution.getString(),
123
+ specificSubstitutionString = specificSubstitution.getString();
128
124
 
129
125
  specificContext.trace(`Unifying the '${specificSubstitutionString}' substitution with the '${generalSubstitutionString}' substitution...`);
130
126
 
127
+ const generalSubstitutionNode = generalSubstitution.getNode(),
128
+ specificSubstitutionNode = specificSubstitution.getNode(),
129
+ generalSubstitutionTokens = generalSubstitution.getTokens(),
130
+ specificSubstitutionTokens = specificSubstitution.getTokens();
131
+
132
+ let tokens,
133
+ context,
134
+ localContext;
135
+
136
+ tokens = generalSubstitutionTokens; ///
137
+
138
+ context = generalContext; ///
139
+
140
+ localContext = LocalContext.fromContextAndTokens(context, tokens);
141
+
142
+ generalContext = localContext; ///
143
+
144
+ tokens = specificSubstitutionTokens; ///
145
+
146
+ context = specificContext; ///
147
+
148
+ localContext = LocalContext.fromContextAndTokens(context, tokens);
149
+
150
+ specificContext = localContext; ///
151
+
131
152
  const generalNode = generalSubstitutionNode, ///
132
- specificNode = specificSubstitutionNode, ///
153
+ specificNode = specificSubstitutionNode, ///,
133
154
  unifiedAtMetaLevel = metaLevelUnifier.unify(generalNode, specificNode, substitutions, generalContext, specificContext);
134
155
 
135
156
  if (unifiedAtMetaLevel) {
@@ -187,23 +208,18 @@ class StatementForMetavariableSubstitution extends Substitution {
187
208
 
188
209
  static fromJSON(json, fileContext) {
189
210
  const { string } = json,
190
- lexer = fileContext.getLexer(),
191
- parser = fileContext.getParser(),
192
- substitutionString = string, ///
193
- unqualifiedStatementString = unqualifiedStatementStringFromSubstitutionString(substitutionString),
194
- unqualifiedStatementTokens = unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer),
195
- unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser),
196
- substitutionNode = substitutionNodeFromUnqualifiedStatementNode(unqualifiedStatementNode),
197
- substitutionTokens = substitutionTokensFromUnqualifiedStatementTokensAndSubstitutionNode(unqualifiedStatementTokens, substitutionNode),
198
- node = substitutionNode, ///
199
- tokens = substitutionTokens, ///
211
+ context = fileContext, ///
212
+ statementSubstitutionString = string, ///
213
+ statementSubstitutionNodeAndTokens = StatementSubstitutionNodeAndTokens.fromStatementSubstitutionString(statementSubstitutionString, context),
214
+ node = statementSubstitutionNodeAndTokens.getNode(),
215
+ tokens = statementSubstitutionNodeAndTokens.getTokens(),
200
216
  resolved = true,
201
217
  statement = statementFromJSON(json, fileContext),
202
218
  metavariable = metavariableFromJSON(json, fileContext),
203
219
  substitution = null, ///
204
- statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
220
+ statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
205
221
 
206
- return statementForMetavariableSubstitution;
222
+ return statementSubstitution;
207
223
  }
208
224
 
209
225
  static fromStatementAndMetavariable(statement, metavariable, context) {
@@ -215,22 +231,16 @@ class StatementForMetavariableSubstitution extends Substitution {
215
231
 
216
232
  statement = Statement.fromStatementNode(statementNode, context);
217
233
 
218
- const lexer = context.getLexer(),
219
- parser = context.getParser(),
220
- string = stringFromStatementAndMetavariable(statement, metavariable),
221
- substitutionString = string, ///
222
- unqualifiedStatementString = unqualifiedStatementStringFromSubstitutionString(substitutionString),
223
- unqualifiedStatementTokens = unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer),
224
- unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser),
225
- substitutionNode = substitutionNodeFromUnqualifiedStatementNode(unqualifiedStatementNode),
226
- substitutionTokens = substitutionTokensFromUnqualifiedStatementTokensAndSubstitutionNode(unqualifiedStatementTokens, substitutionNode),
227
- node = substitutionNode, ///
228
- tokens = substitutionTokens, ///
234
+ const string = stringFromStatementAndMetavariable(statement, metavariable),
235
+ statementSubstitutionString = string, ///
236
+ statementSubstitutionNodeAndTokens = StatementSubstitutionNodeAndTokens.fromStatementSubstitutionString(statementSubstitutionString, context),
237
+ node = statementSubstitutionNodeAndTokens.getNode(),
238
+ tokens = statementSubstitutionNodeAndTokens.getTokens(),
229
239
  resolved = true,
230
240
  substitution = null,
231
- statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
241
+ statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
232
242
 
233
- return statementForMetavariableSubstitution;
243
+ return statementSubstitution;
234
244
  }
235
245
 
236
246
  static fromStatementMetavariableAndSubstitution(statement, metavariable, substitution, context) {
@@ -242,39 +252,23 @@ class StatementForMetavariableSubstitution extends Substitution {
242
252
 
243
253
  statement = Statement.fromStatementNode(statementNode, context);
244
254
 
245
- const lexer = context.getLexer(),
246
- parser = context.getParser(),
247
- string = stringFromStatementMetavariableAndSubstitution(statement, metavariable, substitution, context),
248
- substitutionString = string, ///
249
- unqualifiedStatementString = unqualifiedStatementStringFromSubstitutionString(substitutionString),
250
- unqualifiedStatementTokens = unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer),
251
- unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser),
252
- substitutionNode = substitutionNodeFromUnqualifiedStatementNode(unqualifiedStatementNode),
253
- substitutionTokens = substitutionTokensFromUnqualifiedStatementTokensAndSubstitutionNode(unqualifiedStatementTokens, substitutionNode),
254
- node = substitutionNode, ///
255
- tokens = substitutionTokens, ///
255
+ const string = stringFromStatementMetavariableAndSubstitution(statement, metavariable, substitution, context),
256
+ statementSubstitutionString = string, ///
257
+ statementSubstitutionNodeAndTokens = StatementSubstitutionNodeAndTokens.fromStatementSubstitutionString(statementSubstitutionString, context),
258
+ node = statementSubstitutionNodeAndTokens.getNode(),
259
+ tokens = statementSubstitutionNodeAndTokens.getTokens(),
256
260
  resolved = false,
257
- statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
261
+ statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
258
262
 
259
- return statementForMetavariableSubstitution;
263
+ return statementSubstitution;
260
264
  }
261
265
  }
262
266
 
263
267
  Object.assign(shim, {
264
- StatementForMetavariableSubstitution
268
+ StatementSubstitution
265
269
  });
266
270
 
267
- export default StatementForMetavariableSubstitution;
268
-
269
- function contextFromLocalContextAndSubstitution(context, substitution) {
270
- const substitutionTokens = substitution.getTokens(),
271
- tokens = substitutionTokens, ///
272
- localContext = LocalContext.fromContextAndTokens(context, tokens); ///
273
-
274
- context = localContext; ///
275
-
276
- return context;
277
- }
271
+ export default StatementSubstitution;
278
272
 
279
273
  function stringFromStatementAndMetavariable(statement, metavariable) {
280
274
  const statementString = statement.getString(),
@@ -2,20 +2,16 @@
2
2
 
3
3
  import shim from "../shim";
4
4
  import Substitution from "../substitution";
5
+ import TermSubstitutionNodeAndTokens from "../nodeAndTokens/substitution/term";
5
6
 
6
7
  import { nodeQuery } from "../utilities/query";
7
8
  import { stripBracketsFromTermNode } from "../utilities/brackets";
8
- import { substitutionNodeFromUnqualifiedStatementNode,
9
- unqualifiedStatementStringFromSubstitutionString,
10
- unqualifiedStatementNodeFromUnqualifiedStatementTokens } from "../utilities/node";
11
- import { unqualifiedStatementTokensFromUnqualifiedStatementString,
12
- substitutionTokensFromUnqualifiedStatementTokensAndSubstitutionNode } from "../utilities/tokens";
13
9
 
14
- const termNodeQuery = nodeQuery("/substitution/term[0]"),
15
- variableNodeQuery = nodeQuery("/substitution/term[1]/variable!"),
16
- substitutionNodeQuery = nodeQuery("/statement/substitution");
10
+ const termNodeQuery = nodeQuery("/termSubstitution/term[0]"),
11
+ variableNodeQuery = nodeQuery("/termSubstitution/term[1]/variable!"),
12
+ termSubstitutionNodeQuery = nodeQuery("/statement/termSubstitution");
17
13
 
18
- export default class TermForVariableSubstitution extends Substitution {
14
+ export default class TermSubstitution extends Substitution {
19
15
  constructor(string, node, tokens, term, variable) {
20
16
  super(string, node, tokens);
21
17
 
@@ -90,27 +86,27 @@ export default class TermForVariableSubstitution extends Substitution {
90
86
  }
91
87
 
92
88
  static fromStatementNode(statementNode, context) {
93
- let termForVariableSubstitution = null;
89
+ let termSubstitution = null;
94
90
 
95
- const substitutionNode = substitutionNodeQuery(statementNode);
91
+ const termSubstitutionNode = termSubstitutionNodeQuery(statementNode);
96
92
 
97
- if (substitutionNode !== null) {
98
- const termNode = termNodeQuery(substitutionNode),
99
- variableNode = variableNodeQuery(substitutionNode);
93
+ if (termSubstitutionNode !== null) {
94
+ const termNode = termNodeQuery(termSubstitutionNode),
95
+ variableNode = variableNodeQuery(termSubstitutionNode);
100
96
 
101
97
  if ((termNode !== null) && (variableNode !== null)) {
102
98
  const { Term, Variable } = shim,
103
99
  term = Term.fromTermNode(termNode, context),
104
100
  variable = Variable.fromVariableNode(variableNode, context),
105
- node = substitutionNode, ///
101
+ node = termSubstitutionNode, ///
106
102
  tokens = context.nodeAsTokens(node),
107
103
  string = stringFromTermAndVariable(term, variable);
108
104
 
109
- termForVariableSubstitution = new TermForVariableSubstitution(string, node, tokens, term, variable);
105
+ termSubstitution = new TermSubstitution(string, node, tokens, term, variable);
110
106
  }
111
107
  }
112
108
 
113
- return termForVariableSubstitution;
109
+ return termSubstitution;
114
110
  }
115
111
 
116
112
  static fromTernAndVariable(term, variable, context) {
@@ -122,20 +118,14 @@ export default class TermForVariableSubstitution extends Substitution {
122
118
 
123
119
  term = Term.fromTermNode(termNode, context);
124
120
 
125
- const lexer = context.getLexer(),
126
- parser = context.getParser(),
127
- string = stringFromTermAndVariable(term, variable),
128
- substitutionString = string, ///
129
- unqualifiedStatementString = unqualifiedStatementStringFromSubstitutionString(substitutionString),
130
- unqualifiedStatementTokens = unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer),
131
- unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser),
132
- substitutionNode = substitutionNodeFromUnqualifiedStatementNode(unqualifiedStatementNode),
133
- substitutionTokens = substitutionTokensFromUnqualifiedStatementTokensAndSubstitutionNode(unqualifiedStatementTokens, substitutionNode),
134
- node = substitutionNode, //
135
- tokens = substitutionTokens, ///
136
- termForVariableSubstitution = new TermForVariableSubstitution(string, node, tokens, term, variable);
137
-
138
- return termForVariableSubstitution;
121
+ const string = stringFromTermAndVariable(term, variable),
122
+ termSubstitutionString = string, ///
123
+ termSubstitutionNodeAndTokens = TermSubstitutionNodeAndTokens.fromTermSubstitutionString(termSubstitutionString, context),
124
+ node = termSubstitutionNodeAndTokens.getNode(),
125
+ tokens = termSubstitutionNodeAndTokens.getTokens(),
126
+ termSubstitution = new TermSubstitution(string, node, tokens, term, variable);
127
+
128
+ return termSubstitution;
139
129
  }
140
130
  }
141
131
 
@@ -39,12 +39,6 @@ class Substitution {
39
39
  return statement;
40
40
  }
41
41
 
42
- getSubstitutionNode() {
43
- const substitutionNode = null;
44
-
45
- return substitutionNode;
46
- }
47
-
48
42
  getMetavariableNode() {
49
43
  const metavariableNode = null;
50
44
 
@@ -82,18 +82,6 @@ class Substitutions {
82
82
  return substitutions;
83
83
  }
84
84
 
85
- findSimpleSubstitution() {
86
- const simpleSubstitution = this.findSubstitution((substitution) => {
87
- const substitutionSimple = substitution.isSimple();
88
-
89
- if (substitutionSimple) {
90
- return true;
91
- }
92
- });
93
-
94
- return simpleSubstitution;
95
- }
96
-
97
85
  findSubstitutionByVariableName(variableName) {
98
86
  const substitution = this.findSubstitution((substitution) => {
99
87
  const variableNameMatches = substitution.matchVariableName(variableName);
package/src/term.js CHANGED
@@ -9,7 +9,7 @@ import termAsConstructorVerifier from "./verifier/termAsConstructor";
9
9
 
10
10
  import { objectType } from "./type";
11
11
  import { nodeQuery, nodesQuery } from "./utilities/query"
12
- import { termNodeFromTermString } from "./utilities/node";
12
+ import { termNodeFromTermString } from "./nodeAndTokens/term";
13
13
  import { variableNameFromVariableNode } from "./utilities/name";
14
14
  import { typeFromJSON, typeToTypeJSON } from "./utilities/json";
15
15
 
@@ -260,10 +260,9 @@ class Term {
260
260
 
261
261
  static fromJSON(json, fileContext) {
262
262
  const { string } = json,
263
- lexer = fileContext.getLexer(),
264
- parser = fileContext.getParser(),
263
+ context = fileContext, ///
265
264
  termString = string, ///
266
- termNode = termNodeFromTermString(termString, lexer, parser),
265
+ termNode = termNodeFromTermString(termString, context),
267
266
  node = termNode, ///
268
267
  type = typeFromJSON(json, fileContext),
269
268
  term = new Term(string, node, type);
@@ -2,8 +2,8 @@
2
2
 
3
3
  import shim from "../shim";
4
4
  import Unifier from "../unifier";
5
- import TermForVariableSubstitution from "../substitution/termForVariable";
6
- import FrameForMetavariableSubstitution from "../substitution/frameForMetavariable";
5
+ import TermSubstitution from "../substitution/term";
6
+ import FrameSubstitution from "../substitution/frame";
7
7
 
8
8
  import { nodeQuery } from "../utilities/query";
9
9
  import { variableNameFromVariableNode } from "../utilities/name";
@@ -50,9 +50,9 @@ class MetaLevelUnifier extends Unifier {
50
50
  const statementMetavariableNode = statementMetavariableNodeQuery(statementNode);
51
51
 
52
52
  if (statementMetavariableNode !== null) {
53
- const substitution = FrameForMetavariableSubstitution.fromStatementNode(statementNode, context) ||
54
- TermForVariableSubstitution.fromStatementNode(statementNode, context) ||
55
- null;
53
+ const frameSubstitution = FrameSubstitution.fromStatementNode(statementNode, context),
54
+ termSubstitution = TermSubstitution.fromStatementNode(statementNode, context),
55
+ substitution = (frameSubstitution || termSubstitution);
56
56
 
57
57
  const { Statement } = shim,
58
58
  metavariableNode = statementMetavariableNode, ///
@@ -24,18 +24,18 @@ class TermWithConstructorUnifier extends Unifier {
24
24
 
25
25
  static maps = [
26
26
  {
27
- nodeQueryA: typeNodeQuery,
28
- nodeQueryB: termNodeQuery,
29
- unify: (typeNodeB, termNodeB, context) => {
27
+ generalNodeQuery: typeNodeQuery,
28
+ specificNodeQuery: termNodeQuery,
29
+ unify: (generalTypeNode, specificTermNode, context) => {
30
30
  let unified = false;
31
31
 
32
32
  const { Term } = shim,
33
- typeNode = typeNodeB, ///
33
+ typeNode = generalTypeNode, ///
34
34
  typeName = typeNameFromTypeNode(typeNode),
35
35
  type = context.findTypeByTypeName(typeName);
36
36
 
37
37
  if (type !== null) {
38
- const termNode = termNodeB, ///
38
+ const termNode = specificTermNode, ///
39
39
  term = Term.fromTermNode(termNode, context),
40
40
  termVerifiedGivenType = term.verifyGivenType(type, context);
41
41
 
@@ -313,8 +313,9 @@ export function suppositionsFromJSON(json, fileContext) {
313
313
  export function substitutionsFromJSON(json, fileContext) {
314
314
  let { substitutions = [] } = json; ///
315
315
 
316
- const { StatementForMetavariableSubstitution: Substitution } = shim, ///
317
- substitutionsJSON = substitutions; ///
316
+ const { StatementSubstitution } = shim,
317
+ substitutionsJSON = substitutions, ///
318
+ Substitution = StatementSubstitution; ///
318
319
 
319
320
  substitutions = substitutionsJSON.map((substitutionJSON) => {
320
321
  const json = substitutionJSON, ///
@@ -4,7 +4,8 @@ import { nodeQuery } from "../utilities/query";
4
4
  import { variableNameFromVariableNode } from "../utilities/name";
5
5
 
6
6
  const variableNodeQuery = nodeQuery("/term/variable!"),
7
- metavariableNodeQuery = nodeQuery("/*/metavariable!");
7
+ metavariableNodeQuery = nodeQuery("/*/metavariable!"),
8
+ substitutionNodeQuery = nodeQuery("/*/substitution!");
8
9
 
9
10
  export function termFromTermAndSubstitutions(term, substitutions) {
10
11
  if (term !== null) {
@@ -16,13 +17,7 @@ export function termFromTermAndSubstitutions(term, substitutions) {
16
17
 
17
18
  if (variableNode !== null) {
18
19
  const variableName = variableNameFromVariableNode(variableNode),
19
- substitution = substitutions.findSubstitution((substitution) => {
20
- const variableNameMatches = substitution.matchVariableName(variableName);
21
-
22
- if (variableNameMatches) {
23
- return true;
24
- }
25
- });
20
+ substitution = substitutions.findSubstitutionByVariableName(variableName);
26
21
 
27
22
  if (substitution !== null) {
28
23
  term = substitution.getTerm();
@@ -42,13 +37,7 @@ export function frameFromFrameAndSubstitutions(frame, substitutions) {
42
37
  const metavariableNode = metavariableNodeQuery(frameNode);
43
38
 
44
39
  if (metavariableNode !== null) {
45
- const substitution = substitutions.findSubstitution((substitution) => {
46
- const metavariableNodeMatches = substitution.matchMetavariableNode(metavariableNode);
47
-
48
- if (metavariableNodeMatches) {
49
- return true;
50
- }
51
- });
40
+ const substitution = substitutions.findSubstitutionByMetavariableNode(metavariableNode);
52
41
 
53
42
  if (substitution !== null) {
54
43
  frame = substitution.getFrame();
@@ -65,16 +54,11 @@ export function statementFromStatementAndSubstitutions(statement, substitutions)
65
54
 
66
55
  statement = null;
67
56
 
68
- const metavariableNode = metavariableNodeQuery(statementNode);
57
+ const metavariableNode = metavariableNodeQuery(statementNode),
58
+ substitutionNode = substitutionNodeQuery(statementNode);
69
59
 
70
60
  if (metavariableNode !== null) {
71
- const substitution = substitutions.findSubstitution((substitution) => {
72
- const metavariableNodeMatches = substitution.matchMetavariableNode(metavariableNode);
73
-
74
- if (metavariableNodeMatches) {
75
- return true;
76
- }
77
- });
61
+ const substitution = substitutions.findSubstitutionByMetavariableNodeAndSubstitutionNode(metavariableNode, substitutionNode);
78
62
 
79
63
  if (substitution !== null) {
80
64
  statement = substitution.getStatement();
package/src/variable.js CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  import shim from "./shim";
4
4
  import LocalContext from "./context/local";
5
- import TermForVariableSubstitution from "./substitution/termForVariable";
5
+ import TermSubstitution from "./substitution/term";
6
6
 
7
7
  import { nodeQuery } from "./utilities/query";
8
8
  import { objectType } from "./type";
9
9
  import { variableNameFromVariableNode} from "./utilities/name";
10
10
  import { typeFromJSON, typeToTypeJSON } from "./utilities/json";
11
- import { variableNodeFromVariableString } from "./utilities/node";
11
+ import { variableNodeFromVariableString } from "./nodeAndTokens/variable";
12
12
 
13
13
  const typeNodeQuery = nodeQuery("/variableDeclaration/type"),
14
14
  variableNodeQuery = nodeQuery("/variableDeclaration/variable"),
@@ -171,8 +171,8 @@ class Variable {
171
171
  } else {
172
172
  const context = specificContext, ///
173
173
  variable = this, ///
174
- termForVariableSubstitution = TermForVariableSubstitution.fromTernAndVariable(term, variable, context),
175
- substitution = termForVariableSubstitution; ///
174
+ termSubstitution = TermSubstitution.fromTernAndVariable(term, variable, context),
175
+ substitution = termSubstitution; ///
176
176
 
177
177
  substitutions.addSubstitution(substitution, context);
178
178
 
@@ -201,12 +201,11 @@ class Variable {
201
201
 
202
202
  static fromJSON(json, fileContext) {
203
203
  const { string } = json,
204
- lexer = fileContext.getLexer(),
205
- parser = fileContext.getParser(),
204
+ localContext = LocalContext.fromFileContext(fileContext),
205
+ context = localContext, ///
206
206
  variableString = string, ///
207
- variableNode = variableNodeFromVariableString(variableString, lexer, parser),
207
+ variableNode = variableNodeFromVariableString(variableString, context),
208
208
  variableName = variableNameFromVariableNode(variableNode),
209
- context = LocalContext.fromFileContext(fileContext),
210
209
  node = variableNode,
211
210
  name = variableName, ///
212
211
  type = typeFromJSON(json, fileContext),
package/lib/ruleNames.js DELETED
@@ -1,30 +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
- CONSTRUCTOR_DECLARATION_RULE_NAME: function() {
13
- return CONSTRUCTOR_DECLARATION_RULE_NAME;
14
- },
15
- METAVARIABLE_RULE_NAME: function() {
16
- return METAVARIABLE_RULE_NAME;
17
- },
18
- UNQUALIFIED_STATEMENT_RULE_NAME: function() {
19
- return UNQUALIFIED_STATEMENT_RULE_NAME;
20
- },
21
- VARIABLE_RULE_NAME: function() {
22
- return VARIABLE_RULE_NAME;
23
- }
24
- });
25
- var VARIABLE_RULE_NAME = "variable";
26
- var METAVARIABLE_RULE_NAME = "metavariable";
27
- var UNQUALIFIED_STATEMENT_RULE_NAME = "unqualifiedStatement";
28
- var CONSTRUCTOR_DECLARATION_RULE_NAME = "constructorDeclaration";
29
-
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydWxlTmFtZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBWQVJJQUJMRV9SVUxFX05BTUUgPSBcInZhcmlhYmxlXCI7XG5leHBvcnQgY29uc3QgTUVUQVZBUklBQkxFX1JVTEVfTkFNRSA9IFwibWV0YXZhcmlhYmxlXCI7XG5leHBvcnQgY29uc3QgVU5RVUFMSUZJRURfU1RBVEVNRU5UX1JVTEVfTkFNRSA9IFwidW5xdWFsaWZpZWRTdGF0ZW1lbnRcIjtcbmV4cG9ydCBjb25zdCBDT05TVFJVQ1RPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcImNvbnN0cnVjdG9yRGVjbGFyYXRpb25cIjtcbiJdLCJuYW1lcyI6WyJDT05TVFJVQ1RPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJNRVRBVkFSSUFCTEVfUlVMRV9OQU1FIiwiVU5RVUFMSUZJRURfU1RBVEVNRU5UX1JVTEVfTkFNRSIsIlZBUklBQkxFX1JVTEVfTkFNRSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBS2FBLGlDQUFpQztlQUFqQ0E7O0lBRkFDLHNCQUFzQjtlQUF0QkE7O0lBQ0FDLCtCQUErQjtlQUEvQkE7O0lBRkFDLGtCQUFrQjtlQUFsQkE7OztBQUFOLElBQU1BLHFCQUFxQjtBQUMzQixJQUFNRix5QkFBeUI7QUFDL0IsSUFBTUMsa0NBQWtDO0FBQ3hDLElBQU1GLG9DQUFvQyJ9