occam-parsers 23.0.84 → 23.0.86

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 (78) hide show
  1. package/example.js +603 -568
  2. package/lib/bnf/parser.js +59 -61
  3. package/lib/node/nonTerminal.js +38 -1
  4. package/lib/rule/{callAheadModifier.js → bnf/callAheadModifier.js} +14 -14
  5. package/lib/rule/{choiceOfParts.js → bnf/choiceOfParts.js} +14 -14
  6. package/lib/rule/{definition.js → bnf/definition.js} +14 -14
  7. package/lib/rule/{definitions.js → bnf/definitions.js} +14 -14
  8. package/lib/rule/{document.js → bnf/document.js} +14 -14
  9. package/lib/rule/{endOfLine.js → bnf/endOfLine.js} +14 -14
  10. package/lib/rule/{epsilon.js → bnf/epsilon.js} +14 -14
  11. package/lib/rule/{error.js → bnf/error.js} +14 -14
  12. package/lib/rule/{name.js → bnf/name.js} +14 -14
  13. package/lib/rule/{noWhitespacePart.js → bnf/noWhitespacePart.js} +14 -14
  14. package/lib/rule/{nonTerminalPart.js → bnf/nonTerminalPart.js} +15 -15
  15. package/lib/rule/{oneOrMoreQuantifier.js → bnf/oneOrMoreQuantifier.js} +14 -14
  16. package/lib/rule/{opacityModifier.js → bnf/opacityModifier.js} +14 -14
  17. package/lib/rule/{optionalQuantifier.js → bnf/optionalQuantifier.js} +14 -14
  18. package/lib/rule/{part.js → bnf/part.js} +15 -15
  19. package/lib/rule/{partChoice.js → bnf/partChoice.js} +14 -14
  20. package/lib/rule/{precedence.js → bnf/precedence.js} +14 -14
  21. package/lib/rule/{quantifier.js → bnf/quantifier.js} +14 -14
  22. package/lib/rule/{regularExpression.js → bnf/regularExpression.js} +14 -14
  23. package/lib/rule/{rule.js → bnf/rule.js} +14 -14
  24. package/lib/rule/{ruleName.js → bnf/ruleName.js} +14 -14
  25. package/lib/rule/{sequenceOfParts.js → bnf/sequenceOfParts.js} +14 -14
  26. package/lib/rule/{significantTokenType.js → bnf/significantTokenType.js} +14 -14
  27. package/lib/rule/{startOfContentPart.js → bnf/startOfContentPart.js} +14 -14
  28. package/lib/rule/bnf/terminalPart.js +120 -0
  29. package/lib/rule/{terminalSymbol.js → bnf/terminalSymbol.js} +14 -14
  30. package/lib/rule/{wildcard.js → bnf/wildcard.js} +14 -14
  31. package/lib/rule/{zeroOrMoreQuantifier.js → bnf/zeroOrMoreQuantifier.js} +14 -14
  32. package/package.json +1 -1
  33. package/src/bnf/parser.js +87 -89
  34. package/src/node/nonTerminal.js +17 -0
  35. package/src/rule/bnf/callAheadModifier.js +22 -0
  36. package/src/rule/bnf/choiceOfParts.js +22 -0
  37. package/src/rule/bnf/definition.js +22 -0
  38. package/src/rule/bnf/definitions.js +22 -0
  39. package/src/rule/bnf/document.js +22 -0
  40. package/src/rule/{endOfLine.js → bnf/endOfLine.js} +6 -6
  41. package/src/rule/{epsilon.js → bnf/epsilon.js} +6 -6
  42. package/src/rule/bnf/error.js +26 -0
  43. package/src/rule/bnf/name.js +22 -0
  44. package/src/rule/bnf/noWhitespacePart.js +22 -0
  45. package/src/rule/{nonTerminalPart.js → bnf/nonTerminalPart.js} +7 -7
  46. package/src/rule/{oneOrMoreQuantifier.js → bnf/oneOrMoreQuantifier.js} +6 -6
  47. package/src/rule/bnf/opacityModifier.js +22 -0
  48. package/src/rule/{optionalQuantifier.js → bnf/optionalQuantifier.js} +6 -6
  49. package/src/rule/{part.js → bnf/part.js} +7 -7
  50. package/src/rule/bnf/partChoice.js +22 -0
  51. package/src/rule/bnf/precedence.js +22 -0
  52. package/src/rule/{quantifier.js → bnf/quantifier.js} +6 -6
  53. package/src/rule/{regularExpression.js → bnf/regularExpression.js} +6 -6
  54. package/src/rule/bnf/rule.js +22 -0
  55. package/src/rule/bnf/ruleName.js +22 -0
  56. package/src/rule/bnf/sequenceOfParts.js +22 -0
  57. package/src/rule/{significantTokenType.js → bnf/significantTokenType.js} +6 -6
  58. package/src/rule/bnf/startOfContentPart.js +22 -0
  59. package/src/rule/{terminalPart.js → bnf/terminalPart.js} +7 -7
  60. package/src/rule/{terminalSymbol.js → bnf/terminalSymbol.js} +7 -7
  61. package/src/rule/{wildcard.js → bnf/wildcard.js} +6 -6
  62. package/src/rule/{zeroOrMoreQuantifier.js → bnf/zeroOrMoreQuantifier.js} +6 -6
  63. package/lib/rule/terminalPart.js +0 -120
  64. package/src/rule/callAheadModifier.js +0 -22
  65. package/src/rule/choiceOfParts.js +0 -22
  66. package/src/rule/definition.js +0 -22
  67. package/src/rule/definitions.js +0 -22
  68. package/src/rule/document.js +0 -22
  69. package/src/rule/error.js +0 -26
  70. package/src/rule/name.js +0 -22
  71. package/src/rule/noWhitespacePart.js +0 -22
  72. package/src/rule/opacityModifier.js +0 -22
  73. package/src/rule/partChoice.js +0 -22
  74. package/src/rule/precedence.js +0 -22
  75. package/src/rule/rule.js +0 -22
  76. package/src/rule/ruleName.js +0 -22
  77. package/src/rule/sequenceOfParts.js +0 -22
  78. package/src/rule/startOfContentPart.js +0 -22
package/src/bnf/parser.js CHANGED
@@ -2,35 +2,35 @@
2
2
 
3
3
  import bnf from "./bnf";
4
4
  import Rule from "../rule";
5
- import NameRule from "../rule/name";
6
- import PartRule from "../rule/part";
7
- import RuleRule from "../rule/rule";
8
- import ErrorRule from "../rule/error";
9
- import EpsilonRule from "../rule/epsilon";
10
- import DocumentRule from "../rule/document";
11
- import RuleNameRule from "../rule/ruleName";
12
- import WildcardRule from "../rule/wildcard";
13
5
  import parserMixins from "../mixins/parser";
14
- import EndOfLineRule from "../rule/endOfLine";
15
- import PartChoiceRule from "../rule/partChoice";
16
- import QuantifierRule from "../rule/quantifier";
17
- import DefinitionRule from "../rule/definition";
18
- import PrecedentsRule from "../rule/precedence";
19
- import DefinitionsRule from "../rule/definitions";
20
- import TerminalPartRule from "../rule/terminalPart";
21
- import ChoiceOfPartsRule from "../rule/choiceOfParts";
22
- import TerminalSymbolRule from "../rule/terminalSymbol";
23
- import NonTerminalPartRule from "../rule/nonTerminalPart";
24
- import SequenceOfPartsRule from "../rule/sequenceOfParts";
25
- import OpacityModifierRule from "../rule/opacityModifier";
26
- import NoWhitespacePartRule from "../rule/noWhitespacePart";
27
- import CallAheadModifierRule from "../rule/callAheadModifier";
28
- import RegularExpressionRule from "../rule/regularExpression";
29
- import OptionalQuantifierRule from "../rule/optionalQuantifier";
30
- import StartOfContentPartRule from "../rule/startOfContentPart";
31
- import OneOrMoreQuantifierRule from "../rule/oneOrMoreQuantifier";
32
- import ZeroOrMoreQuantifierRule from "../rule/zeroOrMoreQuantifier";
33
- import SignificantTokenTypeRule from "../rule/significantTokenType";
6
+ import NameBNFRule from "../rule/bnf/name";
7
+ import PartBNFRule from "../rule/bnf/part";
8
+ import RuleBNFRule from "../rule/bnf/rule";
9
+ import ErrorBNFRule from "../rule/bnf/error";
10
+ import EpsilonBNFRule from "../rule/bnf/epsilon";
11
+ import DocumentBNFRule from "../rule/bnf/document";
12
+ import RuleNameBNFRule from "../rule/bnf/ruleName";
13
+ import WildcardBNFRule from "../rule/bnf/wildcard";
14
+ import EndOfLineBNFRule from "../rule/bnf/endOfLine";
15
+ import PartChoiceBNFRule from "../rule/bnf/partChoice";
16
+ import QuantifierBNFRule from "../rule/bnf/quantifier";
17
+ import DefinitionBNFRule from "../rule/bnf/definition";
18
+ import PrecedentsBNFRule from "../rule/bnf/precedence";
19
+ import DefinitionsBNFRule from "../rule/bnf/definitions";
20
+ import TerminalPartBNFRule from "../rule/bnf/terminalPart";
21
+ import ChoiceOfPartsBNFRule from "../rule/bnf/choiceOfParts";
22
+ import TerminalSymbolBNFRule from "../rule/bnf/terminalSymbol";
23
+ import NonTerminalPartBNFRule from "../rule/bnf/nonTerminalPart";
24
+ import SequenceOfPartsBNFRule from "../rule/bnf/sequenceOfParts";
25
+ import OpacityModifierBNFRule from "../rule/bnf/opacityModifier";
26
+ import NoWhitespacePartBNFRule from "../rule/bnf/noWhitespacePart";
27
+ import CallAheadModifierBNFRule from "../rule/bnf/callAheadModifier";
28
+ import RegularExpressionBNFRule from "../rule/bnf/regularExpression";
29
+ import OptionalQuantifierBNFRule from "../rule/bnf/optionalQuantifier";
30
+ import StartOfContentPartBNFRule from "../rule/bnf/startOfContentPart";
31
+ import OneOrMoreQuantifierBNFRule from "../rule/bnf/oneOrMoreQuantifier";
32
+ import ZeroOrMoreQuantifierBNFRule from "../rule/bnf/zeroOrMoreQuantifier";
33
+ import SignificantTokenTypeBNFRule from "../rule/bnf/significantTokenType";
34
34
 
35
35
  import { ruleMapFromRules, startRuleFromRules } from "../utilities/rules";
36
36
 
@@ -71,67 +71,65 @@ export default class BNFParser {
71
71
  static bnf = bnf;
72
72
 
73
73
  static fromNothing() {
74
- const nameRule = NameRule.fromNothing(),
75
- partRule = PartRule.fromNothing(),
76
- ruleRule = RuleRule.fromNothing(),
77
- errorRule = ErrorRule.fromNothing(),
78
- epsilonRule = EpsilonRule.fromNothing(),
79
- documentRule = DocumentRule.fromNothing(),
80
- ruleNameRule = RuleNameRule.fromNothing(),
81
- wildcardRule = WildcardRule.fromNothing(),
82
- endOfLineRule = EndOfLineRule.fromNothing(),
83
- partChoiceRule = PartChoiceRule.fromNothing(),
84
- quantifierRule = QuantifierRule.fromNothing(),
85
- definitionRule = DefinitionRule.fromNothing(),
86
- precedentsRule = PrecedentsRule.fromNothing(),
87
- definitionsRule = DefinitionsRule.fromNothing(),
88
- terminalPartRule = TerminalPartRule.fromNothing(),
89
- choiceOfPartsRule = ChoiceOfPartsRule.fromNothing(),
90
- terminalSymbolRule = TerminalSymbolRule.fromNothing(),
91
- nonTerminalPartRule = NonTerminalPartRule.fromNothing(),
92
- sequenceOfPartsRule = SequenceOfPartsRule.fromNothing(),
93
- opacityModifierRule = OpacityModifierRule.fromNothing(),
94
- noWhitespacePartRule = NoWhitespacePartRule.fromNothing(),
95
- regularExpressionRule = RegularExpressionRule.fromNothing(),
96
- callAheadModifierRule = CallAheadModifierRule.fromNothing(),
97
- optionalQuantifierRule = OptionalQuantifierRule.fromNothing(),
98
- startOfContentPartRule = StartOfContentPartRule.fromNothing(),
99
- oneOrMoreQuantifierRule = OneOrMoreQuantifierRule.fromNothing(),
100
- zeroOrMoreQuantifierRule = ZeroOrMoreQuantifierRule.fromNothing(),
101
- significantTokenTypeRule = SignificantTokenTypeRule.fromNothing();
102
-
103
- let rules = [
104
- documentRule,
105
- ruleRule,
106
- nameRule,
107
- definitionsRule,
108
- definitionRule,
109
- partRule,
110
- nonTerminalPartRule,
111
- terminalPartRule,
112
- startOfContentPartRule,
113
- noWhitespacePartRule,
114
- sequenceOfPartsRule,
115
- choiceOfPartsRule,
116
- partChoiceRule,
117
- ruleNameRule,
118
- significantTokenTypeRule,
119
- regularExpressionRule,
120
- terminalSymbolRule,
121
- precedentsRule,
122
- endOfLineRule,
123
- wildcardRule,
124
- epsilonRule,
125
- quantifierRule,
126
- opacityModifierRule,
127
- callAheadModifierRule,
128
- optionalQuantifierRule,
129
- oneOrMoreQuantifierRule,
130
- zeroOrMoreQuantifierRule,
131
- errorRule
132
- ];
133
-
134
- const startRule = startRuleFromRules(rules),
74
+ const nameBNFRule = NameBNFRule.fromNothing(),
75
+ partBNFRule = PartBNFRule.fromNothing(),
76
+ ruleBNFRule = RuleBNFRule.fromNothing(),
77
+ errorBNFRule = ErrorBNFRule.fromNothing(),
78
+ epsilonBNFRule = EpsilonBNFRule.fromNothing(),
79
+ documentBNFRule = DocumentBNFRule.fromNothing(),
80
+ ruleNameBNFRule = RuleNameBNFRule.fromNothing(),
81
+ wildcardBNFRule = WildcardBNFRule.fromNothing(),
82
+ endOfLineBNFRule = EndOfLineBNFRule.fromNothing(),
83
+ partChoiceBNFRule = PartChoiceBNFRule.fromNothing(),
84
+ quantifierBNFRule = QuantifierBNFRule.fromNothing(),
85
+ definitionBNFRule = DefinitionBNFRule.fromNothing(),
86
+ precedentsBNFRule = PrecedentsBNFRule.fromNothing(),
87
+ definitionsBNFRule = DefinitionsBNFRule.fromNothing(),
88
+ terminalPartBNFRule = TerminalPartBNFRule.fromNothing(),
89
+ choiceOfPartsBNFRule = ChoiceOfPartsBNFRule.fromNothing(),
90
+ terminalSymbolBNFRule = TerminalSymbolBNFRule.fromNothing(),
91
+ nonTerminalPartBNFRule = NonTerminalPartBNFRule.fromNothing(),
92
+ sequenceOfPartsBNFRule = SequenceOfPartsBNFRule.fromNothing(),
93
+ opacityModifierBNFRule = OpacityModifierBNFRule.fromNothing(),
94
+ noWhitespacePartBNFRule = NoWhitespacePartBNFRule.fromNothing(),
95
+ regularExpressionBNFRule = RegularExpressionBNFRule.fromNothing(),
96
+ callAheadModifierBNFRule = CallAheadModifierBNFRule.fromNothing(),
97
+ optionalQuantifierBNFRule = OptionalQuantifierBNFRule.fromNothing(),
98
+ startOfContentPartBNFRule = StartOfContentPartBNFRule.fromNothing(),
99
+ oneOrMoreQuantifierBNFRule = OneOrMoreQuantifierBNFRule.fromNothing(),
100
+ zeroOrMoreQuantifierBNFRule = ZeroOrMoreQuantifierBNFRule.fromNothing(),
101
+ significantTokenTypeBNFRule = SignificantTokenTypeBNFRule.fromNothing(),
102
+ rules = [
103
+ documentBNFRule,
104
+ ruleBNFRule,
105
+ nameBNFRule,
106
+ definitionsBNFRule,
107
+ definitionBNFRule,
108
+ partBNFRule,
109
+ nonTerminalPartBNFRule,
110
+ terminalPartBNFRule,
111
+ startOfContentPartBNFRule,
112
+ noWhitespacePartBNFRule,
113
+ sequenceOfPartsBNFRule,
114
+ choiceOfPartsBNFRule,
115
+ partChoiceBNFRule,
116
+ ruleNameBNFRule,
117
+ significantTokenTypeBNFRule,
118
+ regularExpressionBNFRule,
119
+ terminalSymbolBNFRule,
120
+ precedentsBNFRule,
121
+ endOfLineBNFRule,
122
+ wildcardBNFRule,
123
+ epsilonBNFRule,
124
+ quantifierBNFRule,
125
+ opacityModifierBNFRule,
126
+ callAheadModifierBNFRule,
127
+ optionalQuantifierBNFRule,
128
+ oneOrMoreQuantifierBNFRule,
129
+ zeroOrMoreQuantifierBNFRule,
130
+ errorBNFRule
131
+ ],
132
+ startRule = startRuleFromRules(rules),
135
133
  ruleMap = ruleMapFromRules(rules),
136
134
  bnfParser = new BNFParser(startRule, ruleMap);
137
135
 
@@ -91,6 +91,13 @@ export default class NonTerminalNode {
91
91
  return nonTerminalNode;
92
92
  }
93
93
 
94
+ isSingular() {
95
+ const childNodesLength = this.childNodes.length,
96
+ singular = (childNodesLength === 1);
97
+
98
+ return singular;
99
+ }
100
+
94
101
  isLowerPrecedence(ruleName, precedence) {
95
102
  let lowerPrecedence;
96
103
 
@@ -213,6 +220,16 @@ export default class NonTerminalNode {
213
220
  return empty;
214
221
  }
215
222
 
223
+ mapChildNode(callback) { return this.childNodes.map(callback); }
224
+
225
+ someChildNode(callback) { return this.childNodes.some(callback); }
226
+
227
+ everyChildNode(callback) { return this.childNodes.every(callback); }
228
+
229
+ reduceChildNode(callback, initialValue) { return this.childNodes.reduce(callback, initialValue); }
230
+
231
+ forEachChildNode(callback) { this.childNodes.forEach(callback); }
232
+
216
233
  match(node, depth = Infinity, exactly = false) {
217
234
  let matches = false;
218
235
 
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import Rule from "../../rule";
4
+ import CallAheadModifierBNFNode from "../../node/bnf/callAheadModifier";
5
+ import CallAheadModifierRuleDefinition from "../../definition/callAheadModifierRule";
6
+
7
+ import { callAheadModifierRuleName } from "../../ruleNames";
8
+
9
+ export default class CallAheadModifierBNFRule extends Rule {
10
+ static fromNothing() {
11
+ const name = callAheadModifierRuleName, ///
12
+ callAheadModifierRuleDefinition = CallAheadModifierRuleDefinition.fromNothing(),
13
+ opacity = null,
14
+ definitions = [
15
+ callAheadModifierRuleDefinition
16
+ ],
17
+ NonTerminalNode = CallAheadModifierBNFNode, ///
18
+ callAheadModifierRule = new CallAheadModifierBNFRule(name, opacity, definitions, NonTerminalNode);
19
+
20
+ return callAheadModifierRule;
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import Rule from "../../rule";
4
+ import ChoiceOfPartsBNFNode from "../../node/bnf/choiceOfParts";
5
+ import ChoiceOfPartsDefinition from "../../definition/choiceOfParts";
6
+
7
+ import { choiceOfPartsRuleName } from "../../ruleNames";
8
+
9
+ export default class ChoiceOfPartsBNFRule extends Rule {
10
+ static fromNothing() {
11
+ const name = choiceOfPartsRuleName, ///
12
+ choiceOfPartsDefinition = ChoiceOfPartsDefinition.fromNothing(),
13
+ opacity = null,
14
+ definitions = [
15
+ choiceOfPartsDefinition
16
+ ],
17
+ NonTerminalNode = ChoiceOfPartsBNFNode, ///
18
+ choiceOfPartsRule = new ChoiceOfPartsBNFRule(name, opacity, definitions, NonTerminalNode);
19
+
20
+ return choiceOfPartsRule;
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import Rule from "../../rule";
4
+ import DefinitionBNFNode from "../../node/bnf/definition";
5
+ import DefinitionDefinition from "../../definition/definition";
6
+
7
+ import { definitionRuleName } from "../../ruleNames";
8
+
9
+ export default class DefinitionBNFRule extends Rule {
10
+ static fromNothing() {
11
+ const name = definitionRuleName, ///
12
+ definitionDefinition = DefinitionDefinition.fromNothing(),
13
+ opacity = null,
14
+ definitions = [
15
+ definitionDefinition
16
+ ],
17
+ NonTerminalNode = DefinitionBNFNode, ///
18
+ definitionRule = new DefinitionBNFRule(name, opacity, definitions, NonTerminalNode);
19
+
20
+ return definitionRule;
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import Rule from "../../rule";
4
+ import DefinitionsBNFNode from "../../node/bnf/definitions";
5
+ import DefinitionsDefinition from "../../definition/definitions";
6
+
7
+ import { definitionsRuleName } from "../../ruleNames";
8
+
9
+ export default class DefinitionsBNFRule extends Rule {
10
+ static fromNothing() {
11
+ const definitionsDefinition = DefinitionsDefinition.fromNothing(),
12
+ name = definitionsRuleName, ///
13
+ opacity = null,
14
+ definitions = [
15
+ definitionsDefinition
16
+ ],
17
+ NonTerminalNode = DefinitionsBNFNode, ///
18
+ definitionsRule = new DefinitionsBNFRule(name, opacity, definitions, NonTerminalNode);
19
+
20
+ return definitionsRule;
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import Rule from "../../rule";
4
+ import DocumentBNFNode from "../../node/bnf/document";
5
+ import DocumentDefinition from "../../definition/document";
6
+
7
+ import { documentRuleName } from "../../ruleNames";
8
+
9
+ export default class DocumentBNFRule extends Rule {
10
+ static fromNothing() {
11
+ const documentDefinition = DocumentDefinition.fromNothing(),
12
+ name = documentRuleName, ///
13
+ opacity = null,
14
+ definitions = [
15
+ documentDefinition
16
+ ],
17
+ NonTerminalNode = DocumentBNFNode, ///
18
+ documentRule = new DocumentBNFRule(name, opacity, definitions, NonTerminalNode);
19
+
20
+ return documentRule;
21
+ }
22
+ }
@@ -2,15 +2,15 @@
2
2
 
3
3
  import { specialSymbols } from "occam-lexers";
4
4
 
5
- import Rule from "../rule";
6
- import EndOfLineBNFNode from "../node/bnf/endOfLine";
7
- import TerminalSymbolDefinition from "../definition/terminalSymbol";
5
+ import Rule from "../../rule";
6
+ import EndOfLineBNFNode from "../../node/bnf/endOfLine";
7
+ import TerminalSymbolDefinition from "../../definition/terminalSymbol";
8
8
 
9
- import { endOfLineRuleName } from "../ruleNames";
9
+ import { endOfLineRuleName } from "../../ruleNames";
10
10
 
11
11
  const { endOfLine } = specialSymbols;
12
12
 
13
- export default class EndOfLineRule extends Rule {
13
+ export default class EndOfLineBNFRule extends Rule {
14
14
  static fromNothing() {
15
15
  const content = endOfLine,
16
16
  endOfLineTerminalSymbolDefinition = TerminalSymbolDefinition.fromContent(content),
@@ -20,7 +20,7 @@ export default class EndOfLineRule extends Rule {
20
20
  endOfLineTerminalSymbolDefinition
21
21
  ],
22
22
  NonTerminalNode = EndOfLineBNFNode, ///
23
- endOfLineRule = new EndOfLineRule(name, opacity, definitions, NonTerminalNode);
23
+ endOfLineRule = new EndOfLineBNFRule(name, opacity, definitions, NonTerminalNode);
24
24
 
25
25
  return endOfLineRule;
26
26
  }
@@ -2,15 +2,15 @@
2
2
 
3
3
  import { specialSymbols } from "occam-lexers";
4
4
 
5
- import Rule from "../rule";
6
- import EpsilonBNFNode from "../node/bnf/epsilon";
7
- import TerminalSymbolDefinition from "../definition/terminalSymbol";
5
+ import Rule from "../../rule";
6
+ import EpsilonBNFNode from "../../node/bnf/epsilon";
7
+ import TerminalSymbolDefinition from "../../definition/terminalSymbol";
8
8
 
9
- import { epsilonRuleName } from "../ruleNames";
9
+ import { epsilonRuleName } from "../../ruleNames";
10
10
 
11
11
  const { epsilon } = specialSymbols;
12
12
 
13
- export default class EpsilonRule extends Rule {
13
+ export default class EpsilonBNFRule extends Rule {
14
14
  static fromNothing() {
15
15
  const content = epsilon, ///
16
16
  epsilonTerminalSymbolDefinition = TerminalSymbolDefinition.fromContent(content),
@@ -20,7 +20,7 @@ export default class EpsilonRule extends Rule {
20
20
  epsilonTerminalSymbolDefinition
21
21
  ],
22
22
  NonTerminalNode = EpsilonBNFNode, ///
23
- epsilonRule = new EpsilonRule(name, opacity, definitions, NonTerminalNode);
23
+ epsilonRule = new EpsilonBNFRule(name, opacity, definitions, NonTerminalNode);
24
24
 
25
25
  return epsilonRule;
26
26
  }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ import { specialSymbols } from "occam-lexers";
4
+
5
+ import Rule from "../../rule";
6
+ import ErrorBNFNode from "../../node/bnf/error";
7
+ import ErrorDefinition from "../../definition/error";
8
+
9
+ import { errorRuleName } from "../../ruleNames";
10
+
11
+ const { opaque } = specialSymbols;
12
+
13
+ export default class ErrorBNFRule extends Rule {
14
+ static fromNothing() {
15
+ const errorDefinition = ErrorDefinition.fromNothing(),
16
+ name = errorRuleName, ///
17
+ opacity = opaque, ///
18
+ definitions = [
19
+ errorDefinition
20
+ ],
21
+ NonTerminalNode = ErrorBNFNode, ///
22
+ errorRule = new ErrorBNFRule(name, opacity, definitions, NonTerminalNode);
23
+
24
+ return errorRule;
25
+ }
26
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import Rule from "../../rule";
4
+ import NameBNFNode from "../../node/bnf/name";
5
+ import NameDefinition from "../../definition/name";
6
+
7
+ import { nameRuleName } from "../../ruleNames";
8
+
9
+ export default class NameBNFRule extends Rule {
10
+ static fromNothing() {
11
+ const nameDefinition = NameDefinition.fromNothing(),
12
+ name = nameRuleName, ///
13
+ opacity = null,
14
+ definitions = [
15
+ nameDefinition
16
+ ],
17
+ NonTerminalNode = NameBNFNode, ///
18
+ nameRule = new NameBNFRule(name, opacity, definitions, NonTerminalNode);
19
+
20
+ return nameRule;
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import Rule from "../../rule";
4
+ import NoWhitespacePartBNFNode from "../../node/bnf/noWhitespacePart";
5
+ import NoWhitespacePartDefinition from "../../definition/noWhitespacePart";
6
+
7
+ import { noWhitespacePartRuleName } from "../../ruleNames";
8
+
9
+ export default class NoWhitespacePartBNFRule extends Rule {
10
+ static fromNothing() {
11
+ const noWhitespacePartDefinition = NoWhitespacePartDefinition.fromNothing(),
12
+ name = noWhitespacePartRuleName, ///
13
+ opacity = null,
14
+ definitions = [
15
+ noWhitespacePartDefinition
16
+ ],
17
+ NonTerminalNode = NoWhitespacePartBNFNode, ///
18
+ noWhitespacePartRule = new NoWhitespacePartBNFRule(name, opacity, definitions, NonTerminalNode);
19
+
20
+ return noWhitespacePartRule;
21
+ }
22
+ }
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import Rule from "../rule";
4
- import RuleNameDefinition from "../definition/ruleName";
5
- import NonTerminalPartBNFNode from "../node/bnf/part/nonTerminal";
6
- import RuleNameNonTerminalPartRuleDefinition from "../definition/partRule/nonTerminal/ruleName";
3
+ import Rule from "../../rule";
4
+ import RuleNameDefinition from "../../definition/ruleName";
5
+ import NonTerminalPartBNFNode from "../../node/bnf/part/nonTerminal";
6
+ import RuleNameNonTerminalPartRuleDefinition from "../../definition/partRule/nonTerminal/ruleName";
7
7
 
8
- import { nonTerminalPartRuleName, choiceOfPartsRuleName, sequenceOfPartsRuleName } from "../ruleNames";
8
+ import { nonTerminalPartRuleName, choiceOfPartsRuleName, sequenceOfPartsRuleName } from "../../ruleNames";
9
9
 
10
- export default class NonTerminalPartRule extends Rule {
10
+ export default class NonTerminalPartBNFRule extends Rule {
11
11
  static fromNothing() {
12
12
  const name = nonTerminalPartRuleName, ///
13
13
  choiceOfPartsRuleNameDefinition = RuleNameDefinition.fromRuleName(choiceOfPartsRuleName),
@@ -20,7 +20,7 @@ export default class NonTerminalPartRule extends Rule {
20
20
  ruleNameNonTerminalPartRuleDefinition
21
21
  ],
22
22
  NonTerminalNode = NonTerminalPartBNFNode, ///
23
- nonTerminalPartRule = new NonTerminalPartRule(name, opacity, definitions, NonTerminalNode);
23
+ nonTerminalPartRule = new NonTerminalPartBNFRule(name, opacity, definitions, NonTerminalNode);
24
24
 
25
25
  return nonTerminalPartRule;
26
26
  }
@@ -2,15 +2,15 @@
2
2
 
3
3
  import { specialSymbols } from "occam-lexers";
4
4
 
5
- import Rule from "../rule";
6
- import QuantifierBNFNode from "../node/bnf/quantifier";
7
- import QuantifierRuleDefinition from "../definition/quantifierRule";
5
+ import Rule from "../../rule";
6
+ import QuantifierBNFNode from "../../node/bnf/quantifier";
7
+ import QuantifierRuleDefinition from "../../definition/quantifierRule";
8
8
 
9
- import { oneOrMoreQuantifierRuleName } from "../ruleNames";
9
+ import { oneOrMoreQuantifierRuleName } from "../../ruleNames";
10
10
 
11
11
  const { plus } = specialSymbols;
12
12
 
13
- export default class OneOrMoreQuantifierRule extends Rule {
13
+ export default class OneOrMoreQuantifierBNFRule extends Rule {
14
14
  static fromNothing() {
15
15
  const name = oneOrMoreQuantifierRuleName, ///
16
16
  specialSymbol = plus, ///
@@ -20,7 +20,7 @@ export default class OneOrMoreQuantifierRule extends Rule {
20
20
  oneOrMoreQuantifierRuleDefinition
21
21
  ],
22
22
  NonTerminalNode = QuantifierBNFNode, ///
23
- oneOrMoreQuantifierRule = new OneOrMoreQuantifierRule(name, opacity, definitions, NonTerminalNode);
23
+ oneOrMoreQuantifierRule = new OneOrMoreQuantifierBNFRule(name, opacity, definitions, NonTerminalNode);
24
24
 
25
25
  return oneOrMoreQuantifierRule;
26
26
  }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import Rule from "../../rule";
4
+ import OpacityModifierBNFNode from "../../node/bnf/opacityModifier";
5
+ import OpacityModifierRuleDefinition from "../../definition/opacityModifierRule";
6
+
7
+ import { opacityModifierRuleName } from "../../ruleNames";
8
+
9
+ export default class OpacityModifierBNFRule extends Rule {
10
+ static fromNothing() {
11
+ const name = opacityModifierRuleName, ///
12
+ opacityModifierRuleDefinition = OpacityModifierRuleDefinition.fromNothing(),
13
+ opacity = null,
14
+ definitions = [
15
+ opacityModifierRuleDefinition
16
+ ],
17
+ NonTerminalNode = OpacityModifierBNFNode, ///
18
+ opacityModifierRule = new OpacityModifierBNFRule(name, opacity, definitions, NonTerminalNode);
19
+
20
+ return opacityModifierRule;
21
+ }
22
+ }
@@ -2,15 +2,15 @@
2
2
 
3
3
  import { specialSymbols } from "occam-lexers";
4
4
 
5
- import Rule from "../rule";
6
- import QuantifierBNFNode from "../node/bnf/quantifier";
7
- import QuantifierRuleDefinition from "../definition/quantifierRule";
5
+ import Rule from "../../rule";
6
+ import QuantifierBNFNode from "../../node/bnf/quantifier";
7
+ import QuantifierRuleDefinition from "../../definition/quantifierRule";
8
8
 
9
- import { optionalQuantifierRuleName } from "../ruleNames";
9
+ import { optionalQuantifierRuleName } from "../../ruleNames";
10
10
 
11
11
  const { questionMark } = specialSymbols;
12
12
 
13
- export default class OptionalQuantifierRule extends Rule {
13
+ export default class OptionalQuantifierBNFRule extends Rule {
14
14
  static fromNothing() {
15
15
  const name = optionalQuantifierRuleName, ///
16
16
  specialSymbol = questionMark, ///
@@ -20,7 +20,7 @@ export default class OptionalQuantifierRule extends Rule {
20
20
  optionalQuantifierRuleDefinition
21
21
  ],
22
22
  NonTerminalNode = QuantifierBNFNode, ///
23
- optionalQuantifierRule = new OptionalQuantifierRule(name, opacity, definitions, NonTerminalNode);
23
+ optionalQuantifierRule = new OptionalQuantifierBNFRule(name, opacity, definitions, NonTerminalNode);
24
24
 
25
25
  return optionalQuantifierRule;
26
26
  }
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import Rule from "../rule";
4
- import PartBNFNode from "../node/bnf/part";
5
- import TerminalPartRuleDefinition from "../definition/partRule/terminal";
6
- import NonTerminalPartRuleDefinition from "../definition/partRule/nonTerminal";
3
+ import Rule from "../../rule";
4
+ import PartBNFNode from "../../node/bnf/part";
5
+ import TerminalPartRuleDefinition from "../../definition/partRule/terminal";
6
+ import NonTerminalPartRuleDefinition from "../../definition/partRule/nonTerminal";
7
7
 
8
- import { partRuleName } from "../ruleNames";
8
+ import { partRuleName } from "../../ruleNames";
9
9
 
10
- export default class PartRule extends Rule {
10
+ export default class PartBNFRule extends Rule {
11
11
  static fromNothing() {
12
12
  const name = partRuleName, ///
13
13
  terminalPartRuleDefinition = TerminalPartRuleDefinition.fromNothing(),
@@ -18,7 +18,7 @@ export default class PartRule extends Rule {
18
18
  terminalPartRuleDefinition
19
19
  ],
20
20
  NonTerminalNode = PartBNFNode, ///
21
- partRule = new PartRule(name, opacity, definitions, NonTerminalNode);
21
+ partRule = new PartBNFRule(name, opacity, definitions, NonTerminalNode);
22
22
 
23
23
  return partRule;
24
24
  }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import Rule from "../../rule";
4
+ import PartChoiceBNFNode from "../../node/bnf/partChoice";
5
+ import PartChoiceDefinition from "../../definition/partChoice";
6
+
7
+ import { partChoiceRuleName } from "../../ruleNames";
8
+
9
+ export default class PartChoiceBNFRule extends Rule {
10
+ static fromNothing() {
11
+ const name = partChoiceRuleName, ///
12
+ partChoiceDefinition = PartChoiceDefinition.fromNothing(),
13
+ opacity = null,
14
+ definitions = [
15
+ partChoiceDefinition
16
+ ],
17
+ NonTerminalNode = PartChoiceBNFNode, ///
18
+ definitionRule = new PartChoiceBNFRule(name, opacity, definitions, NonTerminalNode);
19
+
20
+ return definitionRule;
21
+ }
22
+ }