grammar-composer 0.4.0 → 0.6.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 +144 -89
- package/dist/exports/Exports.d.ts +2 -0
- package/dist/exports/Exports.d.ts.map +1 -1
- package/dist/exports/Exports.js +2 -0
- package/dist/exports/Exports.js.map +1 -1
- package/dist/parser-generator/Grammar.d.ts +8 -1
- package/dist/parser-generator/Grammar.d.ts.map +1 -1
- package/dist/parser-generator/Grammar.js +30 -225
- package/dist/parser-generator/Grammar.js.map +1 -1
- package/dist/parser-generator/ParseError.d.ts +37 -0
- package/dist/parser-generator/ParseError.d.ts.map +1 -0
- package/dist/parser-generator/ParseError.js +226 -0
- package/dist/parser-generator/ParseError.js.map +1 -0
- package/dist/parser-generator/StaticAnalysis.d.ts +6 -0
- package/dist/parser-generator/StaticAnalysis.d.ts.map +1 -0
- package/dist/parser-generator/StaticAnalysis.js +283 -0
- package/dist/parser-generator/StaticAnalysis.js.map +1 -0
- package/dist/parser-generator/TerminalToText.d.ts +15 -0
- package/dist/parser-generator/TerminalToText.d.ts.map +1 -0
- package/dist/parser-generator/TerminalToText.js +158 -0
- package/dist/parser-generator/TerminalToText.js.map +1 -0
- package/dist/parser-generator/TopDownParser.d.ts +4 -2
- package/dist/parser-generator/TopDownParser.d.ts.map +1 -1
- package/dist/parser-generator/TopDownParser.js +44 -42
- package/dist/parser-generator/TopDownParser.js.map +1 -1
- package/dist/tests/Test.js +23 -23
- package/dist/tests/Test.js.map +1 -1
- package/dist/tests/test-grammars/JsonGrammar.d.ts +12 -11
- package/dist/tests/test-grammars/JsonGrammar.d.ts.map +1 -1
- package/dist/tests/test-grammars/JsonGrammar.js +25 -10
- package/dist/tests/test-grammars/JsonGrammar.js.map +1 -1
- package/dist/tests/test-grammars/RegExpGrammar.d.ts +25 -25
- package/dist/tests/test-grammars/RegExpGrammar.d.ts.map +1 -1
- package/dist/tests/test-grammars/RegExpGrammar.js +48 -31
- package/dist/tests/test-grammars/RegExpGrammar.js.map +1 -1
- package/dist/tests/test-grammars/XmlGrammar.d.ts +11 -10
- package/dist/tests/test-grammars/XmlGrammar.d.ts.map +1 -1
- package/dist/tests/test-grammars/XmlGrammar.js +19 -8
- package/dist/tests/test-grammars/XmlGrammar.js.map +1 -1
- package/dist/utilities/LineAndColumn.d.ts +7 -0
- package/dist/utilities/LineAndColumn.d.ts.map +1 -0
- package/dist/utilities/LineAndColumn.js +52 -0
- package/dist/utilities/LineAndColumn.js.map +1 -0
- package/dist/utilities/Timer.d.ts +7 -3
- package/dist/utilities/Timer.d.ts.map +1 -1
- package/dist/utilities/Timer.js +41 -39
- package/dist/utilities/Timer.js.map +1 -1
- package/package.json +3 -3
- package/src/exports/Exports.ts +2 -0
- package/src/parser-generator/Grammar.ts +59 -265
- package/src/parser-generator/ParseError.ts +337 -0
- package/src/parser-generator/StaticAnalysis.ts +340 -0
- package/src/parser-generator/TerminalToText.ts +196 -0
- package/src/parser-generator/TopDownParser.ts +67 -49
- package/src/tests/Test.ts +26 -24
- package/src/tests/test-grammars/JsonGrammar.ts +28 -10
- package/src/tests/test-grammars/RegExpGrammar.ts +65 -46
- package/src/tests/test-grammars/XmlGrammar.ts +20 -8
- package/src/utilities/LineAndColumn.ts +61 -0
- package/src/utilities/Timer.ts +50 -48
|
@@ -1,26 +1,36 @@
|
|
|
1
1
|
import { buildRegExp, inputStart, isPatternOptional } from 'regexp-composer';
|
|
2
|
-
import { isArray,
|
|
2
|
+
import { isArray, isFunction, isString } from '../utilities/Utilities.js';
|
|
3
3
|
import { parse } from './TopDownParser.js';
|
|
4
|
+
import { detectAndAnnotateOptionalNodes, detectAndErrorOnLeftRecursion, validatePatternCaptureGroups } from './StaticAnalysis.js';
|
|
4
5
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
5
6
|
// Grammar builder method
|
|
6
7
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
7
|
-
export function buildGrammar(
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
export function buildGrammar(definitionObject, startProductionName, options) {
|
|
9
|
+
options = {
|
|
10
|
+
unwrappedNonterminalNames: [],
|
|
11
|
+
...options
|
|
12
|
+
};
|
|
13
|
+
if (isFunction(definitionObject)) {
|
|
14
|
+
definitionObject = new definitionObject();
|
|
10
15
|
}
|
|
11
16
|
const nameLookup = new Map();
|
|
12
17
|
const nonterminalLookup = new Map();
|
|
13
18
|
const optionalNonterminalLookup = new Map();
|
|
14
|
-
for (const key in
|
|
15
|
-
const objectProperty =
|
|
19
|
+
for (const key in definitionObject) {
|
|
20
|
+
const objectProperty = definitionObject[key];
|
|
16
21
|
nameLookup.set(objectProperty, key);
|
|
17
22
|
if (!isFunction(objectProperty)) {
|
|
18
|
-
|
|
23
|
+
throw new Error(`Grammar definition contains a property '${key}', which is not a function. All object properties must be productions, declared as functions.`);
|
|
19
24
|
}
|
|
20
|
-
const productionContent = objectProperty.call(
|
|
25
|
+
const productionContent = objectProperty.call(definitionObject);
|
|
21
26
|
const normalizedProduction = productionToGrammarElement(productionContent);
|
|
22
|
-
const
|
|
23
|
-
const
|
|
27
|
+
const isUnwrappedNonterminal = options.unwrappedNonterminalNames?.includes(key) === true;
|
|
28
|
+
const newNonterminal = nonterminal(key, normalizedProduction, isUnwrappedNonterminal);
|
|
29
|
+
const newOptionalNonterminal = {
|
|
30
|
+
...newNonterminal,
|
|
31
|
+
optional: true,
|
|
32
|
+
grammarNonterminal: newNonterminal,
|
|
33
|
+
};
|
|
24
34
|
nonterminalLookup.set(objectProperty, newNonterminal);
|
|
25
35
|
optionalNonterminalLookup.set(objectProperty, newOptionalNonterminal);
|
|
26
36
|
}
|
|
@@ -36,7 +46,7 @@ export function buildGrammar(obj, startProductionName) {
|
|
|
36
46
|
const optionalNonterminal = optionalNonterminalLookup.get(func);
|
|
37
47
|
optionalNonterminal.content = preparedContent;
|
|
38
48
|
}
|
|
39
|
-
const startNonterminal = nonterminalLookup.get(
|
|
49
|
+
const startNonterminal = nonterminalLookup.get(definitionObject[startProductionName]);
|
|
40
50
|
if (!startNonterminal) {
|
|
41
51
|
throw new Error(`Couldn't find a start production named '${startProductionName}'.`);
|
|
42
52
|
}
|
|
@@ -98,6 +108,7 @@ function prepareGrammarElement(rootElement, nonterminalLookup, optionalNontermin
|
|
|
98
108
|
...nonterminal,
|
|
99
109
|
cached: true,
|
|
100
110
|
cacheId: getNewCacheId(),
|
|
111
|
+
grammarNonterminal: nonterminal.grammarNonterminal ?? nonterminal
|
|
101
112
|
};
|
|
102
113
|
}
|
|
103
114
|
else {
|
|
@@ -109,215 +120,7 @@ function prepareGrammarElement(rootElement, nonterminalLookup, optionalNontermin
|
|
|
109
120
|
return prepare(rootElement);
|
|
110
121
|
}
|
|
111
122
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
112
|
-
//
|
|
113
|
-
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
114
|
-
function detectAndAnnotateOptionalNodes(rootNode) {
|
|
115
|
-
const visitedNodes = new Set();
|
|
116
|
-
const resolvedNodes = new Map();
|
|
117
|
-
const unresolvedNodes = new Map();
|
|
118
|
-
function processDepthFirst(node) {
|
|
119
|
-
if (visitedNodes.has(node)) {
|
|
120
|
-
return resolvedNodes.get(node);
|
|
121
|
-
}
|
|
122
|
-
visitedNodes.add(node);
|
|
123
|
-
switch (node.type) {
|
|
124
|
-
case 'StringTerminal':
|
|
125
|
-
case 'PatternTerminal': {
|
|
126
|
-
resolvedNodes.set(node, node.optional);
|
|
127
|
-
return node.optional;
|
|
128
|
-
}
|
|
129
|
-
case 'Nonterminal':
|
|
130
|
-
case 'Repetition': {
|
|
131
|
-
const result = processDepthFirst(node.content);
|
|
132
|
-
if (node.optional) {
|
|
133
|
-
resolvedNodes.set(node, true);
|
|
134
|
-
return true;
|
|
135
|
-
}
|
|
136
|
-
else if (isBoolean(result)) {
|
|
137
|
-
resolvedNodes.set(node, result);
|
|
138
|
-
return result;
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
unresolvedNodes.set(node, { dependencies: new Set([node.content]), isChoice: false });
|
|
142
|
-
return undefined;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
case 'Sequence': {
|
|
146
|
-
const dependencies = new Set();
|
|
147
|
-
let hasNonOptionalResolvedMember = false;
|
|
148
|
-
for (const element of node.members) {
|
|
149
|
-
const result = processDepthFirst(element);
|
|
150
|
-
if (isBoolean(result)) {
|
|
151
|
-
if (result === false) {
|
|
152
|
-
hasNonOptionalResolvedMember = true;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
dependencies.add(element);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
if (node.optional == true) {
|
|
160
|
-
resolvedNodes.set(node, true);
|
|
161
|
-
return true;
|
|
162
|
-
}
|
|
163
|
-
else if (hasNonOptionalResolvedMember) {
|
|
164
|
-
resolvedNodes.set(node, false);
|
|
165
|
-
return false;
|
|
166
|
-
}
|
|
167
|
-
else if (dependencies.size == 0) {
|
|
168
|
-
resolvedNodes.set(node, true);
|
|
169
|
-
return true;
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
unresolvedNodes.set(node, { dependencies, isChoice: false });
|
|
173
|
-
return undefined;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
case 'Choice': {
|
|
177
|
-
const dependencies = new Set();
|
|
178
|
-
let hasOptionalResolvedMember = false;
|
|
179
|
-
for (const element of node.members) {
|
|
180
|
-
const result = processDepthFirst(element);
|
|
181
|
-
if (isBoolean(result)) {
|
|
182
|
-
if (result === true) {
|
|
183
|
-
hasOptionalResolvedMember = true;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
dependencies.add(element);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
if (node.optional == true) {
|
|
191
|
-
resolvedNodes.set(node, true);
|
|
192
|
-
return true;
|
|
193
|
-
}
|
|
194
|
-
else if (hasOptionalResolvedMember) {
|
|
195
|
-
resolvedNodes.set(node, true);
|
|
196
|
-
return true;
|
|
197
|
-
}
|
|
198
|
-
else if (dependencies.size == 0) {
|
|
199
|
-
resolvedNodes.set(node, false);
|
|
200
|
-
return false;
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
unresolvedNodes.set(node, { dependencies, isChoice: true });
|
|
204
|
-
return undefined;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
return undefined;
|
|
209
|
-
}
|
|
210
|
-
// Process depth first to resolve the easy cases, for productions that contain
|
|
211
|
-
// no cyclic references:
|
|
212
|
-
processDepthFirst(rootNode);
|
|
213
|
-
// Now the remainder consists of nodes containing cyclic references that have not yet been resolved.
|
|
214
|
-
// Use a form of iterative elimination and substitution to resolve them:
|
|
215
|
-
while (unresolvedNodes.size > 0) {
|
|
216
|
-
// This variable tracks whether at least one dependency was resolved, in any node.
|
|
217
|
-
// If it stays false, it means that no improvement was made during the iteration,
|
|
218
|
-
// and we should exit the loop.
|
|
219
|
-
let atLastOneDependencyResolvedInAnyNode = false;
|
|
220
|
-
const nodesToDelete = [];
|
|
221
|
-
// Scan the unresolved nodes to locate any new resolved dependencies
|
|
222
|
-
for (const [node, { dependencies, isChoice }] of unresolvedNodes) {
|
|
223
|
-
let nodeResolved = false;
|
|
224
|
-
// Iterate over all unresolved dependencies for the node
|
|
225
|
-
for (const dependency of Array.from(dependencies)) {
|
|
226
|
-
// Check if the dependency has been resolved
|
|
227
|
-
const value = resolvedNodes.get(dependency);
|
|
228
|
-
if (value !== undefined) {
|
|
229
|
-
// If it did, record that some dependencies were resolved
|
|
230
|
-
atLastOneDependencyResolvedInAnyNode = true;
|
|
231
|
-
if (isChoice) {
|
|
232
|
-
if (value === true) {
|
|
233
|
-
resolvedNodes.set(node, true);
|
|
234
|
-
nodeResolved = true;
|
|
235
|
-
break;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
239
|
-
if (value === false) {
|
|
240
|
-
resolvedNodes.set(node, false);
|
|
241
|
-
nodeResolved = true;
|
|
242
|
-
break;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
dependencies.delete(dependency);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
if (nodeResolved) {
|
|
249
|
-
nodesToDelete.push(node);
|
|
250
|
-
}
|
|
251
|
-
else if (dependencies.size === 0) {
|
|
252
|
-
if (isChoice) {
|
|
253
|
-
resolvedNodes.set(node, false);
|
|
254
|
-
}
|
|
255
|
-
else {
|
|
256
|
-
resolvedNodes.set(node, true);
|
|
257
|
-
}
|
|
258
|
-
nodesToDelete.push(node);
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
for (const node of nodesToDelete) {
|
|
262
|
-
unresolvedNodes.delete(node);
|
|
263
|
-
}
|
|
264
|
-
// If not even one dependency was eliminated for any node,
|
|
265
|
-
// it means that only mutually cyclic nodes are left unresolved, so exit the loop.
|
|
266
|
-
if (!atLastOneDependencyResolvedInAnyNode) {
|
|
267
|
-
break;
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
// All remaining unresolved nodes must now be optional,
|
|
271
|
-
// since they are all mutually cyclic and all their non-cyclic grammar elements are known to be optional.
|
|
272
|
-
for (const node of unresolvedNodes.keys()) {
|
|
273
|
-
resolvedNodes.set(node, true);
|
|
274
|
-
unresolvedNodes.delete(node);
|
|
275
|
-
}
|
|
276
|
-
// Finally set the 'optional' property of all nodes based on the detected values.
|
|
277
|
-
for (const [node, isOptional] of resolvedNodes) {
|
|
278
|
-
node.optional = isOptional;
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
function detectAndErrorOnLeftRecursion(rootNode) {
|
|
282
|
-
const currentlyIteratedNodes = new Set();
|
|
283
|
-
function detect(node) {
|
|
284
|
-
if (currentlyIteratedNodes.has(node)) {
|
|
285
|
-
if (node.type === 'Nonterminal') {
|
|
286
|
-
throw new Error(`Detected left recursion for nonterminal '${node.name}'.`);
|
|
287
|
-
}
|
|
288
|
-
else {
|
|
289
|
-
throw new Error(`Detected left recursion for node: ${JSON.stringify(node, undefined, 4)}`);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
currentlyIteratedNodes.add(node);
|
|
293
|
-
switch (node.type) {
|
|
294
|
-
case 'Nonterminal':
|
|
295
|
-
case 'Repetition': {
|
|
296
|
-
detect(node.content);
|
|
297
|
-
break;
|
|
298
|
-
}
|
|
299
|
-
case 'Sequence': {
|
|
300
|
-
for (const member of node.members) {
|
|
301
|
-
detect(member);
|
|
302
|
-
if (!member.optional) {
|
|
303
|
-
break;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
break;
|
|
307
|
-
}
|
|
308
|
-
case 'Choice': {
|
|
309
|
-
for (const member of node.members) {
|
|
310
|
-
detect(member);
|
|
311
|
-
}
|
|
312
|
-
break;
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
currentlyIteratedNodes.delete(node);
|
|
316
|
-
}
|
|
317
|
-
detect(rootNode);
|
|
318
|
-
}
|
|
319
|
-
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
320
|
-
// Exported builder methods
|
|
123
|
+
// Exported AST builder functions
|
|
321
124
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
322
125
|
export function zeroOrMore(content) {
|
|
323
126
|
return {
|
|
@@ -336,7 +139,7 @@ export function oneOrMore(content) {
|
|
|
336
139
|
};
|
|
337
140
|
}
|
|
338
141
|
export function anyOf(...members) {
|
|
339
|
-
if (members.length
|
|
142
|
+
if (members.length === 0) {
|
|
340
143
|
throw new Error(`'anyOf' requires at least one member.`);
|
|
341
144
|
}
|
|
342
145
|
const normalizedMembers = members.map(member => productionToGrammarElement(member));
|
|
@@ -349,7 +152,7 @@ export function anyOf(...members) {
|
|
|
349
152
|
};
|
|
350
153
|
}
|
|
351
154
|
export function bestOf(...members) {
|
|
352
|
-
if (members.length
|
|
155
|
+
if (members.length === 0) {
|
|
353
156
|
throw new Error(`'bestOf' requires at least one member.`);
|
|
354
157
|
}
|
|
355
158
|
const normalizedMembers = members.map(member => productionToGrammarElement(member));
|
|
@@ -371,6 +174,7 @@ export function pattern(pattern) {
|
|
|
371
174
|
else {
|
|
372
175
|
pattern = [inputStart, pattern];
|
|
373
176
|
}
|
|
177
|
+
validatePatternCaptureGroups(pattern);
|
|
374
178
|
const regExp = buildRegExp(pattern);
|
|
375
179
|
const optional = isPatternOptional(pattern);
|
|
376
180
|
return {
|
|
@@ -388,7 +192,7 @@ export function uncached(content) {
|
|
|
388
192
|
return { ...productionToGrammarElement(content), cached: false };
|
|
389
193
|
}
|
|
390
194
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
391
|
-
// Internal builder methods
|
|
195
|
+
// Internal AST builder methods
|
|
392
196
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
393
197
|
function stringTerminal(content) {
|
|
394
198
|
if (content.length < 1) {
|
|
@@ -401,7 +205,7 @@ function stringTerminal(content) {
|
|
|
401
205
|
cached: false,
|
|
402
206
|
};
|
|
403
207
|
}
|
|
404
|
-
function nonterminal(name, content) {
|
|
208
|
+
function nonterminal(name, content, unwrapped) {
|
|
405
209
|
if (name.length < 1) {
|
|
406
210
|
throw new Error(`A nonterminal name must include at least 1 character.`);
|
|
407
211
|
}
|
|
@@ -411,6 +215,7 @@ function nonterminal(name, content) {
|
|
|
411
215
|
content,
|
|
412
216
|
optional: false,
|
|
413
217
|
cached: false,
|
|
218
|
+
unwrapped,
|
|
414
219
|
};
|
|
415
220
|
}
|
|
416
221
|
function sequence(members) {
|
|
@@ -445,7 +250,7 @@ function productionToGrammarElement(production) {
|
|
|
445
250
|
}
|
|
446
251
|
}
|
|
447
252
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
448
|
-
//
|
|
253
|
+
// Grammar class
|
|
449
254
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
450
255
|
export class Grammar {
|
|
451
256
|
productions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grammar.js","sourceRoot":"","sources":["../../src/parser-generator/Grammar.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Grammar.js","sourceRoot":"","sources":["../../src/parser-generator/Grammar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Nonterminal, Terminal } from './Grammar.js';
|
|
2
|
+
export declare class ParseError extends Error {
|
|
3
|
+
readonly input: string;
|
|
4
|
+
readonly offset: number;
|
|
5
|
+
readonly line: number;
|
|
6
|
+
readonly column: number;
|
|
7
|
+
readonly found?: string;
|
|
8
|
+
readonly expected?: readonly ExpectedTerminal[];
|
|
9
|
+
readonly contextProduction?: string;
|
|
10
|
+
constructor(details: ParseErrorDetails, maxDisplayedLineLength?: number);
|
|
11
|
+
static createFailedParseError(input: string, offset: number, bestFailedMatches: FailedMatch[]): ParseError;
|
|
12
|
+
static createIncompleteParseError(input: string, offset: number, parsedLength: number): ParseError;
|
|
13
|
+
}
|
|
14
|
+
export declare function analyzeFailedMatches(failedMatches: FailedMatch[]): FailedMatchAnalysisResult;
|
|
15
|
+
export declare function findCommonProductionPrefix(productionStacks: Nonterminal[][]): Nonterminal[];
|
|
16
|
+
export declare function formatErrorContext(input: string, offset: number, maxDisplayedLineLength: number): string;
|
|
17
|
+
interface FailedMatchAnalysisResult {
|
|
18
|
+
expected: ExpectedTerminal[];
|
|
19
|
+
contextProduction: Nonterminal;
|
|
20
|
+
}
|
|
21
|
+
export interface FailedMatch {
|
|
22
|
+
terminal: Terminal;
|
|
23
|
+
productionStack: Nonterminal[];
|
|
24
|
+
}
|
|
25
|
+
export interface ExpectedTerminal {
|
|
26
|
+
productionName: string;
|
|
27
|
+
terminalString: string;
|
|
28
|
+
}
|
|
29
|
+
export interface ParseErrorDetails {
|
|
30
|
+
input: string;
|
|
31
|
+
offset: number;
|
|
32
|
+
expected?: readonly ExpectedTerminal[];
|
|
33
|
+
contextProductionName?: string;
|
|
34
|
+
parsedLength?: number;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=ParseError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParseError.d.ts","sourceRoot":"","sources":["../../src/parser-generator/ParseError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAOzD,qBAAa,UAAW,SAAQ,KAAK;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAEtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAA;IAE/C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAEnC,YAAY,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,SAAM,EAsBnE;IAID,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,UAAU,CASzG;IAID,MAAM,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,UAAU,CAEjG;CACD;AASD,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,yBAAyB,CAiD5F;AA2DD,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,WAAW,EAAE,EAAE,GAAG,WAAW,EAAE,CA0B3F;AAiDD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,GAAG,MAAM,CAkDxG;AAUD,UAAU,yBAAyB;IAClC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IAC5B,iBAAiB,EAAE,WAAW,CAAA;CAC9B;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,EAAE,QAAQ,CAAA;IAClB,eAAe,EAAE,WAAW,EAAE,CAAA;CAC9B;AAGD,MAAM,WAAW,gBAAgB;IAChC,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IAEd,QAAQ,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACtC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;CACrB"}
|