occam-parsers 23.0.146 → 23.0.147

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 (122) hide show
  1. package/example.js +4802 -4326
  2. package/lib/bnf/parser.js +4 -1
  3. package/lib/common/parser.js +17 -1
  4. package/lib/definition/choiceOfParts.js +2 -3
  5. package/lib/definition/definition.js +6 -2
  6. package/lib/definition/definitions.js +2 -2
  7. package/lib/definition/document.js +6 -2
  8. package/lib/definition/partChoice.js +6 -2
  9. package/lib/definition/partRule/nonTerminal/ruleName.js +6 -2
  10. package/lib/definition/partRule/nonTerminal.js +6 -2
  11. package/lib/definition/partRule/terminal.js +6 -2
  12. package/lib/definition/rule.js +9 -2
  13. package/lib/definition/sequenceOfParts.js +2 -2
  14. package/lib/mixins/parser.js +2 -2
  15. package/lib/node/bnf/choiceOfParts.js +2 -2
  16. package/lib/node/bnf/definition.js +7 -2
  17. package/lib/node/bnf/definitions.js +2 -2
  18. package/lib/node/bnf/document.js +2 -2
  19. package/lib/node/bnf/{part/nonTerminal.js → nonTerminalPart.js} +5 -5
  20. package/lib/node/bnf/oneOneOrMoreQuantifier.js +107 -0
  21. package/lib/node/bnf/optionalQuantifier.js +107 -0
  22. package/lib/node/bnf/part.js +4 -4
  23. package/lib/node/bnf/partChoice.js +7 -2
  24. package/lib/node/bnf/rule.js +3 -3
  25. package/lib/node/bnf/sequenceOfParts.js +2 -2
  26. package/lib/node/bnf/{part/terminal.js → terminalPart.js} +2 -2
  27. package/lib/node/bnf/zeroOneOrMoreQuantifier.js +107 -0
  28. package/lib/node/nonTerminal.js +2 -2
  29. package/lib/nonTerminalNodeMap.js +62 -0
  30. package/lib/rule/bnf/callAheadModifier.js +3 -4
  31. package/lib/rule/bnf/choiceOfParts.js +4 -5
  32. package/lib/rule/bnf/definition.js +4 -5
  33. package/lib/rule/bnf/definitions.js +4 -5
  34. package/lib/rule/bnf/document.js +4 -5
  35. package/lib/rule/bnf/endOfLine.js +3 -4
  36. package/lib/rule/bnf/epsilon.js +3 -4
  37. package/lib/rule/bnf/error.js +4 -5
  38. package/lib/rule/bnf/name.js +4 -5
  39. package/lib/rule/bnf/noWhitespacePart.js +4 -5
  40. package/lib/rule/bnf/nonTerminalPart.js +8 -4
  41. package/lib/rule/bnf/oneOrMoreQuantifier.js +3 -4
  42. package/lib/rule/bnf/opacityModifier.js +3 -4
  43. package/lib/rule/bnf/optionalQuantifier.js +3 -4
  44. package/lib/rule/bnf/part.js +3 -4
  45. package/lib/rule/bnf/partChoice.js +4 -5
  46. package/lib/rule/bnf/precedence.js +4 -5
  47. package/lib/rule/bnf/quantifier.js +10 -4
  48. package/lib/rule/bnf/regularExpression.js +3 -4
  49. package/lib/rule/bnf/rule.js +4 -5
  50. package/lib/rule/bnf/ruleName.js +3 -4
  51. package/lib/rule/bnf/sequenceOfParts.js +4 -5
  52. package/lib/rule/bnf/significantTokenType.js +4 -5
  53. package/lib/rule/bnf/startOfContentPart.js +4 -5
  54. package/lib/rule/bnf/terminalPart.js +20 -4
  55. package/lib/rule/bnf/terminalSymbol.js +3 -4
  56. package/lib/rule/bnf/wildcard.js +3 -4
  57. package/lib/rule/bnf/zeroOrMoreQuantifier.js +3 -4
  58. package/lib/rule.js +8 -22
  59. package/lib/ruleNames.js +85 -85
  60. package/lib/state.js +26 -5
  61. package/lib/utilities/bnf.js +4 -4
  62. package/package.json +1 -1
  63. package/src/bnf/parser.js +5 -0
  64. package/src/common/parser.js +5 -0
  65. package/src/definition/choiceOfParts.js +5 -7
  66. package/src/definition/definition.js +10 -3
  67. package/src/definition/definitions.js +3 -2
  68. package/src/definition/document.js +10 -3
  69. package/src/definition/partChoice.js +10 -3
  70. package/src/definition/partRule/nonTerminal/ruleName.js +10 -3
  71. package/src/definition/partRule/nonTerminal.js +10 -3
  72. package/src/definition/partRule/terminal.js +10 -3
  73. package/src/definition/rule.js +18 -7
  74. package/src/definition/sequenceOfParts.js +4 -3
  75. package/src/mixins/parser.js +2 -1
  76. package/src/node/bnf/choiceOfParts.js +4 -3
  77. package/src/node/bnf/definition.js +12 -4
  78. package/src/node/bnf/definitions.js +4 -3
  79. package/src/node/bnf/document.js +4 -3
  80. package/src/node/bnf/{part/nonTerminal.js → nonTerminalPart.js} +5 -4
  81. package/src/node/bnf/oneOneOrMoreQuantifier.js +7 -0
  82. package/src/node/bnf/optionalQuantifier.js +7 -0
  83. package/src/node/bnf/part.js +4 -4
  84. package/src/node/bnf/partChoice.js +12 -4
  85. package/src/node/bnf/rule.js +5 -4
  86. package/src/node/bnf/sequenceOfParts.js +4 -3
  87. package/src/node/bnf/{part/terminal.js → terminalPart.js} +1 -1
  88. package/src/node/bnf/zeroOneOrMoreQuantifier.js +7 -0
  89. package/src/node/nonTerminal.js +1 -1
  90. package/src/nonTerminalNodeMap.js +92 -0
  91. package/src/rule/bnf/callAheadModifier.js +3 -5
  92. package/src/rule/bnf/choiceOfParts.js +3 -5
  93. package/src/rule/bnf/definition.js +3 -5
  94. package/src/rule/bnf/definitions.js +3 -5
  95. package/src/rule/bnf/document.js +3 -5
  96. package/src/rule/bnf/endOfLine.js +3 -5
  97. package/src/rule/bnf/epsilon.js +3 -5
  98. package/src/rule/bnf/error.js +3 -5
  99. package/src/rule/bnf/name.js +3 -5
  100. package/src/rule/bnf/noWhitespacePart.js +3 -5
  101. package/src/rule/bnf/nonTerminalPart.js +13 -7
  102. package/src/rule/bnf/oneOrMoreQuantifier.js +3 -5
  103. package/src/rule/bnf/opacityModifier.js +3 -5
  104. package/src/rule/bnf/optionalQuantifier.js +3 -5
  105. package/src/rule/bnf/part.js +3 -5
  106. package/src/rule/bnf/partChoice.js +3 -5
  107. package/src/rule/bnf/precedence.js +3 -5
  108. package/src/rule/bnf/quantifier.js +16 -8
  109. package/src/rule/bnf/regularExpression.js +3 -5
  110. package/src/rule/bnf/rule.js +3 -5
  111. package/src/rule/bnf/ruleName.js +3 -5
  112. package/src/rule/bnf/sequenceOfParts.js +3 -5
  113. package/src/rule/bnf/significantTokenType.js +3 -5
  114. package/src/rule/bnf/startOfContentPart.js +3 -5
  115. package/src/rule/bnf/terminalPart.js +46 -22
  116. package/src/rule/bnf/terminalSymbol.js +3 -5
  117. package/src/rule/bnf/wildcard.js +3 -5
  118. package/src/rule/bnf/zeroOrMoreQuantifier.js +3 -5
  119. package/src/rule.js +7 -17
  120. package/src/ruleNames.js +28 -28
  121. package/src/state.js +19 -3
  122. package/src/utilities/bnf.js +4 -4
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  import Rule from "../../rule";
4
- import CallAheadModifierBNFNode from "../../node/bnf/callAheadModifier";
5
4
  import CallAheadModifierRuleDefinition from "../../definition/callAheadModifierRule";
6
5
 
7
- import { callAheadModifierRuleName } from "../../ruleNames";
6
+ import { CALL_AHEAD_MODIFIER_RULE_NAME } from "../../ruleNames";
8
7
 
9
8
  export default class CallAheadModifierBNFRule extends Rule {
10
9
  static fromNothing() {
11
- const name = callAheadModifierRuleName, ///
10
+ const name = CALL_AHEAD_MODIFIER_RULE_NAME, ///
12
11
  callAheadModifierRuleDefinition = CallAheadModifierRuleDefinition.fromNothing(),
13
12
  opacity = null,
14
13
  definitions = [
15
14
  callAheadModifierRuleDefinition
16
15
  ],
17
- NonTerminalNode = CallAheadModifierBNFNode, ///
18
- callAheadModifierRule = new CallAheadModifierBNFRule(name, opacity, definitions, NonTerminalNode);
16
+ callAheadModifierRule = new CallAheadModifierBNFRule(name, opacity, definitions);
19
17
 
20
18
  return callAheadModifierRule;
21
19
  }
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  import Rule from "../../rule";
4
- import ChoiceOfPartsBNFNode from "../../node/bnf/choiceOfParts";
5
4
  import ChoiceOfPartsDefinition from "../../definition/choiceOfParts";
6
5
 
7
- import { choiceOfPartsRuleName } from "../../ruleNames";
6
+ import { CHOICE_OF_PARTS_RULE_NAME } from "../../ruleNames";
8
7
 
9
8
  export default class ChoiceOfPartsBNFRule extends Rule {
10
9
  static fromNothing() {
11
- const name = choiceOfPartsRuleName, ///
10
+ const name = CHOICE_OF_PARTS_RULE_NAME, ///
12
11
  choiceOfPartsDefinition = ChoiceOfPartsDefinition.fromNothing(),
13
12
  opacity = null,
14
13
  definitions = [
15
14
  choiceOfPartsDefinition
16
15
  ],
17
- NonTerminalNode = ChoiceOfPartsBNFNode, ///
18
- choiceOfPartsRule = new ChoiceOfPartsBNFRule(name, opacity, definitions, NonTerminalNode);
16
+ choiceOfPartsRule = new ChoiceOfPartsBNFRule(name, opacity, definitions);
19
17
 
20
18
  return choiceOfPartsRule;
21
19
  }
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  import Rule from "../../rule";
4
- import DefinitionBNFNode from "../../node/bnf/definition";
5
4
  import DefinitionDefinition from "../../definition/definition";
6
5
 
7
- import { definitionRuleName } from "../../ruleNames";
6
+ import { DEFINITION_RULE_NAME } from "../../ruleNames";
8
7
 
9
8
  export default class DefinitionBNFRule extends Rule {
10
9
  static fromNothing() {
11
- const name = definitionRuleName, ///
10
+ const name = DEFINITION_RULE_NAME, ///
12
11
  definitionDefinition = DefinitionDefinition.fromNothing(),
13
12
  opacity = null,
14
13
  definitions = [
15
14
  definitionDefinition
16
15
  ],
17
- NonTerminalNode = DefinitionBNFNode, ///
18
- definitionRule = new DefinitionBNFRule(name, opacity, definitions, NonTerminalNode);
16
+ definitionRule = new DefinitionBNFRule(name, opacity, definitions);
19
17
 
20
18
  return definitionRule;
21
19
  }
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  import Rule from "../../rule";
4
- import DefinitionsBNFNode from "../../node/bnf/definitions";
5
4
  import DefinitionsDefinition from "../../definition/definitions";
6
5
 
7
- import { definitionsRuleName } from "../../ruleNames";
6
+ import { DEFINITIONS_RULE_NAME } from "../../ruleNames";
8
7
 
9
8
  export default class DefinitionsBNFRule extends Rule {
10
9
  static fromNothing() {
11
10
  const definitionsDefinition = DefinitionsDefinition.fromNothing(),
12
- name = definitionsRuleName, ///
11
+ name = DEFINITIONS_RULE_NAME, ///
13
12
  opacity = null,
14
13
  definitions = [
15
14
  definitionsDefinition
16
15
  ],
17
- NonTerminalNode = DefinitionsBNFNode, ///
18
- definitionsRule = new DefinitionsBNFRule(name, opacity, definitions, NonTerminalNode);
16
+ definitionsRule = new DefinitionsBNFRule(name, opacity, definitions);
19
17
 
20
18
  return definitionsRule;
21
19
  }
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  import Rule from "../../rule";
4
- import DocumentBNFNode from "../../node/bnf/document";
5
4
  import DocumentDefinition from "../../definition/document";
6
5
 
7
- import { documentRuleName } from "../../ruleNames";
6
+ import { DOCUMENT_RULE_NAME } from "../../ruleNames";
8
7
 
9
8
  export default class DocumentBNFRule extends Rule {
10
9
  static fromNothing() {
11
10
  const documentDefinition = DocumentDefinition.fromNothing(),
12
- name = documentRuleName, ///
11
+ name = DOCUMENT_RULE_NAME, ///
13
12
  opacity = null,
14
13
  definitions = [
15
14
  documentDefinition
16
15
  ],
17
- NonTerminalNode = DocumentBNFNode, ///
18
- documentRule = new DocumentBNFRule(name, opacity, definitions, NonTerminalNode);
16
+ documentRule = new DocumentBNFRule(name, opacity, definitions);
19
17
 
20
18
  return documentRule;
21
19
  }
@@ -3,10 +3,9 @@
3
3
  import { specialSymbols } from "occam-lexers";
4
4
 
5
5
  import Rule from "../../rule";
6
- import EndOfLineBNFNode from "../../node/bnf/endOfLine";
7
6
  import TerminalSymbolDefinition from "../../definition/terminalSymbol";
8
7
 
9
- import { endOfLineRuleName } from "../../ruleNames";
8
+ import { END_OF_LINE_RULE_NAME } from "../../ruleNames";
10
9
 
11
10
  const { endOfLine } = specialSymbols;
12
11
 
@@ -14,13 +13,12 @@ export default class EndOfLineBNFRule extends Rule {
14
13
  static fromNothing() {
15
14
  const content = endOfLine,
16
15
  endOfLineTerminalSymbolDefinition = TerminalSymbolDefinition.fromContent(content),
17
- name = endOfLineRuleName, ///
16
+ name = END_OF_LINE_RULE_NAME, ///
18
17
  opacity = null,
19
18
  definitions = [
20
19
  endOfLineTerminalSymbolDefinition
21
20
  ],
22
- NonTerminalNode = EndOfLineBNFNode, ///
23
- endOfLineRule = new EndOfLineBNFRule(name, opacity, definitions, NonTerminalNode);
21
+ endOfLineRule = new EndOfLineBNFRule(name, opacity, definitions);
24
22
 
25
23
  return endOfLineRule;
26
24
  }
@@ -3,10 +3,9 @@
3
3
  import { specialSymbols } from "occam-lexers";
4
4
 
5
5
  import Rule from "../../rule";
6
- import EpsilonBNFNode from "../../node/bnf/epsilon";
7
6
  import TerminalSymbolDefinition from "../../definition/terminalSymbol";
8
7
 
9
- import { epsilonRuleName } from "../../ruleNames";
8
+ import { EPSILON_RULE_NAME } from "../../ruleNames";
10
9
 
11
10
  const { epsilon } = specialSymbols;
12
11
 
@@ -14,13 +13,12 @@ export default class EpsilonBNFRule extends Rule {
14
13
  static fromNothing() {
15
14
  const content = epsilon, ///
16
15
  epsilonTerminalSymbolDefinition = TerminalSymbolDefinition.fromContent(content),
17
- name = epsilonRuleName, ///
16
+ name = EPSILON_RULE_NAME, ///
18
17
  opacity = null,
19
18
  definitions = [
20
19
  epsilonTerminalSymbolDefinition
21
20
  ],
22
- NonTerminalNode = EpsilonBNFNode, ///
23
- epsilonRule = new EpsilonBNFRule(name, opacity, definitions, NonTerminalNode);
21
+ epsilonRule = new EpsilonBNFRule(name, opacity, definitions);
24
22
 
25
23
  return epsilonRule;
26
24
  }
@@ -3,23 +3,21 @@
3
3
  import { specialSymbols } from "occam-lexers";
4
4
 
5
5
  import Rule from "../../rule";
6
- import ErrorBNFNode from "../../node/bnf/error";
7
6
  import ErrorDefinition from "../../definition/error";
8
7
 
9
- import { errorRuleName } from "../../ruleNames";
8
+ import { ERROR_RULE_NAME } from "../../ruleNames";
10
9
 
11
10
  const { opaque } = specialSymbols;
12
11
 
13
12
  export default class ErrorBNFRule extends Rule {
14
13
  static fromNothing() {
15
14
  const errorDefinition = ErrorDefinition.fromNothing(),
16
- name = errorRuleName, ///
15
+ name = ERROR_RULE_NAME, ///
17
16
  opacity = opaque, ///
18
17
  definitions = [
19
18
  errorDefinition
20
19
  ],
21
- NonTerminalNode = ErrorBNFNode, ///
22
- errorRule = new ErrorBNFRule(name, opacity, definitions, NonTerminalNode);
20
+ errorRule = new ErrorBNFRule(name, opacity, definitions);
23
21
 
24
22
  return errorRule;
25
23
  }
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  import Rule from "../../rule";
4
- import NameBNFNode from "../../node/bnf/name";
5
4
  import NameDefinition from "../../definition/name";
6
5
 
7
- import { nameRuleName } from "../../ruleNames";
6
+ import { NAME_RULE_NAME } from "../../ruleNames";
8
7
 
9
8
  export default class NameBNFRule extends Rule {
10
9
  static fromNothing() {
11
10
  const nameDefinition = NameDefinition.fromNothing(),
12
- name = nameRuleName, ///
11
+ name = NAME_RULE_NAME, ///
13
12
  opacity = null,
14
13
  definitions = [
15
14
  nameDefinition
16
15
  ],
17
- NonTerminalNode = NameBNFNode, ///
18
- nameRule = new NameBNFRule(name, opacity, definitions, NonTerminalNode);
16
+ nameRule = new NameBNFRule(name, opacity, definitions);
19
17
 
20
18
  return nameRule;
21
19
  }
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  import Rule from "../../rule";
4
- import NoWhitespacePartBNFNode from "../../node/bnf/noWhitespacePart";
5
4
  import NoWhitespacePartDefinition from "../../definition/noWhitespacePart";
6
5
 
7
- import { noWhitespacePartRuleName } from "../../ruleNames";
6
+ import { NO_WHITESPACE_PART_RULE_NAME } from "../../ruleNames";
8
7
 
9
8
  export default class NoWhitespacePartBNFRule extends Rule {
10
9
  static fromNothing() {
11
10
  const noWhitespacePartDefinition = NoWhitespacePartDefinition.fromNothing(),
12
- name = noWhitespacePartRuleName, ///
11
+ name = NO_WHITESPACE_PART_RULE_NAME, ///
13
12
  opacity = null,
14
13
  definitions = [
15
14
  noWhitespacePartDefinition
16
15
  ],
17
- NonTerminalNode = NoWhitespacePartBNFNode, ///
18
- noWhitespacePartRule = new NoWhitespacePartBNFRule(name, opacity, definitions, NonTerminalNode);
16
+ noWhitespacePartRule = new NoWhitespacePartBNFRule(name, opacity, definitions);
19
17
 
20
18
  return noWhitespacePartRule;
21
19
  }
@@ -2,16 +2,23 @@
2
2
 
3
3
  import Rule from "../../rule";
4
4
  import RuleNameDefinition from "../../definition/ruleName";
5
- import NonTerminalPartBNFNode from "../../node/bnf/part/nonTerminal";
6
5
  import RuleNameNonTerminalPartRuleDefinition from "../../definition/partRule/nonTerminal/ruleName";
7
6
 
8
- import { nonTerminalPartRuleName, choiceOfPartsRuleName, sequenceOfPartsRuleName } from "../../ruleNames";
7
+ import { CHOICE_OF_PARTS_RULE_NAME, SEQUENCE_OF_PARTS_RULE_NAME, NON_TERMINAL_PART_RULE_NAME } from "../../ruleNames";
9
8
 
10
9
  export default class NonTerminalPartBNFRule extends Rule {
11
10
  static fromNothing() {
12
- const name = nonTerminalPartRuleName, ///
13
- choiceOfPartsRuleNameDefinition = RuleNameDefinition.fromRuleName(choiceOfPartsRuleName),
14
- sequenceOfPartsRuleNameDefinition = RuleNameDefinition.fromRuleName(sequenceOfPartsRuleName),
11
+ let ruleName;
12
+
13
+ const name = NON_TERMINAL_PART_RULE_NAME; ///
14
+
15
+ ruleName = CHOICE_OF_PARTS_RULE_NAME;
16
+
17
+ const choiceOfPartsRuleNameDefinition = RuleNameDefinition.fromRuleName(ruleName);
18
+
19
+ ruleName = SEQUENCE_OF_PARTS_RULE_NAME;
20
+
21
+ const sequenceOfPartsRuleNameDefinition = RuleNameDefinition.fromRuleName(ruleName),
15
22
  ruleNameNonTerminalPartRuleDefinition = RuleNameNonTerminalPartRuleDefinition.fromNothing(),
16
23
  opacity = null,
17
24
  definitions = [
@@ -19,8 +26,7 @@ export default class NonTerminalPartBNFRule extends Rule {
19
26
  sequenceOfPartsRuleNameDefinition,
20
27
  ruleNameNonTerminalPartRuleDefinition
21
28
  ],
22
- NonTerminalNode = NonTerminalPartBNFNode, ///
23
- nonTerminalPartRule = new NonTerminalPartBNFRule(name, opacity, definitions, NonTerminalNode);
29
+ nonTerminalPartRule = new NonTerminalPartBNFRule(name, opacity, definitions);
24
30
 
25
31
  return nonTerminalPartRule;
26
32
  }
@@ -3,24 +3,22 @@
3
3
  import { specialSymbols } from "occam-lexers";
4
4
 
5
5
  import Rule from "../../rule";
6
- import QuantifierBNFNode from "../../node/bnf/quantifier";
7
6
  import QuantifierRuleDefinition from "../../definition/quantifierRule";
8
7
 
9
- import { oneOrMoreQuantifierRuleName } from "../../ruleNames";
8
+ import { ONE_OR_MORE_QUANTIFIER_RULE_NAME } from "../../ruleNames";
10
9
 
11
10
  const { plus } = specialSymbols;
12
11
 
13
12
  export default class OneOrMoreQuantifierBNFRule extends Rule {
14
13
  static fromNothing() {
15
- const name = oneOrMoreQuantifierRuleName, ///
14
+ const name = ONE_OR_MORE_QUANTIFIER_RULE_NAME, ///
16
15
  specialSymbol = plus, ///
17
16
  oneOrMoreQuantifierRuleDefinition = QuantifierRuleDefinition.fromSpecialSymbol(specialSymbol),
18
17
  opacity = null,
19
18
  definitions = [
20
19
  oneOrMoreQuantifierRuleDefinition
21
20
  ],
22
- NonTerminalNode = QuantifierBNFNode, ///
23
- oneOrMoreQuantifierRule = new OneOrMoreQuantifierBNFRule(name, opacity, definitions, NonTerminalNode);
21
+ oneOrMoreQuantifierRule = new OneOrMoreQuantifierBNFRule(name, opacity, definitions);
24
22
 
25
23
  return oneOrMoreQuantifierRule;
26
24
  }
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  import Rule from "../../rule";
4
- import OpacityModifierBNFNode from "../../node/bnf/opacityModifier";
5
4
  import OpacityModifierRuleDefinition from "../../definition/opacityModifierRule";
6
5
 
7
- import { opacityModifierRuleName } from "../../ruleNames";
6
+ import { OPACITY_MODIFIER_RULE_NAME } from "../../ruleNames";
8
7
 
9
8
  export default class OpacityModifierBNFRule extends Rule {
10
9
  static fromNothing() {
11
- const name = opacityModifierRuleName, ///
10
+ const name = OPACITY_MODIFIER_RULE_NAME, ///
12
11
  opacityModifierRuleDefinition = OpacityModifierRuleDefinition.fromNothing(),
13
12
  opacity = null,
14
13
  definitions = [
15
14
  opacityModifierRuleDefinition
16
15
  ],
17
- NonTerminalNode = OpacityModifierBNFNode, ///
18
- opacityModifierRule = new OpacityModifierBNFRule(name, opacity, definitions, NonTerminalNode);
16
+ opacityModifierRule = new OpacityModifierBNFRule(name, opacity, definitions);
19
17
 
20
18
  return opacityModifierRule;
21
19
  }
@@ -3,24 +3,22 @@
3
3
  import { specialSymbols } from "occam-lexers";
4
4
 
5
5
  import Rule from "../../rule";
6
- import QuantifierBNFNode from "../../node/bnf/quantifier";
7
6
  import QuantifierRuleDefinition from "../../definition/quantifierRule";
8
7
 
9
- import { optionalQuantifierRuleName } from "../../ruleNames";
8
+ import { OPTIONAL_QUANTIFIER_RULE_NAME } from "../../ruleNames";
10
9
 
11
10
  const { questionMark } = specialSymbols;
12
11
 
13
12
  export default class OptionalQuantifierBNFRule extends Rule {
14
13
  static fromNothing() {
15
- const name = optionalQuantifierRuleName, ///
14
+ const name = OPTIONAL_QUANTIFIER_RULE_NAME, ///
16
15
  specialSymbol = questionMark, ///
17
16
  optionalQuantifierRuleDefinition = QuantifierRuleDefinition.fromSpecialSymbol(specialSymbol),
18
17
  opacity = null,
19
18
  definitions = [
20
19
  optionalQuantifierRuleDefinition
21
20
  ],
22
- NonTerminalNode = QuantifierBNFNode, ///
23
- optionalQuantifierRule = new OptionalQuantifierBNFRule(name, opacity, definitions, NonTerminalNode);
21
+ optionalQuantifierRule = new OptionalQuantifierBNFRule(name, opacity, definitions);
24
22
 
25
23
  return optionalQuantifierRule;
26
24
  }
@@ -1,15 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  import Rule from "../../rule";
4
- import PartBNFNode from "../../node/bnf/part";
5
4
  import TerminalPartRuleDefinition from "../../definition/partRule/terminal";
6
5
  import NonTerminalPartRuleDefinition from "../../definition/partRule/nonTerminal";
7
6
 
8
- import { partRuleName } from "../../ruleNames";
7
+ import { PART_RULE_NAME } from "../../ruleNames";
9
8
 
10
9
  export default class PartBNFRule extends Rule {
11
10
  static fromNothing() {
12
- const name = partRuleName, ///
11
+ const name = PART_RULE_NAME, ///
13
12
  terminalPartRuleDefinition = TerminalPartRuleDefinition.fromNothing(),
14
13
  nonTerminalPartRuleDefinition = NonTerminalPartRuleDefinition.fromNothing(),
15
14
  opacity = null,
@@ -17,8 +16,7 @@ export default class PartBNFRule extends Rule {
17
16
  nonTerminalPartRuleDefinition,
18
17
  terminalPartRuleDefinition
19
18
  ],
20
- NonTerminalNode = PartBNFNode, ///
21
- partRule = new PartBNFRule(name, opacity, definitions, NonTerminalNode);
19
+ partRule = new PartBNFRule(name, opacity, definitions);
22
20
 
23
21
  return partRule;
24
22
  }
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  import Rule from "../../rule";
4
- import PartChoiceBNFNode from "../../node/bnf/partChoice";
5
4
  import PartChoiceDefinition from "../../definition/partChoice";
6
5
 
7
- import { partChoiceRuleName } from "../../ruleNames";
6
+ import { PART_CHOICE_RULE_NAME } from "../../ruleNames";
8
7
 
9
8
  export default class PartChoiceBNFRule extends Rule {
10
9
  static fromNothing() {
11
- const name = partChoiceRuleName, ///
10
+ const name = PART_CHOICE_RULE_NAME, ///
12
11
  partChoiceDefinition = PartChoiceDefinition.fromNothing(),
13
12
  opacity = null,
14
13
  definitions = [
15
14
  partChoiceDefinition
16
15
  ],
17
- NonTerminalNode = PartChoiceBNFNode, ///
18
- definitionRule = new PartChoiceBNFRule(name, opacity, definitions, NonTerminalNode);
16
+ definitionRule = new PartChoiceBNFRule(name, opacity, definitions);
19
17
 
20
18
  return definitionRule;
21
19
  }
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  import Rule from "../../rule";
4
- import PrecedenceBNFNode from "../../node/bnf/precedence";
5
4
  import PrecedenceDefinition from "../../definition/precedence";
6
5
 
7
- import { precedenceRuleName } from "../../ruleNames";
6
+ import { PRECEDENCE_RULE_NAME } from "../../ruleNames";
8
7
 
9
8
  export default class PrecedenceBNFRule extends Rule {
10
9
  static fromNothing() {
11
- const name = precedenceRuleName, ///
10
+ const name = PRECEDENCE_RULE_NAME, ///
12
11
  precedenceDefinition = PrecedenceDefinition.fromNothing(),
13
12
  opacity = null,
14
13
  definitions = [
15
14
  precedenceDefinition
16
15
  ],
17
- NonTerminalNode = PrecedenceBNFNode, ///
18
- precedenceRule = new PrecedenceBNFRule(name, opacity, definitions, NonTerminalNode);
16
+ precedenceRule = new PrecedenceBNFRule(name, opacity, definitions);
19
17
 
20
18
  return precedenceRule;
21
19
  }
@@ -1,25 +1,33 @@
1
1
  "use strict";
2
2
 
3
3
  import Rule from "../../rule";
4
- import PartBNFNode from "../../node/bnf/part";
5
4
  import RuleNameDefinition from "../../definition/ruleName";
6
5
 
7
- import { quantifierRuleName, optionalQuantifierRuleName, oneOrMoreQuantifierRuleName, zeroOrMoreQuantifierRuleName } from "../../ruleNames";
6
+ import { QUANTIFIER_RULE_NAME, OPTIONAL_QUANTIFIER_RULE_NAME, ONE_OR_MORE_QUANTIFIER_RULE_NAME, ZERO_OR_MORE_QUANTIFIER_RULE_NAME } from "../../ruleNames";
8
7
 
9
8
  export default class QuantifierBNFRule extends Rule {
10
9
  static fromNothing() {
11
- const name = quantifierRuleName, ///
12
- optionalQuantifierRuleNameDefinition = RuleNameDefinition.fromRuleName(optionalQuantifierRuleName),
13
- oneOrMoreQuantifierRuleNameDefinition = RuleNameDefinition.fromRuleName(oneOrMoreQuantifierRuleName),
14
- zeroOrMoreQuantifierRuleNameDefinition = RuleNameDefinition.fromRuleName(zeroOrMoreQuantifierRuleName),
10
+ let ruleName;
11
+ const name = QUANTIFIER_RULE_NAME; ///
12
+
13
+ ruleName = OPTIONAL_QUANTIFIER_RULE_NAME
14
+
15
+ const optionalQuantifierRuleNameDefinition = RuleNameDefinition.fromRuleName(ruleName);
16
+
17
+ ruleName = ONE_OR_MORE_QUANTIFIER_RULE_NAME;
18
+
19
+ const oneOrMoreQuantifierRuleNameDefinition = RuleNameDefinition.fromRuleName(ruleName);
20
+
21
+ ruleName = ZERO_OR_MORE_QUANTIFIER_RULE_NAME;
22
+
23
+ const zeroOrMoreQuantifierRuleNameDefinition = RuleNameDefinition.fromRuleName(ruleName),
15
24
  opacity = null,
16
25
  definitions = [
17
26
  optionalQuantifierRuleNameDefinition,
18
27
  oneOrMoreQuantifierRuleNameDefinition,
19
28
  zeroOrMoreQuantifierRuleNameDefinition
20
29
  ],
21
- NonTerminalNode = PartBNFNode, ///
22
- quantifierRule = new QuantifierBNFRule(name, opacity, definitions, NonTerminalNode);
30
+ quantifierRule = new QuantifierBNFRule(name, opacity, definitions);
23
31
 
24
32
  return quantifierRule;
25
33
  }
@@ -3,10 +3,9 @@
3
3
  import { types } from "occam-lexers";
4
4
 
5
5
  import Rule from "../../rule";
6
- import RegularExpressionBNFNode from "../../node/bnf/regularExpression";
7
6
  import SignificantTokenTypeDefinition from "../../definition/significantTokenType";
8
7
 
9
- import { regularExpressionRuleName } from "../../ruleNames";
8
+ import { REGULAR_EXPRESSION_RULE_NAME } from "../../ruleNames";
10
9
 
11
10
  const { regularExpressionType } = types;
12
11
 
@@ -14,13 +13,12 @@ export default class RegularExpressionBNFRule extends Rule {
14
13
  static fromNothing() {
15
14
  const significantTokenType = regularExpressionType, ///
16
15
  regularExpressionSignificantTokenTypeDefinition = SignificantTokenTypeDefinition.fromSignificantTokenType(significantTokenType),
17
- name = regularExpressionRuleName, ///
16
+ name = REGULAR_EXPRESSION_RULE_NAME, ///
18
17
  opacity = null,
19
18
  definitions = [
20
19
  regularExpressionSignificantTokenTypeDefinition
21
20
  ],
22
- NonTerminalNode = RegularExpressionBNFNode, ///
23
- regularExpressionRule = new RegularExpressionBNFRule(name, opacity, definitions, NonTerminalNode);
21
+ regularExpressionRule = new RegularExpressionBNFRule(name, opacity, definitions);
24
22
 
25
23
  return regularExpressionRule;
26
24
  }
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  import Rule from "../../rule";
4
- import RuleBNFNode from "../../node/bnf/rule";
5
4
  import RuleDefinition from "../../definition/rule";
6
5
 
7
- import { ruleRuleName } from "../../ruleNames";
6
+ import { RULE_RULE_NAME } from "../../ruleNames";
8
7
 
9
8
  export default class RuleBNFRule extends Rule {
10
9
  static fromNothing() {
11
10
  const ruleDefinition = RuleDefinition.fromNothing(),
12
- name = ruleRuleName, ///
11
+ name = RULE_RULE_NAME, ///
13
12
  opacity = null,
14
13
  definitions = [
15
14
  ruleDefinition
16
15
  ],
17
- NonTerminalNode = RuleBNFNode, ///
18
- ruleRule = new RuleBNFRule(name, opacity, definitions, NonTerminalNode);
16
+ ruleRule = new RuleBNFRule(name, opacity, definitions);
19
17
 
20
18
  return ruleRule;
21
19
  }
@@ -2,20 +2,18 @@
2
2
 
3
3
  import Rule from "../../rule";
4
4
  import NameDefinition from "../../definition/name";
5
- import RuleNameBNFNode from "../../node/bnf/ruleName";
6
5
 
7
- import { ruleNameRuleName } from "../../ruleNames";
6
+ import { RULE_NAME_RULE_NAME } from "../../ruleNames";
8
7
 
9
8
  export default class RuleNameBNFRule extends Rule {
10
9
  static fromNothing() {
11
10
  const nameDefinition = NameDefinition.fromNothing(),
12
- name = ruleNameRuleName, ///
11
+ name = RULE_NAME_RULE_NAME, ///
13
12
  opacity = null,
14
13
  definitions = [
15
14
  nameDefinition ///
16
15
  ],
17
- NonTerminalNode = RuleNameBNFNode, ///
18
- ruleNameRule = new RuleNameBNFRule(name, opacity, definitions, NonTerminalNode);
16
+ ruleNameRule = new RuleNameBNFRule(name, opacity, definitions);
19
17
 
20
18
  return ruleNameRule;
21
19
  }
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  import Rule from "../../rule";
4
- import SequenceOfPartsBNFNode from "../../node/bnf/sequenceOfParts";
5
4
  import SequenceOfPartsDefinition from "../../definition/sequenceOfParts";
6
5
 
7
- import { sequenceOfPartsRuleName } from "../../ruleNames";
6
+ import { SEQUENCE_OF_PARTS_RULE_NAME } from "../../ruleNames";
8
7
 
9
8
  export default class SequenceOfPartsBNFRule extends Rule {
10
9
  static fromNothing() {
11
- const name = sequenceOfPartsRuleName, ///
10
+ const name = SEQUENCE_OF_PARTS_RULE_NAME, ///
12
11
  sequenceOfPartsDefinition = SequenceOfPartsDefinition.fromNothing(),
13
12
  opacity = null,
14
13
  definitions = [
15
14
  sequenceOfPartsDefinition
16
15
  ],
17
- NonTerminalNode = SequenceOfPartsBNFNode, ///
18
- sequenceOfPartsRule = new SequenceOfPartsBNFRule(name, opacity, definitions, NonTerminalNode);
16
+ sequenceOfPartsRule = new SequenceOfPartsBNFRule(name, opacity, definitions);
19
17
 
20
18
  return sequenceOfPartsRule;
21
19
  }
@@ -3,10 +3,9 @@
3
3
  import { types } from "occam-lexers";
4
4
 
5
5
  import Rule from "../../rule";
6
- import SignificantTokenTypeBNFNode from "../../node/bnf/significantTokenType";
7
6
  import SignificantTokenTypeDefinition from "../../definition/significantTokenType";
8
7
 
9
- import { significantTokenTypeRuleName } from "../../ruleNames";
8
+ import { SIGNIFICANT_TOKEN_TYPE_RULE_NAME } from "../../ruleNames";
10
9
 
11
10
  const { typeType } = types;
12
11
 
@@ -14,13 +13,12 @@ export default class SignificantTokenTypeBNFRule extends Rule {
14
13
  static fromNothing() {
15
14
  const significantTokenType = typeType, ///
16
15
  typeSignificantTokenTypeDefinition = SignificantTokenTypeDefinition.fromSignificantTokenType(significantTokenType),
17
- name = significantTokenTypeRuleName, ///
16
+ name = SIGNIFICANT_TOKEN_TYPE_RULE_NAME, ///
18
17
  opacity = null,
19
18
  definitions = [
20
19
  typeSignificantTokenTypeDefinition
21
20
  ],
22
- NonTerminalNode = SignificantTokenTypeBNFNode, ///
23
- significantTokenTypeRule = new SignificantTokenTypeBNFRule(name, opacity, definitions, NonTerminalNode);
21
+ significantTokenTypeRule = new SignificantTokenTypeBNFRule(name, opacity, definitions);
24
22
 
25
23
  return significantTokenTypeRule;
26
24
  }