@traqula/core 0.0.1-alpha.137 → 0.0.1-alpha.141

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.
@@ -8,9 +8,9 @@ export type CheckOverlap<T, U, V, W = never> = T & U extends never ? V : W;
8
8
  /**
9
9
  * Convert a list of RuleDefs to a Record with the name of the RuleDef as the key, matching the RuleDefMap type.
10
10
  */
11
- export type RuleListToObject<T extends readonly RuleDef[], Agg extends Record<string, RuleDef> = Record<never, never>> = T extends readonly [infer First, ...infer Rest] ? (First extends RuleDef ? (Rest extends readonly RuleDef[] ? (RuleListToObject<Rest, {
11
+ export type RuleListToObject<T extends readonly RuleDef[], Names extends string = RuleNamesFromList<T>, Agg extends Record<string, RuleDef> = Record<never, never>> = T extends readonly [infer First, ...infer Rest] ? (First extends RuleDef ? (Rest extends readonly RuleDef[] ? (RuleListToObject<Rest, Names, {
12
12
  [K in keyof Agg | First['name']]: K extends First['name'] ? First : Agg[K];
13
- }>) : never) : never) : Agg;
13
+ }>) : never) : never) : RuleDefMap<Names> & Agg;
14
14
  export type ParserFromRules<Names extends string, RuleDefs extends RuleDefMap<Names>> = {
15
15
  [K in Names]: RuleDefs[K] extends RuleDef<K, infer RET, infer ARGS> ? (...args: ARGS) => RET : never;
16
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"builderTypes.js","sourceRoot":"","sources":["builderTypes.ts"],"names":[],"mappings":"","sourcesContent":["import type { ParserMethod } from 'chevrotain';\nimport type { RuleDef } from './ruleDefTypes';\n\nexport type RuleNamesFromList<T extends readonly RuleDef[]> = T[number]['name'];\n\nexport type RuleDefMap<RuleNames extends string> = {[Key in RuleNames]: RuleDef<Key> };\n\nexport type CheckOverlap<T, U, V, W = never> = T & U extends never ? V : W;\n\n/**\n * Convert a list of RuleDefs to a Record with the name of the RuleDef as the key, matching the RuleDefMap type.\n */\nexport type RuleListToObject<\n T extends readonly RuleDef[],\n Agg extends Record<string, RuleDef> = Record<never, never>,\n> = T extends readonly [infer First, ...infer Rest] ? (\n First extends RuleDef ? (\n Rest extends readonly RuleDef[] ? (\n RuleListToObject<Rest, {[K in keyof Agg | First['name']]: K extends First['name'] ? First : Agg[K] }>\n ) : never\n ) : never\n) : Agg;\n\nexport type ParserFromRules<Names extends string, RuleDefs extends RuleDefMap<Names>> = {\n [K in Names]: RuleDefs[K] extends RuleDef<K, infer RET, infer ARGS> ? (...args: ARGS) => RET : never\n};\n\nexport type ParseMethodsFromRules<Names extends string, RuleDefs extends RuleDefMap<Names>> = {\n [K in Names]: RuleDefs[K] extends RuleDef<K, infer RET, infer ARGS> ? ParserMethod<ARGS, RET> : never\n};\n"]}
1
+ {"version":3,"file":"builderTypes.js","sourceRoot":"","sources":["builderTypes.ts"],"names":[],"mappings":"","sourcesContent":["import type { ParserMethod } from 'chevrotain';\nimport type { RuleDef } from './ruleDefTypes';\n\nexport type RuleNamesFromList<T extends readonly RuleDef[]> = T[number]['name'];\n\nexport type RuleDefMap<RuleNames extends string> = {[Key in RuleNames]: RuleDef<Key> };\n\nexport type CheckOverlap<T, U, V, W = never> = T & U extends never ? V : W;\n\n/**\n * Convert a list of RuleDefs to a Record with the name of the RuleDef as the key, matching the RuleDefMap type.\n */\nexport type RuleListToObject<\n T extends readonly RuleDef[],\n Names extends string = RuleNamesFromList<T>,\n Agg extends Record<string, RuleDef> = Record<never, never>,\n> = T extends readonly [infer First, ...infer Rest] ? (\n First extends RuleDef ? (\n Rest extends readonly RuleDef[] ? (\n RuleListToObject<Rest, Names, {[K in keyof Agg | First['name']]: K extends First['name'] ? First : Agg[K] }>\n ) : never\n ) : never\n) : RuleDefMap<Names> & Agg;\n\nexport type ParserFromRules<Names extends string, RuleDefs extends RuleDefMap<Names>> = {\n [K in Names]: RuleDefs[K] extends RuleDef<K, infer RET, infer ARGS> ? (...args: ARGS) => RET : never\n};\n\nexport type ParseMethodsFromRules<Names extends string, RuleDefs extends RuleDefMap<Names>> = {\n [K in Names]: RuleDefs[K] extends RuleDef<K, infer RET, infer ARGS> ? ParserMethod<ARGS, RET> : never\n};\n"]}
@@ -4,22 +4,39 @@ import { EmbeddedActionsParser } from 'chevrotain';
4
4
  import type { CheckOverlap, RuleDefMap, ParserFromRules, RuleListToObject, RuleNamesFromList, ParseMethodsFromRules } from './builderTypes';
5
5
  import type { ImplArgs, RuleDef } from './ruleDefTypes';
6
6
  export declare class Builder<Names extends string, RuleDefs extends RuleDefMap<Names>> {
7
+ /**
8
+ * Create a builder with from some initial grammar rules or an existing builder.
9
+ * If a builder is provided, a new copy will be created.
10
+ */
7
11
  static createBuilder<Rules extends readonly RuleDef[] = RuleDef[], Names extends string = RuleNamesFromList<Rules>, RuleDefs extends RuleDefMap<Names> = RuleListToObject<Rules>>(start: Rules | Builder<Names, RuleDefs>): Builder<Names, RuleDefs>;
8
12
  private rules;
9
13
  private constructor();
14
+ /**
15
+ * Change the implementation of an existing grammar rule.
16
+ */
10
17
  patchRule<U extends Names, RET, ARGS extends unknown[]>(patch: RuleDef<U, RET, ARGS>): Builder<Names, {
11
- [Key in Names]: Key extends U ? RuleDef<Key, RET, ARGS> : RuleDefs[Key];
18
+ [Key in Names]: Key extends U ? RuleDef<Key, RET, ARGS> : (RuleDefs[Key] extends RuleDef<Key> ? RuleDefs[Key] : never);
12
19
  }>;
20
+ /**
21
+ * Add a rule to the grammar. If the rule already exists, but the implementation differs, an error will be thrown.
22
+ */
13
23
  addRuleRedundant<U extends string, RET, ARGS extends undefined[]>(rule: RuleDef<U, RET, ARGS>): Builder<Names | U, {
14
- [K in Names | U]: K extends U ? RuleDef<K, RET, ARGS> : RuleDefs[K];
24
+ [K in Names | U]: K extends U ? RuleDef<K, RET, ARGS> : (K extends Names ? (RuleDefs[K] extends RuleDef<K> ? RuleDefs[K] : never) : never);
15
25
  }>;
26
+ /**
27
+ * Add a rule to the grammar. Will raise a typescript error if the rule already exists in the grammar.
28
+ */
16
29
  addRule<U extends string, RET, ARGS extends unknown[]>(rule: CheckOverlap<U, Names, RuleDef<U, RET, ARGS>>): Builder<Names | U, {
17
- [K in Names | U]: K extends U ? RuleDef<K, RET, ARGS> : RuleDefs[K];
30
+ [K in Names | U]: K extends U ? RuleDef<K, RET, ARGS> : (K extends Names ? (RuleDefs[K] extends RuleDef<K> ? RuleDefs[K] : never) : never);
31
+ }>;
32
+ addMany<U extends RuleDef[]>(...rules: CheckOverlap<RuleNamesFromList<U>, Names, U>): Builder<Names | RuleNamesFromList<U>, {
33
+ [K in Names | RuleNamesFromList<U>]: K extends keyof RuleListToObject<typeof rules> ? (RuleListToObject<typeof rules>[K] extends RuleDef<K> ? RuleListToObject<typeof rules>[K] : never) : (K extends Names ? (RuleDefs[K] extends RuleDef<K> ? RuleDefs[K] : never) : never);
34
+ }>;
35
+ deleteRule<U extends Names>(ruleName: U): Builder<Exclude<Names, U>, {
36
+ [K in Exclude<Names, U>]: RuleDefs[K] extends RuleDef<K> ? RuleDefs[K] : never;
18
37
  }>;
19
- addMany<U extends RuleDef[]>(...rules: CheckOverlap<RuleNamesFromList<U>, Names, U>): Builder<Names | RuleNamesFromList<U>, RuleDefs & RuleListToObject<U>>;
20
- deleteRule<U extends Names>(ruleName: U): Builder<Exclude<Names, U>, Omit<RuleDefs, U>>;
21
38
  merge<OtherNames extends string, OtherRules extends RuleDefMap<OtherNames>, OW extends readonly RuleDef[]>(builder: Builder<OtherNames, OtherRules>, overridingRules: OW): Builder<Names | OtherNames | RuleNamesFromList<OW>, {
22
- [K in Names | OtherNames | RuleNamesFromList<OW>]: K extends Names | OtherNames ? (K extends Names ? RuleDefs[K] : (K extends OtherNames ? OtherRules[K] : never)) : (K extends keyof RuleListToObject<OW> ? RuleListToObject<OW>[K] : never);
39
+ [K in Names | OtherNames | RuleNamesFromList<OW>]: K extends keyof RuleListToObject<OW> ? (RuleListToObject<OW>[K] extends RuleDef<K> ? RuleListToObject<OW>[K] : never) : (K extends Names ? (RuleDefs[K] extends RuleDef<K> ? RuleDefs[K] : never) : K extends OtherNames ? (OtherRules[K] extends RuleDef<K> ? OtherRules[K] : never) : never);
23
40
  }>;
24
41
  consumeToParser({ tokenVocabulary, parserConfig, lexerConfig }: {
25
42
  tokenVocabulary: TokenType[];
@@ -8,45 +8,51 @@ function listToRuleDefMap(rules) {
8
8
  return newRules;
9
9
  }
10
10
  export class Builder {
11
+ /**
12
+ * Create a builder with from some initial grammar rules or an existing builder.
13
+ * If a builder is provided, a new copy will be created.
14
+ */
11
15
  static createBuilder(start) {
12
16
  if (start instanceof Builder) {
13
17
  return new Builder({ ...start.rules });
14
18
  }
15
- // @ts-expect-error TS2344
16
19
  return new Builder(listToRuleDefMap(start));
17
20
  }
18
21
  constructor(startRules) {
19
22
  this.rules = startRules;
20
23
  }
24
+ /**
25
+ * Change the implementation of an existing grammar rule.
26
+ */
21
27
  patchRule(patch) {
22
- // @ts-expect-error TS2322
23
- this.rules[patch.name] = patch;
24
- // @ts-expect-error TS2344
25
- return this;
28
+ const self = this;
29
+ self.rules[patch.name] = patch;
30
+ return self;
26
31
  }
32
+ /**
33
+ * Add a rule to the grammar. If the rule already exists, but the implementation differs, an error will be thrown.
34
+ */
27
35
  addRuleRedundant(rule) {
28
- const rules = this.rules;
36
+ const self = this;
37
+ const rules = self.rules;
29
38
  if (rules[rule.name] !== undefined && rules[rule.name] !== rule) {
30
39
  throw new Error(`Rule ${rule.name} already exists in the builder`);
31
40
  }
32
- // @ts-expect-error TS2536
33
- this.rules[rule.name] = rule;
34
- // @ts-expect-error TS2536
35
- return this;
41
+ rules[rule.name] = rule;
42
+ return self;
36
43
  }
44
+ /**
45
+ * Add a rule to the grammar. Will raise a typescript error if the rule already exists in the grammar.
46
+ */
37
47
  addRule(rule) {
38
48
  return this.addRuleRedundant(rule);
39
49
  }
40
- addMany(...rules
41
- // @ts-expect-error TS2536
42
- ) {
50
+ addMany(...rules) {
43
51
  this.rules = { ...this.rules, ...listToRuleDefMap(rules) };
44
- // @ts-expect-error TS2536
45
52
  return this;
46
53
  }
47
54
  deleteRule(ruleName) {
48
55
  delete this.rules[ruleName];
49
- // @ts-expect-error TS2536
50
56
  return this;
51
57
  }
52
58
  merge(builder, overridingRules) {
@@ -72,9 +78,7 @@ export class Builder {
72
78
  }
73
79
  }
74
80
  }
75
- // @ts-expect-error TS2322
76
81
  this.rules = otherRules;
77
- // @ts-expect-error TS2322
78
82
  return this;
79
83
  }
80
84
  consumeToParser({ tokenVocabulary, parserConfig = {}, lexerConfig = {} }, context = {}) {
@@ -90,8 +94,7 @@ export class Builder {
90
94
  const selfSufficientParser = {};
91
95
  // eslint-disable-next-line ts/no-unnecessary-type-assertion
92
96
  for (const rule of Object.values(this.rules)) {
93
- // @ts-expect-error TS7053
94
- selfSufficientParser[rule.name] = (input, ...args) => {
97
+ selfSufficientParser[rule.name] = ((input, ...args) => {
95
98
  // Transform input in accordance to 19.2
96
99
  input = input.replaceAll(/\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{8})/gu, (_, unicode4, unicode8) => {
97
100
  if (unicode4) {
@@ -120,7 +123,7 @@ export class Builder {
120
123
  ${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\n')}`);
121
124
  }
122
125
  return result;
123
- };
126
+ });
124
127
  }
125
128
  return selfSufficientParser;
126
129
  }
@@ -157,7 +160,6 @@ ${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\n')}`);
157
160
  context: this.runningContext,
158
161
  };
159
162
  for (const rule of Object.values(rules)) {
160
- // @ts-expect-error TS7053
161
163
  this[rule.name] = this.RULE(rule.name, rule.impl(implArgs));
162
164
  }
163
165
  this.performSelfAnalysis();
@@ -248,8 +250,6 @@ ${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\n')}`);
248
250
  ACTION: func => this.ACTION(func),
249
251
  BACKTRACK: (cstDef, ...args) => {
250
252
  try {
251
- // @ts-expect-error TS7053
252
- // eslint-disable-next-line ts/no-unsafe-argument
253
253
  return this.BACKTRACK(this[cstDef.name], { ARGS: args });
254
254
  }
255
255
  catch (error) {
@@ -258,8 +258,6 @@ ${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\n')}`);
258
258
  },
259
259
  SUBRULE: (cstDef, ...args) => {
260
260
  try {
261
- // @ts-expect-error TS7053
262
- // eslint-disable-next-line ts/no-unsafe-argument
263
261
  return this.SUBRULE(this[cstDef.name], { ARGS: args });
264
262
  }
265
263
  catch (error) {
@@ -268,8 +266,6 @@ ${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\n')}`);
268
266
  },
269
267
  SUBRULE1: (cstDef, ...args) => {
270
268
  try {
271
- // @ts-expect-error TS7053
272
- // eslint-disable-next-line ts/no-unsafe-argument
273
269
  return this.SUBRULE1(this[cstDef.name], { ARGS: args });
274
270
  }
275
271
  catch (error) {
@@ -278,8 +274,6 @@ ${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\n')}`);
278
274
  },
279
275
  SUBRULE2: (cstDef, ...args) => {
280
276
  try {
281
- // @ts-expect-error TS7053
282
- // eslint-disable-next-line ts/no-unsafe-argument
283
277
  return this.SUBRULE2(this[cstDef.name], { ARGS: args });
284
278
  }
285
279
  catch (error) {
@@ -288,8 +282,6 @@ ${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\n')}`);
288
282
  },
289
283
  SUBRULE3: (cstDef, ...args) => {
290
284
  try {
291
- // @ts-expect-error TS7053
292
- // eslint-disable-next-line ts/no-unsafe-argument
293
285
  return this.SUBRULE3(this[cstDef.name], { ARGS: args });
294
286
  }
295
287
  catch (error) {
@@ -298,8 +290,6 @@ ${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\n')}`);
298
290
  },
299
291
  SUBRULE4: (cstDef, ...args) => {
300
292
  try {
301
- // @ts-expect-error TS7053
302
- // eslint-disable-next-line ts/no-unsafe-argument
303
293
  return this.SUBRULE4(this[cstDef.name], { ARGS: args });
304
294
  }
305
295
  catch (error) {
@@ -308,8 +298,6 @@ ${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\n')}`);
308
298
  },
309
299
  SUBRULE5: (cstDef, ...args) => {
310
300
  try {
311
- // @ts-expect-error TS7053
312
- // eslint-disable-next-line ts/no-unsafe-argument
313
301
  return this.SUBRULE5(this[cstDef.name], { ARGS: args });
314
302
  }
315
303
  catch (error) {
@@ -318,8 +306,6 @@ ${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\n')}`);
318
306
  },
319
307
  SUBRULE6: (cstDef, ...args) => {
320
308
  try {
321
- // @ts-expect-error TS7053
322
- // eslint-disable-next-line ts/no-unsafe-argument
323
309
  return this.SUBRULE6(this[cstDef.name], { ARGS: args });
324
310
  }
325
311
  catch (error) {
@@ -328,8 +314,6 @@ ${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\n')}`);
328
314
  },
329
315
  SUBRULE7: (cstDef, ...args) => {
330
316
  try {
331
- // @ts-expect-error TS7053
332
- // eslint-disable-next-line ts/no-unsafe-argument
333
317
  return this.SUBRULE7(this[cstDef.name], { ARGS: args });
334
318
  }
335
319
  catch (error) {
@@ -338,8 +322,6 @@ ${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\n')}`);
338
322
  },
339
323
  SUBRULE8: (cstDef, ...args) => {
340
324
  try {
341
- // @ts-expect-error TS7053
342
- // eslint-disable-next-line ts/no-unsafe-argument
343
325
  return this.SUBRULE8(this[cstDef.name], { ARGS: args });
344
326
  }
345
327
  catch (error) {
@@ -348,8 +330,6 @@ ${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\n')}`);
348
330
  },
349
331
  SUBRULE9: (cstDef, ...args) => {
350
332
  try {
351
- // @ts-expect-error TS7053
352
- // eslint-disable-next-line ts/no-unsafe-argument
353
333
  return this.SUBRULE9(this[cstDef.name], { ARGS: args });
354
334
  }
355
335
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"parserBuilder.js","sourceRoot":"","sources":["parserBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable ts/ban-ts-comment */\nimport type { ILexerConfig, IParserConfig } from '@chevrotain/types';\nimport type {IToken, TokenType, TokenVocabulary} from 'chevrotain';\nimport { EmbeddedActionsParser, Lexer } from 'chevrotain';\nimport { DataFactory } from 'rdf-data-factory';\nimport type {\n CheckOverlap,\n RuleDefMap,\n ParserFromRules,\n RuleListToObject,\n RuleNamesFromList,\n ParseMethodsFromRules,\n} from './builderTypes';\nimport type { CstDef, ImplArgs, RuleDef } from './ruleDefTypes';\n\nfunction listToRuleDefMap<T extends readonly RuleDef[]>(rules: T): RuleListToObject<T> {\n const newRules: Record<string, RuleDef> = {};\n for (const rule of rules) {\n newRules[rule.name] = rule;\n }\n return <RuleListToObject<T>>newRules;\n}\n\nexport class Builder<Names extends string, RuleDefs extends RuleDefMap<Names>> {\n public static createBuilder<\n Rules extends readonly RuleDef[] = RuleDef[],\n Names extends string = RuleNamesFromList<Rules>,\n // @ts-expect-error TS2344\n RuleDefs extends RuleDefMap<Names> = RuleListToObject<Rules>,\n// eslint-disable-next-line antfu/consistent-list-newline\n>(start: Rules | Builder<Names, RuleDefs>): Builder<Names, RuleDefs> {\n if (start instanceof Builder) {\n return new Builder({ ...start.rules });\n }\n // @ts-expect-error TS2344\n return new Builder(listToRuleDefMap(start));\n }\n\n private rules: RuleDefs;\n\n private constructor(startRules: RuleDefs) {\n this.rules = startRules;\n }\n\n public patchRule<U extends Names, RET, ARGS extends unknown[]>(patch: RuleDef<U, RET, ARGS>):\n // @ts-expect-error TS2344\n Builder<Names, {[Key in Names]: Key extends U ? RuleDef<Key, RET, ARGS> : RuleDefs[Key] }> {\n // @ts-expect-error TS2322\n this.rules[patch.name] = patch;\n // @ts-expect-error TS2344\n return <Builder<Names, Omit<RuleDefs, U> & Record<U, RuleDef<U, RET, ARGS>>>> this;\n }\n\n public addRuleRedundant<U extends string, RET, ARGS extends undefined[]>(rule: RuleDef<U, RET, ARGS>):\n // @ts-expect-error TS2344\n Builder<Names | U, {[K in Names | U]: K extends U ? RuleDef<K, RET, ARGS> : RuleDefs[K] }> {\n const rules = <Record<string, RuleDef>> this.rules;\n if (rules[rule.name] !== undefined && rules[rule.name] !== rule) {\n throw new Error(`Rule ${rule.name} already exists in the builder`);\n }\n // @ts-expect-error TS2536\n this.rules[rule.name] = rule;\n // @ts-expect-error TS2536\n return <Builder<Names | U, RuleDefs | Record<U, RuleDef<U, RET, ARGS>>>> <unknown> this;\n }\n\n public addRule<U extends string, RET, ARGS extends unknown[]>(\n rule: CheckOverlap<U, Names, RuleDef<U, RET, ARGS>>,\n // @ts-expect-error TS2536\n ): Builder<Names | U, {[K in Names | U]: K extends U ? RuleDef<K, RET, ARGS> : RuleDefs[K] }> {\n return this.addRuleRedundant(rule);\n }\n\n public addMany<U extends RuleDef[]>(\n ...rules: CheckOverlap<RuleNamesFromList<U>, Names, U>\n // @ts-expect-error TS2536\n ): Builder<Names | RuleNamesFromList<U>, RuleDefs & RuleListToObject<U>> {\n this.rules = { ...this.rules, ...listToRuleDefMap(rules) };\n // @ts-expect-error TS2536\n return <Builder<Names | RuleNamesFromList<U>, RuleDefs & RuleListToObject<U>>> <unknown> this;\n }\n\n public deleteRule<U extends Names>(ruleName: U):\n // @ts-expect-error TS2536\n Builder<Exclude<Names, U>, Omit<RuleDefs, U>> {\n delete this.rules[ruleName];\n // @ts-expect-error TS2536\n return <Builder<Exclude<Names, U>, Omit<RuleDefs, U>>> <unknown> this;\n }\n\n public merge<OtherNames extends string, OtherRules extends RuleDefMap<OtherNames>, OW extends readonly RuleDef[]>(\n builder: Builder<OtherNames, OtherRules>,\n overridingRules: OW,\n ):\n Builder<\n Names | OtherNames | RuleNamesFromList<OW>,\n // @ts-expect-error TS2344\n {[K in Names | OtherNames | RuleNamesFromList<OW>]: K extends Names | OtherNames ? (\n K extends Names ? RuleDefs[K] : (K extends OtherNames ? OtherRules[K] : never)\n ) : (K extends keyof RuleListToObject<OW> ? RuleListToObject<OW>[K] : never) }\n > {\n // Assume the other grammar is bigger than yours. So start from that one and add this one\n const otherRules: Record<string, RuleDef> = { ...builder.rules };\n const myRules: Record<string, RuleDef> = this.rules;\n\n for (const rule of Object.values(myRules)) {\n if (otherRules[rule.name] === undefined) {\n otherRules[rule.name] = rule;\n } else {\n const existingRule = otherRules[rule.name];\n // If same rule, no issue, move on. Else\n if (existingRule !== rule) {\n const override = overridingRules.find(x => x.name === rule.name);\n // If override specified, take override, else, inform user that there is a conflict\n if (override) {\n otherRules[rule.name] = override;\n } else {\n throw new Error(`Rule with name \"${rule.name}\" already exists in the builder, specify an override to resolve conflict`);\n }\n }\n }\n }\n\n // @ts-expect-error TS2322\n this.rules = otherRules;\n // @ts-expect-error TS2322\n return this;\n }\n\n public consumeToParser({ tokenVocabulary, parserConfig = {}, lexerConfig = {}}: {\n tokenVocabulary: TokenType[];\n parserConfig?: IParserConfig;\n lexerConfig?: ILexerConfig;\n }, context: Partial<ImplArgs['context']> = {}): ParserFromRules<Names, RuleDefs> {\n const lexer: Lexer = new Lexer(tokenVocabulary, {\n positionTracking: 'onlyStart',\n recoveryEnabled: false,\n // SafeMode: true,\n // SkipValidations: true,\n ensureOptimizations: true,\n ...lexerConfig,\n });\n const parser = this.consume({ tokenVocabulary, config: parserConfig }, context);\n const selfSufficientParser: Partial<ParserFromRules<Names, RuleDefs>> = {};\n // eslint-disable-next-line ts/no-unnecessary-type-assertion\n for (const rule of <RuleDef<Names>[]> Object.values(this.rules)) {\n // @ts-expect-error TS7053\n selfSufficientParser[rule.name] = (input: string, ...args: unknown[]) => {\n // Transform input in accordance to 19.2\n input = input.replaceAll(\n /\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{8})/gu,\n (_, unicode4: string, unicode8: string) => {\n if (unicode4) {\n const charCode = Number.parseInt(unicode4, 16);\n return String.fromCodePoint(charCode);\n }\n const charCode = Number.parseInt(unicode8, 16);\n if (charCode < 0xFFFF) {\n return String.fromCodePoint(charCode);\n }\n const substractedCharCode = charCode - 0x10000;\n return String.fromCodePoint(0xD800 + (substractedCharCode >> 10), 0xDC00 + (substractedCharCode & 0x3FF));\n },\n );\n // Test for invalid unicode surrogate pairs\n if (/[\\uD800-\\uDBFF]([^\\uDC00-\\uDFFF]|$)/u.test(input)) {\n throw new Error(`Invalid unicode codepoint of surrogate pair without corresponding codepoint`);\n }\n\n const lexResult = lexer.tokenize(input);\n // Console.log(lexResult.tokens);\n\n parser.reset();\n parser.input = lexResult.tokens;\n const result = parser[rule.name](...args);\n if (parser.errors.length > 0) {\n // Console.log(lexResult.tokens);\n throw new Error(`Parse error on line ${parser.errors.map(x => x.token.startLine).join(', ')}\n${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\\n')}`);\n }\n return result;\n };\n }\n return <ParserFromRules<Names, RuleDefs>> selfSufficientParser;\n }\n\n public consume({ tokenVocabulary, config = {}}: {\n tokenVocabulary: TokenVocabulary;\n config?: IParserConfig;\n }, context: Partial<ImplArgs['context']> = {}): EmbeddedActionsParser & ParseMethodsFromRules<Names, RuleDefs> {\n const rules = this.rules;\n class MyParser extends EmbeddedActionsParser {\n private readonly initialParseContext: ImplArgs['context'];\n private readonly runningContext: ImplArgs['context'];\n\n public constructor() {\n super(tokenVocabulary, {\n // RecoveryEnabled: true,\n maxLookahead: 2,\n // SkipValidations: true,\n ...config,\n });\n\n const selfRef = this.getSelfRef();\n // Remember to change the reset function accordingly!\n this.initialParseContext = {\n dataFactory: new DataFactory({ blankNodePrefix: 'g_' }),\n baseIRI: undefined,\n flushedBlankNodeLabels: new Set(),\n usedBlankNodeLabels: new Set(),\n parseMode: new Set(),\n skipValidation: false,\n ...context,\n prefixes: context.prefixes ? { ...context.prefixes } : {},\n };\n this.runningContext = {\n ...this.initialParseContext,\n prefixes: { ...this.initialParseContext.prefixes },\n parseMode: new Set(this.initialParseContext.parseMode),\n };\n\n const implArgs: ImplArgs = {\n ...selfRef,\n cache: new WeakMap(),\n context: this.runningContext,\n };\n\n for (const rule of Object.values(<Record<string, RuleDef>>rules)) {\n // @ts-expect-error TS7053\n this[rule.name] = this.RULE(rule.name, rule.impl(implArgs));\n }\n this.performSelfAnalysis();\n }\n\n public override reset(): void {\n super.reset();\n // We need to keep the original object reference.\n Object.assign(this.runningContext, {\n ...this.initialParseContext,\n });\n this.runningContext.prefixes = { ...this.initialParseContext.prefixes };\n this.runningContext.parseMode = new Set(this.initialParseContext.parseMode);\n this.runningContext.usedBlankNodeLabels.clear();\n this.runningContext.flushedBlankNodeLabels.clear();\n }\n\n private getSelfRef(): CstDef {\n return {\n CONSUME: (tokenType, option) => this.CONSUME(tokenType, option),\n CONSUME1: (tokenType, option) => this.CONSUME1(tokenType, option),\n CONSUME2: (tokenType, option) => this.CONSUME2(tokenType, option),\n CONSUME3: (tokenType, option) => this.CONSUME3(tokenType, option),\n CONSUME4: (tokenType, option) => this.CONSUME4(tokenType, option),\n CONSUME5: (tokenType, option) => this.CONSUME5(tokenType, option),\n CONSUME6: (tokenType, option) => this.CONSUME6(tokenType, option),\n CONSUME7: (tokenType, option) => this.CONSUME7(tokenType, option),\n CONSUME8: (tokenType, option) => this.CONSUME8(tokenType, option),\n CONSUME9: (tokenType, option) => this.CONSUME9(tokenType, option),\n OPTION: actionORMethodDef => this.OPTION(actionORMethodDef),\n OPTION1: actionORMethodDef => this.OPTION1(actionORMethodDef),\n OPTION2: actionORMethodDef => this.OPTION2(actionORMethodDef),\n OPTION3: actionORMethodDef => this.OPTION3(actionORMethodDef),\n OPTION4: actionORMethodDef => this.OPTION4(actionORMethodDef),\n OPTION5: actionORMethodDef => this.OPTION5(actionORMethodDef),\n OPTION6: actionORMethodDef => this.OPTION6(actionORMethodDef),\n OPTION7: actionORMethodDef => this.OPTION7(actionORMethodDef),\n OPTION8: actionORMethodDef => this.OPTION8(actionORMethodDef),\n OPTION9: actionORMethodDef => this.OPTION9(actionORMethodDef),\n OR: altsOrOpts => this.OR(altsOrOpts),\n OR1: altsOrOpts => this.OR1(altsOrOpts),\n OR2: altsOrOpts => this.OR2(altsOrOpts),\n OR3: altsOrOpts => this.OR3(altsOrOpts),\n OR4: altsOrOpts => this.OR4(altsOrOpts),\n OR5: altsOrOpts => this.OR5(altsOrOpts),\n OR6: altsOrOpts => this.OR6(altsOrOpts),\n OR7: altsOrOpts => this.OR7(altsOrOpts),\n OR8: altsOrOpts => this.OR8(altsOrOpts),\n OR9: altsOrOpts => this.OR9(altsOrOpts),\n MANY: actionORMethodDef => this.MANY(actionORMethodDef),\n MANY1: actionORMethodDef => this.MANY1(actionORMethodDef),\n MANY2: actionORMethodDef => this.MANY2(actionORMethodDef),\n MANY3: actionORMethodDef => this.MANY3(actionORMethodDef),\n MANY4: actionORMethodDef => this.MANY4(actionORMethodDef),\n MANY5: actionORMethodDef => this.MANY5(actionORMethodDef),\n MANY6: actionORMethodDef => this.MANY6(actionORMethodDef),\n MANY7: actionORMethodDef => this.MANY7(actionORMethodDef),\n MANY8: actionORMethodDef => this.MANY8(actionORMethodDef),\n MANY9: actionORMethodDef => this.MANY9(actionORMethodDef),\n MANY_SEP: options => this.MANY_SEP(options),\n MANY_SEP1: options => this.MANY_SEP1(options),\n MANY_SEP2: options => this.MANY_SEP2(options),\n MANY_SEP3: options => this.MANY_SEP3(options),\n MANY_SEP4: options => this.MANY_SEP4(options),\n MANY_SEP5: options => this.MANY_SEP5(options),\n MANY_SEP6: options => this.MANY_SEP6(options),\n MANY_SEP7: options => this.MANY_SEP7(options),\n MANY_SEP8: options => this.MANY_SEP8(options),\n MANY_SEP9: options => this.MANY_SEP9(options),\n AT_LEAST_ONE: actionORMethodDef => this.AT_LEAST_ONE(actionORMethodDef),\n AT_LEAST_ONE1: actionORMethodDef => this.AT_LEAST_ONE1(actionORMethodDef),\n AT_LEAST_ONE2: actionORMethodDef => this.AT_LEAST_ONE2(actionORMethodDef),\n AT_LEAST_ONE3: actionORMethodDef => this.AT_LEAST_ONE3(actionORMethodDef),\n AT_LEAST_ONE4: actionORMethodDef => this.AT_LEAST_ONE4(actionORMethodDef),\n AT_LEAST_ONE5: actionORMethodDef => this.AT_LEAST_ONE5(actionORMethodDef),\n AT_LEAST_ONE6: actionORMethodDef => this.AT_LEAST_ONE6(actionORMethodDef),\n AT_LEAST_ONE7: actionORMethodDef => this.AT_LEAST_ONE7(actionORMethodDef),\n AT_LEAST_ONE8: actionORMethodDef => this.AT_LEAST_ONE8(actionORMethodDef),\n AT_LEAST_ONE9: actionORMethodDef => this.AT_LEAST_ONE9(actionORMethodDef),\n AT_LEAST_ONE_SEP: options => this.AT_LEAST_ONE_SEP(options),\n AT_LEAST_ONE_SEP1: options => this.AT_LEAST_ONE_SEP1(options),\n AT_LEAST_ONE_SEP2: options => this.AT_LEAST_ONE_SEP2(options),\n AT_LEAST_ONE_SEP3: options => this.AT_LEAST_ONE_SEP3(options),\n AT_LEAST_ONE_SEP4: options => this.AT_LEAST_ONE_SEP4(options),\n AT_LEAST_ONE_SEP5: options => this.AT_LEAST_ONE_SEP5(options),\n AT_LEAST_ONE_SEP6: options => this.AT_LEAST_ONE_SEP6(options),\n AT_LEAST_ONE_SEP7: options => this.AT_LEAST_ONE_SEP7(options),\n AT_LEAST_ONE_SEP8: options => this.AT_LEAST_ONE_SEP8(options),\n AT_LEAST_ONE_SEP9: options => this.AT_LEAST_ONE_SEP9(options),\n ACTION: func => this.ACTION(func),\n BACKTRACK: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.BACKTRACK(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE1: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE1(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE2: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE2(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE3: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE3(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE4: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE4(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE5: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE5(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE6: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE6(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE7: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE7(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE8: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE8(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE9: (cstDef, ...args) => {\n try {\n // @ts-expect-error TS7053\n // eslint-disable-next-line ts/no-unsafe-argument\n return this.SUBRULE9(this[cstDef.name], { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n };\n }\n }\n return <EmbeddedActionsParser & ParseMethodsFromRules<Names, RuleDefs>><unknown> new MyParser();\n }\n}\n"]}
1
+ {"version":3,"file":"parserBuilder.js","sourceRoot":"","sources":["parserBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ILexerConfig, IParserConfig } from '@chevrotain/types';\nimport type {IToken, TokenType, TokenVocabulary} from 'chevrotain';\nimport { EmbeddedActionsParser, Lexer } from 'chevrotain';\nimport { DataFactory } from 'rdf-data-factory';\nimport type {\n CheckOverlap,\n RuleDefMap,\n ParserFromRules,\n RuleListToObject,\n RuleNamesFromList,\n ParseMethodsFromRules,\n} from './builderTypes';\nimport type { CstDef, ImplArgs, RuleDef } from './ruleDefTypes';\n\nfunction listToRuleDefMap<T extends readonly RuleDef[]>(rules: T): RuleListToObject<T> {\n const newRules: Record<string, RuleDef> = {};\n for (const rule of rules) {\n newRules[rule.name] = rule;\n }\n return <RuleListToObject<T>>newRules;\n}\n\nexport class Builder<Names extends string, RuleDefs extends RuleDefMap<Names>> {\n /**\n * Create a builder with from some initial grammar rules or an existing builder.\n * If a builder is provided, a new copy will be created.\n */\n public static createBuilder<\n Rules extends readonly RuleDef[] = RuleDef[],\n Names extends string = RuleNamesFromList<Rules>,\n RuleDefs extends RuleDefMap<Names> = RuleListToObject<Rules>,\n>(start: Rules | Builder<Names, RuleDefs>): Builder<Names, RuleDefs> {\n if (start instanceof Builder) {\n return new Builder({ ...start.rules });\n }\n return <Builder<Names, RuleDefs>> <unknown> new Builder(listToRuleDefMap(start));\n }\n\n private rules: RuleDefs;\n\n private constructor(startRules: RuleDefs) {\n this.rules = startRules;\n }\n\n /**\n * Change the implementation of an existing grammar rule.\n */\n public patchRule<U extends Names, RET, ARGS extends unknown[]>(patch: RuleDef<U, RET, ARGS>):\n Builder<Names, {[Key in Names]: Key extends U ? RuleDef<Key, RET, ARGS> : (RuleDefs[Key] extends RuleDef<Key> ? RuleDefs[Key] : never) }> {\n const self = <Builder<Names, {[Key in Names]: Key extends U ? RuleDef<Key, RET, ARGS> : (RuleDefs[Key] extends RuleDef<Key> ? RuleDefs[Key] : never) }>>\n <unknown> this;\n self.rules[patch.name] = <any> patch;\n return self;\n }\n\n /**\n * Add a rule to the grammar. If the rule already exists, but the implementation differs, an error will be thrown.\n */\n public addRuleRedundant<U extends string, RET, ARGS extends undefined[]>(rule: RuleDef<U, RET, ARGS>):\n Builder<Names | U, {[K in Names | U]: K extends U ? RuleDef<K, RET, ARGS> : ( K extends Names ? (RuleDefs[K] extends RuleDef<K> ? RuleDefs[K] : never ) : never) }> {\n const self = <Builder<Names | U, {[K in Names | U]: K extends U ? RuleDef<K, RET, ARGS> : ( K extends Names ? (RuleDefs[K] extends RuleDef<K> ? RuleDefs[K] : never ) : never) }>>\n <unknown> this;\n const rules = <Record<string, RuleDef>> self.rules;\n if (rules[rule.name] !== undefined && rules[rule.name] !== rule) {\n throw new Error(`Rule ${rule.name} already exists in the builder`);\n }\n rules[rule.name] = rule;\n return self;\n }\n\n /**\n * Add a rule to the grammar. Will raise a typescript error if the rule already exists in the grammar.\n */\n public addRule<U extends string, RET, ARGS extends unknown[]>(\n rule: CheckOverlap<U, Names, RuleDef<U, RET, ARGS>>,\n ): Builder<Names | U, {[K in Names | U]: K extends U ? RuleDef<K, RET, ARGS> : ( K extends Names ? (RuleDefs[K] extends RuleDef<K> ? RuleDefs[K] : never ) : never) }> {\n return this.addRuleRedundant(rule);\n }\n\n public addMany<U extends RuleDef[]>(\n ...rules: CheckOverlap<RuleNamesFromList<U>, Names, U>\n ): Builder<\n Names | RuleNamesFromList<U>,\n {[K in Names | RuleNamesFromList<U>]:\n K extends keyof RuleListToObject<typeof rules> ? (\n RuleListToObject<typeof rules>[K] extends RuleDef<K> ? RuleListToObject<typeof rules>[K] : never\n ) : (\n K extends Names ? (RuleDefs[K] extends RuleDef<K> ? RuleDefs[K] : never) : never\n )\n }> {\n this.rules = { ...this.rules, ...listToRuleDefMap(rules) };\n return <any> <unknown> this;\n }\n\n public deleteRule<U extends Names>(ruleName: U):\n Builder<Exclude<Names, U>, { [K in Exclude<Names, U>]: RuleDefs[K] extends RuleDef<K> ? RuleDefs[K] : never }> {\n delete this.rules[ruleName];\n return <Builder<Exclude<Names, U>, { [K in Exclude<Names, U>]: RuleDefs[K] extends RuleDef<K> ? RuleDefs[K] : never }>>\n <unknown> this;\n }\n\n public merge<OtherNames extends string, OtherRules extends RuleDefMap<OtherNames>, OW extends readonly RuleDef[]>(\n builder: Builder<OtherNames, OtherRules>,\n overridingRules: OW,\n ):\n Builder<\n Names | OtherNames | RuleNamesFromList<OW>,\n {[K in Names | OtherNames | RuleNamesFromList<OW>]:\n K extends keyof RuleListToObject<OW> ? (\n RuleListToObject<OW>[K] extends RuleDef<K> ? RuleListToObject<OW>[K] : never\n )\n : (\n K extends Names ? (RuleDefs[K] extends RuleDef<K> ? RuleDefs[K] : never)\n : K extends OtherNames ? (OtherRules[K] extends RuleDef<K> ? OtherRules[K] : never) : never\n )}> {\n // Assume the other grammar is bigger than yours. So start from that one and add this one\n const otherRules: Record<string, RuleDef> = { ...builder.rules };\n const myRules: Record<string, RuleDef> = this.rules;\n\n for (const rule of Object.values(myRules)) {\n if (otherRules[rule.name] === undefined) {\n otherRules[rule.name] = rule;\n } else {\n const existingRule = otherRules[rule.name];\n // If same rule, no issue, move on. Else\n if (existingRule !== rule) {\n const override = overridingRules.find(x => x.name === rule.name);\n // If override specified, take override, else, inform user that there is a conflict\n if (override) {\n otherRules[rule.name] = override;\n } else {\n throw new Error(`Rule with name \"${rule.name}\" already exists in the builder, specify an override to resolve conflict`);\n }\n }\n }\n }\n\n this.rules = <any> <unknown> otherRules;\n return <any> <unknown> this;\n }\n\n public consumeToParser({ tokenVocabulary, parserConfig = {}, lexerConfig = {}}: {\n tokenVocabulary: TokenType[];\n parserConfig?: IParserConfig;\n lexerConfig?: ILexerConfig;\n }, context: Partial<ImplArgs['context']> = {}): ParserFromRules<Names, RuleDefs> {\n const lexer: Lexer = new Lexer(tokenVocabulary, {\n positionTracking: 'onlyStart',\n recoveryEnabled: false,\n // SafeMode: true,\n // SkipValidations: true,\n ensureOptimizations: true,\n ...lexerConfig,\n });\n const parser = this.consume({ tokenVocabulary, config: parserConfig }, context);\n const selfSufficientParser: Partial<ParserFromRules<Names, RuleDefs>> = {};\n // eslint-disable-next-line ts/no-unnecessary-type-assertion\n for (const rule of <RuleDef<Names>[]> Object.values(this.rules)) {\n selfSufficientParser[rule.name] = <any> ((input: string, ...args: unknown[]) => {\n // Transform input in accordance to 19.2\n input = input.replaceAll(\n /\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{8})/gu,\n (_, unicode4: string, unicode8: string) => {\n if (unicode4) {\n const charCode = Number.parseInt(unicode4, 16);\n return String.fromCodePoint(charCode);\n }\n const charCode = Number.parseInt(unicode8, 16);\n if (charCode < 0xFFFF) {\n return String.fromCodePoint(charCode);\n }\n const substractedCharCode = charCode - 0x10000;\n return String.fromCodePoint(0xD800 + (substractedCharCode >> 10), 0xDC00 + (substractedCharCode & 0x3FF));\n },\n );\n // Test for invalid unicode surrogate pairs\n if (/[\\uD800-\\uDBFF]([^\\uDC00-\\uDFFF]|$)/u.test(input)) {\n throw new Error(`Invalid unicode codepoint of surrogate pair without corresponding codepoint`);\n }\n\n const lexResult = lexer.tokenize(input);\n // Console.log(lexResult.tokens);\n\n parser.reset();\n parser.input = lexResult.tokens;\n const result = parser[rule.name](...args);\n if (parser.errors.length > 0) {\n // Console.log(lexResult.tokens);\n throw new Error(`Parse error on line ${parser.errors.map(x => x.token.startLine).join(', ')}\n${parser.errors.map(x => `${x.token.startLine}: ${x.message}`).join('\\n')}`);\n }\n return result;\n });\n }\n return <ParserFromRules<Names, RuleDefs>> selfSufficientParser;\n }\n\n public consume({ tokenVocabulary, config = {}}: {\n tokenVocabulary: TokenVocabulary;\n config?: IParserConfig;\n }, context: Partial<ImplArgs['context']> = {}): EmbeddedActionsParser & ParseMethodsFromRules<Names, RuleDefs> {\n const rules = this.rules;\n class MyParser extends EmbeddedActionsParser {\n private readonly initialParseContext: ImplArgs['context'];\n private readonly runningContext: ImplArgs['context'];\n\n public constructor() {\n super(tokenVocabulary, {\n // RecoveryEnabled: true,\n maxLookahead: 2,\n // SkipValidations: true,\n ...config,\n });\n\n const selfRef = this.getSelfRef();\n // Remember to change the reset function accordingly!\n this.initialParseContext = {\n dataFactory: new DataFactory({ blankNodePrefix: 'g_' }),\n baseIRI: undefined,\n flushedBlankNodeLabels: new Set(),\n usedBlankNodeLabels: new Set(),\n parseMode: new Set(),\n skipValidation: false,\n ...context,\n prefixes: context.prefixes ? { ...context.prefixes } : {},\n };\n this.runningContext = {\n ...this.initialParseContext,\n prefixes: { ...this.initialParseContext.prefixes },\n parseMode: new Set(this.initialParseContext.parseMode),\n };\n\n const implArgs: ImplArgs = {\n ...selfRef,\n cache: new WeakMap(),\n context: this.runningContext,\n };\n\n for (const rule of Object.values(<Record<string, RuleDef>>rules)) {\n this[<keyof (typeof this)> rule.name] = <any> this.RULE(rule.name, rule.impl(implArgs));\n }\n this.performSelfAnalysis();\n }\n\n public override reset(): void {\n super.reset();\n // We need to keep the original object reference.\n Object.assign(this.runningContext, {\n ...this.initialParseContext,\n });\n this.runningContext.prefixes = { ...this.initialParseContext.prefixes };\n this.runningContext.parseMode = new Set(this.initialParseContext.parseMode);\n this.runningContext.usedBlankNodeLabels.clear();\n this.runningContext.flushedBlankNodeLabels.clear();\n }\n\n private getSelfRef(): CstDef {\n return {\n CONSUME: (tokenType, option) => this.CONSUME(tokenType, option),\n CONSUME1: (tokenType, option) => this.CONSUME1(tokenType, option),\n CONSUME2: (tokenType, option) => this.CONSUME2(tokenType, option),\n CONSUME3: (tokenType, option) => this.CONSUME3(tokenType, option),\n CONSUME4: (tokenType, option) => this.CONSUME4(tokenType, option),\n CONSUME5: (tokenType, option) => this.CONSUME5(tokenType, option),\n CONSUME6: (tokenType, option) => this.CONSUME6(tokenType, option),\n CONSUME7: (tokenType, option) => this.CONSUME7(tokenType, option),\n CONSUME8: (tokenType, option) => this.CONSUME8(tokenType, option),\n CONSUME9: (tokenType, option) => this.CONSUME9(tokenType, option),\n OPTION: actionORMethodDef => this.OPTION(actionORMethodDef),\n OPTION1: actionORMethodDef => this.OPTION1(actionORMethodDef),\n OPTION2: actionORMethodDef => this.OPTION2(actionORMethodDef),\n OPTION3: actionORMethodDef => this.OPTION3(actionORMethodDef),\n OPTION4: actionORMethodDef => this.OPTION4(actionORMethodDef),\n OPTION5: actionORMethodDef => this.OPTION5(actionORMethodDef),\n OPTION6: actionORMethodDef => this.OPTION6(actionORMethodDef),\n OPTION7: actionORMethodDef => this.OPTION7(actionORMethodDef),\n OPTION8: actionORMethodDef => this.OPTION8(actionORMethodDef),\n OPTION9: actionORMethodDef => this.OPTION9(actionORMethodDef),\n OR: altsOrOpts => this.OR(altsOrOpts),\n OR1: altsOrOpts => this.OR1(altsOrOpts),\n OR2: altsOrOpts => this.OR2(altsOrOpts),\n OR3: altsOrOpts => this.OR3(altsOrOpts),\n OR4: altsOrOpts => this.OR4(altsOrOpts),\n OR5: altsOrOpts => this.OR5(altsOrOpts),\n OR6: altsOrOpts => this.OR6(altsOrOpts),\n OR7: altsOrOpts => this.OR7(altsOrOpts),\n OR8: altsOrOpts => this.OR8(altsOrOpts),\n OR9: altsOrOpts => this.OR9(altsOrOpts),\n MANY: actionORMethodDef => this.MANY(actionORMethodDef),\n MANY1: actionORMethodDef => this.MANY1(actionORMethodDef),\n MANY2: actionORMethodDef => this.MANY2(actionORMethodDef),\n MANY3: actionORMethodDef => this.MANY3(actionORMethodDef),\n MANY4: actionORMethodDef => this.MANY4(actionORMethodDef),\n MANY5: actionORMethodDef => this.MANY5(actionORMethodDef),\n MANY6: actionORMethodDef => this.MANY6(actionORMethodDef),\n MANY7: actionORMethodDef => this.MANY7(actionORMethodDef),\n MANY8: actionORMethodDef => this.MANY8(actionORMethodDef),\n MANY9: actionORMethodDef => this.MANY9(actionORMethodDef),\n MANY_SEP: options => this.MANY_SEP(options),\n MANY_SEP1: options => this.MANY_SEP1(options),\n MANY_SEP2: options => this.MANY_SEP2(options),\n MANY_SEP3: options => this.MANY_SEP3(options),\n MANY_SEP4: options => this.MANY_SEP4(options),\n MANY_SEP5: options => this.MANY_SEP5(options),\n MANY_SEP6: options => this.MANY_SEP6(options),\n MANY_SEP7: options => this.MANY_SEP7(options),\n MANY_SEP8: options => this.MANY_SEP8(options),\n MANY_SEP9: options => this.MANY_SEP9(options),\n AT_LEAST_ONE: actionORMethodDef => this.AT_LEAST_ONE(actionORMethodDef),\n AT_LEAST_ONE1: actionORMethodDef => this.AT_LEAST_ONE1(actionORMethodDef),\n AT_LEAST_ONE2: actionORMethodDef => this.AT_LEAST_ONE2(actionORMethodDef),\n AT_LEAST_ONE3: actionORMethodDef => this.AT_LEAST_ONE3(actionORMethodDef),\n AT_LEAST_ONE4: actionORMethodDef => this.AT_LEAST_ONE4(actionORMethodDef),\n AT_LEAST_ONE5: actionORMethodDef => this.AT_LEAST_ONE5(actionORMethodDef),\n AT_LEAST_ONE6: actionORMethodDef => this.AT_LEAST_ONE6(actionORMethodDef),\n AT_LEAST_ONE7: actionORMethodDef => this.AT_LEAST_ONE7(actionORMethodDef),\n AT_LEAST_ONE8: actionORMethodDef => this.AT_LEAST_ONE8(actionORMethodDef),\n AT_LEAST_ONE9: actionORMethodDef => this.AT_LEAST_ONE9(actionORMethodDef),\n AT_LEAST_ONE_SEP: options => this.AT_LEAST_ONE_SEP(options),\n AT_LEAST_ONE_SEP1: options => this.AT_LEAST_ONE_SEP1(options),\n AT_LEAST_ONE_SEP2: options => this.AT_LEAST_ONE_SEP2(options),\n AT_LEAST_ONE_SEP3: options => this.AT_LEAST_ONE_SEP3(options),\n AT_LEAST_ONE_SEP4: options => this.AT_LEAST_ONE_SEP4(options),\n AT_LEAST_ONE_SEP5: options => this.AT_LEAST_ONE_SEP5(options),\n AT_LEAST_ONE_SEP6: options => this.AT_LEAST_ONE_SEP6(options),\n AT_LEAST_ONE_SEP7: options => this.AT_LEAST_ONE_SEP7(options),\n AT_LEAST_ONE_SEP8: options => this.AT_LEAST_ONE_SEP8(options),\n AT_LEAST_ONE_SEP9: options => this.AT_LEAST_ONE_SEP9(options),\n ACTION: func => this.ACTION(func),\n BACKTRACK: (cstDef, ...args) => {\n try {\n return this.BACKTRACK(<any> this[<keyof (typeof this)> cstDef.name], <any> { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE: (cstDef, ...args) => {\n try {\n return this.SUBRULE(<any> this[<keyof (typeof this)> cstDef.name], <any> { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE1: (cstDef, ...args) => {\n try {\n return this.SUBRULE1(<any> this[<keyof (typeof this)> cstDef.name], <any> { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE2: (cstDef, ...args) => {\n try {\n return this.SUBRULE2(<any> this[<keyof (typeof this)> cstDef.name], <any> { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE3: (cstDef, ...args) => {\n try {\n return this.SUBRULE3(<any> this[<keyof (typeof this)> cstDef.name], <any> { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE4: (cstDef, ...args) => {\n try {\n return this.SUBRULE4(<any> this[<keyof (typeof this)> cstDef.name], <any> { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE5: (cstDef, ...args) => {\n try {\n return this.SUBRULE5(<any> this[<keyof (typeof this)> cstDef.name], <any> { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE6: (cstDef, ...args) => {\n try {\n return this.SUBRULE6(<any> this[<keyof (typeof this)> cstDef.name], <any> { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE7: (cstDef, ...args) => {\n try {\n return this.SUBRULE7(<any> this[<keyof (typeof this)> cstDef.name], <any> { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE8: (cstDef, ...args) => {\n try {\n return this.SUBRULE8(<any> this[<keyof (typeof this)> cstDef.name], <any> { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n SUBRULE9: (cstDef, ...args) => {\n try {\n return this.SUBRULE9(<any> this[<keyof (typeof this)> cstDef.name], <any> { ARGS: args });\n } catch (error: unknown) {\n throw error;\n }\n },\n };\n }\n }\n return <EmbeddedActionsParser & ParseMethodsFromRules<Names, RuleDefs>><unknown> new MyParser();\n }\n}\n"]}
package/lib/index.cjs CHANGED
@@ -9569,6 +9569,10 @@ function listToRuleDefMap(rules) {
9569
9569
  return newRules;
9570
9570
  }
9571
9571
  var Builder = class _Builder {
9572
+ /**
9573
+ * Create a builder with from some initial grammar rules or an existing builder.
9574
+ * If a builder is provided, a new copy will be created.
9575
+ */
9572
9576
  static createBuilder(start) {
9573
9577
  if (start instanceof _Builder) {
9574
9578
  return new _Builder({ ...start.rules });
@@ -9578,18 +9582,29 @@ var Builder = class _Builder {
9578
9582
  constructor(startRules) {
9579
9583
  this.rules = startRules;
9580
9584
  }
9585
+ /**
9586
+ * Change the implementation of an existing grammar rule.
9587
+ */
9581
9588
  patchRule(patch) {
9582
- this.rules[patch.name] = patch;
9583
- return this;
9589
+ const self2 = this;
9590
+ self2.rules[patch.name] = patch;
9591
+ return self2;
9584
9592
  }
9593
+ /**
9594
+ * Add a rule to the grammar. If the rule already exists, but the implementation differs, an error will be thrown.
9595
+ */
9585
9596
  addRuleRedundant(rule) {
9586
- const rules = this.rules;
9597
+ const self2 = this;
9598
+ const rules = self2.rules;
9587
9599
  if (rules[rule.name] !== void 0 && rules[rule.name] !== rule) {
9588
9600
  throw new Error(`Rule ${rule.name} already exists in the builder`);
9589
9601
  }
9590
- this.rules[rule.name] = rule;
9591
- return this;
9602
+ rules[rule.name] = rule;
9603
+ return self2;
9592
9604
  }
9605
+ /**
9606
+ * Add a rule to the grammar. Will raise a typescript error if the rule already exists in the grammar.
9607
+ */
9593
9608
  addRule(rule) {
9594
9609
  return this.addRuleRedundant(rule);
9595
9610
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@traqula/core",
3
- "version": "0.0.1-alpha.137+3a4c48f",
3
+ "version": "0.0.1-alpha.141+caaf4c7",
4
4
  "description": "Core components of TRAQULA",
5
5
  "lsd:module": true,
6
6
  "license": "MIT",
@@ -41,5 +41,9 @@
41
41
  "chevrotain": "^11.0.3",
42
42
  "rdf-data-factory": "^2.0.1"
43
43
  },
44
- "gitHead": "3a4c48fd219306b10726fb018b5a1f0ac2abed81"
44
+ "devDependencies": {
45
+ "@chevrotain/types": "^11.0.3",
46
+ "@rdfjs/types": "^2.0.0"
47
+ },
48
+ "gitHead": "caaf4c71153d27f8fa113b51efb1dae91e182960"
45
49
  }