grammar-composer 0.6.0 → 0.6.2
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/dist/exports/Exports.d.ts +4 -3
- package/dist/exports/Exports.d.ts.map +1 -1
- package/dist/exports/Exports.js +4 -3
- package/dist/exports/Exports.js.map +1 -1
- package/dist/parser/Builder.d.ts +11 -0
- package/dist/parser/Builder.d.ts.map +1 -0
- package/dist/{parser-generator/Grammar.js → parser/Builder.js} +10 -97
- package/dist/parser/Builder.js.map +1 -0
- package/dist/{parser-generator → parser}/Grammar.d.ts +8 -15
- package/dist/parser/Grammar.d.ts.map +1 -0
- package/dist/parser/Grammar.js +97 -0
- package/dist/parser/Grammar.js.map +1 -0
- package/dist/{parser-generator → parser}/ParseError.d.ts +0 -2
- package/dist/parser/ParseError.d.ts.map +1 -0
- package/dist/{parser-generator → parser}/ParseError.js +35 -8
- package/dist/parser/ParseError.js.map +1 -0
- package/dist/{parser-generator/TopDownParser.d.ts → parser/Parser.d.ts} +4 -3
- package/dist/parser/Parser.d.ts.map +1 -0
- package/dist/{parser-generator/TopDownParser.js → parser/Parser.js} +40 -6
- package/dist/parser/Parser.js.map +1 -0
- package/dist/parser/StaticAnalysis.d.ts.map +1 -0
- package/dist/{parser-generator → parser}/StaticAnalysis.js +16 -5
- package/dist/parser/StaticAnalysis.js.map +1 -0
- package/dist/parser/TerminalToText.d.ts.map +1 -0
- package/dist/{parser-generator → parser}/TerminalToText.js +1 -1
- package/dist/parser/TerminalToText.js.map +1 -0
- package/dist/tests/Test.js +2 -2
- package/dist/tests/Test.js.map +1 -1
- package/dist/utilities/Utilities.d.ts +2 -0
- package/dist/utilities/Utilities.d.ts.map +1 -1
- package/dist/utilities/Utilities.js +15 -1
- package/dist/utilities/Utilities.js.map +1 -1
- package/package.json +6 -4
- package/src/exports/Exports.ts +4 -3
- package/src/{parser-generator/Grammar.ts → parser/Builder.ts} +14 -191
- package/src/parser/Grammar.ts +194 -0
- package/src/{parser-generator → parser}/ParseError.ts +42 -11
- package/src/{parser-generator/TopDownParser.ts → parser/Parser.ts} +59 -10
- package/src/{parser-generator → parser}/StaticAnalysis.ts +17 -7
- package/src/{parser-generator → parser}/TerminalToText.ts +1 -1
- package/src/tests/Test.ts +2 -2
- package/src/utilities/Utilities.ts +21 -1
- package/tsconfig.json +51 -53
- package/dist/parser-generator/Grammar.d.ts.map +0 -1
- package/dist/parser-generator/Grammar.js.map +0 -1
- package/dist/parser-generator/ParseError.d.ts.map +0 -1
- package/dist/parser-generator/ParseError.js.map +0 -1
- package/dist/parser-generator/StaticAnalysis.d.ts.map +0 -1
- package/dist/parser-generator/StaticAnalysis.js.map +0 -1
- package/dist/parser-generator/TerminalToText.d.ts.map +0 -1
- package/dist/parser-generator/TerminalToText.js.map +0 -1
- package/dist/parser-generator/TopDownParser.d.ts.map +0 -1
- package/dist/parser-generator/TopDownParser.js.map +0 -1
- /package/dist/{parser-generator → parser}/StaticAnalysis.d.ts +0 -0
- /package/dist/{parser-generator → parser}/TerminalToText.d.ts +0 -0
|
@@ -158,10 +158,12 @@ export function detectAndAnnotateOptionalNodes(rootNode) {
|
|
|
158
158
|
break;
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
|
-
// All remaining unresolved nodes
|
|
162
|
-
//
|
|
161
|
+
// All remaining unresolved nodes are part of a strongly-connected cyclic
|
|
162
|
+
// component with no resolvable nullable base case. The least fixed-point
|
|
163
|
+
// for nullability is `false` (not optional): a cycle without an empty
|
|
164
|
+
// alternative cannot derive the empty string.
|
|
163
165
|
for (const node of unresolvedNodes.keys()) {
|
|
164
|
-
resolvedNodes.set(node,
|
|
166
|
+
resolvedNodes.set(node, false);
|
|
165
167
|
unresolvedNodes.delete(node);
|
|
166
168
|
}
|
|
167
169
|
// Finally set the 'optional' property of all nodes based on the detected values.
|
|
@@ -177,7 +179,12 @@ export function detectAndErrorOnLeftRecursion(rootNode) {
|
|
|
177
179
|
throw new Error(`Detected left recursion for nonterminal '${node.name}'.`);
|
|
178
180
|
}
|
|
179
181
|
else {
|
|
180
|
-
|
|
182
|
+
try {
|
|
183
|
+
throw new Error(`Detected left recursion for node: ${JSON.stringify(node, undefined, 4)}`);
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
throw new Error(`Detected left recursion for node type '${node.type}'.`);
|
|
187
|
+
}
|
|
181
188
|
}
|
|
182
189
|
}
|
|
183
190
|
currentlyIteratedNodes.add(node);
|
|
@@ -245,7 +252,11 @@ export function validatePatternCaptureGroups(pattern) {
|
|
|
245
252
|
walk(node.content);
|
|
246
253
|
return;
|
|
247
254
|
}
|
|
248
|
-
// Composite nodes that wrap content without creating a capturing group
|
|
255
|
+
// Composite nodes that wrap content without creating a capturing group.
|
|
256
|
+
// regexp-composer uses a `greedy` boolean to distinguish `zeroOrMore` vs
|
|
257
|
+
// `zeroOrMoreNonGreedy` etc, but both share the same `type` string
|
|
258
|
+
// (`zeroOrMore`, `oneOrMore`, `repeated`). Handle any type that wraps
|
|
259
|
+
// a single `content` field.
|
|
249
260
|
case 'possibly':
|
|
250
261
|
case 'zeroOrMore':
|
|
251
262
|
case 'oneOrMore':
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaticAnalysis.js","sourceRoot":"","sources":["../../src/parser/StaticAnalysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TerminalToText.d.ts","sourceRoot":"","sources":["../../src/parser/TerminalToText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAK7E,qBAAa,cAAc;IACd,OAAO,CAAC,sBAAsB;IAA1C,YAAoB,sBAAsB,EAAE,MAAM,EACjD;IAED,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAM5C;IAED,uBAAuB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAExD;IAED,wBAAwB,CAAC,QAAQ,EAAE,eAAe,UAmBjD;IAED,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CA+FzC;IAED,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUlD;IAED,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAgBjD;IAED,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAMvD;CACD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgB/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TerminalToText.js","sourceRoot":"","sources":["../../src/parser/TerminalToText.ts"],"names":[],"mappings":"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"}
|
package/dist/tests/Test.js
CHANGED
package/dist/tests/Test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Test.js","sourceRoot":"","sources":["../../src/tests/Test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Test.js","sourceRoot":"","sources":["../../src/tests/Test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ParseTreeNode } from '../exports/Exports.js';
|
|
1
2
|
export declare function roundToDigits(val: number, digits?: number): number;
|
|
2
3
|
export declare function isNumber(value: unknown): value is number;
|
|
3
4
|
export declare function isString(value: unknown): value is string;
|
|
@@ -6,4 +7,5 @@ export declare function isObject(value: unknown): value is object;
|
|
|
6
7
|
export declare function isArray(value: unknown): value is unknown[];
|
|
7
8
|
export declare function isBoolean(value: unknown): value is boolean;
|
|
8
9
|
export declare function isFunction(value: unknown): value is Function;
|
|
10
|
+
export declare function stringifyParseTree(parseTree: ParseTreeNode[], depth?: number): string;
|
|
9
11
|
//# sourceMappingURL=Utilities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Utilities.d.ts","sourceRoot":"","sources":["../../src/utilities/Utilities.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,UAIpD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,EAAE,CAE1D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAE1D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D"}
|
|
1
|
+
{"version":3,"file":"Utilities.d.ts","sourceRoot":"","sources":["../../src/utilities/Utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,UAIpD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,EAAE,CAE1D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAE1D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,EAAE,KAAK,SAAI,GAAG,MAAM,CAgBhF"}
|
|
@@ -12,7 +12,7 @@ export function isBigInt(value) {
|
|
|
12
12
|
return typeof value === 'bigint';
|
|
13
13
|
}
|
|
14
14
|
export function isObject(value) {
|
|
15
|
-
return typeof value === 'object' && !Array.isArray(value);
|
|
15
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
16
16
|
}
|
|
17
17
|
export function isArray(value) {
|
|
18
18
|
return Array.isArray(value);
|
|
@@ -23,4 +23,18 @@ export function isBoolean(value) {
|
|
|
23
23
|
export function isFunction(value) {
|
|
24
24
|
return typeof value === 'function';
|
|
25
25
|
}
|
|
26
|
+
export function stringifyParseTree(parseTree, depth = 0) {
|
|
27
|
+
let result = '';
|
|
28
|
+
const getNewlineWithIndent = (depth) => `\n${'\t'.repeat(depth)}`;
|
|
29
|
+
for (const node of parseTree) {
|
|
30
|
+
result += `${getNewlineWithIndent(depth)}${node.name}`;
|
|
31
|
+
if (node.children && node.children.length > 0) {
|
|
32
|
+
result += stringifyParseTree(node.children, depth + 1);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
result += `${getNewlineWithIndent(depth + 1)}'${node.sourceText}'`;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
26
40
|
//# sourceMappingURL=Utilities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Utilities.js","sourceRoot":"","sources":["../../src/utilities/Utilities.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Utilities.js","sourceRoot":"","sources":["../../src/utilities/Utilities.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,MAAM,GAAG,CAAC;IACpD,MAAM,UAAU,GAAG,EAAE,IAAI,MAAM,CAAA;IAE/B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,UAAU,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACtC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC5E,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAc;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,SAAS,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAA0B,EAAE,KAAK,GAAG,CAAC;IACvE,IAAI,MAAM,GAAG,EAAE,CAAA;IAEf,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;IAEzE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAEtD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;QACvD,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAA;QACnE,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAA;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "grammar-composer",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"description": "Creates and generates parsers from composable grammar definitions. Includes advanced features like lexer-free parsing, selective packrat memoization and static analysis.",
|
|
5
5
|
"author": "Rotem Dan",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,12 +29,14 @@
|
|
|
29
29
|
"README.md"
|
|
30
30
|
],
|
|
31
31
|
"scripts": {
|
|
32
|
-
"test": "
|
|
32
|
+
"test": "vitest",
|
|
33
|
+
"test-manual": "node dist/tests/Test.js"
|
|
33
34
|
},
|
|
34
35
|
"dependencies": {
|
|
35
|
-
"regexp-composer": "~0.
|
|
36
|
+
"regexp-composer": "~0.6.1"
|
|
36
37
|
},
|
|
37
38
|
"devDependencies": {
|
|
38
|
-
"@types/node": "~26.4.0"
|
|
39
|
+
"@types/node": "~26.4.0",
|
|
40
|
+
"vitest": "~4.1.11"
|
|
39
41
|
}
|
|
40
42
|
}
|
package/src/exports/Exports.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export * from '../parser
|
|
2
|
-
export
|
|
3
|
-
export
|
|
1
|
+
export * from '../parser/Grammar.js'
|
|
2
|
+
export * from '../parser/Builder.js'
|
|
3
|
+
export { ParseError } from '../parser/ParseError.js'
|
|
4
|
+
export * from '../parser/Parser.js'
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isArray, isBoolean, isFunction, isString } from '../utilities/Utilities.js'
|
|
1
|
+
import { isArray, isFunction, isString } from '../utilities/Utilities.js'
|
|
3
2
|
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { detectAndAnnotateOptionalNodes, detectAndErrorOnLeftRecursion } from './StaticAnalysis.js'
|
|
4
|
+
import { Grammar, Nonterminal, GrammarElement, StringTerminal, Sequence, NonterminalReference, Production } from './Grammar.js'
|
|
6
5
|
|
|
7
6
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
8
7
|
// Grammar builder method
|
|
9
8
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
10
|
-
export function buildGrammar<T extends
|
|
9
|
+
export function buildGrammar<T extends GrammarDefinition>(
|
|
11
10
|
definitionObject: T | (new () => T),
|
|
12
11
|
startProductionName: keyof T,
|
|
13
12
|
options?: GrammarBuilderOptions<T>): Grammar<T> {
|
|
@@ -25,7 +24,7 @@ export function buildGrammar<T extends { [key: string]: any }>(
|
|
|
25
24
|
const nonterminalLookup = new Map<Function, Nonterminal>()
|
|
26
25
|
const optionalNonterminalLookup = new Map<Function, Nonterminal>()
|
|
27
26
|
|
|
28
|
-
for (const key
|
|
27
|
+
for (const key of Object.keys(definitionObject)) {
|
|
29
28
|
const objectProperty = definitionObject[key]
|
|
30
29
|
|
|
31
30
|
nameLookup.set(objectProperty, key)
|
|
@@ -67,6 +66,12 @@ export function buildGrammar<T extends { [key: string]: any }>(
|
|
|
67
66
|
nonterminal.content = preparedContent
|
|
68
67
|
|
|
69
68
|
const optionalNonterminal = optionalNonterminalLookup.get(func)!
|
|
69
|
+
|
|
70
|
+
// The optional wrapper should share the already-resolved content
|
|
71
|
+
// object (which now contains only resolved Nonterminal refs, no
|
|
72
|
+
// NonterminalReferences left). Sharing is safe because optional
|
|
73
|
+
// detection works on canonical identity and nodes are mutated
|
|
74
|
+
// only via the `optional` flag on the wrapper itself.
|
|
70
75
|
optionalNonterminal.content = preparedContent
|
|
71
76
|
}
|
|
72
77
|
|
|
@@ -170,94 +175,6 @@ function prepareGrammarElement(
|
|
|
170
175
|
return prepare(rootElement)
|
|
171
176
|
}
|
|
172
177
|
|
|
173
|
-
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
174
|
-
// Exported AST builder functions
|
|
175
|
-
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
176
|
-
export function zeroOrMore(content: Production): Repetition {
|
|
177
|
-
return {
|
|
178
|
-
type: 'Repetition',
|
|
179
|
-
content: productionToGrammarElement(content),
|
|
180
|
-
optional: true,
|
|
181
|
-
cached: false,
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
export function oneOrMore(content: Production): Repetition {
|
|
186
|
-
return {
|
|
187
|
-
type: 'Repetition',
|
|
188
|
-
content: productionToGrammarElement(content),
|
|
189
|
-
optional: false,
|
|
190
|
-
cached: false,
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
export function anyOf(...members: Production[]): Choice {
|
|
195
|
-
if (members.length === 0) {
|
|
196
|
-
throw new Error(`'anyOf' requires at least one member.`)
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
const normalizedMembers = members.map(member => productionToGrammarElement(member))
|
|
200
|
-
|
|
201
|
-
return {
|
|
202
|
-
type: 'Choice',
|
|
203
|
-
members: normalizedMembers,
|
|
204
|
-
optional: false,
|
|
205
|
-
exhaustive: false,
|
|
206
|
-
cached: false,
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
export function bestOf(...members: Production[]): Choice {
|
|
211
|
-
if (members.length === 0) {
|
|
212
|
-
throw new Error(`'bestOf' requires at least one member.`)
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
const normalizedMembers = members.map(member => productionToGrammarElement(member))
|
|
216
|
-
|
|
217
|
-
return {
|
|
218
|
-
type: 'Choice',
|
|
219
|
-
members: normalizedMembers,
|
|
220
|
-
optional: false,
|
|
221
|
-
exhaustive: true,
|
|
222
|
-
|
|
223
|
-
cached: false,
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
export function possibly<T extends Production>(content: Production): T {
|
|
228
|
-
return { ...productionToGrammarElement(content), optional: true } as T
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
export function pattern(pattern: Pattern): PatternTerminal {
|
|
232
|
-
if (isArray(pattern)) {
|
|
233
|
-
pattern = [inputStart, ...pattern]
|
|
234
|
-
} else {
|
|
235
|
-
pattern = [inputStart, pattern]
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
validatePatternCaptureGroups(pattern)
|
|
239
|
-
|
|
240
|
-
const regExp = buildRegExp(pattern)
|
|
241
|
-
const optional = isPatternOptional(pattern)
|
|
242
|
-
|
|
243
|
-
return {
|
|
244
|
-
type: 'PatternTerminal',
|
|
245
|
-
pattern,
|
|
246
|
-
regExp,
|
|
247
|
-
optional,
|
|
248
|
-
|
|
249
|
-
cached: false,
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
export function cached<T extends Production>(content: Production): T {
|
|
254
|
-
return { ...productionToGrammarElement(content), cached: true } as T
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
export function uncached<T extends Production>(content: Production): T {
|
|
258
|
-
return { ...productionToGrammarElement(content), cached: false } as T
|
|
259
|
-
}
|
|
260
|
-
|
|
261
178
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
262
179
|
// Internal AST builder methods
|
|
263
180
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
@@ -311,7 +228,7 @@ function unresolvedReference(reference: Function): NonterminalReference {
|
|
|
311
228
|
}
|
|
312
229
|
}
|
|
313
230
|
|
|
314
|
-
function productionToGrammarElement(production: Production): GrammarElement {
|
|
231
|
+
export function productionToGrammarElement(production: Production): GrammarElement {
|
|
315
232
|
if (isString(production)) {
|
|
316
233
|
return stringTerminal(production)
|
|
317
234
|
} else if (isArray(production)) {
|
|
@@ -325,102 +242,6 @@ function productionToGrammarElement(production: Production): GrammarElement {
|
|
|
325
242
|
}
|
|
326
243
|
}
|
|
327
244
|
|
|
328
|
-
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
329
|
-
// Grammar class
|
|
330
|
-
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
331
|
-
export class Grammar<T> {
|
|
332
|
-
readonly productions: Record<keyof T, any>
|
|
333
|
-
readonly startProductionName: keyof T
|
|
334
|
-
|
|
335
|
-
readonly maxCacheId: number
|
|
336
|
-
|
|
337
|
-
constructor(productions: Record<keyof T, any>, startProductionName: keyof T, maxCacheId: number) {
|
|
338
|
-
this.startProductionName = startProductionName
|
|
339
|
-
this.productions = productions
|
|
340
|
-
this.maxCacheId = maxCacheId
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
parse(text: string) {
|
|
344
|
-
return parse(text, this)
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
get rootElement() {
|
|
348
|
-
return (this.productions as any)[this.startProductionName]
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
353
|
-
// Type definitions
|
|
354
|
-
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
355
|
-
export type Production = string | GrammarElement | (() => Production) | Production[]
|
|
356
|
-
|
|
357
|
-
export type GrammarElement =
|
|
358
|
-
StringTerminal |
|
|
359
|
-
PatternTerminal |
|
|
360
|
-
Nonterminal |
|
|
361
|
-
Sequence |
|
|
362
|
-
Repetition |
|
|
363
|
-
Choice |
|
|
364
|
-
NonterminalReference
|
|
365
|
-
|
|
366
|
-
interface GrammarElementBase {
|
|
367
|
-
type: string
|
|
368
|
-
optional: boolean
|
|
369
|
-
|
|
370
|
-
cached: boolean
|
|
371
|
-
cacheId?: number
|
|
372
|
-
|
|
373
|
-
// The name of the grammar property this element was assigned to, if any.
|
|
374
|
-
// Used by the parser to refer to the element by name in error messages.
|
|
375
|
-
name?: string
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
export type Terminal = StringTerminal | PatternTerminal
|
|
379
|
-
|
|
380
|
-
export interface StringTerminal extends GrammarElementBase {
|
|
381
|
-
type: 'StringTerminal'
|
|
382
|
-
content: string
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
export interface PatternTerminal extends GrammarElementBase {
|
|
386
|
-
type: 'PatternTerminal'
|
|
387
|
-
pattern: Pattern
|
|
388
|
-
regExp: RegExp
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
export interface Nonterminal extends GrammarElementBase {
|
|
392
|
-
type: 'Nonterminal'
|
|
393
|
-
name: string
|
|
394
|
-
content: GrammarElement
|
|
395
|
-
unwrapped: boolean
|
|
396
|
-
|
|
397
|
-
// The canonical nonterminal as defined in the grammar. Clones created for
|
|
398
|
-
// optional references and cached references keep a reference to the original,
|
|
399
|
-
// so identity comparisons work across clones.
|
|
400
|
-
grammarNonterminal?: Nonterminal
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
export interface Sequence extends GrammarElementBase {
|
|
404
|
-
type: 'Sequence'
|
|
405
|
-
members: GrammarElement[]
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
export interface Repetition extends GrammarElementBase {
|
|
409
|
-
type: 'Repetition'
|
|
410
|
-
content: GrammarElement
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
export interface Choice extends GrammarElementBase {
|
|
414
|
-
type: 'Choice'
|
|
415
|
-
members: GrammarElement[]
|
|
416
|
-
exhaustive: boolean
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
export interface NonterminalReference extends GrammarElementBase {
|
|
420
|
-
type: 'NonterminalReference'
|
|
421
|
-
reference: Function
|
|
422
|
-
}
|
|
423
|
-
|
|
424
245
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
425
246
|
// Builder type definitions
|
|
426
247
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
@@ -429,3 +250,5 @@ export interface GrammarBuilderOptions<T> {
|
|
|
429
250
|
}
|
|
430
251
|
|
|
431
252
|
export type GrammarNonterminalNames<T> = (keyof T)[]
|
|
253
|
+
|
|
254
|
+
export type GrammarDefinition = { [key: string]: any }
|