occam-verify-cli 0.0.1063 → 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 (86) hide show
  1. package/bin/action/verify.js +2 -0
  2. package/lib/assertion/contained.js +1 -2
  3. package/lib/assertion/defined.js +31 -47
  4. package/lib/assertion/subproof.js +3 -3
  5. package/lib/combinator/bracketed.js +135 -0
  6. package/lib/conclusion.js +5 -8
  7. package/lib/consequent.js +5 -8
  8. package/lib/constants.js +3 -3
  9. package/lib/constructor/bracketed.js +30 -11
  10. package/lib/context/file.js +39 -3
  11. package/lib/context/local.js +59 -7
  12. package/lib/metavariable.js +30 -33
  13. package/lib/mixins/statement/unify.js +2 -2
  14. package/lib/mixins/statement/verify.js +6 -6
  15. package/lib/premise.js +5 -8
  16. package/lib/proofStep.js +2 -2
  17. package/lib/ruleNames.js +1 -5
  18. package/lib/statement/unqualified.js +14 -1
  19. package/lib/statement.js +27 -19
  20. package/lib/substitution/frameForMetavariable.js +17 -2
  21. package/lib/substitution/statementForMetavariable.js +22 -27
  22. package/lib/substitution/termForVariable.js +28 -10
  23. package/lib/supposition.js +5 -8
  24. package/lib/unifier/intrinsicLevel.js +4 -4
  25. package/lib/unifier/metaLevel.js +8 -13
  26. package/lib/unifier/metavariable.js +4 -4
  27. package/lib/unify/simpleSubstitutionStatementWithComplexSubstitutionStatement.js +3 -3
  28. package/lib/unify/statementWithSttaemetnGivenEquivalences.js +5 -5
  29. package/lib/utilities/brackets.js +5 -10
  30. package/lib/utilities/node.js +29 -15
  31. package/lib/utilities/string.js +34 -16
  32. package/lib/utilities/tokens.js +16 -8
  33. package/lib/utilities/unify.js +4 -21
  34. package/lib/variable.js +14 -2
  35. package/package.json +1 -1
  36. package/src/assertion/contained.js +0 -2
  37. package/src/assertion/defined.js +34 -61
  38. package/src/assertion/subproof.js +2 -2
  39. package/src/combinator/bracketed.js +49 -0
  40. package/src/conclusion.js +5 -18
  41. package/src/consequent.js +5 -18
  42. package/src/constants.js +2 -2
  43. package/src/constructor/bracketed.js +32 -9
  44. package/src/context/file.js +35 -5
  45. package/src/context/local.js +64 -7
  46. package/src/metavariable.js +46 -33
  47. package/src/mixins/statement/unify.js +1 -1
  48. package/src/mixins/statement/verify.js +7 -6
  49. package/src/premise.js +5 -18
  50. package/src/proofStep.js +1 -1
  51. package/src/ruleNames.js +0 -1
  52. package/src/statement/unqualified.js +17 -0
  53. package/src/statement.js +54 -36
  54. package/src/substitution/frameForMetavariable.js +26 -1
  55. package/src/substitution/statementForMetavariable.js +27 -34
  56. package/src/substitution/termForVariable.js +45 -13
  57. package/src/supposition.js +5 -18
  58. package/src/unifier/intrinsicLevel.js +3 -3
  59. package/src/unifier/metaLevel.js +15 -21
  60. package/src/unifier/metavariable.js +3 -3
  61. package/src/unify/simpleSubstitutionStatementWithComplexSubstitutionStatement.js +2 -2
  62. package/src/unify/statementWithSttaemetnGivenEquivalences.js +4 -4
  63. package/src/utilities/brackets.js +2 -3
  64. package/src/utilities/node.js +30 -22
  65. package/src/utilities/string.js +39 -23
  66. package/src/utilities/tokens.js +17 -8
  67. package/src/utilities/unify.js +0 -14
  68. package/src/variable.js +20 -1
  69. package/lib/node/statement/bracketed.js +0 -16
  70. package/lib/node/statement/combinator/bracketed.js +0 -25
  71. package/lib/node/term/bracketed.js +0 -16
  72. package/lib/node/term/constructor/bracketed.js +0 -25
  73. package/lib/ocmbinator/bracketed.js +0 -157
  74. package/lib/substitution/statement.js +0 -163
  75. package/lib/unify/frameWithMetaType.js +0 -24
  76. package/lib/verifier/substitution.js +0 -161
  77. package/lib/verify/frameGivenMetaType.js +0 -37
  78. package/src/node/statement/bracketed.js +0 -9
  79. package/src/node/statement/combinator/bracketed.js +0 -10
  80. package/src/node/term/bracketed.js +0 -9
  81. package/src/node/term/constructor/bracketed.js +0 -10
  82. package/src/ocmbinator/bracketed.js +0 -26
  83. package/src/substitution/statement.js +0 -81
  84. package/src/unify/frameWithMetaType.js +0 -14
  85. package/src/verifier/substitution.js +0 -75
  86. package/src/verify/frameGivenMetaType.js +0 -31
@@ -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
 
@@ -83,7 +84,7 @@ export default class TermForVariableSubstitution extends Substitution {
83
84
  return unifiedWithEquivalence;
84
85
  }
85
86
 
86
- static fromSubstitution(substitution) {
87
+ static fromSubstitution(substitution, localContext) {
87
88
  let termForVariableSubstitution = null;
88
89
 
89
90
  const substitutionNode = substitution.getNode();
@@ -91,30 +92,61 @@ export default class TermForVariableSubstitution extends Substitution {
91
92
  let substitutionTermNode = substitutionTermNodeQuery(substitutionNode);
92
93
 
93
94
  if (substitutionTermNode !== null) {
94
- let termNode = substitutionTermNode; ///
95
-
96
- termNode = stripBracketsFromTerm(termNode); ///
95
+ let termNode;
97
96
 
98
97
  const substitutionVariableNode = substitutionsVariableNodeQuery(substitutionNode),
99
98
  variableNode = substitutionVariableNode; ///
100
99
 
101
- termForVariableSubstitution = new TermForVariableSubstitution(termNode, variableNode);
100
+ termNode = substitutionTermNode; ///
101
+
102
+ termNode = stripBracketsFromTerm(termNode); ///
103
+
104
+ const { Term, Variable } = shim,
105
+ term = Term.fromTermNode(termNode, localContext),
106
+ variable = Variable.fromVariableNode(variableNode, localContext),
107
+ string = stringFromTermAndVariable(term, variable);
108
+
109
+ termForVariableSubstitution = new TermForVariableSubstitution(string, termNode, variableNode);
102
110
  }
103
111
 
104
112
  return termForVariableSubstitution;
105
113
  }
106
114
 
107
- static fromTernAndVariable(term, variable, localContext) {
108
- let termNode = term.getNode();
115
+ static fromStatementNode(statementNode, localContext) {
116
+ let termForVariableSubstitution = null;
109
117
 
110
- termNode = stripBracketsFromTerm(termNode); ///
118
+ const substitutionNode = substitutionNodeQuery(statementNode);
119
+
120
+ if (substitutionNode !== null) {
121
+ let substitutionTermNode = substitutionTermNodeQuery(substitutionNode);
122
+
123
+ if (substitutionTermNode !== null) {
124
+ let termNode;
111
125
 
112
- const { Term } = shim;
126
+ const substitutionVariableNode = substitutionsVariableNodeQuery(substitutionNode),
127
+ variableNode = substitutionVariableNode; ///
113
128
 
114
- term = Term.fromTermNode(termNode, localContext); ///
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
+
143
+ static fromTernAndVariable(term, variable) {
144
+ let termNode = term.getNode();
145
+
146
+ termNode = stripBracketsFromTerm(termNode); ///
115
147
 
116
- const string = stringFromTermAndVariable(term, variable),
117
- variableNode = variable.getNode(),
148
+ const variableNode = variable.getNode(),
149
+ string = stringFromTermAndVariable(term, variable),
118
150
  termForVariableSubstitution = new TermForVariableSubstitution(string, termNode, variableNode);
119
151
 
120
152
  return termForVariableSubstitution;
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  import shim from "./shim";
4
- import LocalContext from "./context/local";
5
- import metaLevelUnifier from "./unifier/metaLevel";
6
4
  import SubproofAssertion from "./assertion/subproof";
7
5
  import UnqualifiedStatement from "./statement/unqualified";
8
6
 
@@ -111,26 +109,15 @@ export default class Supposition {
111
109
  unifyStatement(statement, substitutions, localContext) {
112
110
  let statementUnified;
113
111
 
114
- const supposition = this, ///
115
- statementString = statement.getString(),
116
- suppositionStatement = supposition.getStatement(),
117
- suppositionStatementString = suppositionStatement.getString();
118
-
119
- localContext.trace(`Unifying the '${statementString}' statement with the supposition's '${suppositionStatementString}' statement...`);
112
+ const statementString = statement.getString(),
113
+ suppositionString = this.getString();
120
114
 
121
- const statementNode = statement.getNode(),
122
- suppositionStatementNode = suppositionStatement.getNode(),
123
- nodeA = suppositionStatementNode, ///
124
- nodeB = statementNode, ///
125
- fileContextA = this.fileContext, ///
126
- localContextA = LocalContext.fromFileContext(fileContextA),
127
- localContextB = localContext, ///
128
- unified = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
115
+ localContext.trace(`Unifying the '${statementString}' statement with the '${suppositionString}' supposition...`);
129
116
 
130
- statementUnified = unified; ///
117
+ statementUnified = this.unqualifiedStatement.unifyStatement(statement, substitutions, this.fileContext, localContext);
131
118
 
132
119
  if (statementUnified) {
133
- localContext.debug(`...unified the '${statementString}' statement with the supposition's '${suppositionStatementString}' statement.`);
120
+ localContext.debug(`...unified the '${statementString}' statement with the '${suppositionString}' supposition.`);
134
121
  }
135
122
 
136
123
  return statementUnified;
@@ -11,15 +11,15 @@ const termNodeQuery = nodeQuery("/term!"),
11
11
 
12
12
  class IntrinsicLevelUnifier extends Unifier {
13
13
  unify(nodeA, nodeB, substitutions, localContextA, localContextB) {
14
- let unified;
14
+ let unifiedAtIntrinsicLevel;
15
15
 
16
16
  const nonTerminalNodeA = nodeA, ///
17
17
  nonTerminalNodeB = nodeB, ///
18
18
  nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB);
19
19
 
20
- unified = nonTerminalNodeUnified; ///
20
+ unifiedAtIntrinsicLevel = nonTerminalNodeUnified; ///
21
21
 
22
- return unified;
22
+ return unifiedAtIntrinsicLevel;
23
23
  }
24
24
 
25
25
  static maps = [
@@ -16,15 +16,15 @@ const termNodeQuery = nodeQuery("/term!"),
16
16
 
17
17
  class MetaLevelUnifier extends Unifier {
18
18
  unify(nodeA, nodeB, substitutions, localContextA, localContextB) {
19
- let unified;
19
+ let unifiedAtMetaLevel;
20
20
 
21
21
  const nonTerminalNodeA = nodeA, ///
22
22
  nonTerminalNodeB = nodeB, ///
23
23
  nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB);
24
24
 
25
- unified = nonTerminalNodeUnified; ///
25
+ unifiedAtMetaLevel = nonTerminalNodeUnified; ///
26
26
 
27
- return unified;
27
+ return unifiedAtMetaLevel;
28
28
  }
29
29
 
30
30
  static maps = [
@@ -39,30 +39,24 @@ class MetaLevelUnifier extends Unifier {
39
39
  if (matches) {
40
40
  statementUnified = true;
41
41
  } else {
42
- const { Statement } = shim,
43
- statementB = Statement.fromStatementNode(statementNodeB, localContextB),
44
- statementMetavariableNodeA = statementMetavariableNodeQuery(statementNodeA);
42
+ const statementNode = statementNodeA, ///
43
+ statementSubstitution = null, ///
44
+ statementMetavariableNode = statementMetavariableNodeQuery(statementNode);
45
45
 
46
- if (statementMetavariableNodeA !== null) {
47
- let statement;
48
-
49
- const statementA = Statement.fromStatementNode(statementNodeA, localContextA);
50
-
51
- statement = statementA; ///
52
-
53
- const substitution = statement.getSubstitution();
54
-
55
- statement = statementB; ///
56
-
57
- const localContext = localContextB, ///
58
- metavariableNode = statementMetavariableNodeA, ///
46
+ if (statementMetavariableNode !== null) {
47
+ const { Statement } = shim,
48
+ metavariableNode = statementMetavariableNode, ///
59
49
  metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
60
- metavariable = localContextA.findMetavariableByMetavariableName(metavariableName);
50
+ metavariable = localContextA.findMetavariableByMetavariableName(metavariableName),
51
+ substitution = statementSubstitution, ///
52
+ localContext = localContextB, ///
53
+ statementNode = statementNodeB, ///
54
+ statement = Statement.fromStatementNode(statementNode, localContext);
61
55
 
62
56
  if (substitution === null) {
63
57
  statementUnified = metavariable.unifyStatement(statement, substitutions, localContext);
64
58
  } else {
65
- const statementUnifiedGivenSubstitution = metavariableNode.unifyStatementGivenSubstitution(statement, substitution, substitutions, localContext);
59
+ const statementUnifiedGivenSubstitution = metavariable.unifyStatementGivenSubstitution(statement, substitution, substitutions, localContext);
66
60
 
67
61
  statementUnified = statementUnifiedGivenSubstitution; ///
68
62
  }
@@ -11,15 +11,15 @@ const typeNodeQuery = nodeQuery("/type!"),
11
11
 
12
12
  class MetavariableUnifier extends Unifier {
13
13
  unify(metavariableNodeA, metavariableNodeB, localContext) {
14
- let unified;
14
+ let metavariableUnified;
15
15
 
16
16
  const nonTerminalNodeA = metavariableNodeA, ///
17
17
  nonTerminalNodeB = metavariableNodeB, ///
18
18
  nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext);
19
19
 
20
- unified = nonTerminalNodeUnified; ///
20
+ metavariableUnified = nonTerminalNodeUnified; ///
21
21
 
22
- return unified;
22
+ return metavariableUnified;
23
23
  }
24
24
 
25
25
  static maps = [
@@ -15,9 +15,9 @@ export default function unifyComplexSubstitutionStatementWithSimpleSubstitutionS
15
15
 
16
16
  localContextA = localContextB; ///
17
17
 
18
- const unified = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
18
+ const unifiedAtMetaLevel = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
19
19
 
20
- simpleSubstitutionStatementUnifiedWithComplexSubstitutionStatement = unified; ///
20
+ simpleSubstitutionStatementUnifiedWithComplexSubstitutionStatement = unifiedAtMetaLevel; ///
21
21
 
22
22
  if (simpleSubstitutionStatementUnifiedWithComplexSubstitutionStatement) {
23
23
  localContextB.trace(`...unified the simple substitution's '${simpleSubstitutionStatementString}' statement with the complex substitution's '${complexSubstitutionStatementString}' statement.`, simpleSubstitutionStatementNode);
@@ -15,9 +15,9 @@ export default function unifyStatementWithStatementGivenEquivalences(statementNo
15
15
  const substitutions = Substitutions.fromNothing(),
16
16
  nodeA = statementNodeA, ///
17
17
  nodeB = statementNodeB, ///
18
- unified = intrinsicLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
18
+ unifiedAtIntrinsicLevel = intrinsicLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
19
19
 
20
- if (unified) {
20
+ if (unifiedAtIntrinsicLevel) {
21
21
  const substitutionsUnifiedWithEquivalences = substitutions.unifyWithEquivalences(equivalences, localContextA, localContextB);
22
22
 
23
23
  statementUnifiedWithStatementGivenEquivalences = substitutionsUnifiedWithEquivalences; ///
@@ -34,9 +34,9 @@ export default function unifyStatementWithStatementGivenEquivalences(statementNo
34
34
  const substitutions = Substitutions.fromNothing(),
35
35
  nodeA = statementNodeB, ///
36
36
  nodeB = statementNodeA, ///
37
- unified = intrinsicLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
37
+ unifiedAtIntrinsicLevel = intrinsicLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
38
38
 
39
- if (unified) {
39
+ if (unifiedAtIntrinsicLevel) {
40
40
  const substitutionsUnifiedWithEquivalences = substitutions.unifyWithEquivalences(equivalences, localContextA, localContextB);
41
41
 
42
42
  statementUnifiedWithStatementGivenEquivalences = substitutionsUnifiedWithEquivalences; ///
@@ -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
 
@@ -21,17 +21,3 @@ export function metavariableFromFrameNode(frameNode, localContext) {
21
21
  return metavariable;
22
22
  }
23
23
 
24
- export function metavariableFromStatementNode(statementNode, localContext) {
25
- let metavariable = null;
26
-
27
- const statementMetavariableNode = statementMetavariableNodeQuery(statementNode)
28
-
29
- if (statementMetavariableNode !== null) {
30
- const metavariableNode = statementMetavariableNode, ///
31
- metavariableName = metavariableNameFromMetavariableNode(metavariableNode);
32
-
33
- metavariable = localContext.findMetavariableByMetavariableName(metavariableName);
34
- }
35
-
36
- return metavariable;
37
- }
package/src/variable.js CHANGED
@@ -165,7 +165,7 @@ class Variable {
165
165
  if (termVariable === variable) {
166
166
  termUnified = true;
167
167
  } else {
168
- const termForVariableSubstitution = TermForVariableSubstitution.fromTernAndVariable(term, variable, localContext),
168
+ const termForVariableSubstitution = TermForVariableSubstitution.fromTernAndVariable(term, variable),
169
169
  substitution = termForVariableSubstitution; ///
170
170
 
171
171
  substitutions.addSubstitution(substitution, localContext);
@@ -209,6 +209,25 @@ class Variable {
209
209
  return variable;
210
210
  }
211
211
 
212
+ static fromTermNode(termNode, localContext) {
213
+ let variable = null;
214
+
215
+ const termVariableNode = termVariableNodeQuery(termNode);
216
+
217
+ if (termVariableNode !== null) {
218
+ const variableNode = termVariableNode, ///
219
+ variableName = variableNameFromVariableNode(variableNode),
220
+ node = variableNode, ///
221
+ string = localContext.nodeAsString(node),
222
+ name = variableName, ///
223
+ type = null;
224
+
225
+ variable = new Variable(localContext, string, node, name, type);
226
+ }
227
+
228
+ return variable;
229
+ }
230
+
212
231
  static fromVariableNode(variableNode, localContext) {
213
232
  let variable = null;
214
233
 
@@ -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==