occam-parsers 23.0.84 → 23.0.85
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 +596 -568
- package/lib/bnf/parser.js +59 -61
- package/lib/node/nonTerminal.js +31 -1
- package/lib/rule/{callAheadModifier.js → bnf/callAheadModifier.js} +14 -14
- package/lib/rule/{choiceOfParts.js → bnf/choiceOfParts.js} +14 -14
- package/lib/rule/{definition.js → bnf/definition.js} +14 -14
- package/lib/rule/{definitions.js → bnf/definitions.js} +14 -14
- package/lib/rule/{document.js → bnf/document.js} +14 -14
- package/lib/rule/{endOfLine.js → bnf/endOfLine.js} +14 -14
- package/lib/rule/{epsilon.js → bnf/epsilon.js} +14 -14
- package/lib/rule/{error.js → bnf/error.js} +14 -14
- package/lib/rule/{name.js → bnf/name.js} +14 -14
- package/lib/rule/{noWhitespacePart.js → bnf/noWhitespacePart.js} +14 -14
- package/lib/rule/{nonTerminalPart.js → bnf/nonTerminalPart.js} +15 -15
- package/lib/rule/{oneOrMoreQuantifier.js → bnf/oneOrMoreQuantifier.js} +14 -14
- package/lib/rule/{opacityModifier.js → bnf/opacityModifier.js} +14 -14
- package/lib/rule/{optionalQuantifier.js → bnf/optionalQuantifier.js} +14 -14
- package/lib/rule/{part.js → bnf/part.js} +15 -15
- package/lib/rule/{partChoice.js → bnf/partChoice.js} +14 -14
- package/lib/rule/{precedence.js → bnf/precedence.js} +14 -14
- package/lib/rule/{quantifier.js → bnf/quantifier.js} +14 -14
- package/lib/rule/{regularExpression.js → bnf/regularExpression.js} +14 -14
- package/lib/rule/{rule.js → bnf/rule.js} +14 -14
- package/lib/rule/{ruleName.js → bnf/ruleName.js} +14 -14
- package/lib/rule/{sequenceOfParts.js → bnf/sequenceOfParts.js} +14 -14
- package/lib/rule/{significantTokenType.js → bnf/significantTokenType.js} +14 -14
- package/lib/rule/{startOfContentPart.js → bnf/startOfContentPart.js} +14 -14
- package/lib/rule/bnf/terminalPart.js +120 -0
- package/lib/rule/{terminalSymbol.js → bnf/terminalSymbol.js} +14 -14
- package/lib/rule/{wildcard.js → bnf/wildcard.js} +14 -14
- package/lib/rule/{zeroOrMoreQuantifier.js → bnf/zeroOrMoreQuantifier.js} +14 -14
- package/package.json +1 -1
- package/src/bnf/parser.js +87 -89
- package/src/node/nonTerminal.js +10 -0
- package/src/rule/bnf/callAheadModifier.js +22 -0
- package/src/rule/bnf/choiceOfParts.js +22 -0
- package/src/rule/bnf/definition.js +22 -0
- package/src/rule/bnf/definitions.js +22 -0
- package/src/rule/bnf/document.js +22 -0
- package/src/rule/{endOfLine.js → bnf/endOfLine.js} +6 -6
- package/src/rule/{epsilon.js → bnf/epsilon.js} +6 -6
- package/src/rule/bnf/error.js +26 -0
- package/src/rule/bnf/name.js +22 -0
- package/src/rule/bnf/noWhitespacePart.js +22 -0
- package/src/rule/{nonTerminalPart.js → bnf/nonTerminalPart.js} +7 -7
- package/src/rule/{oneOrMoreQuantifier.js → bnf/oneOrMoreQuantifier.js} +6 -6
- package/src/rule/bnf/opacityModifier.js +22 -0
- package/src/rule/{optionalQuantifier.js → bnf/optionalQuantifier.js} +6 -6
- package/src/rule/{part.js → bnf/part.js} +7 -7
- package/src/rule/bnf/partChoice.js +22 -0
- package/src/rule/bnf/precedence.js +22 -0
- package/src/rule/{quantifier.js → bnf/quantifier.js} +6 -6
- package/src/rule/{regularExpression.js → bnf/regularExpression.js} +6 -6
- package/src/rule/bnf/rule.js +22 -0
- package/src/rule/bnf/ruleName.js +22 -0
- package/src/rule/bnf/sequenceOfParts.js +22 -0
- package/src/rule/{significantTokenType.js → bnf/significantTokenType.js} +6 -6
- package/src/rule/bnf/startOfContentPart.js +22 -0
- package/src/rule/{terminalPart.js → bnf/terminalPart.js} +7 -7
- package/src/rule/{terminalSymbol.js → bnf/terminalSymbol.js} +7 -7
- package/src/rule/{wildcard.js → bnf/wildcard.js} +6 -6
- package/src/rule/{zeroOrMoreQuantifier.js → bnf/zeroOrMoreQuantifier.js} +6 -6
- package/lib/rule/terminalPart.js +0 -120
- package/src/rule/callAheadModifier.js +0 -22
- package/src/rule/choiceOfParts.js +0 -22
- package/src/rule/definition.js +0 -22
- package/src/rule/definitions.js +0 -22
- package/src/rule/document.js +0 -22
- package/src/rule/error.js +0 -26
- package/src/rule/name.js +0 -22
- package/src/rule/noWhitespacePart.js +0 -22
- package/src/rule/opacityModifier.js +0 -22
- package/src/rule/partChoice.js +0 -22
- package/src/rule/precedence.js +0 -22
- package/src/rule/rule.js +0 -22
- package/src/rule/ruleName.js +0 -22
- package/src/rule/sequenceOfParts.js +0 -22
- 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
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
import
|
|
24
|
-
import
|
|
25
|
-
import
|
|
26
|
-
import
|
|
27
|
-
import
|
|
28
|
-
import
|
|
29
|
-
import
|
|
30
|
-
import
|
|
31
|
-
import
|
|
32
|
-
import
|
|
33
|
-
import
|
|
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
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
|
package/src/node/nonTerminal.js
CHANGED
|
@@ -213,6 +213,16 @@ export default class NonTerminalNode {
|
|
|
213
213
|
return empty;
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
+
mapChildNode(callback) { return this.childNodes.map(callback); }
|
|
217
|
+
|
|
218
|
+
someChildNode(callback) { return this.childNodes.some(callback); }
|
|
219
|
+
|
|
220
|
+
everyChildNode(callback) { return this.childNodes.every(callback); }
|
|
221
|
+
|
|
222
|
+
reduceChildNode(callback, initialValue) { return this.childNodes.reduce(callback, initialValue); }
|
|
223
|
+
|
|
224
|
+
forEachChildNode(callback) { this.childNodes.forEach(callback); }
|
|
225
|
+
|
|
216
226
|
match(node, depth = Infinity, exactly = false) {
|
|
217
227
|
let matches = false;
|
|
218
228
|
|
|
@@ -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 "
|
|
6
|
-
import EndOfLineBNFNode from "
|
|
7
|
-
import TerminalSymbolDefinition from "
|
|
5
|
+
import Rule from "../../rule";
|
|
6
|
+
import EndOfLineBNFNode from "../../node/bnf/endOfLine";
|
|
7
|
+
import TerminalSymbolDefinition from "../../definition/terminalSymbol";
|
|
8
8
|
|
|
9
|
-
import { endOfLineRuleName } from "
|
|
9
|
+
import { endOfLineRuleName } from "../../ruleNames";
|
|
10
10
|
|
|
11
11
|
const { endOfLine } = specialSymbols;
|
|
12
12
|
|
|
13
|
-
export default class
|
|
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
|
|
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 "
|
|
6
|
-
import EpsilonBNFNode from "
|
|
7
|
-
import TerminalSymbolDefinition from "
|
|
5
|
+
import Rule from "../../rule";
|
|
6
|
+
import EpsilonBNFNode from "../../node/bnf/epsilon";
|
|
7
|
+
import TerminalSymbolDefinition from "../../definition/terminalSymbol";
|
|
8
8
|
|
|
9
|
-
import { epsilonRuleName } from "
|
|
9
|
+
import { epsilonRuleName } from "../../ruleNames";
|
|
10
10
|
|
|
11
11
|
const { epsilon } = specialSymbols;
|
|
12
12
|
|
|
13
|
-
export default class
|
|
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
|
|
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 "
|
|
4
|
-
import RuleNameDefinition from "
|
|
5
|
-
import NonTerminalPartBNFNode from "
|
|
6
|
-
import RuleNameNonTerminalPartRuleDefinition from "
|
|
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 "
|
|
8
|
+
import { nonTerminalPartRuleName, choiceOfPartsRuleName, sequenceOfPartsRuleName } from "../../ruleNames";
|
|
9
9
|
|
|
10
|
-
export default class
|
|
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
|
|
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 "
|
|
6
|
-
import QuantifierBNFNode from "
|
|
7
|
-
import QuantifierRuleDefinition from "
|
|
5
|
+
import Rule from "../../rule";
|
|
6
|
+
import QuantifierBNFNode from "../../node/bnf/quantifier";
|
|
7
|
+
import QuantifierRuleDefinition from "../../definition/quantifierRule";
|
|
8
8
|
|
|
9
|
-
import { oneOrMoreQuantifierRuleName } from "
|
|
9
|
+
import { oneOrMoreQuantifierRuleName } from "../../ruleNames";
|
|
10
10
|
|
|
11
11
|
const { plus } = specialSymbols;
|
|
12
12
|
|
|
13
|
-
export default class
|
|
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
|
|
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 "
|
|
6
|
-
import QuantifierBNFNode from "
|
|
7
|
-
import QuantifierRuleDefinition from "
|
|
5
|
+
import Rule from "../../rule";
|
|
6
|
+
import QuantifierBNFNode from "../../node/bnf/quantifier";
|
|
7
|
+
import QuantifierRuleDefinition from "../../definition/quantifierRule";
|
|
8
8
|
|
|
9
|
-
import { optionalQuantifierRuleName } from "
|
|
9
|
+
import { optionalQuantifierRuleName } from "../../ruleNames";
|
|
10
10
|
|
|
11
11
|
const { questionMark } = specialSymbols;
|
|
12
12
|
|
|
13
|
-
export default class
|
|
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
|
|
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 "
|
|
4
|
-
import PartBNFNode from "
|
|
5
|
-
import TerminalPartRuleDefinition from "
|
|
6
|
-
import NonTerminalPartRuleDefinition from "
|
|
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 "
|
|
8
|
+
import { partRuleName } from "../../ruleNames";
|
|
9
9
|
|
|
10
|
-
export default class
|
|
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
|
|
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
|
+
}
|