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,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Repeat } from "../../index";
|
|
2
2
|
import divider from "./divider";
|
|
3
3
|
import values from "./values";
|
|
4
4
|
|
|
5
|
-
const cssValue = new
|
|
5
|
+
const cssValue = new Repeat("css-value", values, divider);
|
|
6
6
|
|
|
7
7
|
export default cssValue;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Literal,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
OptionalComposite
|
|
3
|
+
And,
|
|
4
|
+
Repeat,
|
|
5
|
+
Recursive,
|
|
7
6
|
} from "../../index";
|
|
8
7
|
|
|
9
8
|
import name from "./name";
|
|
@@ -12,15 +11,14 @@ import divider from "./divider";
|
|
|
12
11
|
|
|
13
12
|
const openParen = new Literal("open-paren", "(");
|
|
14
13
|
const closeParen = new Literal("close-paren", ")");
|
|
15
|
-
const values = new
|
|
16
|
-
const args = new
|
|
17
|
-
const optionalArgs = new OptionalComposite(args);
|
|
14
|
+
const values = new Recursive("values");
|
|
15
|
+
const args = new Repeat("arguments", values, divider, true);
|
|
18
16
|
|
|
19
|
-
const method = new
|
|
17
|
+
const method = new And("method", [
|
|
20
18
|
name.clone("[Method Name]"),
|
|
21
19
|
openParen,
|
|
22
20
|
optionalSpaces,
|
|
23
|
-
|
|
21
|
+
args,
|
|
24
22
|
optionalSpaces,
|
|
25
23
|
closeParen
|
|
26
24
|
]);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { And, Regex } from "../../index";
|
|
2
2
|
|
|
3
3
|
import number from "./number";
|
|
4
4
|
|
|
5
|
-
const unitType = new
|
|
6
|
-
const unit = new
|
|
5
|
+
const unitType = new Regex("[unit]", "[a-zA-Z%]+");
|
|
6
|
+
const unit = new And("unit", [number, unitType]);
|
|
7
7
|
|
|
8
8
|
export default unit;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Or } from "../../index";
|
|
2
2
|
import unit from "./unit";
|
|
3
3
|
import hex from "./hex";
|
|
4
4
|
import number from "./number";
|
|
5
5
|
import method from "./method";
|
|
6
6
|
import name from "./name"
|
|
7
7
|
|
|
8
|
-
const value = new
|
|
8
|
+
const value = new Or("value", [hex, method, unit, number, name]);
|
|
9
9
|
|
|
10
10
|
export default value;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Repeat } from "../../index";
|
|
2
2
|
import value from "./value";
|
|
3
3
|
import spaces from "./spaces";
|
|
4
4
|
|
|
5
|
-
const values = new
|
|
5
|
+
const values = new Repeat("values", value, spaces);
|
|
6
6
|
|
|
7
7
|
export default values;
|
|
@@ -1,64 +1,49 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Literal,
|
|
3
|
-
OptionalValue,
|
|
4
|
-
AndValue,
|
|
5
|
-
OrValue,
|
|
6
|
-
AndComposite,
|
|
7
|
-
OrComposite,
|
|
8
|
-
RegexValue,
|
|
9
|
-
NotValue,
|
|
10
|
-
RepeatComposite,
|
|
11
|
-
RecursivePattern,
|
|
12
|
-
OptionalComposite
|
|
13
|
-
} from "../../index";
|
|
1
|
+
import { Literal, And, Or, Regex, Repeat, Recursive } from "../../index";
|
|
14
2
|
|
|
15
|
-
const attributeName = new
|
|
16
|
-
"attribute-name",
|
|
17
|
-
"[a-zA-Z_:]+[a-zA-Z0-9_]*"
|
|
18
|
-
);
|
|
3
|
+
const attributeName = new Regex("attribute-name", "[a-zA-Z_:]+[a-zA-Z0-9_]*");
|
|
19
4
|
|
|
20
5
|
const doubleQuote = new Literal("double-quote", '"');
|
|
21
6
|
const greaterThan = new Literal("greater-than", ">");
|
|
22
7
|
const lessThan = new Literal("less-than", "<");
|
|
23
8
|
const forwardSlash = new Literal("forward-slash", "/");
|
|
24
9
|
const equal = new Literal("equal", "=");
|
|
25
|
-
const spaces = new
|
|
26
|
-
const optionalSpaces =
|
|
27
|
-
|
|
28
|
-
const value = new RegexValue("value", '[^"]+');
|
|
10
|
+
const spaces = new Regex(" ", "\\s+", true);
|
|
11
|
+
const optionalSpaces = spaces.clone("optional-spaces", true);
|
|
12
|
+
const value = new Regex("value", '[^"]+');
|
|
29
13
|
|
|
30
|
-
export const attribute = new
|
|
14
|
+
export const attribute = new And("attribute", [
|
|
31
15
|
attributeName,
|
|
32
16
|
equal,
|
|
33
17
|
doubleQuote,
|
|
34
18
|
value,
|
|
35
|
-
doubleQuote
|
|
19
|
+
doubleQuote,
|
|
36
20
|
]);
|
|
37
|
-
const
|
|
38
|
-
const optionalAttributes = new OptionalComposite(attributes);
|
|
21
|
+
const optionalAttributes = new Repeat("attributes", attribute, spaces, true);
|
|
39
22
|
|
|
40
|
-
const elementName = new
|
|
41
|
-
const text = new
|
|
42
|
-
const recursiveElement = new
|
|
23
|
+
const elementName = new Regex("element-name", "[a-zA-Z]+[a-zA-Z-]*");
|
|
24
|
+
const text = new Regex("text", "[^<>]+");
|
|
25
|
+
const recursiveElement = new Recursive("element");
|
|
43
26
|
|
|
44
|
-
const elementContent = new
|
|
27
|
+
const elementContent = new Repeat(
|
|
45
28
|
"children",
|
|
46
|
-
new
|
|
29
|
+
new Or("content", [text, recursiveElement]),
|
|
30
|
+
undefined,
|
|
31
|
+
true
|
|
47
32
|
);
|
|
48
33
|
|
|
49
|
-
const element = new
|
|
34
|
+
const element = new And("element", [
|
|
50
35
|
lessThan,
|
|
51
36
|
elementName.clone("open-element-name"),
|
|
52
37
|
optionalSpaces,
|
|
53
38
|
optionalAttributes,
|
|
54
39
|
optionalSpaces,
|
|
55
40
|
greaterThan,
|
|
56
|
-
|
|
41
|
+
elementContent,
|
|
57
42
|
lessThan,
|
|
58
43
|
forwardSlash,
|
|
59
44
|
elementName.clone("close-element-name"),
|
|
60
45
|
optionalSpaces,
|
|
61
|
-
greaterThan
|
|
46
|
+
greaterThan,
|
|
62
47
|
]);
|
|
63
48
|
|
|
64
49
|
export default element;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import Literal from "../../
|
|
2
|
-
import OrValue from "../../patterns/value/OrValue";
|
|
1
|
+
import {Literal, Or} from "../../index";
|
|
3
2
|
|
|
4
3
|
const trueLiteral = new Literal("true", "true");
|
|
5
4
|
const falseLiteral = new Literal("false", "false");
|
|
6
|
-
const boolean = new
|
|
5
|
+
const boolean = new Or("boolean", [
|
|
7
6
|
trueLiteral,
|
|
8
7
|
falseLiteral
|
|
9
8
|
]);
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
Literal,
|
|
4
|
-
AndComposite,
|
|
5
|
-
RepeatValue,
|
|
6
|
-
OptionalValue,
|
|
7
|
-
RepeatComposite,
|
|
8
|
-
OptionalComposite,
|
|
9
|
-
OrComposite,
|
|
10
|
-
AndValue,
|
|
11
|
-
} from "../../index";
|
|
1
|
+
import { Literal, And, Repeat, Or, Recursive } from "../../index";
|
|
12
2
|
|
|
13
3
|
import string from "./string";
|
|
14
4
|
import number from "./number";
|
|
@@ -20,25 +10,25 @@ const openSquareBracket = new Literal("open-square-bracket", "[");
|
|
|
20
10
|
const closeSquareBracket = new Literal("close-square-bracket", "]");
|
|
21
11
|
const colon = new Literal(":", ":");
|
|
22
12
|
const space = new Literal("space", " ");
|
|
23
|
-
const spaces = new
|
|
24
|
-
const optionalSpaces =
|
|
13
|
+
const spaces = new Repeat("spaces", space);
|
|
14
|
+
const optionalSpaces = spaces.clone("optional-spaces", true);
|
|
25
15
|
const nullLiteral = new Literal("null", "null");
|
|
26
16
|
const comma = new Literal(",", ",");
|
|
27
17
|
|
|
28
|
-
const divider = new
|
|
18
|
+
const divider = new And("divider", [
|
|
29
19
|
optionalSpaces,
|
|
30
20
|
comma,
|
|
31
21
|
optionalSpaces,
|
|
32
22
|
]);
|
|
33
23
|
|
|
34
|
-
const arrayValues = new
|
|
24
|
+
const arrayValues = new Repeat(
|
|
35
25
|
"values",
|
|
36
|
-
new
|
|
26
|
+
new Recursive("literals"),
|
|
37
27
|
divider
|
|
38
28
|
);
|
|
39
|
-
const optionalArrayValues =
|
|
29
|
+
const optionalArrayValues = arrayValues.clone("optional-values", true);
|
|
40
30
|
|
|
41
|
-
const arrayLiteral = new
|
|
31
|
+
const arrayLiteral = new And("array-literal", [
|
|
42
32
|
openSquareBracket,
|
|
43
33
|
optionalSpaces,
|
|
44
34
|
optionalArrayValues,
|
|
@@ -46,18 +36,18 @@ const arrayLiteral = new AndComposite("array-literal", [
|
|
|
46
36
|
closeSquareBracket,
|
|
47
37
|
]);
|
|
48
38
|
|
|
49
|
-
const keyValue = new
|
|
39
|
+
const keyValue = new And("key-value", [
|
|
50
40
|
string,
|
|
51
41
|
optionalSpaces,
|
|
52
42
|
colon,
|
|
53
43
|
optionalSpaces,
|
|
54
|
-
new
|
|
44
|
+
new Recursive("literals"),
|
|
55
45
|
]);
|
|
56
46
|
|
|
57
|
-
const keyValues = new
|
|
58
|
-
const optionalKeyValues =
|
|
47
|
+
const keyValues = new Repeat("key-values", keyValue, divider);
|
|
48
|
+
const optionalKeyValues = keyValues.clone("optional-key-values", true);
|
|
59
49
|
|
|
60
|
-
const objectLiteral = new
|
|
50
|
+
const objectLiteral = new And("object-literal", [
|
|
61
51
|
openCurlyBracket,
|
|
62
52
|
optionalSpaces,
|
|
63
53
|
optionalKeyValues,
|
|
@@ -65,7 +55,7 @@ const objectLiteral = new AndComposite("object-literal", [
|
|
|
65
55
|
closeCurlyBracket,
|
|
66
56
|
]);
|
|
67
57
|
|
|
68
|
-
const json = new
|
|
58
|
+
const json = new Or("literals", [
|
|
69
59
|
number,
|
|
70
60
|
string,
|
|
71
61
|
boolean,
|
|
@@ -75,5 +65,3 @@ const json = new OrComposite("literals", [
|
|
|
75
65
|
]);
|
|
76
66
|
|
|
77
67
|
export default json;
|
|
78
|
-
|
|
79
|
-
|
|
@@ -1,22 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Regex } from "../../index";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
// const digit = new AnyOfThese("digit", "0987654321");
|
|
5
|
-
// const underbar = new Literal("underbar", "_");
|
|
6
|
-
// const character = new OrValue("character", [
|
|
7
|
-
// letter,
|
|
8
|
-
// digit,
|
|
9
|
-
// underbar
|
|
10
|
-
// ]);
|
|
3
|
+
const name = new Regex("name", "[a-zA-Z]+[a-zA-Z0-9_]*");
|
|
11
4
|
|
|
12
|
-
|
|
13
|
-
// const optionalCharacter = new OptionalValue(characterSequence);
|
|
14
|
-
|
|
15
|
-
// const name = new AndValue("name", [
|
|
16
|
-
// letter,
|
|
17
|
-
// optionalCharacter
|
|
18
|
-
// ]);
|
|
19
|
-
|
|
20
|
-
const name = new RegexValue("name", "[a-zA-Z]+[a-zA-Z0-9_]*");
|
|
21
|
-
|
|
22
|
-
export default name;
|
|
5
|
+
export default name;
|
|
@@ -1,29 +1,22 @@
|
|
|
1
|
-
import Literal from "../../
|
|
2
|
-
import AndComposite from "../../patterns/composite/AndComposite";
|
|
3
|
-
import RepeatComposite from "../../patterns/composite/RepeatComposite";
|
|
4
|
-
import OptionalComposite from "../../patterns/composite/OptionalComposite";
|
|
5
|
-
import OrValue from "../../patterns/value/OrValue";
|
|
6
|
-
import OptionalValue from "../../patterns/value/OptionalValue";
|
|
7
|
-
import RecursivePattern from "../../patterns/RecursivePattern";
|
|
1
|
+
import {Literal, And, Repeat, Or, Recursive} from "../../index";
|
|
8
2
|
import name from "./name";
|
|
9
3
|
import string from "./string";
|
|
10
4
|
import whitespace from "./whitespace";
|
|
11
|
-
import AndValue from "../../patterns/value/AndValue";
|
|
12
5
|
|
|
13
|
-
const expression = new
|
|
14
|
-
const optionalWhitespace =
|
|
6
|
+
const expression = new Recursive("expression");
|
|
7
|
+
const optionalWhitespace = whitespace.clone("optional-whitespaces", true);
|
|
15
8
|
const comma = new Literal(",", ",");
|
|
16
9
|
const colon = new Literal(":", ":");
|
|
17
10
|
|
|
18
|
-
const separator = new
|
|
11
|
+
const separator = new And("separator", [
|
|
19
12
|
optionalWhitespace,
|
|
20
13
|
comma,
|
|
21
14
|
optionalWhitespace,
|
|
22
15
|
]);
|
|
23
16
|
|
|
24
|
-
const property = new
|
|
17
|
+
const property = new Or("property", [name, string]);
|
|
25
18
|
|
|
26
|
-
const keyValue = new
|
|
19
|
+
const keyValue = new And("key-value", [
|
|
27
20
|
property,
|
|
28
21
|
optionalWhitespace,
|
|
29
22
|
colon,
|
|
@@ -31,12 +24,12 @@ const keyValue = new AndComposite("key-value", [
|
|
|
31
24
|
expression,
|
|
32
25
|
]);
|
|
33
26
|
|
|
34
|
-
const keyValues = new
|
|
35
|
-
const optionalKeyValues =
|
|
27
|
+
const keyValues = new Repeat("key-values", keyValue, separator);
|
|
28
|
+
const optionalKeyValues = keyValues.clone("optional-key-values", true);
|
|
36
29
|
const openBracket = new Literal("{", "}");
|
|
37
30
|
const closeBracket = new Literal("}", "}");
|
|
38
31
|
|
|
39
|
-
const objectLiteral = new
|
|
32
|
+
const objectLiteral = new And("object-literal", [
|
|
40
33
|
openBracket,
|
|
41
34
|
optionalWhitespace,
|
|
42
35
|
optionalKeyValues,
|
|
@@ -1,30 +1,26 @@
|
|
|
1
|
-
import Literal from "../../
|
|
2
|
-
import NotValue from "../../patterns/value/NotValue";
|
|
3
|
-
import OrValue from "../../patterns/value/OrValue";
|
|
4
|
-
import RepeatValue from "../../patterns/value/RepeatValue";
|
|
5
|
-
import AndValue from "../../patterns/value/AndValue";
|
|
1
|
+
import { Literal, Not, Or, Repeat, And, Regex } from "../../index";
|
|
6
2
|
|
|
7
3
|
const singleQuote = new Literal("single-quote", "'");
|
|
8
4
|
const doubleQuote = new Literal("double-quote", '"');
|
|
9
5
|
const backslash = new Literal("double-quote", "\\");
|
|
10
6
|
|
|
11
|
-
const singleQuoteOrBackslash = new
|
|
7
|
+
const singleQuoteOrBackslash = new Or("single-quote-or-backslash", [
|
|
12
8
|
singleQuote,
|
|
13
|
-
backslash
|
|
9
|
+
backslash,
|
|
14
10
|
]);
|
|
15
11
|
|
|
16
|
-
const doubleQuoteOrBackslash = new
|
|
12
|
+
const doubleQuoteOrBackslash = new Or("single-quote-or-backslash", [
|
|
17
13
|
doubleQuote,
|
|
18
|
-
backslash
|
|
14
|
+
backslash,
|
|
19
15
|
]);
|
|
20
16
|
|
|
21
|
-
const unescapedSingleCharacter = new
|
|
17
|
+
const unescapedSingleCharacter = new Regex(
|
|
22
18
|
"unescaped-single-character",
|
|
23
|
-
|
|
19
|
+
"[^'\\\\]"
|
|
24
20
|
);
|
|
25
|
-
const unescapedDoubleCharacter = new
|
|
21
|
+
const unescapedDoubleCharacter = new Regex(
|
|
26
22
|
"unescaped-double-character",
|
|
27
|
-
|
|
23
|
+
`[^"\\\\]`
|
|
28
24
|
);
|
|
29
25
|
const escapedSingleQuote = new Literal("escaped-single-quote", "\\'");
|
|
30
26
|
const escapedDoubleQuote = new Literal("escaped-double-quote", '\\"');
|
|
@@ -36,7 +32,7 @@ const escapedNewLine = new Literal("escaped-new-line", "\\n");
|
|
|
36
32
|
const escapedCarriageReturn = new Literal("escaped-carriage-return", "\\r");
|
|
37
33
|
const escapedTab = new Literal("escaped-tab", "\\t");
|
|
38
34
|
|
|
39
|
-
const singleQuoteCharacter = new
|
|
35
|
+
const singleQuoteCharacter = new Or("character", [
|
|
40
36
|
escapedSingleQuote,
|
|
41
37
|
escapedDoubleQuote,
|
|
42
38
|
escapedBackslash,
|
|
@@ -46,10 +42,10 @@ const singleQuoteCharacter = new OrValue("character", [
|
|
|
46
42
|
escapedNewLine,
|
|
47
43
|
escapedCarriageReturn,
|
|
48
44
|
escapedTab,
|
|
49
|
-
unescapedSingleCharacter
|
|
45
|
+
unescapedSingleCharacter,
|
|
50
46
|
]);
|
|
51
47
|
|
|
52
|
-
const doubleQuoteCharacter = new
|
|
48
|
+
const doubleQuoteCharacter = new Or("character", [
|
|
53
49
|
escapedSingleQuote,
|
|
54
50
|
escapedDoubleQuote,
|
|
55
51
|
escapedBackslash,
|
|
@@ -59,24 +55,30 @@ const doubleQuoteCharacter = new OrValue("character", [
|
|
|
59
55
|
escapedNewLine,
|
|
60
56
|
escapedCarriageReturn,
|
|
61
57
|
escapedTab,
|
|
62
|
-
unescapedDoubleCharacter
|
|
58
|
+
unescapedDoubleCharacter,
|
|
63
59
|
]);
|
|
64
60
|
|
|
65
|
-
const singleCharacterSequence = new
|
|
66
|
-
|
|
61
|
+
const singleCharacterSequence = new Repeat(
|
|
62
|
+
"string-content",
|
|
63
|
+
singleQuoteCharacter
|
|
64
|
+
);
|
|
65
|
+
const doubleCharacterSequence = new Repeat(
|
|
66
|
+
"string-content",
|
|
67
|
+
doubleQuoteCharacter
|
|
68
|
+
);
|
|
67
69
|
|
|
68
|
-
const singleQuoteString = new
|
|
70
|
+
const singleQuoteString = new And("single-quote-string", [
|
|
69
71
|
singleQuote,
|
|
70
72
|
singleCharacterSequence,
|
|
71
|
-
singleQuote
|
|
73
|
+
singleQuote,
|
|
72
74
|
]);
|
|
73
75
|
|
|
74
|
-
const doubleQuoteString = new
|
|
76
|
+
const doubleQuoteString = new And("double-quote-string", [
|
|
75
77
|
doubleQuote,
|
|
76
78
|
doubleCharacterSequence,
|
|
77
|
-
doubleQuote
|
|
79
|
+
doubleQuote,
|
|
78
80
|
]);
|
|
79
81
|
|
|
80
|
-
const string = new
|
|
82
|
+
const string = new Or("string", [singleQuoteString, doubleQuoteString]);
|
|
81
83
|
|
|
82
84
|
export default string;
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AndComposite,
|
|
3
|
-
RegexValue
|
|
4
|
-
} from "../../index";
|
|
1
|
+
import { And, Regex } from "../../index";
|
|
5
2
|
|
|
6
3
|
import number from "./number";
|
|
7
4
|
|
|
8
|
-
const unitType = new
|
|
9
|
-
const unit = new
|
|
5
|
+
const unitType = new Regex("unit-type", "[a-zA-Z]+|%");
|
|
6
|
+
const unit = new And("unit", [number, unitType]);
|
|
10
7
|
|
|
11
8
|
export default unit;
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import NotValue from "../../patterns/value/NotValue";
|
|
4
|
-
import OrValue from "../../patterns/value/OrValue";
|
|
5
|
-
import RepeatValue from "../../patterns/value/RepeatValue";
|
|
6
|
-
import AndValue from "../../patterns/value/AndValue";
|
|
1
|
+
import { Literal, Or, Repeat, And, Regex} from "../../index";
|
|
2
|
+
|
|
7
3
|
|
|
8
4
|
const space = new Literal("space", " ");
|
|
9
5
|
const tab = new Literal("tab", "\t");
|
|
@@ -14,28 +10,28 @@ const doubleForwardSlash = new Literal("double-forward-slash", "//");
|
|
|
14
10
|
const slashStar = new Literal("slash-star", "/*");
|
|
15
11
|
const starSlash = new Literal("star-slash", "*/");
|
|
16
12
|
|
|
17
|
-
const lineEnd = new
|
|
13
|
+
const lineEnd = new Or("lineEnd", [
|
|
18
14
|
windowsReturn,
|
|
19
15
|
newLine,
|
|
20
16
|
carriageReturn
|
|
21
17
|
]);
|
|
22
18
|
|
|
23
|
-
const lineCommentContent = new
|
|
24
|
-
const blockCommentContent = new
|
|
19
|
+
const lineCommentContent = new Repeat("line-comment-content", new Regex("not-line-end", "[^\r][^\n]|[^\n]"));
|
|
20
|
+
const blockCommentContent = new Repeat("block-comment-content", new Regex("not-start-slash", "[^*][^/]"));
|
|
25
21
|
|
|
26
|
-
const lineComment = new
|
|
22
|
+
const lineComment = new And("line-comment", [
|
|
27
23
|
doubleForwardSlash,
|
|
28
24
|
lineCommentContent,
|
|
29
25
|
lineEnd
|
|
30
26
|
]);
|
|
31
27
|
|
|
32
|
-
const blockComment = new
|
|
28
|
+
const blockComment = new And("block-comment", [
|
|
33
29
|
slashStar,
|
|
34
30
|
blockCommentContent,
|
|
35
31
|
starSlash
|
|
36
32
|
]);
|
|
37
33
|
|
|
38
|
-
const whitespace = new
|
|
34
|
+
const whitespace = new Or("whitespace", [
|
|
39
35
|
space,
|
|
40
36
|
tab,
|
|
41
37
|
lineComment,
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import Literal from "../../
|
|
1
|
+
import { Literal, Or, And } from "../../index";
|
|
2
2
|
import name from "../javascriptPatterns/name";
|
|
3
3
|
import number from "../javascriptPatterns/number";
|
|
4
4
|
import string from "../javascriptPatterns/string";
|
|
5
|
-
import OrComposite from "../../patterns/composite/OrComposite";
|
|
6
|
-
import AndComposite from "../../patterns/composite/AndComposite";
|
|
7
|
-
|
|
8
5
|
|
|
9
6
|
const space = new Literal("space", " ");
|
|
10
7
|
const equalTo = new Literal("=", "is");
|
|
@@ -17,38 +14,24 @@ const startsWith = new Literal("starts-with", "starts with");
|
|
|
17
14
|
const endsWith = new Literal("ends-with", "ends with");
|
|
18
15
|
const contains = new Literal("contains", "has");
|
|
19
16
|
|
|
20
|
-
const value = new
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
const value = new Or("value", [number, string, name]);
|
|
18
|
+
|
|
19
|
+
const operator = new Or("operator", [
|
|
20
|
+
equalTo,
|
|
21
|
+
notEqualTo,
|
|
22
|
+
isGreaterThan,
|
|
23
|
+
isLessThan,
|
|
24
|
+
isGreaterThanOrEqualTo,
|
|
25
|
+
isLessThanOrEqualTo,
|
|
26
|
+
startsWith,
|
|
27
|
+
endsWith,
|
|
28
|
+
contains,
|
|
24
29
|
]);
|
|
25
30
|
|
|
26
|
-
const
|
|
27
|
-
equalTo,
|
|
28
|
-
notEqualTo,
|
|
29
|
-
isGreaterThan,
|
|
30
|
-
isLessThan,
|
|
31
|
-
isGreaterThanOrEqualTo,
|
|
32
|
-
isLessThanOrEqualTo,
|
|
33
|
-
startsWith,
|
|
34
|
-
endsWith,
|
|
35
|
-
contains
|
|
36
|
-
]);
|
|
37
|
-
|
|
38
|
-
const predicate = new AndComposite("predicate", [
|
|
39
|
-
name,
|
|
40
|
-
space,
|
|
41
|
-
operator,
|
|
42
|
-
space,
|
|
43
|
-
value
|
|
44
|
-
]);
|
|
31
|
+
const predicate = new And("predicate", [name, space, operator, space, value]);
|
|
45
32
|
|
|
46
33
|
const match = new Literal("match", "Match records where");
|
|
47
34
|
|
|
48
|
-
const filter = new
|
|
49
|
-
match,
|
|
50
|
-
space,
|
|
51
|
-
predicate
|
|
52
|
-
]);
|
|
35
|
+
const filter = new And("filter", [match, space, predicate]);
|
|
53
36
|
|
|
54
|
-
export default filter;
|
|
37
|
+
export default filter;
|