clarity-pattern-parser 8.4.14 → 9.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/TODO.md +4 -1
- package/dist/grammar/Grammar.d.ts +18 -10
- package/dist/grammar/patterns/andLiteral.d.ts +2 -0
- package/dist/grammar/patterns/anonymousPattern.d.ts +2 -0
- package/dist/grammar/patterns/inlinePattern.d.ts +1 -0
- package/dist/grammar/patterns/literals.d.ts +3 -0
- package/dist/grammar/patterns/pattern.d.ts +2 -2
- package/dist/grammar/patterns.d.ts +2 -0
- package/dist/index.browser.js +472 -185
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.esm.js +471 -186
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +472 -185
- package/dist/index.js.map +1 -1
- package/dist/patterns/And.d.ts +4 -1
- package/dist/patterns/Cursor.d.ts +5 -0
- package/dist/patterns/CursorHistory.d.ts +7 -0
- package/dist/patterns/FiniteRepeat.d.ts +4 -1
- package/dist/patterns/InfiniteRepeat.d.ts +5 -4
- package/dist/patterns/Literal.d.ts +6 -5
- package/dist/patterns/Not.d.ts +5 -4
- package/dist/patterns/Or.d.ts +5 -4
- package/dist/patterns/Pattern.d.ts +4 -2
- package/dist/patterns/Reference.d.ts +5 -4
- package/dist/patterns/Regex.d.ts +5 -4
- package/dist/patterns/Repeat.d.ts +3 -0
- package/dist/patterns/arePatternsEqual.d.ts +2 -0
- package/package.json +1 -1
- package/src/grammar/Grammar.test.ts +126 -72
- package/src/grammar/Grammar.ts +241 -158
- package/src/grammar/patterns/anonymousPattern.ts +23 -0
- package/src/grammar/patterns/body.ts +9 -6
- package/src/grammar/patterns/comment.ts +3 -2
- package/src/grammar/patterns/grammar.ts +15 -12
- package/src/grammar/patterns/import.ts +18 -12
- package/src/grammar/patterns/literal.ts +2 -3
- package/src/grammar/patterns/literals.ts +20 -0
- package/src/grammar/patterns/optionsLiteral.ts +19 -0
- package/src/grammar/patterns/pattern.ts +23 -9
- package/src/grammar/patterns/regexLiteral.ts +1 -0
- package/src/grammar/patterns/repeatLiteral.ts +30 -25
- package/src/grammar/patterns/sequenceLiteral.ts +24 -0
- package/src/grammar/patterns/spaces.ts +8 -6
- package/src/grammar/patterns/statement.ts +8 -20
- package/src/grammar/patterns.test.ts +38 -0
- package/src/grammar/patterns.ts +24 -0
- package/src/grammar/spec.md +4 -12
- package/src/index.ts +11 -5
- package/src/intellisense/AutoComplete.test.ts +41 -40
- package/src/intellisense/css/method.ts +2 -2
- package/src/intellisense/css/unit.ts +2 -2
- package/src/intellisense/css/value.ts +1 -1
- package/src/intellisense/javascript/Javascript.test.ts +31 -32
- package/src/intellisense/javascript/arrayLiteral.ts +7 -6
- package/src/intellisense/javascript/assignment.ts +6 -6
- package/src/intellisense/javascript/deleteStatement.ts +2 -2
- package/src/intellisense/javascript/escapedCharacter.ts +6 -6
- package/src/intellisense/javascript/exponent.ts +6 -6
- package/src/intellisense/javascript/expression.ts +18 -17
- package/src/intellisense/javascript/fraction.ts +3 -3
- package/src/intellisense/javascript/infixOperator.ts +10 -10
- package/src/intellisense/javascript/integer.ts +1 -1
- package/src/intellisense/javascript/invocation.ts +8 -7
- package/src/intellisense/javascript/literal.ts +3 -3
- package/src/intellisense/javascript/numberLiteral.ts +5 -4
- package/src/intellisense/javascript/objectAccess.ts +2 -3
- package/src/intellisense/javascript/objectLiteral.ts +8 -7
- package/src/intellisense/javascript/optionalSpaces.ts +2 -1
- package/src/intellisense/javascript/parameters.ts +5 -5
- package/src/intellisense/javascript/prefixOperator.ts +3 -4
- package/src/intellisense/javascript/propertyAccess.ts +9 -8
- package/src/intellisense/javascript/stringLiteral.ts +14 -15
- package/src/patterns/Cursor.ts +42 -4
- package/src/patterns/CursorHistory.ts +20 -4
- package/src/patterns/FiniteRepeat.test.ts +52 -51
- package/src/patterns/FiniteRepeat.ts +60 -38
- package/src/patterns/InfiniteRepeat.test.ts +36 -49
- package/src/patterns/InfiniteRepeat.ts +70 -37
- package/src/patterns/Literal.test.ts +16 -27
- package/src/patterns/Literal.ts +34 -27
- package/src/patterns/Not.test.ts +7 -7
- package/src/patterns/Not.ts +24 -6
- package/src/patterns/Optional.test.ts +164 -0
- package/src/patterns/Optional.ts +143 -0
- package/src/patterns/{Or.test.ts → Options.test.ts} +51 -49
- package/src/patterns/{Or.ts → Options.ts} +32 -23
- package/src/patterns/Pattern.ts +6 -5
- package/src/patterns/Reference.test.ts +21 -22
- package/src/patterns/Reference.ts +26 -15
- package/src/patterns/Regex.test.ts +15 -15
- package/src/patterns/Regex.ts +29 -19
- package/src/patterns/Repeat.test.ts +12 -22
- package/src/patterns/Repeat.ts +22 -21
- package/src/patterns/{And.test.ts → Sequence.test.ts} +78 -78
- package/src/patterns/{And.ts → Sequence.ts} +40 -29
- package/src/patterns/arePatternsEqual.ts +12 -0
- package/src/patterns/clonePatterns.ts +2 -2
- package/src/grammar/patterns/andLiteral.ts +0 -8
- package/src/grammar/patterns/orLiteral.ts +0 -8
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { Node } from "../ast/Node";
|
|
2
2
|
import { ParseError } from "./ParseError";
|
|
3
3
|
import { Pattern } from "./Pattern";
|
|
4
|
+
export interface Trace {
|
|
5
|
+
pattern: Pattern;
|
|
6
|
+
cursorIndex: number;
|
|
7
|
+
}
|
|
4
8
|
export interface Match {
|
|
5
9
|
pattern: Pattern | null;
|
|
6
10
|
node: Node | null;
|
|
@@ -14,6 +18,7 @@ export declare class CursorHistory {
|
|
|
14
18
|
private _patterns;
|
|
15
19
|
private _nodes;
|
|
16
20
|
private _errors;
|
|
21
|
+
private _trace;
|
|
17
22
|
get isRecording(): boolean;
|
|
18
23
|
get rootMatch(): Match;
|
|
19
24
|
get leafMatch(): Match;
|
|
@@ -23,9 +28,11 @@ export declare class CursorHistory {
|
|
|
23
28
|
get error(): ParseError | null;
|
|
24
29
|
get nodes(): Node[];
|
|
25
30
|
get patterns(): Pattern[];
|
|
31
|
+
get trace(): Trace[];
|
|
26
32
|
recordMatch(pattern: Pattern, node: Node): void;
|
|
27
33
|
recordErrorAt(firstIndex: number, lastIndex: number, pattern: Pattern): void;
|
|
28
34
|
startRecording(): void;
|
|
29
35
|
stopRecording(): void;
|
|
30
36
|
resolveError(): void;
|
|
37
|
+
pushStackTrace(trace: Trace): void;
|
|
31
38
|
}
|
|
@@ -8,6 +8,7 @@ export interface FiniteRepeatOptions {
|
|
|
8
8
|
trimDivider?: boolean;
|
|
9
9
|
}
|
|
10
10
|
export declare class FiniteRepeat implements Pattern {
|
|
11
|
+
private _id;
|
|
11
12
|
private _type;
|
|
12
13
|
private _name;
|
|
13
14
|
private _parent;
|
|
@@ -16,6 +17,7 @@ export declare class FiniteRepeat implements Pattern {
|
|
|
16
17
|
private _min;
|
|
17
18
|
private _max;
|
|
18
19
|
private _trimDivider;
|
|
20
|
+
get id(): string;
|
|
19
21
|
get type(): string;
|
|
20
22
|
get name(): string;
|
|
21
23
|
get parent(): Pattern | null;
|
|
@@ -27,7 +29,7 @@ export declare class FiniteRepeat implements Pattern {
|
|
|
27
29
|
constructor(name: string, pattern: Pattern, repeatAmount: number, options?: FiniteRepeatOptions);
|
|
28
30
|
parse(cursor: Cursor): Node | null;
|
|
29
31
|
test(text: string): boolean;
|
|
30
|
-
exec(text: string): ParseResult;
|
|
32
|
+
exec(text: string, record?: boolean): ParseResult;
|
|
31
33
|
clone(name?: string, isOptional?: boolean): Pattern;
|
|
32
34
|
getTokens(): string[];
|
|
33
35
|
getTokensAfter(childReference: Pattern): string[];
|
|
@@ -36,4 +38,5 @@ export declare class FiniteRepeat implements Pattern {
|
|
|
36
38
|
getPatternsAfter(childReference: Pattern): Pattern[];
|
|
37
39
|
getNextPatterns(): Pattern[];
|
|
38
40
|
find(predicate: (p: Pattern) => boolean): Pattern | null;
|
|
41
|
+
isEqual(pattern: FiniteRepeat): boolean;
|
|
39
42
|
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { Node } from "../ast/Node";
|
|
2
2
|
import { Cursor } from "./Cursor";
|
|
3
3
|
import { Pattern } from "./Pattern";
|
|
4
|
+
import { ParseResult } from "./ParseResult";
|
|
4
5
|
export interface InfiniteRepeatOptions {
|
|
5
6
|
divider?: Pattern;
|
|
6
7
|
min?: number;
|
|
7
8
|
trimDivider?: boolean;
|
|
8
9
|
}
|
|
9
10
|
export declare class InfiniteRepeat implements Pattern {
|
|
11
|
+
private _id;
|
|
10
12
|
private _type;
|
|
11
13
|
private _name;
|
|
12
14
|
private _parent;
|
|
@@ -17,6 +19,7 @@ export declare class InfiniteRepeat implements Pattern {
|
|
|
17
19
|
private _firstIndex;
|
|
18
20
|
private _min;
|
|
19
21
|
private _trimDivider;
|
|
22
|
+
get id(): string;
|
|
20
23
|
get type(): string;
|
|
21
24
|
get name(): string;
|
|
22
25
|
get parent(): Pattern | null;
|
|
@@ -27,10 +30,7 @@ export declare class InfiniteRepeat implements Pattern {
|
|
|
27
30
|
constructor(name: string, pattern: Pattern, options?: InfiniteRepeatOptions);
|
|
28
31
|
private _assignChildrenToParent;
|
|
29
32
|
test(text: string): boolean;
|
|
30
|
-
exec(text: string):
|
|
31
|
-
ast: Node | null;
|
|
32
|
-
cursor: Cursor;
|
|
33
|
-
};
|
|
33
|
+
exec(text: string, record?: boolean): ParseResult;
|
|
34
34
|
parse(cursor: Cursor): Node | null;
|
|
35
35
|
private _meetsMin;
|
|
36
36
|
private _tryToParse;
|
|
@@ -44,4 +44,5 @@ export declare class InfiniteRepeat implements Pattern {
|
|
|
44
44
|
getNextPatterns(): Pattern[];
|
|
45
45
|
find(predicate: (p: Pattern) => boolean): Pattern | null;
|
|
46
46
|
clone(name?: string, isOptional?: boolean): Pattern;
|
|
47
|
+
isEqual(pattern: InfiniteRepeat): boolean;
|
|
47
48
|
}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { Node } from "../ast/Node";
|
|
2
2
|
import { Cursor } from "./Cursor";
|
|
3
|
+
import { ParseResult } from "./ParseResult";
|
|
3
4
|
import { Pattern } from "./Pattern";
|
|
4
5
|
export declare class Literal implements Pattern {
|
|
6
|
+
private _id;
|
|
5
7
|
private _type;
|
|
6
8
|
private _name;
|
|
7
9
|
private _parent;
|
|
8
10
|
private _isOptional;
|
|
9
|
-
private
|
|
11
|
+
private _text;
|
|
10
12
|
private _runes;
|
|
11
13
|
private _firstIndex;
|
|
12
14
|
private _lastIndex;
|
|
13
15
|
private _endIndex;
|
|
16
|
+
get id(): string;
|
|
14
17
|
get type(): string;
|
|
15
18
|
get name(): string;
|
|
16
19
|
get parent(): Pattern | null;
|
|
@@ -19,10 +22,7 @@ export declare class Literal implements Pattern {
|
|
|
19
22
|
get isOptional(): boolean;
|
|
20
23
|
constructor(name: string, value: string, isOptional?: boolean);
|
|
21
24
|
test(text: string): boolean;
|
|
22
|
-
exec(text: string):
|
|
23
|
-
ast: Node | null;
|
|
24
|
-
cursor: Cursor;
|
|
25
|
-
};
|
|
25
|
+
exec(text: string, record?: boolean): ParseResult;
|
|
26
26
|
parse(cursor: Cursor): Node | null;
|
|
27
27
|
private _tryToParse;
|
|
28
28
|
private _createNode;
|
|
@@ -34,4 +34,5 @@ export declare class Literal implements Pattern {
|
|
|
34
34
|
getPatternsAfter(): Pattern[];
|
|
35
35
|
getNextPatterns(): Pattern[];
|
|
36
36
|
find(_predicate: (p: Pattern) => boolean): Pattern | null;
|
|
37
|
+
isEqual(pattern: Literal): boolean;
|
|
37
38
|
}
|
package/dist/patterns/Not.d.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { Node } from "../ast/Node";
|
|
2
2
|
import { Cursor } from "./Cursor";
|
|
3
|
+
import { ParseResult } from "./ParseResult";
|
|
3
4
|
import { Pattern } from "./Pattern";
|
|
4
5
|
export declare class Not implements Pattern {
|
|
6
|
+
private _id;
|
|
5
7
|
private _type;
|
|
6
8
|
private _name;
|
|
7
9
|
private _parent;
|
|
8
10
|
private _children;
|
|
11
|
+
get id(): string;
|
|
9
12
|
get type(): string;
|
|
10
13
|
get name(): string;
|
|
11
14
|
get parent(): Pattern | null;
|
|
@@ -14,10 +17,7 @@ export declare class Not implements Pattern {
|
|
|
14
17
|
get isOptional(): boolean;
|
|
15
18
|
constructor(name: string, pattern: Pattern);
|
|
16
19
|
test(text: string): boolean;
|
|
17
|
-
exec(text: string):
|
|
18
|
-
ast: Node | null;
|
|
19
|
-
cursor: Cursor;
|
|
20
|
-
};
|
|
20
|
+
exec(text: string, record?: boolean): ParseResult;
|
|
21
21
|
parse(cursor: Cursor): Node | null;
|
|
22
22
|
clone(name?: string): Pattern;
|
|
23
23
|
getTokens(): string[];
|
|
@@ -27,4 +27,5 @@ export declare class Not implements Pattern {
|
|
|
27
27
|
getPatternsAfter(_childReference: Pattern): Pattern[];
|
|
28
28
|
getNextPatterns(): Pattern[];
|
|
29
29
|
find(predicate: (p: Pattern) => boolean): Pattern | null;
|
|
30
|
+
isEqual(pattern: Not): boolean;
|
|
30
31
|
}
|
package/dist/patterns/Or.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Node } from "../ast/Node";
|
|
2
2
|
import { Cursor } from "./Cursor";
|
|
3
3
|
import { Pattern } from "./Pattern";
|
|
4
|
+
import { ParseResult } from "./ParseResult";
|
|
4
5
|
export declare class Or implements Pattern {
|
|
6
|
+
private _id;
|
|
5
7
|
private _type;
|
|
6
8
|
private _name;
|
|
7
9
|
private _parent;
|
|
@@ -9,6 +11,7 @@ export declare class Or implements Pattern {
|
|
|
9
11
|
private _isOptional;
|
|
10
12
|
private _isGreedy;
|
|
11
13
|
private _firstIndex;
|
|
14
|
+
get id(): string;
|
|
12
15
|
get type(): string;
|
|
13
16
|
get name(): string;
|
|
14
17
|
get parent(): Pattern | null;
|
|
@@ -18,10 +21,7 @@ export declare class Or implements Pattern {
|
|
|
18
21
|
constructor(name: string, options: Pattern[], isOptional?: boolean, isGreedy?: boolean);
|
|
19
22
|
private _assignChildrenToParent;
|
|
20
23
|
test(text: string): boolean;
|
|
21
|
-
exec(text: string):
|
|
22
|
-
ast: Node | null;
|
|
23
|
-
cursor: Cursor;
|
|
24
|
-
};
|
|
24
|
+
exec(text: string, record?: boolean): ParseResult;
|
|
25
25
|
parse(cursor: Cursor): Node | null;
|
|
26
26
|
private _tryToParse;
|
|
27
27
|
getTokens(): string[];
|
|
@@ -32,4 +32,5 @@ export declare class Or implements Pattern {
|
|
|
32
32
|
getNextPatterns(): Pattern[];
|
|
33
33
|
find(predicate: (p: Pattern) => boolean): Pattern | null;
|
|
34
34
|
clone(name?: string, isOptional?: boolean): Pattern;
|
|
35
|
+
isEqual(pattern: Or): boolean;
|
|
35
36
|
}
|
|
@@ -2,14 +2,15 @@ import { Cursor } from "./Cursor";
|
|
|
2
2
|
import { Node } from "../ast/Node";
|
|
3
3
|
import { ParseResult } from "./ParseResult";
|
|
4
4
|
export interface Pattern {
|
|
5
|
+
id: string;
|
|
5
6
|
type: string;
|
|
6
7
|
name: string;
|
|
7
8
|
parent: Pattern | null;
|
|
8
9
|
children: Pattern[];
|
|
9
10
|
isOptional: boolean;
|
|
10
11
|
parse(cursor: Cursor): Node | null;
|
|
11
|
-
exec(text: string): ParseResult;
|
|
12
|
-
test(text: string): boolean;
|
|
12
|
+
exec(text: string, record?: boolean): ParseResult;
|
|
13
|
+
test(text: string, record?: boolean): boolean;
|
|
13
14
|
clone(name?: string, isOptional?: boolean): Pattern;
|
|
14
15
|
getTokens(): string[];
|
|
15
16
|
getTokensAfter(childReference: Pattern): string[];
|
|
@@ -18,4 +19,5 @@ export interface Pattern {
|
|
|
18
19
|
getPatternsAfter(childReference: Pattern): Pattern[];
|
|
19
20
|
getNextPatterns(): Pattern[];
|
|
20
21
|
find(predicate: (p: Pattern) => boolean): Pattern | null;
|
|
22
|
+
isEqual(pattern: Pattern): boolean;
|
|
21
23
|
}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { Node } from "../ast/Node";
|
|
2
2
|
import { Cursor } from "./Cursor";
|
|
3
3
|
import { Pattern } from "./Pattern";
|
|
4
|
+
import { ParseResult } from "./ParseResult";
|
|
4
5
|
export declare class Reference implements Pattern {
|
|
6
|
+
private _id;
|
|
5
7
|
private _type;
|
|
6
8
|
private _name;
|
|
7
9
|
private _parent;
|
|
8
10
|
private _isOptional;
|
|
9
11
|
private _pattern;
|
|
10
12
|
private _children;
|
|
13
|
+
get id(): string;
|
|
11
14
|
get type(): string;
|
|
12
15
|
get name(): string;
|
|
13
16
|
get parent(): Pattern | null;
|
|
@@ -16,10 +19,7 @@ export declare class Reference implements Pattern {
|
|
|
16
19
|
get isOptional(): boolean;
|
|
17
20
|
constructor(name: string, isOptional?: boolean);
|
|
18
21
|
test(text: string): boolean;
|
|
19
|
-
exec(text: string):
|
|
20
|
-
ast: Node | null;
|
|
21
|
-
cursor: Cursor;
|
|
22
|
-
};
|
|
22
|
+
exec(text: string, record?: boolean): ParseResult;
|
|
23
23
|
parse(cursor: Cursor): Node | null;
|
|
24
24
|
private _getPatternSafely;
|
|
25
25
|
private _findPattern;
|
|
@@ -32,4 +32,5 @@ export declare class Reference implements Pattern {
|
|
|
32
32
|
getNextPatterns(): Pattern[];
|
|
33
33
|
find(_predicate: (p: Pattern) => boolean): Pattern | null;
|
|
34
34
|
clone(name?: string, isOptional?: boolean): Pattern;
|
|
35
|
+
isEqual(pattern: Reference): boolean;
|
|
35
36
|
}
|
package/dist/patterns/Regex.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Node } from "../ast/Node";
|
|
2
2
|
import { Pattern } from "./Pattern";
|
|
3
3
|
import { Cursor } from "./Cursor";
|
|
4
|
+
import { ParseResult } from "./ParseResult";
|
|
4
5
|
export declare class Regex implements Pattern {
|
|
6
|
+
private _id;
|
|
5
7
|
private _type;
|
|
6
8
|
private _name;
|
|
7
9
|
private _isOptional;
|
|
@@ -13,6 +15,7 @@ export declare class Regex implements Pattern {
|
|
|
13
15
|
private _firstIndex;
|
|
14
16
|
private _substring;
|
|
15
17
|
private _tokens;
|
|
18
|
+
get id(): string;
|
|
16
19
|
get type(): string;
|
|
17
20
|
get name(): string;
|
|
18
21
|
get parent(): Pattern | null;
|
|
@@ -22,10 +25,7 @@ export declare class Regex implements Pattern {
|
|
|
22
25
|
constructor(name: string, regex: string, isOptional?: boolean);
|
|
23
26
|
private assertArguments;
|
|
24
27
|
test(text: string): boolean;
|
|
25
|
-
exec(text: string):
|
|
26
|
-
ast: Node | null;
|
|
27
|
-
cursor: Cursor;
|
|
28
|
-
};
|
|
28
|
+
exec(text: string, record?: boolean): ParseResult;
|
|
29
29
|
parse(cursor: Cursor): Node | null;
|
|
30
30
|
private resetState;
|
|
31
31
|
private tryToParse;
|
|
@@ -40,4 +40,5 @@ export declare class Regex implements Pattern {
|
|
|
40
40
|
getNextPatterns(): Pattern[];
|
|
41
41
|
find(_predicate: (p: Pattern) => boolean): Pattern | null;
|
|
42
42
|
setTokens(tokens: string[]): void;
|
|
43
|
+
isEqual(pattern: Regex): boolean;
|
|
43
44
|
}
|
|
@@ -9,11 +9,13 @@ export interface RepeatOptions {
|
|
|
9
9
|
trimDivider?: boolean;
|
|
10
10
|
}
|
|
11
11
|
export declare class Repeat implements Pattern {
|
|
12
|
+
private _id;
|
|
12
13
|
private _repeatPattern;
|
|
13
14
|
private _parent;
|
|
14
15
|
private _pattern;
|
|
15
16
|
private _options;
|
|
16
17
|
private _children;
|
|
18
|
+
get id(): string;
|
|
17
19
|
get type(): string;
|
|
18
20
|
get name(): string;
|
|
19
21
|
get parent(): Pattern | null;
|
|
@@ -32,4 +34,5 @@ export declare class Repeat implements Pattern {
|
|
|
32
34
|
getPatternsAfter(_childReference: Pattern): Pattern[];
|
|
33
35
|
getNextPatterns(): Pattern[];
|
|
34
36
|
find(predicate: (p: Pattern) => boolean): Pattern | null;
|
|
37
|
+
isEqual(pattern: Repeat): boolean;
|
|
35
38
|
}
|