occam-verify-cli 0.0.982 → 0.0.984
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/constants.js +5 -1
- package/lib/constructor/bracketed.js +2 -2
- package/lib/context/local.js +9 -9
- package/lib/frame.js +32 -29
- package/lib/judgement.js +4 -4
- package/lib/node/frame/bracketed.js +16 -0
- package/lib/node/statement/combinator/bracketed.js +3 -3
- package/lib/node/term/constructor/bracketed.js +3 -3
- package/lib/ocmbinator/bracketed.js +2 -2
- package/lib/ruleNames.js +11 -7
- package/lib/substitution/frameForMetavariable.js +252 -0
- package/lib/substitution/statementForMetavariable.js +9 -20
- package/lib/tokens/combinatorFrame/bracketed.js +17 -0
- package/lib/tokens/combinatorStatement/bracketed.js +17 -0
- package/lib/tokens/constructorTerm/bracketed.js +17 -0
- package/lib/utilities/brackets.js +22 -3
- package/lib/utilities/node.js +26 -22
- package/lib/utilities/tokens.js +18 -11
- package/lib/verify/assertion/contained.js +37 -34
- package/lib/verify/assertion/defined.js +27 -35
- package/lib/verify/declaration.js +3 -3
- package/lib/verify/frame.js +9 -8
- package/lib/verify/judgement.js +7 -12
- package/lib/verify/metavariableGivenMetaType.js +3 -6
- package/package.json +2 -2
- package/src/constants.js +1 -0
- package/src/constructor/bracketed.js +1 -1
- package/src/context/local.js +11 -12
- package/src/frame.js +31 -27
- package/src/judgement.js +1 -1
- package/src/node/frame/bracketed.js +9 -0
- package/src/node/statement/combinator/bracketed.js +3 -3
- package/src/node/term/constructor/bracketed.js +3 -3
- package/src/ocmbinator/bracketed.js +2 -2
- package/src/ruleNames.js +3 -2
- package/src/substitution/frameForMetavariable.js +183 -0
- package/src/substitution/statementForMetavariable.js +9 -24
- package/src/tokens/combinatorFrame/bracketed.js +10 -0
- package/src/tokens/combinatorStatement/bracketed.js +10 -0
- package/src/tokens/constructorTerm/bracketed.js +10 -0
- package/src/utilities/brackets.js +25 -1
- package/src/utilities/node.js +27 -28
- package/src/utilities/tokens.js +15 -10
- package/src/verify/assertion/contained.js +48 -45
- package/src/verify/assertion/defined.js +31 -46
- package/src/verify/declaration.js +8 -10
- package/src/verify/frame.js +11 -19
- package/src/verify/judgement.js +17 -26
- package/src/verify/metavariableGivenMetaType.js +2 -6
- package/lib/tokens/constructorDeclaration/bracketed.js +0 -17
- package/lib/tokens/unqualifiedStatement/combinator/bracketed.js +0 -17
- package/src/tokens/constructorDeclaration/bracketed.js +0 -10
- package/src/tokens/unqualifiedStatement/combinator/bracketed.js +0 -10
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Substitution from "../substitution";
|
|
4
|
+
import TermForVariableSubstitution from "../substitution/termForVariable";
|
|
5
|
+
|
|
6
|
+
import { nodeQuery } from "../utilities/query";
|
|
7
|
+
import { stripBracketsFromFrame } from "../utilities/brackets";
|
|
8
|
+
|
|
9
|
+
const frameNodeQuery = nodeQuery("/substitution/frame!"),
|
|
10
|
+
substitutionMetavariableNodeQuery = nodeQuery("/substitution/metavariable!"),
|
|
11
|
+
frameStatementMetavariableNodeQuery = nodeQuery("/frame/statement/metavariable!");
|
|
12
|
+
|
|
13
|
+
export default class FrameForMetavariableSubstitution extends Substitution {
|
|
14
|
+
constructor(frameNode, metavariableNode, substitution) {
|
|
15
|
+
super();
|
|
16
|
+
|
|
17
|
+
this.frameNode = frameNode;
|
|
18
|
+
this.metavariableNode = metavariableNode;
|
|
19
|
+
this.substitution = substitution;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
getFrameNode() {
|
|
23
|
+
return this.frameNode;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
getMetavariableNode() {
|
|
27
|
+
return this.metavariableNode;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
getSubstitution() {
|
|
31
|
+
return this.substitution;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
getNode() {
|
|
35
|
+
const node = this.frameNode; ///
|
|
36
|
+
|
|
37
|
+
return node;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
isSimple() {
|
|
41
|
+
const simple = (this.substitution === null);
|
|
42
|
+
|
|
43
|
+
return simple;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
transformed(substitutions) {
|
|
47
|
+
let transformedSubstitution = null;
|
|
48
|
+
|
|
49
|
+
const transformedFrameNode = transformFrameNode(this.frameNode, substitutions);
|
|
50
|
+
|
|
51
|
+
if (transformedFrameNode !== null) {
|
|
52
|
+
const substitution = null,
|
|
53
|
+
frameNode = transformedFrameNode, ///
|
|
54
|
+
metavariableNode = this.metavariableNode, ///
|
|
55
|
+
frameForMetavariableSubstitution = new FrameForMetavariableSubstitution(frameNode, metavariableNode, substitution);
|
|
56
|
+
|
|
57
|
+
transformedSubstitution = frameForMetavariableSubstitution; ///
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return transformedSubstitution;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
matchFrameNode(frameNode) {
|
|
64
|
+
frameNode = stripBracketsFromFrame(frameNode); ///
|
|
65
|
+
|
|
66
|
+
const frameNodeMatches = this.frameNode.match(frameNode);
|
|
67
|
+
|
|
68
|
+
return frameNodeMatches;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
matchMetavariableNode(metavariableNode) {
|
|
72
|
+
const metavariableNodeMatches = this.metavariableNode.match(metavariableNode);
|
|
73
|
+
|
|
74
|
+
return metavariableNodeMatches;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
matchMetavariableNodeAndSubstitutionNode(metavariableNode, substitutionNode) {
|
|
78
|
+
const metavariableNodeAndSubstitutionNodeMatches = false;
|
|
79
|
+
|
|
80
|
+
return metavariableNodeAndSubstitutionNodeMatches;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
asString(localContextA, localContextB) {
|
|
84
|
+
let string;
|
|
85
|
+
|
|
86
|
+
const frameNodeB = this.frameNode, ///
|
|
87
|
+
frameStringB = localContextB.nodeAsString(frameNodeB),
|
|
88
|
+
metavariableNodeA = this.metavariableNode, ///
|
|
89
|
+
metavariableStringA = localContextA.nodeAsString(metavariableNodeA);
|
|
90
|
+
|
|
91
|
+
if (this.substitution === null) {
|
|
92
|
+
string = `[${frameStringB} for ${metavariableStringA}]`;
|
|
93
|
+
} else {
|
|
94
|
+
const substitutionString = this.substitution.asString(localContextA, localContextA);
|
|
95
|
+
|
|
96
|
+
string = `[${frameStringB} for ${metavariableStringA}${substitutionString}]`;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return string;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
static fromSubstitutionNode(substitutionNode) {
|
|
103
|
+
let frameForMetavariableSubstitution = null;
|
|
104
|
+
|
|
105
|
+
let frameNode = frameNodeQuery(substitutionNode);
|
|
106
|
+
|
|
107
|
+
if (frameNode !== null) {
|
|
108
|
+
frameNode = stripBracketsFromFrame(frameNode); ///
|
|
109
|
+
|
|
110
|
+
const substitutionMetavariableNode = substitutionMetavariableNodeQuery(substitutionNode),
|
|
111
|
+
metavariableNode = substitutionMetavariableNode, ///
|
|
112
|
+
substitution = null;
|
|
113
|
+
|
|
114
|
+
frameForMetavariableSubstitution = new FrameForMetavariableSubstitution(frameNode, metavariableNode, substitution);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return frameForMetavariableSubstitution;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
static fromFrameNodeAndMetavariableNode(frameNode, metavariableNode) {
|
|
121
|
+
frameNode = stripBracketsFromFrame(frameNode); ///
|
|
122
|
+
|
|
123
|
+
const substitution = null,
|
|
124
|
+
frameForMetavariableSubstitution = new FrameForMetavariableSubstitution(frameNode, metavariableNode, substitution);
|
|
125
|
+
|
|
126
|
+
return frameForMetavariableSubstitution;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
static fromFrameNodeMetavariableNodeAndSubstitutionNode(frameNode, metavariableNode, substitutionNode) {
|
|
130
|
+
frameNode = stripBracketsFromFrame(frameNode); ///
|
|
131
|
+
|
|
132
|
+
const substitution = substitutionFromSubstitutionNode(substitutionNode),
|
|
133
|
+
frameForMetavariableSubstitution = new FrameForMetavariableSubstitution(frameNode, metavariableNode, substitution);
|
|
134
|
+
|
|
135
|
+
return frameForMetavariableSubstitution;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function substitutionFromSubstitutionNode(substitutionNode) {
|
|
140
|
+
let substitution = null;
|
|
141
|
+
|
|
142
|
+
if (substitution === null) {
|
|
143
|
+
const termForVariableSubstitution = TermForVariableSubstitution.fromSubstitutionNode(substitutionNode);
|
|
144
|
+
|
|
145
|
+
if (termForVariableSubstitution !== null) {
|
|
146
|
+
substitution = termForVariableSubstitution; ///
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (substitution === null) {
|
|
151
|
+
const frameForMetavariableSubstitution = FrameForMetavariableSubstitution.fromSubstitutionNode(substitutionNode);
|
|
152
|
+
|
|
153
|
+
if (frameForMetavariableSubstitution !== null) {
|
|
154
|
+
substitution = frameForMetavariableSubstitution; ///
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return substitution;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function transformFrameNode(frameNode, substitutions) {
|
|
162
|
+
let transformedFrameNode = null;
|
|
163
|
+
|
|
164
|
+
const frameStatementMetavariableNode = frameStatementMetavariableNodeQuery(frameNode);
|
|
165
|
+
|
|
166
|
+
if (frameStatementMetavariableNode !== null) {
|
|
167
|
+
const metavariableNode = frameStatementMetavariableNode; ///
|
|
168
|
+
|
|
169
|
+
substitutions.someSubstitution((substitution) => {
|
|
170
|
+
const substitutionMatchesVariableNode = substitution.matchMetavariableNode(metavariableNode);
|
|
171
|
+
|
|
172
|
+
if (substitutionMatchesVariableNode) {
|
|
173
|
+
const frameNode = substitution.getFrameNode();
|
|
174
|
+
|
|
175
|
+
transformedFrameNode = frameNode; ////
|
|
176
|
+
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return transformedFrameNode;
|
|
183
|
+
}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
import Substitution from "../substitution";
|
|
4
4
|
import TermForVariableSubstitution from "../substitution/termForVariable";
|
|
5
|
+
import FrameForMetavariableSubstitution from "../substitution/frameForMetavariable";
|
|
5
6
|
|
|
6
7
|
import { nodeQuery } from "../utilities/query";
|
|
7
8
|
import { stripBracketsFromStatement } from "../utilities/brackets";
|
|
8
9
|
|
|
9
|
-
const
|
|
10
|
-
metavariableNodeQuery = nodeQuery("/*/metavariable!");
|
|
10
|
+
const statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!");
|
|
11
11
|
|
|
12
12
|
export default class StatementForMetavariableSubstitution extends Substitution {
|
|
13
13
|
constructor(statementNode, metavariableNode, substitution) {
|
|
@@ -98,23 +98,6 @@ export default class StatementForMetavariableSubstitution extends Substitution {
|
|
|
98
98
|
return string;
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
static fromSubstitutionNode(substitutionNode) {
|
|
102
|
-
let statementForMetavariableSubstitution = null;
|
|
103
|
-
|
|
104
|
-
let statementNode = statementNodeQuery(substitutionNode),
|
|
105
|
-
metavariableNode = metavariableNodeQuery(substitutionNode);
|
|
106
|
-
|
|
107
|
-
if (statementNode !== null) {
|
|
108
|
-
statementNode = stripBracketsFromStatement(statementNode); ///
|
|
109
|
-
|
|
110
|
-
const substitution = null;
|
|
111
|
-
|
|
112
|
-
statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(statementNode, metavariableNode, substitution);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return statementForMetavariableSubstitution;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
101
|
static fromStatementNodeAndMetavariableNode(statementNode, metavariableNode) {
|
|
119
102
|
statementNode = stripBracketsFromStatement(statementNode); ///
|
|
120
103
|
|
|
@@ -146,10 +129,10 @@ function substitutionFromSubstitutionNode(substitutionNode) {
|
|
|
146
129
|
}
|
|
147
130
|
|
|
148
131
|
if (substitution === null) {
|
|
149
|
-
const
|
|
132
|
+
const frameForMetavariableSubstitution = FrameForMetavariableSubstitution.fromSubstitutionNode(substitutionNode);
|
|
150
133
|
|
|
151
|
-
if (
|
|
152
|
-
substitution =
|
|
134
|
+
if (frameForMetavariableSubstitution !== null) {
|
|
135
|
+
substitution = frameForMetavariableSubstitution; ///
|
|
153
136
|
}
|
|
154
137
|
}
|
|
155
138
|
|
|
@@ -159,9 +142,11 @@ function substitutionFromSubstitutionNode(substitutionNode) {
|
|
|
159
142
|
function transformStatementNode(statementNode, substitutions) {
|
|
160
143
|
let transformedStatementNode = null;
|
|
161
144
|
|
|
162
|
-
const
|
|
145
|
+
const statementMetavariableNode = statementMetavariableNodeQuery(statementNode);
|
|
146
|
+
|
|
147
|
+
if (statementMetavariableNode !== null) {
|
|
148
|
+
const metavariableNode = statementMetavariableNode; ///
|
|
163
149
|
|
|
164
|
-
if (metavariableNode !== null) {
|
|
165
150
|
substitutions.someSubstitution((substitution) => {
|
|
166
151
|
const substitutionMatchesVariableNode = substitution.matchMetavariableNode(metavariableNode);
|
|
167
152
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { FRAME_META_TYPE_NAME } from "../../metaTypeNames";
|
|
4
|
+
import { fromTokensFromFrameString } from "../../utilities/tokens";
|
|
5
|
+
|
|
6
|
+
const bracketedCombinatorFrameString = `(${FRAME_META_TYPE_NAME})`;
|
|
7
|
+
|
|
8
|
+
const bracketedCombinatorFrameTokens = fromTokensFromFrameString(bracketedCombinatorFrameString)
|
|
9
|
+
|
|
10
|
+
export default bracketedCombinatorFrameTokens;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { STATEMENT_META_TYPE_NAME } from "../../metaTypeNames";
|
|
4
|
+
import { statementTokensFromStatementString } from "../../utilities/tokens";
|
|
5
|
+
|
|
6
|
+
const bracketedCombinatorStatementString = `(${STATEMENT_META_TYPE_NAME})`;
|
|
7
|
+
|
|
8
|
+
const bracketedCombinatorStatementTokens = statementTokensFromStatementString(bracketedCombinatorStatementString)
|
|
9
|
+
|
|
10
|
+
export default bracketedCombinatorStatementTokens;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { OBJECT_TYPE_NAME } from "../../typeNames";
|
|
4
|
+
import { termTokensFromTermString } from "../../utilities/tokens";
|
|
5
|
+
|
|
6
|
+
const bracketedConstructorTermString = `(${OBJECT_TYPE_NAME})`;
|
|
7
|
+
|
|
8
|
+
const bracketedConstructorDeclarationTokens = termTokensFromTermString(bracketedConstructorTermString)
|
|
9
|
+
|
|
10
|
+
export default bracketedConstructorDeclarationTokens;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import bracketedTermNode from "../node/term/bracketed";
|
|
4
|
+
import bracketedFrameNode from "../node/frame/bracketed";
|
|
4
5
|
import bracketedStatementNode from "../node/statement/bracketed";
|
|
5
6
|
|
|
6
7
|
import { nodeQuery } from "../utilities/query";
|
|
7
|
-
import { BRACKETED_TERM_DEPTH, BRACKETED_STATEMENT_DEPTH } from "../constants";
|
|
8
|
+
import { BRACKETED_TERM_DEPTH, BRACKETED_FRAME_DEPTH, BRACKETED_STATEMENT_DEPTH } from "../constants";
|
|
8
9
|
|
|
9
10
|
const bracketedTermChildNodeQuery = nodeQuery("/term/argument/term!"),
|
|
10
11
|
bracketedStatementChildNodeQuery = nodeQuery("/statement/metaArgument/statement!");
|
|
@@ -19,6 +20,16 @@ export function stripBracketsFromTerm(statementNode) {
|
|
|
19
20
|
return statementNode;
|
|
20
21
|
}
|
|
21
22
|
|
|
23
|
+
export function stripBracketsFromFrame(frameNode) {
|
|
24
|
+
const bracketedFrameChildNode = bracketedFrameChildNodeFromFrameNode(frameNode);
|
|
25
|
+
|
|
26
|
+
if (bracketedFrameChildNode !== null) {
|
|
27
|
+
frameNode = bracketedFrameChildNode; ///
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return frameNode;
|
|
31
|
+
}
|
|
32
|
+
|
|
22
33
|
export function stripBracketsFromStatement(statementNode) {
|
|
23
34
|
const bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
24
35
|
|
|
@@ -42,6 +53,19 @@ function bracketedTermChildNodeFromTermNode(termNode) {
|
|
|
42
53
|
return bracketedTermChildNode;
|
|
43
54
|
}
|
|
44
55
|
|
|
56
|
+
function bracketedFrameChildNodeFromFrameNode(frameNode) {
|
|
57
|
+
let bracketedFrameChildNode = null;
|
|
58
|
+
|
|
59
|
+
const depth = BRACKETED_FRAME_DEPTH,
|
|
60
|
+
frameNodeMatchBracketedFrameNode = frameNode.match(bracketedFrameNode, depth);
|
|
61
|
+
|
|
62
|
+
if (frameNodeMatchBracketedFrameNode) {
|
|
63
|
+
bracketedFrameChildNode = bracketedFrameChildNodeQuery(frameNode);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return bracketedFrameChildNode;
|
|
67
|
+
}
|
|
68
|
+
|
|
45
69
|
function bracketedStatementChildNodeFromStatementNode(statementNode) {
|
|
46
70
|
let bracketedStatementChildNode = null;
|
|
47
71
|
|
package/src/utilities/node.js
CHANGED
|
@@ -2,59 +2,58 @@
|
|
|
2
2
|
|
|
3
3
|
import { parsersUtilities } from "occam-custom-grammars";
|
|
4
4
|
|
|
5
|
-
import { nodeQuery } from "../utilities/query";
|
|
6
5
|
import { combinedCustomGrammarFromNothing } from "./customGrammar";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { TERM_RULE_NAME, FRAME_RULE_NAME, STATEMENT_RULE_NAME } from "../ruleNames";
|
|
7
|
+
import { termTokensFromTermString, frameTokensFromFrameString, statementTokensFromStatementString } from "../utilities/tokens";
|
|
9
8
|
|
|
10
9
|
const { florenceParserFromCombinedCustomGrammar } = parsersUtilities;
|
|
11
10
|
|
|
12
11
|
const combinedCustomGrammar = combinedCustomGrammarFromNothing(),
|
|
13
12
|
florenceParser = florenceParserFromCombinedCustomGrammar(combinedCustomGrammar);
|
|
14
13
|
|
|
15
|
-
const termNodeQuery = nodeQuery("/constructorDeclaration/term!"),
|
|
16
|
-
statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
|
|
17
|
-
|
|
18
14
|
export function termNodeFromTermString(termString, lexer, parser) {
|
|
19
|
-
const
|
|
20
|
-
termNode =
|
|
15
|
+
const termTokens = termTokensFromTermString(termString, lexer),
|
|
16
|
+
termNode = termNodeFromTermTokens(termTokens, parser);
|
|
21
17
|
|
|
22
18
|
return termNode;
|
|
23
19
|
}
|
|
24
20
|
|
|
25
|
-
export function
|
|
26
|
-
const
|
|
27
|
-
|
|
21
|
+
export function frameNodeFromFrameString(frameString, lexer, parser) {
|
|
22
|
+
const frameTokens = frameTokensFromFrameString(frameString, lexer),
|
|
23
|
+
frameNode = frameNodeFromFrameTokens(frameTokens, parser);
|
|
28
24
|
|
|
29
|
-
return
|
|
25
|
+
return frameNode;
|
|
30
26
|
}
|
|
31
27
|
|
|
32
|
-
export function
|
|
33
|
-
const
|
|
34
|
-
|
|
28
|
+
export function statementNodeFromStatementString(statementString, lexer, parser) {
|
|
29
|
+
const statementTokens = statementTokensFromStatementString(statementString, lexer),
|
|
30
|
+
statementNode = statementNodeFromStatementTokens(statementTokens, parser);
|
|
35
31
|
|
|
36
|
-
return
|
|
32
|
+
return statementNode;
|
|
37
33
|
}
|
|
38
34
|
|
|
39
|
-
export function
|
|
40
|
-
const
|
|
41
|
-
|
|
35
|
+
export function termNodeFromTermTokens(termTokens, parser) {
|
|
36
|
+
const tokens = termTokens, ///
|
|
37
|
+
ruleName = TERM_RULE_NAME,
|
|
38
|
+
termNode = nodeFromTokensRuleNameAndParser(tokens, ruleName, parser);
|
|
42
39
|
|
|
43
|
-
return
|
|
40
|
+
return termNode;
|
|
44
41
|
}
|
|
45
42
|
|
|
46
|
-
function
|
|
47
|
-
const
|
|
48
|
-
|
|
43
|
+
export function frameNodeFromFrameTokens(frameTokens, parser) {
|
|
44
|
+
const tokens = frameTokens, ///
|
|
45
|
+
ruleName = FRAME_RULE_NAME,
|
|
46
|
+
frameNode = nodeFromTokensRuleNameAndParser(tokens, ruleName, parser);
|
|
49
47
|
|
|
50
|
-
return
|
|
48
|
+
return frameNode;
|
|
51
49
|
}
|
|
52
50
|
|
|
53
|
-
function
|
|
54
|
-
const
|
|
55
|
-
|
|
51
|
+
export function statementNodeFromStatementTokens(statementTokens, parser) {
|
|
52
|
+
const tokens = statementTokens, ///
|
|
53
|
+
ruleName = STATEMENT_RULE_NAME,
|
|
54
|
+
statementNode = nodeFromTokensRuleNameAndParser(tokens, ruleName, parser);
|
|
56
55
|
|
|
57
|
-
return
|
|
56
|
+
return statementNode;
|
|
58
57
|
}
|
|
59
58
|
|
|
60
59
|
function nodeFromTokensRuleNameAndParser(tokens, ruleName, parser = florenceParser) {
|
package/src/utilities/tokens.js
CHANGED
|
@@ -9,20 +9,25 @@ const { florenceLexerFromCombinedCustomGrammar } = lexersUtilities;
|
|
|
9
9
|
const combinedCustomGrammar = combinedCustomGrammarFromNothing(),
|
|
10
10
|
florenceLexer = florenceLexerFromCombinedCustomGrammar(combinedCustomGrammar);
|
|
11
11
|
|
|
12
|
-
export function
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
constructorDeclarationTokens = tokensFromContentAndLexer(constructorDeclarationContent, lexer);
|
|
12
|
+
export function termTokensFromTermString(termString, lexer) {
|
|
13
|
+
const content = termString, ///
|
|
14
|
+
termTokens = tokensFromContentAndLexer(content, lexer);
|
|
16
15
|
|
|
17
|
-
return
|
|
16
|
+
return termTokens;
|
|
18
17
|
}
|
|
19
18
|
|
|
20
|
-
export function
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
unqualifiedStatementTokens = tokensFromContentAndLexer(unqualifiedStatementContent, lexer);
|
|
19
|
+
export function frameTokensFromFrameString(frameString, lexer) {
|
|
20
|
+
const content = frameString, ///
|
|
21
|
+
frameTokens = tokensFromContentAndLexer(content, lexer);
|
|
24
22
|
|
|
25
|
-
return
|
|
23
|
+
return frameTokens;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function statementTokensFromStatementString(statementString, lexer) {
|
|
27
|
+
const content = statementString, ///
|
|
28
|
+
statementTokens = tokensFromContentAndLexer(content, lexer);
|
|
29
|
+
|
|
30
|
+
return statementTokens;
|
|
26
31
|
}
|
|
27
32
|
|
|
28
33
|
function tokensFromContentAndLexer(content, lexer = florenceLexer) {
|
|
@@ -6,9 +6,9 @@ import { isAssertionNegated } from "../../utilities/assertion";
|
|
|
6
6
|
import { nodeQuery, nodesQuery } from "../../utilities/query";
|
|
7
7
|
|
|
8
8
|
const variableNodeQuery = nodeQuery("/containedAssertion/term/variable!"),
|
|
9
|
-
metavariableNodeQuery = nodeQuery("/containedAssertion/statement
|
|
10
|
-
statementVariableNodesQuery = nodesQuery("/containedAssertion/statement
|
|
11
|
-
statementMetavariableNodesQuery = nodesQuery("/containedAssertion/statement
|
|
9
|
+
metavariableNodeQuery = nodeQuery("/containedAssertion/frame/statement!/metavariable!"),
|
|
10
|
+
statementVariableNodesQuery = nodesQuery("/containedAssertion/statement//variable"),
|
|
11
|
+
statementMetavariableNodesQuery = nodesQuery("/containedAssertion/statement//metavariable");
|
|
12
12
|
|
|
13
13
|
const verifyContainedAssertionFunctions = [
|
|
14
14
|
verifyDerivedContainedAssertion,
|
|
@@ -56,53 +56,56 @@ function verifyDerivedContainedAssertion(containedAssertionNode, assignments, st
|
|
|
56
56
|
|
|
57
57
|
localContext.trace(`Verifying the '${containedAssertionString}' derived contained assertion...`, containedAssertionNode);
|
|
58
58
|
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
59
|
+
const metavariableNode = metavariableNodeQuery(containedAssertionNode);
|
|
60
|
+
|
|
61
|
+
if (metavariableNode !== null) {
|
|
62
|
+
const assertionNegated = isAssertionNegated(containedAssertionNode),
|
|
63
|
+
variableNode = variableNodeQuery(containedAssertionNode),
|
|
64
|
+
negated = assertionNegated; ///
|
|
65
|
+
|
|
66
|
+
if (false) {
|
|
67
|
+
///
|
|
68
|
+
} else if (metavariableNode !== null) {
|
|
69
|
+
const statementMetavariableNodes = statementMetavariableNodesQuery(containedAssertionNode),
|
|
70
|
+
variableNodeMatchesStatementMetavariableNode = statementMetavariableNodes.some((statementMetavariableNode) => {
|
|
71
|
+
const variableNodeMatchesStatementMetavariableNode = metavariableNode.match(statementMetavariableNode);
|
|
72
|
+
|
|
73
|
+
if (variableNodeMatchesStatementMetavariableNode) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
if (!negated) {
|
|
79
|
+
if (variableNodeMatchesStatementMetavariableNode) {
|
|
80
|
+
derivedContainedAssertionVerified = true;
|
|
81
|
+
}
|
|
79
82
|
}
|
|
80
|
-
}
|
|
81
83
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
if (negated) {
|
|
85
|
+
if (!variableNodeMatchesStatementMetavariableNode) {
|
|
86
|
+
derivedContainedAssertionVerified = true;
|
|
87
|
+
}
|
|
85
88
|
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
89
|
+
} else if (variableNode !== null) {
|
|
90
|
+
const statementVariableNodes = statementVariableNodesQuery(containedAssertionNode),
|
|
91
|
+
variableNodeMatchesStatementVariableNode = statementVariableNodes.some((statementVariableNode) => {
|
|
92
|
+
const variableNodeMatchesStatementVariableNode = variableNode.match(statementVariableNode);
|
|
93
|
+
|
|
94
|
+
if (variableNodeMatchesStatementVariableNode) {
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
if (!negated) {
|
|
100
|
+
if (variableNodeMatchesStatementVariableNode) {
|
|
101
|
+
derivedContainedAssertionVerified = true;
|
|
102
|
+
}
|
|
100
103
|
}
|
|
101
|
-
}
|
|
102
104
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
105
|
+
if (negated) {
|
|
106
|
+
if (!variableNodeMatchesStatementVariableNode) {
|
|
107
|
+
derivedContainedAssertionVerified = true;
|
|
108
|
+
}
|
|
106
109
|
}
|
|
107
110
|
}
|
|
108
111
|
}
|