clarity-pattern-parser 3.0.16 → 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/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/{ReferencePattern.ts → Reference.ts} +32 -28
- 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 +2 -51
- package/src/tests/Not.test.ts +51 -0
- package/src/tests/Or.test.ts +113 -0
- package/src/tests/Pattern.test.ts +40 -139
- 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 -26
- 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 -152
- 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 -76
- 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/ReferencePattern.test.ts +0 -24
- 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
|
@@ -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
|
-
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import ValuePattern from "./ValuePattern";
|
|
2
|
-
import ValueNode from "../../ast/ValueNode";
|
|
3
|
-
import ParseError from "../../patterns/ParseError";
|
|
4
|
-
import OptionalValue from "./OptionalValue";
|
|
5
|
-
import Permutor from "../../Permutor";
|
|
6
|
-
const permutor = new Permutor();
|
|
7
|
-
export default class AndValue extends ValuePattern {
|
|
8
|
-
constructor(name, patterns) {
|
|
9
|
-
super("and-value", name, patterns);
|
|
10
|
-
this.index = 0;
|
|
11
|
-
this.nodes = [];
|
|
12
|
-
this.node = null;
|
|
13
|
-
this.mark = 0;
|
|
14
|
-
this._assertArguments();
|
|
15
|
-
}
|
|
16
|
-
_assertArguments() {
|
|
17
|
-
if (this._children.length < 2) {
|
|
18
|
-
throw new Error("Invalid Argument: AndValue needs to have more than one value pattern.");
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
_reset(cursor) {
|
|
22
|
-
this.index = 0;
|
|
23
|
-
this.nodes = [];
|
|
24
|
-
this.node = null;
|
|
25
|
-
this.cursor = cursor;
|
|
26
|
-
this.mark = this.cursor.mark();
|
|
27
|
-
}
|
|
28
|
-
parse(cursor) {
|
|
29
|
-
this._reset(cursor);
|
|
30
|
-
this._tryPatterns();
|
|
31
|
-
return this.node;
|
|
32
|
-
}
|
|
33
|
-
_tryPatterns() {
|
|
34
|
-
while (true) {
|
|
35
|
-
const pattern = this._children[this.index];
|
|
36
|
-
const node = pattern.parse(this.cursor);
|
|
37
|
-
if (this.cursor.hasUnresolvedError()) {
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
this.nodes.push(node);
|
|
42
|
-
}
|
|
43
|
-
if (!this._next()) {
|
|
44
|
-
this._processValue();
|
|
45
|
-
break;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
_next() {
|
|
50
|
-
if (this._hasMorePatterns()) {
|
|
51
|
-
if (this.cursor.hasNext()) {
|
|
52
|
-
// If the last result was a failed optional, then don't increment the cursor.
|
|
53
|
-
if (this.nodes[this.nodes.length - 1] != null) {
|
|
54
|
-
this.cursor.next();
|
|
55
|
-
}
|
|
56
|
-
this.index++;
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
else if (this.nodes[this.nodes.length - 1] == null) {
|
|
60
|
-
this.index++;
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
this._assertRestOfPatternsAreOptional();
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
_hasMorePatterns() {
|
|
71
|
-
return this.index + 1 < this._children.length;
|
|
72
|
-
}
|
|
73
|
-
_assertRestOfPatternsAreOptional() {
|
|
74
|
-
const areTheRestOptional = this.children.every((pattern, index) => {
|
|
75
|
-
return index <= this.index || pattern instanceof OptionalValue;
|
|
76
|
-
});
|
|
77
|
-
if (!areTheRestOptional) {
|
|
78
|
-
const parseError = new ParseError(`Could not match ${this.name} before string ran out.`, this.index, this);
|
|
79
|
-
this.cursor.throwError(parseError);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
_processValue() {
|
|
83
|
-
if (this.cursor.hasUnresolvedError()) {
|
|
84
|
-
this.node = null;
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
this.nodes = this.nodes.filter((node) => node != null);
|
|
88
|
-
const lastNode = this.nodes[this.nodes.length - 1];
|
|
89
|
-
const startIndex = this.mark;
|
|
90
|
-
const endIndex = lastNode.endIndex;
|
|
91
|
-
const value = this.nodes.map((node) => node.value).join("");
|
|
92
|
-
this.node = new ValueNode("and-value", this.name, value, startIndex, endIndex);
|
|
93
|
-
this.cursor.index = this.node.endIndex;
|
|
94
|
-
this.cursor.addMatch(this, this.node);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
clone(name) {
|
|
98
|
-
if (typeof name !== "string") {
|
|
99
|
-
name = this.name;
|
|
100
|
-
}
|
|
101
|
-
return new AndValue(name, this._children);
|
|
102
|
-
}
|
|
103
|
-
getTokens() {
|
|
104
|
-
let tokens = [];
|
|
105
|
-
for (let x = 0; x < this._children.length; x++) {
|
|
106
|
-
const child = this._children[x];
|
|
107
|
-
if (child instanceof OptionalValue) {
|
|
108
|
-
tokens = tokens.concat(child.getTokens());
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
tokens = tokens.concat(child.getTokens());
|
|
112
|
-
break;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return tokens;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
//# sourceMappingURL=AndValue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AndValue.js","sourceRoot":"","sources":["../../../src/patterns/value/AndValue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import ValuePattern from "./ValuePattern";
|
|
2
|
-
import ValueNode from "../../ast/ValueNode";
|
|
3
|
-
import Cursor from "../../Cursor";
|
|
4
|
-
export default class AnyOfThese extends ValuePattern {
|
|
5
|
-
characters: string;
|
|
6
|
-
node: ValueNode | null;
|
|
7
|
-
cursor: Cursor;
|
|
8
|
-
mark: number;
|
|
9
|
-
constructor(name: string, characters: string);
|
|
10
|
-
private _assertArguments;
|
|
11
|
-
parse(cursor: Cursor): ValueNode | null;
|
|
12
|
-
private _reset;
|
|
13
|
-
private _tryPattern;
|
|
14
|
-
private _isMatch;
|
|
15
|
-
private _processError;
|
|
16
|
-
clone(name?: string): AnyOfThese;
|
|
17
|
-
getTokens(): string[];
|
|
18
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import ValuePattern from "./ValuePattern";
|
|
2
|
-
import ParseError from "../ParseError";
|
|
3
|
-
import ValueNode from "../../ast/ValueNode";
|
|
4
|
-
export default class AnyOfThese extends ValuePattern {
|
|
5
|
-
constructor(name, characters) {
|
|
6
|
-
super("any-of-these", name);
|
|
7
|
-
this.node = null;
|
|
8
|
-
this.mark = 0;
|
|
9
|
-
this.characters = characters;
|
|
10
|
-
this._assertArguments();
|
|
11
|
-
}
|
|
12
|
-
_assertArguments() {
|
|
13
|
-
if (typeof this.characters !== "string") {
|
|
14
|
-
throw new Error("Invalid Arguments: The characters argument needs to be a string of characters.");
|
|
15
|
-
}
|
|
16
|
-
if (this.characters.length < 1) {
|
|
17
|
-
throw new Error("Invalid Arguments: The characters argument needs to be at least one character long.");
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
parse(cursor) {
|
|
21
|
-
this._reset(cursor);
|
|
22
|
-
this._tryPattern();
|
|
23
|
-
return this.node;
|
|
24
|
-
}
|
|
25
|
-
_reset(cursor) {
|
|
26
|
-
this.cursor = cursor;
|
|
27
|
-
this.mark = this.cursor.mark();
|
|
28
|
-
this.node = null;
|
|
29
|
-
}
|
|
30
|
-
_tryPattern() {
|
|
31
|
-
if (this._isMatch()) {
|
|
32
|
-
const value = this.cursor.getChar();
|
|
33
|
-
const index = this.cursor.getIndex();
|
|
34
|
-
this.node = new ValueNode("any-of-these", this.name, value, index, index);
|
|
35
|
-
this.cursor.addMatch(this, this.node);
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
this._processError();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
_isMatch() {
|
|
42
|
-
return this.characters.indexOf(this.cursor.getChar()) > -1;
|
|
43
|
-
}
|
|
44
|
-
_processError() {
|
|
45
|
-
const message = `ParseError: Expected one of these characters, '${this.characters}' but found '${this.cursor.getChar()}' while parsing for '${this.name}'.`;
|
|
46
|
-
const parseError = new ParseError(message, this.cursor.getIndex(), this);
|
|
47
|
-
this.cursor.throwError(parseError);
|
|
48
|
-
}
|
|
49
|
-
clone(name) {
|
|
50
|
-
if (typeof name !== "string") {
|
|
51
|
-
name = this.name;
|
|
52
|
-
}
|
|
53
|
-
return new AnyOfThese(name, this.characters);
|
|
54
|
-
}
|
|
55
|
-
getTokens() {
|
|
56
|
-
return this.characters.split("");
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=AnyOfThese.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AnyOfThese.js","sourceRoot":"","sources":["../../../src/patterns/value/AnyOfThese.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAI5C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,YAAY;IAMlD,YAAY,IAAY,EAAE,UAAkB;QAC1C,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QALvB,SAAI,GAAqB,IAAI,CAAC;QAE9B,SAAI,GAAW,CAAC,CAAC;QAItB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,gBAAgB;QACtB,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;YACvC,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;SACH;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAC;SACH;IACH,CAAC;IAED,KAAK,CAAC,MAAc;QAClB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEO,MAAM,CAAC,MAAc;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAErC,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAE1E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACvC;aAAM;YACL,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;IACH,CAAC;IAEO,QAAQ;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IAEO,aAAa;QACnB,MAAM,OAAO,GAAG,kDACd,IAAI,CAAC,UACP,gBAAgB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,wBAAwB,IAAI,CAAC,IAAI,IAAI,CAAC;QAE3E,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,IAAa;QACjB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAClB;QACD,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import ValueNode from "../../ast/ValueNode";
|
|
2
|
-
import ValuePattern from "./ValuePattern";
|
|
3
|
-
import Cursor from "../../Cursor";
|
|
4
|
-
export default class Literal extends ValuePattern {
|
|
5
|
-
literal: string;
|
|
6
|
-
node: ValueNode | null;
|
|
7
|
-
cursor: Cursor;
|
|
8
|
-
mark: number;
|
|
9
|
-
substring: string;
|
|
10
|
-
constructor(name: string, literal: string);
|
|
11
|
-
private _assertArguments;
|
|
12
|
-
parse(cursor: Cursor): ValueNode | null;
|
|
13
|
-
private _reset;
|
|
14
|
-
private _tryPattern;
|
|
15
|
-
private _processError;
|
|
16
|
-
private _processMatch;
|
|
17
|
-
clone(name?: string): Literal;
|
|
18
|
-
getTokenValue(): string;
|
|
19
|
-
getTokens(): string[];
|
|
20
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import ParseError from "../ParseError";
|
|
2
|
-
import ValueNode from "../../ast/ValueNode";
|
|
3
|
-
import ValuePattern from "./ValuePattern";
|
|
4
|
-
export default class Literal extends ValuePattern {
|
|
5
|
-
constructor(name, literal) {
|
|
6
|
-
super("literal", name);
|
|
7
|
-
this.node = null;
|
|
8
|
-
this.mark = 0;
|
|
9
|
-
this.substring = "";
|
|
10
|
-
this.literal = literal;
|
|
11
|
-
this._assertArguments();
|
|
12
|
-
}
|
|
13
|
-
_assertArguments() {
|
|
14
|
-
if (typeof this.literal !== "string") {
|
|
15
|
-
throw new Error("Invalid Arguments: The literal argument needs to be a string of characters.");
|
|
16
|
-
}
|
|
17
|
-
if (this.literal.length < 1) {
|
|
18
|
-
throw new Error("Invalid Arguments: The literalString argument needs to be at least one character long.");
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
parse(cursor) {
|
|
22
|
-
this._reset(cursor);
|
|
23
|
-
this._tryPattern();
|
|
24
|
-
return this.node;
|
|
25
|
-
}
|
|
26
|
-
_reset(cursor) {
|
|
27
|
-
this.cursor = cursor;
|
|
28
|
-
this.mark = this.cursor.mark();
|
|
29
|
-
this.substring = this.cursor.text.substring(this.mark, this.mark + this.literal.length);
|
|
30
|
-
this.node = null;
|
|
31
|
-
}
|
|
32
|
-
_tryPattern() {
|
|
33
|
-
if (this.substring === this.literal) {
|
|
34
|
-
this._processMatch();
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
this._processError();
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
_processError() {
|
|
41
|
-
const message = `ParseError: Expected '${this.literal}' but found '${this.substring}'.`;
|
|
42
|
-
const parseError = new ParseError(message, this.cursor.getIndex(), this);
|
|
43
|
-
this.cursor.throwError(parseError);
|
|
44
|
-
}
|
|
45
|
-
_processMatch() {
|
|
46
|
-
this.node = new ValueNode("literal", this.name, this.substring, this.mark, this.mark + this.literal.length - 1);
|
|
47
|
-
this.cursor.index = this.node.endIndex;
|
|
48
|
-
this.cursor.addMatch(this, this.node);
|
|
49
|
-
}
|
|
50
|
-
clone(name) {
|
|
51
|
-
if (typeof name !== "string") {
|
|
52
|
-
name = this.name;
|
|
53
|
-
}
|
|
54
|
-
return new Literal(name, this.literal);
|
|
55
|
-
}
|
|
56
|
-
getTokenValue() {
|
|
57
|
-
return this.literal;
|
|
58
|
-
}
|
|
59
|
-
getTokens() {
|
|
60
|
-
return [this.getTokenValue()];
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=Literal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Literal.js","sourceRoot":"","sources":["../../../src/patterns/value/Literal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import ValuePattern from "./ValuePattern";
|
|
2
|
-
import ValueNode from "../../ast/ValueNode";
|
|
3
|
-
import Cursor from "../../Cursor";
|
|
4
|
-
export default class NotValue extends ValuePattern {
|
|
5
|
-
match: string;
|
|
6
|
-
node: ValueNode | null;
|
|
7
|
-
cursor: Cursor;
|
|
8
|
-
mark: number;
|
|
9
|
-
constructor(name: string, pattern: ValuePattern);
|
|
10
|
-
private _assertArguments;
|
|
11
|
-
private _reset;
|
|
12
|
-
parse(cursor: Cursor): ValueNode | null;
|
|
13
|
-
private _tryPattern;
|
|
14
|
-
private _processMatch;
|
|
15
|
-
clone(name?: string): NotValue;
|
|
16
|
-
getTokens(): never[];
|
|
17
|
-
}
|