meta-parser-generator 1.1.1 → 1.2.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/dist/metaParserGenerator.d.ts +1 -1
- package/dist/metaParserGenerator.js +51 -61
- package/dist/metaParserGenerator.js.map +1 -1
- package/dist/types.d.ts +0 -1
- package/dist/types.js +1 -2
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +2 -25
- package/dist/utils.js.map +1 -1
- package/package.json +7 -3
|
@@ -1,31 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.generateParser = exports.generate = exports.generateTokenizer = void 0;
|
|
27
|
-
const fs = __importStar(require("fs"));
|
|
28
|
-
const utils_1 = require("./utils");
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import { preprocessGrammar, checkGrammarAndTokens } from './utils.js';
|
|
29
3
|
const recordFailure = `
|
|
30
4
|
let best_failure;
|
|
31
5
|
let best_failure_array = [];
|
|
@@ -101,7 +75,7 @@ function memoize_left_recur(name, func) {
|
|
|
101
75
|
* @param tokenDef - Token definitions mapping token names to patterns
|
|
102
76
|
* @returns Array of code lines for the tokenizer
|
|
103
77
|
*/
|
|
104
|
-
function generateTokenizer(tokenDef) {
|
|
78
|
+
export function generateTokenizer(tokenDef) {
|
|
105
79
|
const output = [];
|
|
106
80
|
const keys = Object.keys(tokenDef);
|
|
107
81
|
for (let i = 0; i < keys.length; i++) {
|
|
@@ -207,7 +181,6 @@ function generateTokenizer(tokenDef) {
|
|
|
207
181
|
`);
|
|
208
182
|
return output;
|
|
209
183
|
}
|
|
210
|
-
exports.generateTokenizer = generateTokenizer;
|
|
211
184
|
/**
|
|
212
185
|
* Generates code for a specific grammar rule alternative
|
|
213
186
|
* @param name - Name of the grammar rule
|
|
@@ -217,7 +190,7 @@ exports.generateTokenizer = generateTokenizer;
|
|
|
217
190
|
* @param debug - Whether to include debug logging
|
|
218
191
|
* @returns Array of code lines for this rule function
|
|
219
192
|
*/
|
|
220
|
-
function generatesub_rule_index(name, index, ruleItems, tokensDef, debug) {
|
|
193
|
+
function generatesub_rule_index(name, index, ruleItems, tokensDef, debug, skipMemoize = false) {
|
|
221
194
|
const output = [];
|
|
222
195
|
output.push(`let ${name}_${index} = (stream, index) => {`);
|
|
223
196
|
let i = 0;
|
|
@@ -304,11 +277,13 @@ function generatesub_rule_index(name, index, ruleItems, tokensDef, debug) {
|
|
|
304
277
|
output.push(' node.success = i === stream.length; node.last_index = i;');
|
|
305
278
|
output.push(' return node;');
|
|
306
279
|
output.push('};');
|
|
307
|
-
if (
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
280
|
+
if (!skipMemoize) {
|
|
281
|
+
if (ruleItems[0].leftRecursion) {
|
|
282
|
+
output.push(`${name}_${index} = memoize_left_recur('${name}_${index}', ${name}_${index});`);
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
output.push(`${name}_${index} = memoize('${name}_${index}', ${name}_${index});`);
|
|
286
|
+
}
|
|
312
287
|
}
|
|
313
288
|
output.push('\n');
|
|
314
289
|
return output;
|
|
@@ -320,10 +295,10 @@ function generatesub_rule_index(name, index, ruleItems, tokensDef, debug) {
|
|
|
320
295
|
* @param debug - Whether to include debug logging in generated code
|
|
321
296
|
* @returns Array of code lines for the complete parser
|
|
322
297
|
*/
|
|
323
|
-
function generate(grammar, tokensDef, debug) {
|
|
298
|
+
export function generate(grammar, tokensDef, debug) {
|
|
324
299
|
let output = [];
|
|
325
|
-
|
|
326
|
-
const newGrammar =
|
|
300
|
+
checkGrammarAndTokens(grammar, tokensDef);
|
|
301
|
+
const newGrammar = preprocessGrammar(grammar);
|
|
327
302
|
const entries = Object.keys(newGrammar);
|
|
328
303
|
output.push('// This code is automatically generated by the meta parser, do not modify');
|
|
329
304
|
output.push('// produced with metaParserGenerator.js');
|
|
@@ -331,47 +306,62 @@ function generate(grammar, tokensDef, debug) {
|
|
|
331
306
|
entries.forEach((key) => {
|
|
332
307
|
let i = 0;
|
|
333
308
|
const metaSub = [];
|
|
309
|
+
const hasLeftRecursion = newGrammar[key].some(ruleItems => ruleItems[0].leftRecursion);
|
|
334
310
|
newGrammar[key].forEach((ruleItems) => {
|
|
335
|
-
|
|
311
|
+
// When any alternative in this rule is left-recursive, skip individual memoize
|
|
312
|
+
// wrapping so the grow loop in the combined memoize_left_recur sees fresh results
|
|
313
|
+
// on every iteration instead of stale cached values.
|
|
314
|
+
output = output.concat(generatesub_rule_index(key, i, ruleItems, tokensDef, debug, hasLeftRecursion));
|
|
336
315
|
metaSub.push(`${key}_${i}`);
|
|
337
316
|
i++;
|
|
338
317
|
});
|
|
339
|
-
output.push(`function ${key}(stream, index) {`);
|
|
340
318
|
const st = metaSub.map(sub => `${sub}(stream, index)`).join('\n || ');
|
|
341
|
-
|
|
342
|
-
|
|
319
|
+
if (hasLeftRecursion) {
|
|
320
|
+
// Wrap the *combined* function so Guido van Rossum's seed-grow loop runs over
|
|
321
|
+
// every alternative (including the non-LR base cases) on each iteration.
|
|
322
|
+
output.push(`let ${key} = memoize_left_recur('${key}', function ${key}_combined(stream, index) {`);
|
|
323
|
+
output.push(` return ${st};`);
|
|
324
|
+
output.push('});');
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
output.push(`function ${key}(stream, index) {`);
|
|
328
|
+
output.push(` return ${st};`);
|
|
329
|
+
output.push('}');
|
|
330
|
+
}
|
|
343
331
|
});
|
|
344
332
|
output = output.concat(generateTokenizer(tokensDef));
|
|
345
|
-
output.push(`
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
333
|
+
output.push(`
|
|
334
|
+
const parse = (stream) => {
|
|
335
|
+
best_failure = null;
|
|
336
|
+
best_failure_index = 0;
|
|
337
|
+
best_failure_array = [];
|
|
338
|
+
cache = {};
|
|
339
|
+
cacheR = {};
|
|
340
|
+
const result = START(stream, 0);
|
|
341
|
+
if (!result) {
|
|
342
|
+
return {
|
|
343
|
+
success: false,
|
|
344
|
+
primary_failure: best_failure,
|
|
345
|
+
all_failures: best_failure_array,
|
|
358
346
|
}
|
|
359
|
-
|
|
360
|
-
|
|
347
|
+
}
|
|
348
|
+
return result;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
export default {
|
|
352
|
+
parse,
|
|
361
353
|
tokenize,
|
|
362
354
|
};
|
|
363
355
|
`);
|
|
364
356
|
return output;
|
|
365
357
|
}
|
|
366
|
-
exports.generate = generate;
|
|
367
358
|
/**
|
|
368
359
|
* Generates a parser file from grammar and token definitions
|
|
369
360
|
* @param grammar - Grammar rules defining the language structure
|
|
370
361
|
* @param tokensDefinition - Token definitions mapping token names to patterns
|
|
371
362
|
* @param filename - Output path for the generated parser file
|
|
372
363
|
*/
|
|
373
|
-
function generateParser(grammar, tokensDefinition, filename) {
|
|
364
|
+
export function generateParser(grammar, tokensDefinition, filename) {
|
|
374
365
|
fs.writeFileSync(filename, generate(grammar, tokensDefinition, false).join('\n'));
|
|
375
366
|
}
|
|
376
|
-
exports.generateParser = generateParser;
|
|
377
367
|
//# sourceMappingURL=metaParserGenerator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metaParserGenerator.js","sourceRoot":"","sources":["../metaParserGenerator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metaParserGenerator.js","sourceRoot":"","sources":["../metaParserGenerator.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
package/dist/types.js
CHANGED
package/dist/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ASTNode, Token, TokensDefinition, Grammar, ProcessedGrammar, ParseFailure } from "./types";
|
|
1
|
+
import { ASTNode, Token, TokensDefinition, Grammar, ProcessedGrammar, ParseFailure } from "./types.js";
|
|
2
2
|
declare function streamContext(token: Token, firstToken: Token, stream: Token[]): string;
|
|
3
3
|
/**
|
|
4
4
|
* Displays a formatted error message for parsing failures
|
package/dist/utils.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.printTree = exports.displayError = exports.checkGrammarAndTokens = exports.preprocessGrammar = exports.streamContext = void 0;
|
|
4
1
|
const RED = '\x1B[0;31m';
|
|
5
2
|
const YELLOW = '\x1B[1;33m';
|
|
6
3
|
const NC = '\x1B[0m';
|
|
@@ -54,7 +51,6 @@ function streamContext(token, firstToken, stream) {
|
|
|
54
51
|
}
|
|
55
52
|
return str;
|
|
56
53
|
}
|
|
57
|
-
exports.streamContext = streamContext;
|
|
58
54
|
/**
|
|
59
55
|
* Displays a formatted error message for parsing failures
|
|
60
56
|
* @param stream - Token stream
|
|
@@ -82,32 +78,15 @@ function displayError(stream, tokensDefinition, grammar, bestFailure) {
|
|
|
82
78
|
rule += `${YELLOW}${sr}${NC} `;
|
|
83
79
|
}
|
|
84
80
|
}
|
|
85
|
-
// If multiple alternatives failed at same position, show them
|
|
86
|
-
let expectedTokens = '';
|
|
87
|
-
if (bestFailure.best_failure_array && bestFailure.best_failure_array.length > 1) {
|
|
88
|
-
const uniqueExpected = new Set();
|
|
89
|
-
bestFailure.best_failure_array.forEach(f => {
|
|
90
|
-
var _a;
|
|
91
|
-
const expectedRule = grammar[f.type][f.sub_rule_index][f.sub_rule_token_index];
|
|
92
|
-
if (expectedRule) {
|
|
93
|
-
const verbose = ((_a = tokensDefinition[expectedRule]) === null || _a === void 0 ? void 0 : _a.verbose) || expectedRule;
|
|
94
|
-
uniqueExpected.add(verbose);
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
if (uniqueExpected.size > 1) {
|
|
98
|
-
expectedTokens = `\n Expected one of: ${YELLOW}${Array.from(uniqueExpected).join(', ')}${NC}`;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
81
|
throw new Error(`
|
|
102
82
|
${RED}Parser error at line ${positions.lineNumber + 1} char ${positions.charNumber} to ${positions.end} ${NC}
|
|
103
83
|
Unexpected ${YELLOW}${replaceInvisibleChars(token.value)}${NC}
|
|
104
84
|
Best match was at rule ${bestFailure.type}[${bestFailure.sub_rule_index}][${bestFailure.sub_rule_token_index}] ${rule}
|
|
105
|
-
token "${YELLOW}${replaceInvisibleChars(token.value)}${NC}" (type:${token.type}) doesn't match rule item ${YELLOW}${failingToken}${NC}
|
|
85
|
+
token "${YELLOW}${replaceInvisibleChars(token.value)}${NC}" (type:${token.type}) doesn't match rule item ${YELLOW}${failingToken}${NC}
|
|
106
86
|
Context:
|
|
107
87
|
${streamContext(token, firstToken, stream)}
|
|
108
88
|
`);
|
|
109
89
|
}
|
|
110
|
-
exports.displayError = displayError;
|
|
111
90
|
function isRule(node) {
|
|
112
91
|
return typeof node.type === 'string';
|
|
113
92
|
}
|
|
@@ -129,7 +108,6 @@ function printTree(node, sp) {
|
|
|
129
108
|
console.log(`${sp}t ${node.type} ${node.value}`);
|
|
130
109
|
}
|
|
131
110
|
}
|
|
132
|
-
exports.printTree = printTree;
|
|
133
111
|
/**
|
|
134
112
|
* Validates that grammar and token definitions don't have overlapping keys
|
|
135
113
|
* @param grammar - Grammar rules
|
|
@@ -143,7 +121,6 @@ function checkGrammarAndTokens(grammar, tokensDefinition) {
|
|
|
143
121
|
throw new Error(`Grammar and token have keys in common: ${intersection}`);
|
|
144
122
|
}
|
|
145
123
|
}
|
|
146
|
-
exports.checkGrammarAndTokens = checkGrammarAndTokens;
|
|
147
124
|
/**
|
|
148
125
|
* Preprocesses grammar rules to extract modifiers and aliases
|
|
149
126
|
* @param rules - Raw grammar rules
|
|
@@ -181,5 +158,5 @@ function preprocessGrammar(rules) {
|
|
|
181
158
|
return accu;
|
|
182
159
|
}, {});
|
|
183
160
|
}
|
|
184
|
-
|
|
161
|
+
export { streamContext, preprocessGrammar, checkGrammarAndTokens, displayError, printTree, };
|
|
185
162
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"AAEA,MAAM,GAAG,GAAG,YAAY,CAAC;AACzB,MAAM,MAAM,GAAG,YAAY,CAAC;AAC5B,MAAM,EAAE,GAAG,SAAS,CAAC;AAErB,SAAS,qBAAqB,CAAC,CAAS;IACtC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC1B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,aAAa,CAAC,KAAY;IACjC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC;IACtC,MAAM,GAAG,GAAG,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC;IACnC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,aAAa,CAAC,KAAY,EAAE,UAAiB,EAAE,MAAe;IACrE,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;IACjC,MAAM,eAAe,GAAG,UAAU,CAAC,YAAY,CAAC;IAChD,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAE5C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,GAAG,GAAG,EAAE,CAAC;IAEb,SAAS,IAAI,CAAC,CAAS;QACrB,IAAI,WAAW,KAAK,KAAK,EAAE;YACzB,OAAO,GAAG,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SAC5C;QACD,IAAI,WAAW,IAAI,eAAe,IAAI,WAAW,GAAG,KAAK,EAAE;YACzD,OAAO,MAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SAC/C;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,MAAM,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE;QACvD,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACjB,MAAM,EAAE,CAAC;YACT,IAAI,MAAM,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE;gBAC7B,OAAO,GAAG,CAAC;aACZ;YACD,IAAI,MAAM,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE;gBAC9B,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;aAC5D;SACF;aAAM,IAAI,MAAM,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE;YACrC,IAAI,WAAW,KAAK,CAAC,EAAE;gBACrB,GAAG,IAAI,KAAK,MAAM,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;aACpD;YACD,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;SAChB;QACD,WAAW,EAAE,CAAC;KACf;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,MAAe,EAAE,gBAAkC,EAAE,OAAgB,EAAE,WAAyB;IACpH,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACxE,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC;IAC9B,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC;IAC3C,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,gBAAgB,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;YACxD,EAAE,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,KAAK,WAAW,CAAC,oBAAoB,EAAE;YAC1C,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;YAC5B,YAAY,GAAG,GAAG,EAAE,EAAE,CAAC;SACxB;aAAM;YACL,IAAI,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;SAChC;KACF;IAED,MAAM,IAAI,KAAK,CAAC;IACd,GAAG,wBAAwB,SAAS,CAAC,UAAU,GAAG,CAAC,SAAS,SAAS,CAAC,UAAU,OAAO,SAAS,CAAC,GAAG,IAAI,EAAE;eAC/F,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;2BACpC,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,cAAc,KAAK,WAAW,CAAC,oBAAoB,KAAK,IAAI;WAC5G,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,KAAK,CAAC,IAAI,6BAA6B,MAAM,GAAG,YAAY,GAAG,EAAE;;EAErI,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC;CACzC,CAAC,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,IAAS;IACvB,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAA;AACtC,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,IAAa,EAAE,EAAU;IAC1C,IAAG,MAAM,CAAC,IAAI,CAAC,EAAE;QACf,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;aACxC;SACF;KACF;SAAM;QACL,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAClD;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,OAAgB,EAAE,gBAAkC;IACjF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,0CAA0C,YAAY,EAAE,CAAC,CAAC;KAC3E;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAsB,EAAE,GAAG,EAAE,EAAE;QAC/D,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CACxB,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YAC/C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;gBAClC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;aAC7G;YACD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC3B,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACzD,QAAQ,GAAG,IAAI,CAAC;aACjB;YACD,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC3B,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACzD,UAAU,GAAG,IAAI,CAAC;aACnB;YACD,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACpC,aAAa,GAAG,IAAI,CAAC;aACtB;YACD,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChB,QAAQ;gBACR,UAAU;gBACV,aAAa;aACd,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,SAAS,GACV,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "meta-parser-generator",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"type": "module",
|
|
4
5
|
"description": "A PEG parser generator with packrat parsing written in JavaScript for JavaScript",
|
|
5
6
|
"main": "dist/metaParserGenerator.js",
|
|
6
7
|
"types": "dist/metaParserGenerator.d.ts",
|
|
@@ -12,8 +13,11 @@
|
|
|
12
13
|
"scripts": {
|
|
13
14
|
"build": "tsc",
|
|
14
15
|
"prepublish": "npm run build",
|
|
15
|
-
"test": "jest --no-cache",
|
|
16
|
-
"gentest": "node ./tests/generateParser.js && jest --no-cache"
|
|
16
|
+
"test": "NODE_OPTIONS=--experimental-vm-modules jest --no-cache",
|
|
17
|
+
"gentest": "node ./tests/generateParser.js && NODE_OPTIONS=--experimental-vm-modules jest --no-cache"
|
|
18
|
+
},
|
|
19
|
+
"jest": {
|
|
20
|
+
"transform": {}
|
|
17
21
|
},
|
|
18
22
|
"repository": {
|
|
19
23
|
"type": "git",
|