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.
- package/example.js +4802 -4326
- package/lib/bnf/parser.js +4 -1
- package/lib/common/parser.js +17 -1
- package/lib/definition/choiceOfParts.js +2 -3
- package/lib/definition/definition.js +6 -2
- package/lib/definition/definitions.js +2 -2
- package/lib/definition/document.js +6 -2
- package/lib/definition/partChoice.js +6 -2
- package/lib/definition/partRule/nonTerminal/ruleName.js +6 -2
- package/lib/definition/partRule/nonTerminal.js +6 -2
- package/lib/definition/partRule/terminal.js +6 -2
- package/lib/definition/rule.js +9 -2
- package/lib/definition/sequenceOfParts.js +2 -2
- package/lib/mixins/parser.js +2 -2
- package/lib/node/bnf/choiceOfParts.js +2 -2
- package/lib/node/bnf/definition.js +7 -2
- package/lib/node/bnf/definitions.js +2 -2
- package/lib/node/bnf/document.js +2 -2
- package/lib/node/bnf/{part/nonTerminal.js → nonTerminalPart.js} +5 -5
- package/lib/node/bnf/oneOneOrMoreQuantifier.js +107 -0
- package/lib/node/bnf/optionalQuantifier.js +107 -0
- package/lib/node/bnf/part.js +4 -4
- package/lib/node/bnf/partChoice.js +7 -2
- package/lib/node/bnf/rule.js +3 -3
- package/lib/node/bnf/sequenceOfParts.js +2 -2
- package/lib/node/bnf/{part/terminal.js → terminalPart.js} +2 -2
- package/lib/node/bnf/zeroOneOrMoreQuantifier.js +107 -0
- package/lib/node/nonTerminal.js +2 -2
- package/lib/nonTerminalNodeMap.js +62 -0
- package/lib/rule/bnf/callAheadModifier.js +3 -4
- package/lib/rule/bnf/choiceOfParts.js +4 -5
- package/lib/rule/bnf/definition.js +4 -5
- package/lib/rule/bnf/definitions.js +4 -5
- package/lib/rule/bnf/document.js +4 -5
- package/lib/rule/bnf/endOfLine.js +3 -4
- package/lib/rule/bnf/epsilon.js +3 -4
- package/lib/rule/bnf/error.js +4 -5
- package/lib/rule/bnf/name.js +4 -5
- package/lib/rule/bnf/noWhitespacePart.js +4 -5
- package/lib/rule/bnf/nonTerminalPart.js +8 -4
- package/lib/rule/bnf/oneOrMoreQuantifier.js +3 -4
- package/lib/rule/bnf/opacityModifier.js +3 -4
- package/lib/rule/bnf/optionalQuantifier.js +3 -4
- package/lib/rule/bnf/part.js +3 -4
- package/lib/rule/bnf/partChoice.js +4 -5
- package/lib/rule/bnf/precedence.js +4 -5
- package/lib/rule/bnf/quantifier.js +10 -4
- package/lib/rule/bnf/regularExpression.js +3 -4
- package/lib/rule/bnf/rule.js +4 -5
- package/lib/rule/bnf/ruleName.js +3 -4
- package/lib/rule/bnf/sequenceOfParts.js +4 -5
- package/lib/rule/bnf/significantTokenType.js +4 -5
- package/lib/rule/bnf/startOfContentPart.js +4 -5
- package/lib/rule/bnf/terminalPart.js +20 -4
- package/lib/rule/bnf/terminalSymbol.js +3 -4
- package/lib/rule/bnf/wildcard.js +3 -4
- package/lib/rule/bnf/zeroOrMoreQuantifier.js +3 -4
- package/lib/rule.js +8 -22
- package/lib/ruleNames.js +85 -85
- package/lib/state.js +26 -5
- package/lib/utilities/bnf.js +4 -4
- package/package.json +1 -1
- package/src/bnf/parser.js +5 -0
- package/src/common/parser.js +5 -0
- package/src/definition/choiceOfParts.js +5 -7
- package/src/definition/definition.js +10 -3
- package/src/definition/definitions.js +3 -2
- package/src/definition/document.js +10 -3
- package/src/definition/partChoice.js +10 -3
- package/src/definition/partRule/nonTerminal/ruleName.js +10 -3
- package/src/definition/partRule/nonTerminal.js +10 -3
- package/src/definition/partRule/terminal.js +10 -3
- package/src/definition/rule.js +18 -7
- package/src/definition/sequenceOfParts.js +4 -3
- package/src/mixins/parser.js +2 -1
- package/src/node/bnf/choiceOfParts.js +4 -3
- package/src/node/bnf/definition.js +12 -4
- package/src/node/bnf/definitions.js +4 -3
- package/src/node/bnf/document.js +4 -3
- package/src/node/bnf/{part/nonTerminal.js → nonTerminalPart.js} +5 -4
- package/src/node/bnf/oneOneOrMoreQuantifier.js +7 -0
- package/src/node/bnf/optionalQuantifier.js +7 -0
- package/src/node/bnf/part.js +4 -4
- package/src/node/bnf/partChoice.js +12 -4
- package/src/node/bnf/rule.js +5 -4
- package/src/node/bnf/sequenceOfParts.js +4 -3
- package/src/node/bnf/{part/terminal.js → terminalPart.js} +1 -1
- package/src/node/bnf/zeroOneOrMoreQuantifier.js +7 -0
- package/src/node/nonTerminal.js +1 -1
- package/src/nonTerminalNodeMap.js +92 -0
- package/src/rule/bnf/callAheadModifier.js +3 -5
- package/src/rule/bnf/choiceOfParts.js +3 -5
- package/src/rule/bnf/definition.js +3 -5
- package/src/rule/bnf/definitions.js +3 -5
- package/src/rule/bnf/document.js +3 -5
- package/src/rule/bnf/endOfLine.js +3 -5
- package/src/rule/bnf/epsilon.js +3 -5
- package/src/rule/bnf/error.js +3 -5
- package/src/rule/bnf/name.js +3 -5
- package/src/rule/bnf/noWhitespacePart.js +3 -5
- package/src/rule/bnf/nonTerminalPart.js +13 -7
- package/src/rule/bnf/oneOrMoreQuantifier.js +3 -5
- package/src/rule/bnf/opacityModifier.js +3 -5
- package/src/rule/bnf/optionalQuantifier.js +3 -5
- package/src/rule/bnf/part.js +3 -5
- package/src/rule/bnf/partChoice.js +3 -5
- package/src/rule/bnf/precedence.js +3 -5
- package/src/rule/bnf/quantifier.js +16 -8
- package/src/rule/bnf/regularExpression.js +3 -5
- package/src/rule/bnf/rule.js +3 -5
- package/src/rule/bnf/ruleName.js +3 -5
- package/src/rule/bnf/sequenceOfParts.js +3 -5
- package/src/rule/bnf/significantTokenType.js +3 -5
- package/src/rule/bnf/startOfContentPart.js +3 -5
- package/src/rule/bnf/terminalPart.js +46 -22
- package/src/rule/bnf/terminalSymbol.js +3 -5
- package/src/rule/bnf/wildcard.js +3 -5
- package/src/rule/bnf/zeroOrMoreQuantifier.js +3 -5
- package/src/rule.js +7 -17
- package/src/ruleNames.js +28 -28
- package/src/state.js +19 -3
- 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 {
|
|
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 =
|
|
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
|
-
|
|
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 {
|
|
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 =
|
|
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
|
-
|
|
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 {
|
|
6
|
+
import { DEFINITION_RULE_NAME } from "../../ruleNames";
|
|
8
7
|
|
|
9
8
|
export default class DefinitionBNFRule extends Rule {
|
|
10
9
|
static fromNothing() {
|
|
11
|
-
const name =
|
|
10
|
+
const name = DEFINITION_RULE_NAME, ///
|
|
12
11
|
definitionDefinition = DefinitionDefinition.fromNothing(),
|
|
13
12
|
opacity = null,
|
|
14
13
|
definitions = [
|
|
15
14
|
definitionDefinition
|
|
16
15
|
],
|
|
17
|
-
|
|
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 {
|
|
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 =
|
|
11
|
+
name = DEFINITIONS_RULE_NAME, ///
|
|
13
12
|
opacity = null,
|
|
14
13
|
definitions = [
|
|
15
14
|
definitionsDefinition
|
|
16
15
|
],
|
|
17
|
-
|
|
18
|
-
definitionsRule = new DefinitionsBNFRule(name, opacity, definitions, NonTerminalNode);
|
|
16
|
+
definitionsRule = new DefinitionsBNFRule(name, opacity, definitions);
|
|
19
17
|
|
|
20
18
|
return definitionsRule;
|
|
21
19
|
}
|
package/src/rule/bnf/document.js
CHANGED
|
@@ -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 {
|
|
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 =
|
|
11
|
+
name = DOCUMENT_RULE_NAME, ///
|
|
13
12
|
opacity = null,
|
|
14
13
|
definitions = [
|
|
15
14
|
documentDefinition
|
|
16
15
|
],
|
|
17
|
-
|
|
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 {
|
|
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 =
|
|
16
|
+
name = END_OF_LINE_RULE_NAME, ///
|
|
18
17
|
opacity = null,
|
|
19
18
|
definitions = [
|
|
20
19
|
endOfLineTerminalSymbolDefinition
|
|
21
20
|
],
|
|
22
|
-
|
|
23
|
-
endOfLineRule = new EndOfLineBNFRule(name, opacity, definitions, NonTerminalNode);
|
|
21
|
+
endOfLineRule = new EndOfLineBNFRule(name, opacity, definitions);
|
|
24
22
|
|
|
25
23
|
return endOfLineRule;
|
|
26
24
|
}
|
package/src/rule/bnf/epsilon.js
CHANGED
|
@@ -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 {
|
|
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 =
|
|
16
|
+
name = EPSILON_RULE_NAME, ///
|
|
18
17
|
opacity = null,
|
|
19
18
|
definitions = [
|
|
20
19
|
epsilonTerminalSymbolDefinition
|
|
21
20
|
],
|
|
22
|
-
|
|
23
|
-
epsilonRule = new EpsilonBNFRule(name, opacity, definitions, NonTerminalNode);
|
|
21
|
+
epsilonRule = new EpsilonBNFRule(name, opacity, definitions);
|
|
24
22
|
|
|
25
23
|
return epsilonRule;
|
|
26
24
|
}
|
package/src/rule/bnf/error.js
CHANGED
|
@@ -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 {
|
|
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 =
|
|
15
|
+
name = ERROR_RULE_NAME, ///
|
|
17
16
|
opacity = opaque, ///
|
|
18
17
|
definitions = [
|
|
19
18
|
errorDefinition
|
|
20
19
|
],
|
|
21
|
-
|
|
22
|
-
errorRule = new ErrorBNFRule(name, opacity, definitions, NonTerminalNode);
|
|
20
|
+
errorRule = new ErrorBNFRule(name, opacity, definitions);
|
|
23
21
|
|
|
24
22
|
return errorRule;
|
|
25
23
|
}
|
package/src/rule/bnf/name.js
CHANGED
|
@@ -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 {
|
|
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 =
|
|
11
|
+
name = NAME_RULE_NAME, ///
|
|
13
12
|
opacity = null,
|
|
14
13
|
definitions = [
|
|
15
14
|
nameDefinition
|
|
16
15
|
],
|
|
17
|
-
|
|
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 {
|
|
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 =
|
|
11
|
+
name = NO_WHITESPACE_PART_RULE_NAME, ///
|
|
13
12
|
opacity = null,
|
|
14
13
|
definitions = [
|
|
15
14
|
noWhitespacePartDefinition
|
|
16
15
|
],
|
|
17
|
-
|
|
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 {
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
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 {
|
|
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 =
|
|
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
|
-
|
|
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 {
|
|
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 =
|
|
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
|
-
|
|
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 {
|
|
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 =
|
|
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
|
-
|
|
23
|
-
optionalQuantifierRule = new OptionalQuantifierBNFRule(name, opacity, definitions, NonTerminalNode);
|
|
21
|
+
optionalQuantifierRule = new OptionalQuantifierBNFRule(name, opacity, definitions);
|
|
24
22
|
|
|
25
23
|
return optionalQuantifierRule;
|
|
26
24
|
}
|
package/src/rule/bnf/part.js
CHANGED
|
@@ -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 {
|
|
7
|
+
import { PART_RULE_NAME } from "../../ruleNames";
|
|
9
8
|
|
|
10
9
|
export default class PartBNFRule extends Rule {
|
|
11
10
|
static fromNothing() {
|
|
12
|
-
const name =
|
|
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
|
-
|
|
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 {
|
|
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 =
|
|
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
|
-
|
|
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 {
|
|
6
|
+
import { PRECEDENCE_RULE_NAME } from "../../ruleNames";
|
|
8
7
|
|
|
9
8
|
export default class PrecedenceBNFRule extends Rule {
|
|
10
9
|
static fromNothing() {
|
|
11
|
-
const name =
|
|
10
|
+
const name = PRECEDENCE_RULE_NAME, ///
|
|
12
11
|
precedenceDefinition = PrecedenceDefinition.fromNothing(),
|
|
13
12
|
opacity = null,
|
|
14
13
|
definitions = [
|
|
15
14
|
precedenceDefinition
|
|
16
15
|
],
|
|
17
|
-
|
|
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 {
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
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 {
|
|
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 =
|
|
16
|
+
name = REGULAR_EXPRESSION_RULE_NAME, ///
|
|
18
17
|
opacity = null,
|
|
19
18
|
definitions = [
|
|
20
19
|
regularExpressionSignificantTokenTypeDefinition
|
|
21
20
|
],
|
|
22
|
-
|
|
23
|
-
regularExpressionRule = new RegularExpressionBNFRule(name, opacity, definitions, NonTerminalNode);
|
|
21
|
+
regularExpressionRule = new RegularExpressionBNFRule(name, opacity, definitions);
|
|
24
22
|
|
|
25
23
|
return regularExpressionRule;
|
|
26
24
|
}
|
package/src/rule/bnf/rule.js
CHANGED
|
@@ -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 {
|
|
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 =
|
|
11
|
+
name = RULE_RULE_NAME, ///
|
|
13
12
|
opacity = null,
|
|
14
13
|
definitions = [
|
|
15
14
|
ruleDefinition
|
|
16
15
|
],
|
|
17
|
-
|
|
18
|
-
ruleRule = new RuleBNFRule(name, opacity, definitions, NonTerminalNode);
|
|
16
|
+
ruleRule = new RuleBNFRule(name, opacity, definitions);
|
|
19
17
|
|
|
20
18
|
return ruleRule;
|
|
21
19
|
}
|
package/src/rule/bnf/ruleName.js
CHANGED
|
@@ -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 {
|
|
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 =
|
|
11
|
+
name = RULE_NAME_RULE_NAME, ///
|
|
13
12
|
opacity = null,
|
|
14
13
|
definitions = [
|
|
15
14
|
nameDefinition ///
|
|
16
15
|
],
|
|
17
|
-
|
|
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 {
|
|
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 =
|
|
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
|
-
|
|
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 {
|
|
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 =
|
|
16
|
+
name = SIGNIFICANT_TOKEN_TYPE_RULE_NAME, ///
|
|
18
17
|
opacity = null,
|
|
19
18
|
definitions = [
|
|
20
19
|
typeSignificantTokenTypeDefinition
|
|
21
20
|
],
|
|
22
|
-
|
|
23
|
-
significantTokenTypeRule = new SignificantTokenTypeBNFRule(name, opacity, definitions, NonTerminalNode);
|
|
21
|
+
significantTokenTypeRule = new SignificantTokenTypeBNFRule(name, opacity, definitions);
|
|
24
22
|
|
|
25
23
|
return significantTokenTypeRule;
|
|
26
24
|
}
|