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.
Files changed (47) hide show
  1. package/lib/combinator/bracketed.js +135 -0
  2. package/lib/constants.js +3 -3
  3. package/lib/constructor/bracketed.js +30 -11
  4. package/lib/context/file.js +39 -3
  5. package/lib/context/local.js +59 -7
  6. package/lib/mixins/statement/unify.js +2 -2
  7. package/lib/mixins/statement/verify.js +6 -6
  8. package/lib/ruleNames.js +1 -5
  9. package/lib/statement.js +28 -20
  10. package/lib/substitution/frameForMetavariable.js +17 -2
  11. package/lib/substitution/termForVariable.js +20 -2
  12. package/lib/unifier/metaLevel.js +3 -4
  13. package/lib/utilities/brackets.js +5 -10
  14. package/lib/utilities/node.js +29 -15
  15. package/lib/utilities/string.js +34 -16
  16. package/lib/utilities/tokens.js +16 -8
  17. package/package.json +1 -1
  18. package/src/combinator/bracketed.js +49 -0
  19. package/src/constants.js +2 -2
  20. package/src/constructor/bracketed.js +32 -9
  21. package/src/context/file.js +35 -5
  22. package/src/context/local.js +64 -7
  23. package/src/mixins/statement/unify.js +1 -1
  24. package/src/mixins/statement/verify.js +7 -6
  25. package/src/ruleNames.js +0 -1
  26. package/src/statement.js +52 -37
  27. package/src/substitution/frameForMetavariable.js +26 -1
  28. package/src/substitution/termForVariable.js +30 -1
  29. package/src/unifier/metaLevel.js +2 -3
  30. package/src/utilities/brackets.js +2 -3
  31. package/src/utilities/node.js +30 -22
  32. package/src/utilities/string.js +39 -23
  33. package/src/utilities/tokens.js +17 -8
  34. package/lib/node/statement/bracketed.js +0 -16
  35. package/lib/node/statement/combinator/bracketed.js +0 -25
  36. package/lib/node/term/bracketed.js +0 -16
  37. package/lib/node/term/constructor/bracketed.js +0 -25
  38. package/lib/ocmbinator/bracketed.js +0 -157
  39. package/lib/substitution/statement.js +0 -163
  40. package/lib/verifier/substitution.js +0 -161
  41. package/src/node/statement/bracketed.js +0 -9
  42. package/src/node/statement/combinator/bracketed.js +0 -10
  43. package/src/node/term/bracketed.js +0 -9
  44. package/src/node/term/constructor/bracketed.js +0 -10
  45. package/src/ocmbinator/bracketed.js +0 -26
  46. package/src/substitution/statement.js +0 -81
  47. 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 StatementSubstitution from "../../substitution/statement";
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 statementSubstitution = StatementSubstitution.fromStatementNode(statementNode, localContext);
45
+ const substitution = FrameForMetavariableSubstitution.fromStatementNode(statementNode, localContext) ||
46
+ TermForVariableSubstitution.fromStatementNode(statementNode, localContext) ||
47
+ null;
45
48
 
46
- if (statementSubstitution !== null) {
47
- const statementSubstitutionVerified = statementSubstitution.verify(assignments, stated, localContext);
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 { statementNodeFromStatementString } from "./utilities/node";
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
- statementNode = statementNodeFromStatementString(statementString, lexer, parser),
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
- statement = new Statement(string, node);
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
- string = localContext.nodeAsString(node);
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
- string = localContext.nodeAsString(node),
236
- statement = new Statement(string, node);
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
- string = localContext.nodeAsString(node),
245
- statement = new Statement(string, node);
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 substitutionFrameNodeQuery = nodeQuery("/substitution/frame!"),
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 termVariableNodeQuery = nodeQuery("/term/variable!"),
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
 
@@ -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 = substitutionA, ///
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!"),
@@ -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 = `Constructor ${termString}
28
- `,
25
+ const constructorDeclarationString = constructorDeclarationStringFromTermString(termString),
29
26
  constructorDeclarationTokens = constructorDeclarationTokensFromConstructorDeclarationString(constructorDeclarationString, lexer),
30
27
  constructorDeclarationNode = constructorDeclarationNodeFromConstructorDeclarationTokens(constructorDeclarationTokens, parser),
31
- termNode = termNodeQuery(constructorDeclarationNode, constructorDeclarationNode);
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 = `${statementString}
45
- `,
41
+ const unqualifiedStatementString =unqualifiedStatementStringFromStatementString(statementString),
46
42
  unqualifiedStatementTokens = unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer),
47
43
  unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser),
48
- statementNode = statementNodeQuery(unqualifiedStatementNode);
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,
@@ -11,17 +11,9 @@ export function trim(string) {
11
11
  export function nodeAsString(node, tokens) {
12
12
  let string;
13
13
 
14
- const nodeTerminalNode = node.isTerminalNode();
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
- string = nonTerminalNodeAsString(nonTerminalNode, tokens);
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 terminalNodeAsString(terminalNode) {
44
- const content = terminalNode.getContent(),
45
- string = content; ///
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 nonTerminalNodeAsString(nonTerminalNode, tokens) {
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
- const string = tokens.reduce((string, token) => {
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
  }
@@ -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 { nominalLexerFromCombinedCustomGrammar } = lexersUtilities;
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