clarity-pattern-parser 3.0.15 → 4.0.0
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/README.md +0 -191
- package/dist/ast/Node.d.ts +4 -5
- package/dist/index.browser.js +476 -731
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +10 -18
- package/dist/index.esm.js +469 -716
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +476 -731
- package/dist/index.js.map +1 -1
- package/dist/patterns/And.d.ts +24 -0
- package/dist/patterns/Literal.d.ts +19 -0
- package/dist/patterns/LookAhead.d.ts +8 -0
- package/dist/patterns/Not.d.ts +11 -0
- package/dist/patterns/Or.d.ts +22 -0
- package/dist/patterns/Pattern.d.ts +6 -7
- package/dist/patterns/{RecursivePattern.d.ts → Recursive.d.ts} +4 -4
- package/dist/patterns/Reference.d.ts +14 -0
- package/dist/patterns/Regex.d.ts +21 -0
- package/dist/patterns/Repeat.d.ts +20 -0
- package/package.json +1 -1
- package/src/CursorHistory.ts +1 -1
- package/src/ast/Node.ts +20 -17
- package/src/ast/Visitor.ts +14 -18
- package/src/index.ts +17 -33
- package/src/patterns/And.ts +178 -0
- package/src/patterns/Literal.ts +91 -0
- package/src/patterns/LookAhead.ts +32 -0
- package/src/patterns/Not.ts +50 -0
- package/src/patterns/Or.ts +132 -0
- package/src/patterns/Pattern.ts +31 -47
- package/src/patterns/Recursive.ts +92 -0
- package/src/patterns/Reference.ts +127 -0
- package/src/patterns/Regex.ts +123 -0
- package/src/patterns/Repeat.ts +155 -0
- package/src/tests/{AndValue.test.ts → And.test.ts} +31 -41
- package/src/tests/CursorHistory.test.ts +6 -6
- package/src/tests/Cusor.test.ts +7 -10
- package/src/tests/Literal.test.ts +3 -5
- package/src/tests/LookAhead.test.ts +44 -0
- package/src/tests/Not.test.ts +51 -0
- package/src/tests/Or.test.ts +113 -0
- package/src/tests/Pattern.test.ts +41 -141
- package/src/tests/{RecursivePattern.test.ts → Recursive.test.ts} +10 -8
- package/src/tests/Reference.test.ts +16 -0
- package/src/tests/{RepeatValue.test.ts → Repeat.test.ts} +10 -42
- package/src/tests/TextSuggester.test.ts +20 -28
- package/src/tests/{NodeVisitor.test.ts → Visitor.test.ts} +42 -21
- package/src/tests/cssPatterns/cssValue.ts +2 -2
- package/src/tests/cssPatterns/divider.ts +2 -2
- package/src/tests/cssPatterns/hex.ts +2 -2
- package/src/tests/cssPatterns/method.ts +7 -9
- package/src/tests/cssPatterns/name.ts +2 -2
- package/src/tests/cssPatterns/number.ts +2 -2
- package/src/tests/cssPatterns/optionalSpaces.ts +1 -2
- package/src/tests/cssPatterns/spaces.ts +2 -2
- package/src/tests/cssPatterns/unit.ts +3 -3
- package/src/tests/cssPatterns/value.ts +2 -2
- package/src/tests/cssPatterns/values.ts +2 -2
- package/src/tests/htmlPatterns/element.ts +18 -33
- package/src/tests/javascriptPatterns/boolean.ts +2 -3
- package/src/tests/javascriptPatterns/json.ts +14 -24
- package/src/tests/javascriptPatterns/name.ts +3 -20
- package/src/tests/javascriptPatterns/number.ts +2 -2
- package/src/tests/javascriptPatterns/objectLiteral.ts +9 -16
- package/src/tests/javascriptPatterns/string.ts +26 -24
- package/src/tests/javascriptPatterns/unit.ts +3 -6
- package/src/tests/javascriptPatterns/whitespace.ts +8 -12
- package/src/tests/naturalLanguage/filter.ts +16 -33
- package/src/tests/patterns/sentence.ts +8 -8
- package/dist/Cursor.js +0 -105
- package/dist/Cursor.js.map +0 -1
- package/dist/CursorHistory.js +0 -104
- package/dist/CursorHistory.js.map +0 -1
- package/dist/Permutor.d.ts +0 -13
- package/dist/Permutor.js +0 -52
- package/dist/Permutor.js.map +0 -1
- package/dist/TextSuggester.js +0 -244
- package/dist/TextSuggester.js.map +0 -1
- package/dist/ast/CompositeNode.d.ts +0 -6
- package/dist/ast/CompositeNode.js +0 -17
- package/dist/ast/CompositeNode.js.map +0 -1
- package/dist/ast/Node.js +0 -16
- package/dist/ast/Node.js.map +0 -1
- package/dist/ast/NodeVisitor.d.ts +0 -31
- package/dist/ast/ValueNode.d.ts +0 -6
- package/dist/ast/ValueNode.js +0 -14
- package/dist/ast/ValueNode.js.map +0 -1
- package/dist/ast/Visitor.js +0 -209
- package/dist/ast/Visitor.js.map +0 -1
- package/dist/patterns/ParseError.js +0 -9
- package/dist/patterns/ParseError.js.map +0 -1
- package/dist/patterns/Pattern.js +0 -127
- package/dist/patterns/Pattern.js.map +0 -1
- package/dist/patterns/RecursivePattern.js +0 -65
- package/dist/patterns/RecursivePattern.js.map +0 -1
- package/dist/patterns/composite/AndComposite.d.ts +0 -22
- package/dist/patterns/composite/AndComposite.js +0 -117
- package/dist/patterns/composite/AndComposite.js.map +0 -1
- package/dist/patterns/composite/CompositePattern.d.ts +0 -4
- package/dist/patterns/composite/CompositePattern.js +0 -7
- package/dist/patterns/composite/CompositePattern.js.map +0 -1
- package/dist/patterns/composite/OptionalComposite.d.ts +0 -10
- package/dist/patterns/composite/OptionalComposite.js +0 -29
- package/dist/patterns/composite/OptionalComposite.js.map +0 -1
- package/dist/patterns/composite/OrComposite.d.ts +0 -16
- package/dist/patterns/composite/OrComposite.js +0 -69
- package/dist/patterns/composite/OrComposite.js.map +0 -1
- package/dist/patterns/composite/RepeatComposite.d.ts +0 -21
- package/dist/patterns/composite/RepeatComposite.js +0 -88
- package/dist/patterns/composite/RepeatComposite.js.map +0 -1
- package/dist/patterns/value/AndValue.d.ts +0 -21
- package/dist/patterns/value/AndValue.js +0 -118
- package/dist/patterns/value/AndValue.js.map +0 -1
- package/dist/patterns/value/AnyOfThese.d.ts +0 -18
- package/dist/patterns/value/AnyOfThese.js +0 -59
- package/dist/patterns/value/AnyOfThese.js.map +0 -1
- package/dist/patterns/value/Literal.d.ts +0 -20
- package/dist/patterns/value/Literal.js +0 -63
- package/dist/patterns/value/Literal.js.map +0 -1
- package/dist/patterns/value/NotValue.d.ts +0 -17
- package/dist/patterns/value/NotValue.js +0 -70
- package/dist/patterns/value/NotValue.js.map +0 -1
- package/dist/patterns/value/OptionalValue.d.ts +0 -9
- package/dist/patterns/value/OptionalValue.js +0 -32
- package/dist/patterns/value/OptionalValue.js.map +0 -1
- package/dist/patterns/value/OrValue.d.ts +0 -19
- package/dist/patterns/value/OrValue.js +0 -73
- package/dist/patterns/value/OrValue.js.map +0 -1
- package/dist/patterns/value/RegexValue.d.ts +0 -19
- package/dist/patterns/value/RegexValue.js +0 -69
- package/dist/patterns/value/RegexValue.js.map +0 -1
- package/dist/patterns/value/RepeatValue.d.ts +0 -19
- package/dist/patterns/value/RepeatValue.js +0 -89
- package/dist/patterns/value/RepeatValue.js.map +0 -1
- package/dist/patterns/value/ValuePattern.d.ts +0 -5
- package/dist/patterns/value/ValuePattern.js +0 -7
- package/dist/patterns/value/ValuePattern.js.map +0 -1
- package/src/Permutor.ts +0 -64
- package/src/ast/CompositeNode.ts +0 -26
- package/src/ast/ValueNode.ts +0 -28
- package/src/patterns/RecursivePattern.ts +0 -86
- package/src/patterns/composite/AndComposite.ts +0 -159
- package/src/patterns/composite/CompositePattern.ts +0 -7
- package/src/patterns/composite/OptionalComposite.ts +0 -37
- package/src/patterns/composite/OrComposite.ts +0 -96
- package/src/patterns/composite/RepeatComposite.ts +0 -130
- package/src/patterns/value/AndValue.ts +0 -153
- package/src/patterns/value/AnyOfThese.ts +0 -81
- package/src/patterns/value/Literal.ts +0 -92
- package/src/patterns/value/NotValue.ts +0 -95
- package/src/patterns/value/OptionalValue.ts +0 -39
- package/src/patterns/value/OrValue.ts +0 -103
- package/src/patterns/value/RegexValue.ts +0 -103
- package/src/patterns/value/RepeatValue.ts +0 -131
- package/src/patterns/value/ValuePattern.ts +0 -8
- package/src/tests/AndComposite.test.ts +0 -102
- package/src/tests/AnyOfThese.test.ts +0 -74
- package/src/tests/CompositeNode.test.ts +0 -33
- package/src/tests/NotValue.test.ts +0 -69
- package/src/tests/OptionalValue.test.ts +0 -50
- package/src/tests/OrComposite.test.ts +0 -75
- package/src/tests/OrValue.test.ts +0 -171
- package/src/tests/Permutor.test.ts +0 -30
- package/src/tests/RegexValue.test.ts +0 -22
- package/src/tests/RepeatComposite.test.ts +0 -58
- package/src/tests/ValueNode.test.ts +0 -24
- package/src/tests/javascriptPatterns/varStatement.ts +0 -0
- package/src/tests/readmeDemo.test.ts +0 -124
package/dist/patterns/Pattern.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import Cursor from "../Cursor";
|
|
2
|
-
export default class Pattern {
|
|
3
|
-
constructor(type = "", name, children = []) {
|
|
4
|
-
this._type = type;
|
|
5
|
-
this._name = name;
|
|
6
|
-
this._children = [];
|
|
7
|
-
this._parent = null;
|
|
8
|
-
this.isSequence = false;
|
|
9
|
-
this._assertName();
|
|
10
|
-
this.children = children;
|
|
11
|
-
}
|
|
12
|
-
_assertName() {
|
|
13
|
-
if (typeof this.name !== "string") {
|
|
14
|
-
throw new Error("Invalid Argument: Patterns needs to have a name that's a string.");
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exec(text) {
|
|
18
|
-
const cursor = new Cursor(text);
|
|
19
|
-
const node = this.parse(cursor);
|
|
20
|
-
if (cursor.didSuccessfullyParse()) {
|
|
21
|
-
return node;
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
test(text) {
|
|
28
|
-
return this.exec(text) != null;
|
|
29
|
-
}
|
|
30
|
-
get name() {
|
|
31
|
-
return this._name;
|
|
32
|
-
}
|
|
33
|
-
get type() {
|
|
34
|
-
return this._type;
|
|
35
|
-
}
|
|
36
|
-
get parent() {
|
|
37
|
-
return this._parent;
|
|
38
|
-
}
|
|
39
|
-
set parent(value) {
|
|
40
|
-
if (value instanceof Pattern) {
|
|
41
|
-
this._parent = value;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
get children() {
|
|
45
|
-
return this._children;
|
|
46
|
-
}
|
|
47
|
-
set children(value) {
|
|
48
|
-
this._children = value;
|
|
49
|
-
this._cloneChildren();
|
|
50
|
-
this._assertChildren();
|
|
51
|
-
this._assignAsParent();
|
|
52
|
-
}
|
|
53
|
-
_assertChildren() {
|
|
54
|
-
// Empty,can be overridden by subclasses.
|
|
55
|
-
}
|
|
56
|
-
_cloneChildren() {
|
|
57
|
-
// We need to clone the patterns so nested patterns can be parsed.
|
|
58
|
-
this._children = this._children.map((pattern) => {
|
|
59
|
-
if (!(pattern instanceof Pattern)) {
|
|
60
|
-
throw new Error(`The ${this.name} pattern has an invalid child pattern.`);
|
|
61
|
-
}
|
|
62
|
-
return pattern.clone();
|
|
63
|
-
});
|
|
64
|
-
// We need to freeze the children so they aren't modified.
|
|
65
|
-
Object.freeze(this._children);
|
|
66
|
-
}
|
|
67
|
-
_assignAsParent() {
|
|
68
|
-
this._children.forEach((child) => (child.parent = this));
|
|
69
|
-
}
|
|
70
|
-
getNextTokens() {
|
|
71
|
-
var _a, _b, _c;
|
|
72
|
-
const parent = this._parent;
|
|
73
|
-
if (parent != null) {
|
|
74
|
-
const siblings = parent.children;
|
|
75
|
-
const index = siblings.findIndex((c) => c === this);
|
|
76
|
-
const nextSibling = siblings[index + 1];
|
|
77
|
-
// I don't like this, so I think we need to rethink this.
|
|
78
|
-
if (parent.type.indexOf("repeat") === 0) {
|
|
79
|
-
const tokens = parent.getNextTokens();
|
|
80
|
-
if (index === 0 && siblings.length > 1) {
|
|
81
|
-
return nextSibling.getTokens().concat(tokens);
|
|
82
|
-
}
|
|
83
|
-
else if (index === 1) {
|
|
84
|
-
return siblings[0].getTokens();
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
return this.getTokens().concat(tokens);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// Another thing I don't like.
|
|
91
|
-
if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.indexOf("and")) === 0 &&
|
|
92
|
-
nextSibling != null &&
|
|
93
|
-
((_c = nextSibling === null || nextSibling === void 0 ? void 0 : nextSibling.type) === null || _c === void 0 ? void 0 : _c.indexOf("optional")) === 0) {
|
|
94
|
-
let tokens = [];
|
|
95
|
-
for (let x = index + 1; x < siblings.length; x++) {
|
|
96
|
-
const child = siblings[x];
|
|
97
|
-
if (child.type.indexOf("optional") === 0) {
|
|
98
|
-
tokens = tokens.concat(child.getTokens());
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
tokens = tokens.concat(child.getTokens());
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
if (x === siblings.length - 1) {
|
|
105
|
-
tokens = tokens.concat(this._parent.getNextTokens());
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return tokens;
|
|
109
|
-
}
|
|
110
|
-
// If you are an or you have already qualified.
|
|
111
|
-
if (parent.type.indexOf("or") === 0) {
|
|
112
|
-
return parent.getNextTokens();
|
|
113
|
-
}
|
|
114
|
-
if (nextSibling != null) {
|
|
115
|
-
return nextSibling.getTokens();
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
return parent.getNextTokens();
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
return [];
|
|
122
|
-
}
|
|
123
|
-
getTokenValue() {
|
|
124
|
-
return null;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=Pattern.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Pattern.js","sourceRoot":"","sources":["../../src/patterns/Pattern.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import Pattern from "./Pattern";
|
|
2
|
-
import ParserError from "./ParseError";
|
|
3
|
-
export default class RecursivePattern extends Pattern {
|
|
4
|
-
constructor(name) {
|
|
5
|
-
super("recursive", name);
|
|
6
|
-
this.pattern = null;
|
|
7
|
-
this.isRecursing = false;
|
|
8
|
-
}
|
|
9
|
-
getPattern() {
|
|
10
|
-
return this._climb(this.parent, (pattern) => {
|
|
11
|
-
if (pattern == null) {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
return pattern.name === this.name;
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
_climb(pattern, isMatch) {
|
|
18
|
-
if (isMatch(pattern)) {
|
|
19
|
-
return pattern;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
if (pattern && pattern.parent != null) {
|
|
23
|
-
return this._climb(pattern.parent, isMatch);
|
|
24
|
-
}
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
parse(cursor) {
|
|
29
|
-
if (this.pattern == null) {
|
|
30
|
-
const pattern = this.getPattern();
|
|
31
|
-
if (pattern == null) {
|
|
32
|
-
cursor.throwError(new ParserError(`Couldn't find parent pattern to recursively parse, with the name ${this.name}.`, cursor.index, this));
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
this.pattern = pattern.clone();
|
|
36
|
-
this.pattern.parent = this;
|
|
37
|
-
}
|
|
38
|
-
const node = this.pattern.parse(cursor);
|
|
39
|
-
if (!cursor.hasUnresolvedError() && node != null) {
|
|
40
|
-
cursor.addMatch(this, node);
|
|
41
|
-
}
|
|
42
|
-
return node;
|
|
43
|
-
}
|
|
44
|
-
clone(name) {
|
|
45
|
-
if (typeof name !== "string") {
|
|
46
|
-
name = this.name;
|
|
47
|
-
}
|
|
48
|
-
return new RecursivePattern(name);
|
|
49
|
-
}
|
|
50
|
-
getTokenValue() {
|
|
51
|
-
var _a;
|
|
52
|
-
return ((_a = this.getPattern()) === null || _a === void 0 ? void 0 : _a.getTokenValue()) || null;
|
|
53
|
-
}
|
|
54
|
-
getTokens() {
|
|
55
|
-
var _a;
|
|
56
|
-
if (!this.isRecursing) {
|
|
57
|
-
this.isRecursing = true;
|
|
58
|
-
const tokens = ((_a = this.getPattern()) === null || _a === void 0 ? void 0 : _a.getTokens()) || [];
|
|
59
|
-
this.isRecursing = false;
|
|
60
|
-
return tokens;
|
|
61
|
-
}
|
|
62
|
-
return [];
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=RecursivePattern.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RecursivePattern.js","sourceRoot":"","sources":["../../src/patterns/RecursivePattern.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,WAAW,MAAM,cAAc,CAAC;AAGvC,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IAInD,YAAY,IAAY;QACtB,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAHpB,YAAO,GAAmB,IAAI,CAAC;QAIpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,OAAuB,EAAE,EAAE;YAC1D,IAAI,OAAO,IAAI,IAAI,EAAE;gBACnB,OAAO,KAAK,CAAC;aACd;YACD,OAAO,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CACJ,OAAuB,EACvB,OAA6C;QAE7C,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACpB,OAAO,OAAO,CAAC;SAChB;aAAM;YACL,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;gBACrC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aAC7C;YACD,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,KAAK,CAAC,MAAc;QAClB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAElC,IAAI,OAAO,IAAI,IAAI,EAAE;gBACnB,MAAM,CAAC,UAAU,CACf,IAAI,WAAW,CACb,oEAAoE,IAAI,CAAC,IAAI,GAAG,EAChF,MAAM,CAAC,KAAK,EACZ,IAAe,CAChB,CACF,CAAC;gBACF,OAAO,IAAI,CAAC;aACb;YAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAe,CAAC;SACvC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE;YAChD,MAAM,CAAC,QAAQ,CAAC,IAAe,EAAE,IAAI,CAAC,CAAC;SACxC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAa;QACjB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAClB;QACD,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,aAAa;;QACX,OAAO,CAAA,MAAA,IAAI,CAAC,UAAU,EAAE,0CAAE,aAAa,EAAE,KAAI,IAAI,CAAC;IACpD,CAAC;IAED,SAAS;;QACP,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,MAAM,MAAM,GAAG,CAAA,MAAA,IAAI,CAAC,UAAU,EAAE,0CAAE,SAAS,EAAE,KAAI,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YAEzB,OAAO,MAAM,CAAC;SACf;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import CompositePattern from "./CompositePattern";
|
|
2
|
-
import CompositeNode from "../../ast/CompositeNode";
|
|
3
|
-
import Pattern from "../Pattern";
|
|
4
|
-
import Cursor from "../../Cursor";
|
|
5
|
-
export default class AndComposite extends CompositePattern {
|
|
6
|
-
index: number;
|
|
7
|
-
nodes: CompositeNode[];
|
|
8
|
-
node: CompositeNode | null;
|
|
9
|
-
cursor: Cursor;
|
|
10
|
-
mark: number;
|
|
11
|
-
constructor(name: string, patterns?: Pattern[]);
|
|
12
|
-
private _assertArguments;
|
|
13
|
-
private _reset;
|
|
14
|
-
parse(cursor: Cursor): CompositeNode | null;
|
|
15
|
-
private _tryPatterns;
|
|
16
|
-
private _next;
|
|
17
|
-
private _hasMorePatterns;
|
|
18
|
-
private _assertRestOfPatternsAreOptional;
|
|
19
|
-
private _processValue;
|
|
20
|
-
clone(name?: string): AndComposite;
|
|
21
|
-
getTokens(): string[];
|
|
22
|
-
}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import CompositePattern from "./CompositePattern";
|
|
2
|
-
import CompositeNode from "../../ast/CompositeNode";
|
|
3
|
-
import ParseError from "../../patterns/ParseError";
|
|
4
|
-
import OptionalValue from "../value/OptionalValue";
|
|
5
|
-
import OptionalComposite from "./OptionalComposite";
|
|
6
|
-
export default class AndComposite extends CompositePattern {
|
|
7
|
-
constructor(name, patterns = []) {
|
|
8
|
-
super("and-composite", name, patterns);
|
|
9
|
-
this._assertArguments();
|
|
10
|
-
}
|
|
11
|
-
_assertArguments() {
|
|
12
|
-
if (this._children.length < 2) {
|
|
13
|
-
throw new Error("Invalid Argument: AndValue needs to have more than one value pattern.");
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
_reset(cursor) {
|
|
17
|
-
this.index = 0;
|
|
18
|
-
this.nodes = [];
|
|
19
|
-
this.node = null;
|
|
20
|
-
this.cursor = cursor;
|
|
21
|
-
this.mark = this.cursor.mark();
|
|
22
|
-
}
|
|
23
|
-
parse(cursor) {
|
|
24
|
-
this._reset(cursor);
|
|
25
|
-
this._tryPatterns();
|
|
26
|
-
return this.node;
|
|
27
|
-
}
|
|
28
|
-
_tryPatterns() {
|
|
29
|
-
while (true) {
|
|
30
|
-
const pattern = this._children[this.index];
|
|
31
|
-
const node = pattern.parse(this.cursor);
|
|
32
|
-
if (this.cursor.hasUnresolvedError()) {
|
|
33
|
-
this.cursor.moveToMark(this.mark);
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
this.nodes.push(node);
|
|
38
|
-
}
|
|
39
|
-
if (!this._next()) {
|
|
40
|
-
this._processValue();
|
|
41
|
-
break;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
_next() {
|
|
46
|
-
if (this._hasMorePatterns()) {
|
|
47
|
-
if (this.cursor.hasNext()) {
|
|
48
|
-
// If the last result was a failed optional, then don't increment the cursor.
|
|
49
|
-
if (this.nodes[this.nodes.length - 1] != null) {
|
|
50
|
-
this.cursor.next();
|
|
51
|
-
}
|
|
52
|
-
this.index++;
|
|
53
|
-
return true;
|
|
54
|
-
}
|
|
55
|
-
else if (this.nodes[this.nodes.length - 1] == null) {
|
|
56
|
-
this.index++;
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
this._assertRestOfPatternsAreOptional();
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
_hasMorePatterns() {
|
|
67
|
-
return this.index + 1 < this._children.length;
|
|
68
|
-
}
|
|
69
|
-
_assertRestOfPatternsAreOptional() {
|
|
70
|
-
const areTheRestOptional = this.children.every((pattern, index) => {
|
|
71
|
-
return (index <= this.index ||
|
|
72
|
-
pattern instanceof OptionalValue ||
|
|
73
|
-
pattern instanceof OptionalComposite);
|
|
74
|
-
});
|
|
75
|
-
if (!areTheRestOptional) {
|
|
76
|
-
const parseError = new ParseError(`Could not match ${this.name} before string ran out.`, this.index, this);
|
|
77
|
-
this.cursor.throwError(parseError);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
_processValue() {
|
|
81
|
-
if (!this.cursor.hasUnresolvedError()) {
|
|
82
|
-
this.nodes = this.nodes.filter((node) => node != null);
|
|
83
|
-
const lastNode = this.nodes[this.nodes.length - 1];
|
|
84
|
-
const startIndex = this.mark;
|
|
85
|
-
const endIndex = lastNode.endIndex;
|
|
86
|
-
this.node = new CompositeNode("and-composite", this.name, startIndex, endIndex);
|
|
87
|
-
this.node.children = this.nodes;
|
|
88
|
-
this.cursor.index = this.node.endIndex;
|
|
89
|
-
this.cursor.addMatch(this, this.node);
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
this.node = null;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
clone(name) {
|
|
96
|
-
if (typeof name !== "string") {
|
|
97
|
-
name = this.name;
|
|
98
|
-
}
|
|
99
|
-
return new AndComposite(name, this._children);
|
|
100
|
-
}
|
|
101
|
-
getTokens() {
|
|
102
|
-
let tokens = [];
|
|
103
|
-
for (let x = 0; x < this._children.length; x++) {
|
|
104
|
-
const child = this._children[x];
|
|
105
|
-
if (child instanceof OptionalValue ||
|
|
106
|
-
child instanceof OptionalComposite) {
|
|
107
|
-
tokens = tokens.concat(child.getTokens());
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
tokens = tokens.concat(child.getTokens());
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return tokens;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=AndComposite.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AndComposite.js","sourceRoot":"","sources":["../../../src/patterns/composite/AndComposite.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,aAAa,MAAM,wBAAwB,CAAC;AACnD,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAKpD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,gBAAgB;IAOxD,YAAY,IAAY,EAAE,WAAsB,EAAE;QAChD,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,gBAAgB;QACtB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;SACH;IACH,CAAC;IAEO,MAAM,CAAC,MAAc;QAC3B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,MAAc;QAClB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEO,YAAY;QAClB,OAAO,IAAI,EAAE;YACX,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAkB,CAAC;YAEzD,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE;gBACpC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM;aACP;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvB;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,MAAM;aACP;SACF;IACH,CAAC;IAEO,KAAK;QACX,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;gBACzB,6EAA6E;gBAC7E,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE;oBAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;iBACpB;gBAED,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE;gBACpD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;aACb;YAED,IAAI,CAAC,gCAAgC,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;SACd;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAChD,CAAC;IAEO,gCAAgC;QACtC,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAChE,OAAO,CACL,KAAK,IAAI,IAAI,CAAC,KAAK;gBACnB,OAAO,YAAY,aAAa;gBAChC,OAAO,YAAY,iBAAiB,CACrC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,EAAE;YACvB,MAAM,UAAU,GAAG,IAAI,UAAU,CAC/B,mBAAmB,IAAI,CAAC,IAAI,yBAAyB,EACrD,IAAI,CAAC,KAAK,EACV,IAAI,CACL,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SACpC;IACH,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE;YACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;YAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;YAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAEnC,IAAI,CAAC,IAAI,GAAG,IAAI,aAAa,CAC3B,eAAe,EACf,IAAI,CAAC,IAAI,EACT,UAAU,EACV,QAAQ,CACT,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAEhC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACvC;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;IACH,CAAC;IAED,KAAK,CAAC,IAAa;QACjB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAClB;QACD,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,SAAS;QACP,IAAI,MAAM,GAAa,EAAE,CAAC;QAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAEhC,IACE,KAAK,YAAY,aAAa;gBAC9B,KAAK,YAAY,iBAAiB,EAClC;gBACA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;aAC3C;iBAAM;gBACL,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC1C,MAAM;aACP;SACF;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CompositePattern.js","sourceRoot":"","sources":["../../../src/patterns/composite/CompositePattern.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAgB,gBAAiB,SAAQ,OAAO;IAC5D,YAAY,IAAY,EAAE,IAAY,EAAE,WAAsB,EAAE;QAC9D,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import CompositePattern from "./CompositePattern";
|
|
2
|
-
import Pattern from "../Pattern";
|
|
3
|
-
import Cursor from "../../Cursor";
|
|
4
|
-
export default class OptionalComposite extends CompositePattern {
|
|
5
|
-
mark: any;
|
|
6
|
-
constructor(pattern: Pattern);
|
|
7
|
-
parse(cursor: Cursor): import("../..").Node | null;
|
|
8
|
-
clone(): OptionalComposite;
|
|
9
|
-
getTokens(): string[];
|
|
10
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import CompositePattern from "./CompositePattern";
|
|
2
|
-
export default class OptionalComposite extends CompositePattern {
|
|
3
|
-
constructor(pattern) {
|
|
4
|
-
super("optional-composite", "optional-composite", [pattern]);
|
|
5
|
-
}
|
|
6
|
-
parse(cursor) {
|
|
7
|
-
const mark = cursor.mark();
|
|
8
|
-
this.mark = mark;
|
|
9
|
-
const node = this.children[0].parse(cursor);
|
|
10
|
-
if (cursor.hasUnresolvedError()) {
|
|
11
|
-
cursor.resolveError();
|
|
12
|
-
cursor.moveToMark(mark);
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
if (node != null) {
|
|
17
|
-
cursor.addMatch(this, node);
|
|
18
|
-
}
|
|
19
|
-
return node;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
clone() {
|
|
23
|
-
return new OptionalComposite(this.children[0]);
|
|
24
|
-
}
|
|
25
|
-
getTokens() {
|
|
26
|
-
return this._children[0].getTokens();
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=OptionalComposite.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OptionalComposite.js","sourceRoot":"","sources":["../../../src/patterns/composite/OptionalComposite.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAIlD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,gBAAgB;IAG7D,YAAY,OAAgB;QAC1B,KAAK,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,MAAc;QAClB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,MAAM,CAAC,kBAAkB,EAAE,EAAE;YAC/B,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;SACb;aAAM;YACL,IAAI,IAAI,IAAI,IAAI,EAAC;gBACf,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAC7B;YACD,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,KAAK;QACH,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import CompositePattern from "./CompositePattern";
|
|
2
|
-
import Pattern from "../Pattern";
|
|
3
|
-
import Cursor from "../../Cursor";
|
|
4
|
-
export default class OrComposite extends CompositePattern {
|
|
5
|
-
cursor: any;
|
|
6
|
-
mark: any;
|
|
7
|
-
index: any;
|
|
8
|
-
node: any;
|
|
9
|
-
constructor(name: string, patterns: Pattern[]);
|
|
10
|
-
private _assertArguments;
|
|
11
|
-
private _reset;
|
|
12
|
-
parse(cursor: Cursor): any;
|
|
13
|
-
private _tryPattern;
|
|
14
|
-
clone(name?: string): OrComposite;
|
|
15
|
-
getTokens(): string[];
|
|
16
|
-
}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import CompositePattern from "./CompositePattern";
|
|
2
|
-
import OptionalValue from "../value/OptionalValue";
|
|
3
|
-
import OptionalComposite from "./OptionalComposite";
|
|
4
|
-
export default class OrComposite extends CompositePattern {
|
|
5
|
-
constructor(name, patterns) {
|
|
6
|
-
super("or-composite", name, patterns);
|
|
7
|
-
this._assertArguments();
|
|
8
|
-
}
|
|
9
|
-
_assertArguments() {
|
|
10
|
-
if (this._children.length < 2) {
|
|
11
|
-
throw new Error("Invalid Argument: OrValue needs to have more than one value pattern.");
|
|
12
|
-
}
|
|
13
|
-
const hasOptionalChildren = this._children.some((pattern) => pattern instanceof OptionalValue || pattern instanceof OptionalComposite);
|
|
14
|
-
if (hasOptionalChildren) {
|
|
15
|
-
throw new Error("OrComposite cannot have optional values.");
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
_reset(cursor) {
|
|
19
|
-
this.cursor = cursor;
|
|
20
|
-
this.mark = null;
|
|
21
|
-
this.index = 0;
|
|
22
|
-
this.node = null;
|
|
23
|
-
this.mark = cursor.mark();
|
|
24
|
-
}
|
|
25
|
-
parse(cursor) {
|
|
26
|
-
this._reset(cursor);
|
|
27
|
-
this._tryPattern();
|
|
28
|
-
if (this.node != null) {
|
|
29
|
-
this.cursor.addMatch(this, this.node);
|
|
30
|
-
}
|
|
31
|
-
return this.node;
|
|
32
|
-
}
|
|
33
|
-
_tryPattern() {
|
|
34
|
-
while (true) {
|
|
35
|
-
const pattern = this._children[this.index];
|
|
36
|
-
this.node = pattern.parse(this.cursor);
|
|
37
|
-
if (this.cursor.hasUnresolvedError()) {
|
|
38
|
-
if (this.index + 1 < this._children.length) {
|
|
39
|
-
this.cursor.resolveError();
|
|
40
|
-
this.index++;
|
|
41
|
-
this.cursor.moveToMark(this.mark);
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
this.node = null;
|
|
45
|
-
break;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
this.cursor.index = this.node.endIndex;
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
clone(name) {
|
|
55
|
-
if (typeof name !== "string") {
|
|
56
|
-
name = this.name;
|
|
57
|
-
}
|
|
58
|
-
return new OrComposite(name, this._children);
|
|
59
|
-
}
|
|
60
|
-
getTokens() {
|
|
61
|
-
const tokens = this._children.map((c) => c.getTokens());
|
|
62
|
-
const hasPrimitiveTokens = tokens.every((t) => t.every((value) => typeof value === "string"));
|
|
63
|
-
if (hasPrimitiveTokens && tokens.length > 0) {
|
|
64
|
-
return tokens.reduce((acc, t) => acc.concat(t), []);
|
|
65
|
-
}
|
|
66
|
-
return this._children[0].getTokens();
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=OrComposite.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OrComposite.js","sourceRoot":"","sources":["../../../src/patterns/composite/OrComposite.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import CompositePattern from "./CompositePattern";
|
|
2
|
-
import CompositeNode from "../../ast/CompositeNode";
|
|
3
|
-
import Pattern from "../Pattern";
|
|
4
|
-
import Cursor from "../../Cursor";
|
|
5
|
-
import Node from "../../ast/Node";
|
|
6
|
-
export default class RepeatComposite extends CompositePattern {
|
|
7
|
-
private _pattern;
|
|
8
|
-
private _divider;
|
|
9
|
-
nodes: Node[];
|
|
10
|
-
cursor: Cursor;
|
|
11
|
-
mark: number;
|
|
12
|
-
node: CompositeNode | null;
|
|
13
|
-
constructor(name: string, pattern: Pattern, divider?: Pattern);
|
|
14
|
-
private _assertArguments;
|
|
15
|
-
private _reset;
|
|
16
|
-
parse(cursor: Cursor): CompositeNode | null;
|
|
17
|
-
private _tryPattern;
|
|
18
|
-
private _processMatch;
|
|
19
|
-
clone(name?: string): RepeatComposite;
|
|
20
|
-
getTokens(): string[];
|
|
21
|
-
}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import CompositePattern from "./CompositePattern";
|
|
2
|
-
import CompositeNode from "../../ast/CompositeNode";
|
|
3
|
-
import ParseError from "../ParseError";
|
|
4
|
-
import OptionalComposite from "./OptionalComposite";
|
|
5
|
-
export default class RepeatComposite extends CompositePattern {
|
|
6
|
-
constructor(name, pattern, divider) {
|
|
7
|
-
super("repeat-composite", name, divider != null ? [pattern, divider] : [pattern]);
|
|
8
|
-
this.nodes = [];
|
|
9
|
-
this.mark = 0;
|
|
10
|
-
this.node = null;
|
|
11
|
-
this._pattern = this.children[0];
|
|
12
|
-
this._divider = this.children[1];
|
|
13
|
-
this._assertArguments();
|
|
14
|
-
}
|
|
15
|
-
_assertArguments() {
|
|
16
|
-
if (this._pattern instanceof OptionalComposite) {
|
|
17
|
-
throw new Error("Invalid Arguments: The pattern cannot be a optional pattern.");
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
_reset(cursor) {
|
|
21
|
-
this.nodes = [];
|
|
22
|
-
this.cursor = cursor;
|
|
23
|
-
this.mark = this.cursor.mark();
|
|
24
|
-
}
|
|
25
|
-
parse(cursor) {
|
|
26
|
-
this._reset(cursor);
|
|
27
|
-
this._tryPattern();
|
|
28
|
-
return this.node;
|
|
29
|
-
}
|
|
30
|
-
_tryPattern() {
|
|
31
|
-
while (true) {
|
|
32
|
-
const node = this._pattern.parse(this.cursor);
|
|
33
|
-
if (this.cursor.hasUnresolvedError() || node == null) {
|
|
34
|
-
this._processMatch();
|
|
35
|
-
break;
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
this.nodes.push(node);
|
|
39
|
-
if (node.endIndex === this.cursor.lastIndex()) {
|
|
40
|
-
this._processMatch();
|
|
41
|
-
break;
|
|
42
|
-
}
|
|
43
|
-
this.cursor.next();
|
|
44
|
-
if (this._divider != null) {
|
|
45
|
-
const mark = this.cursor.mark();
|
|
46
|
-
const node = this._divider.parse(this.cursor);
|
|
47
|
-
if (this.cursor.hasUnresolvedError() || node == null) {
|
|
48
|
-
this.cursor.moveToMark(mark);
|
|
49
|
-
this._processMatch();
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
this.nodes.push(node);
|
|
54
|
-
if (node.endIndex === this.cursor.lastIndex()) {
|
|
55
|
-
this._processMatch();
|
|
56
|
-
break;
|
|
57
|
-
}
|
|
58
|
-
this.cursor.next();
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
_processMatch() {
|
|
65
|
-
const endsOnDivider = this.nodes.length % 2 === 0;
|
|
66
|
-
this.cursor.resolveError();
|
|
67
|
-
if (endsOnDivider) {
|
|
68
|
-
this.cursor.throwError(new ParseError(`Did not find a repeating match of ${this.name}.`, this.mark, this));
|
|
69
|
-
this.node = null;
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
this.node = new CompositeNode("repeat-composite", this.name, this.nodes[0].startIndex, this.nodes[this.nodes.length - 1].endIndex);
|
|
73
|
-
this.node.children = this.nodes;
|
|
74
|
-
this.cursor.index = this.node.endIndex;
|
|
75
|
-
this.cursor.addMatch(this, this.node);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
clone(name) {
|
|
79
|
-
if (typeof name !== "string") {
|
|
80
|
-
name = this.name;
|
|
81
|
-
}
|
|
82
|
-
return new RepeatComposite(name, this._pattern, this._divider);
|
|
83
|
-
}
|
|
84
|
-
getTokens() {
|
|
85
|
-
return this._pattern.getTokens();
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=RepeatComposite.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RepeatComposite.js","sourceRoot":"","sources":["../../../src/patterns/composite/RepeatComposite.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import ValuePattern from "./ValuePattern";
|
|
2
|
-
import ValueNode from "../../ast/ValueNode";
|
|
3
|
-
import Cursor from "../../Cursor";
|
|
4
|
-
export default class AndValue extends ValuePattern {
|
|
5
|
-
index: number;
|
|
6
|
-
nodes: ValueNode[];
|
|
7
|
-
node: ValueNode | null;
|
|
8
|
-
cursor: Cursor;
|
|
9
|
-
mark: number;
|
|
10
|
-
constructor(name: string, patterns: ValuePattern[]);
|
|
11
|
-
private _assertArguments;
|
|
12
|
-
private _reset;
|
|
13
|
-
parse(cursor: Cursor): ValueNode | null;
|
|
14
|
-
private _tryPatterns;
|
|
15
|
-
private _next;
|
|
16
|
-
private _hasMorePatterns;
|
|
17
|
-
private _assertRestOfPatternsAreOptional;
|
|
18
|
-
private _processValue;
|
|
19
|
-
clone(name?: string): AndValue;
|
|
20
|
-
getTokens(): string[];
|
|
21
|
-
}
|