occam-verify-cli 0.0.1065 → 0.0.1066
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/combinator/bracketed.js +135 -0
- package/lib/constants.js +3 -3
- package/lib/constructor/bracketed.js +30 -11
- package/lib/context/file.js +39 -3
- package/lib/context/local.js +59 -7
- package/lib/mixins/statement/unify.js +2 -2
- package/lib/mixins/statement/verify.js +6 -6
- package/lib/ruleNames.js +1 -5
- package/lib/statement.js +28 -20
- package/lib/substitution/frameForMetavariable.js +17 -2
- package/lib/substitution/termForVariable.js +20 -2
- package/lib/unifier/metaLevel.js +3 -4
- package/lib/utilities/brackets.js +5 -10
- package/lib/utilities/node.js +29 -15
- package/lib/utilities/string.js +34 -16
- package/lib/utilities/tokens.js +16 -8
- package/package.json +1 -1
- package/src/combinator/bracketed.js +49 -0
- package/src/constants.js +2 -2
- package/src/constructor/bracketed.js +32 -9
- package/src/context/file.js +35 -5
- package/src/context/local.js +64 -7
- package/src/mixins/statement/unify.js +1 -1
- package/src/mixins/statement/verify.js +7 -6
- package/src/ruleNames.js +0 -1
- package/src/statement.js +52 -37
- package/src/substitution/frameForMetavariable.js +26 -1
- package/src/substitution/termForVariable.js +30 -1
- package/src/unifier/metaLevel.js +2 -3
- package/src/utilities/brackets.js +2 -3
- package/src/utilities/node.js +30 -22
- package/src/utilities/string.js +39 -23
- package/src/utilities/tokens.js +17 -8
- package/lib/node/statement/bracketed.js +0 -16
- package/lib/node/statement/combinator/bracketed.js +0 -25
- package/lib/node/term/bracketed.js +0 -16
- package/lib/node/term/constructor/bracketed.js +0 -25
- package/lib/ocmbinator/bracketed.js +0 -157
- package/lib/substitution/statement.js +0 -163
- package/lib/verifier/substitution.js +0 -161
- package/src/node/statement/bracketed.js +0 -9
- package/src/node/statement/combinator/bracketed.js +0 -10
- package/src/node/term/bracketed.js +0 -9
- package/src/node/term/constructor/bracketed.js +0 -10
- package/src/ocmbinator/bracketed.js +0 -26
- package/src/substitution/statement.js +0 -81
- package/src/verifier/substitution.js +0 -75
|
@@ -6,7 +6,8 @@ import TypeAssertion from "../../assertion/type";
|
|
|
6
6
|
import DefinedAssertion from "../../assertion/defined";
|
|
7
7
|
import SubproofAssertion from "../../assertion/subproof";
|
|
8
8
|
import ContainedAssertion from "../../assertion/contained";
|
|
9
|
-
import
|
|
9
|
+
import TermForVariableSubstitution from "../../substitution/termForVariable";
|
|
10
|
+
import FrameForMetavariableSubstitution from "../../substitution/frameForMetavariable";
|
|
10
11
|
|
|
11
12
|
import verifyFrame from "../../verify/frame";
|
|
12
13
|
import verifyJudgement from "../../verify/judgement";
|
|
@@ -41,12 +42,12 @@ function verifyAsMetavariable(statement, assignments, stated, localContext) {
|
|
|
41
42
|
if (metavariableVerified) {
|
|
42
43
|
let substitutionVerified = true;
|
|
43
44
|
|
|
44
|
-
const
|
|
45
|
+
const substitution = FrameForMetavariableSubstitution.fromStatementNode(statementNode, localContext) ||
|
|
46
|
+
TermForVariableSubstitution.fromStatementNode(statementNode, localContext) ||
|
|
47
|
+
null;
|
|
45
48
|
|
|
46
|
-
if (
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
substitutionVerified = statementSubstitutionVerified; ///
|
|
49
|
+
if (substitution !== null) {
|
|
50
|
+
substitutionVerified = substitution.verify(assignments, stated, localContext);
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
verifiedAsMetavariable = substitutionVerified; ///
|
package/src/ruleNames.js
CHANGED
|
@@ -2,6 +2,5 @@
|
|
|
2
2
|
|
|
3
3
|
export const VARIABLE_RULE_NAME = "variable";
|
|
4
4
|
export const METAVARIABLE_RULE_NAME = "metavariable";
|
|
5
|
-
export const SUBSTITUTION_RULE_NAME = "substitution";
|
|
6
5
|
export const UNQUALIFIED_STATEMENT_RULE_NAME = "unqualifiedStatement";
|
|
7
6
|
export const CONSTRUCTOR_DECLARATION_RULE_NAME = "constructorDeclaration";
|
package/src/statement.js
CHANGED
|
@@ -9,17 +9,20 @@ import statementAsCombinatorVerifier from "./verifier/statementAsCombinator";
|
|
|
9
9
|
|
|
10
10
|
import { nodeQuery, nodesQuery } from "./utilities/query";
|
|
11
11
|
import { STATEMENT_META_TYPE_NAME } from "./metaTypeNames";
|
|
12
|
-
import {
|
|
12
|
+
import { statementTokensFromUnqualifiedStatementTokens, unqualifiedStatementTokensFromUnqualifiedStatementString } from "./utilities/tokens";
|
|
13
|
+
import { statementNodeFromUnqualifiedStatementNode,
|
|
14
|
+
unqualifiedStatementStringFromStatementString,
|
|
15
|
+
unqualifiedStatementNodeFromUnqualifiedStatementTokens } from "./utilities/node";
|
|
13
16
|
|
|
14
17
|
const statementNodeQuery = nodeQuery("/*//statement"),
|
|
15
|
-
substitutionNodeQuery = nodeQuery("/statement/substitution"),
|
|
16
18
|
statementVariableNodesQuery = nodesQuery("/statement//variable"),
|
|
17
19
|
statementMetavariableNodesQuery = nodesQuery("/statement//metavariable");
|
|
18
20
|
|
|
19
21
|
class Statement {
|
|
20
|
-
constructor(string, node) {
|
|
22
|
+
constructor(string, node, tokens) {
|
|
21
23
|
this.string = string;
|
|
22
24
|
this.node = node;
|
|
25
|
+
this.tokens = tokens;
|
|
23
26
|
}
|
|
24
27
|
|
|
25
28
|
getString() {
|
|
@@ -30,6 +33,10 @@ class Statement {
|
|
|
30
33
|
return this.node;
|
|
31
34
|
}
|
|
32
35
|
|
|
36
|
+
getTokens() {
|
|
37
|
+
return this.tokens;
|
|
38
|
+
}
|
|
39
|
+
|
|
33
40
|
isEqualTo(statement) {
|
|
34
41
|
const node = statement.getNode(),
|
|
35
42
|
matches = this.node.match(node),
|
|
@@ -92,6 +99,32 @@ class Statement {
|
|
|
92
99
|
return metavariableContained;
|
|
93
100
|
}
|
|
94
101
|
|
|
102
|
+
unifyStatement(statement, substitutions, fileContext, localContext) {
|
|
103
|
+
let statementUnified;
|
|
104
|
+
|
|
105
|
+
const statementA = this, ///
|
|
106
|
+
statementB = statement, ///
|
|
107
|
+
statementAString = statementA.getString(),
|
|
108
|
+
statementBString = statementB.getString();
|
|
109
|
+
|
|
110
|
+
localContext.trace(`Unifying the '${statementBString}' statement with the '${statementAString}' statement...`);
|
|
111
|
+
|
|
112
|
+
const statementANode = statementA.getNode(),
|
|
113
|
+
statementBNode = statementB.getNode(),
|
|
114
|
+
nodeA = statementANode, ///
|
|
115
|
+
nodeB = statementBNode, ///
|
|
116
|
+
fileContextA = fileContext, ///
|
|
117
|
+
localContextA = LocalContext.fromFileContextAndTokens(fileContextA, this.tokens),
|
|
118
|
+
localContextB = localContext, ///
|
|
119
|
+
unifiedAtMetaLevel = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
120
|
+
|
|
121
|
+
statementUnified = unifiedAtMetaLevel; ///
|
|
122
|
+
|
|
123
|
+
localContext.debug(`...unified the '${statementBString}' statement with the '${statementAString}' statement.`);
|
|
124
|
+
|
|
125
|
+
return statementUnified;
|
|
126
|
+
}
|
|
127
|
+
|
|
95
128
|
verify(assignments, stated, localContext) {
|
|
96
129
|
let verified = false;
|
|
97
130
|
|
|
@@ -169,32 +202,6 @@ class Statement {
|
|
|
169
202
|
return verifiedGivenMetaType;
|
|
170
203
|
}
|
|
171
204
|
|
|
172
|
-
unifyStatement(statement, substitutions, fileContext, localContext) {
|
|
173
|
-
let statementUnified;
|
|
174
|
-
|
|
175
|
-
const statementA = this, ///
|
|
176
|
-
statementB = statement, ///
|
|
177
|
-
statementAString = statementA.getString(),
|
|
178
|
-
statementBString = statementB.getString();
|
|
179
|
-
|
|
180
|
-
localContext.trace(`Unifying the '${statementBString}' statement with the '${statementAString}' statement...`);
|
|
181
|
-
|
|
182
|
-
const statementANode = statementA.getNode(),
|
|
183
|
-
statementBNode = statementB.getNode(),
|
|
184
|
-
nodeA = statementANode, ///
|
|
185
|
-
nodeB = statementBNode, ///
|
|
186
|
-
fileContextA = fileContext, ///
|
|
187
|
-
localContextA = LocalContext.fromFileContext(fileContextA),
|
|
188
|
-
localContextB = localContext, ///
|
|
189
|
-
unifiedAtMetaLevel = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
190
|
-
|
|
191
|
-
statementUnified = unifiedAtMetaLevel; ///
|
|
192
|
-
|
|
193
|
-
localContext.debug(`...unified the '${statementBString}' statement with the '${statementAString}' statement.`);
|
|
194
|
-
|
|
195
|
-
return statementUnified;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
205
|
toJSON() {
|
|
199
206
|
const string = this.string, ///
|
|
200
207
|
json = {
|
|
@@ -209,9 +216,14 @@ class Statement {
|
|
|
209
216
|
statementString = string, ///
|
|
210
217
|
lexer = fileContext.getLexer(),
|
|
211
218
|
parser = fileContext.getParser(),
|
|
212
|
-
|
|
219
|
+
unqualifiedStatementString = unqualifiedStatementStringFromStatementString(statementString),
|
|
220
|
+
unqualifiedStatementTokens = unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer),
|
|
221
|
+
unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser),
|
|
222
|
+
statementTokens = statementTokensFromUnqualifiedStatementTokens(unqualifiedStatementTokens),
|
|
223
|
+
statementNode = statementNodeFromUnqualifiedStatementNode(unqualifiedStatementNode),
|
|
213
224
|
node = statementNode, ///
|
|
214
|
-
|
|
225
|
+
tokens = statementTokens, ///
|
|
226
|
+
statement = new Statement(string, node, tokens);
|
|
215
227
|
|
|
216
228
|
return statement;
|
|
217
229
|
}
|
|
@@ -221,9 +233,10 @@ class Statement {
|
|
|
221
233
|
|
|
222
234
|
if (statementNode !== null) {
|
|
223
235
|
const node = statementNode, ///
|
|
224
|
-
|
|
236
|
+
tokens = localContext.nodeAsTokens(node),
|
|
237
|
+
string = localContext.tokensAsString(tokens);
|
|
225
238
|
|
|
226
|
-
statement = new Statement(string, node);
|
|
239
|
+
statement = new Statement(string, node, tokens);
|
|
227
240
|
}
|
|
228
241
|
|
|
229
242
|
return statement;
|
|
@@ -232,8 +245,9 @@ class Statement {
|
|
|
232
245
|
static fromDefinedAssertionNode(definedAssertionNode, localContext) {
|
|
233
246
|
const statementNode = statementNodeQuery(definedAssertionNode),
|
|
234
247
|
node = statementNode, ///
|
|
235
|
-
|
|
236
|
-
|
|
248
|
+
tokens = localContext.nodeAsTokens(node),
|
|
249
|
+
string = localContext.tokensAsString(tokens),
|
|
250
|
+
statement = new Statement(string, node, tokens);
|
|
237
251
|
|
|
238
252
|
return statement;
|
|
239
253
|
}
|
|
@@ -241,8 +255,9 @@ class Statement {
|
|
|
241
255
|
static fromContainedAssertionNode(containedAssertionNode, localContext) {
|
|
242
256
|
const statementNode = statementNodeQuery(containedAssertionNode),
|
|
243
257
|
node = statementNode, ///
|
|
244
|
-
|
|
245
|
-
|
|
258
|
+
tokens = localContext.nodeAsTokens(node),
|
|
259
|
+
string = localContext.tokensAsString(tokens),
|
|
260
|
+
statement = new Statement(string, node, tokens);
|
|
246
261
|
|
|
247
262
|
return statement;
|
|
248
263
|
}
|
|
@@ -4,7 +4,8 @@ import Substitution from "../substitution";
|
|
|
4
4
|
|
|
5
5
|
import { nodeQuery } from "../utilities/query";
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const substitutionNodeQuery = nodeQuery("/statement/substitution"),
|
|
8
|
+
substitutionFrameNodeQuery = nodeQuery("/substitution/frame!"),
|
|
8
9
|
frameMetavariableNodeQuery = nodeQuery("/frame/metavariable!"),
|
|
9
10
|
substitutionMetavariableNodeQuery = nodeQuery("/substitution/metavariable!");
|
|
10
11
|
|
|
@@ -87,6 +88,30 @@ export default class FrameForMetavariableSubstitution extends Substitution {
|
|
|
87
88
|
return frameForMetavariableSubstitution;
|
|
88
89
|
}
|
|
89
90
|
|
|
91
|
+
static fromStatementNode(statementNode, localContext) {
|
|
92
|
+
let frameForMetavariableSubstitution = null;
|
|
93
|
+
|
|
94
|
+
const substitutionNode = substitutionNodeQuery(statementNode);
|
|
95
|
+
|
|
96
|
+
if (substitutionNode !== null) {
|
|
97
|
+
const substitutionFrameNode = substitutionFrameNodeQuery(substitutionNode);
|
|
98
|
+
|
|
99
|
+
if (substitutionFrameNode !== null) {
|
|
100
|
+
const substitutionMetavariableNode = substitutionMetavariableNodeQuery(substitutionNode),
|
|
101
|
+
metavariableNode = substitutionMetavariableNode, ///
|
|
102
|
+
frameNode = substitutionFrameNode, ///
|
|
103
|
+
localContextA = localContext, ///
|
|
104
|
+
localContextB = localContext, ///
|
|
105
|
+
string = stringFromFrameNodeAndMetavariableNode(frameNode, metavariableNode, localContextA, localContextB);
|
|
106
|
+
|
|
107
|
+
frameForMetavariableSubstitution = new FrameForMetavariableSubstitution(string, frameNode, metavariableNode);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return frameForMetavariableSubstitution;
|
|
113
|
+
}
|
|
114
|
+
|
|
90
115
|
static fromFrameNodeAndMetavariableNode(frameNode, metavariableNode, localContextA, localContextB) {
|
|
91
116
|
const string = stringFromFrameNodeAndMetavariableNode(frameNode, metavariableNode, localContextA, localContextB),
|
|
92
117
|
frameForMetavariableSubstitution = new FrameForMetavariableSubstitution(string, frameNode, metavariableNode);
|
|
@@ -6,7 +6,8 @@ import Substitution from "../substitution";
|
|
|
6
6
|
import { nodeQuery } from "../utilities/query";
|
|
7
7
|
import { stripBracketsFromTerm } from "../utilities/brackets";
|
|
8
8
|
|
|
9
|
-
const
|
|
9
|
+
const substitutionNodeQuery = nodeQuery("/statement/substitution"),
|
|
10
|
+
termVariableNodeQuery = nodeQuery("/term/variable!"),
|
|
10
11
|
substitutionTermNodeQuery = nodeQuery("/substitution/term!"),
|
|
11
12
|
substitutionsVariableNodeQuery = nodeQuery("/substitution/variable!");
|
|
12
13
|
|
|
@@ -111,6 +112,34 @@ export default class TermForVariableSubstitution extends Substitution {
|
|
|
111
112
|
return termForVariableSubstitution;
|
|
112
113
|
}
|
|
113
114
|
|
|
115
|
+
static fromStatementNode(statementNode, localContext) {
|
|
116
|
+
let termForVariableSubstitution = null;
|
|
117
|
+
|
|
118
|
+
const substitutionNode = substitutionNodeQuery(statementNode);
|
|
119
|
+
|
|
120
|
+
if (substitutionNode !== null) {
|
|
121
|
+
let substitutionTermNode = substitutionTermNodeQuery(substitutionNode);
|
|
122
|
+
|
|
123
|
+
if (substitutionTermNode !== null) {
|
|
124
|
+
let termNode;
|
|
125
|
+
|
|
126
|
+
const substitutionVariableNode = substitutionsVariableNodeQuery(substitutionNode),
|
|
127
|
+
variableNode = substitutionVariableNode; ///
|
|
128
|
+
|
|
129
|
+
termNode = substitutionTermNode; ///
|
|
130
|
+
|
|
131
|
+
const { Term, Variable } = shim,
|
|
132
|
+
term = Term.fromTermNode(termNode, localContext),
|
|
133
|
+
variable = Variable.fromVariableNode(variableNode, localContext),
|
|
134
|
+
string = stringFromTermAndVariable(term, variable);
|
|
135
|
+
|
|
136
|
+
termForVariableSubstitution = new TermForVariableSubstitution(string, termNode, variableNode);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return termForVariableSubstitution;
|
|
141
|
+
}
|
|
142
|
+
|
|
114
143
|
static fromTernAndVariable(term, variable) {
|
|
115
144
|
let termNode = term.getNode();
|
|
116
145
|
|
package/src/unifier/metaLevel.js
CHANGED
|
@@ -40,6 +40,7 @@ class MetaLevelUnifier extends Unifier {
|
|
|
40
40
|
statementUnified = true;
|
|
41
41
|
} else {
|
|
42
42
|
const statementNode = statementNodeA, ///
|
|
43
|
+
statementSubstitution = null, ///
|
|
43
44
|
statementMetavariableNode = statementMetavariableNodeQuery(statementNode);
|
|
44
45
|
|
|
45
46
|
if (statementMetavariableNode !== null) {
|
|
@@ -47,7 +48,7 @@ class MetaLevelUnifier extends Unifier {
|
|
|
47
48
|
metavariableNode = statementMetavariableNode, ///
|
|
48
49
|
metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
|
|
49
50
|
metavariable = localContextA.findMetavariableByMetavariableName(metavariableName),
|
|
50
|
-
substitution =
|
|
51
|
+
substitution = statementSubstitution, ///
|
|
51
52
|
localContext = localContextB, ///
|
|
52
53
|
statementNode = statementNodeB, ///
|
|
53
54
|
statement = Statement.fromStatementNode(statementNode, localContext);
|
|
@@ -109,8 +110,6 @@ const metaLevelUnifier = new MetaLevelUnifier();
|
|
|
109
110
|
export default metaLevelUnifier;
|
|
110
111
|
|
|
111
112
|
function unifyStatementWithStatement(statementNodeA, statementNodeB, substitutions, localContextA, localContextB) {
|
|
112
|
-
substitutionA = null;
|
|
113
|
-
|
|
114
113
|
const nonTerminalNodeA = statementNodeA, ///
|
|
115
114
|
nonTerminalNodeB = statementNodeB, ///
|
|
116
115
|
nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import bracketedTermNode from "../node/term/bracketed";
|
|
4
|
-
import bracketedStatementNode from "../node/statement/bracketed";
|
|
5
|
-
|
|
6
3
|
import { nodeQuery } from "../utilities/query";
|
|
4
|
+
import { bracketedTermNode } from "../constructor/bracketed";
|
|
5
|
+
import { bracketedStatementNode } from "../combinator/bracketed";
|
|
7
6
|
import { BRACKETED_TERM_DEPTH, BRACKETED_STATEMENT_DEPTH } from "../constants";
|
|
8
7
|
|
|
9
8
|
const bracketedTermChildNodeQuery = nodeQuery("/term/argument/term!"),
|
package/src/utilities/node.js
CHANGED
|
@@ -6,12 +6,10 @@ import { nodeQuery } from "../utilities/query";
|
|
|
6
6
|
import { combinedCustomGrammarFromNothing } from "./customGrammar";
|
|
7
7
|
import { VARIABLE_RULE_NAME,
|
|
8
8
|
METAVARIABLE_RULE_NAME,
|
|
9
|
-
SUBSTITUTION_RULE_NAME,
|
|
10
9
|
UNQUALIFIED_STATEMENT_RULE_NAME,
|
|
11
10
|
CONSTRUCTOR_DECLARATION_RULE_NAME } from "../ruleNames";
|
|
12
11
|
import { variableTokensFromVariableString,
|
|
13
12
|
metavariableTokensFromMetavariableString,
|
|
14
|
-
substitutionTokensFromSubstitutionString,
|
|
15
13
|
unqualifiedStatementTokensFromUnqualifiedStatementString,
|
|
16
14
|
constructorDeclarationTokensFromConstructorDeclarationString } from "../utilities/tokens";
|
|
17
15
|
|
|
@@ -24,11 +22,10 @@ const termNodeQuery = nodeQuery("/constructorDeclaration/term"),
|
|
|
24
22
|
statementNodeQuery = nodeQuery("/unqualifiedStatement/statement");
|
|
25
23
|
|
|
26
24
|
export function termNodeFromTermString(termString, lexer, parser) {
|
|
27
|
-
const constructorDeclarationString =
|
|
28
|
-
`,
|
|
25
|
+
const constructorDeclarationString = constructorDeclarationStringFromTermString(termString),
|
|
29
26
|
constructorDeclarationTokens = constructorDeclarationTokensFromConstructorDeclarationString(constructorDeclarationString, lexer),
|
|
30
27
|
constructorDeclarationNode = constructorDeclarationNodeFromConstructorDeclarationTokens(constructorDeclarationTokens, parser),
|
|
31
|
-
termNode =
|
|
28
|
+
termNode = termNodeFromConstructorDeclarationNode(constructorDeclarationNode);
|
|
32
29
|
|
|
33
30
|
return termNode;
|
|
34
31
|
}
|
|
@@ -41,15 +38,40 @@ export function variableNodeFromVariableString(variableString, lexer, parser) {
|
|
|
41
38
|
}
|
|
42
39
|
|
|
43
40
|
export function statementNodeFromStatementString(statementString, lexer, parser) {
|
|
44
|
-
const unqualifiedStatementString =
|
|
45
|
-
`,
|
|
41
|
+
const unqualifiedStatementString =unqualifiedStatementStringFromStatementString(statementString),
|
|
46
42
|
unqualifiedStatementTokens = unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer),
|
|
47
43
|
unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser),
|
|
48
|
-
statementNode =
|
|
44
|
+
statementNode = statementNodeFromUnqualifiedStatementNode(unqualifiedStatementNode);
|
|
45
|
+
|
|
46
|
+
return statementNode;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function termNodeFromConstructorDeclarationNode(constructorDeclarationNode) {
|
|
50
|
+
const termNode = termNodeQuery(constructorDeclarationNode, constructorDeclarationNode);
|
|
51
|
+
|
|
52
|
+
return termNode;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function statementNodeFromUnqualifiedStatementNode(unqualifiedStatementNode) {
|
|
56
|
+
const statementNode = statementNodeQuery(unqualifiedStatementNode);
|
|
49
57
|
|
|
50
58
|
return statementNode;
|
|
51
59
|
}
|
|
52
60
|
|
|
61
|
+
export function constructorDeclarationStringFromTermString(termString) {
|
|
62
|
+
const constructorDeclarationString = `Constructor ${termString}
|
|
63
|
+
`;
|
|
64
|
+
|
|
65
|
+
return constructorDeclarationString;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function unqualifiedStatementStringFromStatementString(statementString) {
|
|
69
|
+
const unqualifiedStatementString = `${statementString}
|
|
70
|
+
`;
|
|
71
|
+
|
|
72
|
+
return unqualifiedStatementString;
|
|
73
|
+
}
|
|
74
|
+
|
|
53
75
|
export function metavariableNodeFromMetavariableString(metavariableString, lexer, parser) {
|
|
54
76
|
const metavariableTokens = metavariableTokensFromMetavariableString(metavariableString, lexer),
|
|
55
77
|
metavariableNode = metavariableNodeFromMetavariableTokens(metavariableTokens, parser);
|
|
@@ -57,13 +79,6 @@ export function metavariableNodeFromMetavariableString(metavariableString, lexer
|
|
|
57
79
|
return metavariableNode;
|
|
58
80
|
}
|
|
59
81
|
|
|
60
|
-
export function substitutionNodeFromSubstitutionString(substitutionString, lexer, parser) {
|
|
61
|
-
const substitutionTokens = substitutionTokensFromSubstitutionString(substitutionString, lexer),
|
|
62
|
-
substitutionNode = substitutionNodeFromSubstitutionTokens(substitutionTokens, parser);
|
|
63
|
-
|
|
64
|
-
return substitutionNode;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
82
|
export function variableNodeFromVariableTokens(variableTokens, parser) {
|
|
68
83
|
const ruleName = VARIABLE_RULE_NAME,
|
|
69
84
|
variableNode = nodeFromTokensRuleNameAndParser(variableTokens, ruleName, parser);
|
|
@@ -78,13 +93,6 @@ export function metavariableNodeFromMetavariableTokens(metavariableTokens, parse
|
|
|
78
93
|
return metavariableNode;
|
|
79
94
|
}
|
|
80
95
|
|
|
81
|
-
export function substitutionNodeFromSubstitutionTokens(substitutionTokens, parser) {
|
|
82
|
-
const ruleName = SUBSTITUTION_RULE_NAME,
|
|
83
|
-
substitutionNode = nodeFromTokensRuleNameAndParser(substitutionTokens, ruleName, parser);
|
|
84
|
-
|
|
85
|
-
return substitutionNode;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
96
|
export function unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser) {
|
|
89
97
|
const tokens = unqualifiedStatementTokens, ///
|
|
90
98
|
ruleName = UNQUALIFIED_STATEMENT_RULE_NAME,
|
package/src/utilities/string.js
CHANGED
|
@@ -11,17 +11,9 @@ export function trim(string) {
|
|
|
11
11
|
export function nodeAsString(node, tokens) {
|
|
12
12
|
let string;
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (nodeTerminalNode) {
|
|
17
|
-
const terminalNode = node; ///
|
|
18
|
-
|
|
19
|
-
string = terminalNodeAsString(terminalNode);
|
|
20
|
-
} else {
|
|
21
|
-
const nonTerminalNode = node; ///
|
|
14
|
+
tokens = nodeAsTokens(node, tokens); ///
|
|
22
15
|
|
|
23
|
-
|
|
24
|
-
}
|
|
16
|
+
string = tokensAsString(tokens);
|
|
25
17
|
|
|
26
18
|
return string;
|
|
27
19
|
}
|
|
@@ -40,14 +32,46 @@ export function nodesAsString(nodes, tokens) {
|
|
|
40
32
|
return string;
|
|
41
33
|
}
|
|
42
34
|
|
|
43
|
-
function
|
|
44
|
-
const
|
|
45
|
-
|
|
35
|
+
export function tokensAsString(tokens) {
|
|
36
|
+
const string = tokens.reduce((string, token) => {
|
|
37
|
+
const content = token.getContent();
|
|
38
|
+
|
|
39
|
+
string = `${string}${content}`;
|
|
40
|
+
|
|
41
|
+
return string;
|
|
42
|
+
}, EMPTY_STRING);
|
|
46
43
|
|
|
47
44
|
return string;
|
|
48
45
|
}
|
|
49
46
|
|
|
50
|
-
function
|
|
47
|
+
export function nodeAsTokens(node, tokens) {
|
|
48
|
+
const nodeTerminalNode = node.isTerminalNode();
|
|
49
|
+
|
|
50
|
+
if (nodeTerminalNode) {z
|
|
51
|
+
const terminalNode = node; ///
|
|
52
|
+
|
|
53
|
+
tokens = terminalNodeAsTokens(terminalNode, tokens);
|
|
54
|
+
} else {
|
|
55
|
+
const nonTerminalNode = node; ///
|
|
56
|
+
|
|
57
|
+
tokens = nonTerminalNodeAsTokens(nonTerminalNode, tokens);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return tokens;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function terminalNodeAsTokens(terminalNode, tokens) {
|
|
64
|
+
const significantToken = terminalNode.getSignificantToken(),
|
|
65
|
+
token = significantToken; ///
|
|
66
|
+
|
|
67
|
+
tokens = [ ///
|
|
68
|
+
token
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
return tokens;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function nonTerminalNodeAsTokens(nonTerminalNode, tokens) {
|
|
51
75
|
const lastSignificantTokenIndex = nonTerminalNode.getLastSignificantTokenIndex(tokens),
|
|
52
76
|
firstSignificantTokenIndex = nonTerminalNode.getFirstSignificantTokenIndex(tokens),
|
|
53
77
|
start = firstSignificantTokenIndex, ///
|
|
@@ -55,13 +79,5 @@ function nonTerminalNodeAsString(nonTerminalNode, tokens) {
|
|
|
55
79
|
|
|
56
80
|
tokens = tokens.slice(start, end); ///
|
|
57
81
|
|
|
58
|
-
|
|
59
|
-
const content = token.getContent();
|
|
60
|
-
|
|
61
|
-
string = `${string}${content}`;
|
|
62
|
-
|
|
63
|
-
return string;
|
|
64
|
-
}, EMPTY_STRING);
|
|
65
|
-
|
|
66
|
-
return string;
|
|
82
|
+
return tokens;
|
|
67
83
|
}
|
package/src/utilities/tokens.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
3
4
|
import { lexersUtilities } from "occam-custom-grammars";
|
|
4
5
|
|
|
5
6
|
import { combinedCustomGrammarFromNothing } from "./customGrammar";
|
|
6
7
|
|
|
7
|
-
const {
|
|
8
|
+
const { front } = arrayUtilities,
|
|
9
|
+
{ nominalLexerFromCombinedCustomGrammar } = lexersUtilities;
|
|
8
10
|
|
|
9
11
|
const combinedCustomGrammar = combinedCustomGrammarFromNothing(),
|
|
10
12
|
nominalLexer = nominalLexerFromCombinedCustomGrammar(combinedCustomGrammar);
|
|
@@ -23,13 +25,6 @@ export function metavariableTokensFromMetavariableString(metavariableString, lex
|
|
|
23
25
|
return metavariableTokens;
|
|
24
26
|
}
|
|
25
27
|
|
|
26
|
-
export function substitutionTokensFromSubstitutionString(substitutionString, lexer) {
|
|
27
|
-
const substitutionContent = `${substitutionString}`,
|
|
28
|
-
substitutionTokens = tokensFromContentAndLexer(substitutionContent, lexer);
|
|
29
|
-
|
|
30
|
-
return substitutionTokens;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
28
|
export function unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer) {
|
|
34
29
|
const content = unqualifiedStatementString, ///
|
|
35
30
|
unqualifiedStatementTokens = tokensFromContentAndLexer(content, lexer);
|
|
@@ -44,6 +39,20 @@ export function constructorDeclarationTokensFromConstructorDeclarationString(con
|
|
|
44
39
|
return constructorDeclarationTokens;
|
|
45
40
|
}
|
|
46
41
|
|
|
42
|
+
export function termTokensFromConstructorDeclarationTokens(constructorDeclarationTokens) {
|
|
43
|
+
const frontConstructorDeclarationTokens = front(constructorDeclarationTokens),
|
|
44
|
+
termTokens = frontConstructorDeclarationTokens; ///
|
|
45
|
+
|
|
46
|
+
return termTokens;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function statementTokensFromUnqualifiedStatementTokens(unqualifiedStatementTokens) {
|
|
50
|
+
const frontUnqualifiedStatementTokens = front(unqualifiedStatementTokens),
|
|
51
|
+
statementTokens = frontUnqualifiedStatementTokens; ///
|
|
52
|
+
|
|
53
|
+
return statementTokens;
|
|
54
|
+
}
|
|
55
|
+
|
|
47
56
|
function tokensFromContentAndLexer(content, lexer = nominalLexer) {
|
|
48
57
|
const tokens = lexer.tokenise(content);
|
|
49
58
|
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _node = require("../../utilities/node");
|
|
12
|
-
var bracketedStatementString = "(n=m)";
|
|
13
|
-
var bracketedStatementNode = (0, _node.statementNodeFromStatementString)(bracketedStatementString);
|
|
14
|
-
var _default = bracketedStatementNode;
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub2RlL3N0YXRlbWVudC9icmFja2V0ZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IHN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9ub2RlXCI7XG5cbmNvbnN0IGJyYWNrZXRlZFN0YXRlbWVudFN0cmluZyA9IFwiKG49bSlcIjtcblxuY29uc3QgYnJhY2tldGVkU3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nKGJyYWNrZXRlZFN0YXRlbWVudFN0cmluZyk7XG5cbmV4cG9ydCBkZWZhdWx0IGJyYWNrZXRlZFN0YXRlbWVudE5vZGU7XG4iXSwibmFtZXMiOlsiYnJhY2tldGVkU3RhdGVtZW50U3RyaW5nIiwiYnJhY2tldGVkU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFRQTs7O2VBQUE7OztvQkFOaUQ7QUFFakQsSUFBTUEsMkJBQTJCO0FBRWpDLElBQU1DLHlCQUF5QkMsSUFBQUEsc0NBQWdDLEVBQUNGO0lBRWhFLFdBQWVDIn0=
|
|
@@ -1,25 +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
|
-
bracketedCombinatorStatementString: function() {
|
|
13
|
-
return bracketedCombinatorStatementString;
|
|
14
|
-
},
|
|
15
|
-
default: function() {
|
|
16
|
-
return _default;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
var _metaTypeNames = require("../../../metaTypeNames");
|
|
20
|
-
var _node = require("../../../utilities/node");
|
|
21
|
-
var bracketedCombinatorStatementString = "(".concat(_metaTypeNames.STATEMENT_META_TYPE_NAME, ")");
|
|
22
|
-
var bracketedCombinatorStatementNode = (0, _node.statementNodeFromStatementString)(bracketedCombinatorStatementString);
|
|
23
|
-
var _default = bracketedCombinatorStatementNode;
|
|
24
|
-
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ub2RlL3N0YXRlbWVudC9jb21iaW5hdG9yL2JyYWNrZXRlZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FIH0gZnJvbSBcIi4uLy4uLy4uL21ldGFUeXBlTmFtZXNcIjtcbmltcG9ydCB7IHN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxpdGllcy9ub2RlXCI7XG5cbmV4cG9ydCBjb25zdCBicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50U3RyaW5nID0gYCgke1NUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRX0pYDtcblxuY29uc3QgYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlRnJvbVN0YXRlbWVudFN0cmluZyhicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50U3RyaW5nKVxuXG5leHBvcnQgZGVmYXVsdCBicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50Tm9kZTtcbiJdLCJuYW1lcyI6WyJicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50U3RyaW5nIiwiU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FIiwiYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlRnJvbVN0YXRlbWVudFN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBS2FBLGtDQUFrQztlQUFsQ0E7O0lBSWIsT0FBZ0Q7ZUFBaEQ7Ozs2QkFQeUM7b0JBQ1E7QUFFMUMsSUFBTUEscUNBQXFDLEFBQUMsSUFBNEIsT0FBekJDLHVDQUF3QixFQUFDO0FBRS9FLElBQU1DLG1DQUFtQ0MsSUFBQUEsc0NBQWdDLEVBQUNIO0lBRTFFLFdBQWVFIn0=
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _node = require("../../utilities/node");
|
|
12
|
-
var bracketedTermString = "(n)";
|
|
13
|
-
var bracketedTermNode = (0, _node.termNodeFromTermString)(bracketedTermString);
|
|
14
|
-
var _default = bracketedTermNode;
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub2RlL3Rlcm0vYnJhY2tldGVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyB0ZXJtTm9kZUZyb21UZXJtU3RyaW5nIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9ub2RlXCI7XG5cbmNvbnN0IGJyYWNrZXRlZFRlcm1TdHJpbmcgPSBcIihuKVwiO1xuXG5jb25zdCBicmFja2V0ZWRUZXJtTm9kZSA9IHRlcm1Ob2RlRnJvbVRlcm1TdHJpbmcoYnJhY2tldGVkVGVybVN0cmluZyk7XG5cbmV4cG9ydCBkZWZhdWx0IGJyYWNrZXRlZFRlcm1Ob2RlO1xuIl0sIm5hbWVzIjpbImJyYWNrZXRlZFRlcm1TdHJpbmciLCJicmFja2V0ZWRUZXJtTm9kZSIsInRlcm1Ob2RlRnJvbVRlcm1TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBQTs7O29CQU51QztBQUV2QyxJQUFNQSxzQkFBc0I7QUFFNUIsSUFBTUMsb0JBQW9CQyxJQUFBQSw0QkFBc0IsRUFBQ0Y7SUFFakQsV0FBZUMifQ==
|
|
@@ -1,25 +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
|
-
bracketedConstructorTermString: function() {
|
|
13
|
-
return bracketedConstructorTermString;
|
|
14
|
-
},
|
|
15
|
-
default: function() {
|
|
16
|
-
return _default;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
var _typeNames = require("../../../typeNames");
|
|
20
|
-
var _node = require("../../../utilities/node");
|
|
21
|
-
var bracketedConstructorTermString = "(".concat(_typeNames.OBJECT_TYPE_NAME, ")");
|
|
22
|
-
var bracketedConstructorTermNode = (0, _node.termNodeFromTermString)(bracketedConstructorTermString);
|
|
23
|
-
var _default = bracketedConstructorTermNode;
|
|
24
|
-
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ub2RlL3Rlcm0vY29uc3RydWN0b3IvYnJhY2tldGVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBPQkpFQ1RfVFlQRV9OQU1FIH0gZnJvbSBcIi4uLy4uLy4uL3R5cGVOYW1lc1wiO1xuaW1wb3J0IHsgdGVybU5vZGVGcm9tVGVybVN0cmluZyB9IGZyb20gXCIuLi8uLi8uLi91dGlsaXRpZXMvbm9kZVwiO1xuXG5leHBvcnQgY29uc3QgYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtU3RyaW5nID0gYCgke09CSkVDVF9UWVBFX05BTUV9KWA7XG5cbmNvbnN0IGJyYWNrZXRlZENvbnN0cnVjdG9yVGVybU5vZGUgPSB0ZXJtTm9kZUZyb21UZXJtU3RyaW5nKGJyYWNrZXRlZENvbnN0cnVjdG9yVGVybVN0cmluZylcblxuZXhwb3J0IGRlZmF1bHQgYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZTtcbiJdLCJuYW1lcyI6WyJicmFja2V0ZWRDb25zdHJ1Y3RvclRlcm1TdHJpbmciLCJPQkpFQ1RfVFlQRV9OQU1FIiwiYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZSIsInRlcm1Ob2RlRnJvbVRlcm1TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUthQSw4QkFBOEI7ZUFBOUJBOztJQUliLE9BQTRDO2VBQTVDOzs7eUJBUGlDO29CQUNNO0FBRWhDLElBQU1BLGlDQUFpQyxBQUFDLElBQW9CLE9BQWpCQywyQkFBZ0IsRUFBQztBQUVuRSxJQUFNQywrQkFBK0JDLElBQUFBLDRCQUFzQixFQUFDSDtJQUU1RCxXQUFlRSJ9
|