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.
- package/lib/assertion/contained.js +18 -16
- package/lib/combinator/bracketed.js +12 -5
- package/lib/constructor/bracketed.js +12 -5
- package/lib/index.js +2 -2
- package/lib/metavariable.js +9 -9
- package/lib/mixins/statement/qualified/unify.js +4 -4
- package/lib/mixins/statement/resolve.js +3 -3
- package/lib/nodeAndTokens/metavariable.js +193 -0
- package/lib/nodeAndTokens/statement.js +193 -0
- package/lib/nodeAndTokens/substitution/frame.js +159 -0
- package/lib/nodeAndTokens/substitution/statement.js +159 -0
- package/lib/nodeAndTokens/substitution/term.js +159 -0
- package/lib/nodeAndTokens/term.js +193 -0
- package/lib/nodeAndTokens/variable.js +193 -0
- package/lib/nodeAndTokens.js +93 -0
- package/lib/statement/unqualified.js +4 -4
- package/lib/statement.js +3 -4
- package/lib/substitution/frame.js +208 -0
- package/lib/substitution/statement.js +318 -0
- package/lib/substitution/term.js +202 -0
- package/lib/substitution.js +1 -8
- package/lib/substitutions.js +1 -13
- package/lib/term.js +3 -3
- package/lib/unifier/metaLevel.js +4 -4
- package/lib/unifier/termWithConstructor.js +6 -6
- package/lib/utilities/json.js +2 -2
- package/lib/utilities/substitutions.js +6 -21
- package/lib/variable.js +5 -5
- package/package.json +3 -1
- package/src/assertion/contained.js +17 -15
- package/src/combinator/bracketed.js +18 -13
- package/src/constructor/bracketed.js +19 -14
- package/src/index.js +1 -1
- package/src/metavariable.js +10 -11
- package/src/mixins/statement/qualified/unify.js +5 -5
- package/src/mixins/statement/resolve.js +4 -4
- package/src/nodeAndTokens/metavariable.js +49 -0
- package/src/nodeAndTokens/statement.js +49 -0
- package/src/nodeAndTokens/substitution/frame.js +23 -0
- package/src/nodeAndTokens/substitution/statement.js +23 -0
- package/src/nodeAndTokens/substitution/term.js +23 -0
- package/src/nodeAndTokens/term.js +49 -0
- package/src/nodeAndTokens/variable.js +49 -0
- package/src/nodeAndTokens.js +78 -0
- package/src/statement/unqualified.js +6 -3
- package/src/statement.js +5 -13
- package/src/substitution/{frameForMetavariable.js → frame.js} +21 -31
- package/src/substitution/{statementForMetavariable.js → statement.js} +59 -65
- package/src/substitution/{termForVariable.js → term.js} +21 -31
- package/src/substitution.js +0 -6
- package/src/substitutions.js +0 -12
- package/src/term.js +3 -4
- package/src/unifier/metaLevel.js +5 -5
- package/src/unifier/termWithConstructor.js +5 -5
- package/src/utilities/json.js +3 -2
- package/src/utilities/substitutions.js +7 -23
- package/src/variable.js +7 -8
- package/lib/ruleNames.js +0 -30
- package/lib/substitution/frameForMetavariable.js +0 -209
- package/lib/substitution/statementForMetavariable.js +0 -314
- package/lib/substitution/termForVariable.js +0 -203
- package/lib/utilities/node.js +0 -113
- package/lib/utilities/tokens.js +0 -69
- package/src/ruleNames.js +0 -6
- package/src/utilities/node.js +0 -114
- 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
|
|
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
|
-
|
|
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
|
|
125
|
-
|
|
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
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
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
|
-
|
|
220
|
+
statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
|
|
205
221
|
|
|
206
|
-
return
|
|
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
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
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
|
-
|
|
241
|
+
statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
|
|
232
242
|
|
|
233
|
-
return
|
|
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
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
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
|
-
|
|
261
|
+
statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
|
|
258
262
|
|
|
259
|
-
return
|
|
263
|
+
return statementSubstitution;
|
|
260
264
|
}
|
|
261
265
|
}
|
|
262
266
|
|
|
263
267
|
Object.assign(shim, {
|
|
264
|
-
|
|
268
|
+
StatementSubstitution
|
|
265
269
|
});
|
|
266
270
|
|
|
267
|
-
export default
|
|
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("/
|
|
15
|
-
variableNodeQuery = nodeQuery("/
|
|
16
|
-
|
|
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
|
|
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
|
|
89
|
+
let termSubstitution = null;
|
|
94
90
|
|
|
95
|
-
const
|
|
91
|
+
const termSubstitutionNode = termSubstitutionNodeQuery(statementNode);
|
|
96
92
|
|
|
97
|
-
if (
|
|
98
|
-
const termNode = termNodeQuery(
|
|
99
|
-
variableNode = variableNodeQuery(
|
|
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 =
|
|
101
|
+
node = termSubstitutionNode, ///
|
|
106
102
|
tokens = context.nodeAsTokens(node),
|
|
107
103
|
string = stringFromTermAndVariable(term, variable);
|
|
108
104
|
|
|
109
|
-
|
|
105
|
+
termSubstitution = new TermSubstitution(string, node, tokens, term, variable);
|
|
110
106
|
}
|
|
111
107
|
}
|
|
112
108
|
|
|
113
|
-
return
|
|
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
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
|
package/src/substitution.js
CHANGED
package/src/substitutions.js
CHANGED
|
@@ -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 "./
|
|
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
|
-
|
|
264
|
-
parser = fileContext.getParser(),
|
|
263
|
+
context = fileContext, ///
|
|
265
264
|
termString = string, ///
|
|
266
|
-
termNode = termNodeFromTermString(termString,
|
|
265
|
+
termNode = termNodeFromTermString(termString, context),
|
|
267
266
|
node = termNode, ///
|
|
268
267
|
type = typeFromJSON(json, fileContext),
|
|
269
268
|
term = new Term(string, node, type);
|
package/src/unifier/metaLevel.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import shim from "../shim";
|
|
4
4
|
import Unifier from "../unifier";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
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
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
unify: (
|
|
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 =
|
|
33
|
+
typeNode = generalTypeNode, ///
|
|
34
34
|
typeName = typeNameFromTypeNode(typeNode),
|
|
35
35
|
type = context.findTypeByTypeName(typeName);
|
|
36
36
|
|
|
37
37
|
if (type !== null) {
|
|
38
|
-
const termNode =
|
|
38
|
+
const termNode = specificTermNode, ///
|
|
39
39
|
term = Term.fromTermNode(termNode, context),
|
|
40
40
|
termVerifiedGivenType = term.verifyGivenType(type, context);
|
|
41
41
|
|
package/src/utilities/json.js
CHANGED
|
@@ -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 {
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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 "./
|
|
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
|
-
|
|
175
|
-
substitution =
|
|
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
|
-
|
|
205
|
-
|
|
204
|
+
localContext = LocalContext.fromFileContext(fileContext),
|
|
205
|
+
context = localContext, ///
|
|
206
206
|
variableString = string, ///
|
|
207
|
-
variableNode = variableNodeFromVariableString(variableString,
|
|
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
|